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 1mzNrq-0005ce-KQ for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Dec 2021 18:58:39 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mzNrp-0003oW-Fz for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Dec 2021 18:58:37 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mzNrn-0003oM-Rg for pgsql-hackers@lists.postgresql.org; Mon, 20 Dec 2021 18:58:37 +0000 Received: from new1-smtp.messagingengine.com ([66.111.4.221]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mzNre-0006Os-B6 for pgsql-hackers@lists.postgresql.org; Mon, 20 Dec 2021 18:58:35 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailnew.nyi.internal (Postfix) with ESMTP id 56E6E58042F; Mon, 20 Dec 2021 13:58:23 -0500 (EST) Received: from imap49 ([10.202.2.99]) by compute5.internal (MEProxy); Mon, 20 Dec 2021 13:58:23 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eulerto.com; h= mime-version:message-id:in-reply-to:references:date:from:to:cc :subject:content-type; s=fm3; bh=4gcyIrLgrMNI7yUWBxcTtX+hfswo4U0 0t4SxIlBJi00=; b=mU2oj5lb/4uga3lEKvSxeygGKhaKuDkt4A+nHJ3+14VAzUY S1Z0JyBrMT2ahNrlz9ZauURu4B+bZYt2NZiUoj3MXHZh4EkgA4ZAvHtHqxdbQ7FU MjrOPZJyBbHVvPo+DHd7m2xrLzMtRgjoq06iYIjyayZDxm8tTMrB1RhP3XRdHMzE 9XlXSID4LpL4Ay/xNO1LpDSpDIK6sQmztOnHWbPzmytt7ojO18vSD2J1tgH/wi/M RGmwCo1ZmlOhxupibqm9Frclt30UdC7q9adQLKNI1VpgKiPyoNo5uMqAq3CNUkwK If2W4vJ8Tws3LCSKW13HAbaQEkG+vPjGVltB67g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; bh=4gcyIr LgrMNI7yUWBxcTtX+hfswo4U00t4SxIlBJi00=; b=YDtom0W0Cd+pJlv350XxpV D+ESEbOYjAPkMPyyz/u0V3LKM9VOf3ok1gg2aeHc4snwiG6w6JxgTg4sjdUve3II ptDcPcFY8ejRn4JUhHDqNHkMxxHbCUMPHqOuzNuRJlyOUpIddvUGTk1G4ClagbQq wPEZZD0WlPWSatMWUNc9mNXwxcSz1shVQeQlYdqaEP9oISc3jie7xmdkIg3IJpqJ lrTnDF6Ss34ndTKUL2EYi+ZHWtpA167vXeM8oh/H9JFoRg1vxca2Sl+89RRcfcOz OgqUopZTQb0Aamcbf9ocXabGVmrPJkbcqBZUyJKsa0TGMKsB1q/PTyk/ftnjktoA == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvuddruddtvddguddulecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd enucfjughrpefofgggkfgjfhffhffvufgtsehmtderreerredtnecuhfhrohhmpedfgfhu lhgvrhcuvfgrvhgvihhrrgdfuceovghulhgvrhesvghulhgvrhhtohdrtghomheqnecugg ftrfgrthhtvghrnhepvdeljeekvdeguefghfejudekhfdtfeekveeuvdefgefggeffgedt tdfhtdeghedvnecuffhomhgrihhnpeifihhkihhpvgguihgrrdhorhhgpdgvnhhtvghrph hrihhsvggusgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgr ihhlfhhrohhmpegvuhhlvghrsegvuhhlvghrthhordgtohhm X-ME-Proxy: Received: by mailuser.nyi.internal (Postfix, from userid 501) id C0DEAF60075; Mon, 20 Dec 2021 13:58:22 -0500 (EST) X-Mailer: MessagingEngine.com Webmail Interface User-Agent: Cyrus-JMAP/3.5.0-alpha0-4524-g5e5d2efdba-fm-20211214.001-g5e5d2efd Mime-Version: 1.0 Message-Id: <6b6cf26d-bf74-4b39-bb07-c067e381d66d@www.fastmail.com> In-Reply-To: References: <49ba49f1-8bdb-40b7-ae9e-f17d88b3afcd@www.fastmail.com> Date: Mon, 20 Dec 2021 15:57:45 -0300 From: "Euler Taveira" To: "houzj.fnst@fujitsu.com" , "Amit Kapila" Cc: "Ajin Cherian" , "Greg Nancarrow" , "vignesh C" , "Peter Smith" , "tanghy.fnst@fujitsu.com" , "Dilip Kumar" , "Rahila Syed" , "Peter Eisentraut" , =?UTF-8?Q?=C3=96nder_Kalac=C4=B1?= , japin , "Michael Paquier" , "David Steele" , "Craig Ringer" , "Amit Langote" , "PostgreSQL Hackers" Subject: Re: row filtering for logical replication Content-Type: multipart/mixed; boundary=04cc277225e34ea480c6f61c2553d463 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --04cc277225e34ea480c6f61c2553d463 Content-Type: multipart/alternative; boundary=ee911a957c7f44728322e59dd1376e0d --ee911a957c7f44728322e59dd1376e0d Content-Type: text/plain On Mon, Dec 20, 2021, at 12:10 AM, houzj.fnst@fujitsu.com wrote: > Attach the V49 patch set, which addressed all the above comments on the 0002 > patch. I've been testing the latest versions of this patch set. I'm attaching a new patch set based on v49. The suggested fixes are in separate patches after the current one so it is easier to integrate them into the related patch. The majority of these changes explains some decision to improve readability IMO. row-filter x row filter. I'm not a native speaker but "row filter" is widely used in similar contexts so I suggest to use it. (I didn't adjust the commit messages) An ancient patch use the term coerce but it was changed to cast. Coercion implies an implicit conversion [1]. If you look at a few lines above you will see that this expression expects an implicit conversion. I modified the query to obtain the row filter expressions to (i) add the schema pg_catalog to some objects and (ii) use NOT EXISTS instead of subquery (it reads better IMO). A detail message requires you to capitalize the first word of sentences and includes a period at the end. It seems all server messages and documentation use the terminology "WHERE clause". Let's adopt it instead of "row filter". I reviewed 0003. It uses TupleTableSlot instead of HeapTuple. I probably missed the explanation but it requires more changes (logicalrep_write_tuple and 3 new entries into RelationSyncEntry). I replaced this patch with a slightly different one (0005 in this patch set) that uses HeapTuple instead. I didn't only simple tests and it requires tests. I noticed that this patch does not include a test to cover the case where TOASTed values are not included in the new tuple. We should probably add one. I agree with Amit that it is a good idea to merge 0001, 0002, and 0005. I would probably merge 0004 because it is just isolated changes. [1] https://en.wikipedia.org/wiki/Type_conversion -- Euler Taveira EDB https://www.enterprisedb.com/ --ee911a957c7f44728322e59dd1376e0d Content-Type: text/html Content-Transfer-Encoding: quoted-printable
On Mon, Dec 20,= 2021, at 12:10 AM, houzj= .fnst@fujitsu.com wrote:
Attach the V49 patch set, which addressed all the abov= e comments on the 0002
patch.
I= 've been testing the latest versions of this patch set. I'm attaching a = new
patch set based on v49. The suggested fixes are in sep= arate patches after the
current one so it is easier to int= egrate them into the related patch. The
majority of these = changes explains some decision to improve readability IMO.

row-filter x row filter. I'm not a native speaker but "r= ow filter" is widely
used in similar contexts so I suggest= to use it. (I didn't adjust the commit
messages)

An ancient patch use the term coerce but it was cha= nged to cast. Coercion
implies an implicit conversion [1].= If you look at a few lines above you will
see that this e= xpression expects an implicit conversion.

I= modified the query to obtain the row filter expressions to (i) add the = schema
pg_catalog to some objects and (ii) use NOT EXISTS = instead of subquery (it
reads better IMO).
<= br>
A detail message requires you to capitalize the first word= of sentences and
includes a period at the end.
<= div>
It seems all server messages and documentation use th= e terminology "WHERE
clause". Let's adopt it instead of "r= ow filter".

I reviewed 0003. It uses TupleT= ableSlot instead of HeapTuple. I probably missed
the expla= nation but it requires more changes (logicalrep_write_tuple and 3 new
entries into RelationSyncEntry). I replaced this patch with = a slightly
different one (0005 in this patch set) that use= s HeapTuple instead. I didn't
only simple tests and it req= uires tests. I noticed that this patch does not
include a = test to cover the case where TOASTed values are not included in the
<= /div>
new tuple. We should probably add one.

I agree with Amit that it is a good idea to merge 0001, 0002, and = 0005. I would
probably merge 0004 because it is just isola= ted changes.



--
Euler Ta= veira

--ee911a957c7f44728322e59dd1376e0d-- --04cc277225e34ea480c6f61c2553d463 Content-Disposition: attachment;filename="v50-0001-Row-filter-for-logical-replication.patch" Content-Type: text/x-patch; name="v50-0001-Row-filter-for-logical-replication.patch" Content-Transfer-Encoding: BASE64 RnJvbSA0ZDIyMTU4YTYzYTA1ZTk5MGIwNGFmMWQ5YzEyOTkyZTMxYWEwOGUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBTbWl0aCA8cGV0ZXIuYi5zbWl0aEBmdWpp dHN1LmNvbT4KRGF0ZTogRnJpLCAxNyBEZWMgMjAyMSAxODo1OTo0MiArMTEwMApTdWJqZWN0 OiBbUEFUQ0ggdjUwIDEvOF0gUm93LWZpbHRlciBmb3IgbG9naWNhbCByZXBsaWNhdGlvbi4K ClRoaXMgZmVhdHVyZSBhZGRzIHJvdyBmaWx0ZXJpbmcgZm9yIHB1YmxpY2F0aW9uIHRhYmxl cy4gV2hlbiBhIHB1YmxpY2F0aW9uCmlzIGRlZmluZWQgb3IgbW9kaWZpZWQsIHJvd3MgdGhh dCBkb24ndCBzYXRpc2Z5IGFuIG9wdGlvbmFsIFdIRVJFIGNsYXVzZQp3aWxsIGJlIGZpbHRl cmVkIG91dC4gVGhpcyBhbGxvd3MgYSBkYXRhYmFzZSBvciBzZXQgb2YgdGFibGVzIHRvIGJl CnBhcnRpYWxseSByZXBsaWNhdGVkLiBUaGUgcm93LWZpbHRlciBpcyBwZXIgdGFibGUuIEEg bmV3IHJvdy1maWx0ZXIgY2FuCmJlIGFkZGVkIHNpbXBseSBieSBzcGVjaWZ5aW5nIGEgV0hF UkUgY2xhdXNlIGFmdGVyIHRoZSB0YWJsZSBuYW1lLiBUaGUKV0hFUkUgY2xhdXNlIG11c3Qg YmUgZW5jbG9zZWQgYnkgcGFyZW50aGVzZXMuCgpUaGUgcm93LWZpbHRlciBXSEVSRSBjbGF1 c2UgZm9yIGEgdGFibGUgYWRkZWQgdG8gYSBwdWJsaWNhdGlvbiB0aGF0IHB1Ymxpc2hlcwpV UERBVEUgYW5kL29yIERFTEVURSBvcGVyYXRpb25zIG11c3QgY29udGFpbiBvbmx5IGNvbHVt bnMgdGhhdCBhcmUgY292ZXJlZCBieQpSRVBMSUNBIElERU5USVRZLiBUaGUgcm93LWZpbHRl ciBXSEVSRSBjbGF1c2UgZm9yIGEgdGFibGUgYWRkZWQgdG8gYSBwdWJsaWNhdGlvbgp0aGF0 IHB1Ymxpc2hlcyBJTlNFUlQgY2FuIHVzZSBhbnkgY29sdW1uLiBJZiB0aGUgcm93LWZpbHRl ciBldmFsdWF0ZXMgdG8gTlVMTCwKaXQgcmV0dXJucyBmYWxzZS4gVGhlIFdIRVJFIGNsYXVz ZSBhbGxvd3Mgc2ltcGxlIGV4cHJlc3Npb25zLiBTaW1wbGUgZXhwcmVzc2lvbnMKY2Fubm90 IGNvbnRhaW4gYW55IGFnZ3JlZ2F0ZSBvciB3aW5kb3cgZnVuY3Rpb25zLCBub24taW1tdXRh YmxlIGZ1bmN0aW9ucywKdXNlci1kZWZpbmVkIHR5cGVzLCBvcGVyYXRvcnMgb3IgZnVuY3Rp b25zLiAgVGhpcyByZXN0cmljdGlvbiBjb3VsZCBwb3NzaWJseSBiZQphZGRyZXNzZWQgaW4g dGhlIGZ1dHVyZS4KCklmIHlvdSBjaG9vc2UgdG8gZG8gdGhlIGluaXRpYWwgdGFibGUgc3lu Y2hyb25pemF0aW9uLCBvbmx5IGRhdGEgdGhhdCBzYXRpc2ZpZXMKdGhlIHJvdy1maWx0ZXJz IGlzIHB1bGxlZCBieSB0aGUgc3Vic2NyaWJlci4gSWYgdGhlIHN1YnNjcmlwdGlvbiBoYXMg c2V2ZXJhbApwdWJsaWNhdGlvbnMgaW4gd2hpY2ggYSB0YWJsZSBoYXMgYmVlbiBwdWJsaXNo ZWQgd2l0aCBkaWZmZXJlbnQgV0hFUkUgY2xhdXNlcywKcm93cyB3aGljaCBzYXRpc2Z5IEFO WSBvZiB0aGUgZXhwcmVzc2lvbnMgd2lsbCBiZSBjb3BpZWQuIElmIGEgc3Vic2NyaWJlciBp cyBhCnByZS0xNSB2ZXJzaW9uLCB0aGUgaW5pdGlhbCB0YWJsZSBzeW5jaHJvbml6YXRpb24g d29uJ3QgdXNlIHJvdy1maWx0ZXJzIGV2ZW4KaWYgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUg cHVibGlzaGVyLgoKSWYgeW91ciBwdWJsaWNhdGlvbiBjb250YWlucyBhIHBhcnRpdGlvbmVk IHRhYmxlLCB0aGUgcHVibGljYXRpb24gcGFyYW1ldGVyCnB1Ymxpc2hfdmlhX3BhcnRpdGlv bl9yb290IGRldGVybWluZXMgaWYgaXQgdXNlcyB0aGUgcGFydGl0aW9uIHJvdy1maWx0ZXIg KGlmCnRoZSBwYXJhbWV0ZXIgaXMgZmFsc2UsIHRoZSBkZWZhdWx0KSBvciB0aGUgcm9vdCBw YXJ0aXRpb25lZCB0YWJsZSByb3ctZmlsdGVyLgoKUHNxbCBjb21tYW5kcyBcZFJwKyBhbmQg XGQrIHdpbGwgZGlzcGxheSBhbnkgcm93LWZpbHRlcnMuCgpBdXRob3I6IEV1bGVyIFRhdmVp cmEsIFBldGVyIFNtaXRoCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3Jn L21lc3NhZ2UtaWQvZmxhdC9DQUhFM3dnZ2I3MTVYJTJCbUtfRGl0TFhGMjVCJTNEakU2eHlO Q0g0WU93TTg2MEpSN0hhckdRJTQwbWFpbC5nbWFpbC5jb20KCkNvbWJpbmluZyBtdWx0aXBs ZSByb3ctZmlsdGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoZSBzdWJz Y3JpcHRpb24gaXMgdHJlYXRlZCAiYXMgYSB1bmlvbiBvZiBhbGwgdGhlIHB1YmxpY2F0aW9u cyIgWzFdLCBzbyB0aGUKcm93LWZpbHRlcnMgYXJlIGNvbWJpbmVkIHdpdGggT1IuCgpJZiB0 aGUgc3Vic2NyaXB0aW9uIGhhcyBzZXZlcmFsIHB1YmxpY2F0aW9ucyBpbiB3aGljaCB0aGUg c2FtZSB0YWJsZSBoYXMgYmVlbgpwdWJsaXNoZWQgd2l0aCBkaWZmZXJlbnQgZmlsdGVycywg dGhvc2UgZXhwcmVzc2lvbnMgZ2V0IE9SJ2VkIHRvZ2V0aGVyIHNvIHRoYXQKcm93cyBzYXRp c2Z5aW5nIGFueSBvZiB0aGUgZXhwcmVzc2lvbnMgd2lsbCBiZSByZXBsaWNhdGVkLgoKTm90 aWNlIHRoaXMgbWVhbnMgaWYgb25lIG9mIHRoZSBwdWJsaWNhdGlvbnMgaGFzIG5vIGZpbHRl ciBhdCBhbGwgdGhlbiBhbGwgb3RoZXIKZmlsdGVycyBiZWNvbWUgcmVkdW5kYW50LgoKQXV0 aG9yOiBQZXRlciBTbWl0aApbMV0gaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2Fn ZS1pZC81NzRiNGU3OC0yZjM1LWFjZjMtNGJkYy00Yjg3MjU4MmU3MzklNDBlbnRlcnByaXNl ZGIuY29tCgpSb3ctZmlsdGVyIGNhY2hpbmcKPT09PT09PT09PT09PT09PT09CgpUaGUgY2Fj aGVkIHJvdy1maWx0ZXJzIChlLmcuIEV4cHJTdGF0ZSAqKSBhcmUgaW52YWxpZGF0ZWQgb25s eSBpbiBmdW5jdGlvbgpyZWxfc3luY19jYWNoZV9yZWxhdGlvbl9jYiwgc28gaXQgbWVhbnMg dGhlIEFMVEVSIFBVQkxJQ0FUSU9OIGZvciBvbmUgdGFibGUKd2lsbCBub3QgY2F1c2Ugcm93 LWZpbHRlcnMgb2Ygb3RoZXIgdGFibGVzIHRvIGFsc28gYmVjb21lIGludmFsaWRhdGVkLgoK VGhlIGNvZGUgcmVsYXRlZCB0byBjYWNoaW5nIHJvdy1maWx0ZXJzIGlzIGRvbmUganVzdCBi ZWZvcmUgdGhleSBhcmUgbmVlZGVkCihpbiB0aGUgcGdvdXRwdXRfcm93X2ZpbHRlciBmdW5j dGlvbikuCgpJZiB0aGVyZSBhcmUgbXVsdGlwbGUgcHVibGljYXRpb24gcm93LWZpbHRlcnMg Zm9yIGEgZ2l2ZW4gdGFibGUgdGhlc2UgYXJlIGFsbApjb21iaW5lZC9mbGF0dGVuZWQgaW50 byBhIHNpbmdsZSBmaWx0ZXIuCgpBdXRob3I6IFBldGVyIFNtaXRoLCBHcmVnIE5hbmNhcnJv dwpUaGUgZmlsdGVyIGNhY2hpbmcgaXMgYmFzZWQgb24gYSBzdWdnZXN0aW9ucyBmcm9tIEFt aXQgWzFdIFsyXSwgYW5kIEhvdXogWzNdClsxXSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9y Zy9tZXNzYWdlLWlkL0NBQTRlSzElMkJ4UWIwNk5HczZZN096d010S1lZaXhFcVI4dGRXVjVU SEFWRTRTQXFOckRnJTQwbWFpbC5nbWFpbC5jb20KWzJdIGh0dHBzOi8vd3d3LnBvc3RncmVz cWwub3JnL21lc3NhZ2UtaWQvQ0FBNGVLMSUyQnRpbzQ2Z29VS0JVZkFLRnNGVnh0Z2s4bk90 eSUzRFR4S29LSC1nZEx6SEQyZyU0MG1haWwuZ21haWwuY29tClszXSBodHRwczovL3d3dy5w b3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL09TMFBSMDFNQjU3MTYwOTBBNzBBNzNBREY1OEM1 ODk1MDk0OEQ5JTQwT1MwUFIwMU1CNTcxNi5qcG5wcmQwMS5wcm9kLm91dGxvb2suY29tCgpD YWNoZSBFeHByU3RhdGUgcGVyIHB1YmFjdGlvbi4KCklmIGEgc3Vic2NyaWJlciBoYXMgbXVs dGlwbGUgcHVibGljYXRpb25zIGFuZCB0aGVzZSBwdWJsaWNhdGlvbnMgaW5jbHVkZSB0aGUK c2FtZSB0YWJsZSB0aGVuIHRoZXJlIGNhbiBiZSBtdWx0aXBsZSBmaWx0ZXJzIHRoYXQgYXBw bHkgdG8gdGhhdCB0YWJsZS4KClRoZXNlIGZpbHRlcnMgYXJlIHN0b3JlZCBwZXItcHViYWN0 aW9ucyBvZiB0aGUgcHVibGljYXRpb25zLiBUaGVyZSBhcmUgNCBraW5kcwpvZiBwdWJhY3Rp b24gKCJpbnNlcnQiLCAidXBkYXRlIiwgImRlbGV0ZSIsICJ0cnVuY2F0ZSIpLCBidXQgcm93 LWZpbHRlcnMgYXJlCm5vdCBhcHBsaWVkIGZvciAidHJ1bmNhdGUiLgoKRmlsdGVycyBmb3Ig dGhlIHNhbWUgcHViYWN0aW9uIGFyZSBhbGwgY29tYmluZWQgKE9SJ2VkKSBhbmQgY2FjaGVk IGFzIG9uZSwgc28KYXQgdGhlIGVuZCB0aGVyZSBhcmUgYXQgbW9zdCAzIGNhY2hlZCBmaWx0 ZXJzIHBlciB0YWJsZS4KClRoZSBhcHByb3ByaWF0ZSAocHViYWN0aW9uKSBmaWx0ZXIgaXMg ZXhlY3V0ZWQgYWNjb3JkaW5nIHRvIHRoZSBETUwgb3BlcmF0aW9uLgoKQXV0aG9yOiBQZXRl ciBTbWl0aApEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdl LWlkL0NBQTRlSzElMkJoVlhmT1NTY2JmNUxVQiUzRDVpcyUzRHdZYUM2TkJoTHh1dmV0YldR blpSbnNWUSU0MG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgICAgICAgICAgICAgICAgICB8ICAgOCArCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1 YmxpY2F0aW9uLnNnbWwgICAgIHwgIDEzICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9w dWJsaWNhdGlvbi5zZ21sICAgIHwgIDM3ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9z dWJzY3JpcHRpb24uc2dtbCAgIHwgIDI0ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmMgICAgICAgIHwgIDY5ICsrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jICAgICAgfCAxMDggKysrKystCiBzcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL25vZGVzL2Vx dWFsZnVuY3MuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSAgICAgICAgICAgICAgICAgICB8ICAzOCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2FnZy5jICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZXhwci5jICAgICAgICAgICAgIHwgIDIxICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfZnVuYy5jICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9vcGVyLmMgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3JlbGF0aW9uLmMgICAgICAgICB8ICAgOSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jIHwgMTE4ICsrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8IDQxMCArKysrKysrKysrKysrKysrKysrLQogc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICB8ICAyNiArLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgICB8ICAgNyArLQogc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCAgICB8ICAgNiArCiBzcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgIHwgICAxICsKIHNyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgICB8IDE1MSArKysrKysrCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICAgIHwgIDc2ICsrKysK IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN19yb3dfZmlsdGVyLnBsICAgfCAzNTcgKysr KysrKysrKysrKysrKysKIDI0IGZpbGVzIGNoYW5nZWQsIDE0NTEgaW5zZXJ0aW9ucygrKSwg NTEgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDI3X3Jvd19maWx0ZXIucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDAzZTI1Mzdi MDcuLjJmMWY5MTMyYzYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC02MzExLDYgKzYzMTEsMTQg QEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8 L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBSZWZlcmVuY2UgdG8gcmVs YXRpb24KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgIDxzdHJ1Y3RmaWVsZD5wcnF1YWw8L3N0cnVj dGZpZWxkPiA8dHlwZT5wZ19ub2RlX3RyZWU8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT5FeHByZXNzaW9uIHRyZWUgKGluIDxmdW5jdGlvbj5ub2RlVG9TdHJpbmcoKTwv ZnVuY3Rpb24+CisgICAgICByZXByZXNlbnRhdGlvbikgZm9yIHRoZSByZWxhdGlvbidzIHF1 YWxpZnlpbmcgY29uZGl0aW9uPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwv dGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0 ZXJfcHVibGljYXRpb24uc2dtbAppbmRleCBiYjRlZjVlNWUyLi41ZDk4NjljNGY2IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNhdGlvbi5zZ21sCkBAIC0zMCw3ICszMCw3 IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFi bGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0g WywgLi4uIF0KKyAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgV0hFUkUgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBb LCAuLi4gXQogICAgIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVN QSB9IFssIC4uLiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CkBAIC01Miw3 ICs1Miw5IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICByZW1vdmUgb25lIG9y IG1vcmUgdGFibGVzL3NjaGVtYXMgZnJvbSB0aGUgcHVibGljYXRpb24uICBOb3RlIHRoYXQg YWRkaW5nCiAgICB0YWJsZXMvc2NoZW1hcyB0byBhIHB1YmxpY2F0aW9uIHRoYXQgaXMgYWxy ZWFkeSBzdWJzY3JpYmVkIHRvIHdpbGwgcmVxdWlyZSBhCiAgICA8bGl0ZXJhbD5BTFRFUiBT VUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT048L2xpdGVyYWw+IGFjdGlvbiBv biB0aGUKLSAgIHN1YnNjcmliaW5nIHNpZGUgaW4gb3JkZXIgdG8gYmVjb21lIGVmZmVjdGl2 ZS4KKyAgIHN1YnNjcmliaW5nIHNpZGUgaW4gb3JkZXIgdG8gYmVjb21lIGVmZmVjdGl2ZS4g Tm90ZSBhbHNvIHRoYXQgdGhlIGNvbWJpbmF0aW9uCisgICBvZiA8bGl0ZXJhbD5EUk9QPC9s aXRlcmFsPiB3aXRoIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2UgaXMgbm90Cisg ICBhbGxvd2VkLgogICA8L3BhcmE+CiAKICAgPHBhcmE+CkBAIC0xMDksNyArMTExLDEyIEBA IEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICAgICB0YWJsZSBuYW1lLCBvbmx5IHRo YXQgdGFibGUgaXMgYWZmZWN0ZWQuICBJZiA8bGl0ZXJhbD5PTkxZPC9saXRlcmFsPiBpcyBu b3QKICAgICAgIHNwZWNpZmllZCwgdGhlIHRhYmxlIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnQg dGFibGVzIChpZiBhbnkpIGFyZQogICAgICAgYWZmZWN0ZWQuICBPcHRpb25hbGx5LCA8bGl0 ZXJhbD4qPC9saXRlcmFsPiBjYW4gYmUgc3BlY2lmaWVkIGFmdGVyIHRoZSB0YWJsZQotICAg ICAgbmFtZSB0byBleHBsaWNpdGx5IGluZGljYXRlIHRoYXQgZGVzY2VuZGFudCB0YWJsZXMg YXJlIGluY2x1ZGVkLgorICAgICAgbmFtZSB0byBleHBsaWNpdGx5IGluZGljYXRlIHRoYXQg ZGVzY2VuZGFudCB0YWJsZXMgYXJlIGluY2x1ZGVkLiBJZiB0aGUKKyAgICAgIG9wdGlvbmFs IDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2UgaXMgc3BlY2lmaWVkLCByb3dzIHRo YXQgZG8gbm90CisgICAgICBzYXRpc2Z5IHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHdpbGwKKyAgICAgIG5vdCBiZSBwdWJs aXNoZWQuIE5vdGUgdGhhdCBwYXJlbnRoZXNlcyBhcmUgcmVxdWlyZWQgYXJvdW5kIHRoZQor ICAgICAgZXhwcmVzc2lvbi4gVGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l eHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKyAgICAgIGlzIGV2YWx1YXRlZCB3aXRoIHRoZSBy b2xlIHVzZWQgZm9yIHRoZSByZXBsaWNhdGlvbiBjb25uZWN0aW9uLgogICAgICA8L3BhcmE+ CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggZDgwNWU4ZTc3YS4uNWFlZWUyMzA5 ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCkBAIC0y OCw3ICsyOCw3IEBAIENSRUFURSBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29iamVjdDwvcmVwbGFjZWFibGU+ IGlzIG9uZSBvZjo8L3BocmFzZT4KIAotICAgIFRBQkxFIFsgT05MWSBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWywg Li4uIF0KKyAgICBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgV0hFUkUgKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ICkgXSBbLCAu Li4gXQogICAgIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnNjaGVtYV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9 IFssIC4uLiBdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CkBAIC03OCw2ICs3 OCwxMyBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgICAgcHVibGljYXRpb24sIHNvIHRoZXkgYXJl IG5ldmVyIGV4cGxpY2l0bHkgYWRkZWQgdG8gdGhlIHB1YmxpY2F0aW9uLgogICAgICA8L3Bh cmE+CiAKKyAgICAgPHBhcmE+CisgICAgICBJZiB0aGUgb3B0aW9uYWwgPGxpdGVyYWw+V0hF UkU8L2xpdGVyYWw+IGNsYXVzZSBpcyBzcGVjaWZpZWQsIG9ubHkgcm93cworICAgICAgdGhh dCBzYXRpc2Z5IHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+IAorICAgICAgd2lsbCBiZSBwdWJsaXNoZWQuIE5vdGUgdGhhdCBw YXJlbnRoZXNlcyBhcmUgcmVxdWlyZWQgYXJvdW5kIHRoZSAKKyAgICAgIGV4cHJlc3Npb24u IEl0IGhhcyBubyBlZmZlY3Qgb24gPGxpdGVyYWw+VFJVTkNBVEU8L2xpdGVyYWw+IGNvbW1h bmRzLgorICAgICA8L3BhcmE+CisKICAgICAgPHBhcmE+CiAgICAgICBPbmx5IHBlcnNpc3Rl bnQgYmFzZSB0YWJsZXMgYW5kIHBhcnRpdGlvbmVkIHRhYmxlcyBjYW4gYmUgcGFydCBvZiBh CiAgICAgICBwdWJsaWNhdGlvbi4gIFRlbXBvcmFyeSB0YWJsZXMsIHVubG9nZ2VkIHRhYmxl cywgZm9yZWlnbiB0YWJsZXMsCkBAIC0yMjUsNiArMjMyLDIyIEBAIENSRUFURSBQVUJMSUNB VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ CiAgICBkaXNhbGxvd2VkIG9uIHRob3NlIHRhYmxlcy4KICAgPC9wYXJhPgogCisgIDxwYXJh PgorICAgQSA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlIG11c3QgY29udGFpbiBv bmx5IGNvbHVtbnMgdGhhdCBhcmUKKyAgIHBhcnQgb2YgdGhlIHByaW1hcnkga2V5IG9yIGFy ZSBjb3ZlcmVkIGJ5IHRoZSA8bGl0ZXJhbD5SRVBMSUNBCisgICBJREVOVElUWTwvbGl0ZXJh bD4sIGluIG9yZGVyIGZvciA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+IGFuZAorICAgPGNv bW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcGVyYXRpb25zIHRvIGJlIHB1Ymxpc2hlZC4gCisg ICBGb3IgcHVibGljYXRpb24gb2YgPGNvbW1hbmQ+SU5TRVJUPC9jb21tYW5kPiBvcGVyYXRp b25zLCBhbnkgY29sdW1uCisgICBtYXkgYmUgdXNlZCBpbiB0aGUgPGxpdGVyYWw+V0hFUkU8 L2xpdGVyYWw+IGNsYXVzZS4KKyAgIElmIG51bGxhYmxlIGNvbHVtbnMgYXJlIHByZXNlbnQg aW4gdGhlIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2UsCisgICBwb3NzaWJsZSBO VUxMIHZhbHVlcyBzaG91bGQgYmUgYWNjb3VudGVkIGZvciBpbiBleHByZXNzaW9ucywgdG8g YXZvaWQKKyAgIHVuZXhwZWN0ZWQgcmVzdWx0cywgYmVjYXVzZSA8bGl0ZXJhbD5OVUxMPC9s aXRlcmFsPiB2YWx1ZXMgY2FuIGNhdXNlIAorICAgdGhvc2UgZXhwcmVzc2lvbnMgdG8gZXZh bHVhdGUgdG8gZmFsc2UuIAorICAgQSA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNl IGFsbG93cyBzaW1wbGUgZXhwcmVzc2lvbnMuIFRoZSBzaW1wbGUKKyAgIGV4cHJlc3Npb24g Y2Fubm90IGNvbnRhaW4gYW55IGFnZ3JlZ2F0ZSBvciB3aW5kb3cgZnVuY3Rpb25zLCBub24t aW1tdXRhYmxlCisgICBmdW5jdGlvbnMsIHVzZXItZGVmaW5lZCB0eXBlcywgb3BlcmF0b3Jz IG9yIGZ1bmN0aW9ucy4KKyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgRm9yIGFuIDxjb21t YW5kPklOU0VSVCAuLi4gT04gQ09ORkxJQ1Q8L2NvbW1hbmQ+IGNvbW1hbmQsIHRoZSBwdWJs aWNhdGlvbiB3aWxsCiAgICBwdWJsaXNoIHRoZSBvcGVyYXRpb24gdGhhdCBhY3R1YWxseSBy ZXN1bHRzIGZyb20gdGhlIGNvbW1hbmQuICBTbyBkZXBlbmRpbmcKQEAgLTI0Nyw2ICsyNzAs MTEgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uYW1lPC9yZXBsYWNlYWJsZT4KICAgPHBhcmE+CiAgICA8YWNyb255bT5EREw8L2Fjcm9u eW0+IG9wZXJhdGlvbnMgYXJlIG5vdCBwdWJsaXNoZWQuCiAgIDwvcGFyYT4KKworICA8cGFy YT4KKyAgIFRoZSA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlIGV4cHJlc3Npb24g aXMgZXhlY3V0ZWQgd2l0aCB0aGUgcm9sZSB1c2VkCisgICBmb3IgdGhlIHJlcGxpY2F0aW9u IGNvbm5lY3Rpb24uCisgIDwvcGFyYT4KICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpA QCAtMjU5LDYgKzI4NywxMyBAQCBDUkVBVEUgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBG T1IgVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzOwogPC9wcm9ncmFtbGlzdGluZz4KICAgPC9w YXJhPgogCisgIDxwYXJhPgorICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNo ZXMgYWxsIGNoYW5nZXMgZnJvbSBhY3RpdmUgZGVwYXJ0bWVudHM6Cis8cHJvZ3JhbWxpc3Rp bmc+CitDUkVBVEUgUFVCTElDQVRJT04gYWN0aXZlX2RlcGFydG1lbnRzIEZPUiBUQUJMRSBk ZXBhcnRtZW50cyBXSEVSRSAoYWN0aXZlIElTIFRSVUUpOworPC9wcm9ncmFtbGlzdGluZz4K KyAgPC9wYXJhPgorCiAgIDxwYXJhPgogICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBw dWJsaXNoZXMgYWxsIGNoYW5nZXMgaW4gYWxsIHRhYmxlczoKIDxwcm9ncmFtbGlzdGluZz4K ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggOTkw YTQxZjFhMS4uZGIyNTVmMzIzYSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwKQEAgLTIwOCw2ICsyMDgsMTEgQEAgQ1JFQVRFIFNVQlNDUklQVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3Jl cGxhY2VhYmwKICAgICAgICAgICB0aGF0IGFyZSBiZWluZyBzdWJzY3JpYmVkIHRvIHdoZW4g dGhlIHJlcGxpY2F0aW9uIHN0YXJ0cy4KICAgICAgICAgICBUaGUgZGVmYXVsdCBpcyA8bGl0 ZXJhbD50cnVlPC9saXRlcmFsPi4KICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgIDxwYXJh PgorICAgICAgICAgIElmIHRoZSBwdWJsaWNhdGlvbnMgY29udGFpbiBjb25kaXRpb25hbCBl eHByZXNzaW9ucywgaXQgd2lsbCBhZmZlY3QKKyAgICAgICAgICB3aGF0IGRhdGEgaXMgY29w aWVkLiBSZWZlciB0byB0aGUKKyAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRl c3Vic2NyaXB0aW9uLW5vdGVzIiAvPiBmb3IgZGV0YWlscy4KKyAgICAgICAgIDwvcGFyYT4K ICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtMjkz LDcgKzI5OCw3IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgIDwvdmFyaWFibGVs aXN0PgogIDwvcmVmc2VjdDE+CiAKLSA8cmVmc2VjdDE+CisgPHJlZnNlY3QxIGlkPSJzcWwt Y3JlYXRlc3Vic2NyaXB0aW9uLW5vdGVzIiB4cmVmbGFiZWw9Ik5vdGVzIj4KICAgPHRpdGxl Pk5vdGVzPC90aXRsZT4KIAogICA8cGFyYT4KQEAgLTMxOSw2ICszMjQsMjMgQEAgQ1JFQVRF IFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0 aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgIHRoZSBwYXJhbWV0ZXIgPGxpdGVyYWw+Y3JlYXRl X3Nsb3QgPSBmYWxzZTwvbGl0ZXJhbD4uICBUaGlzIGlzIGFuCiAgICBpbXBsZW1lbnRhdGlv biByZXN0cmljdGlvbiB0aGF0IG1pZ2h0IGJlIGxpZnRlZCBpbiBhIGZ1dHVyZSByZWxlYXNl LgogICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBJZiBhbnkgdGFibGUgaW4gdGhlIHB1Ymxp Y2F0aW9uIGhhcyBhIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2UsIHJvd3MKKyAg IHRoYXQgZG8gbm90IHNhdGlzZnkgdGhlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4KKyAgIHdpbGwgbm90IGJlIHB1Ymxpc2hlZCAo aS5lLiB0aGV5IHdpbGwgYmUgZmlsdGVyZWQgb3V0KS4KKyAgIElmIHRoZSBzdWJzY3JpcHRp b24gaGFzIHNldmVyYWwgcHVibGljYXRpb25zIGluIHdoaWNoIHRoZSBzYW1lIHRhYmxlIGhh cyBiZWVuCisgICBwdWJsaXNoZWQgd2l0aCBkaWZmZXJlbnQgPGxpdGVyYWw+V0hFUkU8L2xp dGVyYWw+IGNsYXVzZXMsIHRob3NlIGV4cHJlc3Npb25zCisgICAoZm9yIHRoZSBzYW1lIHB1 Ymxpc2ggb3BlcmF0aW9uKSBnZXQgT1InZWQgdG9nZXRoZXIgc28gdGhhdCByb3dzIHNhdGlz ZnlpbmcgYW55CisgICBvZiB0aGUgZXhwcmVzc2lvbnMgd2lsbCBiZSBwdWJsaXNoZWQuIEFs c28sIGlmIG9uZSBvZiB0aGUgcHVibGljYXRpb25zIGZvciB0aGUKKyAgIHNhbWUgdGFibGUg aGFzIG5vIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2UgYXQgYWxsLCBvciBpcyBh IDxsaXRlcmFsPkZPUgorICAgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+Rk9S IEFMTCBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiBwdWJsaWNhdGlvbiwKKyAgIHRoZW4g YWxsIG90aGVyIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2VzIChmb3IgdGhlIHNh bWUgcHVibGlzaCBvcGVyYXRpb24pCisgICBiZWNvbWUgcmVkdW5kYW50LgorICAgSWYgdGhl IHN1YnNjcmliZXIgaXMgYSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+ IHZlcnNpb24gYmVmb3JlIDE1CisgICB0aGVuIGFueSByb3cgZmlsdGVyaW5nIGlzIGlnbm9y ZWQgZHVyaW5nIHRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9uIHBoYXNlLgorICA8 L3BhcmE+CisKICA8L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDYyZjEwYmNiZDIuLjA5MjlhYTBhMzUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYworKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTM2LDYgKzM2LDkgQEAKICNp bmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRlICJmdW5jYXBp LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2Ns YXVzZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2xsYXRlLmgiCisjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAidXRpbHMvYXJyYXkuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hlLmgi CkBAIC0yNzUsMjIgKzI3OCw1NSBAQCBHZXRQdWJQYXJ0aXRpb25PcHRpb25SZWxhdGlvbnMo TGlzdCAqcmVzdWx0LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAJcmV0dXJu IHJlc3VsdDsKIH0KIAorLyoKKyAqIFRyYW5zZm9ybSBhIHB1YmxpY2F0aW9uIFdIRVJFIGNs YXVzZSwgZW5zdXJpbmcgaXQgaXMgY29lcmNlZCB0byBib29sZWFuIGFuZAorICogbmVjZXNz YXJ5IGNvbGxhdGlvbiBpbmZvcm1hdGlvbiBpcyBhZGRlZCBpZiByZXF1aXJlZCwgYW5kIGFk ZCBhIG5ldworICogbnNpdGVtL1JURSBmb3IgdGhlIGFzc29jaWF0ZWQgcmVsYXRpb24gdG8g dGhlIFBhcnNlU3RhdGUncyBuYW1lc3BhY2UgbGlzdC4KKyAqLworTm9kZSAqCitHZXRUcmFu c2Zvcm1lZFdoZXJlQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUHVibGljYXRpb25SZWxJ bmZvICpwcmksCisJCQkJCQkgIGJvb2wgZml4dXBfY29sbGF0aW9uKQoreworCVBhcnNlTmFt ZXNwYWNlSXRlbSAqbnNpdGVtOworCU5vZGUJCQkgICAqd2hlcmVjbGF1c2UgPSBOVUxMOwor CisJcHN0YXRlLT5wX3NvdXJjZXRleHQgPSBub2RlVG9TdHJpbmcocHJpLT53aGVyZUNsYXVz ZSk7CisKKwluc2l0ZW0gPSBhZGRSYW5nZVRhYmxlRW50cnlGb3JSZWxhdGlvbihwc3RhdGUs IHByaS0+cmVsYXRpb24sCisJCQkJCQkJCQkJICAgQWNjZXNzU2hhcmVMb2NrLCBOVUxMLCBm YWxzZSwgZmFsc2UpOworCisJYWRkTlNJdGVtVG9RdWVyeShwc3RhdGUsIG5zaXRlbSwgZmFs c2UsIHRydWUsIHRydWUpOworCisJd2hlcmVjbGF1c2UgPSB0cmFuc2Zvcm1XaGVyZUNsYXVz ZShwc3RhdGUsIGNvcHlPYmplY3QocHJpLT53aGVyZUNsYXVzZSksCisJCQkJCQkJCQkgICBF WFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkUsCisJCQkJCQkJCQkgICAiUFVCTElDQVRJT04g V0hFUkUiKTsKKworCS8qIEZpeCB1cCBjb2xsYXRpb24gaW5mb3JtYXRpb24gKi8KKwlpZiAo Zml4dXBfY29sbGF0aW9uKQorCQlhc3NpZ25fZXhwcl9jb2xsYXRpb25zKHBzdGF0ZSwgd2hl cmVjbGF1c2UpOworCisJcmV0dXJuIHdoZXJlY2xhdXNlOworfQorCiAvKgogICogSW5zZXJ0 IG5ldyBwdWJsaWNhdGlvbiAvIHJlbGF0aW9uIG1hcHBpbmcuCiAgKi8KIE9iamVjdEFkZHJl c3MKLXB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVs SW5mbyAqdGFyZ2V0cmVsLAorcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwg UHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQkgYm9vbCBpZl9ub3RfZXhpc3RzKQog ewogCVJlbGF0aW9uCXJlbDsKIAlIZWFwVHVwbGUJdHVwOwogCURhdHVtCQl2YWx1ZXNbTmF0 dHNfcGdfcHVibGljYXRpb25fcmVsXTsKIAlib29sCQludWxsc1tOYXR0c19wZ19wdWJsaWNh dGlvbl9yZWxdOwotCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZCh0YXJnZXRyZWwt PnJlbGF0aW9uKTsKKwlSZWxhdGlvbgl0YXJnZXRyZWwgPSBwcmktPnJlbGF0aW9uOworCU9p ZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZCh0YXJnZXRyZWwpOwogCU9pZAkJCXBycmVs aWQ7CiAJUHVibGljYXRpb24gKnB1YiA9IEdldFB1YmxpY2F0aW9uKHB1YmlkKTsKIAlPYmpl Y3RBZGRyZXNzIG15c2VsZiwKIAkJCQlyZWZlcmVuY2VkOworCVBhcnNlU3RhdGUgKnBzdGF0 ZTsKKwlOb2RlCSAgICp3aGVyZWNsYXVzZSA9IE5VTEw7CiAJTGlzdAkgICAqcmVsaWRzID0g TklMOwogCiAJcmVsID0gdGFibGVfb3BlbihQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIFJv d0V4Y2x1c2l2ZUxvY2spOwpAQCAtMzExLDEwICszNDcsMjIgQEAgcHVibGljYXRpb25fYWRk X3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICp0YXJnZXRyZWwsCiAJ CWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNU KSwKIAkJCQkgZXJybXNnKCJyZWxhdGlvbiBcIiVzXCIgaXMgYWxyZWFkeSBtZW1iZXIgb2Yg cHVibGljYXRpb24gXCIlc1wiIiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHRh cmdldHJlbC0+cmVsYXRpb24pLCBwdWItPm5hbWUpKSk7CisJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZSh0YXJnZXRyZWwpLCBwdWItPm5hbWUpKSk7CiAJfQogCi0JY2hlY2tfcHVi bGljYXRpb25fYWRkX3JlbGF0aW9uKHRhcmdldHJlbC0+cmVsYXRpb24pOworCWNoZWNrX3B1 YmxpY2F0aW9uX2FkZF9yZWxhdGlvbih0YXJnZXRyZWwpOworCisJaWYgKHByaS0+d2hlcmVD bGF1c2UgIT0gTlVMTCkKKwl7CisJCS8qIFNldCB1cCBhIFBhcnNlU3RhdGUgdG8gcGFyc2Ug d2l0aCAqLworCQlwc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CisKKwkJLyoKKwkJ ICogR2V0IHRoZSB0cmFuc2Zvcm1lZCBXSEVSRSBjbGF1c2UsIG9mIGJvb2xlYW4gdHlwZSwg d2l0aCBuZWNlc3NhcnkKKwkJICogY29sbGF0aW9uIGluZm9ybWF0aW9uLgorCQkgKi8KKwkJ d2hlcmVjbGF1c2UgPSBHZXRUcmFuc2Zvcm1lZFdoZXJlQ2xhdXNlKHBzdGF0ZSwgcHJpLCB0 cnVlKTsKKwl9CiAKIAkvKiBGb3JtIGEgdHVwbGUuICovCiAJbWVtc2V0KHZhbHVlcywgMCwg c2l6ZW9mKHZhbHVlcykpOwpAQCAtMzI4LDYgKzM3NiwxMiBAQCBwdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnRhcmdldHJlbCwKIAl2 YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJyZWxpZCAtIDFdID0KIAkJT2JqZWN0 SWRHZXREYXR1bShyZWxpZCk7CiAKKwkvKiBBZGQgcXVhbGlmaWNhdGlvbnMsIGlmIGF2YWls YWJsZSAqLworCWlmICh3aGVyZWNsYXVzZSkKKwkJdmFsdWVzW0FudW1fcGdfcHVibGljYXRp b25fcmVsX3BycXVhbCAtIDFdID0gQ1N0cmluZ0dldFRleHREYXR1bShub2RlVG9TdHJpbmco d2hlcmVjbGF1c2UpKTsKKwllbHNlCisJCW51bGxzW0FudW1fcGdfcHVibGljYXRpb25fcmVs X3BycXVhbCAtIDFdID0gdHJ1ZTsKKwogCXR1cCA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlv bkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMpOwogCiAJLyogSW5zZXJ0IHR1cGxlIGlu dG8gY2F0YWxvZy4gKi8KQEAgLTM0NCw2ICszOTgsMTMgQEAgcHVibGljYXRpb25fYWRkX3Jl bGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICp0YXJnZXRyZWwsCiAJT2Jq ZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIHJlbGlkKTsK IAlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lf QVVUTyk7CiAKKwkvKiBBZGQgZGVwZW5kZW5jeSBvbiB0aGUgb2JqZWN0cyBtZW50aW9uZWQg aW4gdGhlIHF1YWxpZmljYXRpb25zICovCisJaWYgKHdoZXJlY2xhdXNlKQorCXsKKwkJcmVj b3JkRGVwZW5kZW5jeU9uRXhwcigmbXlzZWxmLCB3aGVyZWNsYXVzZSwgcHN0YXRlLT5wX3J0 YWJsZSwgREVQRU5ERU5DWV9OT1JNQUwpOworCQlmcmVlX3BhcnNlc3RhdGUocHN0YXRlKTsK Kwl9CisKIAkvKiBDbG9zZSB0aGUgdGFibGUuICovCiAJdGFibGVfY2xvc2UocmVsLCBSb3dF eGNsdXNpdmVMb2NrKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVi bGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMu YwppbmRleCA0MDRiYjVkMGM4Li45Y2E3NDNjNmQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtNTI5LDQwICs1MjksOTYgQEAgQWx0ZXJQdWJsaWNh dGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwK IAkJTGlzdAkgICAqZGVscmVscyA9IE5JTDsKIAkJTGlzdENlbGwgICAqb2xkbGM7CiAKKwkJ LyoKKwkJICogQ2hlY2sgaWYgdGhlIHJlbGF0aW9uIGlzIG1lbWJlciBvZiB0aGUgZXhpc3Rp bmcgc2NoZW1hIGluIHRoZQorCQkgKiBwdWJsaWNhdGlvbiBvciBtZW1iZXIgb2YgdGhlIHNj aGVtYSBsaXN0IHNwZWNpZmllZC4KKwkJICovCiAJCUNoZWNrT2JqU2NoZW1hTm90QWxyZWFk eUluUHVibGljYXRpb24ocmVscywgc2NoZW1haWRsaXN0LAogCQkJCQkJCQkJCQkgIFBVQkxJ Q0FUSU9OT0JKX1RBQkxFKTsKIAotCQkvKiBDYWxjdWxhdGUgd2hpY2ggcmVsYXRpb25zIHRv IGRyb3AuICovCisJCS8qCisJCSAqIEluIG9yZGVyIHRvIHJlY3JlYXRlIHRoZSByZWxhdGlv biBsaXN0IGZvciB0aGUgcHVibGljYXRpb24sCisJCSAqIGxvb2sgZm9yIGV4aXN0aW5nIHJl bGF0aW9ucyB0aGF0IG5lZWQgbm90IGJlIGRyb3BwZWQuCisJCSAqLwogCQlmb3JlYWNoKG9s ZGxjLCBvbGRyZWxpZHMpCiAJCXsKIAkJCU9pZAkJCW9sZHJlbGlkID0gbGZpcnN0X29pZChv bGRsYyk7Ci0JCQlMaXN0Q2VsbCAgICpuZXdsYzsKKwkJCUxpc3RDZWxsCSpuZXdsYzsKKwkJ CVB1YmxpY2F0aW9uUmVsSW5mbyAqb2xkcmVsOwogCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsK KwkJCUhlYXBUdXBsZQlyZnR1cGxlOworCQkJYm9vbAkJcmZpc251bGwgPSB0cnVlOworCQkJ Tm9kZQkJKm9sZHJlbHdoZXJlY2xhdXNlID0gTlVMTDsKKworCQkJLyogbG9vayB1cCB0aGUg Y2FjaGUgZm9yIHRoZSBvbGQgcmVsbWFwICovCisJCQlyZnR1cGxlID0gU2VhcmNoU3lzQ2Fj aGUyKFBVQkxJQ0FUSU9OUkVMTUFQLCBPYmplY3RJZEdldERhdHVtKG9sZHJlbGlkKSwKKwkJ CQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShwdWJpZCkpOworCQkJaWYgKEhlYXBUdXBsZUlz VmFsaWQocmZ0dXBsZSkpCisJCQl7CisJCQkJRGF0dW0JCXdoZXJlQ2xhdXNlRGF0dW07CisK KwkJCQl3aGVyZUNsYXVzZURhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVM TUFQLCByZnR1cGxlLCBBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnF1YWwsCisJCQkJCQkJ CQkJCQkgICAmcmZpc251bGwpOworCQkJCWlmICghcmZpc251bGwpCisJCQkJCW9sZHJlbHdo ZXJlY2xhdXNlID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcod2hlcmVDbGF1 c2VEYXR1bSkpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHJmdHVwbGUpOworCQkJfQogCiAJ CQlmb3JlYWNoKG5ld2xjLCByZWxzKQogCQkJewogCQkJCVB1YmxpY2F0aW9uUmVsSW5mbyAq bmV3cHVicmVsOwogCiAJCQkJbmV3cHVicmVsID0gKFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBs Zmlyc3QobmV3bGMpOworCisJCQkJLyoKKwkJCQkgKiBMb29rIGlmIGFueSBvZiB0aGUgbmV3 IHNldCBvZiByZWxhdGlvbnMgbWF0Y2ggd2l0aAorCQkJCSAqIHRoZSBleGlzdGluZyByZWxh dGlvbnMgaW4gdGhlIHB1YmxpY2F0aW9uLiBBZGRpdGlvbmFsbHksCisJCQkJICogaWYgdGhl IHJlbGF0aW9uIGhhcyBhbiBhc3NvY2lhdGVkIHdoZXJlLWNsYXVzZSwgY2hlY2sgdGhlCisJ CQkJICogd2hlcmUtY2xhdXNlcyBhbHNvIG1hdGNoLiBEcm9wIHRoZSByZXN0LgorCQkJCSAq LwogCQkJCWlmIChSZWxhdGlvbkdldFJlbGlkKG5ld3B1YnJlbC0+cmVsYXRpb24pID09IG9s ZHJlbGlkKQogCQkJCXsKLQkJCQkJZm91bmQgPSB0cnVlOwotCQkJCQlicmVhazsKKwkJCQkJ aWYgKHJmaXNudWxsICYmICFuZXdwdWJyZWwtPndoZXJlQ2xhdXNlKQorCQkJCQl7CisJCQkJ CQlmb3VuZCA9IHRydWU7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCisJCQkJCWlmICghcmZp c251bGwgJiYgbmV3cHVicmVsLT53aGVyZUNsYXVzZSkKKwkJCQkJeworCQkJCQkJUGFyc2VT dGF0ZSAqcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRlKE5VTEwpOworCQkJCQkJTm9kZSAqd2hl cmVjbGF1c2U7CisKKwkJCQkJCXdoZXJlY2xhdXNlID0gR2V0VHJhbnNmb3JtZWRXaGVyZUNs YXVzZShwc3RhdGUsCisJCQkJCQkJCQkJCQkJCQkJbmV3cHVicmVsLAorCQkJCQkJCQkJCQkJ CQkJCWZhbHNlKTsKKwkJCQkJCWlmIChlcXVhbChvbGRyZWx3aGVyZWNsYXVzZSwgd2hlcmVj bGF1c2UpKQorCQkJCQkJeworCQkJCQkJCWZyZWVfcGFyc2VzdGF0ZShwc3RhdGUpOworCQkJ CQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKworCQkJCQkJZnJl ZV9wYXJzZXN0YXRlKHBzdGF0ZSk7CisJCQkJCX0KIAkJCQl9CiAJCQl9Ci0JCQkvKiBOb3Qg eWV0IGluIHRoZSBsaXN0LCBvcGVuIGl0IGFuZCBhZGQgdG8gdGhlIGxpc3QgKi8KKworCQkJ aWYgKG9sZHJlbHdoZXJlY2xhdXNlKQorCQkJCXBmcmVlKG9sZHJlbHdoZXJlY2xhdXNlKTsK KworCQkJLyoKKwkJCSAqIEFkZCB0aGUgbm9uLW1hdGNoZWQgcmVsYXRpb25zIHRvIGEgbGlz dCBzbyB0aGF0IHRoZXkgY2FuCisJCQkgKiBiZSBkcm9wcGVkLgorCQkJICovCiAJCQlpZiAo IWZvdW5kKQogCQkJewotCQkJCVJlbGF0aW9uCW9sZHJlbDsKLQkJCQlQdWJsaWNhdGlvblJl bEluZm8gKnB1YnJlbDsKLQotCQkJCS8qIFdyYXAgcmVsYXRpb24gaW50byBQdWJsaWNhdGlv blJlbEluZm8gKi8KLQkJCQlvbGRyZWwgPSB0YWJsZV9vcGVuKG9sZHJlbGlkLCBTaGFyZVVw ZGF0ZUV4Y2x1c2l2ZUxvY2spOwotCi0JCQkJcHVicmVsID0gcGFsbG9jKHNpemVvZihQdWJs aWNhdGlvblJlbEluZm8pKTsKLQkJCQlwdWJyZWwtPnJlbGF0aW9uID0gb2xkcmVsOwotCi0J CQkJZGVscmVscyA9IGxhcHBlbmQoZGVscmVscywgcHVicmVsKTsKKwkJCQlvbGRyZWwgPSBw YWxsb2Moc2l6ZW9mKFB1YmxpY2F0aW9uUmVsSW5mbykpOworCQkJCW9sZHJlbC0+d2hlcmVD bGF1c2UgPSBOVUxMOworCQkJCW9sZHJlbC0+cmVsYXRpb24gPSB0YWJsZV9vcGVuKG9sZHJl bGlkLAorCQkJCQkJCQkJCQkgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCQkJZGVs cmVscyA9IGxhcHBlbmQoZGVscmVscywgb2xkcmVsKTsKIAkJCX0KIAkJfQogCkBAIC04OTks NiArOTU1LDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJTGlzdAkgICAqcmVs aWRzID0gTklMOwogCUxpc3QJICAgKnJlbHMgPSBOSUw7CiAJTGlzdENlbGwgICAqbGM7CisJ TGlzdAkgICAqcmVsaWRzX3dpdGhfcmYgPSBOSUw7CiAKIAkvKgogCSAqIE9wZW4sIHNoYXJl LWxvY2ssIGFuZCBjaGVjayBhbGwgdGhlIGV4cGxpY2l0bHktc3BlY2lmaWVkIHJlbGF0aW9u cwpAQCAtOTI2LDE1ICs5ODMsMjYgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAJ CSAqLwogCQlpZiAobGlzdF9tZW1iZXJfb2lkKHJlbGlkcywgbXlyZWxpZCkpCiAJCXsKKwkJ CS8qIERpc2FsbG93IGR1cGxpY2F0ZSB0YWJsZXMgaWYgdGhlcmUgYXJlIGFueSB3aXRoIHJv dy1maWx0ZXJzLiAqLworCQkJaWYgKHQtPndoZXJlQ2xhdXNlIHx8IGxpc3RfbWVtYmVyX29p ZChyZWxpZHNfd2l0aF9yZiwgbXlyZWxpZCkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJj b25mbGljdGluZyBvciByZWR1bmRhbnQgcm93LWZpbHRlcnMgZm9yIFwiJXNcIiIsCisJCQkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisKIAkJCXRhYmxlX2Nsb3Nl KHJlbCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAK IAkJcHViX3JlbCA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25SZWxJbmZvKSk7CiAJCXB1 Yl9yZWwtPnJlbGF0aW9uID0gcmVsOworCQlwdWJfcmVsLT53aGVyZUNsYXVzZSA9IHQtPndo ZXJlQ2xhdXNlOwogCQlyZWxzID0gbGFwcGVuZChyZWxzLCBwdWJfcmVsKTsKIAkJcmVsaWRz ID0gbGFwcGVuZF9vaWQocmVsaWRzLCBteXJlbGlkKTsKIAorCQlpZiAodC0+d2hlcmVDbGF1 c2UpCisJCQlyZWxpZHNfd2l0aF9yZiA9IGxhcHBlbmRfb2lkKHJlbGlkc193aXRoX3JmLCBt eXJlbGlkKTsKKwogCQkvKgogCQkgKiBBZGQgY2hpbGRyZW4gb2YgdGhpcyByZWwsIGlmIHJl cXVlc3RlZCwgc28gdGhhdCB0aGV5IHRvbyBhcmUgYWRkZWQKIAkJICogdG8gdGhlIHB1Ymxp Y2F0aW9uLiAgQSBwYXJ0aXRpb25lZCB0YWJsZSBjYW4ndCBoYXZlIGFueSBpbmhlcml0YW5j ZQpAQCAtOTY3LDYgKzEwMzUsOCBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAkJ CQlyZWwgPSB0YWJsZV9vcGVuKGNoaWxkcmVsaWQsIE5vTG9jayk7CiAJCQkJcHViX3JlbCA9 IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25SZWxJbmZvKSk7CiAJCQkJcHViX3JlbC0+cmVs YXRpb24gPSByZWw7CisJCQkJLyogY2hpbGQgaW5oZXJpdHMgV0hFUkUgY2xhdXNlIGZyb20g cGFyZW50ICovCisJCQkJcHViX3JlbC0+d2hlcmVDbGF1c2UgPSB0LT53aGVyZUNsYXVzZTsK IAkJCQlyZWxzID0gbGFwcGVuZChyZWxzLCBwdWJfcmVsKTsKIAkJCQlyZWxpZHMgPSBsYXBw ZW5kX29pZChyZWxpZHMsIGNoaWxkcmVsaWQpOwogCQkJfQpAQCAtOTc0LDYgKzEwNDQsNyBA QCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAl9CiAKIAlsaXN0X2ZyZWUocmVsaWRz KTsKKwlsaXN0X2ZyZWUocmVsaWRzX3dpdGhfcmYpOwogCiAJcmV0dXJuIHJlbHM7CiB9CkBA IC05OTMsNiArMTA2NCw4IEBAIENsb3NlVGFibGVMaXN0KExpc3QgKnJlbHMpCiAJCXB1Yl9y ZWwgPSAoUHVibGljYXRpb25SZWxJbmZvICopIGxmaXJzdChsYyk7CiAJCXRhYmxlX2Nsb3Nl KHB1Yl9yZWwtPnJlbGF0aW9uLCBOb0xvY2spOwogCX0KKworCWxpc3RfZnJlZV9kZWVwKHJl bHMpOwogfQogCiAvKgpAQCAtMTA4OCw2ICsxMTYxLDExIEBAIFB1YmxpY2F0aW9uRHJvcFRh YmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykKIAkJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogCQl9CiAKKwkJaWYgKHB1YnJlbC0+ d2hlcmVDbGF1c2UpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coImludmFsaWQgdXNlIG9mIFdIRVJFIHJv dy1maWx0ZXIgaW4gQUxURVIgUFVCTElDQVRJT04gLi4uIERST1AgVEFCTEUiKSkpOworCiAJ CU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIHByaWQp OwogCQlwZXJmb3JtRGVsZXRpb24oJm9iaiwgRFJPUF9DQVNDQURFLCAwKTsKIAl9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25v ZGVzL2NvcHlmdW5jcy5jCmluZGV4IGRmMGI3NDc4ODMuLmJkNTVlYTY2N2YgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL2NvcHlmdW5jcy5jCkBAIC00ODMzLDYgKzQ4MzMsNyBAQCBfY29weVB1YmxpY2F0aW9u VGFibGUoY29uc3QgUHVibGljYXRpb25UYWJsZSAqZnJvbSkKIAlQdWJsaWNhdGlvblRhYmxl ICpuZXdub2RlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CiAKIAlDT1BZX05PREVf RklFTEQocmVsYXRpb24pOworCUNPUFlfTk9ERV9GSUVMRCh3aGVyZUNsYXVzZSk7CiAKIAly ZXR1cm4gbmV3bm9kZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFs ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBjYjdkZGQ0 NjNjLi4wMjhiOGU1ZGMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0yMzEyLDYg KzIzMTIsNyBAQCBzdGF0aWMgYm9vbAogX2VxdWFsUHVibGljYXRpb25UYWJsZShjb25zdCBQ dWJsaWNhdGlvblRhYmxlICphLCBjb25zdCBQdWJsaWNhdGlvblRhYmxlICpiKQogewogCUNP TVBBUkVfTk9ERV9GSUVMRChyZWxhdGlvbik7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHdoZXJl Q2xhdXNlKTsKIAogCXJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggM2Q0ZGQ0 M2U0Ny4uOWRhOTNhMDFhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0u eQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC05NzQyLDEyICs5NzQyLDEz IEBAIENyZWF0ZVB1YmxpY2F0aW9uU3RtdDoKICAqIHJlbGF0aW9uX2V4cHIgaGVyZS4KICAq LwogUHVibGljYXRpb25PYmpTcGVjOgotCQkJVEFCTEUgcmVsYXRpb25fZXhwcgorCQkJVEFC TEUgcmVsYXRpb25fZXhwciBPcHRXaGVyZUNsYXVzZQogCQkJCXsKIAkJCQkJJCQgPSBtYWtl Tm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJ Q0FUSU9OT0JKX1RBQkxFOwogCQkJCQkkJC0+cHVidGFibGUgPSBtYWtlTm9kZShQdWJsaWNh dGlvblRhYmxlKTsKIAkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9ICQyOworCQkJCQkk JC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDM7CiAJCQkJfQogCQkJfCBBTEwgVEFCTEVT IElOX1AgU0NIRU1BIENvbElkCiAJCQkJewpAQCAtOTc2MiwyOCArOTc2Myw0NSBAQCBQdWJs aWNhdGlvbk9ialNwZWM6CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05PQkpf VEFCTEVfSU5fQ1VSX1NDSEVNQTsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDU7CiAJCQkJfQot CQkJfCBDb2xJZAorCQkJfCBDb2xJZCBPcHRXaGVyZUNsYXVzZQogCQkJCXsKIAkJCQkJJCQg PSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+cHVib2JqdHlwZSA9 IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKLQkJCQkJJCQtPm5hbWUgPSAkMTsKKwkJ CQkJaWYgKCQyKQorCQkJCQl7CisJCQkJCQkvKgorCQkJCQkJICogVGhlIE9wdFdoZXJlQ2xh dXNlIG11c3QgYmUgc3RvcmVkIGhlcmUgYnV0IGl0IGlzCisJCQkJCQkgKiB2YWxpZCBvbmx5 IGZvciB0YWJsZXMuIElmIHRoZSBDb2xJZCB3YXMgbWlzdGFrZW5seQorCQkJCQkJICogbm90 IGEgdGFibGUgdGhpcyB3aWxsIGJlIGRldGVjdGVkIGxhdGVyIGluCisJCQkJCQkgKiBwcmVw cm9jZXNzX3B1Ym9ial9saXN0KCkgYW5kIGFuIGVycm9yIGlzIHRocm93bi4KKwkJCQkJCSAq LworCQkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CisJ CQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gbWFrZVJhbmdlVmFyKE5VTEwsICQxLCBA MSk7CisJCQkJCQkkJC0+cHVidGFibGUtPndoZXJlQ2xhdXNlID0gJDI7CisJCQkJCX0KKwkJ CQkJZWxzZQorCQkJCQl7CisJCQkJCQkkJC0+bmFtZSA9ICQxOworCQkJCQl9CiAJCQkJCSQk LT5sb2NhdGlvbiA9IEAxOwogCQkJCX0KLQkJCXwgQ29sSWQgaW5kaXJlY3Rpb24KKwkJCXwg Q29sSWQgaW5kaXJlY3Rpb24gT3B0V2hlcmVDbGF1c2UKIAkJCQl7CiAJCQkJCSQkID0gbWFr ZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJM SUNBVElPTk9CSl9DT05USU5VQVRJT047CiAJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2Rl KFB1YmxpY2F0aW9uVGFibGUpOwogCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gbWFr ZVJhbmdlVmFyRnJvbVF1YWxpZmllZE5hbWUoJDEsICQyLCBAMSwgeXlzY2FubmVyKTsKKwkJ CQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQzOwogCQkJCQkkJC0+bG9jYXRpb24g PSBAMTsKIAkJCQl9CiAJCQkvKiBncmFtbWFyIGxpa2UgdGFibGVuYW1lICogLCBPTkxZIHRh YmxlbmFtZSwgT05MWSAoIHRhYmxlbmFtZSApICovCi0JCQl8IGV4dGVuZGVkX3JlbGF0aW9u X2V4cHIKKwkJCXwgZXh0ZW5kZWRfcmVsYXRpb25fZXhwciBPcHRXaGVyZUNsYXVzZQogCQkJ CXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJCQkkJC0+ cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKIAkJCQkJJCQtPnB1 YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CiAJCQkJCSQkLT5wdWJ0YWJs ZS0+cmVsYXRpb24gPSAkMTsKKwkJCQkJJCQtPnB1YnRhYmxlLT53aGVyZUNsYXVzZSA9ICQy OwogCQkJCX0KIAkJCXwgQ1VSUkVOVF9TQ0hFTUEKIAkJCQl7CkBAIC0xNzQzMSw3ICsxNzQ0 OSw4IEBAIHByZXByb2Nlc3NfcHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBj b3JlX3l5c2Nhbl90IHl5c2Nhbm5lcikKIAkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAogCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRhYmxlIG5hbWUgYXQgb3IgbmVhciIp LAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKLQkJCWVs c2UgaWYgKHB1Ym9iai0+bmFtZSkKKworCQkJaWYgKHB1Ym9iai0+bmFtZSkKIAkJCXsKIAkJ CQkvKiBjb252ZXJ0IGl0IHRvIFB1YmxpY2F0aW9uVGFibGUgKi8KIAkJCQlQdWJsaWNhdGlv blRhYmxlICpwdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwpAQCAtMTc0 NDQsNiArMTc0NjMsMTMgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpz cGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQllbHNlIGlmIChwdWJvYmot PnB1Ym9ianR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEVfSU5fU0NIRU1BIHx8CiAJCQkJ IHB1Ym9iai0+cHVib2JqdHlwZSA9PSBQVUJMSUNBVElPTk9CSl9UQUJMRV9JTl9DVVJfU0NI RU1BKQogCQl7CisJCQkvKiBXSEVSRSBjbGF1c2UgaXMgbm90IGFsbG93ZWQgb24gYSBzY2hl bWEgb2JqZWN0ICovCisJCQlpZiAocHVib2JqLT5wdWJ0YWJsZSAmJiBwdWJvYmotPnB1YnRh YmxlLT53aGVyZUNsYXVzZSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJtc2coIldIRVJFIGNsYXVzZSBmb3Ig c2NoZW1hIG5vdCBhbGxvd2VkIiksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHVib2Jq LT5sb2NhdGlvbikpOworCiAJCQkvKgogCQkJICogV2UgY2FuIGRpc3Rpbmd1aXNoIGJldHdl ZW4gdGhlIGRpZmZlcmVudCB0eXBlIG9mIHNjaGVtYQogCQkJICogb2JqZWN0cyBiYXNlZCBv biB3aGV0aGVyIG5hbWUgYW5kIHB1YnRhYmxlIGlzIHNldC4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9h Z2cuYwppbmRleCA3ZDgyOWEwNWE5Li4xOTNjODdkOGI3IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2FnZy5jCkBAIC01NTEsNiArNTUxLDEzIEBAIGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3Ry YWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJCWVyciA9IF8oImdy b3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIENPUFkgRlJPTSBXSEVSRSBj b25kaXRpb25zIik7CiAKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9QVUJMSUNBVElP Tl9XSEVSRToKKwkJCWlmIChpc0FnZykKKwkJCQllcnIgPSBfKCJhZ2dyZWdhdGUgZnVuY3Rp b25zIGFyZSBub3QgYWxsb3dlZCBpbiBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9ucyIp OworCQkJZWxzZQorCQkJCWVyciA9IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBh bGxvd2VkIGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb25zIik7CisKKwkJCWJyZWFr OwogCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsK QEAgLTk0Myw2ICs5NTAsOSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRl ICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9N QVJLOgogCQkJZXJya2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRf UFVCTElDQVRJT05fV0hFUkU6CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBu b3QgYWxsb3dlZCBpbiBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9ucyIpOworCQkJYnJl YWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6 IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4 IDJkMWE0NzcxNTQuLjNkNDM4MzliMzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpA QCAtMjAwLDggKzIwMCwxOSBAQCB0cmFuc2Zvcm1FeHByUmVjdXJzZShQYXJzZVN0YXRlICpw c3RhdGUsIE5vZGUgKmV4cHIpCiAJCQlicmVhazsKIAogCQljYXNlIFRfRnVuY0NhbGw6Ci0J CQlyZXN1bHQgPSB0cmFuc2Zvcm1GdW5jQ2FsbChwc3RhdGUsIChGdW5jQ2FsbCAqKSBleHBy KTsKLQkJCWJyZWFrOworCQkJeworCQkJCS8qCisJCQkJICogRm9yYmlkIGZ1bmN0aW9ucyBp biBwdWJsaWNhdGlvbiBXSEVSRSBjb25kaXRpb24KKwkJCQkgKi8KKwkJCQlpZiAocHN0YXRl LT5wX2V4cHJfa2luZCA9PSBFWFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkUpCisJCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCQkJCSBlcnJtc2coImZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g cHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbnMiKSwKKwkJCQkJCQkgcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSkpOworCisJCQkJcmVzdWx0ID0g dHJhbnNmb3JtRnVuY0NhbGwocHN0YXRlLCAoRnVuY0NhbGwgKikgZXhwcik7CisJCQkJYnJl YWs7CisJCQl9CiAKIAkJY2FzZSBUX011bHRpQXNzaWduUmVmOgogCQkJcmVzdWx0ID0gdHJh bnNmb3JtTXVsdGlBc3NpZ25SZWYocHN0YXRlLCAoTXVsdGlBc3NpZ25SZWYgKikgZXhwcik7 CkBAIC01MDQsNiArNTE1LDcgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ29sdW1uUmVmICpjcmVmKQogCQljYXNlIEVYUFJfS0lORF9DT1BZX1dIRVJFOgog CQljYXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgogCQljYXNlIEVYUFJfS0lORF9D WUNMRV9NQVJLOgorCQljYXNlIEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToKIAkJCS8q IG9rYXkgKi8KIAkJCWJyZWFrOwogCkBAIC0xNzY0LDYgKzE3NzYsOSBAQCB0cmFuc2Zvcm1T dWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJY2FzZSBF WFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoKIAkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3Vi cXVlcnkgaW4gY29sdW1uIGdlbmVyYXRpb24gZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CisJ CWNhc2UgRVhQUl9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJFOgorCQkJZXJyID0gXygiY2Fubm90 IHVzZSBzdWJxdWVyeSBpbiBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9uIik7CisJCQli cmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVs dDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtMzA4NCw2ICszMDk5LDggQEAgUGFyc2VF eHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2luZCkKIAkJCXJldHVybiAiR0VORVJB VEVEIEFTIjsKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCXJldHVybiAiQ1lD TEUiOworCQljYXNlIEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToKKwkJCXJldHVybiAi cHVibGljYXRpb24gZXhwcmVzc2lvbiI7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRl bnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZnVuYy5jCmluZGV4IDU0MmY5MTY3YWEuLjI5YmViYjczZWIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjY1NSw2ICsyNjU1LDkgQEAgY2hlY2tfc3JmX2Nh bGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBs b2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtpbmQgPSB0 cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJFOgor CQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGlu IHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb25zIik7CisJCQlicmVhazsKIAogCQkJLyoK IAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBz byB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKaW5kZXggYmMzNGEyM2FmYy4u MjlmODgzNWNlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vfb3Blci5jCkBAIC03MTgsNiArNzE4 LDEzIEBAIG1ha2Vfb3AoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcG5hbWUsIE5vZGUg Kmx0cmVlLCBOb2RlICpydHJlZSwKIAkJCQkJCQkJCQkJb3Bmb3JtLT5vcHJyaWdodCkpLAog CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKIAorCS8qIENo ZWNrIGl0J3Mgbm90IGEgY3VzdG9tIG9wZXJhdG9yIGZvciBwdWJsaWNhdGlvbiBXSEVSRSBl eHByZXNzaW9ucyAqLworCWlmIChwc3RhdGUtPnBfZXhwcl9raW5kID09IEVYUFJfS0lORF9Q VUJMSUNBVElPTl9XSEVSRSAmJiBvcGZvcm0tPm9pZCA+PSBGaXJzdE5vcm1hbE9iamVjdElk KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJ1c2VyLWRlZmluZWQgb3BlcmF0b3JzIGFyZSBu b3QgYWxsb3dlZCBpbiBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9ucyIpLAorCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKKwogCS8qIERvIHR5cGVj YXN0aW5nIGFuZCBidWlsZCB0aGUgZXhwcmVzc2lvbiB0cmVlICovCiAJaWYgKGx0cmVlID09 IE5VTEwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0 aW9uLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRleCBjNWMz ZjI2ZWNmLi4wMzZkOWM2ZDI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24u YwpAQCAtMzUzOCwxMSArMzUzOCwyMCBAQCBlcnJvck1pc3NpbmdSVEUoUGFyc2VTdGF0ZSAq cHN0YXRlLCBSYW5nZVZhciAqcmVsYXRpb24pCiAJCQkJCQkgIHJ0ZS0+ZXJlZi0+YWxpYXNu YW1lKSksCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHJlbGF0aW9uLT5sb2Nh dGlvbikpKTsKIAllbHNlCisJeworCQlpZiAocHN0YXRlLT5wX2V4cHJfa2luZCA9PSBFWFBS X0tJTkRfUFVCTElDQVRJT05fV0hFUkUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCisJCQkJCSBlcnJtc2coInB1YmxpY2F0 aW9uIFdIRVJFIGV4cHJlc3Npb24gaW52YWxpZCByZWZlcmVuY2UgdG8gdGFibGUgXCIlc1wi IiwKKwkJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRp b24ocHN0YXRlLCByZWxhdGlvbi0+bG9jYXRpb24pKSk7CisKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9UQUJMRSksCiAJCQkJIGVycm1zZygi bWlzc2luZyBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFibGUgXCIlc1wiIiwKIAkJCQkJCXJl bGF0aW9uLT5yZWxuYW1lKSwKIAkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgcmVs YXRpb24tPmxvY2F0aW9uKSkpOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IGYwNzk4M2E0M2MuLmMyMGMyMjE5 ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMu YwpAQCAtNjg3LDIwICs2ODcsMjQgQEAgY29weV9yZWFkX2RhdGEodm9pZCAqb3V0YnVmLCBp bnQgbWlucmVhZCwgaW50IG1heHJlYWQpCiAKIAogLyoKLSAqIEdldCBpbmZvcm1hdGlvbiBh Ym91dCByZW1vdGUgcmVsYXRpb24gaW4gc2ltaWxhciBmYXNoaW9uIHRoZSBSRUxBVElPTgot ICogbWVzc2FnZSBwcm92aWRlcyBkdXJpbmcgcmVwbGljYXRpb24uCisgKiBHZXQgaW5mb3Jt YXRpb24gYWJvdXQgYSByZW1vdGUgcmVsYXRpb24sIGluIGEgc2ltaWxhciBmYXNoaW9uIHRv IGhvdyB0aGUKKyAqIFJFTEFUSU9OIG1lc3NhZ2UgcHJvdmlkZXMgaW5mb3JtYXRpb24gZHVy aW5nIHJlcGxpY2F0aW9uLiBUaGlzIGZ1bmN0aW9uIGFsc28KKyAqIHJldHVybnMgdGhlIHJl bGF0aW9uIHF1YWxpZmljYXRpb25zIHRvIGJlIHVzZWQgaW4gdGhlIENPUFkgY29tbWFuZC4K ICAqLwogc3RhdGljIHZvaWQKIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5h bWUsIGNoYXIgKnJlbG5hbWUsCi0JCQkJCQlMb2dpY2FsUmVwUmVsYXRpb24gKmxyZWwpCisJ CQkJCQlMb2dpY2FsUmVwUmVsYXRpb24gKmxyZWwsIExpc3QgKipxdWFsKQogewogCVdhbFJj dkV4ZWNSZXN1bHQgKnJlczsKIAlTdHJpbmdJbmZvRGF0YSBjbWQ7CiAJVHVwbGVUYWJsZVNs b3QgKnNsb3Q7CiAJT2lkCQkJdGFibGVSb3dbXSA9IHtPSURPSUQsIENIQVJPSUQsIENIQVJP SUR9OwogCU9pZAkJCWF0dHJSb3dbXSA9IHtURVhUT0lELCBPSURPSUQsIEJPT0xPSUR9Owor CU9pZAkJCXF1YWxSb3dbXSA9IHtURVhUT0lEfTsKIAlib29sCQlpc251bGw7CiAJaW50CQkJ bmF0dDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlib29sCQlmaXJzdDsKIAogCWxyZWwtPm5zcG5h bWUgPSBuc3BuYW1lOwogCWxyZWwtPnJlbG5hbWUgPSByZWxuYW1lOwpAQCAtNzk2LDYgKzgw MCw4MCBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpy ZWxuYW1lLAogCWxyZWwtPm5hdHRzID0gbmF0dDsKIAogCXdhbHJjdl9jbGVhcl9yZXN1bHQo cmVzKTsKKworCS8qCisJICogR2V0IHJlbGF0aW9uIHF1YWwuIERJU1RJTkNUIGF2b2lkcyB0 aGUgc2FtZSBleHByZXNzaW9uIG9mIGEgdGFibGUgaW4KKwkgKiBtdWx0aXBsZSBwdWJsaWNh dGlvbnMgZnJvbSBiZWluZyBpbmNsdWRlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgZmluYWwK KwkgKiBleHByZXNzaW9uLgorCSAqLworCWlmICh3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9n UmVwV29ya2VyV2FsUmN2Q29ubikgPj0gMTUwMDAwKQorCXsKKwkJcmVzZXRTdHJpbmdJbmZv KCZjbWQpOworCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsCisJCQkJCQkgIlNFTEVDVCBESVNU SU5DVCBwZ19nZXRfZXhwcihwcnF1YWwsIHBycmVsaWQpICIKKwkJCQkJCSAiICBGUk9NIHBn X3B1YmxpY2F0aW9uIHAgIgorCQkJCQkJICIgIElOTkVSIEpPSU4gcGdfcHVibGljYXRpb25f cmVsIHByICIKKwkJCQkJCSAiICAgICAgIE9OIChwLm9pZCA9IHByLnBycHViaWQpICIKKwkJ CQkJCSAiIFdIRVJFIHByLnBycmVsaWQgPSAldSAiCisJCQkJCQkgIiAgIEFORCBwLnB1Ym5h bWUgSU4gKCIsIGxyZWwtPnJlbW90ZWlkKTsKKworCQlmaXJzdCA9IHRydWU7CisJCWZvcmVh Y2gobGMsIE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlvbnMpCisJCXsKKwkJCWNoYXIJICAg KnB1Ym5hbWUgPSBzdHJWYWwobGZpcnN0KGxjKSk7CisKKwkJCWlmIChmaXJzdCkKKwkJCQlm aXJzdCA9IGZhbHNlOworCQkJZWxzZQorCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNt ZCwgIiwgIik7CisKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgcXVvdGVfbGl0 ZXJhbF9jc3RyKHB1Ym5hbWUpKTsKKwkJfQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmY21k LCAnKScpOworCisJCXJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4s IGNtZC5kYXRhLCAxLCBxdWFsUm93KTsKKworCQlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNW X09LX1RVUExFUykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coImNvdWxkIG5v dCBmZXRjaCByZWxhdGlvbiBxdWFsaWZpY2F0aW9ucyBmb3IgdGFibGUgXCIlcy4lc1wiIGZy b20gcHVibGlzaGVyOiAlcyIsCisJCQkJCQkJbnNwbmFtZSwgcmVsbmFtZSwgcmVzLT5lcnIp KSk7CisKKwkJLyoKKwkJICogTXVsdGlwbGUgcm93IGZpbHRlciBleHByZXNzaW9ucyBmb3Ig dGhlIHNhbWUgdGFibGUgd2lsbCBiZSBjb21iaW5lZAorCQkgKiBieSBDT1BZIHVzaW5nIE9S LiBJZiBhbnkgb2YgdGhlIGZpbHRlciBleHByZXNzaW9ucyBmb3IgdGhpcyB0YWJsZSBhcmUK KwkJICogbnVsbCwgaXQgbWVhbnMgdGhlIHdob2xlIHRhYmxlIHdpbGwgYmUgY29waWVkLiBJ biB0aGlzIGNhc2UgaXQgaXMgbm90CisJCSAqIG5lY2Vzc2FyeSB0byBjb25zdHJ1Y3QgYSB1 bmlmaWVkIHJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBhdCBhbGwuCisJCSAqLworCQlzbG90ID0g TWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1h bFR1cGxlKTsKKwkJd2hpbGUgKHR1cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVwbGVz dG9yZSwgdHJ1ZSwgZmFsc2UsIHNsb3QpKQorCQl7CisJCQlEYXR1bQkJcmYgPSBzbG90X2dl dGF0dHIoc2xvdCwgMSwgJmlzbnVsbCk7CisKKwkJCWlmICghaXNudWxsKQorCQkJCSpxdWFs ID0gbGFwcGVuZCgqcXVhbCwgbWFrZVN0cmluZyhUZXh0RGF0dW1HZXRDU3RyaW5nKHJmKSkp OworCisJCQlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKworCQkJLyoKKwkJCSAqIE9uZSBlbnRy eSB3aXRob3V0IGEgcm93IGZpbHRlciBleHByZXNzaW9uIG1lYW5zIGNsZWFuIHVwCisJCQkg KiBwcmV2aW91cyBleHByZXNzaW9ucyAoaWYgdGhlcmUgYXJlIGFueSkgYW5kIHJldHVybiB3 aXRoIG5vCisJCQkgKiBleHByZXNzaW9ucy4KKwkJCSAqLworCQkJaWYgKGlzbnVsbCkKKwkJ CXsKKwkJCQlpZiAoKnF1YWwpCisJCQkJeworCQkJCQlsaXN0X2ZyZWVfZGVlcCgqcXVhbCk7 CisJCQkJCSpxdWFsID0gTklMOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlF eGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KHNsb3QpOworCisJCXdhbHJjdl9jbGVhcl9y ZXN1bHQocmVzKTsKKwl9CisKIAlwZnJlZShjbWQuZGF0YSk7CiB9CiAKQEAgLTgwOSw2ICs4 ODcsNyBAQCBjb3B5X3RhYmxlKFJlbGF0aW9uIHJlbCkKIHsKIAlMb2dpY2FsUmVwUmVsTWFw RW50cnkgKnJlbG1hcGVudHJ5OwogCUxvZ2ljYWxSZXBSZWxhdGlvbiBscmVsOworCUxpc3QJ ICAgKnF1YWwgPSBOSUw7CiAJV2FsUmN2RXhlY1Jlc3VsdCAqcmVzOwogCVN0cmluZ0luZm9E YXRhIGNtZDsKIAlDb3B5RnJvbVN0YXRlIGNzdGF0ZTsKQEAgLTgxNyw3ICs4OTYsNyBAQCBj b3B5X3RhYmxlKFJlbGF0aW9uIHJlbCkKIAogCS8qIEdldCB0aGUgcHVibGlzaGVyIHJlbGF0 aW9uIGluZm8uICovCiAJZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oZ2V0X25hbWVzcGFjZV9u YW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpLAotCQkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCksICZscmVsKTsKKwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpLCAmbHJlbCwgJnF1YWwpOwogCiAJLyogUHV0IHRoZSByZWxhdGlvbiBpbnRvIHJl bG1hcC4gKi8KIAlsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoJmxyZWwpOwpAQCAtODI4LDE0 ICs5MDcsMTggQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwpCiAKIAkvKiBTdGFydCBjb3B5 IG9uIHRoZSBwdWJsaXNoZXIuICovCiAJaW5pdFN0cmluZ0luZm8oJmNtZCk7Ci0JaWYgKGxy ZWwucmVsa2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OKQorCisJLyogUmVndWxhciB0YWJsZSB3 aXRoIG5vIHJvdyBmaWx0ZXIgKi8KKwlpZiAobHJlbC5yZWxraW5kID09IFJFTEtJTkRfUkVM QVRJT04gJiYgcXVhbCA9PSBOSUwpCiAJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIkNPUFkg JXMgVE8gU1RET1VUIiwKIAkJCQkJCSBxdW90ZV9xdWFsaWZpZWRfaWRlbnRpZmllcihscmVs Lm5zcG5hbWUsIGxyZWwucmVsbmFtZSkpOwogCWVsc2UKIAl7CiAJCS8qCiAJCSAqIEZvciBu b24tdGFibGVzLCB3ZSBuZWVkIHRvIGRvIENPUFkgKFNFTEVDVCAuLi4pLCBidXQgd2UgY2Fu J3QganVzdAotCQkgKiBkbyBTRUxFQ1QgKiBiZWNhdXNlIHdlIG5lZWQgdG8gbm90IGNvcHkg Z2VuZXJhdGVkIGNvbHVtbnMuCisJCSAqIGRvIFNFTEVDVCAqIGJlY2F1c2Ugd2UgbmVlZCB0 byBub3QgY29weSBnZW5lcmF0ZWQgY29sdW1ucy4gRm9yCisJCSAqIHRhYmxlcyB3aXRoIGFu eSByb3cgZmlsdGVycywgYnVpbGQgYSBTRUxFQ1QgcXVlcnkgd2l0aCBPUidlZCByb3cKKwkJ ICogZmlsdGVycyBmb3IgQ09QWS4KIAkJICovCiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco JmNtZCwgIkNPUFkgKFNFTEVDVCAiKTsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBscmVsLm5h dHRzOyBpKyspCkBAIC04NDQsOCArOTI3LDI5IEBAIGNvcHlfdGFibGUoUmVsYXRpb24gcmVs KQogCQkJaWYgKGkgPCBscmVsLm5hdHRzIC0gMSkKIAkJCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZjbWQsICIsICIpOwogCQl9Ci0JCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIiBGUk9N ICVzKSBUTyBTVERPVVQiLAorCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICIgRlJPTSAlcyIs CiAJCQkJCQkgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIobHJlbC5uc3BuYW1lLCBscmVs LnJlbG5hbWUpKTsKKwkJLyogbGlzdCBvZiBPUidlZCBmaWx0ZXJzICovCisJCWlmIChxdWFs ICE9IE5JTCkKKwkJeworCQkJTGlzdENlbGwgICAqbGM7CisJCQlib29sCQlmaXJzdCA9IHRy dWU7CisKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiBXSEVSRSAiKTsKKwkJ CWZvcmVhY2gobGMsIHF1YWwpCisJCQl7CisJCQkJY2hhcgkgICAqcSA9IHN0clZhbChsZmly c3QobGMpKTsKKworCQkJCWlmIChmaXJzdCkKKwkJCQkJZmlyc3QgPSBmYWxzZTsKKwkJCQll bHNlCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiBPUiAiKTsKKwkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsIHEpOworCQkJfQorCQkJbGlzdF9mcmVlX2Rl ZXAocXVhbCk7CisJCX0KKworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIpIFRP IFNURE9VVCIpOwogCX0KIAlyZXMgPSB3YWxyY3ZfZXhlYyhMb2dSZXBXb3JrZXJXYWxSY3ZD b25uLCBjbWQuZGF0YSwgMCwgTlVMTCk7CiAJcGZyZWUoY21kLmRhdGEpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggNmY2YTIwM2Rl YS4uMmZhMDhlNzI3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jCkBAIC0xNSwxNiArMTUsMjQgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHVw Y29udmVydC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGFydGl0aW9uLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGlj YXRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCisjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibm9k ZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVk ZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2Vy Y2UuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCiAjaW5jbHVkZSAicmVw bGljYXRpb24vbG9naWNhbHByb3RvLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2lu LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vcGdvdXRwdXQuaCIKKyNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ludDguaCIKICNpbmNsdWRlICJ1dGls cy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUg InV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdmFybGVuYS5oIgogCkBAIC0x MTUsNiArMTIzLDI0IEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uU3luY0VudHJ5CiAJYm9v bAkJcmVwbGljYXRlX3ZhbGlkOwogCVB1YmxpY2F0aW9uQWN0aW9ucyBwdWJhY3Rpb25zOwog CisJLyoKKwkgKiBFeHByU3RhdGUgY2Fubm90IGJlIHVzZWQgdG8gaW5kaWNhdGUgbm8gY2Fj aGUsIGludmFsaWQgY2FjaGUgYW5kIHZhbGlkCisJICogY2FjaGUsIHNvIHRoZSBmbGFnIGV4 cHJzdGF0ZV92YWxpZCBpbmRpY2F0ZXMgaWYgdGhlIGN1cnJlbnQgY2FjaGUgaXMKKwkgKiB2 YWxpZC4KKwkgKgorCSAqIE11bHRpcGxlIEV4cHJTdGF0ZSBlbnRyaWVzIG1pZ2h0IGJlIHVz ZWQgaWYgdGhlcmUgYXJlIG11bHRpcGxlCisJICogcHVibGljYXRpb25zIGZvciBhIHNpbmds ZSB0YWJsZS4gRGlmZmVyZW50IHB1YmxpY2F0aW9uIGFjdGlvbnMgZG9uJ3QKKwkgKiBhbGxv dyBtdWx0aXBsZSBleHByZXNzaW9ucyB0byBhbHdheXMgYmUgY29tYmluZWQgaW50byBvbmUs IHNvIHRoZXJlIGlzCisJICogb25lIEV4cHJTVGF0ZSBwZXIgcHVibGljYXRpb24gYWN0aW9u LiBPbmx5IDMgcHVibGljYXRpb24gYWN0aW9ucyBhcmUgdXNlZAorCSAqIGZvciByb3cgZmls dGVyaW5nICgiaW5zZXJ0IiwgInVwZGF0ZSIsICJkZWxldGUiKS4gVGhlIGV4cHJzdGF0ZSBh cnJheSBpcworCSAqIGluZGV4ZWQgYnkgUmVvcmRlckJ1ZmZlckNoYW5nZVR5cGUuCisJICov CisJYm9vbAkJZXhwcnN0YXRlX3ZhbGlkOworI2RlZmluZSBJRFhfUFVCQUNUSU9OX24JCSAJ MworCUV4cHJTdGF0ZQkgICAqZXhwcnN0YXRlW0lEWF9QVUJBQ1RJT05fbl07CS8qIEV4cHJT dGF0ZSBhcnJheSBmb3Igcm93IGZpbHRlci4KKwkJCQkJCQkJCQkJCSAgIE9uZSBwZXIgcHVi bGljYXRpb24gYWN0aW9uLiAqLworCVR1cGxlVGFibGVTbG90ICpzY2FudHVwbGU7CQkvKiB0 dXBsZSB0YWJsZSBzbG90IGZvciByb3cgZmlsdGVyICovCisKIAkvKgogCSAqIE9JRCBvZiB0 aGUgcmVsYXRpb24gdG8gcHVibGlzaCBjaGFuZ2VzIGFzLiAgRm9yIGEgcGFydGl0aW9uLCB0 aGlzIG1heQogCSAqIGJlIHNldCB0byBvbmUgb2YgaXRzIGFuY2VzdG9ycyB3aG9zZSBzY2hl bWEgd2lsbCBiZSB1c2VkIHdoZW4KQEAgLTEzNyw3ICsxNjMsNyBAQCBzdGF0aWMgSFRBQiAq UmVsYXRpb25TeW5jQ2FjaGUgPSBOVUxMOwogCiBzdGF0aWMgdm9pZCBpbml0X3JlbF9zeW5j X2NhY2hlKE1lbW9yeUNvbnRleHQgZGVjb2RpbmdfY29udGV4dCk7CiBzdGF0aWMgdm9pZCBj bGVhbnVwX3JlbF9zeW5jX2NhY2hlKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGlzX2NvbW1p dCk7Ci1zdGF0aWMgUmVsYXRpb25TeW5jRW50cnkgKmdldF9yZWxfc3luY19lbnRyeShQR091 dHB1dERhdGEgKmRhdGEsIE9pZCByZWxpZCk7CitzdGF0aWMgUmVsYXRpb25TeW5jRW50cnkg KmdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0 aW9uKTsKIHN0YXRpYyB2b2lkIHJlbF9zeW5jX2NhY2hlX3JlbGF0aW9uX2NiKERhdHVtIGFy ZywgT2lkIHJlbGlkKTsKIHN0YXRpYyB2b2lkIHJlbF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9u X2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsCiAJCQkJCQkJCQkJICB1aW50MzIgaGFzaHZh bHVlKTsKQEAgLTE0Niw2ICsxNzIsMTQgQEAgc3RhdGljIHZvaWQgc2V0X3NjaGVtYV9zZW50 X2luX3N0cmVhbWVkX3R4bihSZWxhdGlvblN5bmNFbnRyeSAqZW50cnksCiBzdGF0aWMgYm9v bCBnZXRfc2NoZW1hX3NlbnRfaW5fc3RyZWFtZWRfdHhuKFJlbGF0aW9uU3luY0VudHJ5ICpl bnRyeSwKIAkJCQkJCQkJCQkJVHJhbnNhY3Rpb25JZCB4aWQpOwogCisvKiByb3cgZmlsdGVy IHJvdXRpbmVzICovCitzdGF0aWMgRVN0YXRlICpjcmVhdGVfZXN0YXRlX2Zvcl9yZWxhdGlv bihSZWxhdGlvbiByZWwpOworc3RhdGljIEV4cHJTdGF0ZSAqcGdvdXRwdXRfcm93X2ZpbHRl cl9pbml0X2V4cHIoTm9kZSAqcmZub2RlKTsKK3N0YXRpYyBib29sIHBnb3V0cHV0X3Jvd19m aWx0ZXJfZXhlY19leHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4 dCk7CitzdGF0aWMgYm9vbCBwZ291dHB1dF9yb3dfZmlsdGVyKGVudW0gUmVvcmRlckJ1ZmZl ckNoYW5nZVR5cGUgY2hhbmdldHlwZSwgUEdPdXRwdXREYXRhICpkYXRhLAorCQkJCQkJCQlS ZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIG9sZHR1cGxlLAorCQkJCQkJCQlIZWFwVHVw bGUgbmV3dHVwbGUsIFJlbGF0aW9uU3luY0VudHJ5ICplbnRyeSk7CisKIC8qCiAgKiBTcGVj aWZ5IG91dHB1dCBwbHVnaW4gY2FsbGJhY2tzCiAgKi8KQEAgLTYyMCw2ICs2NTQsMzE2IEBA IHNlbmRfcmVsYXRpb25fYW5kX2F0dHJzKFJlbGF0aW9uIHJlbGF0aW9uLCBUcmFuc2FjdGlv bklkIHhpZCwKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIGZhbHNlKTsKIH0KIAorLyoKKyAq IEV4ZWN1dG9yIHN0YXRlIHByZXBhcmF0aW9uIGZvciBldmFsdWF0aW9uIG9mIHJvdyBmaWx0 ZXIgZXhwcmVzc2lvbnMgZm9yIHRoZQorICogc3BlY2lmaWVkIHJlbGF0aW9uLgorICovCitz dGF0aWMgRVN0YXRlICoKK2NyZWF0ZV9lc3RhdGVfZm9yX3JlbGF0aW9uKFJlbGF0aW9uIHJl bCkKK3sKKwlFU3RhdGUJCQkqZXN0YXRlOworCVJhbmdlVGJsRW50cnkJKnJ0ZTsKKworCWVz dGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCXJ0ZSA9IG1ha2VOb2RlKFJhbmdl VGJsRW50cnkpOworCXJ0ZS0+cnRla2luZCA9IFJURV9SRUxBVElPTjsKKwlydGUtPnJlbGlk ID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOworCXJ0ZS0+cmVsa2luZCA9IHJlbC0+cmRfcmVs LT5yZWxraW5kOworCXJ0ZS0+cmVsbG9ja21vZGUgPSBBY2Nlc3NTaGFyZUxvY2s7CisJRXhl Y0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgbGlzdF9tYWtlMShydGUpKTsKKworCWVzdGF0ZS0+ ZXNfb3V0cHV0X2NpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQoZmFsc2UpOworCisJcmV0dXJu IGVzdGF0ZTsKK30KKworLyoKKyAqIEluaXRpYWxpemUgZm9yIHJvdyBmaWx0ZXIgZXhwcmVz c2lvbiBleGVjdXRpb24uCisgKi8KK3N0YXRpYyBFeHByU3RhdGUgKgorcGdvdXRwdXRfcm93 X2ZpbHRlcl9pbml0X2V4cHIoTm9kZSAqcmZub2RlKQoreworCUV4cHJTdGF0ZQkgICAqZXhw cnN0YXRlOworCU9pZAkJCQlleHBydHlwZTsKKwlFeHByCQkgICAqZXhwcjsKKworCS8qIENh Y2hlIEV4cHJTdGF0ZSB1c2luZyBDYWNoZU1lbW9yeUNvbnRleHQuICovCisJQXNzZXJ0KEN1 cnJlbnRNZW1vcnlDb250ZXh0ID0gQ2FjaGVNZW1vcnlDb250ZXh0KTsKKworCS8qIFByZXBh cmUgZXhwcmVzc2lvbiBmb3IgZXhlY3V0aW9uICovCisJZXhwcnR5cGUgPSBleHByVHlwZShy Zm5vZGUpOworCWV4cHIgPSAoRXhwciAqKSBjb2VyY2VfdG9fdGFyZ2V0X3R5cGUoTlVMTCwg cmZub2RlLCBleHBydHlwZSwgQk9PTE9JRCwgLTEsIENPRVJDSU9OX0FTU0lHTk1FTlQsIENP RVJDRV9JTVBMSUNJVF9DQVNULCAtMSk7CisKKwlpZiAoZXhwciA9PSBOVUxMKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCisJCQkJ IGVycm1zZygicm93IGZpbHRlciByZXR1cm5zIHR5cGUgJXMgdGhhdCBjYW5ub3QgYmUgY2Fz dCB0byB0aGUgZXhwZWN0ZWQgdHlwZSAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBy dHlwZSksCisJCQkJCQlmb3JtYXRfdHlwZV9iZShCT09MT0lEKSksCisJCQkJIGVycmhpbnQo IllvdSB3aWxsIG5lZWQgdG8gcmV3cml0ZSB0aGUgcm93IGZpbHRlci4iKSkpOworCisJLyoK KwkgKiBUaGlzIGlzIHRoZSBzYW1lIGNvZGUgYXMgRXhlY1ByZXBhcmVFeHByKCkgYnV0IHRo YXQgaXMgbm90IHVzZWQgYmVjYXVzZQorCSAqIHdlIGhhdmUgbm8gRVN0YXRlIHRvIHBhc3Mg aXQuIFRoZXJlIHNob3VsZCBwcm9iYWJseSBiZSBhbm90aGVyIGZ1bmN0aW9uCisJICogaW4g dGhlIGV4ZWN1dG9yIHRvIGhhbmRsZSB0aGUgZXhlY3V0aW9uIG91dHNpZGUgYSBub3JtYWwg UGxhbiB0cmVlCisJICogY29udGV4dC4KKwkgKi8KKwlleHByID0gZXhwcmVzc2lvbl9wbGFu bmVyKGV4cHIpOworCWV4cHJzdGF0ZSA9IEV4ZWNJbml0RXhwcihleHByLCBOVUxMKTsKKwor CXJldHVybiBleHByc3RhdGU7Cit9CisKKy8qCisgKiBFdmFsdWF0ZXMgcm93IGZpbHRlci4K KyAqCisgKiBJZiB0aGUgcm93IGZpbHRlciBldmFsdWF0ZXMgdG8gTlVMTCwgaXQgaXMgdGFr ZW4gYXMgZmFsc2UgaS5lLiB0aGUgY2hhbmdlCisgKiBpc24ndCByZXBsaWNhdGVkLgorICov CitzdGF0aWMgYm9vbAorcGdvdXRwdXRfcm93X2ZpbHRlcl9leGVjX2V4cHIoRXhwclN0YXRl ICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCURhdHVtCQlyZXQ7CisJYm9v bAkJaXNudWxsOworCisJQXNzZXJ0KHN0YXRlICE9IE5VTEwpOworCisJcmV0ID0gRXhlY0V2 YWxFeHByU3dpdGNoQ29udGV4dChzdGF0ZSwgZWNvbnRleHQsICZpc251bGwpOworCisJZWxv ZyhERUJVRzMsICJyb3cgZmlsdGVyIGV2YWx1YXRlcyB0byAlcyAoaXNudWxsOiAlcykiLAor CQkgRGF0dW1HZXRCb29sKHJldCkgPyAidHJ1ZSIgOiAiZmFsc2UiLAorCQkgaXNudWxsID8g InRydWUiIDogImZhbHNlIik7CisKKwlpZiAoaXNudWxsKQorCQlyZXR1cm4gZmFsc2U7CisK KwlyZXR1cm4gRGF0dW1HZXRCb29sKHJldCk7Cit9CisKKy8qCisgKiBDaGFuZ2UgaXMgY2hl Y2tlZCBhZ2FpbnN0IHRoZSByb3cgZmlsdGVyLCBpZiBhbnkuCisgKgorICogSWYgaXQgcmV0 dXJucyB0cnVlLCB0aGUgY2hhbmdlIGlzIHJlcGxpY2F0ZWQsIG90aGVyd2lzZSwgaXQgaXMg bm90LgorICovCitzdGF0aWMgYm9vbAorcGdvdXRwdXRfcm93X2ZpbHRlcihlbnVtIFJlb3Jk ZXJCdWZmZXJDaGFuZ2VUeXBlIGNoYW5nZXR5cGUsIFBHT3V0cHV0RGF0YSAqZGF0YSwKKwkJ CQkJUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSBvbGR0dXBsZSwgSGVhcFR1cGxlIG5l d3R1cGxlLAorCQkJCQlSZWxhdGlvblN5bmNFbnRyeSAqZW50cnkpCit7CisJRVN0YXRlCSAg ICplc3RhdGU7CisJRXhwckNvbnRleHQgKmVjeHQ7CisJTGlzdENlbGwgICAqbGM7CisJYm9v bAkJcmVzdWx0ID0gdHJ1ZTsKKwlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVs YXRpb24pOworCUxpc3QJICAgKnJmbm9kZXNbXSA9IHtOSUwsIE5JTCwgTklMfTsgLyogT25l IHBlciBwdWJhY3Rpb24gKi8KKwlib29sCQlub19maWx0ZXJbXSA9IHtmYWxzZSwgZmFsc2Us IGZhbHNlfTsgLyogT25lIHBlciBwdWJhY3Rpb24gKi8KKworCUFzc2VydChjaGFuZ2V0eXBl ID09IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlNFUlQgfHwKKwkJICAgY2hhbmdldHlwZSA9 PSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfVVBEQVRFIHx8CisJCSAgIGNoYW5nZXR5cGUgPT0g UkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RFTEVURSk7CisJLyoKKwkgKiBJZiB0aGUgcm93IGZp bHRlciBjYWNoaW5nIGlzIGN1cnJlbnRseSBmbGFnZ2VkICJpbnZhbGlkIiB0aGVuIGl0IG1l YW5zIHdlCisJICogZG9uJ3Qga25vdyB5ZXQgaWYgdGhlcmUgaXMvaXNuJ3QgYW55IHJvdyBm aWx0ZXJzIGZvciB0aGlzIHJlbGF0aW9uLgorCSAqCisJICogVGhpcyBjb2RlIGlzIHVzdWFs bHkgb25lLXRpbWUgZXhlY3V0aW9uLgorCSAqCisJICogTk9URTogVGhlIEV4cHJTdGF0ZSBj YWNoZSBjb3VsZCBoYXZlIGJlZW4gY3JlYXRlZCB1cC1mcm9udCBpbiB0aGUKKwkgKiBmdW5j dGlvbiBnZXRfcmVsX3N5bmNfZW50cnkoKSBpbnN0ZWFkIG9mIHRoZSBkZWZlcnJlZCBvbi10 aGUtZmx5CisJICogYXNzaWdubWVudCBiZWxvdy4gVGhlIHJlYXNvbiBmb3IgY2hvb3Npbmcg dG8gZG8gaXQgaGVyZSBpcyBiZWNhdXNlIHRoZXJlCisJICogYXJlIHNvbWUgc2NlbmFyaW9z IHdoZXJlIHRoZSBnZXRfcmVsX3N5bmNfZW50cnkoKSBpcyBjYWxsZWQgYnV0IHdoZXJlIGEK KwkgKiByb3cgd2lsbCBub3QgYmUgcHVibGlzaGVkLiBGb3IgZXhhbXBsZSwgZm9yIHRydW5j YXRlLCB3ZSBtYXkgbm90IG5lZWQKKwkgKiBhbnkgcm93IGV2YWx1YXRpb24sIHNvIHRoZXJl IGlzIG5vIG5lZWQgdG8gY29tcHV0ZSBpdC4gSXQgd291bGQgYWxzbyBiZQorCSAqIGEgd2Fz dGUgaWYgYW55IGVycm9yIGhhcHBlbnMgYmVmb3JlIGFjdHVhbGx5IGV2YWx1YXRpbmcgdGhl IGZpbHRlci4gQW5kCisJICogdG9tb3Jyb3cgdGhlcmUgY291bGQgYmUgb3RoZXIgb3BlcmF0 aW9ucyAod2hpY2ggdXNlIGdldF9yZWxfc3luY19lbnRyeSkKKwkgKiBidXQgd2hpY2ggZG9u J3QgbmVlZCB0byBidWlsZCBFeHByU3RhdGUuIEZ1cnRoZXJtb3JlLCBiZWNhdXNlIHRoZQor CSAqIGRlY2lzaW9uIHRvIHB1Ymxpc2ggb3Igbm90IGlzIG1hZGUgQUZURVIgdGhlIGNhbGwg dG8gZ2V0X3JlbF9zeW5jX2VudHJ5CisJICogaXQgbWF5IGJlIHRoYXQgdGhlIGZpbHRlciBl dmFsdWF0aW9uIGlzIG5vdCBuZWNlc3NhcnkgYXQgYWxsLiBTbyB0aGUKKwkgKiBkZWNpc2lv biB3YXMgdG8gZGVmZXIgdGhpcyBsb2dpYyB0byBsYXN0IG1vbWVudCB3aGVuIHdlIGtub3cg aXQgd2lsbCBiZQorCSAqIG5lZWRlZC4KKwkgKi8KKwlpZiAoIWVudHJ5LT5leHByc3RhdGVf dmFsaWQpCisJeworCQlNZW1vcnlDb250ZXh0CW9sZGN0eDsKKwkJaW50CQkJCWlkeDsKKwkJ Ym9vbAkJCWZvdW5kX2ZpbHRlcnMgPSBmYWxzZTsKKwkJaW50CQkJCWlkeF9pbnMgPSBSRU9S REVSX0JVRkZFUl9DSEFOR0VfSU5TRVJUOworCQlpbnQJCQkJaWR4X3VwZCA9IFJFT1JERVJf QlVGRkVSX0NIQU5HRV9VUERBVEU7CisJCWludAkJCQlpZHhfZGVsID0gUkVPUkRFUl9CVUZG RVJfQ0hBTkdFX0RFTEVURTsKKworCQkvKgorCQkgKiBGaW5kIGlmIHRoZXJlIGFyZSBhbnkg cm93IGZpbHRlcnMgZm9yIHRoaXMgcmVsYXRpb24uIElmIHRoZXJlIGFyZSwKKwkJICogdGhl biBwcmVwYXJlIHRoZSBuZWNlc3NhcnkgRXhwclN0YXRlIGFuZCBjYWNoZSBpdCBpbiBlbnRy eS0+ZXhwcnN0YXRlLgorCQkgKgorCQkgKiBOT1RFOiBBbGwgcHVibGljYXRpb24tdGFibGUg bWFwcGluZ3MgbXVzdCBiZSBjaGVja2VkLgorCQkgKgorCQkgKiBOT1RFOiBJZiB0aGUgcmVs YXRpb24gaXMgYSBwYXJ0aXRpb24gYW5kIHB1YnZpYXJvb3QgaXMgdHJ1ZSwgdXNlCisJCSAq IHRoZSByb3cgZmlsdGVyIG9mIHRoZSB0b3Btb3N0IHBhcnRpdGlvbmVkIHRhYmxlIGluc3Rl YWQgb2YgdGhlIHJvdworCQkgKiBmaWx0ZXIgb2YgaXRzIG93biBwYXJ0aXRpb24uCisJCSAq CisJCSAqIE5PVEU6IE11bHRpcGxlIHB1YmxpY2F0aW9ucyBtaWdodCBoYXZlIG11bHRpcGxl IHJvdyBmaWx0ZXJzIGZvciB0aGlzCisJCSAqIHJlbGF0aW9uLiBTaW5jZSByb3cgZmlsdGVy IHVzYWdlIGRlcGVuZHMgb24gdGhlIERNTCBvcGVyYXRpb24sCisJCSAqIHRoZXJlIGFyZSBt dWx0aXBsZSBsaXN0cyAob25lIGZvciBlYWNoIG9wZXJhdGlvbikgd2hpY2ggcm93IGZpbHRl cnMKKwkJICogd2lsbCBiZSBhcHBlbmRlZC4KKwkJICovCisJCWZvcmVhY2gobGMsIGRhdGEt PnB1YmxpY2F0aW9ucykKKwkJeworCQkJUHVibGljYXRpb24gKnB1YiA9IGxmaXJzdChsYyk7 CisJCQlIZWFwVHVwbGUJcmZ0dXBsZTsKKwkJCURhdHVtCQlyZmRhdHVtOworCQkJYm9vbAkJ cmZpc251bGw7CisKKwkJCS8qCisJCQkgKiBMb29rdXAgaWYgdGhlcmUgaXMgYSByb3ctZmls dGVyLCBhbmQgaWYgeWVzIHJlbWVtYmVyIGl0IGluIGEgbGlzdCAocGVyCisJCQkgKiBwdWJh Y3Rpb24pLiBJZiBubywgdGhlbiByZW1lbWJlciB0aGVyZSB3YXMgbm8gZmlsdGVyIGZvciB0 aGlzIHB1YmFjdGlvbi4KKwkJCSAqIENvZGUgZm9sbG93aW5nIHRoaXMgJ3B1YmxpY2F0aW9u cycgbG9vcCB3aWxsIGNvbWJpbmUgYWxsIGZpbHRlcnMuCisJCQkgKi8KKwkJCXJmdHVwbGUg PSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAsIE9iamVjdElkR2V0RGF0dW0o ZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQpLCBPYmplY3RJZEdldERhdHVtKHB1Yi0+b2lkKSk7 CisJCQlpZiAoSGVhcFR1cGxlSXNWYWxpZChyZnR1cGxlKSkKKwkJCXsKKwkJCQlyZmRhdHVt ID0gU3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxlLCBBbnVtX3Bn X3B1YmxpY2F0aW9uX3JlbF9wcnF1YWwsICZyZmlzbnVsbCk7CisKKwkJCQlpZiAoIXJmaXNu dWxsKQorCQkJCXsKKwkJCQkJTm9kZSAgICpyZm5vZGU7CisKKwkJCQkJb2xkY3R4ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKENhY2hlTWVtb3J5Q29udGV4dCk7CisJCQkJCS8qIEdhdGhl ciB0aGUgcmZub2RlcyBwZXIgcHViYWN0aW9uIG9mIHRoaXMgcHVibGlhY3Rpb24uICovCisJ CQkJCWlmIChwdWItPnB1YmFjdGlvbnMucHViaW5zZXJ0KQorCQkJCQl7CisJCQkJCQlyZm5v ZGUgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhyZmRhdHVtKSk7CisJCQkJ CQlyZm5vZGVzW2lkeF9pbnNdID0gbGFwcGVuZChyZm5vZGVzW2lkeF9pbnNdLCByZm5vZGUp OworCQkJCQl9CisJCQkJCWlmIChwdWItPnB1YmFjdGlvbnMucHVidXBkYXRlKQorCQkJCQl7 CisJCQkJCQlyZm5vZGUgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhyZmRh dHVtKSk7CisJCQkJCQlyZm5vZGVzW2lkeF91cGRdID0gbGFwcGVuZChyZm5vZGVzW2lkeF91 cGRdLCByZm5vZGUpOworCQkJCQl9CisJCQkJCWlmIChwdWItPnB1YmFjdGlvbnMucHViZGVs ZXRlKQorCQkJCQl7CisJCQkJCQlyZm5vZGUgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0 Q1N0cmluZyhyZmRhdHVtKSk7CisJCQkJCQlyZm5vZGVzW2lkeF9kZWxdID0gbGFwcGVuZChy Zm5vZGVzW2lkeF9kZWxdLCByZm5vZGUpOworCQkJCQl9CisJCQkJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjdHgpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvKiBSZW1l bWJlciB3aGljaCBwdWJhY3Rpb25zIGhhdmUgbm8gcm93LWZpbHRlci4gKi8KKwkJCQkJaWYg KHB1Yi0+cHViYWN0aW9ucy5wdWJpbnNlcnQpCisJCQkJCQlub19maWx0ZXJbaWR4X2luc10g PSB0cnVlOworCQkJCQlpZiAocHViLT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSkKKwkJCQkJCW5v X2ZpbHRlcltpZHhfdXBkXSA9IHRydWU7CisJCQkJCWlmIChwdWItPnB1YmFjdGlvbnMucHVi ZGVsZXRlKQorCQkJCQkJbm9fZmlsdGVyW2lkeF9kZWxdID0gdHJ1ZTsKKworCQkJCQkvKiBR dWljayBleGl0IGxvb3AgaWYgYWxsIHB1YmFjdGlvbnMgaGF2ZSBubyByb3ctZmlsdGVyLiAq LworCQkJCQlpZiAobm9fZmlsdGVyW2lkeF9pbnNdICYmIG5vX2ZpbHRlcltpZHhfdXBkXSAm JiBub19maWx0ZXJbaWR4X2RlbF0pCisJCQkJCXsKKwkJCQkJCVJlbGVhc2VTeXNDYWNoZShy ZnR1cGxlKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCisJCQkJUmVsZWFzZVN5 c0NhY2hlKHJmdHVwbGUpOworCQkJfQorCisJCX0gLyogbG9vcCBhbGwgc3Vic2NyaWJlZCBw dWJsaWNhdGlvbnMgKi8KKworCQkvKgorCQkgKiBOb3cgYWxsIHRoZSBmaWx0ZXJzIGZvciBh bGwgcHViYWN0aW9ucyBhcmUga25vd24uIENvbWJpbmUgdGhlbSB3aGVuCisJCSAqIHRoZWly IHB1YmFjdGlvbnMgYXJlIHNhbWUuCisJCSAqCisJCSAqIEFsbCByb3cgZmlsdGVyIGV4cHJl c3Npb25zIHdpbGwgYmUgZGlzY2FyZGVkIGlmIHRoZXJlIGlzIG9uZQorCQkgKiBwdWJsaWNh dGlvbi1yZWxhdGlvbiBlbnRyeSB3aXRob3V0IGEgcm93IGZpbHRlci4gVGhhdCdzIGJlY2F1 c2UgYWxsCisJCSAqIGV4cHJlc3Npb25zIGFyZSBhZ2dyZWdhdGVkIGJ5IHRoZSBPUiBvcGVy YXRvci4gVGhlIHJvdyBmaWx0ZXIgYWJzZW5jZQorCQkgKiBtZWFucyByZXBsaWNhdGUgYWxs IHJvd3Mgc28gYSBzaW5nbGUgdmFsaWQgZXhwcmVzc2lvbiBtZWFucyBwdWJsaXNoCisJCSAq IHRoaXMgcm93LgorCQkgKi8KKwkJZm9yIChpZHggPSAwOyBpZHggPCBJRFhfUFVCQUNUSU9O X247IGlkeCsrKQorCQl7CisJCQlpbnQgbl9maWx0ZXJzOworCisJCQlpZiAobm9fZmlsdGVy W2lkeF0pCisJCQl7CisJCQkJaWYgKHJmbm9kZXNbaWR4XSkKKwkJCQl7CisJCQkJCWxpc3Rf ZnJlZV9kZWVwKHJmbm9kZXNbaWR4XSk7CisJCQkJCXJmbm9kZXNbaWR4XSA9IE5JTDsKKwkJ CQl9CisJCQl9CisKKwkJCS8qCisJCQkgKiBJZiB0aGVyZSB3YXMgb25lIG9yIG1vcmUgZmls dGVyIGZvciB0aGlzIHB1YmFjdGlvbiB0aGVuIGNvbWJpbmUgdGhlbQorCQkJICogKGlmIG5l Y2Vzc2FyeSkgYW5kIGNhY2hlIHRoZSBFeHByU3RhdGUuCisJCQkgKi8KKwkJCW5fZmlsdGVy cyA9IGxpc3RfbGVuZ3RoKHJmbm9kZXNbaWR4XSk7CisJCQlpZiAobl9maWx0ZXJzID4gMCkK KwkJCXsKKwkJCQlOb2RlCSAgICpyZm5vZGU7CisKKwkJCQlvbGRjdHggPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKKwkJCQlyZm5vZGUgPSBuX2ZpbHRl cnMgPiAxID8gbWFrZUJvb2xFeHByKE9SX0VYUFIsIHJmbm9kZXNbaWR4XSwgLTEpIDogbGlu aXRpYWwocmZub2Rlc1tpZHhdKTsKKwkJCQllbnRyeS0+ZXhwcnN0YXRlW2lkeF0gPSBwZ291 dHB1dF9yb3dfZmlsdGVyX2luaXRfZXhwcihyZm5vZGUpOworCQkJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjdHgpOworCisJCQkJZm91bmRfZmlsdGVycyA9IHRydWU7IC8qIGZsYWcg dGhhdCB3ZSB3aWxsIG5lZWQgc2xvdHMgbWFkZSAqLworCQkJfQorCQl9IC8qIGZvciBlYWNo IHB1YmFjdGlvbiAqLworCisJCWlmIChmb3VuZF9maWx0ZXJzKQorCQl7CisJCQlUdXBsZURl c2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOworCisJCQkvKgorCQkJ ICogQ3JlYXRlIHR1cGxlIHRhYmxlIHNsb3RzIGZvciByb3cgZmlsdGVyLiBDcmVhdGUgYSBj b3B5IG9mIHRoZQorCQkJICogVHVwbGVEZXNjIGFzIGl0IG5lZWRzIHRvIGxpdmUgYXMgbG9u ZyBhcyB0aGUgY2FjaGUgcmVtYWlucy4KKwkJCSAqLworCQkJb2xkY3R4ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKENhY2hlTWVtb3J5Q29udGV4dCk7CisJCQl0dXBkZXNjID0gQ3JlYXRl VHVwbGVEZXNjQ29weSh0dXBkZXNjKTsKKwkJCWVudHJ5LT5zY2FudHVwbGUgPSBNYWtlU2lu Z2xlVHVwbGVUYWJsZVNsb3QodHVwZGVzYywgJlRUU09wc0hlYXBUdXBsZSk7CisJCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJfQorCisJCWVudHJ5LT5leHByc3RhdGVf dmFsaWQgPSB0cnVlOworCX0KKworCS8qIEJhaWwgb3V0IGlmIHRoZXJlIGlzIG5vIHJvdyBm aWx0ZXIgKi8KKwlpZiAoIWVudHJ5LT5leHByc3RhdGVbY2hhbmdldHlwZV0pCisJCXJldHVy biB0cnVlOworCisJaWYgKG1lc3NhZ2VfbGV2ZWxfaXNfaW50ZXJlc3RpbmcoREVCVUczKSkK KwkJZWxvZyhERUJVRzMsICJ0YWJsZSBcIiVzLiVzXCIgaGFzIHJvdyBmaWx0ZXIiLAorCQkJ IGdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVsX25hbWVzcGFjZShyZWxpZCkpLAorCQkJIGdl dF9yZWxfbmFtZShyZWxpZCkpOworCisJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5zYWN0 aW9uU25hcHNob3QoKSk7CisKKwllc3RhdGUgPSBjcmVhdGVfZXN0YXRlX2Zvcl9yZWxhdGlv bihyZWxhdGlvbik7CisKKwkvKiBQcmVwYXJlIGNvbnRleHQgcGVyIHR1cGxlICovCisJZWN4 dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKKwllY3h0LT5lY3h0X3NjYW50 dXBsZSA9IGVudHJ5LT5zY2FudHVwbGU7CisKKwlFeGVjU3RvcmVIZWFwVHVwbGUobmV3dHVw bGUgPyBuZXd0dXBsZSA6IG9sZHR1cGxlLCBlY3h0LT5lY3h0X3NjYW50dXBsZSwgZmFsc2Up OworCisJLyoKKwkgKiBOT1RFOiBNdWx0aXBsZSBwdWJsaWNhdGlvbiByb3ctZmlsdGVycyBo YXZlIGFscmVhZHkgYmVlbiBjb21iaW5lZCB0byBhCisJICogc2luZ2xlIGV4cHJzdGF0ZSAo Zm9yIHRoaXMgcHViYWN0aW9uKS4KKwkgKi8KKwlpZiAoZW50cnktPmV4cHJzdGF0ZVtjaGFu Z2V0eXBlXSkKKwl7CisJCS8qIEV2YWx1YXRlcyByb3cgZmlsdGVyICovCisJCXJlc3VsdCA9 IHBnb3V0cHV0X3Jvd19maWx0ZXJfZXhlY19leHByKGVudHJ5LT5leHByc3RhdGVbY2hhbmdl dHlwZV0sIGVjeHQpOworCX0KKworCS8qIENsZWFudXAgYWxsb2NhdGVkIHJlc291cmNlcyAq LworCVJlc2V0RXhwckNvbnRleHQoZWN4dCk7CisJRnJlZUV4ZWN1dG9yU3RhdGUoZXN0YXRl KTsKKwlQb3BBY3RpdmVTbmFwc2hvdCgpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoK ICAqIFNlbmRzIHRoZSBkZWNvZGVkIERNTCBvdmVyIHdpcmUuCiAgKgpAQCAtNjQ3LDcgKzk5 MSw3IEBAIHBnb3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKIAlpZiAoaW5fc3RyZWFtaW5nKQogCQl4aWQgPSBjaGFu Z2UtPnR4bi0+eGlkOwogCi0JcmVsZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0YSwg UmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpOworCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5j X2VudHJ5KGRhdGEsIHJlbGF0aW9uKTsKIAogCS8qIEZpcnN0IGNoZWNrIHRoZSB0YWJsZSBm aWx0ZXIgKi8KIAlzd2l0Y2ggKGNoYW5nZS0+YWN0aW9uKQpAQCAtNjcxLDggKzEwMTUsNiBA QCBwZ291dHB1dF9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVy QnVmZmVyVFhOICp0eG4sCiAJLyogQXZvaWQgbGVha2luZyBtZW1vcnkgYnkgdXNpbmcgYW5k IHJlc2V0dGluZyBvdXIgb3duIGNvbnRleHQgKi8KIAlvbGQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oZGF0YS0+Y29udGV4dCk7CiAKLQltYXliZV9zZW5kX3NjaGVtYShjdHgsIGNoYW5n ZSwgcmVsYXRpb24sIHJlbGVudHJ5KTsKLQogCS8qIFNlbmQgdGhlIGRhdGEgKi8KIAlzd2l0 Y2ggKGNoYW5nZS0+YWN0aW9uKQogCXsKQEAgLTY4MCw2ICsxMDIyLDE2IEBAIHBnb3V0cHV0 X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIAkJCXsKIAkJCQlIZWFwVHVwbGUJdHVwbGUgPSAmY2hhbmdlLT5kYXRhLnRwLm5l d3R1cGxlLT50dXBsZTsKIAorCQkJCS8qIENoZWNrIHJvdyBmaWx0ZXIuICovCisJCQkJaWYg KCFwZ291dHB1dF9yb3dfZmlsdGVyKGNoYW5nZS0+YWN0aW9uLCBkYXRhLCByZWxhdGlvbiwg TlVMTCwgdHVwbGUsIHJlbGVudHJ5KSkKKwkJCQkJYnJlYWs7CisKKwkJCQkvKgorCQkJCSAq IFNjaGVtYSBzaG91bGQgYmUgc2VudCBiZWZvcmUgdGhlIGxvZ2ljIHRoYXQgcmVwbGFjZXMg dGhlCisJCQkJICogcmVsYXRpb24gYmVjYXVzZSBpdCBhbHNvIHNlbmRzIHRoZSBhbmNlc3Rv cidzIHJlbGF0aW9uLgorCQkJCSAqLworCQkJCW1heWJlX3NlbmRfc2NoZW1hKGN0eCwgY2hh bmdlLCByZWxhdGlvbiwgcmVsZW50cnkpOworCiAJCQkJLyogU3dpdGNoIHJlbGF0aW9uIGlm IHB1Ymxpc2hpbmcgdmlhIHJvb3QuICovCiAJCQkJaWYgKHJlbGVudHJ5LT5wdWJsaXNoX2Fz X3JlbGlkICE9IFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pKQogCQkJCXsKQEAgLTcwMyw2 ICsxMDU1LDEyIEBAIHBnb3V0cHV0X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkmY2hhbmdlLT5kYXRhLnRwLm9sZHR1 cGxlLT50dXBsZSA6IE5VTEw7CiAJCQkJSGVhcFR1cGxlCW5ld3R1cGxlID0gJmNoYW5nZS0+ ZGF0YS50cC5uZXd0dXBsZS0+dHVwbGU7CiAKKwkJCQkvKiBDaGVjayByb3cgZmlsdGVyLiAq LworCQkJCWlmICghcGdvdXRwdXRfcm93X2ZpbHRlcihjaGFuZ2UtPmFjdGlvbiwgZGF0YSwg cmVsYXRpb24sIG9sZHR1cGxlLCBuZXd0dXBsZSwgcmVsZW50cnkpKQorCQkJCQlicmVhazsK KworCQkJCW1heWJlX3NlbmRfc2NoZW1hKGN0eCwgY2hhbmdlLCByZWxhdGlvbiwgcmVsZW50 cnkpOworCiAJCQkJLyogU3dpdGNoIHJlbGF0aW9uIGlmIHB1Ymxpc2hpbmcgdmlhIHJvb3Qu ICovCiAJCQkJaWYgKHJlbGVudHJ5LT5wdWJsaXNoX2FzX3JlbGlkICE9IFJlbGF0aW9uR2V0 UmVsaWQocmVsYXRpb24pKQogCQkJCXsKQEAgLTczMSw2ICsxMDg5LDEyIEBAIHBnb3V0cHV0 X2NoYW5nZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKIAkJCXsKIAkJCQlIZWFwVHVwbGUJb2xkdHVwbGUgPSAmY2hhbmdlLT5kYXRhLnRw Lm9sZHR1cGxlLT50dXBsZTsKIAorCQkJCS8qIENoZWNrIHJvdyBmaWx0ZXIuICovCisJCQkJ aWYgKCFwZ291dHB1dF9yb3dfZmlsdGVyKGNoYW5nZS0+YWN0aW9uLCBkYXRhLCByZWxhdGlv biwgb2xkdHVwbGUsIE5VTEwsIHJlbGVudHJ5KSkKKwkJCQkJYnJlYWs7CisKKwkJCQltYXli ZV9zZW5kX3NjaGVtYShjdHgsIGNoYW5nZSwgcmVsYXRpb24sIHJlbGVudHJ5KTsKKwogCQkJ CS8qIFN3aXRjaCByZWxhdGlvbiBpZiBwdWJsaXNoaW5nIHZpYSByb290LiAqLwogCQkJCWlm IChyZWxlbnRyeS0+cHVibGlzaF9hc19yZWxpZCAhPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0 aW9uKSkKIAkJCQl7CkBAIC03OTQsNyArMTE1OCw3IEBAIHBnb3V0cHV0X3RydW5jYXRlKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQlp ZiAoIWlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKHJlbGF0aW9uKSkKIAkJCWNvbnRpbnVlOwog Ci0JCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5jX2VudHJ5KGRhdGEsIHJlbGlkKTsKKwkJcmVs ZW50cnkgPSBnZXRfcmVsX3N5bmNfZW50cnkoZGF0YSwgcmVsYXRpb24pOwogCiAJCWlmICgh cmVsZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUpCiAJCQljb250aW51ZTsKQEAgLTEx MTYsOSArMTQ4MCwxMCBAQCBzZXRfc2NoZW1hX3NlbnRfaW5fc3RyZWFtZWRfdHhuKFJlbGF0 aW9uU3luY0VudHJ5ICplbnRyeSwgVHJhbnNhY3Rpb25JZCB4aWQpCiAgKiB3aGVuIHB1Ymxp c2hpbmcuCiAgKi8KIHN0YXRpYyBSZWxhdGlvblN5bmNFbnRyeSAqCi1nZXRfcmVsX3N5bmNf ZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBPaWQgcmVsaWQpCitnZXRfcmVsX3N5bmNfZW50 cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIHsKIAlSZWxhdGlv blN5bmNFbnRyeSAqZW50cnk7CisJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJl bGF0aW9uKTsKIAlib29sCQlhbV9wYXJ0aXRpb24gPSBnZXRfcmVsX3JlbGlzcGFydGl0aW9u KHJlbGlkKTsKIAljaGFyCQlyZWxraW5kID0gZ2V0X3JlbF9yZWxraW5kKHJlbGlkKTsKIAli b29sCQlmb3VuZDsKQEAgLTExMzksOCArMTUwNCwxMyBAQCBnZXRfcmVsX3N5bmNfZW50cnko UEdPdXRwdXREYXRhICpkYXRhLCBPaWQgcmVsaWQpCiAJCWVudHJ5LT5zY2hlbWFfc2VudCA9 IGZhbHNlOwogCQllbnRyeS0+c3RyZWFtZWRfdHhucyA9IE5JTDsKIAkJZW50cnktPnJlcGxp Y2F0ZV92YWxpZCA9IGZhbHNlOworCQllbnRyeS0+ZXhwcnN0YXRlX3ZhbGlkID0gZmFsc2U7 CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2VydCA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1 YnVwZGF0ZSA9CiAJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBlbnRyeS0+cHVi YWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZhbHNlOworCQllbnRyeS0+c2NhbnR1cGxlID0gTlVM TDsKKwkJZW50cnktPmV4cHJzdGF0ZVtSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5TRVJUXSA9 IE5VTEw7CisJCWVudHJ5LT5leHByc3RhdGVbUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1VQREFU RV0gPSBOVUxMOworCQllbnRyeS0+ZXhwcnN0YXRlW1JFT1JERVJfQlVGRkVSX0NIQU5HRV9E RUxFVEVdID0gTlVMTDsKIAkJZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQgPSBJbnZhbGlkT2lk OwogCQllbnRyeS0+bWFwID0gTlVMTDsJCS8qIHdpbGwgYmUgc2V0IGJ5IG1heWJlX3NlbmRf c2NoZW1hKCkgaWYKIAkJCQkJCQkJICogbmVlZGVkICovCkBAIC0xMjQ1LDkgKzE2MTUsNiBA QCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBPaWQgcmVsaWQpCiAJ CQkJZW50cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1 YnRydW5jYXRlOwogCQkJfQogCi0JCQlpZiAoZW50cnktPnB1YmFjdGlvbnMucHViaW5zZXJ0 ICYmIGVudHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSAmJgotCQkJCWVudHJ5LT5wdWJhY3Rp b25zLnB1YmRlbGV0ZSAmJiBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSkKLQkJCQli cmVhazsKIAkJfQogCiAJCWxpc3RfZnJlZShwdWJpZHMpOwpAQCAtMTMxMCw2ICsxNjc3LDcg QEAgc3RhdGljIHZvaWQKIHJlbF9zeW5jX2NhY2hlX3JlbGF0aW9uX2NiKERhdHVtIGFyZywg T2lkIHJlbGlkKQogewogCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeTsKKwlpbnQJaWR4Owog CiAJLyoKIAkgKiBXZSBjYW4gZ2V0IGhlcmUgaWYgdGhlIHBsdWdpbiB3YXMgdXNlZCBpbiBT UUwgaW50ZXJmYWNlIGFzIHRoZQpAQCAtMTM1NCw2ICsxNzIyLDI1IEBAIHJlbF9zeW5jX2Nh Y2hlX3JlbGF0aW9uX2NiKERhdHVtIGFyZywgT2lkIHJlbGlkKQogCQkJZnJlZV9jb252ZXJz aW9uX21hcChlbnRyeS0+bWFwKTsKIAkJfQogCQllbnRyeS0+bWFwID0gTlVMTDsKKworCQkv KgorCQkgKiBSb3cgZmlsdGVyIGNhY2hlIGNsZWFudXBzLiAoV2lsbCBiZSByZWJ1aWx0IGxh dGVyIGlmIG5lZWRlZCkuCisJCSAqLworCQllbnRyeS0+ZXhwcnN0YXRlX3ZhbGlkID0gZmFs c2U7CisJCWlmIChlbnRyeS0+c2NhbnR1cGxlICE9IE5VTEwpCisJCXsKKwkJCUV4ZWNEcm9w U2luZ2xlVHVwbGVUYWJsZVNsb3QoZW50cnktPnNjYW50dXBsZSk7CisJCQllbnRyeS0+c2Nh bnR1cGxlID0gTlVMTDsKKwkJfQorCQkvKiBDbGVhbnVwIHRoZSBFeHByU3RhdGUgZm9yIGVh Y2ggb2YgdGhlIHB1YmFjdGlvbnMuICovCisJCWZvciAoaWR4ID0gMDsgaWR4IDwgSURYX1BV QkFDVElPTl9uOyBpZHgrKykKKwkJeworCQkJaWYgKGVudHJ5LT5leHByc3RhdGVbaWR4XSAh PSBOVUxMKQorCQkJeworCQkJCXBmcmVlKGVudHJ5LT5leHByc3RhdGVbaWR4XSk7CisJCQkJ ZW50cnktPmV4cHJzdGF0ZVtpZHhdID0gTlVMTDsKKwkJCX0KKwkJfQogCX0KIH0KIApAQCAt MTM2NSw2ICsxNzUyLDcgQEAgcmVsX3N5bmNfY2FjaGVfcHVibGljYXRpb25fY2IoRGF0dW0g YXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlIQVNIX1NFUV9TVEFU VVMgc3RhdHVzOwogCVJlbGF0aW9uU3luY0VudHJ5ICplbnRyeTsKKwlNZW1vcnlDb250ZXh0 IG9sZGN0eDsKIAogCS8qCiAJICogV2UgY2FuIGdldCBoZXJlIGlmIHRoZSBwbHVnaW4gd2Fz IHVzZWQgaW4gU1FMIGludGVyZmFjZSBhcyB0aGUKQEAgLTEzNzQsNiArMTc2Miw4IEBAIHJl bF9zeW5jX2NhY2hlX3B1YmxpY2F0aW9uX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVp bnQzMiBoYXNodmFsdWUpCiAJaWYgKFJlbGF0aW9uU3luY0NhY2hlID09IE5VTEwpCiAJCXJl dHVybjsKIAorCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNv bnRleHQpOworCiAJLyoKIAkgKiBUaGVyZSBpcyBubyB3YXkgdG8gZmluZCB3aGljaCBlbnRy eSBpbiBvdXIgY2FjaGUgdGhlIGhhc2ggYmVsb25ncyB0byBzbwogCSAqIG1hcmsgdGhlIHdo b2xlIGNhY2hlIGFzIGludmFsaWQuCkBAIC0xMzkyLDYgKzE3ODIsOCBAQCByZWxfc3luY19j YWNoZV9wdWJsaWNhdGlvbl9jYihEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIgaGFz aHZhbHVlKQogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBmYWxzZTsKIAkJZW50 cnktPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKIAl9CisKKwlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIH0KIAogLyogU2VuZCBSZXBsaWNhdGlvbiBvcmlnaW4g Ki8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKaW5kZXggYzI4Nzg4ZTg0Zi4uOTI5YjJmNTM4OCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMK QEAgLTI4NjgsMTcgKzI4NjgsMjEgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3Qg Y2hhciAqc2NoZW1hbmFtZSwKIAkJCXsKIAkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLAog CQkJCQkJCQkgICJTRUxFQ1QgcHVibmFtZVxuIgorCQkJCQkJCQkgICIJCSwgTlVMTFxuIgog CQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24gcFxuIgogCQkJCQkJ CQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9uYW1lc3BhY2UgcG4gT04g cC5vaWQgPSBwbi5wbnB1YmlkXG4iCiAJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRhbG9nLnBn X2NsYXNzIHBjIE9OIHBjLnJlbG5hbWVzcGFjZSA9IHBuLnBubnNwaWRcbiIKIAkJCQkJCQkJ ICAiV0hFUkUgcGMub2lkID0nJXMnIGFuZCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1 Ymxpc2hhYmxlKCclcycpXG4iCiAJCQkJCQkJCSAgIlVOSU9OXG4iCiAJCQkJCQkJCSAgIlNF TEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJCSAgIgkJLCBwZ19nZXRfZXhwcihwci5wcnF1YWws IGMub2lkKVxuIgogCQkJCQkJCQkgICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb24g cFxuIgogCQkJCQkJCQkgICIJCUpPSU4gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwg cHIgT04gcC5vaWQgPSBwci5wcnB1YmlkXG4iCisJCQkJCQkJCSAgIgkJSk9JTiBwZ19jYXRh bG9nLnBnX2NsYXNzIGMgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCiAJCQkJCQkJCSAgIldI RVJFIHByLnBycmVsaWQgPSAnJXMnXG4iCiAJCQkJCQkJCSAgIlVOSU9OXG4iCiAJCQkJCQkJ CSAgIlNFTEVDVCBwdWJuYW1lXG4iCisJCQkJCQkJCSAgIgkJLCBOVUxMXG4iCiAJCQkJCQkJ CSAgIkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCiAJCQkJCQkJCSAgIldI RVJFIHAucHViYWxsdGFibGVzIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxp c2hhYmxlKCclcycpXG4iCiAJCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKQEAgLTI5MTQsNiAr MjkxOCwxMyBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFu YW1lLAogCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgXCIlc1wiIiwKIAkJCQkJ CQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCkpOwogCisJCQkJLyogcm93IGZpbHRlciAo aWYgYW55KSAqLworCQkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE1MDAwMCkKKwkJCQl7CisJ CQkJCWlmICghUFFnZXRpc251bGwocmVzdWx0LCBpLCAxKSkKKwkJCQkJCWFwcGVuZFBRRXhw QnVmZmVyKCZidWYsICIgV0hFUkUgJXMiLCBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMSkpOwor CQkJCX0KKwogCQkJCXByaW50VGFibGVBZGRGb290ZXIoJmNvbnQsIGJ1Zi5kYXRhKTsKIAkJ CX0KIAkJCVBRY2xlYXIocmVzdWx0KTsKQEAgLTU4MzMsOCArNTg0NCwxMiBAQCBhZGRGb290 ZXJUb1B1YmxpY2F0aW9uRGVzYyhQUUV4cEJ1ZmZlciBidWYsIGNoYXIgKmZvb3Rlcm1zZywK IAlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykKIAl7CiAJCWlmICghc2luZ2xlY29sKQor CQl7CiAJCQlwcmludGZQUUV4cEJ1ZmZlcihidWYsICIgICAgXCIlcy4lc1wiIiwgUFFnZXR2 YWx1ZShyZXMsIGksIDApLAogCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXMsIGksIDEpKTsKKwkJ CWlmICghUFFnZXRpc251bGwocmVzLCBpLCAyKSkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihi dWYsICIgV0hFUkUgJXMiLCBQUWdldHZhbHVlKHJlcywgaSwgMikpOworCQl9CiAJCWVsc2UK IAkJCXByaW50ZlBRRXhwQnVmZmVyKGJ1ZiwgIiAgICBcIiVzXCIiLCBQUWdldHZhbHVlKHJl cywgaSwgMCkpOwogCkBAIC01OTYzLDggKzU5NzgsMTUgQEAgZGVzY3JpYmVQdWJsaWNhdGlv bnMoY29uc3QgY2hhciAqcGF0dGVybikKIAkJewogCQkJLyogR2V0IHRoZSB0YWJsZXMgZm9y IHRoZSBzcGVjaWZpZWQgcHVibGljYXRpb24gKi8KIAkJCXByaW50ZlBRRXhwQnVmZmVyKCZi dWYsCi0JCQkJCQkJICAiU0VMRUNUIG4ubnNwbmFtZSwgYy5yZWxuYW1lXG4iCi0JCQkJCQkJ ICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsXG4iCisJCQkJCQkJICAiU0VMRUNUIG4u bnNwbmFtZSwgYy5yZWxuYW1lIik7CisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDAp CisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKKwkJCQkJCQkJCSAiLCBwZ19nZXRf ZXhwcihwci5wcnF1YWwsIGMub2lkKSIpOworCQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKCZidWYsCisJCQkJCQkJCQkgIiwgTlVMTCIpOworCQkJYXBwZW5kUFFFeHBCdWZm ZXIoJmJ1ZiwKKwkJCQkJCQkgICJcbkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLFxuIgog CQkJCQkJCSAgIiAgICAgcGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgbixcbiIKIAkJCQkJCQkg ICIgICAgIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIHByXG4iCiAJCQkJCQkJICAi V0hFUkUgYy5yZWxuYW1lc3BhY2UgPSBuLm9pZFxuIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oCmluZGV4IDkwMmYyZjJmMGQuLjk2YzU1ZjYyN2QgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL2dlbmJraS5oIgogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb25fZC5oIgorI2luY2x1ZGUgInBh cnNlci9wYXJzZV9ub2RlLmgiCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlwZ19wdWJs aWNhdGlvbiBkZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bwpAQCAtODYsNiArODcs NyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbgogdHlwZWRlZiBzdHJ1Y3QgUHVibGlj YXRpb25SZWxJbmZvCiB7CiAJUmVsYXRpb24JcmVsYXRpb247CisJTm9kZQkgICAqd2hlcmVD bGF1c2U7CiB9IFB1YmxpY2F0aW9uUmVsSW5mbzsKIAogZXh0ZXJuIFB1YmxpY2F0aW9uICpH ZXRQdWJsaWNhdGlvbihPaWQgcHViaWQpOwpAQCAtMTIzLDEzICsxMjUsMTYgQEAgZXh0ZXJu IExpc3QgKkdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhMaXN0ICpyZXN1bHQsCiAK IGV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCk7CiBl eHRlcm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKTsKLWV4dGVybiBP YmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1Ymxp Y2F0aW9uUmVsSW5mbyAqdGFyZ2V0cmVsLAorZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGlj YXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmks CiAJCQkJCQkJCQkJCSAgYm9vbCBpZl9ub3RfZXhpc3RzKTsKIGV4dGVybiBPYmplY3RBZGRy ZXNzIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBPaWQgc2NoZW1haWQsCiAJ CQkJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cyk7CiAKIGV4dGVybiBPaWQJZ2V0X3B1Ymxp Y2F0aW9uX29pZChjb25zdCBjaGFyICpwdWJuYW1lLCBib29sIG1pc3Npbmdfb2spOwogZXh0 ZXJuIGNoYXIgKmdldF9wdWJsaWNhdGlvbl9uYW1lKE9pZCBwdWJpZCwgYm9vbCBtaXNzaW5n X29rKTsKK2V4dGVybiBOb2RlICpHZXRUcmFuc2Zvcm1lZFdoZXJlQ2xhdXNlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKKwkJCQkJCQkJCSAgIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAorCQkJ CQkJCQkJICAgYm9vbCBiZml4dXBjb2xsYXRpb24pOwogCiAKICNlbmRpZgkJCQkJCQkvKiBQ R19QVUJMSUNBVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uX3JlbC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlv bl9yZWwuaAppbmRleCBiNWQ1NTA0Y2JiLi4xNTRiYjYxNzc3IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgKQEAgLTMxLDYgKzMxLDEwIEBAIENBVEFM T0cocGdfcHVibGljYXRpb25fcmVsLDYxMDYsUHVibGljYXRpb25SZWxSZWxhdGlvbklkKQog CU9pZAkJCW9pZDsJCQkvKiBvaWQgKi8KIAlPaWQJCQlwcnB1YmlkIEJLSV9MT09LVVAocGdf cHVibGljYXRpb24pOyAvKiBPaWQgb2YgdGhlIHB1YmxpY2F0aW9uICovCiAJT2lkCQkJcHJy ZWxpZCBCS0lfTE9PS1VQKHBnX2NsYXNzKTsJLyogT2lkIG9mIHRoZSByZWxhdGlvbiAqLwor CisjaWZkZWYJQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0 YXJ0IGhlcmUgKi8KKwlwZ19ub2RlX3RyZWUgcHJxdWFsOwkJLyogcXVhbGlmaWNhdGlvbnMg Ki8KKyNlbmRpZgogfSBGb3JtRGF0YV9wZ19wdWJsaWNhdGlvbl9yZWw7CiAKIC8qIC0tLS0t LS0tLS0tLS0tLS0KQEAgLTQwLDYgKzQ0LDggQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlvbl9y ZWwsNjEwNixQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQpCiAgKi8KIHR5cGVkZWYgRm9ybURh dGFfcGdfcHVibGljYXRpb25fcmVsICpGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbDsKIAorREVD TEFSRV9UT0FTVChwZ19wdWJsaWNhdGlvbl9yZWwsIDgyODcsIDgyODgpOworCiBERUNMQVJF X1VOSVFVRV9JTkRFWF9QS0VZKHBnX3B1YmxpY2F0aW9uX3JlbF9vaWRfaW5kZXgsIDYxMTIs IFB1YmxpY2F0aW9uUmVsT2JqZWN0SW5kZXhJZCwgb24gcGdfcHVibGljYXRpb25fcmVsIHVz aW5nIGJ0cmVlKG9pZCBvaWRfb3BzKSk7CiBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19wdWJs aWNhdGlvbl9yZWxfcHJyZWxpZF9wcnB1YmlkX2luZGV4LCA2MTEzLCBQdWJsaWNhdGlvblJl bFBycmVsaWRQcnB1YmlkSW5kZXhJZCwgb24gcGdfcHVibGljYXRpb25fcmVsIHVzaW5nIGJ0 cmVlKHBycmVsaWQgb2lkX29wcywgcHJwdWJpZCBvaWRfb3BzKSk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAppbmRleCA0YzVhOGEzOWJmLi5lNDM3YTU1YmIyIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC0zNjQyLDYgKzM2NDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBQdWJs aWNhdGlvblRhYmxlCiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlSYW5nZVZhciAgICpyZWxhdGlv bjsJCS8qIHJlbGF0aW9uIHRvIGJlIHB1Ymxpc2hlZCAqLworCU5vZGUJICAgKndoZXJlQ2xh dXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwogfSBQdWJsaWNhdGlvblRhYmxlOwogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggZWUxNzkwODJjZS4uZDU4YWU2YTYzZiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC04MCw2ICs4MCw3IEBAIHR5cGVkZWYg ZW51bSBQYXJzZUV4cHJLaW5kCiAJRVhQUl9LSU5EX0NPUFlfV0hFUkUsCQkvKiBXSEVSRSBj b25kaXRpb24gaW4gQ09QWSBGUk9NICovCiAJRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xVTU4s IC8qIGdlbmVyYXRpb24gZXhwcmVzc2lvbiBmb3IgYSBjb2x1bW4gKi8KIAlFWFBSX0tJTkRf Q1lDTEVfTUFSSywJCS8qIGN5Y2xlIG1hcmsgdmFsdWUgKi8KKwlFWFBSX0tJTkRfUFVCTElD QVRJT05fV0hFUkUgLyogV0hFUkUgY29uZGl0aW9uIGZvciBhIHRhYmxlIGluIFBVQkxJQ0FU SU9OICovCiB9IFBhcnNlRXhwcktpbmQ7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCA1YWMyZDY2NmEyLi41YTQ5MDAzYWU0IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMjM5LDYg KzIzOSwxNTcgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQgRFJPUCBU QUJMRSB0ZXN0cHViX3BhcnRlZDsKIFVQREFURSB0ZXN0cHViX3BhcnRlZDIgU0VUIGEgPSAy OwogRFJPUCBUQUJMRSB0ZXN0cHViX3BhcnRlZDEsIHRlc3RwdWJfcGFydGVkMjsKIERST1Ag UFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQsIHRlc3RwdWJfZm9ycGFydGVkMTsKK0NS RUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDEgKGEgaW50ZWdlciwgYiB0ZXh0KTsKK0NSRUFU RSBUQUJMRSB0ZXN0cHViX3JmX3RibDIgKGMgdGV4dCwgZCBpbnRlZ2VyKTsKK0NSRUFURSBU QUJMRSB0ZXN0cHViX3JmX3RibDMgKGUgaW50ZWdlcik7CitDUkVBVEUgVEFCTEUgdGVzdHB1 Yl9yZl90Ymw0IChnIHRleHQpOworQ1JFQVRFIFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1h OworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfbXlzY2hlbWEudGVzdHB1Yl9yZl90Ymw1KGgg aW50ZWdlcik7CitDUkVBVEUgU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hlbWExOworQ1JFQVRF IFRBQkxFIHRlc3RwdWJfcmZfbXlzY2hlbWExLnRlc3RwdWJfcmZfdGJsNihpIGludGVnZXIp OworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWI1IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfdGJs MiBXSEVSRSAoYyA8PiAndGVzdCcgQU5EIGQgPCA1KTsKK1JFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CitcZFJwKyB0ZXN0cHViNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVz IHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCitUYWJsZXM6CisgICAgInB1YmxpYy50 ZXN0cHViX3JmX3RibDEiCisgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDIiIFdIRVJFICgo YyA8PiAndGVzdCc6OnRleHQpIEFORCAoZCA8IDUpKQorCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMTAwMCBBTkQg ZSA8IDIwMDApOworXGRScCsgdGVzdHB1YjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVzOgorICAgICJwdWJs aWMudGVzdHB1Yl9yZl90YmwxIgorICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwyIiBXSEVS RSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKKyAgICAicHVibGljLnRlc3Rw dWJfcmZfdGJsMyIgV0hFUkUgKChlID4gMTAwMCkgQU5EIChlIDwgMjAwMCkpCisKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWI1IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwyOworXGRS cCsgdGVzdHB1YjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWI1CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZgorVGFibGVzOgorICAgICJwdWJsaWMudGVzdHB1Yl9yZl90 YmwxIgorICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAxMDAwKSBB TkQgKGUgPCAyMDAwKSkKKworLS0gcmVtb3ZlIHRlc3RwdWJfcmZfdGJsMSBhbmQgYWRkIHRl c3RwdWJfcmZfdGJsMyBhZ2FpbiAoYW5vdGhlciBXSEVSRSBleHByZXNzaW9uKQorQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAo ZSA+IDMwMCBBTkQgZSA8IDUwMCk7CitcZFJwKyB0ZXN0cHViNQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCitUYWJsZXM6 CisgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJFICgoZSA+IDMwMCkgQU5EIChl IDwgNTAwKSkKKworLS0gdGVzdCBcZCsgKG5vdyBpdCBkaXNwbGF5cyBmaWx0ZXIgaW5mb3Jt YXRpb24pCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9kcGx1c19yZl95ZXMgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJs MSBXSEVSRSAoYSA+IDEpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CitDUkVBVEUgUFVC TElDQVRJT04gdGVzdHB1Yl9kcGx1c19yZl9ubyBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90Ymwx OworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK1xkKyB0ZXN0cHViX3JmX3RibDEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVzdHB1Yl9yZl90 YmwxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1 bHQgfCBTdG9yYWdlICB8IFN0YXRzIHRhcmdldCB8IERlc2NyaXB0aW9uIAorLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8ICAgICAgICAgfCBwbGFpbiAgICB8ICAgICAgICAgICAgICB8 IAorIGIgICAgICB8IHRleHQgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8ICAgICAgICAg fCBleHRlbmRlZCB8ICAgICAgICAgICAgICB8IAorUHVibGljYXRpb25zOgorICAgICJ0ZXN0 cHViX2RwbHVzX3JmX25vIgorICAgICJ0ZXN0cHViX2RwbHVzX3JmX3llcyIgV0hFUkUgKGEg PiAxKQorCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZHBsdXNfcmZfeWVzLCB0ZXN0cHVi X2RwbHVzX3JmX25vOworLS0gc29tZSBtb3JlIHN5bnRheCB0ZXN0cyB0byBleGVyY2lzZSBv dGhlciBwYXJzZXIgcGF0aHdheXMKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9S JzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDEgRk9SIFRBQkxFIHRlc3Rw dWJfcmZfdGJsMSwgT05MWSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPCA5OTkpOworUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKK1xkUnArIHRlc3RwdWJfc3ludGF4MQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDEK KyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCitUYWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCisgICAgInB1Ymxp Yy50ZXN0cHViX3JmX3RibDMiIFdIRVJFIChlIDwgOTk5KQorCitEUk9QIFBVQkxJQ0FUSU9O IHRlc3RwdWJfc3ludGF4MTsKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDIgRk9SIFRBQkxFIHRlc3RwdWJf cmZfdGJsMSwgdGVzdHB1Yl9yZl9teXNjaGVtYS50ZXN0cHViX3JmX3RibDUgV0hFUkUgKGgg PCA5OTkpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK1xkUnArIHRlc3RwdWJfc3lu dGF4MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViX3N5bnRheDIKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAg fCB0ICAgICAgICAgfCBmCitUYWJsZXM6CisgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEi CisgICAgInRlc3RwdWJfcmZfbXlzY2hlbWEudGVzdHB1Yl9yZl90Ymw1IiBXSEVSRSAoaCA8 IDk5OSkKKworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDI7CistLSBmYWlsIC0g c2NoZW1hcyBhcmUgbm90IGFsbG93ZWQgV0hFUkUgcm93LWZpbHRlcgorU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3lu dGF4MyBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYSBXSEVS RSAoYSA9IDEyMyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJXSEVSRSIK K0xJTkUgMTogLi4udGF4MyBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9t eXNjaGVtYSBXSEVSRSAoYSA9Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfc3ludGF4MyBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9teXNj aGVtYSwgdGVzdHB1Yl9yZl9teXNjaGVtYSBXSEVSRSAoYSA9IDEyMyk7CitFUlJPUjogIFdI RVJFIGNsYXVzZSBmb3Igc2NoZW1hIG5vdCBhbGxvd2VkCitMSU5FIDE6IC4uLmF4MyBGT1Ig QUxMIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYSwgdGVzdHB1Yl9yZi4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CistLSBmYWlsIC0gZHVw bGljYXRlIHRhYmxlcyBhcmUgbm90IGFsbG93ZWQgaWYgdGhhdCB0YWJsZSBoYXMgYW55IFdI RVJFIHJvdy1maWx0ZXJzCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kdXBzIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3Ri bDEgV0hFUkUgKGEgPSAxKSwgdGVzdHB1Yl9yZl90YmwxIFdJVEggKHB1Ymxpc2ggPSAnaW5z ZXJ0Jyk7CitFUlJPUjogIGNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCByb3ctZmlsdGVycyBm b3IgInRlc3RwdWJfcmZfdGJsMSIKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2R1cHMg Rk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChhID0g MikgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcgb3Ig cmVkdW5kYW50IHJvdy1maWx0ZXJzIGZvciAidGVzdHB1Yl9yZl90YmwxIgorUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKKy0tIGZhaWwgLSBhZ2dyZWdhdGUgZnVuY3Rpb25zIG5vdCBh bGxvd2VkIGluIFdIRVJFIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gIHRlc3RwdWI1IFNF VCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPCBBVkcoZSkpOworRVJST1I6ICBm dW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Np b25zCitMSU5FIDE6IC4uLlRJT04gIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3Ri bDMgV0hFUkUgKGUgPCBBVkcoZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZmFpbCAtIGZ1bmN0aW9u cyBkaXNhbGxvd2VkCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBBREQgVEFCTEUgdGVz dHB1Yl9yZl90Ymw0IFdIRVJFIChsZW5ndGgoZykgPCA2KTsKK0VSUk9SOiAgZnVuY3Rpb25z IGFyZSBub3QgYWxsb3dlZCBpbiBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9ucworTElO RSAxOiAuLi5JQ0FUSU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3RibDQgV0hF UkUgKGxlbmd0aChnKSAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBmYWlsIC0gdXNlci1kZWZpbmVkIG9w ZXJhdG9ycyBkaXNhbGxvd2VkCitDUkVBVEUgRlVOQ1RJT04gdGVzdHB1Yl9yZl9mdW5jKGlu dGVnZXIsIGludGVnZXIpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJCBTRUxFQ1QgaGFzaGludDQo JDEpID4gJDIgJCQgTEFOR1VBR0UgU1FMOworQ1JFQVRFIE9QRVJBVE9SID0jPiAoUFJPQ0VE VVJFID0gdGVzdHB1Yl9yZl9mdW5jLCBMRUZUQVJHID0gaW50ZWdlciwgUklHSFRBUkcgPSBp bnRlZ2VyKTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgVEFCTEUgdGVzdHB1 Yl9yZl90YmwzIFdIRVJFIChlID0jPiAyNyk7CitFUlJPUjogIHVzZXItZGVmaW5lZCBvcGVy YXRvcnMgYXJlIG5vdCBhbGxvd2VkIGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb25z CitMSU5FIDE6IC4uLklDQVRJT04gdGVzdHB1YjYgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJs MyBXSEVSRSAoZSA9Iz4gMjcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gZmFpbCAtIFdIRVJFIG5vdCBh bGxvd2VkIGluIERST1AKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IERST1AgVEFCTEUg dGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlIDwgMjcpOworRVJST1I6ICBpbnZhbGlkIHVzZSBv ZiBXSEVSRSByb3ctZmlsdGVyIGluIEFMVEVSIFBVQkxJQ0FUSU9OIC4uLiBEUk9QIFRBQkxF CistLSBmYWlsIC0gY2Fubm90IEFMVEVSIFNFVCB0YWJsZSB3aGljaCBpcyBhIG1lbWJlciBv ZiBhIHByZS1leGlzdGluZyBzY2hlbWEKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VS Uk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNyBGT1IgQUxMIFRBQkxFUyBJTiBT Q0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYTE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi NyBTRVQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYTEsIFRBQkxF IHRlc3RwdWJfcmZfbXlzY2hlbWExLnRlc3RwdWJfcmZfdGJsNiBXSEVSRSAoaSA8IDk5KTsK K0VSUk9SOiAgY2Fubm90IGFkZCByZWxhdGlvbiAidGVzdHB1Yl9yZl9teXNjaGVtYTEudGVz dHB1Yl9yZl90Ymw2IiB0byBwdWJsaWNhdGlvbgorREVUQUlMOiAgVGFibGUncyBzY2hlbWEg InRlc3RwdWJfcmZfbXlzY2hlbWExIiBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0 aW9uIG9yIHBhcnQgb2YgdGhlIHNwZWNpZmllZCBzY2hlbWEgbGlzdC4KK1JFU0VUIGNsaWVu dF9taW5fbWVzc2FnZXM7CitEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMTsKK0RST1AgVEFC TEUgdGVzdHB1Yl9yZl90YmwyOworRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3RibDM7CitEUk9Q IFRBQkxFIHRlc3RwdWJfcmZfdGJsNDsKK0RST1AgVEFCTEUgdGVzdHB1Yl9yZl9teXNjaGVt YS50ZXN0cHViX3JmX3RibDU7CitEUk9QIFRBQkxFIHRlc3RwdWJfcmZfbXlzY2hlbWExLnRl c3RwdWJfcmZfdGJsNjsKK0RST1AgU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hlbWE7CitEUk9Q IFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1hMTsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1 YjU7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI3OworRFJPUCBPUEVSQVRPUiA9Iz4oaW50 ZWdlciwgaW50ZWdlcik7CitEUk9QIEZVTkNUSU9OIHRlc3RwdWJfcmZfZnVuYyhpbnRlZ2Vy LCBpbnRlZ2VyKTsKIC0tIFRlc3QgY2FjaGUgaW52YWxpZGF0aW9uIEZPUiBBTEwgVEFCTEVT IHB1YmxpY2F0aW9uCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVB VEUgVEFCTEUgdGVzdHB1Yl90Ymw0KGEgaW50KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbAppbmRleCA1NmRkMzU4NTU0Li40N2JkYmE4NmFjIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0xMzQsNiArMTM0LDgyIEBAIFVQREFURSB0 ZXN0cHViX3BhcnRlZDIgU0VUIGEgPSAyOwogRFJPUCBUQUJMRSB0ZXN0cHViX3BhcnRlZDEs IHRlc3RwdWJfcGFydGVkMjsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQs IHRlc3RwdWJfZm9ycGFydGVkMTsKIAorQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSAo YSBpbnRlZ2VyLCBiIHRleHQpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfdGJsMiAoYyB0 ZXh0LCBkIGludGVnZXIpOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyAoZSBpbnRl Z2VyKTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDQgKGcgdGV4dCk7CitDUkVBVEUg U0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hlbWE7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9yZl9t eXNjaGVtYS50ZXN0cHViX3JmX3RibDUoaCBpbnRlZ2VyKTsKK0NSRUFURSBTQ0hFTUEgdGVz dHB1Yl9yZl9teXNjaGVtYTE7CitDUkVBVEUgVEFCTEUgdGVzdHB1Yl9yZl9teXNjaGVtYTEu dGVzdHB1Yl9yZl90Ymw2KGkgaW50ZWdlcik7CitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjUgRk9SIFRBQkxFIHRlc3Rw dWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl90YmwyIFdIRVJFIChjIDw+ICd0ZXN0JyBBTkQgZCA8 IDUpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK1xkUnArIHRlc3RwdWI1CitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJF IChlID4gMTAwMCBBTkQgZSA8IDIwMDApOworXGRScCsgdGVzdHB1YjUKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWI1IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwyOworXGRScCsgdGVz dHB1YjUKKy0tIHJlbW92ZSB0ZXN0cHViX3JmX3RibDEgYW5kIGFkZCB0ZXN0cHViX3JmX3Ri bDMgYWdhaW4gKGFub3RoZXIgV0hFUkUgZXhwcmVzc2lvbikKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPiAzMDAgQU5E IGUgPCA1MDApOworXGRScCsgdGVzdHB1YjUKKy0tIHRlc3QgXGQrIChub3cgaXQgZGlzcGxh eXMgZmlsdGVyIGluZm9ybWF0aW9uKQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJS T1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZHBsdXNfcmZfeWVzIEZPUiBUQUJM RSB0ZXN0cHViX3JmX3RibDEgV0hFUkUgKGEgPiAxKSBXSVRIIChwdWJsaXNoID0gJ2luc2Vy dCcpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZHBsdXNfcmZfbm8gRk9SIFRBQkxF IHRlc3RwdWJfcmZfdGJsMTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitcZCsgdGVz dHB1Yl9yZl90YmwxCitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZHBsdXNfcmZfeWVzLCB0 ZXN0cHViX2RwbHVzX3JmX25vOworLS0gc29tZSBtb3JlIHN5bnRheCB0ZXN0cyB0byBleGVy Y2lzZSBvdGhlciBwYXJzZXIgcGF0aHdheXMKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0g J0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDEgRk9SIFRBQkxF IHRlc3RwdWJfcmZfdGJsMSwgT05MWSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPCA5OTkp OworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKK1xkUnArIHRlc3RwdWJfc3ludGF4MQor RFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDE7CitTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgyIEZP UiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfbXlzY2hlbWEudGVzdHB1Yl9y Zl90Ymw1IFdIRVJFIChoIDwgOTk5KTsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7Citc ZFJwKyB0ZXN0cHViX3N5bnRheDIKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgy OworLS0gZmFpbCAtIHNjaGVtYXMgYXJlIG5vdCBhbGxvd2VkIFdIRVJFIHJvdy1maWx0ZXIK K1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViX3N5bnRheDMgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZf bXlzY2hlbWEgV0hFUkUgKGEgPSAxMjMpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJf c3ludGF4MyBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYSwg dGVzdHB1Yl9yZl9teXNjaGVtYSBXSEVSRSAoYSA9IDEyMyk7CitSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOworLS0gZmFpbCAtIGR1cGxpY2F0ZSB0YWJsZXMgYXJlIG5vdCBhbGxvd2Vk IGlmIHRoYXQgdGFibGUgaGFzIGFueSBXSEVSRSByb3ctZmlsdGVycworU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZHVw cyBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChhID0gMSksIHRlc3RwdWJfcmZf dGJsMSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfZHVwcyBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3RibDEg V0hFUkUgKGEgPSAyKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOworUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKKy0tIGZhaWwgLSBhZ2dyZWdhdGUgZnVuY3Rpb25zIG5vdCBhbGxv d2VkIGluIFdIRVJFIGNsYXVzZQorQUxURVIgUFVCTElDQVRJT04gIHRlc3RwdWI1IFNFVCBU QUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPCBBVkcoZSkpOworLS0gZmFpbCAtIGZ1 bmN0aW9ucyBkaXNhbGxvd2VkCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBBREQgVEFC TEUgdGVzdHB1Yl9yZl90Ymw0IFdIRVJFIChsZW5ndGgoZykgPCA2KTsKKy0tIGZhaWwgLSB1 c2VyLWRlZmluZWQgb3BlcmF0b3JzIGRpc2FsbG93ZWQKK0NSRUFURSBGVU5DVElPTiB0ZXN0 cHViX3JmX2Z1bmMoaW50ZWdlciwgaW50ZWdlcikgUkVUVVJOUyBib29sZWFuIEFTICQkIFNF TEVDVCBoYXNoaW50NCgkMSkgPiAkMiAkJCBMQU5HVUFHRSBTUUw7CitDUkVBVEUgT1BFUkFU T1IgPSM+IChQUk9DRURVUkUgPSB0ZXN0cHViX3JmX2Z1bmMsIExFRlRBUkcgPSBpbnRlZ2Vy LCBSSUdIVEFSRyA9IGludGVnZXIpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZP UiBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPSM+IDI3KTsKKy0tIGZhaWwgLSBX SEVSRSBub3QgYWxsb3dlZCBpbiBEUk9QCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBE Uk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA8IDI3KTsKKy0tIGZhaWwgLSBj YW5ub3QgQUxURVIgU0VUIHRhYmxlIHdoaWNoIGlzIGEgbWVtYmVyIG9mIGEgcHJlLWV4aXN0 aW5nIHNjaGVtYQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWI3IEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSB0ZXN0cHVi X3JmX215c2NoZW1hMTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI3IFNFVCBBTEwgVEFC TEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1hMSwgVEFCTEUgdGVzdHB1Yl9yZl9t eXNjaGVtYTEudGVzdHB1Yl9yZl90Ymw2IFdIRVJFIChpIDwgOTkpOworUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKKworRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3RibDE7CitEUk9QIFRB QkxFIHRlc3RwdWJfcmZfdGJsMjsKK0RST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwzOworRFJP UCBUQUJMRSB0ZXN0cHViX3JmX3RibDQ7CitEUk9QIFRBQkxFIHRlc3RwdWJfcmZfbXlzY2hl bWEudGVzdHB1Yl9yZl90Ymw1OworRFJPUCBUQUJMRSB0ZXN0cHViX3JmX215c2NoZW1hMS50 ZXN0cHViX3JmX3RibDY7CitEUk9QIFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1hOworRFJP UCBTQ0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYTE7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3Rw dWI1OworRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViNzsKK0RST1AgT1BFUkFUT1IgPSM+KGlu dGVnZXIsIGludGVnZXIpOworRFJPUCBGVU5DVElPTiB0ZXN0cHViX3JmX2Z1bmMoaW50ZWdl ciwgaW50ZWdlcik7CisKIC0tIFRlc3QgY2FjaGUgaW52YWxpZGF0aW9uIEZPUiBBTEwgVEFC TEVTIHB1YmxpY2F0aW9uCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBD UkVBVEUgVEFCTEUgdGVzdHB1Yl90Ymw0KGEgaW50KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyN19yb3dfZmlsdGVyLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDI3X3Jvd19maWx0ZXIucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uNjRlNzFkMGFkYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyN19yb3dfZmlsdGVyLnBsCkBAIC0wLDAgKzEsMzU3IEBACisjIFRlc3Qg bG9naWNhbCByZXBsaWNhdGlvbiBiZWhhdmlvciB3aXRoIHJvdyBmaWx0ZXJpbmcKK3VzZSBz dHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlIHRlc3RzID0+ IDEwOworCisjIGNyZWF0ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1 Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9w dWJsaXNoZXItPnN0YXJ0OworCisjIGNyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2Rl X3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmli ZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9n aWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgc2V0dXAgc3RydWN0dXJl IG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfMSAoYSBpbnQgcHJpbWFyeSBrZXksIGIg dGV4dCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBUQUJMRSB0YWJfcm93ZmlsdGVyXzIgKGMgaW50IHByaW1hcnkga2V5KSIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRh Yl9yb3dmaWx0ZXJfMyAoYSBpbnQgcHJpbWFyeSBrZXksIGIgYm9vbGVhbikiKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWJf cm93ZmlsdGVyXzQgKGMgaW50IHByaW1hcnkga2V5KSIpOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfcGFy dGl0aW9uZWQgKGEgaW50IHByaW1hcnkga2V5LCBiIGludGVnZXIpIFBBUlRJVElPTiBCWSBS QU5HRShhKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9sZXNzXzEwayAoTElLRSB0YWJfcm93Zmls dGVyX3BhcnRpdGlvbmVkKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQUxURVIgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9wYXJ0aXRpb25lZCBBVFRBQ0gg UEFSVElUSU9OIHRhYl9yb3dmaWx0ZXJfbGVzc18xMGsgRk9SIFZBTFVFUyBGUk9NIChNSU5W QUxVRSkgVE8gKDEwMDAwKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9ncmVhdGVyXzEwayAoTElL RSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0YWJfcm93ZmlsdGVyX3BhcnRp dGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGFiX3Jvd2ZpbHRlcl9ncmVhdGVyXzEwayBGT1Ig VkFMVUVTIEZST00gKDEwMDAwKSBUTyAoTUFYVkFMVUUpIgorKTsKKworIyBzZXR1cCBzdHJ1 Y3R1cmUgb24gc3Vic2NyaWJlcgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWJfcm93ZmlsdGVyXzEgKGEgaW50IHByaW1hcnkg a2V5LCBiIHRleHQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJfMiAoYyBpbnQgcHJpbWFyeSBrZXkp Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFRBQkxFIHRhYl9yb3dmaWx0ZXJfMyAoYSBpbnQgcHJpbWFyeSBrZXksIGIgYm9vbGVhbiki KTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VEFCTEUgdGFiX3Jvd2ZpbHRlcl80IChjIGludCBwcmltYXJ5IGtleSkiKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jv d2ZpbHRlcl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXksIGIgaW50ZWdlcikgUEFS VElUSU9OIEJZIFJBTkdFKGEpIgorKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9sZXNzXzEwayAoTElL RSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRhYl9yb3dmaWx0ZXJfcGFydGl0 aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0YWJfcm93ZmlsdGVyX2xlc3NfMTBrIEZPUiBWQUxV RVMgRlJPTSAoTUlOVkFMVUUpIFRPICgxMDAwMCkiCispOworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0YWJfcm93ZmlsdGVyX2dy ZWF0ZXJfMTBrIChMSUtFIHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQpIgorKTsKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0YWJf cm93ZmlsdGVyX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGFiX3Jvd2ZpbHRlcl9n cmVhdGVyXzEwayBGT1IgVkFMVUVTIEZST00gKDEwMDAwKSBUTyAoTUFYVkFMVUUpIgorKTsK KworIyBzZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl8xIEZPUiBU QUJMRSB0YWJfcm93ZmlsdGVyXzEgV0hFUkUgKGEgPiAxMDAwIEFORCBiIDw+ICdmaWx0ZXJl ZCcpIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki QUxURVIgUFVCTElDQVRJT04gdGFwX3B1Yl8xIEFERCBUQUJMRSB0YWJfcm93ZmlsdGVyXzIg V0hFUkUgKGMgJSA3ID0gMCkiCispOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiB0YXBfcHViXzEgU0VUIFRBQkxFIHRh Yl9yb3dmaWx0ZXJfMSBXSEVSRSAoYSA+IDEwMDAgQU5EIGIgPD4gJ2ZpbHRlcmVkJyksIHRh Yl9yb3dmaWx0ZXJfMiBXSEVSRSAoYyAlIDIgPSAwKSwgdGFiX3Jvd2ZpbHRlcl8zIgorKTsK KworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWJfMiBGT1IgVEFCTEUgdGFiX3Jvd2ZpbHRlcl8yIFdIRVJFIChj ICUgMyA9IDApIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfMyBGT1IgVEFCTEUgdGFiX3Jvd2Zp bHRlcl9wYXJ0aXRpb25lZCBXSEVSRSAoYSA8IDUwMDApIgorKTsKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJf MyBBREQgVEFCTEUgdGFiX3Jvd2ZpbHRlcl9sZXNzXzEwayBXSEVSRSAoYSA8IDYwMDApIgor KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQ VUJMSUNBVElPTiB0YXBfcHViX25vdF91c2VkIEZPUiBUQUJMRSB0YWJfcm93ZmlsdGVyXzEg V0hFUkUgKGEgPCAwKSIKKyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViXzRhIEZPUiBUQUJMRSB0YWJf cm93ZmlsdGVyXzQgV0hFUkUgKGMgJSAyID0gMCkiCispOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfNGIg Rk9SIFRBQkxFIHRhYl9yb3dmaWx0ZXJfNCIKKyk7CisKKyMKKyMgVGhlIGZvbGxvd2luZyBJ TlNFUlRzIGFyZSBleGVjdXRlZCBiZWZvcmUgdGhlIENSRUFURSBTVUJTQ1JJUFRJT04sIHNv IHRoZXNlCisjIFNRTCBjb21tYW5kcyBhcmUgZm9yIHRlc3RpbmcgdGhlIGluaXRpYWwgZGF0 YSBjb3B5IHVzaW5nIGxvZ2ljYWwgcmVwbGljYXRpb24uCisjCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyXzEg KGEsIGIpIFZBTFVFUyAoMSwgJ25vdCByZXBsaWNhdGVkJykiKTsKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJf MSAoYSwgYikgVkFMVUVTICgxNTAwLCAnZmlsdGVyZWQnKSIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRlcl8x IChhLCBiKSBWQUxVRVMgKDE5ODAsICdub3QgZmlsdGVyZWQnKSIpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRl cl8xIChhLCBiKSBTRUxFQ1QgeCwgJ3Rlc3QgJyB8fCB4IEZST00gZ2VuZXJhdGVfc2VyaWVz KDk5MCwxMDAyKSB4IgorKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfMiAoYykgU0VMRUNUIGdlbmVyYXRl X3NlcmllcygxLCAyMCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfMyAoYSwgYikgU0VMRUNUIHgsICh4 ICUgMyA9IDApIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSB4Iik7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93Zmls dGVyXzQgKGMpIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIik7CisKKyMgaW5zZXJ0 IGRhdGEgaW50byBwYXJ0aXRpb25lZCB0YWJsZSBhbmQgZGlyZWN0bHkgb24gdGhlIHBhcnRp dGlvbgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJU IElOVE8gdGFiX3Jvd2ZpbHRlcl9wYXJ0aXRpb25lZCAoYSwgYikgVkFMVUVTKDEsIDEwMCks KDcwMDAsIDEwMSksKDE1MDAwLCAxMDIpLCg1NTAwLCAzMDApIik7Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVy X2xlc3NfMTBrIChhLCBiKSBWQUxVRVMoMiwgMjAwKSwoNjAwNSwgMjAxKSIpOworJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jv d2ZpbHRlcl9ncmVhdGVyXzEwayAoYSwgYikgVkFMVUVTKDE2MDAwLCAxMDMpIik7CisKK215 ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJu YW1lPXBvc3RncmVzJzsKK215ICRhcHBuYW1lICAgICAgICAgICA9ICd0YXBfc3ViJzsKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NS SVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0 aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWJfMSwgdGFwX3B1Yl8yLCB0 YXBfcHViXzMsIHRhcF9wdWJfNGEsIHRhcF9wdWJfNGIiCispOworCiskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIHdhaXQgZm9yIGluaXRpYWwg dGFibGUgc3luY2hyb25pemF0aW9uIHRvIGZpbmlzaAorbXkgJHN5bmNlZF9xdWVyeSA9Cisg ICJTRUxFQ1QgY291bnQoMSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBz cnN1YnN0YXRlIE5PVCBJTiAoJ3InLCAncycpOyI7Ciskbm9kZV9zdWJzY3JpYmVyLT5wb2xs X3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCisgIG9yIGRpZSAiVGlt ZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25pemUgZGF0 YSI7CisKKyMgQ2hlY2sgZXhwZWN0ZWQgcmVwbGljYXRlZCByb3dzIGZvciB0YWJfcm93Zmls dGVyXzEKKyMgdGFwX3B1Yl8xIGZpbHRlciBpczogKGEgPiAxMDAwIEFORCBiIDw+ICdmaWx0 ZXJlZCcpCisjIC0gSU5TRVJUICgxLCAnbm90IHJlcGxpY2F0ZWQnKSAgIE5PLCBiZWNhdXNl IGEgaXMgbm90ID4gMTAwMAorIyAtIElOU0VSVCAoMTUwMCwgJ2ZpbHRlcmVkJykgICAgICBO TywgYmVjYXVzZSBiID09ICdmaWx0ZXJlZCcKKyMgLSBJTlNFUlQgKDE5ODAsICdub3QgZmls dGVyZWQnKSAgWUVTCisjIC0gZ2VuZXJhdGVfc2VyaWVzKDk5MCwxMDAyKSAgICAgIFlFUywg b25seSBmb3IgMTAwMSwxMDAyIGJlY2F1c2UgYSA+IDEwMDAKKyMKK215ICRyZXN1bHQgPQor ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGEs IGIgRlJPTSB0YWJfcm93ZmlsdGVyXzEgT1JERVIgQlkgMSwgMiIpOworaXMoICRyZXN1bHQs IHFxKDEwMDF8dGVzdCAxMDAxCisxMDAyfHRlc3QgMTAwMgorMTk4MHxub3QgZmlsdGVyZWQp LCAnY2hlY2sgaW5pdGlhbCBkYXRhIGNvcHkgZnJvbSB0YWJsZSB0YWJfcm93ZmlsdGVyXzEn KTsKKworIyBDaGVjayBleHBlY3RlZCByZXBsaWNhdGVkIHJvd3MgZm9yIHRhYl9yb3dmaWx0 ZXJfMgorIyB0YXBfcHViXzEgZmlsdGVyIGlzOiAoYyAlIDIgPSAwKQorIyB0YXBfcHViXzIg ZmlsdGVyIGlzOiAoYyAlIDMgPSAwKQorIyBXaGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBwdWJs aWNhdGlvbnMgZm9yIHRoZSBzYW1lIHRhYmxlLCB0aGUgZmlsdGVycworIyBleHByZXNzaW9u cyBhcmUgT1InZWQgdG9nZXRoZXIuIEluIHRoaXMgY2FzZSwgcm93cyBhcmUgcmVwbGljYXRl ZCBpZgorIyBjIHZhbHVlIGlzIGRpdmlkZWQgYnkgMiBPUiAzICgyLCAzLCA0LCA2LCA4LCA5 LCAxMCwgMTIsIDE0LCAxNSwgMTYsIDE4LCAyMCkKKyMKKyRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KGMpLCBt aW4oYyksIG1heChjKSBGUk9NIHRhYl9yb3dmaWx0ZXJfMiIpOworaXMoJHJlc3VsdCwgcXEo MTN8MnwyMCksICdjaGVjayBpbml0aWFsIGRhdGEgY29weSBmcm9tIHRhYmxlIHRhYl9yb3dm aWx0ZXJfMicpOworCisjIENoZWNrIGV4cGVjdGVkIHJlcGxpY2F0ZWQgcm93cyBmb3IgdGFi X3Jvd2ZpbHRlcl80CisjIChzYW1lIHRhYmxlIGluIHR3byBwdWJsaWNhdGlvbnMgYnV0IG9u bHkgb25lIGhhcyBhIGZpbHRlcikuCisjIHRhcF9wdWJfNGEgZmlsdGVyIGlzOiAoYyAlIDIg PSAwKQorIyB0YXBfcHViXzRiIGZpbHRlciBpczogPG5vIGZpbHRlcj4KKyMgRXhwcmVzc2lv bnMgYXJlIE9SJ2VkIHRvZ2V0aGVyIGJ1dCB3aGVuIHRoZXJlIGlzIG5vIGZpbHRlciBpdCBq dXN0IG1lYW5zCisjIE9SIGV2ZXJ5dGhpbmcgLSBlLmcuIHNhbWUgYXMgbm8gZmlsdGVyIGF0 IGFsbC4KKyMgRXhwZWN0IGFsbCByb3dzOiAoMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwg MTApCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBjb3VudChjKSwgbWluKGMpLCBtYXgoYykgRlJPTSB0YWJfcm93Zmls dGVyXzQiKTsKK2lzKCRyZXN1bHQsIHFxKDEwfDF8MTApLCAnY2hlY2sgaW5pdGlhbCBkYXRh IGNvcHkgZnJvbSB0YWJsZSB0YWJfcm93ZmlsdGVyXzQnKTsKKworIyBDaGVjayBleHBlY3Rl ZCByZXBsaWNhdGVkIHJvd3MgZm9yIHRhYl9yb3dmaWx0ZXJfMworIyBUaGVyZSBpcyBubyBm aWx0ZXIuIDEwIHJvd3MgYXJlIGluc2VydGVkLCBzbyAxMCByb3dzIGFyZSByZXBsaWNhdGVk LgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgY291bnQoYSkgRlJPTSB0YWJfcm93ZmlsdGVyXzMiKTsKK2lzKCRyZXN1 bHQsIHFxKDEwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSBjb3B5IGZyb20gdGFibGUgdGFiX3Jv d2ZpbHRlcl8zJyk7CisKKyMgQ2hlY2sgZXhwZWN0ZWQgcmVwbGljYXRlZCByb3dzIGZvciBw YXJ0aXRpb25zCisjIHB1YmxpY2F0aW9uIG9wdGlvbiBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCBpcyBmYWxzZSBzbyB1c2UgdGhlIHJvdyBmaWx0ZXIKKyMgZnJvbSBhIHBhcnRpdGlv bgorIyB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkIGZpbHRlcjogKGEgPCA1MDAwKQorIyB0 YWJfcm93ZmlsdGVyX2xlc3NfMTBrIGZpbHRlcjogICAgKGEgPCA2MDAwKQorIyB0YWJfcm93 ZmlsdGVyX2dyZWF0ZXJfMTBrIGZpbHRlcjogbm8gZmlsdGVyCisjCisjIElOU0VSVCBpbnRv IHRhYl9yb3dmaWx0ZXJfcGFydGl0aW9uZWQ6CisjIC0gSU5TRVJUICgxLDEwMCkgICAgICAg WUVTLCBiZWNhdXNlIDEgPCA2MDAwCisjIC0gSU5TRVJUICg3MDAwLCAxMDEpICAgTk8sICBi ZWNhdXNlIDcwMDAgaXMgbm90IDwgNjAwMAorIyAtIElOU0VSVCAoMTUwMDAsIDEwMikgIFlF UywgYmVjYXVzZSB0YWJfcm93ZmlsdGVyX2dyZWF0ZXJfMTBrIGhhcyBubyBmaWx0ZXIKKyMg LSBJTlNFUlQgKDU1MDAsIDMwMCkgICBZRVMsIGJlY2F1c2UgNTUwMCA8IDYwMDAKKyMKKyMg SU5TRVJUIGRpcmVjdGx5IGludG8gdGFiX3Jvd2ZpbHRlcl9sZXNzXzEwazoKKyMgLSBJTlNF UlQgKDIsIDIwMCkgICAgICBZRVMsIGJlY2F1c2UgMiA8IDYwMDAKKyMgLSBJTlNFUlQgKDYw MDUsIDIwMSkgICBOTywgYmVjYXVzZSA2MDA1IGlzIG5vdCA8IDYwMDAKKyMKKyMgSU5TRVJU IGRpcmVjdGx5IGludG8gdGFiX3Jvd2ZpbHRlcl9ncmVhdGVyXzEwazoKKyMgLSBJTlNFUlQg KDE2MDAwLCAxMDMpICBZRVMsIGJlY2F1c2UgdGFiX3Jvd2ZpbHRlcl9ncmVhdGVyXzEwayBo YXMgbm8gZmlsdGVyCisjCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBhLCBiIEZST00gdGFiX3Jvd2ZpbHRlcl9sZXNz XzEwayBPUkRFUiBCWSAxLCAyIik7CitpcygkcmVzdWx0LCBxcSgxfDEwMAorMnwyMDAKKzU1 MDB8MzAwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSBjb3B5IGZyb20gcGFydGl0aW9uIHRhYl9y b3dmaWx0ZXJfbGVzc18xMGsnKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgYSwgYiBGUk9NIHRhYl9yb3dmaWx0 ZXJfZ3JlYXRlcl8xMGsgT1JERVIgQlkgMSwgMiIpOworaXMoJHJlc3VsdCwgcXEoMTUwMDB8 MTAyCisxNjAwMHwxMDMpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIGNvcHkgZnJvbSBwYXJ0aXRp b24gdGFiX3Jvd2ZpbHRlcl9ncmVhdGVyXzEwaycpOworCisjIFRoZSBmb2xsb3dpbmcgY29t bWFuZHMgYXJlIGV4ZWN1dGVkIGFmdGVyIENSRUFURSBTVUJTQ1JJUFRJT04sIHNvIHRoZXNl IFNRTAorIyBjb21tYW5kcyBhcmUgZm9yIHRlc3Rpbmcgbm9ybWFsIGxvZ2ljYWwgcmVwbGlj YXRpb24gYmVoYXZpb3IuCisjCisjIHRlc3Qgcm93IGZpbHRlciAoSU5TRVJULCBVUERBVEUs IERFTEVURSkKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklO U0VSVCBJTlRPIHRhYl9yb3dmaWx0ZXJfMSAoYSwgYikgVkFMVUVTICg4MDAsICd0ZXN0IDgw MCcpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB0YWJfcm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTYwMCwgJ3Rlc3QgMTYw MCcpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB0YWJfcm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTYwMSwgJ3Rlc3QgMTYw MScpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNF UlQgSU5UTyB0YWJfcm93ZmlsdGVyXzEgKGEsIGIpIFZBTFVFUyAoMTcwMCwgJ3Rlc3QgMTcw MCcpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJVUERB VEUgdGFiX3Jvd2ZpbHRlcl8xIFNFVCBiID0gTlVMTCBXSEVSRSBhID0gMTYwMCIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiVVBEQVRFIHRhYl9yb3dm aWx0ZXJfMSBTRVQgYiA9ICd0ZXN0IDE2MDEgdXBkYXRlZCcgV0hFUkUgYSA9IDE2MDEiKTsK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkRFTEVURSBGUk9N IHRhYl9yb3dmaWx0ZXJfMSBXSEVSRSBhID0gMTcwMCIpOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRlcl8yIChj KSBWQUxVRVMgKDIxKSwgKDIyKSwgKDIzKSwgKDI0KSwgKDI1KSIpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRl cl80IChjKSBWQUxVRVMgKDApLCAoMTEpLCAoMTIpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgZXhwZWN0ZWQgcmVwbGlj YXRlZCByb3dzIGZvciB0YWJfcm93ZmlsdGVyXzIKKyMgdGFwX3B1Yl8xIGZpbHRlciBpczog KGMgJSAyID0gMCkKKyMgdGFwX3B1Yl8yIGZpbHRlciBpczogKGMgJSAzID0gMCkKKyMgV2hl biB0aGVyZSBhcmUgbXVsdGlwbGUgcHVibGljYXRpb25zIGZvciB0aGUgc2FtZSB0YWJsZSwg dGhlIGZpbHRlcnMKKyMgZXhwcmVzc2lvbnMgYXJlIE9SJ2VkIHRvZ2V0aGVyLiBJbiB0aGlz IGNhc2UsIHJvd3MgYXJlIHJlcGxpY2F0ZWQgaWYKKyMgYyB2YWx1ZSBpcyBkaXZpZGVkIGJ5 IDIgT1IgMy4KKyMKKyMgRXhwZWN0IG9yaWdpbmFsIHJvd3MgKDIsIDMsIDQsIDYsIDgsIDks IDEwLCAxMiwgMTQsIDE1LCAxNiwgMTgsIDIwKQorIyBQbHVzICgyMSwgMjIsIDI0KQorIwor JHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgY291bnQoYyksIG1pbihjKSwgbWF4KGMpIEZST00gdGFiX3Jvd2ZpbHRlcl8y Iik7CitpcygkcmVzdWx0LCBxcSgxNnwyfDI0KSwgJ2NoZWNrIHJlcGxpY2F0ZWQgcm93cyB0 byB0YWJfcm93ZmlsdGVyXzInKTsKKworIyBDaGVjayBleHBlY3RlZCByZXBsaWNhdGVkIHJv d3MgZm9yIHRhYl9yb3dmaWx0ZXJfNAorIyAoc2FtZSB0YWJsZSBpbiB0d28gcHVibGljYXRp b25zIGJ1dCBvbmx5IG9uZSBoYXMgYSBmaWx0ZXIpLgorIyB0YXBfcHViXzRhIGZpbHRlciBp czogKGMgJSAyID0gMCkKKyMgdGFwX3B1Yl80YiBmaWx0ZXIgaXM6IDxubyBmaWx0ZXI+Cisj IEV4cHJlc3Npb25zIGFyZSBPUidlZCB0b2dldGhlciBidXQgd2hlbiB0aGVyZSBpcyBubyBm aWx0ZXIgaXQganVzdCBtZWFucworIyBPUiBldmVyeXRoaW5nIC0gZS5nLiBzYW1lIGFzIG5v IGZpbHRlciBhdCBhbGwuCisjIEV4cGVjdCBhbGwgcm93cyBmcm9tIGluaXRpYWwgY29weTog KDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwKQorIyBBbmQgYWxzbyAoMCwgMTEsIDEy KQorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgY291bnQoYyksIG1pbihjKSwgbWF4KGMpIEZST00gdGFiX3Jvd2ZpbHRl cl80Iik7CitpcygkcmVzdWx0LCBxcSgxM3wwfDEyKSwgJ2NoZWNrIHJlcGxpY2F0ZWQgcm93 cyB0byB0YWJfcm93ZmlsdGVyXzQnKTsKKworIyBDaGVjayBleHBlY3RlZCByZXBsaWNhdGVk IHJvd3MgZm9yIHRhYl9yb3dmaWx0ZXJfMQorIyB0YXBfcHViXzEgZmlsdGVyIGlzOiAoYSA+ IDEwMDAgQU5EIGIgPD4gJ2ZpbHRlcmVkJykKKyMKKyMgLSAxMDAxLCAxMDAyLCAxOTgwIGFs cmVhZHkgZXhpc3QgZnJvbSBpbml0aWFsIGRhdGEgY29weQorIyAtIElOU0VSVCAoODAwLCAn dGVzdCA4MDAnKSAgIE5PLCBiZWNhdXNlIDgwMCBpcyBub3QgPiAxMDAwCisjIC0gSU5TRVJU ICgxNjAwLCAndGVzdCAxNjAwJykgWUVTLCBiZWNhdXNlIDE2MDAgPiAxMDAwIGFuZCAndGVz dCAxNjAwJyA8PiAnZmlsdGVyZWQnCisjIC0gSU5TRVJUICgxNjAxLCAndGVzdCAxNjAxJykg WUVTLCBiZWNhdXNlIDE2MDEgPiAxMDAwIGFuZCAndGVzdCAxNjAxJyA8PiAnZmlsdGVyZWQn CisjIC0gSU5TRVJUICgxNzAwLCAndGVzdCAxNzAwJykgWUVTLCBiZWNhdXNlIDE3MDAgPiAx MDAwIGFuZCAndGVzdCAxNzAwJyA8PiAnZmlsdGVyZWQnCisjIC0gVVBEQVRFICgxNjAwLCBO VUxMKSAgICAgICAgTk8sIHJvdyBmaWx0ZXIgZXZhbHVhdGVzIHRvIGZhbHNlIGJlY2F1c2Ug TlVMTCBpcyBub3QgPD4gJ2ZpbHRlcmVkJworIyAtIFVQREFURSAoMTYwMSwgJ3Rlc3QgMTYw MSB1cGRhdGVkJykgWUVTLCBiZWNhdXNlIDE2MDEgPiAxMDAwIGFuZCAndGVzdCAxNjAxIHVw ZGF0ZWQnIDw+ICdmaWx0ZXJlZCcKKyMgLSBERUxFVEUgKDE3MDApICAgICAgICAgICAgICBO Tywgcm93IGZpbHRlciBjb250YWlucyBjb2x1bW4gYiB0aGF0IGlzIG5vdCBwYXJ0IG9mCisj IHRoZSBQSyBvciBSRVBMSUNBIElERU5USVRZIGFuZCBvbGQgdHVwbGUgY29udGFpbnMgYiA9 IE5VTEwsIGhlbmNlLCByb3cgZmlsdGVyCisjIGV2YWx1YXRlcyB0byBmYWxzZQorIworJHJl c3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgYSwgYiBGUk9NIHRhYl9yb3dmaWx0ZXJfMSBPUkRFUiBCWSAxLCAyIik7Citpcygk cmVzdWx0LCBxcSgxMDAxfHRlc3QgMTAwMQorMTAwMnx0ZXN0IDEwMDIKKzE2MDB8dGVzdCAx NjAwCisxNjAxfHRlc3QgMTYwMSB1cGRhdGVkCisxNzAwfHRlc3QgMTcwMAorMTk4MHxub3Qg ZmlsdGVyZWQpLCAnY2hlY2sgcmVwbGljYXRlZCByb3dzIHRvIHRhYmxlIHRhYl9yb3dmaWx0 ZXJfMScpOworCisjIFB1Ymxpc2ggdXNpbmcgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZQorIyBV c2UgYSBkaWZmZXJlbnQgcGFydGl0aW9uZWQgdGFibGUgbGF5b3V0IChleGVyY2lzZSBwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCkKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkFMVEVSIFBVQkxJQ0FUSU9OIHRhcF9wdWJfMyBTRVQgKHB1Ymxpc2hf dmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJUUlVOQ0FURSBUQUJMRSB0YWJfcm93ZmlsdGVyX3BhcnRp dGlvbmVkIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki QUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgUkVGUkVTSCBQVUJMSUNBVElPTiBXSVRIIChj b3B5X2RhdGEgPSB0cnVlKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRlcl9wYXJ0aXRpb25lZCAoYSwgYikg VkFMVUVTKDQwMDAsIDQwMCksKDQwMDEsIDQwMSksKDQwMDIsIDQwMikiKTsKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRhYl9yb3dm aWx0ZXJfbGVzc18xMGsgKGEsIGIpIFZBTFVFUyg0NTAwLCA0NTApIik7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfcm93Zmls dGVyX2xlc3NfMTBrIChhLCBiKSBWQUxVRVMoNTYwMCwgMTIzKSIpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFiX3Jvd2ZpbHRl cl9ncmVhdGVyXzEwayAoYSwgYikgVkFMVUVTKDE0MDAwLCAxOTUwKSIpOworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiVVBEQVRFIHRhYl9yb3dmaWx0ZXJf bGVzc18xMGsgU0VUIGIgPSAzMCBXSEVSRSBhID0gNDAwMSIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiREVMRVRFIEZST00gdGFiX3Jvd2ZpbHRlcl9s ZXNzXzEwayBXSEVSRSBhID0gNDAwMiIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIGV4cGVjdGVkIHJlcGxpY2F0ZWQgcm93 cyBmb3IgcGFydGl0aW9ucworIyBwdWJsaWNhdGlvbiBvcHRpb24gcHVibGlzaF92aWFfcGFy dGl0aW9uX3Jvb3QgaXMgdHJ1ZSBzbyB1c2UgdGhlIHJvdyBmaWx0ZXIKKyMgZnJvbSB0aGUg cm9vdCBwYXJ0aXRpb25lZCB0YWJsZQorIyB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkIGZp bHRlcjogKGEgPCA1MDAwKQorIyB0YWJfcm93ZmlsdGVyX2xlc3NfMTBrIGZpbHRlcjogICAg KGEgPCA2MDAwKQorIyB0YWJfcm93ZmlsdGVyX2dyZWF0ZXJfMTBrIGZpbHRlcjogbm8gZmls dGVyCisjCisjIEFmdGVyIFRSVU5DQVRFLCBSRUZSRVNIIFBVQkxJQ0FUSU9OLCB0aGUgaW5p dGlhbCBkYXRhIGNvcHkgd2lsbCBhcHBseSB0aGUKKyMgcGFydGl0aW9uZWQgdGFibGUgcm93 IGZpbHRlci4KKyMgLSBJTlNFUlQgKDEsIDEwMCkgICAgICBZRVMsIDEgPCA1MDAwCisjIC0g SU5TRVJUICg3MDAwLCAxMDEpICAgTk8sIDcwMDAgaXMgbm90IDwgNTAwMAorIyAtIElOU0VS VCAoMTUwMDAsIDEwMikgIE5PLCAxNTAwMCBpcyBub3QgPCA1MDAwCisjIC0gSU5TRVJUICg1 NTAwLCAzMDApICAgTk8sIDU1MDAgaXMgbm90IDwgNTAwMAorIyAtIElOU0VSVCAoMiwgMjAw KSAgICAgIFlFUywgMiA8IDUwMDAKKyMgLSBJTlNFUlQgKDYwMDUsIDIwMSkgICBOTywgNjAw NSBpcyBub3QgPCA1MDAwCisjIC0gSU5TRVJUICgxNjAwMCwgMTAzKSAgTk8sIDE2MDAwIGlz IG5vdCA8IDUwMDAKKyMKKyMgRXhlY3V0ZSBTUUwgY29tbWFuZHMgYWZ0ZXIgaW5pdGlhbCBk YXRhIGNvcHkgZm9yIHRlc3RpbmcgdGhlIGxvZ2ljYWwKKyMgcmVwbGljYXRpb24gYmVoYXZp b3IuCisjIC0gSU5TRVJUICg0MDAwLCA0MDApICAgIFlFUywgNDAwMCA8IDUwMDAKKyMgLSBJ TlNFUlQgKDQwMDEsIDQwMSkgICAgWUVTLCA0MDAxIDwgNTAwMAorIyAtIElOU0VSVCAoNDAw MiwgNDAyKSAgICBZRVMsIDQwMDIgPCA1MDAwCisjIC0gSU5TRVJUICg0NTAwLCA0NTApICAg IFlFUywgNDUwMCA8IDUwMDAKKyMgLSBJTlNFUlQgKDU2MDAsIDEyMykgICAgTk8sIDU2MDAg aXMgbm90IDwgNTAwMAorIyAtIElOU0VSVCAoMTQwMDAsIDE5NTApICBOTywgMTYwMDAgaXMg bm90IDwgNTAwMAorIyAtIFVQREFURSAoNDAwMSkgICAgICAgICBZRVMsIDQwMDEgPCA1MDAw CisjIC0gREVMRVRFICg0MDAyKSAgICAgICAgIFlFUywgNDAwMiA8IDUwMDAKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IGEsIGIgRlJPTSB0YWJfcm93ZmlsdGVyX3BhcnRpdGlvbmVkIE9SREVSIEJZIDEsIDIiKTsK K2lzKCAkcmVzdWx0LCBxcSgxfDEwMAorMnwyMDAKKzQwMDB8NDAwCis0MDAxfDMwCis0NTAw fDQ1MCksICdjaGVjayBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCBiZWhhdmlvcicpOwor Ciskbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdmYXN0Jyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0 b3AoJ2Zhc3QnKTsKLS0gCjIuMjAuMQoK --04cc277225e34ea480c6f61c2553d463 Content-Disposition: attachment;filename="v50-0002-fixes-0001.patch" Content-Type: text/x-patch; name="v50-0002-fixes-0001.patch" Content-Transfer-Encoding: BASE64 RnJvbSBhNzE2NjhiODVlYWM3YjU5YjMzYTBmZGQ1N2UyNDJmMjc4YjYxMTA3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IEZyaSwgMTcgRGVjIDIwMjEgMTY6MDY6NTEgLTAzMDAK U3ViamVjdDogW1BBVENIIHY1MCAyLzhdIGZpeGVzIDAwMDEKCi0tLQogZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbCAgICB8ICA3ICsrKy0tLS0KIGRvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgfCAyMyArKysrKysrKysrKy0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jICAgICAg fCAgNiArKystLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMgfCAxMCArKysrLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRp b24ub3V0ICAgfCAxMCArKysrLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbCAgICAgICAgfCAgNCArKy0tCiA2IGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlv bnMoKyksIDMwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJs aWNhdGlvbi5zZ21sCmluZGV4IDVhZWVlMjMwOWQuLjFjMGQ2MTExY2EgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfcHVibGljYXRpb24uc2dtbApAQCAtMjM5LDEwICsyMzksOSBA QCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPgogICAgPGNvbW1hbmQ+REVMRVRFPC9jb21tYW5kPiBvcGVyYXRp b25zIHRvIGJlIHB1Ymxpc2hlZC4gCiAgICBGb3IgcHVibGljYXRpb24gb2YgPGNvbW1hbmQ+ SU5TRVJUPC9jb21tYW5kPiBvcGVyYXRpb25zLCBhbnkgY29sdW1uCiAgICBtYXkgYmUgdXNl ZCBpbiB0aGUgPGxpdGVyYWw+V0hFUkU8L2xpdGVyYWw+IGNsYXVzZS4KLSAgIElmIG51bGxh YmxlIGNvbHVtbnMgYXJlIHByZXNlbnQgaW4gdGhlIDxsaXRlcmFsPldIRVJFPC9saXRlcmFs PiBjbGF1c2UsCi0gICBwb3NzaWJsZSBOVUxMIHZhbHVlcyBzaG91bGQgYmUgYWNjb3VudGVk IGZvciBpbiBleHByZXNzaW9ucywgdG8gYXZvaWQKLSAgIHVuZXhwZWN0ZWQgcmVzdWx0cywg YmVjYXVzZSA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiB2YWx1ZXMgY2FuIGNhdXNlIAotICAg dGhvc2UgZXhwcmVzc2lvbnMgdG8gZXZhbHVhdGUgdG8gZmFsc2UuIAorICAgQSBudWxsYWJs ZSBjb2x1bW4gaW4gdGhlIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2UgY291bGQg Y2F1c2UgdGhlCisgICBleHByZXNzaW9uIHRvIGV2YWx1YXRlIHRvIGZhbHNlOyBhdm9pZCB1 c2luZyBjb2x1bW5zIHdpdGhvdXQgbm90LW51bGwKKyAgIGNvbnN0cmFpbnRzIGluIHRoZSA8 bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlLgogICAgQSA8bGl0ZXJhbD5XSEVSRTwv bGl0ZXJhbD4gY2xhdXNlIGFsbG93cyBzaW1wbGUgZXhwcmVzc2lvbnMuIFRoZSBzaW1wbGUK ICAgIGV4cHJlc3Npb24gY2Fubm90IGNvbnRhaW4gYW55IGFnZ3JlZ2F0ZSBvciB3aW5kb3cg ZnVuY3Rpb25zLCBub24taW1tdXRhYmxlCiAgICBmdW5jdGlvbnMsIHVzZXItZGVmaW5lZCB0 eXBlcywgb3BlcmF0b3JzIG9yIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggZGIyNTVmMzIzYS4uMTdjNDYwNjc4NSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTMyOCwx NyArMzI4LDE4IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgIDxwYXJhPgogICAg SWYgYW55IHRhYmxlIGluIHRoZSBwdWJsaWNhdGlvbiBoYXMgYSA8bGl0ZXJhbD5XSEVSRTwv bGl0ZXJhbD4gY2xhdXNlLCByb3dzCiAgICB0aGF0IGRvIG5vdCBzYXRpc2Z5IHRoZSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+Ci0g ICB3aWxsIG5vdCBiZSBwdWJsaXNoZWQgKGkuZS4gdGhleSB3aWxsIGJlIGZpbHRlcmVkIG91 dCkuCi0gICBJZiB0aGUgc3Vic2NyaXB0aW9uIGhhcyBzZXZlcmFsIHB1YmxpY2F0aW9ucyBp biB3aGljaCB0aGUgc2FtZSB0YWJsZSBoYXMgYmVlbgotICAgcHVibGlzaGVkIHdpdGggZGlm ZmVyZW50IDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2VzLCB0aG9zZSBleHByZXNz aW9ucwotICAgKGZvciB0aGUgc2FtZSBwdWJsaXNoIG9wZXJhdGlvbikgZ2V0IE9SJ2VkIHRv Z2V0aGVyIHNvIHRoYXQgcm93cyBzYXRpc2Z5aW5nIGFueQotICAgb2YgdGhlIGV4cHJlc3Np b25zIHdpbGwgYmUgcHVibGlzaGVkLiBBbHNvLCBpZiBvbmUgb2YgdGhlIHB1YmxpY2F0aW9u cyBmb3IgdGhlCi0gICBzYW1lIHRhYmxlIGhhcyBubyA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJh bD4gY2xhdXNlIGF0IGFsbCwgb3IgaXMgYSA8bGl0ZXJhbD5GT1IKLSAgIEFMTCBUQUJMRVM8 L2xpdGVyYWw+IG9yIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJh bD4gcHVibGljYXRpb24sCi0gICB0aGVuIGFsbCBvdGhlciA8bGl0ZXJhbD5XSEVSRTwvbGl0 ZXJhbD4gY2xhdXNlcyAoZm9yIHRoZSBzYW1lIHB1Ymxpc2ggb3BlcmF0aW9uKQotICAgYmVj b21lIHJlZHVuZGFudC4KLSAgIElmIHRoZSBzdWJzY3JpYmVyIGlzIGEgPHByb2R1Y3RuYW1l PlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiB2ZXJzaW9uIGJlZm9yZSAxNQotICAgdGhlbiBh bnkgcm93IGZpbHRlcmluZyBpcyBpZ25vcmVkIGR1cmluZyB0aGUgaW5pdGlhbCBkYXRhIHN5 bmNocm9uaXphdGlvbiBwaGFzZS4KKyAgIHdpbGwgbm90IGJlIHB1Ymxpc2hlZC4gSWYgdGhl IHN1YnNjcmlwdGlvbiBoYXMgc2V2ZXJhbCBwdWJsaWNhdGlvbnMgaW4gd2hpY2gKKyAgIHRo ZSBzYW1lIHRhYmxlIGhhcyBiZWVuIHB1Ymxpc2hlZCB3aXRoIGRpZmZlcmVudCA8bGl0ZXJh bD5XSEVSRTwvbGl0ZXJhbD4KKyAgIGNsYXVzZXMsIGEgcm93IHdpbGwgYmUgcHVibGlzaGVk IGlmIGFueSBvZiB0aGUgZXhwcmVzc2lvbnMgKHJlZmVycmluZyB0byB0aGF0CisgICBwdWJs aXNoIG9wZXJhdGlvbikgaXMgc2F0aXNmaWVkLiBJbiB0aGlzIGNhc2Ugb2YgZGlmZmVyZW50 CisgICA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlcywgaWYgb25lIG9mIHRoZSBw dWJsaWNhdGlvbnMgaGFzIG5vCisgICA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNl IChyZWZlcnJpbmcgdG8gdGhhdCBwdWJsaXNoIG9wZXJhdGlvbikgb3IgdGhlCisgICBwdWJs aWNhdGlvbiBpcyBkZWNsYXJlZCBhcyA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJh bD4gb3IKKyAgIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4s IHJvd3MgYXJlIGFsd2F5cyBwdWJsaXNoZWQKKyAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGRlZmlu aXRpb24gb2YgdGhlIG90aGVyIGV4cHJlc3Npb25zLgorICAgSWYgdGhlIHN1YnNjcmliZXIg aXMgYSA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHZlcnNpb24gYmVm b3JlCisgICAxNSB0aGVuIGFueSByb3cgZmlsdGVyaW5nIGlzIGlnbm9yZWQgZHVyaW5nIHRo ZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9uCisgICBwaGFzZS4KICAgPC9wYXJhPgog CiAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1Ymxp Y2F0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMK aW5kZXggOWNhNzQzYzZkMi4uYTQzYWQ0MWM2YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMKQEAgLTk4MywxMSArOTgzLDExIEBAIE9wZW5UYWJsZUxpc3Qo TGlzdCAqdGFibGVzKQogCQkgKi8KIAkJaWYgKGxpc3RfbWVtYmVyX29pZChyZWxpZHMsIG15 cmVsaWQpKQogCQl7Ci0JCQkvKiBEaXNhbGxvdyBkdXBsaWNhdGUgdGFibGVzIGlmIHRoZXJl IGFyZSBhbnkgd2l0aCByb3ctZmlsdGVycy4gKi8KKwkJCS8qIERpc2FsbG93IGR1cGxpY2F0 ZSB0YWJsZXMgaWYgdGhlcmUgYXJlIGFueSB3aXRoIHJvdyBmaWx0ZXJzLiAqLwogCQkJaWYg KHQtPndoZXJlQ2xhdXNlIHx8IGxpc3RfbWVtYmVyX29pZChyZWxpZHNfd2l0aF9yZiwgbXly ZWxpZCkpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQ TElDQVRFX09CSkVDVCksCi0JCQkJCQkgZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRh bnQgcm93LWZpbHRlcnMgZm9yIFwiJXNcIiIsCisJCQkJCQkgZXJybXNnKCJjb25mbGljdGlu ZyBvciByZWR1bmRhbnQgV0hFUkUgY2xhdXNlcyBmb3IgdGFibGUgXCIlc1wiIiwKIAkJCQkJ CQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIAogCQkJdGFibGVfY2xvc2Uo cmVsLCBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2spOwpAQCAtMTE2NCw3ICsxMTY0LDcgQEAg UHVibGljYXRpb25Ecm9wVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNz aW5nX29rKQogCQlpZiAocHVicmVsLT53aGVyZUNsYXVzZSkKIAkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKLQkJCQkJIGVycm1zZygi aW52YWxpZCB1c2Ugb2YgV0hFUkUgcm93LWZpbHRlciBpbiBBTFRFUiBQVUJMSUNBVElPTiAu Li4gRFJPUCBUQUJMRSIpKSk7CisJCQkJCSBlcnJtc2coImNhbm5vdCB1c2UgYSBXSEVSRSBj bGF1c2Ugd2hlbiByZW1vdmluZyBhIHRhYmxlIGZyb20gcHVibGljYXRpb24iKSkpOwogCiAJ CU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIHByaWQp OwogCQlwZXJmb3JtRGVsZXRpb24oJm9iaiwgRFJPUF9DQVNDQURFLCAwKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDJmYTA4ZTcy NzguLmJlNWVjMWQyOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRw dXQvcGdvdXRwdXQuYwpAQCAtNjk4LDcgKzY5OCw3IEBAIHBnb3V0cHV0X3Jvd19maWx0ZXJf aW5pdF9leHByKE5vZGUgKnJmbm9kZSkKIAlpZiAoZXhwciA9PSBOVUxMKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfQ0FOTk9UX0NPRVJDRSksCi0JCQkJIGVy cm1zZygicm93IGZpbHRlciByZXR1cm5zIHR5cGUgJXMgdGhhdCBjYW5ub3QgYmUgY2FzdCB0 byB0aGUgZXhwZWN0ZWQgdHlwZSAlcyIsCisJCQkJIGVycm1zZygicm93IGZpbHRlciByZXR1 cm5zIHR5cGUgJXMgdGhhdCBjYW5ub3QgYmUgY29lcmNlZCB0byB0aGUgZXhwZWN0ZWQgdHlw ZSAlcyIsCiAJCQkJCQlmb3JtYXRfdHlwZV9iZShleHBydHlwZSksCiAJCQkJCQlmb3JtYXRf dHlwZV9iZShCT09MT0lEKSksCiAJCQkJIGVycmhpbnQoIllvdSB3aWxsIG5lZWQgdG8gcmV3 cml0ZSB0aGUgcm93IGZpbHRlci4iKSkpOwpAQCAtODE0LDcgKzgxNCw3IEBAIHBnb3V0cHV0 X3Jvd19maWx0ZXIoZW51bSBSZW9yZGVyQnVmZmVyQ2hhbmdlVHlwZSBjaGFuZ2V0eXBlLCBQ R091dHB1dERhdGEgKmRhdGEsCiAJCQlib29sCQlyZmlzbnVsbDsKIAogCQkJLyoKLQkJCSAq IExvb2t1cCBpZiB0aGVyZSBpcyBhIHJvdy1maWx0ZXIsIGFuZCBpZiB5ZXMgcmVtZW1iZXIg aXQgaW4gYSBsaXN0IChwZXIKKwkJCSAqIExvb2t1cCBpZiB0aGVyZSBpcyBhIHJvdyBmaWx0 ZXIsIGFuZCBpZiB5ZXMgcmVtZW1iZXIgaXQgaW4gYSBsaXN0IChwZXIKIAkJCSAqIHB1YmFj dGlvbikuIElmIG5vLCB0aGVuIHJlbWVtYmVyIHRoZXJlIHdhcyBubyBmaWx0ZXIgZm9yIHRo aXMgcHViYWN0aW9uLgogCQkJICogQ29kZSBmb2xsb3dpbmcgdGhpcyAncHVibGljYXRpb25z JyBsb29wIHdpbGwgY29tYmluZSBhbGwgZmlsdGVycy4KIAkJCSAqLwpAQCAtODQ4LDcgKzg0 OCw3IEBAIHBnb3V0cHV0X3Jvd19maWx0ZXIoZW51bSBSZW9yZGVyQnVmZmVyQ2hhbmdlVHlw ZSBjaGFuZ2V0eXBlLCBQR091dHB1dERhdGEgKmRhdGEsCiAJCQkJfQogCQkJCWVsc2UKIAkJ CQl7Ci0JCQkJCS8qIFJlbWVtYmVyIHdoaWNoIHB1YmFjdGlvbnMgaGF2ZSBubyByb3ctZmls dGVyLiAqLworCQkJCQkvKiBSZW1lbWJlciB3aGljaCBwdWJhY3Rpb25zIGhhdmUgbm8gcm93 IGZpbHRlci4gKi8KIAkJCQkJaWYgKHB1Yi0+cHViYWN0aW9ucy5wdWJpbnNlcnQpCiAJCQkJ CQlub19maWx0ZXJbaWR4X2luc10gPSB0cnVlOwogCQkJCQlpZiAocHViLT5wdWJhY3Rpb25z LnB1YnVwZGF0ZSkKQEAgLTg1Niw3ICs4NTYsNyBAQCBwZ291dHB1dF9yb3dfZmlsdGVyKGVu dW0gUmVvcmRlckJ1ZmZlckNoYW5nZVR5cGUgY2hhbmdldHlwZSwgUEdPdXRwdXREYXRhICpk YXRhLAogCQkJCQlpZiAocHViLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSkKIAkJCQkJCW5vX2Zp bHRlcltpZHhfZGVsXSA9IHRydWU7CiAKLQkJCQkJLyogUXVpY2sgZXhpdCBsb29wIGlmIGFs bCBwdWJhY3Rpb25zIGhhdmUgbm8gcm93LWZpbHRlci4gKi8KKwkJCQkJLyogUXVpY2sgZXhp dCBsb29wIGlmIGFsbCBwdWJhY3Rpb25zIGhhdmUgbm8gcm93IGZpbHRlci4gKi8KIAkJCQkJ aWYgKG5vX2ZpbHRlcltpZHhfaW5zXSAmJiBub19maWx0ZXJbaWR4X3VwZF0gJiYgbm9fZmls dGVyW2lkeF9kZWxdKQogCQkJCQl7CiAJCQkJCQlSZWxlYXNlU3lzQ2FjaGUocmZ0dXBsZSk7 CkBAIC05NDcsNyArOTQ3LDcgQEAgcGdvdXRwdXRfcm93X2ZpbHRlcihlbnVtIFJlb3JkZXJC dWZmZXJDaGFuZ2VUeXBlIGNoYW5nZXR5cGUsIFBHT3V0cHV0RGF0YSAqZGF0YSwKIAlFeGVj U3RvcmVIZWFwVHVwbGUobmV3dHVwbGUgPyBuZXd0dXBsZSA6IG9sZHR1cGxlLCBlY3h0LT5l Y3h0X3NjYW50dXBsZSwgZmFsc2UpOwogCiAJLyoKLQkgKiBOT1RFOiBNdWx0aXBsZSBwdWJs aWNhdGlvbiByb3ctZmlsdGVycyBoYXZlIGFscmVhZHkgYmVlbiBjb21iaW5lZCB0byBhCisJ ICogTk9URTogTXVsdGlwbGUgcHVibGljYXRpb24gcm93IGZpbHRlcnMgaGF2ZSBhbHJlYWR5 IGJlZW4gY29tYmluZWQgdG8gYQogCSAqIHNpbmdsZSBleHByc3RhdGUgKGZvciB0aGlzIHB1 YmFjdGlvbikuCiAJICovCiAJaWYgKGVudHJ5LT5leHByc3RhdGVbY2hhbmdldHlwZV0pCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IDVhNDkw MDNhZTQuLjAyNDkxYzRiNmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVi bGljYXRpb24ub3V0CkBAIC0zMzMsNyArMzMzLDcgQEAgVGFibGVzOgogICAgICJ0ZXN0cHVi X3JmX215c2NoZW1hLnRlc3RwdWJfcmZfdGJsNSIgV0hFUkUgKGggPCA5OTkpCiAKIERST1Ag UFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgyOwotLS0gZmFpbCAtIHNjaGVtYXMgYXJlIG5v dCBhbGxvd2VkIFdIRVJFIHJvdy1maWx0ZXIKKy0tIGZhaWwgLSBzY2hlbWFzIGRvbid0IGFs bG93IFdIRVJFIGNsYXVzZQogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwog Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MyBGT1IgQUxMIFRBQkxFUyBJTiBT Q0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYSBXSEVSRSAoYSA9IDEyMyk7CiBFUlJPUjogIHN5 bnRheCBlcnJvciBhdCBvciBuZWFyICJXSEVSRSIKQEAgLTM0NCwxMiArMzQ0LDEyIEBAIEVS Uk9SOiAgV0hFUkUgY2xhdXNlIGZvciBzY2hlbWEgbm90IGFsbG93ZWQKIExJTkUgMTogLi4u YXgzIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1hLCB0ZXN0 cHViX3JmLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKLS0tIGZh aWwgLSBkdXBsaWNhdGUgdGFibGVzIGFyZSBub3QgYWxsb3dlZCBpZiB0aGF0IHRhYmxlIGhh cyBhbnkgV0hFUkUgcm93LWZpbHRlcnMKKy0tIGZhaWwgLSBkdXBsaWNhdGUgdGFibGVzIGFy ZSBub3QgYWxsb3dlZCBpZiB0aGF0IHRhYmxlIGhhcyBhbnkgV0hFUkUgY2xhdXNlCiBTRVQg Y2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9kdXBzIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hFUkUgKGEgPSAxKSwgdGVz dHB1Yl9yZl90YmwxIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7Ci1FUlJPUjogIGNvbmZs aWN0aW5nIG9yIHJlZHVuZGFudCByb3ctZmlsdGVycyBmb3IgInRlc3RwdWJfcmZfdGJsMSIK K0VSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IFdIRVJFIGNsYXVzZXMgZm9yIHRh YmxlICJ0ZXN0cHViX3JmX3RibDEiCiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9kdXBz IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfdGJsMSBXSEVSRSAoYSA9 IDIpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7Ci1FUlJPUjogIGNvbmZsaWN0aW5nIG9y IHJlZHVuZGFudCByb3ctZmlsdGVycyBmb3IgInRlc3RwdWJfcmZfdGJsMSIKK0VSUk9SOiAg Y29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IFdIRVJFIGNsYXVzZXMgZm9yIHRhYmxlICJ0ZXN0 cHViX3JmX3RibDEiCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogLS0gZmFpbCAtIGFn Z3JlZ2F0ZSBmdW5jdGlvbnMgbm90IGFsbG93ZWQgaW4gV0hFUkUgY2xhdXNlCiBBTFRFUiBQ VUJMSUNBVElPTiAgdGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAo ZSA8IEFWRyhlKSk7CkBAIC0zNzAsNyArMzcwLDcgQEAgTElORSAxOiAuLi5JQ0FUSU9OIHRl c3RwdWI2IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPSM+IDI3KTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KIC0tIGZhaWwgLSBXSEVSRSBub3QgYWxsb3dlZCBpbiBEUk9QCiBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViNSBEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAo ZSA8IDI3KTsKLUVSUk9SOiAgaW52YWxpZCB1c2Ugb2YgV0hFUkUgcm93LWZpbHRlciBpbiBB TFRFUiBQVUJMSUNBVElPTiAuLi4gRFJPUCBUQUJMRQorRVJST1I6ICBjYW5ub3QgdXNlIGEg V0hFUkUgY2xhdXNlIHdoZW4gcmVtb3ZpbmcgYSB0YWJsZSBmcm9tIHB1YmxpY2F0aW9uCiAt LSBmYWlsIC0gY2Fubm90IEFMVEVSIFNFVCB0YWJsZSB3aGljaCBpcyBhIG1lbWJlciBvZiBh IHByZS1leGlzdGluZyBzY2hlbWEKIFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9S JzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNyBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hF TUEgdGVzdHB1Yl9yZl9teXNjaGVtYTE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlv bi5zcWwKaW5kZXggNDdiZGJhODZhYy4uOTE4NWQ1YTFkMiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMTcxLDEyICsxNzEsMTIgQEAgQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWJfc3ludGF4MiBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCB0ZXN0 cHViX3JmX215c2NoZW0KIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0 cHViX3N5bnRheDIKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgyOwotLS0gZmFp bCAtIHNjaGVtYXMgYXJlIG5vdCBhbGxvd2VkIFdIRVJFIHJvdy1maWx0ZXIKKy0tIGZhaWwg LSBzY2hlbWFzIGRvbid0IGFsbG93IFdIRVJFIGNsYXVzZQogU0VUIGNsaWVudF9taW5fbWVz c2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MyBG T1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYSBXSEVSRSAoYSA9 IDEyMyk7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgzIEZPUiBBTEwgVEFC TEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1hLCB0ZXN0cHViX3JmX215c2NoZW1h IFdIRVJFIChhID0gMTIzKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7Ci0tLSBmYWls IC0gZHVwbGljYXRlIHRhYmxlcyBhcmUgbm90IGFsbG93ZWQgaWYgdGhhdCB0YWJsZSBoYXMg YW55IFdIRVJFIHJvdy1maWx0ZXJzCistLSBmYWlsIC0gZHVwbGljYXRlIHRhYmxlcyBhcmUg bm90IGFsbG93ZWQgaWYgdGhhdCB0YWJsZSBoYXMgYW55IFdIRVJFIGNsYXVzZQogU0VUIGNs aWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZHVwcyBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChhID0gMSksIHRlc3Rw dWJfcmZfdGJsMSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwogQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZHVwcyBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3Jm X3RibDEgV0hFUkUgKGEgPSAyKSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwotLSAKMi4y MC4xCgo= --04cc277225e34ea480c6f61c2553d463 Content-Disposition: attachment;filename="v50-0003-Row-filter-validation.patch" Content-Type: text/x-patch; name="v50-0003-Row-filter-validation.patch" Content-Transfer-Encoding: BASE64 RnJvbSBkODE0MzM2ZjYxYzM0NjNkMWYzY2JjNzM4YTk4MWNmMTU5YTMxMmYxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBTbWl0aCA8cGV0ZXIuYi5zbWl0aEBmdWpp dHN1LmNvbT4KRGF0ZTogRnJpLCAxNyBEZWMgMjAyMSAyMDozNzozMiArMTEwMApTdWJqZWN0 OiBbUEFUQ0ggdjUwIDMvOF0gUm93LWZpbHRlciB2YWxpZGF0aW9uCgpUaGlzIHBhdGNoIGlt cGxlbWVudHMgcGFyc2UtdHJlZSAid2Fsa2VycyIgdG8gdmFsaWRhdGUgYSByb3ctZmlsdGVy LgoKRXhwcmVzc2lvbiBOb2RlLWtpbmQgdmFsaWRhdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgpPbmx5IHNpbXBsZSBmaWx0ZXIgZXhwcmVzc2lvbnMgYXJlIHBlcm1p dHRlZC4gU3BlY2lmaWNhbGx5OgotIG5vIHVzZXItZGVmaW5lZCBvcGVyYXRvcnMuCi0gbm8g dXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4KLSBubyB1c2VyLWRlZmluZWQgdHlwZXMuCi0gbm8g c3lzdGVtIGNvbHVtbnMuCi0gbm8gc3lzdGVtIGZ1bmN0aW9ucyAodW5sZXNzIHRoZXkgYXJl IGltbXV0YWJsZSkuIFNlZSBkZXNpZ24gZGVjaXNpb24gYXQgWzFdLgpbMV0gaHR0cHM6Ly93 d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUE0ZUsxJTJCWG9ENDliejUtMlR0aUQw dWdxNFBIU1JYMkQxc0xQUl9YNExOdGRNYzRPUSU0MG1haWwuZ21haWwuY29tCgpQZXJtaXRz IG9ubHkgc2ltcGxlIG5vZGVzIGluY2x1ZGluZzoKTGlzdCwgQ29uc3QsIEJvb2xFeHByLCBO dWxsSWZFeHByLCBOdWxsVGVzdCwgQm9vbGVhblRlc3QsIENvYWxlc2NlRXhwciwKQ2FzZUV4 cHIsIENhc2VUZXN0RXhwciwgTWluTWF4RXhwciwgQXJyYXlFeHByLCBTY2FsYXJBcnJheU9w RXhwciwgWG1sRXhwci4KCkF1dGhvcjogUGV0ZXIgU21pdGgsIEV1bGVyIFRhdmVpcmEKClJF UExJQ0EgSURFTlRJVFkgdmFsaWRhdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K CkZvciBwdWJsaXNoIG1vZGUgImRlbGV0ZSIgInVwZGF0ZSIsIHZhbGlkYXRlIHRoYXQgYW55 IGNvbHVtbnMgcmVmZXJlbmNlZAppbiB0aGUgZmlsdGVyIGV4cHJlc3Npb24gbXVzdCBiZSBw YXJ0IG9mIFJFUExJQ0EgSURFTlRJVFkgb3IgUHJpbWFyeSBLZXkuCgpSb3cgZmlsdGVyIGNv bHVtbnMgaW52YWxpZGF0aW9uIGlzIGRvbmUgaW4gQ2hlY2tDbWRSZXBsaWNhSWRlbnRpdHks IHNvIHRoYXQKdGhlIGludmFsaWRhdGlvbiBpcyBleGVjdXRlZCBvbmx5IHdoZW4gYWN0dWFs IFVQREFURSBvciBERUxFVEUgZXhlY3V0ZWQgb24KdGhlIHB1Ymxpc2hlZCByZWxhdGlvbi4g VGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGV4aXN0aW5nIGNoZWNrIGFib3V0CnJlcGxp Y2EgaWRlbnRpdHkgYW5kIGNhbiBkZXRlY3QgdGhlIGNoYW5nZSByZWxhdGVkIHRvIHRoZSBy b3cgZmlsdGVyIGluIHRpbWUuCgpDYWNoZSB0aGUgcmVzdWx0cyBvZiB0aGUgdmFsaWRhdGlv biBmb3Igcm93IGZpbHRlciBjb2x1bW5zIGluIHJlbGNhY2hlIHRvCnJlZHVjZSB0aGUgY29z dCBvZiB0aGUgdmFsaWRhdGlvbi4gSXQgaXMgc2FmZSB0byBkbyB0aGlzIGJlY2F1c2UgZXZl cnkKb3BlcmF0aW9uIHRoYXQgY2hhbmdlIHRoZSByb3cgZmlsdGVyIGFuZCByZXBsaWNhIGlk ZW50aXR5IHdpbGwgaW52YWxpZGF0ZSB0aGUKcmVsY2FjaGUuCgpBdXRob3I6IEhvdSB6agot LS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgICAgfCAxNzcg KysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5j ICAgICAgfCAgMzYgKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAg ICAgICAgIHwgIDEwIC0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAg ICAgICAgfCAgMjEgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAg ICAgICAgfCAgIDMgLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX29wZXIuYyAgICAgICAg ICAgICB8ICAgNyAtCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYyAgICAg ICAgIHwgICA5IC0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMgfCAgMjcgKy0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jICAgICAg ICAgIHwgMjQyICsrKysrKysrKysrKysrKysrLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmggICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2Vfbm9kZS5oICAgICAgICAgICAgIHwgICAxIC0KIHNyYy9pbmNsdWRlL3V0aWxzL3JlbC5o ICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2Fj aGUuaCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dCAgIHwgMjI3ICsrKysrKysrKysrKysrLS0tLQogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgICB8IDE3NCArKysrKysrKysrKyst LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI3X3Jvd19maWx0ZXIucGwgICB8ICAgNyAr LQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICB8ICAgMSAr CiAxNyBmaWxlcyBjaGFuZ2VkLCA3ODMgaW5zZXJ0aW9ucygrKSwgMTY5IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwppbmRleCAwOTI5YWEwYTM1 Li5lM2MxNTRlMzFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBA IC0zMyw5ICszMywxMSBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb25fbmFt ZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2Mu aCIKICNpbmNsdWRlICJjb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuaCIKICNpbmNsdWRlICJm dW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvbm9k ZUZ1bmNzLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1ZGUg InBhcnNlci9wYXJzZV9jb2xsYXRlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0 aW9uLmgiCkBAIC0xMTEsNiArMTEzLDEzNyBAQCBjaGVja19wdWJsaWNhdGlvbl9hZGRfc2No ZW1hKE9pZCBzY2hlbWFpZCkKIAkJCQkgZXJyZGV0YWlsKCJUZW1wb3Jhcnkgc2NoZW1hcyBj YW5ub3QgYmUgcmVwbGljYXRlZC4iKSkpOwogfQogCisvKgorICogSXMgdGhpcyBhIHNpbXBs ZSBOb2RlIHBlcm1pdHRlZCB3aXRoaW4gYSByb3cgZmlsdGVyIGV4cHJlc3Npb24/CisgKi8K K3N0YXRpYyBib29sCitJc1Jvd0ZpbHRlclNpbXBsZUV4cHIoTm9kZSAqbm9kZSkKK3sKKwlz d2l0Y2ggKG5vZGVUYWcobm9kZSkpCisJeworCQljYXNlIFRfQXJyYXlFeHByOgorCQljYXNl IFRfQm9vbGVhblRlc3Q6CisJCWNhc2UgVF9Cb29sRXhwcjoKKwkJY2FzZSBUX0Nhc2VFeHBy OgorCQljYXNlIFRfQ2FzZVRlc3RFeHByOgorCQljYXNlIFRfQ29hbGVzY2VFeHByOgorCQlj YXNlIFRfQ29uc3Q6CisJCWNhc2UgVF9MaXN0OgorCQljYXNlIFRfTWluTWF4RXhwcjoKKwkJ Y2FzZSBUX051bGxJZkV4cHI6CisJCWNhc2UgVF9OdWxsVGVzdDoKKwkJY2FzZSBUX1NjYWxh ckFycmF5T3BFeHByOgorCQljYXNlIFRfWG1sRXhwcjoKKwkJCXJldHVybiB0cnVlOworCQlk ZWZhdWx0OgorCQkJcmV0dXJuIGZhbHNlOworCX0KK30KKworLyoKKyAqIFRoZSByb3cgZmls dGVyIHdhbGtlciBjaGVja3MgaWYgdGhlIHJvdyBmaWx0ZXIgZXhwcmVzc2lvbiBpcyBhICJz aW1wbGUKKyAqIGV4cHJlc3Npb24iLgorICoKKyAqIEl0IGFsbG93cyBvbmx5IHNpbXBsZSBv ciBjb21wb3VuZCBleHByZXNzaW9ucyBzdWNoIGFzOgorICogLSAiKFZhciBPcCBDb25zdCki IG9yCisgKiAtICIoVmFyIE9wIFZhcikiIG9yCisgKiAtICIoVmFyIE9wIENvbnN0KSBCb29s IChWYXIgT3AgQ29uc3QpIgorICogLSBldGMKKyAqICh3aGVyZSBWYXIgaXMgYSBjb2x1bW4g b2YgdGhlIHRhYmxlIHRoaXMgZmlsdGVyIGJlbG9uZ3MgdG8pCisgKgorICogU3BlY2lmaWNh bGx5LAorICogLSBVc2VyLWRlZmluZWQgb3BlcmF0b3JzIGFyZSBub3QgYWxsb3dlZC4KKyAq IC0gVXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQuCisgKiAtIFVzZXIt ZGVmaW5lZCB0eXBlcyBhcmUgbm90IGFsbG93ZWQuCisgKiAtIE5vbi1pbW11dGFibGUgYnVp bHRpbiBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkLgorICogLSBTeXN0ZW0gY29sdW1ucyBh cmUgbm90IGFsbG93ZWQuCisgKgorICogTm90ZXM6CisgKgorICogV2UgZG9uJ3QgYWxsb3cg dXNlci1kZWZpbmVkIGZ1bmN0aW9ucy9vcGVyYXRvcnMvdHlwZXMgYmVjYXVzZSAoYSkgaWYg dGhlIHVzZXIKKyAqIGRyb3BzIHN1Y2ggYSB1c2VyLWRlZmluaXRpb24gb3IgaWYgdGhlcmUg aXMgYW55IG90aGVyIGVycm9yIHZpYSBpdHMgZnVuY3Rpb24sCisgKiB0aGUgd2Fsc2VuZGVy IHdvbid0IGJlIGFibGUgdG8gcmVjb3ZlciBmcm9tIHN1Y2ggYW4gZXJyb3IgZXZlbiBpZiB3 ZSBmaXggdGhlCisgKiBmdW5jdGlvbidzIHByb2JsZW0gYmVjYXVzZSBhIGhpc3RvcmljIHNu YXBzaG90IGlzIHVzZWQgdG8gYWNjZXNzIHRoZQorICogcm93LWZpbHRlcjsgKGIpIGFueSBv dGhlciB0YWJsZSBjb3VsZCBiZSBhY2Nlc3NlZCB2aWEgYSBmdW5jdGlvbiwgd2hpY2ggd29u J3QKKyAqIHdvcmsgYmVjYXVzZSBvZiBoaXN0b3JpYyBzbmFwc2hvdHMgaW4gbG9naWNhbCBk ZWNvZGluZyBlbnZpcm9ubWVudC4KKyAqCisgKiBXZSBkb24ndCBhbGxvdyBhbnl0aGluZyBv dGhlciB0aGFuIGltbXV0YWJsZSBidWlsdC1pbiBmdW5jdGlvbnMgYmVjYXVzZQorICogbm9u LWltbXV0YWJsZSBmdW5jdGlvbnMgY2FuIGFjY2VzcyB0aGUgZGF0YWJhc2UgYW5kIHdvdWxk IGxlYWQgdG8gdGhlIHByb2JsZW0KKyAqIChiKSBtZW50aW9uZWQgaW4gdGhlIHByZXZpb3Vz IHBhcmFncmFwaC4KKyAqLworc3RhdGljIGJvb2wKK3Jvd2ZpbHRlcl93YWxrZXIoTm9kZSAq bm9kZSwgUmVsYXRpb24gcmVsYXRpb24pCit7CisJY2hhciAqZXJyZGV0YWlsX21zZyA9IE5V TEw7CisKKwlpZiAobm9kZSA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKworCWlmIChJ c1Jvd0ZpbHRlclNpbXBsZUV4cHIobm9kZSkpCisJeworCQkvKiBPSywgbm9kZSBpcyBwYXJ0 IG9mIHNpbXBsZSBleHByZXNzaW9ucyAqLworCX0KKwllbHNlIGlmIChJc0Eobm9kZSwgVmFy KSkKKwl7CisJCVZhcgkJICAgKnZhciA9IChWYXIgKikgbm9kZTsKKworCQkvKiBVc2VyLWRl ZmluZWQgdHlwZXMgbm90IGFsbG93ZWQuICovCisJCWlmICh2YXItPnZhcnR5cGUgPj0gRmly c3ROb3JtYWxPYmplY3RJZCkKKwkJCWVycmRldGFpbF9tc2cgPSBfKCJVc2VyLWRlZmluZWQg dHlwZXMgYXJlIG5vdCBhbGxvd2VkIik7CisKKwkJLyogU3lzdGVtIGNvbHVtbnMgbm90IGFs bG93ZWQuICovCisJCWVsc2UgaWYgKHZhci0+dmFyYXR0bm8gPCBJbnZhbGlkQXR0ck51bWJl cikKKwkJeworCQkJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsK KwkJCWNvbnN0IGNoYXIgKmNvbG5hbWUgPSBnZXRfYXR0bmFtZShyZWxpZCwgdmFyLT52YXJh dHRubywgZmFsc2UpOworCisJCQllcnJkZXRhaWxfbXNnID0gcHNwcmludGYoXygiQ2Fubm90 IHVzZSBzeXN0ZW0gY29sdW1uICglcykuIiksIGNvbG5hbWUpOworCQl9CisJfQorCWVsc2Ug aWYgKElzQShub2RlLCBPcEV4cHIpKQorCXsKKwkJLyogT0ssIGV4Y2VwdCB1c2VyLWRlZmlu ZWQgb3BlcmF0b3JzIGFyZSBub3QgYWxsb3dlZC4gKi8KKwkJaWYgKCgoT3BFeHByICopIG5v ZGUpLT5vcG5vID49IEZpcnN0Tm9ybWFsT2JqZWN0SWQpCisJCQllcnJkZXRhaWxfbXNnID0g XygiVXNlci1kZWZpbmVkIG9wZXJhdG9ycyBhcmUgbm90IGFsbG93ZWQuIik7CisJfQorCWVs c2UgaWYgKElzQShub2RlLCBGdW5jRXhwcikpCisJeworCQlPaWQJCQlmdW5jaWQgPSAoKEZ1 bmNFeHByICopIG5vZGUpLT5mdW5jaWQ7CisJCWNvbnN0IGNoYXIgKmZ1bmNuYW1lID0gZ2V0 X2Z1bmNfbmFtZShmdW5jaWQpOworCisJCS8qCisJCSAqIFVzZXItZGVmaW5lZCBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkLgorCQkgKiBTeXN0ZW0tZnVuY3Rpb25zIHRoYXQgYXJlIG5v dCBJTU1VVEFCTEUgYXJlIG5vdCBhbGxvd2VkLgorCQkgKi8KKwkJaWYgKGZ1bmNpZCA+PSBG aXJzdE5vcm1hbE9iamVjdElkKQorCQkJZXJyZGV0YWlsX21zZyA9IHBzcHJpbnRmKF8oIlVz ZXItZGVmaW5lZCBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkICglcykuIiksCisJCQkJCQkJ CSBmdW5jbmFtZSk7CisJCWVsc2UgaWYgKGZ1bmNfdm9sYXRpbGUoZnVuY2lkKSAhPSBQUk9W T0xBVElMRV9JTU1VVEFCTEUpCisJCQllcnJkZXRhaWxfbXNnID0gcHNwcmludGYoXygiTm9u LWltbXV0YWJsZSBidWlsdC1pbiBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkICglcykuIiks CisJCQkJCQkJCSBmdW5jbmFtZSk7CisJfQorCWVsc2UKKwl7CisJCWVsb2coREVCVUcxLCAi dGhlIHJvdyBmaWx0ZXIgY29udGFpbmVkIHNvbWV0aGluZyB1bmV4cGVjdGVkOiAlcyIsIG5v ZGVUb1N0cmluZyhub2RlKSk7CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJp bnZhbGlkIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb24gZm9yIHJlbGF0aW9uIFwiJXNc IiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpLAorCQkJCWVy cmRldGFpbCgiRXhwcmVzc2lvbnMgb25seSBhbGxvdyBjb2x1bW5zLCBjb25zdGFudHMgYW5k IHNvbWUgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBvcGVyYXRvcnMuIikKKwkJCQkpKTsKKwl9 CisKKwlpZiAoZXJyZGV0YWlsX21zZykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJybXNn KCJpbnZhbGlkIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb24gZm9yIHJlbGF0aW9uIFwi JXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpLAorCQkJ CQkJZXJyZGV0YWlsKCIlcyIsIGVycmRldGFpbF9tc2cpCisJCQkJKSk7CisKKwlyZXR1cm4g ZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCByb3dmaWx0ZXJfd2Fsa2VyLCAodm9pZCAq KXJlbGF0aW9uKTsKK30KKwogLyoKICAqIFJldHVybnMgaWYgcmVsYXRpb24gcmVwcmVzZW50 ZWQgYnkgb2lkIGFuZCBGb3JtX3BnX2NsYXNzIGVudHJ5CiAgKiBpcyBwdWJsaXNoYWJsZS4K QEAgLTI0MSwxMCArMzc0LDYgQEAgcGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUoUEdfRlVO Q1RJT05fQVJHUykKIAlQR19SRVRVUk5fQk9PTChyZXN1bHQpOwogfQogCi0vKgotICogR2V0 cyB0aGUgcmVsYXRpb25zIGJhc2VkIG9uIHRoZSBwdWJsaWNhdGlvbiBwYXJ0aXRpb24gb3B0 aW9uIGZvciBhIHNwZWNpZmllZAotICogcmVsYXRpb24uCi0gKi8KIExpc3QgKgogR2V0UHVi UGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKExpc3QgKnJlc3VsdCwgUHVibGljYXRpb25QYXJ0 T3B0IHB1Yl9wYXJ0b3B0LAogCQkJCQkJCSAgIE9pZCByZWxpZCkKQEAgLTI5OCw3ICs0Mjcs NyBAQCBHZXRUcmFuc2Zvcm1lZFdoZXJlQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUHVi bGljYXRpb25SZWxJbmZvICpwcmksCiAJYWRkTlNJdGVtVG9RdWVyeShwc3RhdGUsIG5zaXRl bSwgZmFsc2UsIHRydWUsIHRydWUpOwogCiAJd2hlcmVjbGF1c2UgPSB0cmFuc2Zvcm1XaGVy ZUNsYXVzZShwc3RhdGUsIGNvcHlPYmplY3QocHJpLT53aGVyZUNsYXVzZSksCi0JCQkJCQkJ CQkgICBFWFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkUsCisJCQkJCQkJCQkgICBFWFBSX0tJ TkRfV0hFUkUsCiAJCQkJCQkJCQkgICAiUFVCTElDQVRJT04gV0hFUkUiKTsKIAogCS8qIEZp eCB1cCBjb2xsYXRpb24gaW5mb3JtYXRpb24gKi8KQEAgLTMwOCw2ICs0MzcsMzcgQEAgR2V0 VHJhbnNmb3JtZWRXaGVyZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFB1YmxpY2F0aW9u UmVsSW5mbyAqcHJpLAogCXJldHVybiB3aGVyZWNsYXVzZTsKIH0KIAorLyoKKyAqIENoZWNr IGlmIGFueSBvZiB0aGUgYW5jZXN0b3JzIGFyZSBwdWJsaXNoZWQgaW4gdGhlIHB1YmxpY2F0 aW9uLiBJZiBzbywKKyAqIHJldHVybiB0aGUgcmVsaWQgb2YgdGhlIHRvcG1vc3QgYW5jZXN0 b3IgdGhhdCBpcyBwdWJsaXNoZWQgdmlhIHRoaXMKKyAqIHB1YmxpY2F0aW9uLCBvdGhlcndp c2UgSW52YWxpZE9pZC4KKyAqLworT2lkCitHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0 aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycykKK3sKKwlMaXN0Q2VsbCAgICpsYzsK KwlPaWQJCQl0b3Btb3N0X3JlbGlkICA9IEludmFsaWRPaWQ7CisKKwkvKgorCSAqIEZpbmQg dGhlICJ0b3Btb3N0IiBhbmNlc3RvciB0aGF0IGlzIGluIHRoaXMKKwkgKiBwdWJsaWNhdGlv bi4KKwkgKi8KKwlmb3JlYWNoKGxjLCBhbmNlc3RvcnMpCisJeworCQlPaWQJCQlhbmNlc3Rv ciA9IGxmaXJzdF9vaWQobGMpOworCisJCWlmIChsaXN0X21lbWJlcl9vaWQoR2V0UmVsYXRp b25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpLAorCQkJCQkJCXB1Ym9pZCkgfHwKKwkJCWxpc3Rf bWVtYmVyX29pZChHZXRTY2hlbWFQdWJsaWNhdGlvbnMoZ2V0X3JlbF9uYW1lc3BhY2UoYW5j ZXN0b3IpKSwKKwkJCQkJCQlwdWJvaWQpKQorCQl7CisJCQl0b3Btb3N0X3JlbGlkID0gYW5j ZXN0b3I7CisJCX0KKwl9CisKKwlyZXR1cm4gdG9wbW9zdF9yZWxpZDsKK30KKwogLyoKICAq IEluc2VydCBuZXcgcHVibGljYXRpb24gLyByZWxhdGlvbiBtYXBwaW5nLgogICovCkBAIC0z NjIsNiArNTIyLDEzIEBAIHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihPaWQgcHViaWQsIFB1 YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCQkgKiBjb2xsYXRpb24gaW5mb3JtYXRpb24uCiAJ CSAqLwogCQl3aGVyZWNsYXVzZSA9IEdldFRyYW5zZm9ybWVkV2hlcmVDbGF1c2UocHN0YXRl LCBwcmksIHRydWUpOworCisJCS8qCisJCSAqIFdhbGsgdGhlIHBhcnNlLXRyZWUgb2YgdGhp cyBwdWJsaWNhdGlvbiByb3cgZmlsdGVyIGV4cHJlc3Npb24gYW5kCisJCSAqIHRocm93IGFu IGVycm9yIGlmIGFueXRoaW5nIG5vdCBwZXJtaXR0ZWQgb3IgdW5leHBlY3RlZCBpcworCQkg KiBlbmNvdW50ZXJlZC4KKwkJICovCisJCXJvd2ZpbHRlcl93YWxrZXIod2hlcmVjbGF1c2Us IHRhcmdldHJlbCk7CiAJfQogCiAJLyogRm9ybSBhIHR1cGxlLiAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCA1NzRkN2QyN2ZkLi40MmM1ZGJlMmI5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAtNTY4LDE0 ICs1NjgsNDYgQEAgdm9pZAogQ2hlY2tDbWRSZXBsaWNhSWRlbnRpdHkoUmVsYXRpb24gcmVs LCBDbWRUeXBlIGNtZCkKIHsKIAlQdWJsaWNhdGlvbkFjdGlvbnMgKnB1YmFjdGlvbnM7CisJ QXR0ck51bWJlcgkJCWJhZF9yZmNvbG51bTsKIAogCS8qIFdlIG9ubHkgbmVlZCB0byBkbyBj aGVja3MgZm9yIFVQREFURSBhbmQgREVMRVRFLiAqLwogCWlmIChjbWQgIT0gQ01EX1VQREFU RSAmJiBjbWQgIT0gQ01EX0RFTEVURSkKIAkJcmV0dXJuOwogCisJaWYgKHJlbC0+cmRfcmVs LT5yZWxyZXBsaWRlbnQgPT0gUkVQTElDQV9JREVOVElUWV9GVUxMKQorCQlyZXR1cm47CisK KwliYWRfcmZjb2xudW0gPSBHZXRSZWxhdGlvblB1YmxpY2F0aW9uSW5mbyhyZWwsIHRydWUp OworCisJLyoKKwkgKiBJdCBpcyBvbmx5IHNhZmUgdG8gZXhlY3V0ZSBVUERBVEUvREVMRVRF IHdoZW4gYWxsIGNvbHVtbnMgcmVmZXJlbmNlZCBpbgorCSAqIHRoZSByb3cgZmlsdGVycyBm cm9tIHB1YmxpY2F0aW9ucyB3aGljaCB0aGUgcmVsYXRpb24gaXMgaW4gYXJlIHZhbGlkLAor CSAqIHdoaWNoIG1lYW5zIGFsbCByZWZlcmVuY2VkIGNvbHVtbnMgYXJlIHBhcnQgb2YgUkVQ TElDQSBJREVOVElUWSwgb3IgdGhlCisJICogdGFibGUgZG8gbm90IHB1Ymxpc2ggVVBEQVRF UyBvciBERUxFVEVTLgorCSAqLworCWlmIChBdHRyaWJ1dGVOdW1iZXJJc1ZhbGlkKGJhZF9y ZmNvbG51bSkpCisJeworCQljb25zdCBjaGFyICpjb2xuYW1lID0gZ2V0X2F0dG5hbWUoUmVs YXRpb25HZXRSZWxpZChyZWwpLAorCQkJCQkJCQkJCSAgYmFkX3JmY29sbnVtLCBmYWxzZSk7 CisKKwkJaWYgKGNtZCA9PSBDTURfVVBEQVRFKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAorCQkJCQkgZXJy bXNnKCJjYW5ub3QgdXBkYXRlIHRhYmxlIFwiJXNcIiIsCisJCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSksCisJCQkJCSBlcnJkZXRhaWwoIkNvbHVtbiBcIiVzXCIgdXNl ZCBpbiB0aGUgcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbiBpcyBub3QgcGFydCBvZiB0 aGUgcmVwbGljYSBpZGVudGl0eS4iLAorCQkJCQkJCSAgIGNvbG5hbWUpKSk7CisJCWVsc2Ug aWYgKGNtZCA9PSBDTURfREVMRVRFKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAorCQkJCQkgZXJybXNnKCJj YW5ub3QgZGVsZXRlIGZyb20gdGFibGUgXCIlc1wiIiwKKwkJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSwKKwkJCQkJIGVycmRldGFpbCgiQ29sdW1uIFwiJXNcIiB1c2Vk IGluIHRoZSBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9uIGlzIG5vdCBwYXJ0IG9mIHRo ZSByZXBsaWNhIGlkZW50aXR5LiIsCisJCQkJCQkJICAgY29sbmFtZSkpKTsKKwl9CisKIAkv KiBJZiByZWxhdGlvbiBoYXMgcmVwbGljYSBpZGVudGl0eSB3ZSBhcmUgYWx3YXlzIGdvb2Qu ICovCi0JaWYgKHJlbC0+cmRfcmVsLT5yZWxyZXBsaWRlbnQgPT0gUkVQTElDQV9JREVOVElU WV9GVUxMIHx8Ci0JCU9pZElzVmFsaWQoUmVsYXRpb25HZXRSZXBsaWNhSW5kZXgocmVsKSkp CisJaWYgKE9pZElzVmFsaWQoUmVsYXRpb25HZXRSZXBsaWNhSW5kZXgocmVsKSkpCiAJCXJl dHVybjsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdn LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggMTkzYzg3ZDhiNy4u N2Q4MjlhMDVhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwpAQCAtNTUxLDEzICs1NTEs NiBAQCBjaGVja19hZ2dsZXZlbHNfYW5kX2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTm9kZSAqZXhwcikKIAkJCQllcnIgPSBfKCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBu b3QgYWxsb3dlZCBpbiBDT1BZIEZST00gV0hFUkUgY29uZGl0aW9ucyIpOwogCiAJCQlicmVh azsKLQkJY2FzZSBFWFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkU6Ci0JCQlpZiAoaXNBZ2cp Ci0JCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4g cHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbnMiKTsKLQkJCWVsc2UKLQkJCQllcnIgPSBf KCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwdWJsaWNhdGlvbiBX SEVSRSBleHByZXNzaW9ucyIpOwotCi0JCQlicmVhazsKIAogCQljYXNlIEVYUFJfS0lORF9D WUNMRV9NQVJLOgogCQkJZXJya2luZCA9IHRydWU7CkBAIC05NTAsOSArOTQzLDYgQEAgdHJh bnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3 ZnVuYywKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtpbmQgPSB0cnVl OwogCQkJYnJlYWs7Ci0JCWNhc2UgRVhQUl9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJFOgotCQkJ ZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gcHVibGljYXRp b24gV0hFUkUgZXhwcmVzc2lvbnMiKTsKLQkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhl cmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhl CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCAzZDQzODM5YjM1Li4yZDFhNDc3MTU0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTIwMCwxOSArMjAwLDggQEAgdHJh bnNmb3JtRXhwclJlY3Vyc2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpleHByKQogCQkJ YnJlYWs7CiAKIAkJY2FzZSBUX0Z1bmNDYWxsOgotCQkJewotCQkJCS8qCi0JCQkJICogRm9y YmlkIGZ1bmN0aW9ucyBpbiBwdWJsaWNhdGlvbiBXSEVSRSBjb25kaXRpb24KLQkJCQkgKi8K LQkJCQlpZiAocHN0YXRlLT5wX2V4cHJfa2luZCA9PSBFWFBSX0tJTkRfUFVCTElDQVRJT05f V0hFUkUpCi0JCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJCSBlcnJtc2coImZ1bmN0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbnMiKSwKLQkJCQkJ CQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZXhwckxvY2F0aW9uKGV4cHIpKSkpOwot Ci0JCQkJcmVzdWx0ID0gdHJhbnNmb3JtRnVuY0NhbGwocHN0YXRlLCAoRnVuY0NhbGwgKikg ZXhwcik7Ci0JCQkJYnJlYWs7Ci0JCQl9CisJCQlyZXN1bHQgPSB0cmFuc2Zvcm1GdW5jQ2Fs bChwc3RhdGUsIChGdW5jQ2FsbCAqKSBleHByKTsKKwkJCWJyZWFrOwogCiAJCWNhc2UgVF9N dWx0aUFzc2lnblJlZjoKIAkJCXJlc3VsdCA9IHRyYW5zZm9ybU11bHRpQXNzaWduUmVmKHBz dGF0ZSwgKE11bHRpQXNzaWduUmVmICopIGV4cHIpOwpAQCAtNTE1LDcgKzUwNCw2IEBAIHRy YW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikK IAkJY2FzZSBFWFBSX0tJTkRfQ09QWV9XSEVSRToKIAkJY2FzZSBFWFBSX0tJTkRfR0VORVJB VEVEX0NPTFVNTjoKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFSSzoKLQkJY2FzZSBFWFBS X0tJTkRfUFVCTElDQVRJT05fV0hFUkU6CiAJCQkvKiBva2F5ICovCiAJCQlicmVhazsKIApA QCAtMTc3Niw5ICsxNzY0LDYgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpwc3Rh dGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9DT0xV TU46CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIGNvbHVtbiBnZW5lcmF0 aW9uIGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOwotCQljYXNlIEVYUFJfS0lORF9QVUJMSUNB VElPTl9XSEVSRToKLQkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gcHVibGlj YXRpb24gV0hFUkUgZXhwcmVzc2lvbiIpOwotCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBU aGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0 aGUKQEAgLTMwOTksOCArMzA4NCw2IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktp bmQgZXhwcktpbmQpCiAJCQlyZXR1cm4gIkdFTkVSQVRFRCBBUyI7CiAJCWNhc2UgRVhQUl9L SU5EX0NZQ0xFX01BUks6CiAJCQlyZXR1cm4gIkNZQ0xFIjsKLQkJY2FzZSBFWFBSX0tJTkRf UFVCTElDQVRJT05fV0hFUkU6Ci0JCQlyZXR1cm4gInB1YmxpY2F0aW9uIGV4cHJlc3Npb24i OwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBj YXNlIGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwppbmRleCAy OWJlYmI3M2ViLi41NDJmOTE2N2FhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAg LTI2NTUsOSArMjY1NSw2IEBAIGNoZWNrX3NyZl9jYWxsX3BsYWNlbWVudChQYXJzZVN0YXRl ICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQgbG9jYXRpb24pCiAJCWNhc2UgRVhQUl9L SU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOwotCQljYXNl IEVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRToKLQkJCWVyciA9IF8oInNldC1yZXR1cm5p bmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBwdWJsaWNhdGlvbiBXSEVSRSBleHBy ZXNzaW9ucyIpOwotCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRp b25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2Vfb3Blci5jCmluZGV4IDI5Zjg4MzVjZTEuLmJjMzRhMjNhZmMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9vcGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX29wZXIuYwpAQCAtNzE4LDEzICs3MTgsNiBAQCBtYWtlX29wKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqb3BuYW1lLCBOb2RlICpsdHJlZSwgTm9kZSAqcnRyZWUsCiAJ CQkJCQkJCQkJCW9wZm9ybS0+b3BycmlnaHQpKSwKIAkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgbG9jYXRpb24pKSk7CiAKLQkvKiBDaGVjayBpdCdzIG5vdCBhIGN1c3RvbSBv cGVyYXRvciBmb3IgcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbnMgKi8KLQlpZiAocHN0 YXRlLT5wX2V4cHJfa2luZCA9PSBFWFBSX0tJTkRfUFVCTElDQVRJT05fV0hFUkUgJiYgb3Bm b3JtLT5vaWQgPj0gRmlyc3ROb3JtYWxPYmplY3RJZCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1z ZygidXNlci1kZWZpbmVkIG9wZXJhdG9ycyBhcmUgbm90IGFsbG93ZWQgaW4gcHVibGljYXRp b24gV0hFUkUgZXhwcmVzc2lvbnMiKSwKLQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgbG9jYXRpb24pKSk7Ci0KIAkvKiBEbyB0eXBlY2FzdGluZyBhbmQgYnVpbGQgdGhlIGV4 cHJlc3Npb24gdHJlZSAqLwogCWlmIChsdHJlZSA9PSBOVUxMKQogCXsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3JlbGF0aW9uLmMKaW5kZXggMDM2ZDljNmQyNi4uYzVjM2YyNmVjZiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKQEAgLTM1MzgsMjAgKzM1MzgsMTEg QEAgZXJyb3JNaXNzaW5nUlRFKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmFuZ2VWYXIgKnJlbGF0 aW9uKQogCQkJCQkJICBydGUtPmVyZWYtPmFsaWFzbmFtZSkpLAogCQkJCSBwYXJzZXJfZXJy cG9zaXRpb24ocHN0YXRlLCByZWxhdGlvbi0+bG9jYXRpb24pKSk7CiAJZWxzZQotCXsKLQkJ aWYgKHBzdGF0ZS0+cF9leHByX2tpbmQgPT0gRVhQUl9LSU5EX1BVQkxJQ0FUSU9OX1dIRVJF KQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURf VEFCTEUpLAotCQkJCQkgZXJybXNnKCJwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9uIGlu dmFsaWQgcmVmZXJlbmNlIHRvIHRhYmxlIFwiJXNcIiIsCi0JCQkJCQkJcmVsYXRpb24tPnJl bG5hbWUpLAotCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgcmVsYXRpb24tPmxv Y2F0aW9uKSkpOwotCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfVEFCTEUpLAogCQkJCSBlcnJtc2coIm1pc3NpbmcgRlJPTS1jbGF1c2UgZW50 cnkgZm9yIHRhYmxlIFwiJXNcIiIsCiAJCQkJCQlyZWxhdGlvbi0+cmVsbmFtZSksCiAJCQkJ IHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHJlbGF0aW9uLT5sb2NhdGlvbikpKTsKLQl9 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYwppbmRleCBiZTVlYzFkMjhmLi43MTkyOTQ4Mzk5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE1NzIsMjYgKzE1NzIsMTcg QEAgZ2V0X3JlbF9zeW5jX2VudHJ5KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVs YXRpb24pCiAJCQkJICovCiAJCQkJaWYgKGFtX3BhcnRpdGlvbikKIAkJCQl7Ci0JCQkJCUxp c3QJICAgKmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKLQkJ CQkJTGlzdENlbGwgICAqbGMyOworCQkJCQlPaWQJCWFuY2VzdG9yOworCQkJCQlMaXN0ICAg KmFuY2VzdG9ycyA9IGdldF9wYXJ0aXRpb25fYW5jZXN0b3JzKHJlbGlkKTsKIAotCQkJCQkv KgotCQkJCQkgKiBGaW5kIHRoZSAidG9wbW9zdCIgYW5jZXN0b3IgdGhhdCBpcyBpbiB0aGlz Ci0JCQkJCSAqIHB1YmxpY2F0aW9uLgotCQkJCQkgKi8KLQkJCQkJZm9yZWFjaChsYzIsIGFu Y2VzdG9ycykKKwkJCQkJYW5jZXN0b3IgPSBHZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0 aW9uKHB1Yi0+b2lkLAorCQkJCQkJCQkJCQkJCQkJICAgYW5jZXN0b3JzKTsKKworCQkJCQlp ZiAoYW5jZXN0b3IgIT0gSW52YWxpZE9pZCkKIAkJCQkJewotCQkJCQkJT2lkCQkJYW5jZXN0 b3IgPSBsZmlyc3Rfb2lkKGxjMik7Ci0KLQkJCQkJCWlmIChsaXN0X21lbWJlcl9vaWQoR2V0 UmVsYXRpb25QdWJsaWNhdGlvbnMoYW5jZXN0b3IpLAotCQkJCQkJCQkJCQlwdWItPm9pZCkg fHwKLQkJCQkJCQlsaXN0X21lbWJlcl9vaWQoR2V0U2NoZW1hUHVibGljYXRpb25zKGdldF9y ZWxfbmFtZXNwYWNlKGFuY2VzdG9yKSksCi0JCQkJCQkJCQkJCXB1Yi0+b2lkKSkKLQkJCQkJ CXsKLQkJCQkJCQlhbmNlc3Rvcl9wdWJsaXNoZWQgPSB0cnVlOwotCQkJCQkJCWlmIChwdWIt PnB1YnZpYXJvb3QpCi0JCQkJCQkJCXB1Ymxpc2hfYXNfcmVsaWQgPSBhbmNlc3RvcjsKLQkJ CQkJCX0KKwkJCQkJCWFuY2VzdG9yX3B1Ymxpc2hlZCA9IHRydWU7CisJCQkJCQlpZiAocHVi LT5wdWJ2aWFyb290KQorCQkJCQkJCXB1Ymxpc2hfYXNfcmVsaWQgPSBhbmNlc3RvcjsKIAkJ CQkJfQogCQkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggMTA1 ZDhkNDYwMS4uMTQxODRlMTMzNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j CkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJs aWNhdGlvbi5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb25fcmVsLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19yZXdyaXRlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19z aHNlY2xhYmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCkBA IC03MSw2ICs3Miw4IEBACiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCiAjaW5jbHVk ZSAibm9kZXMvbm9kZUZ1bmNzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5o IgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIKKyNpbmNsdWRlICJwYXJzZXIv cGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVEZWZpbmUuaCIK ICNpbmNsdWRlICJyZXdyaXRlL3Jvd3NlY3VyaXR5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9s bWdyLmgiCkBAIC04NCw2ICs4Nyw3IEBACiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWxtYXBwZXIuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25l cl9wcml2YXRlLmgiCisjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvc25hcG1nci5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAKQEAgLTI2 Nyw2ICsyNzEsMTkgQEAgdHlwZWRlZiBzdHJ1Y3Qgb3BjbGFzc2NhY2hlZW50CiAKIHN0YXRp YyBIVEFCICpPcENsYXNzQ2FjaGUgPSBOVUxMOwogCisvKgorICogSW5mb3JtYXRpb24gdXNl ZCB0byB2YWxpZGF0ZSB0aGUgY29sdW1ucyBpbiB0aGUgcm93IGZpbHRlciBleHByZXNzaW9u LiBzZWUKKyAqIHJvd2ZpbHRlcl9jb2x1bW5fd2Fsa2VyIGZvciBkZXRhaWxzLgorICovCit0 eXBlZGVmIHN0cnVjdCByZl9jb250ZXh0Cit7CisJQXR0ck51bWJlcglpbnZhbGlkX3JmY29s bnVtOwkvKiBpbnZhbGlkIGNvbHVtbiBudW1iZXIgKi8KKwlCaXRtYXBzZXQgICpibXNfcmVw bGlkZW50OwkJLyogYml0c2V0IG9mIHJlcGxpY2EgaWRlbnRpdHkgY29sIGluZGV4ZXMgKi8K Kwlib29sCQlwdWJ2aWFyb290OwkJCS8qIHRydWUgaWYgd2UgYXJlIHZhbGlkYXRpbmcgdGhl IHBhcmVudAorCQkJCQkJCQkJICogcmVsYXRpb24ncyByb3cgZmlsdGVyICovCisJT2lkCQkJ cmVsaWQ7CQkJCS8qIHJlbGlkIG9mIHRoZSByZWxhdGlvbiAqLworCU9pZAkJCXBhcmVudGlk OwkJCS8qIHJlbGlkIG9mIHRoZSBwYXJlbnQgcmVsYXRpb24gKi8KK30gcmZfY29udGV4dDsK IAogLyogbm9uLWV4cG9ydCBmdW5jdGlvbiBwcm90b3R5cGVzICovCiAKQEAgLTU1MjEsMzkg KzU1MzgsOTEgQEAgUmVsYXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0aW9uIGluZGV4UmVs YXRpb24sCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CiB9CiAKKworCiAvKgot ICogR2V0IHB1YmxpY2F0aW9uIGFjdGlvbnMgZm9yIHRoZSBnaXZlbiByZWxhdGlvbi4KKyAq IENoZWNrIGlmIGFueSBjb2x1bW5zIHVzZWQgaW4gdGhlIHJvdy1maWx0ZXIgV0hFUkUgY2xh dXNlIGFyZSBub3QgcGFydCBvZgorICogUkVQTElDQSBJREVOVElUWSBhbmQgc2F2ZSB0aGUg aW52YWxpZCBjb2x1bW4gbnVtYmVyIGluCisgKiByZl9jb250ZXh0OjppbnZhbGlkX3JmY29s bnVtLgogICovCi1zdHJ1Y3QgUHVibGljYXRpb25BY3Rpb25zICoKLUdldFJlbGF0aW9uUHVi bGljYXRpb25BY3Rpb25zKFJlbGF0aW9uIHJlbGF0aW9uKQorc3RhdGljIGJvb2wKK3Jvd2Zp bHRlcl9jb2x1bW5fd2Fsa2VyKE5vZGUgKm5vZGUsIHJmX2NvbnRleHQgKmNvbnRleHQpCiB7 Ci0JTGlzdAkgICAqcHVib2lkczsKLQlMaXN0Q2VsbCAgICpsYzsKLQlNZW1vcnlDb250ZXh0 IG9sZGN4dDsKLQlPaWQJCQlzY2hlbWFpZDsKLQlQdWJsaWNhdGlvbkFjdGlvbnMgKnB1YmFj dGlvbnMgPSBwYWxsb2MwKHNpemVvZihQdWJsaWNhdGlvbkFjdGlvbnMpKTsKKwlpZiAobm9k ZSA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoSXNBKG5vZGUsIFZhcikpCisJ eworCQlWYXIJCSAgICp2YXIgPSAoVmFyICopIG5vZGU7CisJCUF0dHJOdW1iZXIJYXR0bnVt ID0gdmFyLT52YXJhdHRubzsKKworCQkvKgorCQkgKiBJZiBwdWJ2aWFyb290IGlzIHRydWUs IHdlIGFyZSB2YWxpZGF0aW5nIHRoZSByb3cgZmlsdGVyIG9mIHRoZQorCQkgKiBwYXJlbnQg dGFibGUsIGJ1dCB3ZSBjYW4gb25seSB1c2UgdGhlIGJpdHNldCBvZiByZXBsaWNhIGlkZW50 aXR5IGNvbAorCQkgKiBpbmRleGVzIGluIHRoZSBjaGlsZCB0YWJsZSB0byBjaGVjay4gU28s IHdlIG5lZWQgdG8gY29udmVydCB0aGUKKwkJICogY29sdW1uIG51bWJlciBpbiB0aGUgcm93 IGZpbHRlciBleHByZXNzaW9uIHRvIHRoZSBjaGlsZCB0YWJsZSdzIGluCisJCSAqIGNhc2Ug dGhlIGNvbHVtbiBvcmRlciBvZiB0aGUgcGFyZW50IHRhYmxlIGlzIGRpZmZlcmVudCBmcm9t IHRoZQorCQkgKiBjaGlsZCB0YWJsZSdzLgorCQkgKi8KKwkJaWYgKGNvbnRleHQtPnB1YnZp YXJvb3QpCisJCXsKKwkJCWNoYXIgKmNvbG5hbWUgPSBnZXRfYXR0bmFtZShjb250ZXh0LT5w YXJlbnRpZCwgYXR0bnVtLCBmYWxzZSk7CisJCQlhdHRudW0gPSBnZXRfYXR0bnVtKGNvbnRl eHQtPnJlbGlkLCBjb2xuYW1lKTsKKwkJfQorCisJCWlmICghYm1zX2lzX21lbWJlcihhdHRu dW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJCQkJICAgY29u dGV4dC0+Ym1zX3JlcGxpZGVudCkpCisJCXsKKwkJCWNvbnRleHQtPmludmFsaWRfcmZjb2xu dW0gPSBhdHRudW07CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCX0KKworCXJldHVybiBleHBy ZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIHJvd2ZpbHRlcl9jb2x1bW5fd2Fsa2VyLAorCQkJ CQkJCQkgICh2b2lkICopIGNvbnRleHQpOworfQorCisvKgorICogR2V0IHRoZSBwdWJsaWNh dGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uLgorICoKKyAqIFRyYXZl cnNlIGFsbCB0aGUgcHVibGljYXRpb25zIHdoaWNoIHRoZSByZWxhdGlvbiBpcyBpbiB0byBn ZXQgdGhlCisgKiBwdWJsaWNhdGlvbiBhY3Rpb25zLiBJZiB0aGUgcHVibGljYXRpb24gYWN0 aW9ucyBpbmNsdWRlIFVQREFURSBvciBERUxFVEUgYW5kCisgKiB2YWxpZGF0ZV9yb3dmaWx0 ZXIgaXMgdHJ1ZSwgdGhlbiB2YWxpZGF0ZSB0aGF0IGlmIGFsbCBjb2x1bW5zIHJlZmVyZW5j ZWQgaW4KKyAqIHRoZSByb3cgZmlsdGVyIGV4cHJlc3Npb24gYXJlIHBhcnQgb2YgUkVQTElD QSBJREVOVElUWS4KKyAqCisgKiBJZiBub3QgYWxsIHRoZSByb3cgZmlsdGVyIGNvbHVtbnMg YXJlIHBhcnQgb2YgUkVQTElDQSBJREVOVElUWSwgcmV0dXJuIHRoZQorICogaW52YWxpZCBj b2x1bW4gbnVtYmVyLCBvdGhlcndpc2UgSW52YWxpZEF0dHJOdW1iZXIuCisgKi8KK0F0dHJO dW1iZXIKK0dldFJlbGF0aW9uUHVibGljYXRpb25JbmZvKFJlbGF0aW9uIHJlbGF0aW9uLCBi b29sIHZhbGlkYXRlX3Jvd2ZpbHRlcikKK3sKKwlMaXN0CQkgICAqcHVib2lkczsKKwlMaXN0 Q2VsbAkgICAqbGM7CisJTWVtb3J5Q29udGV4dAlvbGRjeHQ7CisJT2lkCQkJCXNjaGVtYWlk OworCUxpc3QJCSAgICphbmNlc3RvcnMgPSBOSUw7CisJT2lkCQkJCXJlbGlkID0gUmVsYXRp b25HZXRSZWxpZChyZWxhdGlvbik7CisJcmZfY29udGV4dAkJY29udGV4dCA9IHsgMCB9Owor CVB1YmxpY2F0aW9uQWN0aW9ucyBwdWJhY3Rpb25zID0geyAwIH07CisJYm9vbAkJCXJmY29s X3ZhbGlkID0gdHJ1ZTsKKwlBdHRyTnVtYmVyCQlpbnZhbGlkX3JmY29sbnVtID0gSW52YWxp ZEF0dHJOdW1iZXI7CiAKIAkvKgogCSAqIElmIG5vdCBwdWJsaXNoYWJsZSwgaXQgcHVibGlz aGVzIG5vIGFjdGlvbnMuICAocGdvdXRwdXRfY2hhbmdlKCkgd2lsbAogCSAqIGlnbm9yZSBp dC4pCiAJICovCi0JaWYgKCFpc19wdWJsaXNoYWJsZV9yZWxhdGlvbihyZWxhdGlvbikpCi0J CXJldHVybiBwdWJhY3Rpb25zOwotCi0JaWYgKHJlbGF0aW9uLT5yZF9wdWJhY3Rpb25zKQot CQlyZXR1cm4gbWVtY3B5KHB1YmFjdGlvbnMsIHJlbGF0aW9uLT5yZF9wdWJhY3Rpb25zLAot CQkJCQkgIHNpemVvZihQdWJsaWNhdGlvbkFjdGlvbnMpKTsKKwlpZiAoIWlzX3B1Ymxpc2hh YmxlX3JlbGF0aW9uKHJlbGF0aW9uKSB8fCByZWxhdGlvbi0+cmRfcmZjb2xfdmFsaWQpCisJ CXJldHVybiBpbnZhbGlkX3JmY29sbnVtOwogCiAJLyogRmV0Y2ggdGhlIHB1YmxpY2F0aW9u IG1lbWJlcnNoaXAgaW5mby4gKi8KLQlwdWJvaWRzID0gR2V0UmVsYXRpb25QdWJsaWNhdGlv bnMoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikpOworCXB1Ym9pZHMgPSBHZXRSZWxhdGlv blB1YmxpY2F0aW9ucyhyZWxpZCk7CiAJc2NoZW1haWQgPSBSZWxhdGlvbkdldE5hbWVzcGFj ZShyZWxhdGlvbik7CiAJcHVib2lkcyA9IGxpc3RfY29uY2F0X3VuaXF1ZV9vaWQocHVib2lk cywgR2V0U2NoZW1hUHVibGljYXRpb25zKHNjaGVtYWlkKSk7CiAKIAlpZiAocmVsYXRpb24t PnJkX3JlbC0+cmVsaXNwYXJ0aXRpb24pCiAJewogCQkvKiBBZGQgcHVibGljYXRpb25zIHRo YXQgdGhlIGFuY2VzdG9ycyBhcmUgaW4gdG9vLiAqLwotCQlMaXN0CSAgICphbmNlc3RvcnMg PSBnZXRfcGFydGl0aW9uX2FuY2VzdG9ycyhSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSk7 Ci0JCUxpc3RDZWxsICAgKmxjOworCQlhbmNlc3RvcnMgPSBnZXRfcGFydGl0aW9uX2FuY2Vz dG9ycyhyZWxpZCk7CiAKIAkJZm9yZWFjaChsYywgYW5jZXN0b3JzKQogCQl7CkBAIC01NTY4 LDYgKzU2MzcsMjAgQEAgR2V0UmVsYXRpb25QdWJsaWNhdGlvbkFjdGlvbnMoUmVsYXRpb24g cmVsYXRpb24pCiAJfQogCXB1Ym9pZHMgPSBsaXN0X2NvbmNhdF91bmlxdWVfb2lkKHB1Ym9p ZHMsIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucygpKTsKIAorCS8qCisJICogRmluZCB3aGF0 IGFyZSB0aGUgY29scyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBSRVBMSUNBIElERU5USVRZLgor CSAqIE5vdGUgdGhhdCBSRVBMSUNBIElERU5USVRZIERFRkFVTFQgbWVhbnMgcHJpbWFyeSBr ZXkgb3Igbm90aGluZy4KKwkgKi8KKwlpZiAodmFsaWRhdGVfcm93ZmlsdGVyKQorCXsKKwkJ aWYgKHJlbGF0aW9uLT5yZF9yZWwtPnJlbHJlcGxpZGVudCA9PSBSRVBMSUNBX0lERU5USVRZ X0RFRkFVTFQpCisJCQljb250ZXh0LmJtc19yZXBsaWRlbnQgPSBSZWxhdGlvbkdldEluZGV4 QXR0ckJpdG1hcChyZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklU TUFQX1BSSU1BUllfS0VZKTsKKwkJZWxzZSBpZiAocmVsYXRpb24tPnJkX3JlbC0+cmVscmVw bGlkZW50ID09IFJFUExJQ0FfSURFTlRJVFlfSU5ERVgpCisJCQljb250ZXh0LmJtc19yZXBs aWRlbnQgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChyZWxhdGlvbiwKKwkJCQkJCQkJ CQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0lERU5USVRZX0tFWSk7CisJfQorCiAJZm9y ZWFjaChsYywgcHVib2lkcykKIAl7CiAJCU9pZAkJCXB1YmlkID0gbGZpcnN0X29pZChsYyk7 CkBAIC01NTgxLDM0ICs1NjY0LDE0MCBAQCBHZXRSZWxhdGlvblB1YmxpY2F0aW9uQWN0aW9u cyhSZWxhdGlvbiByZWxhdGlvbikKIAogCQlwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRp b24pIEdFVFNUUlVDVCh0dXApOwogCi0JCXB1YmFjdGlvbnMtPnB1Ymluc2VydCB8PSBwdWJm b3JtLT5wdWJpbnNlcnQ7Ci0JCXB1YmFjdGlvbnMtPnB1YnVwZGF0ZSB8PSBwdWJmb3JtLT5w dWJ1cGRhdGU7Ci0JCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSB8PSBwdWJmb3JtLT5wdWJkZWxl dGU7Ci0JCXB1YmFjdGlvbnMtPnB1YnRydW5jYXRlIHw9IHB1YmZvcm0tPnB1YnRydW5jYXRl OworCQlwdWJhY3Rpb25zLnB1Ymluc2VydCB8PSBwdWJmb3JtLT5wdWJpbnNlcnQ7CisJCXB1 YmFjdGlvbnMucHVidXBkYXRlIHw9IHB1YmZvcm0tPnB1YnVwZGF0ZTsKKwkJcHViYWN0aW9u cy5wdWJkZWxldGUgfD0gcHViZm9ybS0+cHViZGVsZXRlOworCQlwdWJhY3Rpb25zLnB1YnRy dW5jYXRlIHw9IHB1YmZvcm0tPnB1YnRydW5jYXRlOwogCiAJCVJlbGVhc2VTeXNDYWNoZSh0 dXApOwogCiAJCS8qCi0JCSAqIElmIHdlIGtub3cgZXZlcnl0aGluZyBpcyByZXBsaWNhdGVk LCB0aGVyZSBpcyBubyBwb2ludCB0byBjaGVjayBmb3IKLQkJICogb3RoZXIgcHVibGljYXRp b25zLgorCQkgKiBJZiB0aGUgcHVibGljYXRpb24gYWN0aW9uIGluY2x1ZGUgVVBEQVRFIGFu ZCBERUxFVEUgYW5kCisJCSAqIHZhbGlkYXRlX3Jvd2ZpbHRlciBmbGFnIGlzIHRydWUsIHZh bGlkYXRlcyB0aGF0IGFueSBjb2x1bW5zCisJCSAqIHJlZmVyZW5jZWQgaW4gdGhlIGZpbHRl ciBleHByZXNzaW9uIGFyZSBwYXJ0IG9mIFJFUExJQ0EgSURFTlRJVFkKKwkJICogaW5kZXgu CisJCSAqCisJCSAqIEZVTEwgbWVhbnMgYWxsIGNvbHMgYXJlIGluIHRoZSBSRVBMSUNBIElE RU5USVRZLCBzbyBhbGwgY29scyBhcmUKKwkJICogYWxsb3dlZCBpbiB0aGUgcm93LWZpbHRl ciBhbmQgd2UgY2FuIHNraXAgdGhlIHZhbGlkYXRpb24uCisJCSAqCisJCSAqIElmIHdlIGFs cmVhZHkgZm91bmQgdGhlIGNvbHVtbiBpbiByb3cgZmlsdGVyIHdoaWNoIGlzIG5vdCBwYXJ0 IG9mCisJCSAqIFJFUExJQ0EgSURFTlRJVFkgaW5kZXgsIHNraXAgdGhlIHZhbGlkYXRpb24g dG9vLgogCQkgKi8KLQkJaWYgKHB1YmFjdGlvbnMtPnB1Ymluc2VydCAmJiBwdWJhY3Rpb25z LT5wdWJ1cGRhdGUgJiYKLQkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSAmJiBwdWJhY3Rpb25z LT5wdWJ0cnVuY2F0ZSkKKwkJaWYgKHZhbGlkYXRlX3Jvd2ZpbHRlciAmJgorCQkJKHB1YmZv cm0tPnB1YnVwZGF0ZSB8fCBwdWJmb3JtLT5wdWJkZWxldGUpICYmCisJCQlyZWxhdGlvbi0+ cmRfcmVsLT5yZWxyZXBsaWRlbnQgIT0gUkVQTElDQV9JREVOVElUWV9GVUxMICYmCisJCQly ZmNvbF92YWxpZCkKKwkJeworCQkJSGVhcFR1cGxlCXJmdHVwbGU7CisJCQlPaWQJCQlwdWJs aXNoX2FzX3JlbGlkID0gSW52YWxpZE9pZDsKKworCQkJLyoKKwkJCSAqIEZvciBhIHBhcnRp dGlvbiwgaWYgcHVidmlhcm9vdCBpcyB0cnVlLCBjaGVjayBpZiBhbnkgb2YgdGhlCisJCQkg KiBhbmNlc3RvcnMgYXJlIHB1Ymxpc2hlZC4gSWYgc28sIG5vdGUgZG93biB0aGUgdG9wbW9z dCBhbmNlc3RvcgorCQkJICogdGhhdCBpcyBwdWJsaXNoZWQgdmlhIHRoaXMgcHVibGljYXRp b24sIHRoZSByb3cgZmlsdGVyCisJCQkgKiBleHByZXNzaW9uIG9uIHdoaWNoIHdpbGwgYmUg dXNlZCB0byBmaWx0ZXIgdGhlIHBhcnRpdGlvbidzCisJCQkgKiBjaGFuZ2VzLiBXZSBjb3Vs ZCBoYXZlIGdvdCB0aGUgdG9wbW9zdCBhbmNlc3RvciB3aGVuIGNvbGxlY3RpbmcKKwkJCSAq IHRoZSBwdWJsaWNhdGlvbiBvaWRzLCBidXQgdGhhdCB3aWxsIG1ha2UgdGhlIGNvZGUgbW9y ZQorCQkJICogY29tcGxpY2F0ZWQuCisJCQkgKi8KKwkJCWlmIChwdWJmb3JtLT5wdWJ2aWFy b290ICYmIHJlbGF0aW9uLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQorCQkJeworCQkJCWlm IChwdWJmb3JtLT5wdWJhbGx0YWJsZXMpCisJCQkJCXB1Ymxpc2hfYXNfcmVsaWQgPSBsbGFz dF9vaWQoYW5jZXN0b3JzKTsKKwkJCQllbHNlCisJCQkJCXB1Ymxpc2hfYXNfcmVsaWQgPSBH ZXRUb3BNb3N0QW5jZXN0b3JJblB1YmxpY2F0aW9uKHB1YmZvcm0tPm9pZCwKKwkJCQkJCQkJ CQkJCQkJCQkJICAgYW5jZXN0b3JzKTsKKwkJCX0KKworCQkJaWYgKHB1Ymxpc2hfYXNfcmVs aWQgPT0gSW52YWxpZE9pZCkKKwkJCQlwdWJsaXNoX2FzX3JlbGlkID0gcmVsaWQ7CisKKwkJ CXJmdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAsCisJCQkJCQkJ CQkgIE9iamVjdElkR2V0RGF0dW0ocHVibGlzaF9hc19yZWxpZCksCisJCQkJCQkJCQkgIE9i amVjdElkR2V0RGF0dW0ocHViaWQpKTsKKworCQkJaWYgKEhlYXBUdXBsZUlzVmFsaWQocmZ0 dXBsZSkpCisJCQl7CisJCQkJRGF0dW0JCXJmZGF0dW07CisJCQkJYm9vbAkJcmZpc251bGw7 CisJCQkJTm9kZQkgICAqcmZub2RlOworCisJCQkJY29udGV4dC5wdWJ2aWFyb290ID0gcHVi Zm9ybS0+cHVidmlhcm9vdDsKKwkJCQljb250ZXh0LnBhcmVudGlkID0gcHVibGlzaF9hc19y ZWxpZDsKKwkJCQljb250ZXh0LnJlbGlkID0gcmVsaWQ7CisKKwkJCQlyZmRhdHVtID0gU3lz Q2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxlLAorCQkJCQkJCQkJCSAg QW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJxdWFsLAorCQkJCQkJCQkJCSAgJnJmaXNudWxs KTsKKworCQkJCWlmICghcmZpc251bGwpCisJCQkJeworCQkJCQlyZm5vZGUgPSBzdHJpbmdU b05vZGUoVGV4dERhdHVtR2V0Q1N0cmluZyhyZmRhdHVtKSk7CisJCQkJCXJmY29sX3ZhbGlk ID0gIXJvd2ZpbHRlcl9jb2x1bW5fd2Fsa2VyKHJmbm9kZSwgJmNvbnRleHQpOworCQkJCQlp bnZhbGlkX3JmY29sbnVtID0gY29udGV4dC5pbnZhbGlkX3JmY29sbnVtOworCQkJCQlwZnJl ZShyZm5vZGUpOworCQkJCX0KKworCQkJCVJlbGVhc2VTeXNDYWNoZShyZnR1cGxlKTsKKwkJ CX0KKwkJfQorCisJCS8qCisJCSAqIElmIHdlIGtub3cgZXZlcnl0aGluZyBpcyByZXBsaWNh dGVkIGFuZCBzb21lIGNvbHVtbnMgYXJlIG5vdCBwYXJ0IG9mCisJCSAqIHJlcGxpY2EgaWRl bnRpdHksIHRoZXJlIGlzIG5vIHBvaW50IHRvIGNoZWNrIGZvciBvdGhlciBwdWJsaWNhdGlv bnMuCisJCSAqLworCQlpZiAocHViYWN0aW9ucy5wdWJpbnNlcnQgJiYgcHViYWN0aW9ucy5w dWJ1cGRhdGUgJiYKKwkJCXB1YmFjdGlvbnMucHViZGVsZXRlICYmIHB1YmFjdGlvbnMucHVi dHJ1bmNhdGUgJiYKKwkJCSghdmFsaWRhdGVfcm93ZmlsdGVyIHx8ICFyZmNvbF92YWxpZCkp CiAJCQlicmVhazsKIAl9CiAKKwlibXNfZnJlZShjb250ZXh0LmJtc19yZXBsaWRlbnQpOwor CiAJaWYgKHJlbGF0aW9uLT5yZF9wdWJhY3Rpb25zKQogCXsKIAkJcGZyZWUocmVsYXRpb24t PnJkX3B1YmFjdGlvbnMpOwogCQlyZWxhdGlvbi0+cmRfcHViYWN0aW9ucyA9IE5VTEw7CiAJ fQogCisJaWYgKHZhbGlkYXRlX3Jvd2ZpbHRlcikKKwkJcmVsYXRpb24tPnJkX3JmY29sX3Zh bGlkID0gcmZjb2xfdmFsaWQ7CisKIAkvKiBOb3cgc2F2ZSBjb3B5IG9mIHRoZSBhY3Rpb25z IGluIHRoZSByZWxjYWNoZSBlbnRyeS4gKi8KIAlvbGRjeHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKIAlyZWxhdGlvbi0+cmRfcHViYWN0aW9ucyA9 IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25BY3Rpb25zKSk7Ci0JbWVtY3B5KHJlbGF0aW9u LT5yZF9wdWJhY3Rpb25zLCBwdWJhY3Rpb25zLCBzaXplb2YoUHVibGljYXRpb25BY3Rpb25z KSk7CisJbWVtY3B5KHJlbGF0aW9uLT5yZF9wdWJhY3Rpb25zLCAmcHViYWN0aW9ucywgc2l6 ZW9mKFB1YmxpY2F0aW9uQWN0aW9ucykpOwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj eHQpOwogCisJcmV0dXJuIGludmFsaWRfcmZjb2xudW07Cit9CisKKy8qCisgKiBHZXQgcHVi bGljYXRpb24gYWN0aW9ucyBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uLgorICovCitzdHJ1Y3Qg UHVibGljYXRpb25BY3Rpb25zICoKK0dldFJlbGF0aW9uUHVibGljYXRpb25BY3Rpb25zKFJl bGF0aW9uIHJlbGF0aW9uKQoreworCVB1YmxpY2F0aW9uQWN0aW9ucyAqcHViYWN0aW9ucyA9 IHBhbGxvYzAoc2l6ZW9mKFB1YmxpY2F0aW9uQWN0aW9ucykpOworCisJLyoKKwkgKiBJZiBu b3QgcHVibGlzaGFibGUsIGl0IHB1Ymxpc2hlcyBubyBhY3Rpb25zLiAgKHBnb3V0cHV0X2No YW5nZSgpIHdpbGwKKwkgKiBpZ25vcmUgaXQuKQorCSAqLworCWlmICghaXNfcHVibGlzaGFi bGVfcmVsYXRpb24ocmVsYXRpb24pKQorCQlyZXR1cm4gcHViYWN0aW9uczsKKworCWlmIChy ZWxhdGlvbi0+cmRfcHViYWN0aW9ucykKKwl7CisJCW1lbWNweShwdWJhY3Rpb25zLCByZWxh dGlvbi0+cmRfcHViYWN0aW9ucywKKwkJCSAgIHNpemVvZihQdWJsaWNhdGlvbkFjdGlvbnMp KTsKKwkJcmV0dXJuIHB1YmFjdGlvbnM7CisJfQorCisJKHZvaWQpIEdldFJlbGF0aW9uUHVi bGljYXRpb25JbmZvKHJlbGF0aW9uLCBmYWxzZSk7CisJbWVtY3B5KHB1YmFjdGlvbnMsIHJl bGF0aW9uLT5yZF9wdWJhY3Rpb25zLAorCQkgICBzaXplb2YoUHVibGljYXRpb25BY3Rpb25z KSk7CisKIAlyZXR1cm4gcHViYWN0aW9uczsKIH0KIApAQCAtNjE2Myw2ICs2MzUyLDcgQEAg bG9hZF9yZWxjYWNoZV9pbml0X2ZpbGUoYm9vbCBzaGFyZWQpCiAJCXJlbC0+cmRfaWRhdHRy ID0gTlVMTDsKIAkJcmVsLT5yZF9ob3RibG9ja2luZ2F0dHIgPSBOVUxMOwogCQlyZWwtPnJk X3B1YmFjdGlvbnMgPSBOVUxMOworCQlyZWwtPnJkX3JmY29sX3ZhbGlkID0gZmFsc2U7CiAJ CXJlbC0+cmRfc3RhdHZhbGlkID0gZmFsc2U7CiAJCXJlbC0+cmRfc3RhdGxpc3QgPSBOSUw7 CiAJCXJlbC0+cmRfZmtleXZhbGlkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmgKaW5kZXggOTZjNTVmNjI3ZC4uOWUxOTdkZWZjMCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaApAQCAtMTM1LDYgKzEzNSw2IEBAIGV4dGVybiBj aGFyICpnZXRfcHVibGljYXRpb25fbmFtZShPaWQgcHViaWQsIGJvb2wgbWlzc2luZ19vayk7 CiBleHRlcm4gTm9kZSAqR2V0VHJhbnNmb3JtZWRXaGVyZUNsYXVzZShQYXJzZVN0YXRlICpw c3RhdGUsCiAJCQkJCQkJCQkgICBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJCQkJCQkJ CSAgIGJvb2wgYmZpeHVwY29sbGF0aW9uKTsKLQorZXh0ZXJuIE9pZCBHZXRUb3BNb3N0QW5j ZXN0b3JJblB1YmxpY2F0aW9uKE9pZCBwdWJvaWQsIExpc3QgKmFuY2VzdG9ycyk7CiAKICNl bmRpZgkJCQkJCQkvKiBQR19QVUJMSUNBVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25v ZGUuaAppbmRleCBkNThhZTZhNjNmLi5lZTE3OTA4MmNlIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJz ZV9ub2RlLmgKQEAgLTgwLDcgKzgwLDYgQEAgdHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQK IAlFWFBSX0tJTkRfQ09QWV9XSEVSRSwJCS8qIFdIRVJFIGNvbmRpdGlvbiBpbiBDT1BZIEZS T00gKi8KIAlFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTiwgLyogZ2VuZXJhdGlvbiBleHBy ZXNzaW9uIGZvciBhIGNvbHVtbiAqLwogCUVYUFJfS0lORF9DWUNMRV9NQVJLLAkJLyogY3lj bGUgbWFyayB2YWx1ZSAqLwotCUVYUFJfS0lORF9QVUJMSUNBVElPTl9XSEVSRSAvKiBXSEVS RSBjb25kaXRpb24gZm9yIGEgdGFibGUgaW4gUFVCTElDQVRJT04gKi8KIH0gUGFyc2VFeHBy S2luZDsKIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9p bmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IDMxMjgxMjc5Y2YuLjI3Y2VjODEzYzAgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L3JlbC5oCkBAIC0xNjMsNiArMTYzLDEzIEBAIHR5cGVkZWYgc3RydWN0IFJlbGF0aW9uRGF0 YQogCiAJUHVibGljYXRpb25BY3Rpb25zICpyZF9wdWJhY3Rpb25zOwkvKiBwdWJsaWNhdGlv biBhY3Rpb25zICovCiAKKwkvKgorCSAqIHRydWUgaWYgdGhlIGNvbHVtbnMgcmVmZXJlbmNl ZCBpbiByb3cgZmlsdGVycyBmcm9tIGFsbCB0aGUgcHVibGljYXRpb25zCisJICogdGhlIHJl bGF0aW9uIGlzIGluIGFyZSBwYXJ0IG9mIHJlcGxpY2EgaWRlbnRpdHksIG9yIHRoZSBwdWJs aWNhdGlvbgorCSAqIGFjdGlvbnMgZG8gbm90IGluY2x1ZGUgVVBEQVRFIGFuZCBERUxFVEUu CisJICovCisJYm9vbAkJcmRfcmZjb2xfdmFsaWQ7CisKIAkvKgogCSAqIHJkX29wdGlvbnMg aXMgc2V0IHdoZW5ldmVyIHJkX3JlbCBpcyBsb2FkZWQgaW50byB0aGUgcmVsY2FjaGUgZW50 cnkuCiAJICogTm90ZSB0aGF0IHlvdSBjYW4gTk9UIGxvb2sgaW50byByZF9yZWwgZm9yIHRo aXMgZGF0YS4gIE5VTEwgbWVhbnMgInVzZQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRp bHMvcmVsY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmgKaW5kZXggODIz MTZiYmE1NC4uOWNjNGEzODBmOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVs Y2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCkBAIC03Niw2ICs3 Niw3IEBAIGV4dGVybiB2b2lkIFJlbGF0aW9uSW5pdEluZGV4QWNjZXNzSW5mbyhSZWxhdGlv biByZWxhdGlvbik7CiAvKiBjYWxsZXIgbXVzdCBpbmNsdWRlIHBnX3B1YmxpY2F0aW9uLmgg Ki8KIHN0cnVjdCBQdWJsaWNhdGlvbkFjdGlvbnM7CiBleHRlcm4gc3RydWN0IFB1YmxpY2F0 aW9uQWN0aW9ucyAqR2V0UmVsYXRpb25QdWJsaWNhdGlvbkFjdGlvbnMoUmVsYXRpb24gcmVs YXRpb24pOworZXh0ZXJuIEF0dHJOdW1iZXIgR2V0UmVsYXRpb25QdWJsaWNhdGlvbkluZm8o UmVsYXRpb24gcmVsYXRpb24sIGJvb2wgdmFsaWRhdGVfcm93ZmlsdGVyKTsKIAogZXh0ZXJu IHZvaWQgUmVsYXRpb25Jbml0VGFibGVBY2Nlc3NNZXRob2QoUmVsYXRpb24gcmVsYXRpb24p OwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9u Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4 IDAyNDkxYzRiNmIuLmU2NjUxYmRhYWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcHVibGljYXRpb24ub3V0CkBAIC0yNDMsMTggKzI0MywyMSBAQCBDUkVBVEUgVEFCTEUg dGVzdHB1Yl9yZl90YmwxIChhIGludGVnZXIsIGIgdGV4dCk7CiBDUkVBVEUgVEFCTEUgdGVz dHB1Yl9yZl90YmwyIChjIHRleHQsIGQgaW50ZWdlcik7CiBDUkVBVEUgVEFCTEUgdGVzdHB1 Yl9yZl90YmwzIChlIGludGVnZXIpOwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfdGJsNCAo ZyB0ZXh0KTsKLUNSRUFURSBTQ0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYTsKLUNSRUFURSBU QUJMRSB0ZXN0cHViX3JmX215c2NoZW1hLnRlc3RwdWJfcmZfdGJsNShoIGludGVnZXIpOwot Q1JFQVRFIFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1hMTsKLUNSRUFURSBUQUJMRSB0ZXN0 cHViX3JmX215c2NoZW1hMS50ZXN0cHViX3JmX3RibDYoaSBpbnRlZ2VyKTsKK0NSRUFURSBU QUJMRSB0ZXN0cHViX3JmX3RibDUgKGEgeG1sKTsKK0NSRUFURSBTQ0hFTUEgdGVzdHB1Yl9y Zl9zY2hlbWExOworQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfc2NoZW1hMS50ZXN0cHViX3Jm X3RibDUgKGggaW50ZWdlcik7CitDUkVBVEUgU0NIRU1BIHRlc3RwdWJfcmZfc2NoZW1hMjsK K0NSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3NjaGVtYTIudGVzdHB1Yl9yZl90Ymw2IChpIGlu dGVnZXIpOwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBV QkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJf cmZfdGJsMiBXSEVSRSAoYyA8PiAndGVzdCcgQU5EIGQgPCA1KTsKKy0tIEZpcnN0bHksIHRl c3QgdXNpbmcgdGhlIG9wdGlvbiBwdWJsaXNoPSdpbnNlcnQnIGJlY2F1c2UgdGhlIHJvdyBm aWx0ZXIKKy0tIHZhbGlkYXRpb24gb2YgcmVmZXJlbmNlZCBjb2x1bW5zIGlzIGxlc3Mgc3Ry aWN0IHRoYW4gZm9yIGRlbGV0ZS91cGRhdGUuCitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 YjUgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl90YmwyIFdIRVJFIChj IDw+ICd0ZXN0JyBBTkQgZCA8IDUpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CiAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgfCBmICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHVi X3JmX3RibDEiCiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDIiIFdIRVJFICgoYyA8PiAn dGVzdCc6OnRleHQpIEFORCAoZCA8IDUpKQpAQCAtMjY0LDcgKzI2Nyw3IEBAIEFMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUg PiAxMDAwIEFORCBlIDwgMjAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQdWJsaWNhdGlvbiB0ZXN0cHViNQogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAg IHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJs aWMudGVzdHB1Yl9yZl90YmwyIiBXSEVSRSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQg PCA1KSkKQEAgLTI3NSw3ICsyNzgsNyBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBE Uk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1CiAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5j YXRlcyB8IFZpYSByb290IAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorIHJlZ3Jlc3NfcHVibGljYXRp b25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBm ICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDEiCiAg ICAgInB1YmxpYy50ZXN0cHViX3JmX3RibDMiIFdIRVJFICgoZSA+IDEwMDApIEFORCAoZSA8 IDIwMDApKQpAQCAtMjg2LDcgKzI4OSw3IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1 IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPiAzMDAgQU5EIGUgPCA1MDAp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViNQogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgogVGFibGVzOgogICAg ICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAzMDApIEFORCAoZSA8IDUw MCkpCiAKQEAgLTMwOCw0MCArMzExLDQwIEBAIFB1YmxpY2F0aW9uczoKIERST1AgUFVCTElD QVRJT04gdGVzdHB1Yl9kcGx1c19yZl95ZXMsIHRlc3RwdWJfZHBsdXNfcmZfbm87CiAtLSBz b21lIG1vcmUgc3ludGF4IHRlc3RzIHRvIGV4ZXJjaXNlIG90aGVyIHBhcnNlciBwYXRod2F5 cwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWJfc3ludGF4MSBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCBPTkxZIHRl c3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA8IDk5OSk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1Yl9zeW50YXgxIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIE9OTFkgdGVzdHB1Yl9y Zl90YmwzIFdIRVJFIChlIDwgOTk5KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVT RVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJfc3ludGF4MQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDEK ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAg fCBmCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVi bGljLnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMyIgV0hF UkUgKGUgPCA5OTkpCiAKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgxOwogU0VU IGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRl c3RwdWJfc3ludGF4MiBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX215 c2NoZW1hLnRlc3RwdWJfcmZfdGJsNSBXSEVSRSAoaCA8IDk5OSk7CitDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1Yl9zeW50YXgyIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3Rw dWJfcmZfc2NoZW1hMS50ZXN0cHViX3JmX3RibDUgV0hFUkUgKGggPCA5OTkpIFdJVEggKHB1 Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsg dGVzdHB1Yl9zeW50YXgyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfc3ludGF4MgogICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAg IHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgotICAgICJ0ZXN0 cHViX3JmX215c2NoZW1hLnRlc3RwdWJfcmZfdGJsNSIgV0hFUkUgKGggPCA5OTkpCisgICAg InRlc3RwdWJfcmZfc2NoZW1hMS50ZXN0cHViX3JmX3RibDUiIFdIRVJFIChoIDwgOTk5KQog CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MjsKIC0tIGZhaWwgLSBzY2hlbWFz IGRvbid0IGFsbG93IFdIRVJFIGNsYXVzZQogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOwotQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MyBGT1IgQUxMIFRB QkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYSBXSEVSRSAoYSA9IDEyMyk7CitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgzIEZPUiBBTEwgVEFCTEVTIElOIFND SEVNQSB0ZXN0cHViX3JmX3NjaGVtYTEgV0hFUkUgKGEgPSAxMjMpOwogRVJST1I6ICBzeW50 YXggZXJyb3IgYXQgb3IgbmVhciAiV0hFUkUiCi1MSU5FIDE6IC4uLnRheDMgRk9SIEFMTCBU QUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hlbWEgV0hFUkUgKGEgPS4uLgorTElO RSAxOiAuLi5udGF4MyBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9zY2hl bWExIFdIRVJFIChhID0uLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCi1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1 Yl9zeW50YXgzIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1h LCB0ZXN0cHViX3JmX215c2NoZW1hIFdIRVJFIChhID0gMTIzKTsKK0NSRUFURSBQVUJMSUNB VElPTiB0ZXN0cHViX3N5bnRheDMgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJf cmZfc2NoZW1hMSwgdGVzdHB1Yl9yZl9zY2hlbWExIFdIRVJFIChhID0gMTIzKTsKIEVSUk9S OiAgV0hFUkUgY2xhdXNlIGZvciBzY2hlbWEgbm90IGFsbG93ZWQKLUxJTkUgMTogLi4uYXgz IEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1hLCB0ZXN0cHVi X3JmLi4uCitMSU5FIDE6IC4uLnRheDMgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHRlc3Rw dWJfcmZfc2NoZW1hMSwgdGVzdHB1Yl9yZi4uLgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KIFJFU0VUIGNsaWVudF9t aW5fbWVzc2FnZXM7CiAtLSBmYWlsIC0gZHVwbGljYXRlIHRhYmxlcyBhcmUgbm90IGFsbG93 ZWQgaWYgdGhhdCB0YWJsZSBoYXMgYW55IFdIRVJFIGNsYXVzZQpAQCAtMzUzLDQzICszNTYs MTg1IEBAIEVSUk9SOiAgY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IFdIRVJFIGNsYXVzZXMg Zm9yIHRhYmxlICJ0ZXN0cHViX3JmX3RibDEiCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2Vz OwogLS0gZmFpbCAtIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgbm90IGFsbG93ZWQgaW4gV0hFUkUg Y2xhdXNlCiBBTFRFUiBQVUJMSUNBVElPTiAgdGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJf cmZfdGJsMyBXSEVSRSAoZSA8IEFWRyhlKSk7Ci1FUlJPUjogIGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbnMKK0VSUk9SOiAgYWdn cmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gV0hFUkUKIExJTkUgMTogLi4u VElPTiAgdGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA8IEFW RyhlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCi0tLSBmYWlsIC0gZnVuY3Rpb25zIGRpc2FsbG93ZWQKLUFM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3RibDQgV0hF UkUgKGxlbmd0aChnKSA8IDYpOwotRVJST1I6ICBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2Vk IGluIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb25zCi1MSU5FIDE6IC4uLklDQVRJT04g dGVzdHB1YjUgQUREIFRBQkxFIHRlc3RwdWJfcmZfdGJsNCBXSEVSRSAobGVuZ3RoKGcpIC4u LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KLS0tIGZhaWwgLSB1c2VyLWRlZmluZWQgb3BlcmF0b3JzIGRpc2FsbG93 ZWQKLUNSRUFURSBGVU5DVElPTiB0ZXN0cHViX3JmX2Z1bmMoaW50ZWdlciwgaW50ZWdlcikg UkVUVVJOUyBib29sZWFuIEFTICQkIFNFTEVDVCBoYXNoaW50NCgkMSkgPiAkMiAkJCBMQU5H VUFHRSBTUUw7Ci1DUkVBVEUgT1BFUkFUT1IgPSM+IChQUk9DRURVUkUgPSB0ZXN0cHViX3Jm X2Z1bmMsIExFRlRBUkcgPSBpbnRlZ2VyLCBSSUdIVEFSRyA9IGludGVnZXIpOworLS0gZmFp bCAtIHVzZXItZGVmaW5lZCBvcGVyYXRvcnMgYXJlIG5vdCBhbGxvd2VkCitDUkVBVEUgRlVO Q1RJT04gdGVzdHB1Yl9yZl9mdW5jMShpbnRlZ2VyLCBpbnRlZ2VyKSBSRVRVUk5TIGJvb2xl YW4gQVMgJCQgU0VMRUNUIGhhc2hpbnQ0KCQxKSA+ICQyICQkIExBTkdVQUdFIFNRTDsKK0NS RUFURSBPUEVSQVRPUiA9Iz4gKFBST0NFRFVSRSA9IHRlc3RwdWJfcmZfZnVuYzEsIExFRlRB UkcgPSBpbnRlZ2VyLCBSSUdIVEFSRyA9IGludGVnZXIpOwogQ1JFQVRFIFBVQkxJQ0FUSU9O IHRlc3RwdWI2IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUgPSM+IDI3KTsK LUVSUk9SOiAgdXNlci1kZWZpbmVkIG9wZXJhdG9ycyBhcmUgbm90IGFsbG93ZWQgaW4gcHVi bGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbnMKLUxJTkUgMTogLi4uSUNBVElPTiB0ZXN0cHVi NiBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID0jPiAyNyk7Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCitFUlJPUjogIGludmFsaWQgcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbiBmb3Ig cmVsYXRpb24gInRlc3RwdWJfcmZfdGJsMyIKK0RFVEFJTDogIFVzZXItZGVmaW5lZCBvcGVy YXRvcnMgYXJlIG5vdCBhbGxvd2VkLgorLS0gZmFpbCAtIHVzZXItZGVmaW5lZCBmdW5jdGlv bnMgYXJlIG5vdCBhbGxvd2VkCitDUkVBVEUgRlVOQ1RJT04gdGVzdHB1Yl9yZl9mdW5jMigp IFJFVFVSTlMgaW50ZWdlciBBUyAkJCBCRUdJTiBSRVRVUk4gMTIzOyBFTkQ7ICQkIExBTkdV QUdFIHBscGdzcWw7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBBREQgVEFCTEUgdGVz dHB1Yl9yZl90YmwxIFdIRVJFIChhID49IHRlc3RwdWJfcmZfZnVuYzIoKSk7CitFUlJPUjog IGludmFsaWQgcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbiBmb3IgcmVsYXRpb24gInRl c3RwdWJfcmZfdGJsMSIKK0RFVEFJTDogIFVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYXJlIG5v dCBhbGxvd2VkICh0ZXN0cHViX3JmX2Z1bmMyKS4KKy0tIGZhaWwgLSBub24taW1tdXRhYmxl IGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQuIHJhbmRvbSgpIGlzIHZvbGF0aWxlLgorQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjUgQUREIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSBXSEVS RSAoYSA8IHJhbmRvbSgpKTsKK0VSUk9SOiAgaW52YWxpZCBwdWJsaWNhdGlvbiBXSEVSRSBl eHByZXNzaW9uIGZvciByZWxhdGlvbiAidGVzdHB1Yl9yZl90YmwxIgorREVUQUlMOiAgTm9u LWltbXV0YWJsZSBidWlsdC1pbiBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIChyYW5kb20p LgorLS0gb2sgLSBOVUxMSUYgaXMgYWxsb3dlZAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSBXSEVSRSAoTlVMTElGKDEsMikgPSBhKTsK Ky0tIG9rIC0gYnVpbHRpbiBvcGVyYXRvcnMgYXJlIGFsbG93ZWQKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hFUkUgKGEgSVMgTlVM TCk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90 YmwxIFdIRVJFICgoYSA+IDUpIElTIEZBTFNFKTsKKy0tIG9rIC0gaW1tdXRhYmxlIGJ1aWx0 aW4gZnVuY3Rpb25zIGFyZSBhbGxvd2VkCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBT RVQgVEFCTEUgdGVzdHB1Yl9yZl90Ymw0IFdIRVJFIChsZW5ndGgoZykgPCA2KTsKKy0tIGZh aWwgLSB1c2VyLWRlZmluZWQgdHlwZXMgZGlzYWxsb3dlZAorQ1JFQVRFIFRZUEUgcmZfYnVn X3N0YXR1cyBBUyBFTlVNICgnbmV3JywgJ29wZW4nLCAnY2xvc2VkJyk7CitDUkVBVEUgVEFC TEUgcmZfYnVnIChpZCBzZXJpYWwsIGRlc2NyaXB0aW9uIHRleHQsIHN0YXR1cyByZl9idWdf c3RhdHVzKTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgVEFCTEUgcmZfYnVn IFdIRVJFIChzdGF0dXMgPSAnb3BlbicpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CitF UlJPUjogIGludmFsaWQgcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbiBmb3IgcmVsYXRp b24gInJmX2J1ZyIKK0RFVEFJTDogIFVzZXItZGVmaW5lZCB0eXBlcyBhcmUgbm90IGFsbG93 ZWQKK0RST1AgVEFCTEUgcmZfYnVnOworRFJPUCBUWVBFIHJmX2J1Z19zdGF0dXM7CistLSBm YWlsIC0gcm93LWZpbHRlciBleHByZXNzaW9uIGlzIG5vdCBzaW1wbGUKK0NSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViNiBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChhIElO IChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsNSkpKTsKK0VSUk9SOiAgaW52YWxpZCBwdWJs aWNhdGlvbiBXSEVSRSBleHByZXNzaW9uIGZvciByZWxhdGlvbiAidGVzdHB1Yl9yZl90Ymwx IgorREVUQUlMOiAgRXhwcmVzc2lvbnMgb25seSBhbGxvdyBjb2x1bW5zLCBjb25zdGFudHMg YW5kIHNvbWUgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBvcGVyYXRvcnMuCistLSBmYWlsIC0g c3lzdGVtIGNvbHVtbnMgYXJlIG5vdCBhbGxvd2VkCitDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjYgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSBXSEVSRSAoJygwLDEpJzo6dGlkID0g Y3RpZCk7CitFUlJPUjogIGludmFsaWQgcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbiBm b3IgcmVsYXRpb24gInRlc3RwdWJfcmZfdGJsMSIKK0RFVEFJTDogIENhbm5vdCB1c2Ugc3lz dGVtIGNvbHVtbiAoY3RpZCkuCistLSBvayAtIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zIGFy ZSBhbGxvd2VkCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1 Yl9yZl90Ymw1IFdIRVJFIChhIElTIERPQ1VNRU5UKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDUgV0hFUkUgKHhtbGV4aXN0cygnLy9m b29bdGV4dCgpID0gJydiYXInJ10nIFBBU1NJTkcgQlkgVkFMVUUgYSkpOworQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSBXSEVSRSAoTlVM TElGKDEsIDIpID0gYSk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUg dGVzdHB1Yl9yZl90YmwxIFdIRVJFIChDQVNFIGEgV0hFTiA1IFRIRU4gdHJ1ZSBFTFNFIGZh bHNlIEVORCk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1 Yl9yZl90YmwxIFdIRVJFIChDT0FMRVNDRShiLCAnZm9vJykgPSAnZm9vJyk7CitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChH UkVBVEVTVChhLCAxMCkgPiAxMCk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQg VEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChhIElOICgyLCA0LCA2KSk7CitBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChB UlJBWVthXSA8QCBBUlJBWVsyLCA0LCA2XSk7CiAtLSBmYWlsIC0gV0hFUkUgbm90IGFsbG93 ZWQgaW4gRFJPUAotQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgRFJPUCBUQUJMRSB0ZXN0 cHViX3JmX3RibDMgV0hFUkUgKGUgPCAyNyk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi NSBEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSBXSEVSRSAoZSA8IDI3KTsKIEVSUk9SOiAg Y2Fubm90IHVzZSBhIFdIRVJFIGNsYXVzZSB3aGVuIHJlbW92aW5nIGEgdGFibGUgZnJvbSBw dWJsaWNhdGlvbgogLS0gZmFpbCAtIGNhbm5vdCBBTFRFUiBTRVQgdGFibGUgd2hpY2ggaXMg YSBtZW1iZXIgb2YgYSBwcmUtZXhpc3Rpbmcgc2NoZW1hCiBTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjcgRk9SIEFMTCBU QUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hlbWExOwotQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1YjcgU0VUIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hl bWExLCBUQUJMRSB0ZXN0cHViX3JmX215c2NoZW1hMS50ZXN0cHViX3JmX3RibDYgV0hFUkUg KGkgPCA5OSk7Ci1FUlJPUjogIGNhbm5vdCBhZGQgcmVsYXRpb24gInRlc3RwdWJfcmZfbXlz Y2hlbWExLnRlc3RwdWJfcmZfdGJsNiIgdG8gcHVibGljYXRpb24KLURFVEFJTDogIFRhYmxl J3Mgc2NoZW1hICJ0ZXN0cHViX3JmX215c2NoZW1hMSIgaXMgYWxyZWFkeSBwYXJ0IG9mIHRo ZSBwdWJsaWNhdGlvbiBvciBwYXJ0IG9mIHRoZSBzcGVjaWZpZWQgc2NoZW1hIGxpc3QuCitD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHRl c3RwdWJfcmZfc2NoZW1hMjsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBBTEwg VEFCTEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX3NjaGVtYTIsIFRBQkxFIHRlc3RwdWJfcmZf c2NoZW1hMi50ZXN0cHViX3JmX3RibDYgV0hFUkUgKGkgPCA5OSk7CitFUlJPUjogIGNhbm5v dCBhZGQgcmVsYXRpb24gInRlc3RwdWJfcmZfc2NoZW1hMi50ZXN0cHViX3JmX3RibDYiIHRv IHB1YmxpY2F0aW9uCitERVRBSUw6ICBUYWJsZSdzIHNjaGVtYSAidGVzdHB1Yl9yZl9zY2hl bWEyIiBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIHB1YmxpY2F0aW9uIG9yIHBhcnQgb2YgdGhl IHNwZWNpZmllZCBzY2hlbWEgbGlzdC4KIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBE Uk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMTsKIERST1AgVEFCTEUgdGVzdHB1Yl9yZl90Ymwy OwogRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3RibDM7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcmZf dGJsNDsKLURST1AgVEFCTEUgdGVzdHB1Yl9yZl9teXNjaGVtYS50ZXN0cHViX3JmX3RibDU7 Ci1EUk9QIFRBQkxFIHRlc3RwdWJfcmZfbXlzY2hlbWExLnRlc3RwdWJfcmZfdGJsNjsKLURS T1AgU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hlbWE7Ci1EUk9QIFNDSEVNQSB0ZXN0cHViX3Jm X215c2NoZW1hMTsKK0RST1AgVEFCTEUgdGVzdHB1Yl9yZl90Ymw1OworRFJPUCBUQUJMRSB0 ZXN0cHViX3JmX3NjaGVtYTEudGVzdHB1Yl9yZl90Ymw1OworRFJPUCBUQUJMRSB0ZXN0cHVi X3JmX3NjaGVtYTIudGVzdHB1Yl9yZl90Ymw2OworRFJPUCBTQ0hFTUEgdGVzdHB1Yl9yZl9z Y2hlbWExOworRFJPUCBTQ0hFTUEgdGVzdHB1Yl9yZl9zY2hlbWEyOwogRFJPUCBQVUJMSUNB VElPTiB0ZXN0cHViNTsKLURST1AgUFVCTElDQVRJT04gdGVzdHB1Yjc7CitEUk9QIFBVQkxJ Q0FUSU9OIHRlc3RwdWI2OwogRFJPUCBPUEVSQVRPUiA9Iz4oaW50ZWdlciwgaW50ZWdlcik7 Ci1EUk9QIEZVTkNUSU9OIHRlc3RwdWJfcmZfZnVuYyhpbnRlZ2VyLCBpbnRlZ2VyKTsKK0RS T1AgRlVOQ1RJT04gdGVzdHB1Yl9yZl9mdW5jMShpbnRlZ2VyLCBpbnRlZ2VyKTsKK0RST1Ag RlVOQ1RJT04gdGVzdHB1Yl9yZl9mdW5jMigpOworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBNb3JlIHJvdyBmaWx0ZXIg dGVzdHMgZm9yIHZhbGlkYXRpbmcgY29sdW1uIHJlZmVyZW5jZXMKK0NSRUFURSBUQUJMRSBy Zl90YmxfYWJjZF9ub3BrKGEgaW50LCBiIGludCwgYyBpbnQsIGQgaW50KTsKK0NSRUFURSBU QUJMRSByZl90YmxfYWJjZF9wayhhIGludCwgYiBpbnQsIGMgaW50LCBkIGludCwgUFJJTUFS WSBLRVkoYSxiKSk7CitDUkVBVEUgVEFCTEUgcmZfdGJsX2FiY2RfcGFydF9wayAoYSBpbnQg UFJJTUFSWSBLRVksIGIgaW50KSBQQVJUSVRJT04gYnkgUkFOR0UgKGEpOworQ1JFQVRFIFRB QkxFIHJmX3RibF9hYmNkX3BhcnRfcGtfMSAoYiBpbnQsIGEgaW50IFBSSU1BUlkgS0VZKTsK K0FMVEVSIFRBQkxFIHJmX3RibF9hYmNkX3BhcnRfcGsgQVRUQUNIIFBBUlRJVElPTiByZl90 YmxfYWJjZF9wYXJ0X3BrXzEgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ2Fz ZSAxLiBSRVBMSUNBIElERU5USVRZIERFRkFVTFQgKG1lYW5zIHVzZSBwcmltYXJ5IGtleSBv ciBub3RoaW5nKQorLS0gMWEuIFJFUExJQ0EgSURFTlRJVFkgaXMgREVGQVVMVCBhbmQgdGFi bGUgaGFzIGEgUEsuCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVB VEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIFRBQkxFIHJmX3RibF9hYmNkX3BrIFdIRVJF IChhID4gOTkpOworUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKy0tIG9rIC0gImEiIGlz IGEgUEsgY29sCitVUERBVEUgcmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAxOworQUxURVIgUFVC TElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIFdIRVJFIChiID4g OTkpOworLS0gb2sgLSAiYiIgaXMgYSBQSyBjb2wKK1VQREFURSByZl90YmxfYWJjZF9wayBT RVQgYSA9IDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJs X2FiY2RfcGsgV0hFUkUgKGMgPiA5OSk7CistLSBmYWlsIC0gImMiIGlzIG5vdCBwYXJ0IG9m IHRoZSBQSworVVBEQVRFIHJmX3RibF9hYmNkX3BrIFNFVCBhID0gMTsKK0VSUk9SOiAgY2Fu bm90IHVwZGF0ZSB0YWJsZSAicmZfdGJsX2FiY2RfcGsiCitERVRBSUw6ICBDb2x1bW4gImMi IHVzZWQgaW4gdGhlIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb24gaXMgbm90IHBhcnQg b2YgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBT RVQgVEFCTEUgcmZfdGJsX2FiY2RfcGsgV0hFUkUgKGQgPiA5OSk7CistLSBmYWlsIC0gImQi IGlzIG5vdCBwYXJ0IG9mIHRoZSBQSworVVBEQVRFIHJmX3RibF9hYmNkX3BrIFNFVCBhID0g MTsKK0VSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAicmZfdGJsX2FiY2RfcGsiCitERVRB SUw6ICBDb2x1bW4gImQiIHVzZWQgaW4gdGhlIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Np b24gaXMgbm90IHBhcnQgb2YgdGhlIHJlcGxpY2EgaWRlbnRpdHkuCistLSAxYi4gUkVQTElD QSBJREVOVElUWSBpcyBERUZBVUxUIGFuZCB0YWJsZSBoYXMgbm8gUEsKK0FMVEVSIFBVQkxJ Q0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9ub3BrIFdIRVJFIChhID4g OTkpOworLS0gZmFpbCAtICJhIiBpcyBub3QgcGFydCBvZiBSRVBMSUNBIElERU5USVRZCitV UERBVEUgcmZfdGJsX2FiY2Rfbm9wayBTRVQgYSA9IDE7CitFUlJPUjogIGNhbm5vdCB1cGRh dGUgdGFibGUgInJmX3RibF9hYmNkX25vcGsiCitERVRBSUw6ICBDb2x1bW4gImEiIHVzZWQg aW4gdGhlIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb24gaXMgbm90IHBhcnQgb2YgdGhl IHJlcGxpY2EgaWRlbnRpdHkuCistLSBDYXNlIDIuIFJFUExJQ0EgSURFTlRJVFkgRlVMTAor QUxURVIgVEFCTEUgcmZfdGJsX2FiY2RfcGsgUkVQTElDQSBJREVOVElUWSBGVUxMOworQUxU RVIgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBSRVBMSUNBIElERU5USVRZIEZVTEw7CitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2RfcGsgV0hFUkUg KGMgPiA5OSk7CistLSBvayAtICJjIiBpcyBpbiBSRVBMSUNBIElERU5USVRZIG5vdyBldmVu IHRob3VnaCBub3QgaW4gUEsKK1VQREFURSByZl90YmxfYWJjZF9wayBTRVQgYSA9IDE7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBX SEVSRSAoYSA+IDk5KTsKKy0tIG9rIC0gImEiIGlzIGluIFJFUExJQ0EgSURFTlRJVFkgbm93 CitVUERBVEUgcmZfdGJsX2FiY2Rfbm9wayBTRVQgYSA9IDE7CistLSBDYXNlIDMuIFJFUExJ Q0EgSURFTlRJVFkgTk9USElORworQUxURVIgVEFCTEUgcmZfdGJsX2FiY2RfcGsgUkVQTElD QSBJREVOVElUWSBOT1RISU5HOworQUxURVIgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBSRVBM SUNBIElERU5USVRZIE5PVEhJTkc7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQg VEFCTEUgcmZfdGJsX2FiY2RfcGsgV0hFUkUgKGEgPiA5OSk7CistLSBmYWlsIC0gImEiIGlz IGluIFBLIGJ1dCBpdCBpcyBub3QgcGFydCBvZiBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcK K1VQREFURSByZl90YmxfYWJjZF9wayBTRVQgYSA9IDE7CitFUlJPUjogIGNhbm5vdCB1cGRh dGUgdGFibGUgInJmX3RibF9hYmNkX3BrIgorREVUQUlMOiAgQ29sdW1uICJhIiB1c2VkIGlu IHRoZSBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSBy ZXBsaWNhIGlkZW50aXR5LgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxF IHJmX3RibF9hYmNkX3BrIFdIRVJFIChjID4gOTkpOworLS0gZmFpbCAtICJjIiBpcyBub3Qg aW4gUEsgYW5kIG5vdCBpbiBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcKK1VQREFURSByZl90 YmxfYWJjZF9wayBTRVQgYSA9IDE7CitFUlJPUjogIGNhbm5vdCB1cGRhdGUgdGFibGUgInJm X3RibF9hYmNkX3BrIgorREVUQUlMOiAgQ29sdW1uICJjIiB1c2VkIGluIHRoZSBwdWJsaWNh dGlvbiBXSEVSRSBleHByZXNzaW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSByZXBsaWNhIGlkZW50 aXR5LgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNk X25vcGsgV0hFUkUgKGEgPiA5OSk7CistLSBmYWlsIC0gImEiIGlzIG5vdCBpbiBSRVBMSUNB IElERU5USVRZIE5PVEhJTkcKK1VQREFURSByZl90YmxfYWJjZF9ub3BrIFNFVCBhID0gMTsK K0VSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAicmZfdGJsX2FiY2Rfbm9wayIKK0RFVEFJ TDogIENvbHVtbiAiYSIgdXNlZCBpbiB0aGUgcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lv biBpcyBub3QgcGFydCBvZiB0aGUgcmVwbGljYSBpZGVudGl0eS4KKy0tIENhc2UgNC4gUkVQ TElDQSBJREVOVElUWSBJTkRFWAorQUxURVIgVEFCTEUgcmZfdGJsX2FiY2RfcGsgQUxURVIg Q09MVU1OIGMgU0VUIE5PVCBOVUxMOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfYWJjZF9w a19jIE9OIHJmX3RibF9hYmNkX3BrKGMpOworQUxURVIgVEFCTEUgcmZfdGJsX2FiY2RfcGsg UkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRFWCBpZHhfYWJjZF9wa19jOworQUxURVIgVEFC TEUgcmZfdGJsX2FiY2Rfbm9wayBBTFRFUiBDT0xVTU4gYyBTRVQgTk9UIE5VTEw7CitDUkVB VEUgVU5JUVVFIElOREVYIGlkeF9hYmNkX25vcGtfYyBPTiByZl90YmxfYWJjZF9ub3BrKGMp OworQUxURVIgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBSRVBMSUNBIElERU5USVRZIFVTSU5H IElOREVYIGlkeF9hYmNkX25vcGtfYzsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNF VCBUQUJMRSByZl90YmxfYWJjZF9wayBXSEVSRSAoYSA+IDk5KTsKKy0tIGZhaWwgLSAiYSIg aXMgaW4gUEsgYnV0IGl0IGlzIG5vdCBwYXJ0IG9mIFJFUExJQ0EgSURFTlRJVFkgSU5ERVgK K1VQREFURSByZl90YmxfYWJjZF9wayBTRVQgYSA9IDE7CitFUlJPUjogIGNhbm5vdCB1cGRh dGUgdGFibGUgInJmX3RibF9hYmNkX3BrIgorREVUQUlMOiAgQ29sdW1uICJhIiB1c2VkIGlu IHRoZSBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9uIGlzIG5vdCBwYXJ0IG9mIHRoZSBy ZXBsaWNhIGlkZW50aXR5LgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxF IHJmX3RibF9hYmNkX3BrIFdIRVJFIChjID4gOTkpOworLS0gb2sgLSAiYyIgaXMgbm90IGlu IFBLIGJ1dCBpdCBpcyBwYXJ0IG9mIFJFUExJQ0EgSURFTlRJVFkgSU5ERVgKK1VQREFURSBy Zl90YmxfYWJjZF9wayBTRVQgYSA9IDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBT RVQgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBXSEVSRSAoYSA+IDk5KTsKKy0tIGZhaWwgLSAi YSIgaXMgbm90IGluIFJFUExJQ0EgSURFTlRJVFkgSU5ERVgKK1VQREFURSByZl90YmxfYWJj ZF9ub3BrIFNFVCBhID0gMTsKK0VSUk9SOiAgY2Fubm90IHVwZGF0ZSB0YWJsZSAicmZfdGJs X2FiY2Rfbm9wayIKK0RFVEFJTDogIENvbHVtbiAiYSIgdXNlZCBpbiB0aGUgcHVibGljYXRp b24gV0hFUkUgZXhwcmVzc2lvbiBpcyBub3QgcGFydCBvZiB0aGUgcmVwbGljYSBpZGVudGl0 eS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9u b3BrIFdIRVJFIChjID4gOTkpOworLS0gb2sgLSAiYyIgaXMgcGFydCBvZiBSRVBMSUNBIElE RU5USVRZIElOREVYCitVUERBVEUgcmZfdGJsX2FiY2Rfbm9wayBTRVQgYSA9IDE7CistLSBU ZXN0cyBmb3IgcGFydGl0aW9uZWQgdGFibGUKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2 IFNFVCBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3BrIFdIRVJFIChhID4gOTkpOworQUxURVIg UFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0w KTsKKy0tIG9rIC0gcGFydGl0aW9uIGRvZXMgbm90IGhhdmUgcm93IGZpbHRlcgorVVBEQVRF IHJmX3RibF9hYmNkX3BhcnRfcGsgU0VUIGEgPSAxOworQUxURVIgUFVCTElDQVRJT04gdGVz dHB1YjYgU0VUIChQVUJMSVNIX1ZJQV9QQVJUSVRJT05fUk9PVD0xKTsKKy0tIG9rIC0gImEi IGlzIGEgT0sgY29sCitVUERBVEUgcmZfdGJsX2FiY2RfcGFydF9wayBTRVQgYSA9IDE7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2RfcGFydF9w ayBXSEVSRSAoYiA+IDk5KTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCAoUFVC TElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MCk7CistLSBvayAtIHBhcnRpdGlvbiBkb2VzIG5v dCBoYXZlIHJvdyBmaWx0ZXIKK1VQREFURSByZl90YmxfYWJjZF9wYXJ0X3BrIFNFVCBhID0g MTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCAoUFVCTElTSF9WSUFfUEFSVElU SU9OX1JPT1Q9MSk7CistLSBmYWlsIC0gImIiIGlzIG5vdCBpbiBSRVBMSUNBIElERU5USVRZ IElOREVYCitVUERBVEUgcmZfdGJsX2FiY2RfcGFydF9wayBTRVQgYSA9IDE7CitFUlJPUjog IGNhbm5vdCB1cGRhdGUgdGFibGUgInJmX3RibF9hYmNkX3BhcnRfcGtfMSIKK0RFVEFJTDog IENvbHVtbiAiYiIgdXNlZCBpbiB0aGUgcHVibGljYXRpb24gV0hFUkUgZXhwcmVzc2lvbiBp cyBub3QgcGFydCBvZiB0aGUgcmVwbGljYSBpZGVudGl0eS4KK0RST1AgUFVCTElDQVRJT04g dGVzdHB1YjY7CitEUk9QIFRBQkxFIHJmX3RibF9hYmNkX3BrOworRFJPUCBUQUJMRSByZl90 YmxfYWJjZF9ub3BrOworRFJPUCBUQUJMRSByZl90YmxfYWJjZF9wYXJ0X3BrOworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LSBUZXN0IGNhY2hlIGludmFsaWRhdGlvbiBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbgog U0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFRBQkxFIHRlc3Rw dWJfdGJsNChhIGludCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJs aWNhdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5k ZXggOTE4NWQ1YTFkMi4uYTk1YzcxYjFjYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1Ymxp Y2F0aW9uLnNxbApAQCAtMTM4LDEyICsxMzgsMTUgQEAgQ1JFQVRFIFRBQkxFIHRlc3RwdWJf cmZfdGJsMSAoYSBpbnRlZ2VyLCBiIHRleHQpOwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZf dGJsMiAoYyB0ZXh0LCBkIGludGVnZXIpOwogQ1JFQVRFIFRBQkxFIHRlc3RwdWJfcmZfdGJs MyAoZSBpbnRlZ2VyKTsKIENSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3RibDQgKGcgdGV4dCk7 Ci1DUkVBVEUgU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hlbWE7Ci1DUkVBVEUgVEFCTEUgdGVz dHB1Yl9yZl9teXNjaGVtYS50ZXN0cHViX3JmX3RibDUoaCBpbnRlZ2VyKTsKLUNSRUFURSBT Q0hFTUEgdGVzdHB1Yl9yZl9teXNjaGVtYTE7Ci1DUkVBVEUgVEFCTEUgdGVzdHB1Yl9yZl9t eXNjaGVtYTEudGVzdHB1Yl9yZl90Ymw2KGkgaW50ZWdlcik7CitDUkVBVEUgVEFCTEUgdGVz dHB1Yl9yZl90Ymw1IChhIHhtbCk7CitDUkVBVEUgU0NIRU1BIHRlc3RwdWJfcmZfc2NoZW1h MTsKK0NSRUFURSBUQUJMRSB0ZXN0cHViX3JmX3NjaGVtYTEudGVzdHB1Yl9yZl90Ymw1ICho IGludGVnZXIpOworQ1JFQVRFIFNDSEVNQSB0ZXN0cHViX3JmX3NjaGVtYTI7CitDUkVBVEUg VEFCTEUgdGVzdHB1Yl9yZl9zY2hlbWEyLnRlc3RwdWJfcmZfdGJsNiAoaSBpbnRlZ2VyKTsK IFNFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKLUNSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViNSBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxLCB0ZXN0cHViX3JmX3RibDIg V0hFUkUgKGMgPD4gJ3Rlc3QnIEFORCBkIDwgNSk7CistLSBGaXJzdGx5LCB0ZXN0IHVzaW5n IHRoZSBvcHRpb24gcHVibGlzaD0naW5zZXJ0JyBiZWNhdXNlIHRoZSByb3cgZmlsdGVyCist LSB2YWxpZGF0aW9uIG9mIHJlZmVyZW5jZWQgY29sdW1ucyBpcyBsZXNzIHN0cmljdCB0aGFu IGZvciBkZWxldGUvdXBkYXRlLgorQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEZPUiBU QUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfdGJsMiBXSEVSRSAoYyA8PiAndGVz dCcgQU5EIGQgPCA1KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcpOwogUkVTRVQgY2xpZW50 X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWI1CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViNSBBREQgVEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMTAwMCBBTkQgZSA8 IDIwMDApOwpAQCAtMTYyLDE5ICsxNjUsMTkgQEAgUkVTRVQgY2xpZW50X21pbl9tZXNzYWdl czsKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9kcGx1c19yZl95ZXMsIHRlc3RwdWJfZHBs dXNfcmZfbm87CiAtLSBzb21lIG1vcmUgc3ludGF4IHRlc3RzIHRvIGV4ZXJjaXNlIG90aGVy IHBhcnNlciBwYXRod2F5cwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwot Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MSBGT1IgVEFCTEUgdGVzdHB1Yl9y Zl90YmwxLCBPTkxZIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA8IDk5OSk7CitDUkVBVEUg UFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgxIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEs IE9OTFkgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlIDwgOTk5KSBXSVRIIChwdWJsaXNoID0g J2luc2VydCcpOwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWJf c3ludGF4MQogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDE7CiBTRVQgY2xpZW50 X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9z eW50YXgyIEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfbXlzY2hlbWEu dGVzdHB1Yl9yZl90Ymw1IFdIRVJFIChoIDwgOTk5KTsKK0NSRUFURSBQVUJMSUNBVElPTiB0 ZXN0cHViX3N5bnRheDIgRk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl9z Y2hlbWExLnRlc3RwdWJfcmZfdGJsNSBXSEVSRSAoaCA8IDk5OSkgV0lUSCAocHVibGlzaCA9 ICdpbnNlcnQnKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHVi X3N5bnRheDIKIERST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgyOwogLS0gZmFpbCAt IHNjaGVtYXMgZG9uJ3QgYWxsb3cgV0hFUkUgY2xhdXNlCiBTRVQgY2xpZW50X21pbl9tZXNz YWdlcyA9ICdFUlJPUic7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgzIEZP UiBBTEwgVEFCTEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1hIFdIRVJFIChhID0g MTIzKTsKLUNSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDMgRk9SIEFMTCBUQUJM RVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hlbWEsIHRlc3RwdWJfcmZfbXlzY2hlbWEg V0hFUkUgKGEgPSAxMjMpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfc3ludGF4MyBG T1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgdGVzdHB1Yl9yZl9zY2hlbWExIFdIRVJFIChhID0g MTIzKTsKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDMgRk9SIEFMTCBUQUJM RVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfc2NoZW1hMSwgdGVzdHB1Yl9yZl9zY2hlbWExIFdI RVJFIChhID0gMTIzKTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAtLSBmYWlsIC0g ZHVwbGljYXRlIHRhYmxlcyBhcmUgbm90IGFsbG93ZWQgaWYgdGhhdCB0YWJsZSBoYXMgYW55 IFdIRVJFIGNsYXVzZQogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwpAQCAt MTgzLDMyICsxODYsMTU3IEBAIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2R1cHMgRk9S IFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgdGVzdHB1Yl9yZl90YmwxIFdIRVJFCiBSRVNFVCBj bGllbnRfbWluX21lc3NhZ2VzOwogLS0gZmFpbCAtIGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgbm90 IGFsbG93ZWQgaW4gV0hFUkUgY2xhdXNlCiBBTFRFUiBQVUJMSUNBVElPTiAgdGVzdHB1YjUg U0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA8IEFWRyhlKSk7Ci0tLSBmYWls IC0gZnVuY3Rpb25zIGRpc2FsbG93ZWQKLUFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEFE RCBUQUJMRSB0ZXN0cHViX3JmX3RibDQgV0hFUkUgKGxlbmd0aChnKSA8IDYpOwotLS0gZmFp bCAtIHVzZXItZGVmaW5lZCBvcGVyYXRvcnMgZGlzYWxsb3dlZAotQ1JFQVRFIEZVTkNUSU9O IHRlc3RwdWJfcmZfZnVuYyhpbnRlZ2VyLCBpbnRlZ2VyKSBSRVRVUk5TIGJvb2xlYW4gQVMg JCQgU0VMRUNUIGhhc2hpbnQ0KCQxKSA+ICQyICQkIExBTkdVQUdFIFNRTDsKLUNSRUFURSBP UEVSQVRPUiA9Iz4gKFBST0NFRFVSRSA9IHRlc3RwdWJfcmZfZnVuYywgTEVGVEFSRyA9IGlu dGVnZXIsIFJJR0hUQVJHID0gaW50ZWdlcik7CistLSBmYWlsIC0gdXNlci1kZWZpbmVkIG9w ZXJhdG9ycyBhcmUgbm90IGFsbG93ZWQKK0NSRUFURSBGVU5DVElPTiB0ZXN0cHViX3JmX2Z1 bmMxKGludGVnZXIsIGludGVnZXIpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJCBTRUxFQ1QgaGFz aGludDQoJDEpID4gJDIgJCQgTEFOR1VBR0UgU1FMOworQ1JFQVRFIE9QRVJBVE9SID0jPiAo UFJPQ0VEVVJFID0gdGVzdHB1Yl9yZl9mdW5jMSwgTEVGVEFSRyA9IGludGVnZXIsIFJJR0hU QVJHID0gaW50ZWdlcik7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIFRBQkxF IHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA9Iz4gMjcpOworLS0gZmFpbCAtIHVzZXItZGVm aW5lZCBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkCitDUkVBVEUgRlVOQ1RJT04gdGVzdHB1 Yl9yZl9mdW5jMigpIFJFVFVSTlMgaW50ZWdlciBBUyAkJCBCRUdJTiBSRVRVUk4gMTIzOyBF TkQ7ICQkIExBTkdVQUdFIHBscGdzcWw7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBB REQgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChhID49IHRlc3RwdWJfcmZfZnVuYzIo KSk7CistLSBmYWlsIC0gbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2Vk LiByYW5kb20oKSBpcyB2b2xhdGlsZS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IEFE RCBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hFUkUgKGEgPCByYW5kb20oKSk7CistLSBvayAt IE5VTExJRiBpcyBhbGxvd2VkCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFC TEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChOVUxMSUYoMSwyKSA9IGEpOworLS0gb2sgLSBi dWlsdGluIG9wZXJhdG9ycyBhcmUgYWxsb3dlZAorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1 YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSBXSEVSRSAoYSBJUyBOVUxMKTsKK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hFUkUg KChhID4gNSkgSVMgRkFMU0UpOworLS0gb2sgLSBpbW11dGFibGUgYnVpbHRpbiBmdW5jdGlv bnMgYXJlIGFsbG93ZWQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0 ZXN0cHViX3JmX3RibDQgV0hFUkUgKGxlbmd0aChnKSA8IDYpOworLS0gZmFpbCAtIHVzZXIt ZGVmaW5lZCB0eXBlcyBkaXNhbGxvd2VkCitDUkVBVEUgVFlQRSByZl9idWdfc3RhdHVzIEFT IEVOVU0gKCduZXcnLCAnb3BlbicsICdjbG9zZWQnKTsKK0NSRUFURSBUQUJMRSByZl9idWcg KGlkIHNlcmlhbCwgZGVzY3JpcHRpb24gdGV4dCwgc3RhdHVzIHJmX2J1Z19zdGF0dXMpOwor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBUQUJMRSByZl9idWcgV0hFUkUgKHN0 YXR1cyA9ICdvcGVuJykgV0lUSCAocHVibGlzaCA9ICdpbnNlcnQnKTsKK0RST1AgVEFCTEUg cmZfYnVnOworRFJPUCBUWVBFIHJmX2J1Z19zdGF0dXM7CistLSBmYWlsIC0gcm93LWZpbHRl ciBleHByZXNzaW9uIGlzIG5vdCBzaW1wbGUKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHVi NiBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChhIElOIChTRUxFQ1QgZ2VuZXJh dGVfc2VyaWVzKDEsNSkpKTsKKy0tIGZhaWwgLSBzeXN0ZW0gY29sdW1ucyBhcmUgbm90IGFs bG93ZWQKK0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgVEFCTEUgdGVzdHB1Yl9y Zl90YmwxIFdIRVJFICgnKDAsMSknOjp0aWQgPSBjdGlkKTsKKy0tIG9rIC0gY29uZGl0aW9u YWwgZXhwcmVzc2lvbnMgYXJlIGFsbG93ZWQKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1 IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDUgV0hFUkUgKGEgSVMgRE9DVU1FTlQpOworQUxU RVIgUFVCTElDQVRJT04gdGVzdHB1YjUgU0VUIFRBQkxFIHRlc3RwdWJfcmZfdGJsNSBXSEVS RSAoeG1sZXhpc3RzKCcvL2Zvb1t0ZXh0KCkgPSAnJ2JhcicnXScgUEFTU0lORyBCWSBWQUxV RSBhKSk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9y Zl90YmwxIFdIRVJFIChOVUxMSUYoMSwgMikgPSBhKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hFUkUgKENBU0UgYSBXSEVOIDUg VEhFTiB0cnVlIEVMU0UgZmFsc2UgRU5EKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1 IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hFUkUgKENPQUxFU0NFKGIsICdmb28nKSA9 ICdmb28nKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHVi X3JmX3RibDEgV0hFUkUgKEdSRUFURVNUKGEsIDEwKSA+IDEwKTsKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hFUkUgKGEgSU4gKDIs IDQsIDYpKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHVi X3JmX3RibDEgV0hFUkUgKEFSUkFZW2FdIDxAIEFSUkFZWzIsIDQsIDZdKTsKIC0tIGZhaWwg LSBXSEVSRSBub3QgYWxsb3dlZCBpbiBEUk9QCi1BTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHVi NSBEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMyBXSEVSRSAoZSA8IDI3KTsKK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWI1IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChl IDwgMjcpOwogLS0gZmFpbCAtIGNhbm5vdCBBTFRFUiBTRVQgdGFibGUgd2hpY2ggaXMgYSBt ZW1iZXIgb2YgYSBwcmUtZXhpc3Rpbmcgc2NoZW1hCiBTRVQgY2xpZW50X21pbl9tZXNzYWdl cyA9ICdFUlJPUic7Ci1DUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjcgRk9SIEFMTCBUQUJM RVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hlbWExOwotQUxURVIgUFVCTElDQVRJT04g dGVzdHB1YjcgU0VUIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hlbWEx LCBUQUJMRSB0ZXN0cHViX3JmX215c2NoZW1hMS50ZXN0cHViX3JmX3RibDYgV0hFUkUgKGkg PCA5OSk7CitDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjYgRk9SIEFMTCBUQUJMRVMgSU4g U0NIRU1BIHRlc3RwdWJfcmZfc2NoZW1hMjsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2 IFNFVCBBTEwgVEFCTEVTIElOIFNDSEVNQSB0ZXN0cHViX3JmX3NjaGVtYTIsIFRBQkxFIHRl c3RwdWJfcmZfc2NoZW1hMi50ZXN0cHViX3JmX3RibDYgV0hFUkUgKGkgPCA5OSk7CiBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogCiBEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsMTsK IERST1AgVEFCTEUgdGVzdHB1Yl9yZl90YmwyOwogRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3Ri bDM7CiBEUk9QIFRBQkxFIHRlc3RwdWJfcmZfdGJsNDsKLURST1AgVEFCTEUgdGVzdHB1Yl9y Zl9teXNjaGVtYS50ZXN0cHViX3JmX3RibDU7Ci1EUk9QIFRBQkxFIHRlc3RwdWJfcmZfbXlz Y2hlbWExLnRlc3RwdWJfcmZfdGJsNjsKLURST1AgU0NIRU1BIHRlc3RwdWJfcmZfbXlzY2hl bWE7Ci1EUk9QIFNDSEVNQSB0ZXN0cHViX3JmX215c2NoZW1hMTsKK0RST1AgVEFCTEUgdGVz dHB1Yl9yZl90Ymw1OworRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3NjaGVtYTEudGVzdHB1Yl9y Zl90Ymw1OworRFJPUCBUQUJMRSB0ZXN0cHViX3JmX3NjaGVtYTIudGVzdHB1Yl9yZl90Ymw2 OworRFJPUCBTQ0hFTUEgdGVzdHB1Yl9yZl9zY2hlbWExOworRFJPUCBTQ0hFTUEgdGVzdHB1 Yl9yZl9zY2hlbWEyOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViNTsKLURST1AgUFVCTElD QVRJT04gdGVzdHB1Yjc7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI2OwogRFJPUCBPUEVS QVRPUiA9Iz4oaW50ZWdlciwgaW50ZWdlcik7Ci1EUk9QIEZVTkNUSU9OIHRlc3RwdWJfcmZf ZnVuYyhpbnRlZ2VyLCBpbnRlZ2VyKTsKK0RST1AgRlVOQ1RJT04gdGVzdHB1Yl9yZl9mdW5j MShpbnRlZ2VyLCBpbnRlZ2VyKTsKK0RST1AgRlVOQ1RJT04gdGVzdHB1Yl9yZl9mdW5jMigp OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIE1vcmUgcm93IGZpbHRlciB0ZXN0cyBmb3IgdmFsaWRhdGluZyBjb2x1 bW4gcmVmZXJlbmNlcworQ1JFQVRFIFRBQkxFIHJmX3RibF9hYmNkX25vcGsoYSBpbnQsIGIg aW50LCBjIGludCwgZCBpbnQpOworQ1JFQVRFIFRBQkxFIHJmX3RibF9hYmNkX3BrKGEgaW50 LCBiIGludCwgYyBpbnQsIGQgaW50LCBQUklNQVJZIEtFWShhLGIpKTsKK0NSRUFURSBUQUJM RSByZl90YmxfYWJjZF9wYXJ0X3BrIChhIGludCBQUklNQVJZIEtFWSwgYiBpbnQpIFBBUlRJ VElPTiBieSBSQU5HRSAoYSk7CitDUkVBVEUgVEFCTEUgcmZfdGJsX2FiY2RfcGFydF9wa18x IChiIGludCwgYSBpbnQgUFJJTUFSWSBLRVkpOworQUxURVIgVEFCTEUgcmZfdGJsX2FiY2Rf cGFydF9wayBBVFRBQ0ggUEFSVElUSU9OIHJmX3RibF9hYmNkX3BhcnRfcGtfMSBGT1IgVkFM VUVTIEZST00gKDEpIFRPICgxMCk7CisKKy0tIENhc2UgMS4gUkVQTElDQSBJREVOVElUWSBE RUZBVUxUIChtZWFucyB1c2UgcHJpbWFyeSBrZXkgb3Igbm90aGluZykKKy0tIDFhLiBSRVBM SUNBIElERU5USVRZIGlzIERFRkFVTFQgYW5kIHRhYmxlIGhhcyBhIFBLLgorU0VUIGNsaWVu dF9taW5fbWVzc2FnZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2 IEZPUiBUQUJMRSByZl90YmxfYWJjZF9wayBXSEVSRSAoYSA+IDk5KTsKK1JFU0VUIGNsaWVu dF9taW5fbWVzc2FnZXM7CistLSBvayAtICJhIiBpcyBhIFBLIGNvbAorVVBEQVRFIHJmX3Ri bF9hYmNkX3BrIFNFVCBhID0gMTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBU QUJMRSByZl90YmxfYWJjZF9wayBXSEVSRSAoYiA+IDk5KTsKKy0tIG9rIC0gImIiIGlzIGEg UEsgY29sCitVUERBVEUgcmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAxOworQUxURVIgUFVCTElD QVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX3BrIFdIRVJFIChjID4gOTkp OworLS0gZmFpbCAtICJjIiBpcyBub3QgcGFydCBvZiB0aGUgUEsKK1VQREFURSByZl90Ymxf YWJjZF9wayBTRVQgYSA9IDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFC TEUgcmZfdGJsX2FiY2RfcGsgV0hFUkUgKGQgPiA5OSk7CistLSBmYWlsIC0gImQiIGlzIG5v dCBwYXJ0IG9mIHRoZSBQSworVVBEQVRFIHJmX3RibF9hYmNkX3BrIFNFVCBhID0gMTsKKy0t IDFiLiBSRVBMSUNBIElERU5USVRZIGlzIERFRkFVTFQgYW5kIHRhYmxlIGhhcyBubyBQSwor QUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNkX25vcGsg V0hFUkUgKGEgPiA5OSk7CistLSBmYWlsIC0gImEiIGlzIG5vdCBwYXJ0IG9mIFJFUExJQ0Eg SURFTlRJVFkKK1VQREFURSByZl90YmxfYWJjZF9ub3BrIFNFVCBhID0gMTsKKworLS0gQ2Fz ZSAyLiBSRVBMSUNBIElERU5USVRZIEZVTEwKK0FMVEVSIFRBQkxFIHJmX3RibF9hYmNkX3Br IFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKK0FMVEVSIFRBQkxFIHJmX3RibF9hYmNkX25vcGsg UkVQTElDQSBJREVOVElUWSBGVUxMOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VU IFRBQkxFIHJmX3RibF9hYmNkX3BrIFdIRVJFIChjID4gOTkpOworLS0gb2sgLSAiYyIgaXMg aW4gUkVQTElDQSBJREVOVElUWSBub3cgZXZlbiB0aG91Z2ggbm90IGluIFBLCitVUERBVEUg cmZfdGJsX2FiY2RfcGsgU0VUIGEgPSAxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYg U0VUIFRBQkxFIHJmX3RibF9hYmNkX25vcGsgV0hFUkUgKGEgPiA5OSk7CistLSBvayAtICJh IiBpcyBpbiBSRVBMSUNBIElERU5USVRZIG5vdworVVBEQVRFIHJmX3RibF9hYmNkX25vcGsg U0VUIGEgPSAxOworCistLSBDYXNlIDMuIFJFUExJQ0EgSURFTlRJVFkgTk9USElORworQUxU RVIgVEFCTEUgcmZfdGJsX2FiY2RfcGsgUkVQTElDQSBJREVOVElUWSBOT1RISU5HOworQUxU RVIgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBSRVBMSUNBIElERU5USVRZIE5PVEhJTkc7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2RfcGsgV0hF UkUgKGEgPiA5OSk7CistLSBmYWlsIC0gImEiIGlzIGluIFBLIGJ1dCBpdCBpcyBub3QgcGFy dCBvZiBSRVBMSUNBIElERU5USVRZIE5PVEhJTkcKK1VQREFURSByZl90YmxfYWJjZF9wayBT RVQgYSA9IDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJs X2FiY2RfcGsgV0hFUkUgKGMgPiA5OSk7CistLSBmYWlsIC0gImMiIGlzIG5vdCBpbiBQSyBh bmQgbm90IGluIFJFUExJQ0EgSURFTlRJVFkgTk9USElORworVVBEQVRFIHJmX3RibF9hYmNk X3BrIFNFVCBhID0gMTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSBy Zl90YmxfYWJjZF9ub3BrIFdIRVJFIChhID4gOTkpOworLS0gZmFpbCAtICJhIiBpcyBub3Qg aW4gUkVQTElDQSBJREVOVElUWSBOT1RISU5HCitVUERBVEUgcmZfdGJsX2FiY2Rfbm9wayBT RVQgYSA9IDE7CisKKy0tIENhc2UgNC4gUkVQTElDQSBJREVOVElUWSBJTkRFWAorQUxURVIg VEFCTEUgcmZfdGJsX2FiY2RfcGsgQUxURVIgQ09MVU1OIGMgU0VUIE5PVCBOVUxMOworQ1JF QVRFIFVOSVFVRSBJTkRFWCBpZHhfYWJjZF9wa19jIE9OIHJmX3RibF9hYmNkX3BrKGMpOwor QUxURVIgVEFCTEUgcmZfdGJsX2FiY2RfcGsgUkVQTElDQSBJREVOVElUWSBVU0lORyBJTkRF WCBpZHhfYWJjZF9wa19jOworQUxURVIgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wayBBTFRFUiBD T0xVTU4gYyBTRVQgTk9UIE5VTEw7CitDUkVBVEUgVU5JUVVFIElOREVYIGlkeF9hYmNkX25v cGtfYyBPTiByZl90YmxfYWJjZF9ub3BrKGMpOworQUxURVIgVEFCTEUgcmZfdGJsX2FiY2Rf bm9wayBSRVBMSUNBIElERU5USVRZIFVTSU5HIElOREVYIGlkeF9hYmNkX25vcGtfYzsKK0FM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSByZl90YmxfYWJjZF9wayBXSEVS RSAoYSA+IDk5KTsKKy0tIGZhaWwgLSAiYSIgaXMgaW4gUEsgYnV0IGl0IGlzIG5vdCBwYXJ0 IG9mIFJFUExJQ0EgSURFTlRJVFkgSU5ERVgKK1VQREFURSByZl90YmxfYWJjZF9wayBTRVQg YSA9IDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2Fi Y2RfcGsgV0hFUkUgKGMgPiA5OSk7CistLSBvayAtICJjIiBpcyBub3QgaW4gUEsgYnV0IGl0 IGlzIHBhcnQgb2YgUkVQTElDQSBJREVOVElUWSBJTkRFWAorVVBEQVRFIHJmX3RibF9hYmNk X3BrIFNFVCBhID0gMTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCBUQUJMRSBy Zl90YmxfYWJjZF9ub3BrIFdIRVJFIChhID4gOTkpOworLS0gZmFpbCAtICJhIiBpcyBub3Qg aW4gUkVQTElDQSBJREVOVElUWSBJTkRFWAorVVBEQVRFIHJmX3RibF9hYmNkX25vcGsgU0VU IGEgPSAxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9h YmNkX25vcGsgV0hFUkUgKGMgPiA5OSk7CistLSBvayAtICJjIiBpcyBwYXJ0IG9mIFJFUExJ Q0EgSURFTlRJVFkgSU5ERVgKK1VQREFURSByZl90YmxfYWJjZF9ub3BrIFNFVCBhID0gMTsK KworLS0gVGVzdHMgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViNiBTRVQgVEFCTEUgcmZfdGJsX2FiY2RfcGFydF9wayBXSEVSRSAoYSA+IDk5KTsK K0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IFNFVCAoUFVCTElTSF9WSUFfUEFSVElUSU9O X1JPT1Q9MCk7CistLSBvayAtIHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlIHJvdyBmaWx0ZXIK K1VQREFURSByZl90YmxfYWJjZF9wYXJ0X3BrIFNFVCBhID0gMTsKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWI2IFNFVCAoUFVCTElTSF9WSUFfUEFSVElUSU9OX1JPT1Q9MSk7CistLSBv ayAtICJhIiBpcyBhIE9LIGNvbAorVVBEQVRFIHJmX3RibF9hYmNkX3BhcnRfcGsgU0VUIGEg PSAxOworQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjYgU0VUIFRBQkxFIHJmX3RibF9hYmNk X3BhcnRfcGsgV0hFUkUgKGIgPiA5OSk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBT RVQgKFBVQkxJU0hfVklBX1BBUlRJVElPTl9ST09UPTApOworLS0gb2sgLSBwYXJ0aXRpb24g ZG9lcyBub3QgaGF2ZSByb3cgZmlsdGVyCitVUERBVEUgcmZfdGJsX2FiY2RfcGFydF9wayBT RVQgYSA9IDE7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNiBTRVQgKFBVQkxJU0hfVklB X1BBUlRJVElPTl9ST09UPTEpOworLS0gZmFpbCAtICJiIiBpcyBub3QgaW4gUkVQTElDQSBJ REVOVElUWSBJTkRFWAorVVBEQVRFIHJmX3RibF9hYmNkX3BhcnRfcGsgU0VUIGEgPSAxOwor CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI2OworRFJPUCBUQUJMRSByZl90YmxfYWJjZF9w azsKK0RST1AgVEFCTEUgcmZfdGJsX2FiY2Rfbm9wazsKK0RST1AgVEFCTEUgcmZfdGJsX2Fi Y2RfcGFydF9wazsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogCiAtLSBUZXN0IGNhY2hlIGludmFsaWRhdGlvbiBGT1IgQUxM IFRBQkxFUyBwdWJsaWNhdGlvbgogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1In OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI3X3Jvd19maWx0ZXIu cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjdfcm93X2ZpbHRlci5wbAppbmRleCA2 NGU3MWQwYWRiLi5kZTZiNzNkMjZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjdfcm93X2ZpbHRlci5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w Mjdfcm93X2ZpbHRlci5wbApAQCAtMTgsNiArMTgsOCBAQCAkbm9kZV9zdWJzY3JpYmVyLT5z dGFydDsKICMgc2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hlcgogJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFRBQkxFIHRhYl9yb3dmaWx0ZXJf MSAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRhYl9yb3dmaWx0ZXJfMSBSRVBM SUNBIElERU5USVRZIEZVTEw7Iik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl8yIChjIGludCBwcmltYXJ5 IGtleSkiKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC0y ODAsOSArMjgyLDcgQEAgaXMoJHJlc3VsdCwgcXEoMTN8MHwxMiksICdjaGVjayByZXBsaWNh dGVkIHJvd3MgdG8gdGFiX3Jvd2ZpbHRlcl80Jyk7CiAjIC0gSU5TRVJUICgxNzAwLCAndGVz dCAxNzAwJykgWUVTLCBiZWNhdXNlIDE3MDAgPiAxMDAwIGFuZCAndGVzdCAxNzAwJyA8PiAn ZmlsdGVyZWQnCiAjIC0gVVBEQVRFICgxNjAwLCBOVUxMKSAgICAgICAgTk8sIHJvdyBmaWx0 ZXIgZXZhbHVhdGVzIHRvIGZhbHNlIGJlY2F1c2UgTlVMTCBpcyBub3QgPD4gJ2ZpbHRlcmVk JwogIyAtIFVQREFURSAoMTYwMSwgJ3Rlc3QgMTYwMSB1cGRhdGVkJykgWUVTLCBiZWNhdXNl IDE2MDEgPiAxMDAwIGFuZCAndGVzdCAxNjAxIHVwZGF0ZWQnIDw+ICdmaWx0ZXJlZCcKLSMg LSBERUxFVEUgKDE3MDApICAgICAgICAgICAgICBOTywgcm93IGZpbHRlciBjb250YWlucyBj b2x1bW4gYiB0aGF0IGlzIG5vdCBwYXJ0IG9mCi0jIHRoZSBQSyBvciBSRVBMSUNBIElERU5U SVRZIGFuZCBvbGQgdHVwbGUgY29udGFpbnMgYiA9IE5VTEwsIGhlbmNlLCByb3cgZmlsdGVy Ci0jIGV2YWx1YXRlcyB0byBmYWxzZQorIyAtIERFTEVURSAoMTcwMCkgICAgICAgICAgICAg IFlFUywgYmVjYXVzZSAxNzAwID4gMTAwMCBhbmQgJ3Rlc3QgMTcwMCcgPD4gJ2ZpbHRlcmVk JwogIwogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLApAQCAtMjkxLDcgKzI5MSw2IEBAIGlzKCRyZXN1bHQsIHFxKDEwMDF8dGVzdCAxMDAx CiAxMDAyfHRlc3QgMTAwMgogMTYwMHx0ZXN0IDE2MDAKIDE2MDF8dGVzdCAxNjAxIHVwZGF0 ZWQKLTE3MDB8dGVzdCAxNzAwCiAxOTgwfG5vdCBmaWx0ZXJlZCksICdjaGVjayByZXBsaWNh dGVkIHJvd3MgdG8gdGFibGUgdGFiX3Jvd2ZpbHRlcl8xJyk7CiAKICMgUHVibGlzaCB1c2lu ZyByb290IHBhcnRpdGlvbmVkIHRhYmxlCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cmlu ZGV4IDBjNjFjY2JkZDAuLjg5ZjM5MTczNTIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC0zNTAzLDYgKzM1MDMsNyBAQCByZXBsYWNlX3J0ZV92YXJpYWJsZXNfY29udGV4 dAogcmV0X3R5cGUKIHJld2luZF9zb3VyY2UKIHJld3JpdGVfZXZlbnQKK3JmX2NvbnRleHQK IHJpam5kYWVsX2N0eAogcm1fZGV0YWlsX3QKIHJvbGVfYXV0aF9leHRyYQotLSAKMi4yMC4x Cgo= --04cc277225e34ea480c6f61c2553d463 Content-Disposition: attachment;filename="v50-0004-fixes-0002.patch" Content-Type: text/x-patch; name="v50-0004-fixes-0002.patch" Content-Transfer-Encoding: BASE64 RnJvbSA4OWMzMzE5ZTJhN2JiNWI0ZWM5MWM3MGMzYTMzNGUwNWE5MDBjZGJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IFNhdCwgMTggRGVjIDIwMjEgMTk6MDg6MjQgLTAzMDAK U3ViamVjdDogW1BBVENIIHY1MCA0LzhdIGZpeGVzIDAwMDIKCi0tLQogc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCA0OCArKysrKysrKysrKy0tLS0tLS0t LS0tLQogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCAgICAgICAgICAgfCAgMiAr LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgfCAxMCArKy0t LQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsICAgICAgfCAgNiArLS0K IDQgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IGUzYzE1NGUzMWYuLjQ0 ZWM2OWU0MTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKQEAgLTI5 LDExICsyOSwxMSBAQAogI2luY2x1ZGUgImNhdGFsb2cvb2JqZWN0YWRkcmVzcy5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfaW5oZXJpdHMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX25h bWVzcGFjZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfcHVibGljYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0 aW9uX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb25fcmVs LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCi0jaW5jbHVkZSAiY2F0YWxvZy9w Z19wcm9jLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5j bHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtMTQ1LDMxICsx NDUsMjkgQEAgSXNSb3dGaWx0ZXJTaW1wbGVFeHByKE5vZGUgKm5vZGUpCiAgKiBleHByZXNz aW9uIi4KICAqCiAgKiBJdCBhbGxvd3Mgb25seSBzaW1wbGUgb3IgY29tcG91bmQgZXhwcmVz c2lvbnMgc3VjaCBhczoKLSAqIC0gIihWYXIgT3AgQ29uc3QpIiBvcgotICogLSAiKFZhciBP cCBWYXIpIiBvcgotICogLSAiKFZhciBPcCBDb25zdCkgQm9vbCAoVmFyIE9wIENvbnN0KSIK KyAqIC0gKFZhciBPcCBDb25zdCkKKyAqIC0gKFZhciBPcCBWYXIpCisgKiAtIChWYXIgT3Ag Q29uc3QpIEJvb2wgKFZhciBPcCBDb25zdCkKICAqIC0gZXRjCiAgKiAod2hlcmUgVmFyIGlz IGEgY29sdW1uIG9mIHRoZSB0YWJsZSB0aGlzIGZpbHRlciBiZWxvbmdzIHRvKQogICoKLSAq IFNwZWNpZmljYWxseSwKLSAqIC0gVXNlci1kZWZpbmVkIG9wZXJhdG9ycyBhcmUgbm90IGFs bG93ZWQuCi0gKiAtIFVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkLgot ICogLSBVc2VyLWRlZmluZWQgdHlwZXMgYXJlIG5vdCBhbGxvd2VkLgotICogLSBOb24taW1t dXRhYmxlIGJ1aWx0aW4gZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZC4KKyAqIFRoZSBzaW1w bGUgZXhwcmVzc2lvbiBjb250YWlucyB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKKyAq IC0gVXNlci1kZWZpbmVkIG9wZXJhdG9ycyBhcmUgbm90IGFsbG93ZWQ7CisgKiAtIFVzZXIt ZGVmaW5lZCBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkOworICogLSBVc2VyLWRlZmluZWQg dHlwZXMgYXJlIG5vdCBhbGxvd2VkOworICogLSBOb24taW1tdXRhYmxlIGJ1aWx0LWluIGZ1 bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQ7CiAgKiAtIFN5c3RlbSBjb2x1bW5zIGFyZSBub3Qg YWxsb3dlZC4KICAqCi0gKiBOb3RlczoKKyAqIE5PVEVTCiAgKgotICogV2UgZG9uJ3QgYWxs b3cgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy9vcGVyYXRvcnMvdHlwZXMgYmVjYXVzZSAoYSkg aWYgdGhlIHVzZXIKLSAqIGRyb3BzIHN1Y2ggYSB1c2VyLWRlZmluaXRpb24gb3IgaWYgdGhl cmUgaXMgYW55IG90aGVyIGVycm9yIHZpYSBpdHMgZnVuY3Rpb24sCi0gKiB0aGUgd2Fsc2Vu ZGVyIHdvbid0IGJlIGFibGUgdG8gcmVjb3ZlciBmcm9tIHN1Y2ggYW4gZXJyb3IgZXZlbiBp ZiB3ZSBmaXggdGhlCi0gKiBmdW5jdGlvbidzIHByb2JsZW0gYmVjYXVzZSBhIGhpc3Rvcmlj IHNuYXBzaG90IGlzIHVzZWQgdG8gYWNjZXNzIHRoZQotICogcm93LWZpbHRlcjsgKGIpIGFu eSBvdGhlciB0YWJsZSBjb3VsZCBiZSBhY2Nlc3NlZCB2aWEgYSBmdW5jdGlvbiwgd2hpY2gg d29uJ3QKLSAqIHdvcmsgYmVjYXVzZSBvZiBoaXN0b3JpYyBzbmFwc2hvdHMgaW4gbG9naWNh bCBkZWNvZGluZyBlbnZpcm9ubWVudC4KLSAqCi0gKiBXZSBkb24ndCBhbGxvdyBhbnl0aGlu ZyBvdGhlciB0aGFuIGltbXV0YWJsZSBidWlsdC1pbiBmdW5jdGlvbnMgYmVjYXVzZQotICog bm9uLWltbXV0YWJsZSBmdW5jdGlvbnMgY2FuIGFjY2VzcyB0aGUgZGF0YWJhc2UgYW5kIHdv dWxkIGxlYWQgdG8gdGhlIHByb2JsZW0KLSAqIChiKSBtZW50aW9uZWQgaW4gdGhlIHByZXZp b3VzIHBhcmFncmFwaC4KKyAqIFdlIGRvbid0IGFsbG93IHVzZXItZGVmaW5lZCBmdW5jdGlv bnMvb3BlcmF0b3JzL3R5cGVzIGJlY2F1c2UKKyAqIChhKSBpZiBhIHVzZXIgZHJvcHMgYSB1 c2VyLWRlZmluZWQgb2JqZWN0IHVzZWQgaW4gYSByb3cgZmlsdGVyIGV4cHJlc3Npb24gb3IK KyAqIGlmIHRoZXJlIGlzIGFueSBvdGhlciB3aGlsZSB1c2luZyBpdCwgdGhlIGxvZ2ljYWwg ZGVjb2RpbmcgaW5mcmFzdHJ1Y3R1cmUKKyAqIHdvbid0IGJlIGFibGUgdG8gcmVjb3ZlciBm cm9tIHN1Y2ggYW4gZXJyb3IgZXZlbiBpZiB0aGUgb2JqZWN0IGlzIHJlY3JlYXRlZAorICog YWdhaW4gYmVjYXVzZSBhIGhpc3RvcmljIHNuYXBzaG90IGlzIHVzZWQgdG8gZXZhbHVhdGUg dGhlIHJvdyBmaWx0ZXI7CisgKiAoYikgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gY2FuIGJl IHVzZWQgdG8gYWNjZXNzIHRhYmxlcyB3aGljaCBjb3VsZCBoYXZlCisgKiB1bnBsZWFzYW50 IHJlc3VsdHMgYmVjYXVzZSBhIGhpc3RvcmljIHNuYXBzaG90IGlzIHVzZWQuIFRoYXQncyB3 aHkgb25seQorICogbm9uLWltbXV0YWJsZSBidWlsdC1pbiBmdW5jdGlvbnMgYXJlIGFsbG93 ZWQgaW4gcm93IGZpbHRlciBleHByZXNzaW9ucy4KICAqLwogc3RhdGljIGJvb2wKIHJvd2Zp bHRlcl93YWxrZXIoTm9kZSAqbm9kZSwgUmVsYXRpb24gcmVsYXRpb24pCkBAIC0xODgsMTEg KzE4NiwxMSBAQCByb3dmaWx0ZXJfd2Fsa2VyKE5vZGUgKm5vZGUsIFJlbGF0aW9uIHJlbGF0 aW9uKQogCXsKIAkJVmFyCQkgICAqdmFyID0gKFZhciAqKSBub2RlOwogCi0JCS8qIFVzZXIt ZGVmaW5lZCB0eXBlcyBub3QgYWxsb3dlZC4gKi8KKwkJLyogVXNlci1kZWZpbmVkIHR5cGVz IGFyZSBub3QgYWxsb3dlZC4gKi8KIAkJaWYgKHZhci0+dmFydHlwZSA+PSBGaXJzdE5vcm1h bE9iamVjdElkKQotCQkJZXJyZGV0YWlsX21zZyA9IF8oIlVzZXItZGVmaW5lZCB0eXBlcyBh cmUgbm90IGFsbG93ZWQiKTsKKwkJCWVycmRldGFpbF9tc2cgPSBfKCJVc2VyLWRlZmluZWQg dHlwZXMgYXJlIG5vdCBhbGxvd2VkLiIpOwogCi0JCS8qIFN5c3RlbSBjb2x1bW5zIG5vdCBh bGxvd2VkLiAqLworCQkvKiBTeXN0ZW0gY29sdW1ucyBhcmUgbm90IGFsbG93ZWQuICovCiAJ CWVsc2UgaWYgKHZhci0+dmFyYXR0bm8gPCBJbnZhbGlkQXR0ck51bWJlcikKIAkJewogCQkJ T2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKQEAgLTIyNSwxMiAr MjIzLDEyIEBAIHJvd2ZpbHRlcl93YWxrZXIoTm9kZSAqbm9kZSwgUmVsYXRpb24gcmVsYXRp b24pCiAJfQogCWVsc2UKIAl7Ci0JCWVsb2coREVCVUcxLCAidGhlIHJvdyBmaWx0ZXIgY29u dGFpbmVkIHNvbWV0aGluZyB1bmV4cGVjdGVkOiAlcyIsIG5vZGVUb1N0cmluZyhub2RlKSk7 CisJCWVsb2coREVCVUczLCAicm93IGZpbHRlciBjb250YWlucyBhbiB1bmV4cGVjdGVkIGV4 cHJlc3Npb24gY29tcG9uZW50OiAlcyIsIG5vZGVUb1N0cmluZyhub2RlKSk7CiAKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJybXNnKCJpbnZhbGlkIHB1YmxpY2F0aW9uIFdIRVJFIGV4 cHJlc3Npb24gZm9yIHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWxhdGlvbikpLAotCQkJCWVycmRldGFpbCgiRXhwcmVzc2lvbnMgb25seSBh bGxvdyBjb2x1bW5zLCBjb25zdGFudHMgYW5kIHNvbWUgYnVpbHQtaW4gZnVuY3Rpb25zIGFu ZCBvcGVyYXRvcnMuIikKKwkJCQllcnJkZXRhaWwoIkV4cHJlc3Npb25zIG9ubHkgYWxsb3cg Y29sdW1ucywgY29uc3RhbnRzLCBidWlsdC1pbiBvcGVyYXRvcnMsIGJ1aWx0LWluIGRhdGEg dHlwZXMgYW5kIG5vbi1pbW11dGFibGUgYnVpbHQtaW4gZnVuY3Rpb25zLiIpCiAJCQkJKSk7 CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAppbmRleCBlZTE3OTA4MmNlLi4xZDRm M2E2ZWFiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKQEAgLTc5LDcgKzc5LDcgQEAg dHlwZWRlZiBlbnVtIFBhcnNlRXhwcktpbmQKIAlFWFBSX0tJTkRfQ0FMTF9BUkdVTUVOVCwJ LyogcHJvY2VkdXJlIGFyZ3VtZW50IGluIENBTEwgKi8KIAlFWFBSX0tJTkRfQ09QWV9XSEVS RSwJCS8qIFdIRVJFIGNvbmRpdGlvbiBpbiBDT1BZIEZST00gKi8KIAlFWFBSX0tJTkRfR0VO RVJBVEVEX0NPTFVNTiwgLyogZ2VuZXJhdGlvbiBleHByZXNzaW9uIGZvciBhIGNvbHVtbiAq LwotCUVYUFJfS0lORF9DWUNMRV9NQVJLLAkJLyogY3ljbGUgbWFyayB2YWx1ZSAqLworCUVY UFJfS0lORF9DWUNMRV9NQVJLCQkvKiBjeWNsZSBtYXJrIHZhbHVlICovCiB9IFBhcnNlRXhw cktpbmQ7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJs aWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91 dAppbmRleCBlNjY1MWJkYWFlLi40YTI3YWU4NmUyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dApAQCAtMzc2LDIzICszNzYsMjMgQEAgRVJST1I6 ICBpbnZhbGlkIHB1YmxpY2F0aW9uIFdIRVJFIGV4cHJlc3Npb24gZm9yIHJlbGF0aW9uICJ0 ZXN0cHViX3JmX3RibDEiCiBERVRBSUw6ICBOb24taW1tdXRhYmxlIGJ1aWx0LWluIGZ1bmN0 aW9ucyBhcmUgbm90IGFsbG93ZWQgKHJhbmRvbSkuCiAtLSBvayAtIE5VTExJRiBpcyBhbGxv d2VkCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90 YmwxIFdIRVJFIChOVUxMSUYoMSwyKSA9IGEpOwotLS0gb2sgLSBidWlsdGluIG9wZXJhdG9y cyBhcmUgYWxsb3dlZAorLS0gb2sgLSBidWlsdC1pbiBvcGVyYXRvcnMgYXJlIGFsbG93ZWQK IEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDEg V0hFUkUgKGEgSVMgTlVMTCk7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFC TEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFICgoYSA+IDUpIElTIEZBTFNFKTsKLS0tIG9rIC0g aW1tdXRhYmxlIGJ1aWx0aW4gZnVuY3Rpb25zIGFyZSBhbGxvd2VkCistLSBvayAtIGltbXV0 YWJsZSBidWlsdC1pbiBmdW5jdGlvbnMgYXJlIGFsbG93ZWQKIEFMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDQgV0hFUkUgKGxlbmd0aChnKSA8 IDYpOwogLS0gZmFpbCAtIHVzZXItZGVmaW5lZCB0eXBlcyBkaXNhbGxvd2VkCiBDUkVBVEUg VFlQRSByZl9idWdfc3RhdHVzIEFTIEVOVU0gKCduZXcnLCAnb3BlbicsICdjbG9zZWQnKTsK IENSRUFURSBUQUJMRSByZl9idWcgKGlkIHNlcmlhbCwgZGVzY3JpcHRpb24gdGV4dCwgc3Rh dHVzIHJmX2J1Z19zdGF0dXMpOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBU QUJMRSByZl9idWcgV0hFUkUgKHN0YXR1cyA9ICdvcGVuJykgV0lUSCAocHVibGlzaCA9ICdp bnNlcnQnKTsKIEVSUk9SOiAgaW52YWxpZCBwdWJsaWNhdGlvbiBXSEVSRSBleHByZXNzaW9u IGZvciByZWxhdGlvbiAicmZfYnVnIgotREVUQUlMOiAgVXNlci1kZWZpbmVkIHR5cGVzIGFy ZSBub3QgYWxsb3dlZAorREVUQUlMOiAgVXNlci1kZWZpbmVkIHR5cGVzIGFyZSBub3QgYWxs b3dlZC4KIERST1AgVEFCTEUgcmZfYnVnOwogRFJPUCBUWVBFIHJmX2J1Z19zdGF0dXM7Ci0t LSBmYWlsIC0gcm93LWZpbHRlciBleHByZXNzaW9uIGlzIG5vdCBzaW1wbGUKKy0tIGZhaWwg LSByb3cgZmlsdGVyIGV4cHJlc3Npb24gaXMgbm90IHNpbXBsZQogQ1JFQVRFIFBVQkxJQ0FU SU9OIHRlc3RwdWI2IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hFUkUgKGEgSU4gKFNF TEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSw1KSkpOwogRVJST1I6ICBpbnZhbGlkIHB1YmxpY2F0 aW9uIFdIRVJFIGV4cHJlc3Npb24gZm9yIHJlbGF0aW9uICJ0ZXN0cHViX3JmX3RibDEiCi1E RVRBSUw6ICBFeHByZXNzaW9ucyBvbmx5IGFsbG93IGNvbHVtbnMsIGNvbnN0YW50cyBhbmQg c29tZSBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG9wZXJhdG9ycy4KK0RFVEFJTDogIEV4cHJl c3Npb25zIG9ubHkgYWxsb3cgY29sdW1ucywgY29uc3RhbnRzLCBidWlsdC1pbiBvcGVyYXRv cnMsIGJ1aWx0LWluIGRhdGEgdHlwZXMgYW5kIG5vbi1pbW11dGFibGUgYnVpbHQtaW4gZnVu Y3Rpb25zLgogLS0gZmFpbCAtIHN5c3RlbSBjb2x1bW5zIGFyZSBub3QgYWxsb3dlZAogQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hF UkUgKCcoMCwxKSc6OnRpZCA9IGN0aWQpOwogRVJST1I6ICBpbnZhbGlkIHB1YmxpY2F0aW9u IFdIRVJFIGV4cHJlc3Npb24gZm9yIHJlbGF0aW9uICJ0ZXN0cHViX3JmX3RibDEiCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggYTk1YzcxYjFjYi4uNzNmYzEw M2I4YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0aW9uLnNxbApAQCAtMTk3LDEw ICsxOTcsMTAgQEAgQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgQUREIFRBQkxFIHRlc3Rw dWJfcmZfdGJsMSBXSEVSRSAoYSA+PSB0ZXN0cHViX3JmX2Z1bmMKIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWI1IEFERCBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hFUkUgKGEgPCByYW5k b20oKSk7CiAtLSBvayAtIE5VTExJRiBpcyBhbGxvd2VkCiBBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChOVUxMSUYoMSwyKSA9 IGEpOwotLS0gb2sgLSBidWlsdGluIG9wZXJhdG9ycyBhcmUgYWxsb3dlZAorLS0gb2sgLSBi dWlsdC1pbiBvcGVyYXRvcnMgYXJlIGFsbG93ZWQKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWI1IFNFVCBUQUJMRSB0ZXN0cHViX3JmX3RibDEgV0hFUkUgKGEgSVMgTlVMTCk7CiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJF ICgoYSA+IDUpIElTIEZBTFNFKTsKLS0tIG9rIC0gaW1tdXRhYmxlIGJ1aWx0aW4gZnVuY3Rp b25zIGFyZSBhbGxvd2VkCistLSBvayAtIGltbXV0YWJsZSBidWlsdC1pbiBmdW5jdGlvbnMg YXJlIGFsbG93ZWQKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1IFNFVCBUQUJMRSB0ZXN0 cHViX3JmX3RibDQgV0hFUkUgKGxlbmd0aChnKSA8IDYpOwogLS0gZmFpbCAtIHVzZXItZGVm aW5lZCB0eXBlcyBkaXNhbGxvd2VkCiBDUkVBVEUgVFlQRSByZl9idWdfc3RhdHVzIEFTIEVO VU0gKCduZXcnLCAnb3BlbicsICdjbG9zZWQnKTsKQEAgLTIwOCw3ICsyMDgsNyBAQCBDUkVB VEUgVEFCTEUgcmZfYnVnIChpZCBzZXJpYWwsIGRlc2NyaXB0aW9uIHRleHQsIHN0YXR1cyBy Zl9idWdfc3RhdHVzKTsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgVEFCTEUg cmZfYnVnIFdIRVJFIChzdGF0dXMgPSAnb3BlbicpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0 Jyk7CiBEUk9QIFRBQkxFIHJmX2J1ZzsKIERST1AgVFlQRSByZl9idWdfc3RhdHVzOwotLS0g ZmFpbCAtIHJvdy1maWx0ZXIgZXhwcmVzc2lvbiBpcyBub3Qgc2ltcGxlCistLSBmYWlsIC0g cm93IGZpbHRlciBleHByZXNzaW9uIGlzIG5vdCBzaW1wbGUKIENSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViNiBGT1IgVEFCTEUgdGVzdHB1Yl9yZl90YmwxIFdIRVJFIChhIElOIChTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzKDEsNSkpKTsKIC0tIGZhaWwgLSBzeXN0ZW0gY29sdW1ucyBh cmUgbm90IGFsbG93ZWQKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNiBGT1IgVEFCTEUg dGVzdHB1Yl9yZl90YmwxIFdIRVJFICgnKDAsMSknOjp0aWQgPSBjdGlkKTsKLS0gCjIuMjAu MQoK --04cc277225e34ea480c6f61c2553d463 Content-Disposition: attachment;filename="v50-0005-UPDATEs-might-require-transformation.patch" Content-Type: text/x-patch; name="v50-0005-UPDATEs-might-require-transformation.patch" Content-Transfer-Encoding: BASE64 RnJvbSA5N2NmZDgyODg4ZTc0ZjI2MWU3Y2Y0NDY0NDRkZDc1YzIwMTk2YWJkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IFdlZCwgOCBEZWMgMjAyMSAxNzo1NzoxNCAtMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjUwIDUvOF0gVVBEQVRFcyBtaWdodCByZXF1aXJlIHRyYW5zZm9y bWF0aW9uCgpVUERBVEUgc2hvdWxkIGV2YWx1YXRlIHRoZSByb3cgZmlsdGVyIGZvciBvbGQg YW5kIG5ldyB0dXBsZS4gSWYgYm90aApldmFsdWF0aW9ucyBhcmUgdHJ1ZSwgaXQgc2VuZHMg dGhlIFVQREFURS4gSWYgYm90aCBldmFsdWF0aW9ucyBhcmUKZmFsc2UsIGl0IGRvZXNuJ3Qg c2VuZCB0aGUgVVBEQVRFLiBJZiBvbmx5IG9uZSBvZiB0aGUgdHVwbGVzIG1hdGNoZXMgdGhl CnJvdyBmaWx0ZXIgZXhwcmVzc2lvbiwgdGhlcmUgaXMgYSBkYXRhIGNvbnNpc3RlbmN5IGlz c3VlLiBGaXggdGhpcyBpc3N1ZQpyZXF1aXJlcyBhIHRyYW5zZm9ybWF0aW9uLgoKTGV0J3Mg c2F5IHRoZSBvbGQgdHVwbGUgc2F0aXNmaWVzIHRoZSByb3cgZmlsdGVyIGJ1dCB0aGUgbmV3 IHR1cGxlCmRvZXNuJ3QuIFNpbmNlIHRoZSBvbGQgdHVwbGUgc2F0aXNmaWVzLCB0aGUgaW5p dGlhbCB0YWJsZQpzeW5jaHJvbml6YXRpb24gY29waWVkIHRoaXMgcm93IChvciBhbm90aGVy IG1ldGhvZCB3YXMgdXNlZCB0byBndWFyYW50ZWUKdGhhdCB0aGVyZSBpcyBkYXRhIGNvbnNp c3RlbmN5KS4gIEhvd2V2ZXIsIGFmdGVyIHRoZSBVUERBVEUgdGhlIG5ldwp0dXBsZSBkb2Vz bid0IHNhdGlzZnkgdGhlIHJvdyBmaWx0ZXIgdGhlbiwgZnJvbSB0aGUgZGF0YSBjb25zaXN0 ZW5jeQpwZXJzcGVjdGl2ZSwgdGhhdCByb3cgc2hvdWxkIGJlIHJlbW92ZWQgb24gdGhlIHN1 YnNjcmliZXIuIFRoZSBVUERBVEUKc2hvdWxkIGJlIHRyYW5zZm9ybWVkIGludG8gYSBERUxF VEUgc3RhdGVtZW50IGFuZCBiZSBzZW50IHRvIHRoZQpzdWJzY3JpYmVyLiBLZWVwIHRoaXMg cm93IG9uIHRoZSBzdWJzY3JpYmVyIGlzIHVuZGVzaXJhYmxlIGJlY2F1c2UgaXQKZG9lc24n dCByZWZsZWN0IHdoYXQgd2FzIGRlZmluZWQgaW4gdGhlIHJvdyBmaWx0ZXIgZXhwcmVzc2lv biBvbiB0aGUKcHVibGlzaGVyLiBUaGlzIHJvdyBvbiB0aGUgc3Vic2NyaWJlciB3b3VsZCBs aWtlbHkgbm90IGJlIG1vZGlmaWVkIGJ5CnJlcGxpY2F0aW9uIGFnYWluLiBJZiBzb21lb25l IGluc2VydGVkIGEgbmV3IHJvdyB3aXRoIHRoZSBzYW1lIG9sZAppZGVudGlmaWVyLCByZXBs aWNhdGlvbiBjb3VsZCBzdG9wIGR1ZSB0byBhIGNvbnN0cmFpbnQgdmlvbGF0aW9uLgoKTGV0 J3Mgc2F5IHRoZSBvbGQgdHVwbGUgZG9lc24ndCBtYXRjaCB0aGUgcm93IGZpbHRlciBidXQg dGhlIG5ldyB0dXBsZQpkb2VzLiBTaW5jZSB0aGUgb2xkIHR1cGxlIGRvZXNuJ3Qgc2F0aXNm eSwgdGhlIGluaXRpYWwgdGFibGUKc3luY2hyb25pemF0aW9uIHByb2JhYmx5IGRpZG4ndCBj b3B5IHRoaXMgcm93LiBIb3dldmVyLCBhZnRlciB0aGUgVVBEQVRFCnRoZSBuZXcgdHVwbGUg ZG9lcyBzYXRpc2ZpZXMgdGhlIHJvdyBmaWx0ZXIgdGhlbiwgZnJvbSB0aGUgZGF0YQpjb25z aXN0ZW5jeSBwZXJzcGVjdGl2ZSwgdGhhdCByb3cgc2hvdWxkIGluc2VydGVkIG9uIHRoZSBz dWJzY3JpYmVyLiBUaGUKVVBEQVRFIHNob3VsZCBiZSB0cmFuc2Zvcm1lZCBpbnRvIGEgSU5T RVJUIHN0YXRlbWVudCBhbmQgYmUgc2VudCB0byB0aGUKc3Vic2NyaWJlci4gU3Vic2VxdWVu dCBVUERBVEUgb3IgREVMRVRFIHN0YXRlbWVudHMgaGF2ZSBubyBlZmZlY3QuCkhvd2V2ZXIs IHRoaXMgbWlnaHQgc3VycHJpc2Ugc29tZW9uZSB3aG8gZXhwZWN0cyB0aGUgZGF0YSBzZXQg dG8gc2F0aXNmeQp0aGUgcm93IGZpbHRlciBleHByZXNzaW9uIG9uIHRoZSBwcm92aWRlci4K LS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIHwgMjc5 ICsrKysrKysrKysrKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMjUzIGluc2VydGlvbnMo KyksIDI2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCmluZGV4IDcxOTI5NDgzOTkuLjdlNWI5M2ExMzUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtOTQsNiAr OTQsMTQgQEAgc3RhdGljIHZvaWQgc2VuZF9yZXBsX29yaWdpbihMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsCiAJCQkJCQkJIFJlcE9yaWdpbklkIG9yaWdpbl9pZCwgWExvZ1JlY1B0 ciBvcmlnaW5fbHNuLAogCQkJCQkJCSBib29sIHNlbmRfb3JpZ2luKTsKIAorLyogaW5kZXgg Zm9yIGV4cHJzdGF0ZSBhcnJheSBpbiBSZWxhdGlvblN5bmNFbnRyeSAqLworZW51bSBQdWJs aXNoQWN0aW9uCit7CisJUFVCTElTSF9BQ1RJT05fSU5TRVJULAorCVBVQkxJU0hfQUNUSU9O X1VQREFURSwKKwlQVUJMSVNIX0FDVElPTl9ERUxFVEUKK307CisKIC8qCiAgKiBFbnRyeSBp biB0aGUgbWFwIHVzZWQgdG8gcmVtZW1iZXIgd2hpY2ggcmVsYXRpb24gc2NoZW1hcyB3ZSBz ZW50LgogICoKQEAgLTE3Niw5ICsxODQsMTEgQEAgc3RhdGljIGJvb2wgZ2V0X3NjaGVtYV9z ZW50X2luX3N0cmVhbWVkX3R4bihSZWxhdGlvblN5bmNFbnRyeSAqZW50cnksCiBzdGF0aWMg RVN0YXRlICpjcmVhdGVfZXN0YXRlX2Zvcl9yZWxhdGlvbihSZWxhdGlvbiByZWwpOwogc3Rh dGljIEV4cHJTdGF0ZSAqcGdvdXRwdXRfcm93X2ZpbHRlcl9pbml0X2V4cHIoTm9kZSAqcmZu b2RlKTsKIHN0YXRpYyBib29sIHBnb3V0cHV0X3Jvd19maWx0ZXJfZXhlY19leHByKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCk7Ci1zdGF0aWMgYm9vbCBwZ291 dHB1dF9yb3dfZmlsdGVyKGVudW0gUmVvcmRlckJ1ZmZlckNoYW5nZVR5cGUgY2hhbmdldHlw ZSwgUEdPdXRwdXREYXRhICpkYXRhLAotCQkJCQkJCQlSZWxhdGlvbiByZWxhdGlvbiwgSGVh cFR1cGxlIG9sZHR1cGxlLAotCQkJCQkJCQlIZWFwVHVwbGUgbmV3dHVwbGUsIFJlbGF0aW9u U3luY0VudHJ5ICplbnRyeSk7CitzdGF0aWMgdm9pZCBwZ291dHB1dF9yb3dfZmlsdGVyX2lu aXQoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbiwgUmVsYXRpb25TeW5j RW50cnkgKmVudHJ5KTsKK3N0YXRpYyBib29sIHBnb3V0cHV0X3Jvd19maWx0ZXIoUEdPdXRw dXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIG9sZHR1cGxlLAor CQkJCQkJCQlIZWFwVHVwbGUgbmV3dHVwbGUsIFJlbGF0aW9uU3luY0VudHJ5ICplbnRyeSwg aW50IGFjdGlvbik7CitzdGF0aWMgYm9vbCBwZ291dHB1dF9yb3dfZmlsdGVyX2Zvcl91cGRh dGUoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIG9s ZHR1cGxlLAorCQkJCQkJCQlIZWFwVHVwbGUgbmV3dHVwbGUsIFJlbGF0aW9uU3luY0VudHJ5 ICplbnRyeSwgZW51bSBQdWJsaXNoQWN0aW9uICphY3Rpb24sIEhlYXBUdXBsZSB0cmFuc2Zv cm1lZHR1cGxlKTsKIAogLyoKICAqIFNwZWNpZnkgb3V0cHV0IHBsdWdpbiBjYWxsYmFja3MK QEAgLTc0MiwyNiArNzUyLDE1IEBAIHBnb3V0cHV0X3Jvd19maWx0ZXJfZXhlY19leHByKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCkKIH0KIAogLyoKLSAqIENo YW5nZSBpcyBjaGVja2VkIGFnYWluc3QgdGhlIHJvdyBmaWx0ZXIsIGlmIGFueS4KLSAqCi0g KiBJZiBpdCByZXR1cm5zIHRydWUsIHRoZSBjaGFuZ2UgaXMgcmVwbGljYXRlZCwgb3RoZXJ3 aXNlLCBpdCBpcyBub3QuCisgKiBJbml0aWFsaXplIHRoZSByb3cgZmlsdGVyLCB0aGUgZmly c3QgdGltZS4KICAqLwotc3RhdGljIGJvb2wKLXBnb3V0cHV0X3Jvd19maWx0ZXIoZW51bSBS ZW9yZGVyQnVmZmVyQ2hhbmdlVHlwZSBjaGFuZ2V0eXBlLCBQR091dHB1dERhdGEgKmRhdGEs Ci0JCQkJCVJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwbGUsIEhlYXBUdXBs ZSBuZXd0dXBsZSwKLQkJCQkJUmVsYXRpb25TeW5jRW50cnkgKmVudHJ5KQorc3RhdGljIHZv aWQKK3Bnb3V0cHV0X3Jvd19maWx0ZXJfaW5pdChQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0 aW9uIHJlbGF0aW9uLCBSZWxhdGlvblN5bmNFbnRyeSAqZW50cnkpCiB7Ci0JRVN0YXRlCSAg ICplc3RhdGU7Ci0JRXhwckNvbnRleHQgKmVjeHQ7CiAJTGlzdENlbGwgICAqbGM7Ci0JYm9v bAkJcmVzdWx0ID0gdHJ1ZTsKLQlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVs YXRpb24pOwogCUxpc3QJICAgKnJmbm9kZXNbXSA9IHtOSUwsIE5JTCwgTklMfTsgLyogT25l IHBlciBwdWJhY3Rpb24gKi8KIAlib29sCQlub19maWx0ZXJbXSA9IHtmYWxzZSwgZmFsc2Us IGZhbHNlfTsgLyogT25lIHBlciBwdWJhY3Rpb24gKi8KIAotCUFzc2VydChjaGFuZ2V0eXBl ID09IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlNFUlQgfHwKLQkJICAgY2hhbmdldHlwZSA9 PSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfVVBEQVRFIHx8Ci0JCSAgIGNoYW5nZXR5cGUgPT0g UkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RFTEVURSk7CiAJLyoKIAkgKiBJZiB0aGUgcm93IGZp bHRlciBjYWNoaW5nIGlzIGN1cnJlbnRseSBmbGFnZ2VkICJpbnZhbGlkIiB0aGVuIGl0IG1l YW5zIHdlCiAJICogZG9uJ3Qga25vdyB5ZXQgaWYgdGhlcmUgaXMvaXNuJ3QgYW55IHJvdyBm aWx0ZXJzIGZvciB0aGlzIHJlbGF0aW9uLgpAQCAtOTI2LDkgKzkyNSwzMSBAQCBwZ291dHB1 dF9yb3dfZmlsdGVyKGVudW0gUmVvcmRlckJ1ZmZlckNoYW5nZVR5cGUgY2hhbmdldHlwZSwg UEdPdXRwdXREYXRhICpkYXRhLAogCiAJCWVudHJ5LT5leHByc3RhdGVfdmFsaWQgPSB0cnVl OwogCX0KK30KIAotCS8qIEJhaWwgb3V0IGlmIHRoZXJlIGlzIG5vIHJvdyBmaWx0ZXIgKi8K LQlpZiAoIWVudHJ5LT5leHByc3RhdGVbY2hhbmdldHlwZV0pCisvKgorICogQ2hhbmdlIGlz IGNoZWNrZWQgYWdhaW5zdCB0aGUgcm93IGZpbHRlciwgaWYgYW55LgorICoKKyAqIElmIGl0 IHJldHVybnMgdHJ1ZSwgdGhlIGNoYW5nZSBpcyByZXBsaWNhdGVkLCBvdGhlcndpc2UsIGl0 IGlzIG5vdC4KKyAqLworc3RhdGljIGJvb2wKK3Bnb3V0cHV0X3Jvd19maWx0ZXIoUEdPdXRw dXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxlIG9sZHR1cGxlLCBI ZWFwVHVwbGUgbmV3dHVwbGUsIFJlbGF0aW9uU3luY0VudHJ5ICplbnRyeSwgaW50IGFjdGlv bikKK3sKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlFeHByQ29udGV4dCAqZWN4dDsKKwlib29s CQlyZXN1bHQgPSBmYWxzZTsKKwlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVs YXRpb24pOworCisJQXNzZXJ0KGNoYW5nZXR5cGUgPT0gUkVPUkRFUl9CVUZGRVJfQ0hBTkdF X0lOU0VSVCB8fAorCQkgICBjaGFuZ2V0eXBlID09IFJFT1JERVJfQlVGRkVSX0NIQU5HRV9V UERBVEUgfHwKKwkJICAgY2hhbmdldHlwZSA9PSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfREVM RVRFKTsKKworCS8qCisJICogQmFpbCBvdXQgaWYgZm9yIGEgY2VydGFpbiBvcGVyYXRpb24g dGhlcmUgaXMgbm8gcm93IGZpbHRlciB0byBwcm9jZXNzLgorCSAqIFRoaXMgaXMgYSBmYXN0 IHBhdGggb3B0aW1pemF0aW9uLiBSZWFkIHRoZSBleHBsYW5hdGlvbiBhYm92ZSBhYm91dAor CSAqIHJmX2luX2FsbF9wdWJzLgorCSAqLworCWlmIChlbnRyeS0+ZXhwcnN0YXRlW2FjdGlv bl0gPT0gTlVMTCkKIAkJcmV0dXJuIHRydWU7CiAKIAlpZiAobWVzc2FnZV9sZXZlbF9pc19p bnRlcmVzdGluZyhERUJVRzMpKQpAQCAtOTQ0LDE2ICs5NjUsMjIgQEAgcGdvdXRwdXRfcm93 X2ZpbHRlcihlbnVtIFJlb3JkZXJCdWZmZXJDaGFuZ2VUeXBlIGNoYW5nZXR5cGUsIFBHT3V0 cHV0RGF0YSAqZGF0YSwKIAllY3h0ID0gR2V0UGVyVHVwbGVFeHByQ29udGV4dChlc3RhdGUp OwogCWVjeHQtPmVjeHRfc2NhbnR1cGxlID0gZW50cnktPnNjYW50dXBsZTsKIAorCS8qCisJ ICogVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIFVQREFURXMgaXMgdG8gdXNlIHRoZSBuZXcg dHVwbGUgZm9yIHJvdworCSAqIGZpbHRlcmluZy4KKwkgKiBJZiB0aGUgVVBEQVRFIHJlcXVp cmVzIGEgdHJhbnNmb3JtYXRpb24sIHRoZSBuZXcgdHVwbGUgd2lsbCBiZSByZXBsYWNlZAor CSAqIGJ5IHRoZSB0cmFuc2Zvcm1lZCB0dXBsZSBiZWZvcmUgY2FsbGluZyB0aGlzIHJvdXRp bmUuCisJICovCiAJRXhlY1N0b3JlSGVhcFR1cGxlKG5ld3R1cGxlID8gbmV3dHVwbGUgOiBv bGR0dXBsZSwgZWN4dC0+ZWN4dF9zY2FudHVwbGUsIGZhbHNlKTsKIAogCS8qCiAJICogTk9U RTogTXVsdGlwbGUgcHVibGljYXRpb24gcm93IGZpbHRlcnMgaGF2ZSBhbHJlYWR5IGJlZW4g Y29tYmluZWQgdG8gYQogCSAqIHNpbmdsZSBleHByc3RhdGUgKGZvciB0aGlzIHB1YmFjdGlv bikuCiAJICovCi0JaWYgKGVudHJ5LT5leHByc3RhdGVbY2hhbmdldHlwZV0pCisJaWYgKGVu dHJ5LT5leHByc3RhdGVbYWN0aW9uXSkKIAl7CiAJCS8qIEV2YWx1YXRlcyByb3cgZmlsdGVy ICovCi0JCXJlc3VsdCA9IHBnb3V0cHV0X3Jvd19maWx0ZXJfZXhlY19leHByKGVudHJ5LT5l eHByc3RhdGVbY2hhbmdldHlwZV0sIGVjeHQpOworCQlyZXN1bHQgPSBwZ291dHB1dF9yb3df ZmlsdGVyX2V4ZWNfZXhwcihlbnRyeS0+ZXhwcnN0YXRlW2FjdGlvbl0sIGVjeHQpOwogCX0K IAogCS8qIENsZWFudXAgYWxsb2NhdGVkIHJlc291cmNlcyAqLwpAQCAtOTY0LDYgKzk5MSwx ODIgQEAgcGdvdXRwdXRfcm93X2ZpbHRlcihlbnVtIFJlb3JkZXJCdWZmZXJDaGFuZ2VUeXBl IGNoYW5nZXR5cGUsIFBHT3V0cHV0RGF0YSAqZGF0YSwKIAlyZXR1cm4gcmVzdWx0OwogfQog CisvKgorICogRXZhbHVhdGVzIHRoZSByb3cgZmlsdGVyIGZvciBvbGQgYW5kIG5ldyB0dXBs ZS4gSWYgYm90aCBldmFsdWF0aW9ucyBhcmUKKyAqIHRydWUsIGl0IHNlbmRzIHRoZSBVUERB VEUuIElmIGJvdGggZXZhbHVhdGlvbnMgYXJlIGZhbHNlLCBpdCBkb2Vzbid0IHNlbmQKKyAq IHRoZSBVUERBVEUuIElmIG9ubHkgb25lIG9mIHRoZSB0dXBsZXMgbWF0Y2hlcyB0aGUgcm93 IGZpbHRlciBleHByZXNzaW9uLAorICogdGhlcmUgaXMgYSBkYXRhIGNvbnNpc3RlbmN5IGlz c3VlLiBGaXggdGhpcyBpc3N1ZSByZXF1aXJlcyBhIHRyYW5zZm9ybWF0aW9uLgorICoKKyAq IExldCdzIHNheSB0aGUgb2xkIHR1cGxlIHNhdGlzZmllcyB0aGUgcm93IGZpbHRlciBidXQg dGhlIG5ldyB0dXBsZSBkb2Vzbid0LgorICogU2luY2UgdGhlIG9sZCB0dXBsZSBzYXRpc2Zp ZXMsIHRoZSBpbml0aWFsIHRhYmxlIHN5bmNocm9uaXphdGlvbiBjb3BpZWQgdGhpcworICog cm93IChvciBhbm90aGVyIG1ldGhvZCB3YXMgdXNlZCB0byBndWFyYW50ZWUgdGhhdCB0aGVy ZSBpcyBkYXRhCisgKiBjb25zaXN0ZW5jeSkuICBIb3dldmVyLCBhZnRlciB0aGUgVVBEQVRF IHRoZSBuZXcgdHVwbGUgZG9lc24ndCBzYXRpc2Z5IHRoZQorICogcm93IGZpbHRlciB0aGVu LCBmcm9tIHRoZSBkYXRhIGNvbnNpc3RlbmN5IHBlcnNwZWN0aXZlLCB0aGF0IHJvdyBzaG91 bGQgYmUKKyAqIHJlbW92ZWQgb24gdGhlIHN1YnNjcmliZXIuIFRoZSBVUERBVEUgc2hvdWxk IGJlIHRyYW5zZm9ybWVkIGludG8gYSBERUxFVEUKKyAqIHN0YXRlbWVudCBhbmQgYmUgc2Vu dCB0byB0aGUgc3Vic2NyaWJlci4gS2VlcCB0aGlzIHJvdyBvbiB0aGUgc3Vic2NyaWJlciBp cworICogdW5kZXNpcmFibGUgYmVjYXVzZSBpdCBkb2Vzbid0IHJlZmxlY3Qgd2hhdCB3YXMg ZGVmaW5lZCBpbiB0aGUgcm93IGZpbHRlcgorICogZXhwcmVzc2lvbiBvbiB0aGUgcHVibGlz aGVyLiBUaGlzIHJvdyBvbiB0aGUgc3Vic2NyaWJlciB3b3VsZCBsaWtlbHkgbm90IGJlCisg KiBtb2RpZmllZCBieSByZXBsaWNhdGlvbiBhZ2Fpbi4gSWYgc29tZW9uZSBpbnNlcnRlZCBh IG5ldyByb3cgd2l0aCB0aGUgc2FtZQorICogb2xkIGlkZW50aWZpZXIsIHJlcGxpY2F0aW9u IGNvdWxkIHN0b3AgZHVlIHRvIGEgY29uc3RyYWludCB2aW9sYXRpb24uCisgKgorICogTGV0 J3Mgc2F5IHRoZSBvbGQgdHVwbGUgZG9lc24ndCBtYXRjaCB0aGUgcm93IGZpbHRlciBidXQg dGhlIG5ldyB0dXBsZSBkb2VzLgorICogU2luY2UgdGhlIG9sZCB0dXBsZSBkb2Vzbid0IHNh dGlzZnksIHRoZSBpbml0aWFsIHRhYmxlIHN5bmNocm9uaXphdGlvbgorICogcHJvYmFibHkg ZGlkbid0IGNvcHkgdGhpcyByb3cuIEhvd2V2ZXIsIGFmdGVyIHRoZSBVUERBVEUgdGhlIG5l dyB0dXBsZSBkb2VzCisgKiBzYXRpc2ZpZXMgdGhlIHJvdyBmaWx0ZXIgdGhlbiwgZnJvbSB0 aGUgZGF0YSBjb25zaXN0ZW5jeSBwZXJzcGVjdGl2ZSwgdGhhdAorICogcm93IHNob3VsZCBp bnNlcnRlZCBvbiB0aGUgc3Vic2NyaWJlci4gVGhlIFVQREFURSBzaG91bGQgYmUgdHJhbnNm b3JtZWQgaW50bworICogYSBJTlNFUlQgc3RhdGVtZW50IGFuZCBiZSBzZW50IHRvIHRoZSBz dWJzY3JpYmVyLiBTdWJzZXF1ZW50IFVQREFURSBvcgorICogREVMRVRFIHN0YXRlbWVudHMg aGF2ZSBubyBlZmZlY3QgKGl0IG1hdGNoZXMgbm8gcm93IC0tIHNlZQorICogYXBwbHlfaGFu ZGxlX3VwZGF0ZV9pbnRlcm5hbCgpKS4gSG93ZXZlciwgdGhpcyBtaWdodCBzdXJwcmlzZSBz b21lb25lIHdobworICogZXhwZWN0cyB0aGUgZGF0YSBzZXQgdG8gc2F0aXNmeSB0aGUgcm93 IGZpbHRlciBleHByZXNzaW9uIG9uIHRoZSBwcm92aWRlci4KKyAqLworc3RhdGljIGJvb2wK K3Bnb3V0cHV0X3Jvd19maWx0ZXJfZm9yX3VwZGF0ZShQR091dHB1dERhdGEgKmRhdGEsIFJl bGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgb2xkdHVwbGUsIEhlYXBUdXBsZSBuZXd0dXBs ZSwgUmVsYXRpb25TeW5jRW50cnkgKmVudHJ5LCBlbnVtIFB1Ymxpc2hBY3Rpb24gKmFjdGlv biwgSGVhcFR1cGxlIHRyYW5zZm9ybWVkdHVwbGUpCit7CisJTWVtb3J5Q29udGV4dAlvbGRj dHg7CisJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKTsKKwlib29s CQlvbGR0dXBsZV9tYXRjaCwgbmV3dHVwbGVfbWF0Y2g7CisJRGF0dW0JCSpvbGR2YWx1ZXMs ICpuZXd2YWx1ZXM7CisJYm9vbAkJKm9sZG51bGxzLCAqbmV3bnVsbHMsICpyZXBsYWNlczsK KwlUdXBsZURlc2MJdHVwZGVzYzsKKwlpbnQJCQlucmF0dHM7CisJaW50CQkJaTsKKworCS8q CisJICogQmFpbCBvdXQgaWYgZm9yIGEgY2VydGFpbiBvcGVyYXRpb24gdGhlcmUgaXMgbm8g cm93IGZpbHRlciB0byBwcm9jZXNzLgorCSAqIFRoaXMgaXMgYSBmYXN0IHBhdGggb3B0aW1p emF0aW9uLiBSZWFkIHRoZSBleHBsYW5hdGlvbiBpbgorCSAqIHBnb3V0cHV0X3Jvd19maWx0 ZXJfaW5pdCgpLgorCSAqLworCWlmIChlbnRyeS0+ZXhwcnN0YXRlWyphY3Rpb25dID09IE5V TEwpCisJCXJldHVybiB0cnVlOworCisJLyogVXBkYXRlIHJlcXVpcmVzIGEgbmV3IHR1cGxl LiAqLworCUFzc2VydChuZXd0dXBsZSk7CisKKwllbG9nKERFQlVHMywgInRhYmxlIFwiJXMu JXNcIiBoYXMgcm93IGZpbHRlciIsCisJCSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9u YW1lc3BhY2UocmVsaWQpKSwKKwkJIGdldF9yZWxfbmFtZShyZWxpZCkpOworCisJLyoKKwkg KiBJZiB0aGVyZSBpcyBubyBvbGR0dXBsZSBhdmFpbGFibGUgdGhlbiBub25lIG9mIHRoZSBy ZXBsaWNhIGlkZW50aXR5CisJICogY29sdW1ucyB3ZXJlIG1vZGlmaWVkLiBObyB0cmFuc2Zv cm1hdGlvbiBpcyByZXF1aXJlZCBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKCFvbGR0dXBs ZSkKKwkJcmV0dXJuIHBnb3V0cHV0X3Jvd19maWx0ZXIoZGF0YSwgcmVsYXRpb24sIE5VTEws IG5ld3R1cGxlLCBlbnRyeSwgUFVCTElTSF9BQ1RJT05fVVBEQVRFKTsKKworCS8qIEV2YWx1 YXRlcyByb3cgZmlsdGVyIGluIHRoZSBvbGQgdHVwbGUuICovCisJb2xkdHVwbGVfbWF0Y2gg PSBwZ291dHB1dF9yb3dfZmlsdGVyKGRhdGEsIHJlbGF0aW9uLCBvbGR0dXBsZSwgTlVMTCwg ZW50cnksIFBVQkxJU0hfQUNUSU9OX1VQREFURSk7CisKKwkvKgorCSAqIENyZWF0ZSBhIHR1 cGxlIHRhYmxlIHNsb3QgZm9yIHJvdyBmaWx0ZXIuIFR1cGxlRGVzYyBtdXN0IGxpdmUgYXMK KwkgKiBsb25nIGFzIHRoZSBjYWNoZSByZW1haW5zLiBSZWxlYXNlIHRoZSB0dXBsZSB0YWJs ZSBzbG90IGlmIGl0CisJICogYWxyZWFkeSBleGlzdHMuCisJICovCisJaWYgKGVudHJ5LT5z Y2FudHVwbGUgIT0gTlVMTCkKKwl7CisJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qo ZW50cnktPnNjYW50dXBsZSk7CisJCWVudHJ5LT5zY2FudHVwbGUgPSBOVUxMOworCX0KKwl0 dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJb2xkY3R4ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKENhY2hlTWVtb3J5Q29udGV4dCk7CisJZW50cnktPnNjYW50dXBs ZSA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdCh0dXBkZXNjLCAmVFRTT3BzSGVhcFR1cGxl KTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKworCS8qCisJICogT2J0YWlu IGEgdHJhbnNmb3JtZWQgdHVwbGUgYmFzZWQgb24gdGhlIG5ldyB0dXBsZS4gVGhpcyBzdGVw IGlzCisJICogbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIG5ldyB0dXBsZSBtaWdodCBub3QgaGF2 ZSB1bmNoYW5nZWQgVE9BU1QgdmFsdWVzCisJICogZnJvbSB0aGUgcmVwbGljYSBpZGVudGl0 eS4gIENvcHkgdGhlbSBmcm9tIHRoZSBvbGQgdHVwbGUgd2hlcmUgaXQgaXMKKwkgKiBhdmFp bGFibGUuCisJICovCisJbnJhdHRzID0gdHVwZGVzYy0+bmF0dHM7CisKKwlvbGR2YWx1ZXMg PSAoRGF0dW0gKikgcGFsbG9jKG5yYXR0cyAqIHNpemVvZihEYXR1bSkpOworCW9sZG51bGxz ID0gKGJvb2wgKikgcGFsbG9jKG5yYXR0cyAqIHNpemVvZihib29sKSk7CisJbmV3dmFsdWVz ID0gKERhdHVtICopIHBhbGxvYyhucmF0dHMgKiBzaXplb2YoRGF0dW0pKTsKKwluZXdudWxs cyA9IChib29sICopIHBhbGxvYyhucmF0dHMgKiBzaXplb2YoYm9vbCkpOworCXJlcGxhY2Vz ID0gKGJvb2wgKikgcGFsbG9jKG5yYXR0cyAqIHNpemVvZihib29sKSk7CisKKwkvKiBJbmRp Y2F0ZXMgdGhlIG1vZGlmaWVkIHZhbHVlcy4gKi8KKwltZW1zZXQocmVwbGFjZXMsIGZhbHNl LCBucmF0dHMgKiBzaXplb2YoYm9vbCkpOworCisJLyogQnJlYWsgZG93biB0aGUgdHVwbGVz IGludG8gZmllbGRzLiAqLworCWhlYXBfZGVmb3JtX3R1cGxlKG9sZHR1cGxlLCB0dXBkZXNj LCBvbGR2YWx1ZXMsIG9sZG51bGxzKTsKKwloZWFwX2RlZm9ybV90dXBsZShuZXd0dXBsZSwg dHVwZGVzYywgbmV3dmFsdWVzLCBuZXdudWxscyk7CisKKwkvKiBNb2RpZnkgdGhlIHRyYW5z Zm9ybWVkIHR1cGxlIGlmIGl0IGRvZXMgbm90IGhhdmUgdGhlIHZhbHVlIHlldC4gKi8KKwlm b3IgKGkgPSAwOyBpIDwgbnJhdHRzOyBpKyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBh dHQ7CisKKwkJLyogY29sdW1uIGluIG5ldyB0dXBsZSBpcyBudWxsLCBub3RoaW5nIHRvIGRv ICovCisJCWlmIChuZXdudWxsc1tpXSkKKwkJCWNvbnRpbnVlOworCisJCWF0dCA9IFR1cGxl RGVzY0F0dHIodHVwZGVzYywgaSk7CisKKwkJLyoKKwkJICogVW5jaGFuZ2VkIFRPQVNUZWQg cmVwbGljYSBpZGVudGl0eSBjb2x1bW5zIGFyZSBvbmx5IGRldG9hc3RlZCBpbiB0aGUKKwkJ ICogb2xkIHR1cGxlLCBjb3B5IHRoaXMgb3ZlciB0byB0aGUgbmV3IHR1cGxlLgorCQkgKi8K KwkJaWYgKGF0dC0+YXR0bGVuID09IC0xICYmIFZBUkFUVF9JU19FWFRFUk5BTF9PTkRJU0so bmV3dmFsdWVzW2ldKSAmJgorCQkJCSFvbGRudWxsc1tpXSAmJiAhVkFSQVRUX0lTX0VYVEVS TkFMX09ORElTSyhvbGR2YWx1ZXNbaV0pKQorCQl7CisJCQluZXd2YWx1ZXNbaV0gPSBvbGR2 YWx1ZXNbaV07CisJCQlyZXBsYWNlc1tpXSA9IHRydWU7CisJCX0KKwl9CisKKwkvKiBUcmFu c2Zvcm1lZCB0dXBsZSBpcyB0aGUgbmV3IHR1cGxlIHdpdGggc29tZSBwb3NzaWJsZSBtb2Rp ZmljYXRpb25zLiAqLworCXRyYW5zZm9ybWVkdHVwbGUgPSBoZWFwX21vZGlmeV90dXBsZShu ZXd0dXBsZSwgdHVwZGVzYywgbmV3dmFsdWVzLCBuZXdudWxscywgcmVwbGFjZXMpOworCisJ LyoKKwkgKiBFdmFsdWF0ZXMgcm93IGZpbHRlciBpbiB0aGUgdHJhbnNmb3JtZWQgdHVwbGUu IFRoZSBuZXcgdHVwbGUgaXNuJ3QgdXNlZAorCSAqIGJlY2F1c2UgaXQgbWlnaHQgbm90IGNv bnRhaW4gYWxsIHZhbHVlcyB1c2VkIGluIHRoZSByb3cgZmlsdGVyCisJICogZXhwcmVzc2lv bi4KKwkgKi8KKwluZXd0dXBsZV9tYXRjaCA9IHBnb3V0cHV0X3Jvd19maWx0ZXIoZGF0YSwg cmVsYXRpb24sIE5VTEwsIHRyYW5zZm9ybWVkdHVwbGUsIGVudHJ5LCBQVUJMSVNIX0FDVElP Tl9VUERBVEUpOworCisJLyoKKwkgKiBDYXNlIDE6IGlmIGJvdGggdHVwbGVzIG1hdGNoZXMg dGhlIHJvdyBmaWx0ZXIsIHRyYW5zZm9ybWF0aW9uIGlzbid0CisJICogcmVxdWlyZWQuIEJh aWwgb3V0LiBTZW5kIHRoZSBVUERBVEUuCisJICovCisJaWYgKG9sZHR1cGxlX21hdGNoICYm IG5ld3R1cGxlX21hdGNoKQorCQlyZXR1cm4gdHJ1ZTsKKworCS8qCisJICogQ2FzZSAyOiBp ZiBib3RoIHR1cGxlcyBkb24ndCBtYXRjaCB0aGUgcm93IGZpbHRlciwgYmFpbCBvdXQuIFNl bmQKKwkgKiBub3RoaW5nLgorCSAqLworCWlmICghb2xkdHVwbGVfbWF0Y2ggJiYgIW5ld3R1 cGxlX21hdGNoKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIENhc2UgMzogaWYgdGhl IG9sZCB0dXBsZSBzYXRpc2ZpZXMgdGhlIHJvdyBmaWx0ZXIgYnV0IHRoZSBuZXcgdHVwbGUK KwkgKiBkb2Vzbid0LCB0cmFuc2Zvcm0gdGhlIFVQREFURSBpbnRvIERFTEVURS4KKwkgKgor CSAqIFRoaXMgdHJhbnNmb3JtYXRpb24gZG9lcyBub3QgcmVxdWlyZSBhbm90aGVyIHR1cGxl LiBPbGQgdHVwbGUgd2lsbCBiZQorCSAqIHVzZWQgZm9yIERFTEVURS4KKwkgKi8KKwlpZiAo b2xkdHVwbGVfbWF0Y2ggJiYgIW5ld3R1cGxlX21hdGNoKQorCXsKKwkJKmFjdGlvbiA9IFBV QkxJU0hfQUNUSU9OX0RFTEVURTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBD YXNlIDQ6IGlmIHRoZSBvbGQgdHVwbGUgZG9lc24ndCBzYXRpc2Z5IHRoZSByb3cgZmlsdGVy IGJ1dCB0aGUgbmV3CisJICogdHVwbGUgZG9lcywgdHJhbnNmb3JtIHRoZSBVUERBVEUgaW50 byBJTlNFUlQuCisJICoKKwkgKiBUaGlzIHRyYW5zZm9ybWF0aW9uIHJlcXVpcmVzIGFub3Ro ZXIgdHVwbGUuIFRoaXMgdHJhbnNmb3JtZWQgdHVwbGUgd2lsbAorCSAqIGJlIHVzZWQgZm9y IElOU0VSVC4gVGhlIG5ldyB0dXBsZSBpcyB0aGUgYmFzZSBmb3IgdGhlIHRyYW5zZm9ybWVk IHR1cGxlLgorCSAqIEhvd2V2ZXIsIHRoZSBuZXcgdHVwbGUgbWlnaHQgbm90IGhhdmUgY29s dW1uIHZhbHVlcyBmcm9tIHRoZSByZXBsaWNhCisJICogaWRlbnRpdHkuIEluIHRoaXMgY2Fz ZSwgY29weSB0aGVzZSB2YWx1ZXMgZnJvbSB0aGUgb2xkIHR1cGxlLgorCSAqLworCWlmICgh b2xkdHVwbGVfbWF0Y2ggJiYgbmV3dHVwbGVfbWF0Y2gpCisJCSphY3Rpb24gPSBQVUJMSVNI X0FDVElPTl9JTlNFUlQ7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIFNlbmRzIHRo ZSBkZWNvZGVkIERNTCBvdmVyIHdpcmUuCiAgKgpAQCAtMTAxNSw2ICsxMjE4LDkgQEAgcGdv dXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAogCS8qIEF2b2lkIGxlYWtpbmcgbWVtb3J5IGJ5IHVzaW5nIGFuZCByZXNl dHRpbmcgb3VyIG93biBjb250ZXh0ICovCiAJb2xkID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KGRhdGEtPmNvbnRleHQpOwogCisJLyogSW5pdGlhbGl6ZSB0aGUgcm93X2ZpbHRlciAqLwor CXBnb3V0cHV0X3Jvd19maWx0ZXJfaW5pdChkYXRhLCByZWxhdGlvbiwgcmVsZW50cnkpOwor CiAJLyogU2VuZCB0aGUgZGF0YSAqLwogCXN3aXRjaCAoY2hhbmdlLT5hY3Rpb24pCiAJewpA QCAtMTAyMyw3ICsxMjI5LDcgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCUhlYXBUdXBsZQl0dXBs ZSA9ICZjaGFuZ2UtPmRhdGEudHAubmV3dHVwbGUtPnR1cGxlOwogCiAJCQkJLyogQ2hlY2sg cm93IGZpbHRlci4gKi8KLQkJCQlpZiAoIXBnb3V0cHV0X3Jvd19maWx0ZXIoY2hhbmdlLT5h Y3Rpb24sIGRhdGEsIHJlbGF0aW9uLCBOVUxMLCB0dXBsZSwgcmVsZW50cnkpKQorCQkJCWlm ICghcGdvdXRwdXRfcm93X2ZpbHRlcihkYXRhLCByZWxhdGlvbiwgTlVMTCwgdHVwbGUsIHJl bGVudHJ5LCBQVUJMSVNIX0FDVElPTl9JTlNFUlQpKQogCQkJCQlicmVhazsKIAogCQkJCS8q CkBAIC0xMDU0LDkgKzEyNjAsMTEgQEAgcGdvdXRwdXRfY2hhbmdlKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCUhlYXBUdXBsZQlv bGR0dXBsZSA9IGNoYW5nZS0+ZGF0YS50cC5vbGR0dXBsZSA/CiAJCQkJJmNoYW5nZS0+ZGF0 YS50cC5vbGR0dXBsZS0+dHVwbGUgOiBOVUxMOwogCQkJCUhlYXBUdXBsZQluZXd0dXBsZSA9 ICZjaGFuZ2UtPmRhdGEudHAubmV3dHVwbGUtPnR1cGxlOworCQkJCUhlYXBUdXBsZQl0cmFu c2Zvcm1lZHR1cGxlID0gTlVMTDsKKwkJCQllbnVtIFB1Ymxpc2hBY3Rpb24gdHJhbnNmb3Jt ZWRhY3Rpb24gPSBQVUJMSVNIX0FDVElPTl9VUERBVEU7CiAKIAkJCQkvKiBDaGVjayByb3cg ZmlsdGVyLiAqLwotCQkJCWlmICghcGdvdXRwdXRfcm93X2ZpbHRlcihjaGFuZ2UtPmFjdGlv biwgZGF0YSwgcmVsYXRpb24sIG9sZHR1cGxlLCBuZXd0dXBsZSwgcmVsZW50cnkpKQorCQkJ CWlmICghcGdvdXRwdXRfcm93X2ZpbHRlcl9mb3JfdXBkYXRlKGRhdGEsIHJlbGF0aW9uLCBv bGR0dXBsZSwgbmV3dHVwbGUsIHJlbGVudHJ5LCAmdHJhbnNmb3JtZWRhY3Rpb24sIHRyYW5z Zm9ybWVkdHVwbGUpKQogCQkJCQlicmVhazsKIAogCQkJCW1heWJlX3NlbmRfc2NoZW1hKGN0 eCwgY2hhbmdlLCByZWxhdGlvbiwgcmVsZW50cnkpOwpAQCAtMTA3NSwxMiArMTI4MywzMSBA QCBwZ291dHB1dF9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVy QnVmZmVyVFhOICp0eG4sCiAJCQkJCQkJCQkJCQkJCQkgIHJlbGVudHJ5LT5tYXApOwogCQkJ CQkJbmV3dHVwbGUgPSBleGVjdXRlX2F0dHJfbWFwX3R1cGxlKG5ld3R1cGxlLAogCQkJCQkJ CQkJCQkJCQkgIHJlbGVudHJ5LT5tYXApOworCQkJCQkJLyogSU5TRVJUIHVzZXMgdHJhbnNm b3JtZWQgdHVwbGUuICovCisJCQkJCQlpZiAodHJhbnNmb3JtZWRhY3Rpb24gPT0gUFVCTElT SF9BQ1RJT05fSU5TRVJUKQorCQkJCQkJCXRyYW5zZm9ybWVkdHVwbGUgPSBleGVjdXRlX2F0 dHJfbWFwX3R1cGxlKHRyYW5zZm9ybWVkdHVwbGUsIHJlbGVudHJ5LT5tYXApOwogCQkJCQl9 CiAJCQkJfQogCiAJCQkJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7Ci0J CQkJbG9naWNhbHJlcF93cml0ZV91cGRhdGUoY3R4LT5vdXQsIHhpZCwgcmVsYXRpb24sIG9s ZHR1cGxlLAotCQkJCQkJCQkJCW5ld3R1cGxlLCBkYXRhLT5iaW5hcnkpOworCQkJCXN3aXRj aCAodHJhbnNmb3JtZWRhY3Rpb24pCisJCQkJeworCQkJCQljYXNlIFBVQkxJU0hfQUNUSU9O X0lOU0VSVDoKKwkJCQkJCWxvZ2ljYWxyZXBfd3JpdGVfaW5zZXJ0KGN0eC0+b3V0LCB4aWQs IHJlbGF0aW9uLCB0cmFuc2Zvcm1lZHR1cGxlLAorCQkJCQkJCQkJCQkJZGF0YS0+YmluYXJ5 KTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFBVQkxJU0hfQUNUSU9OX1VQREFURToKKwkJ CQkJCWxvZ2ljYWxyZXBfd3JpdGVfdXBkYXRlKGN0eC0+b3V0LCB4aWQsIHJlbGF0aW9uLAor CQkJCQkJCQkJCQkJb2xkdHVwbGUsIG5ld3R1cGxlLAorCQkJCQkJCQkJCQkJZGF0YS0+Ymlu YXJ5KTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFBVQkxJU0hfQUNUSU9OX0RFTEVURToK KwkJCQkJCWxvZ2ljYWxyZXBfd3JpdGVfZGVsZXRlKGN0eC0+b3V0LCB4aWQsIHJlbGF0aW9u LCBvbGR0dXBsZSwKKwkJCQkJCQkJCQkJCWRhdGEtPmJpbmFyeSk7CisJCQkJCQlicmVhazsK KwkJCQkJZGVmYXVsdDoKKwkJCQkJCUFzc2VydChmYWxzZSk7CisJCQkJfQogCQkJCU91dHB1 dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAJCQkJYnJlYWs7CiAJCQl9CkBAIC0xMDkwLDcg KzEzMTcsNyBAQCBwZ291dHB1dF9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4 LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJSGVhcFR1cGxlCW9sZHR1cGxlID0gJmNo YW5nZS0+ZGF0YS50cC5vbGR0dXBsZS0+dHVwbGU7CiAKIAkJCQkvKiBDaGVjayByb3cgZmls dGVyLiAqLwotCQkJCWlmICghcGdvdXRwdXRfcm93X2ZpbHRlcihjaGFuZ2UtPmFjdGlvbiwg ZGF0YSwgcmVsYXRpb24sIG9sZHR1cGxlLCBOVUxMLCByZWxlbnRyeSkpCisJCQkJaWYgKCFw Z291dHB1dF9yb3dfZmlsdGVyKGRhdGEsIHJlbGF0aW9uLCBvbGR0dXBsZSwgTlVMTCwgcmVs ZW50cnksIFBVQkxJU0hfQUNUSU9OX0RFTEVURSkpCiAJCQkJCWJyZWFrOwogCiAJCQkJbWF5 YmVfc2VuZF9zY2hlbWEoY3R4LCBjaGFuZ2UsIHJlbGF0aW9uLCByZWxlbnRyeSk7Ci0tIAoy LjIwLjEKCg== --04cc277225e34ea480c6f61c2553d463 Content-Disposition: attachment;filename="v50-0006-Row-filter-tab-auto-complete-and-pgdump.patch" Content-Type: text/x-patch; name="v50-0006-Row-filter-tab-auto-complete-and-pgdump.patch" Content-Transfer-Encoding: BASE64 RnJvbSAyODJkMjZiZTdmM2E4NzNjNTFhMDQ1N2YwMTBiMjMxODgzNTBiODhkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBTbWl0aCA8cGV0ZXIuYi5zbWl0aEBmdWpp dHN1LmNvbT4KRGF0ZTogRnJpLCAxNyBEZWMgMjAyMSAyMDo0MDoxNSArMTEwMApTdWJqZWN0 OiBbUEFUQ0ggdjUwIDYvOF0gUm93LWZpbHRlciB0YWIgYXV0by1jb21wbGV0ZSBhbmQgcGdk dW1wCgp0YWItYXV0by1jb21wbGV0ZQotLS0tLS0tLS0tLS0tLS0tLQoKZS5nLgoiQ1JFQVRF IFBVQkxJQ0FUSU9OIDxuYW1lPiBGT1IgVEFCTEUgPG5hbWU+IiAtIGNvbXBsZXRlIHdpdGgg IldIRVJFICgiLgoiQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IEFERHxTRVQgVEFCTEUgPG5h bWU+IiAtIGNvbXBsZXRlIHdpdGggIldIRVJFICgiLgoKQXV0aG9yOiBQZXRlciBTbWl0aAoK cGdfZHVtcAotLS0tLS0tCgpBdXRob3I6IEV1bGVyIFRhdmVpcmEKLS0tCiBzcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jICAgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmggICB8ICAxICsKIHNyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCA0 MyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGI1 MmYzY2NkYTIuLmVhMTdlNmQxMTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDAzNCw2ICs0MDM0 LDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRi bGluZm9bXSwgaW50IG51bVRhYmxlcykKIAlpbnQJCQlpX29pZDsKIAlpbnQJCQlpX3BycHVi aWQ7CiAJaW50CQkJaV9wcnJlbGlkOworCWludAkJCWlfcHJyZWxxdWFsOwogCWludAkJCWks CiAJCQkJaiwKIAkJCQludHVwczsKQEAgLTQwNDQsOSArNDA0NSwxNiBAQCBnZXRQdWJsaWNh dGlvblRhYmxlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVt VGFibGVzKQogCXF1ZXJ5ID0gY3JlYXRlUFFFeHBCdWZmZXIoKTsKIAogCS8qIENvbGxlY3Qg YWxsIHB1YmxpY2F0aW9uIG1lbWJlcnNoaXAgaW5mby4gKi8KLQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwKLQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBy cmVsaWQgIgotCQkJCQkJICJGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fcmVsIik7 CisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQorCQlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIlNFTEVDVCB0YWJsZW9pZCwgb2lkLCBwcnB1Ymlk LCBwcnJlbGlkLCAiCisJCQkJCQkJICJwZ19jYXRhbG9nLnBnX2dldF9leHByKHBycXVhbCwg cHJyZWxpZCkgQVMgcHJyZWxxdWFsICIKKwkJCQkJCQkgIkZST00gcGdfY2F0YWxvZy5wZ19w dWJsaWNhdGlvbl9yZWwiKTsKKwllbHNlCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LAorCQkJCQkJCSAiU0VMRUNUIHRhYmxlb2lkLCBvaWQsIHBycHViaWQsIHBycmVsaWQsICIK KwkJCQkJCQkgIk5VTEwgQVMgcHJyZWxxdWFsICIKKwkJCQkJCQkgIkZST00gcGdfY2F0YWxv Zy5wZ19wdWJsaWNhdGlvbl9yZWwiKTsKIAlyZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwg cXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CiAKIAludHVwcyA9IFBRbnR1cGxlcyhy ZXMpOwpAQCAtNDA1NSw2ICs0MDYzLDcgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2 ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAlpX29pZCA9 IFBRZm51bWJlcihyZXMsICJvaWQiKTsKIAlpX3BycHViaWQgPSBQUWZudW1iZXIocmVzLCAi cHJwdWJpZCIpOwogCWlfcHJyZWxpZCA9IFBRZm51bWJlcihyZXMsICJwcnJlbGlkIik7CisJ aV9wcnJlbHF1YWwgPSBQUWZudW1iZXIocmVzLCAicHJyZWxxdWFsIik7CiAKIAkvKiB0aGlz IGFsbG9jYXRpb24gbWF5IGJlIG1vcmUgdGhhbiB3ZSBuZWVkICovCiAJcHVicmluZm8gPSBw Z19tYWxsb2MobnR1cHMgKiBzaXplb2YoUHVibGljYXRpb25SZWxJbmZvKSk7CkBAIC00MDk1 LDYgKzQxMDQsMTAgQEAgZ2V0UHVibGljYXRpb25UYWJsZXMoQXJjaGl2ZSAqZm91dCwgVGFi bGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJcHVicmluZm9bal0uZG9iai5u YW1lID0gdGJpbmZvLT5kb2JqLm5hbWU7CiAJCXB1YnJpbmZvW2pdLnB1YmxpY2F0aW9uID0g cHViaW5mbzsKIAkJcHVicmluZm9bal0ucHVidGFibGUgPSB0YmluZm87CisJCWlmIChQUWdl dGlzbnVsbChyZXMsIGksIGlfcHJyZWxxdWFsKSkKKwkJCXB1YnJpbmZvW2pdLnB1YnJlbHF1 YWwgPSBOVUxMOworCQllbHNlCisJCQlwdWJyaW5mb1tqXS5wdWJyZWxxdWFsID0gcGdfc3Ry ZHVwKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3BycmVscXVhbCkpOwogCiAJCS8qIERlY2lkZSB3 aGV0aGVyIHdlIHdhbnQgdG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZVB1YmxpY2F0 aW9uT2JqZWN0KCYocHVicmluZm9bal0uZG9iaiksIGZvdXQpOwpAQCAtNDE2Miw4ICs0MTc1 LDExIEBAIGR1bXBQdWJsaWNhdGlvblRhYmxlKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFB1Ymxp Y2F0aW9uUmVsSW5mbyAqcHVicmluZm8pCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwg IkFMVEVSIFBVQkxJQ0FUSU9OICVzIEFERCBUQUJMRSBPTkxZIiwKIAkJCQkJICBmbXRJZChw dWJpbmZvLT5kb2JqLm5hbWUpKTsKLQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIiAlcztc biIsCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgJXMiLAogCQkJCQkgIGZtdFF1YWxp ZmllZER1bXBhYmxlKHRiaW5mbykpOworCWlmIChwdWJyaW5mby0+cHVicmVscXVhbCkKKwkJ YXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIgV0hFUkUgKCVzKSIsIHB1YnJpbmZvLT5wdWJy ZWxxdWFsKTsKKwlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIjtcbiIpOwogCiAJLyoK IAkgKiBUaGVyZSBpcyBubyBwb2ludCBpbiBjcmVhdGluZyBhIGRyb3AgcXVlcnkgYXMgdGhl IGRyb3AgaXMgZG9uZSBieSB0YWJsZQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggZjAxMWFjZThhOC4u MGViZGNlNTZkYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC02MzAsNiArNjMwLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uUmVsSW5mbwogCUR1bXBhYmxlT2JqZWN0IGRvYmo7CiAJ UHVibGljYXRpb25JbmZvICpwdWJsaWNhdGlvbjsKIAlUYWJsZUluZm8gICpwdWJ0YWJsZTsK KwljaGFyCSAgICpwdWJyZWxxdWFsOwogfSBQdWJsaWNhdGlvblJlbEluZm87CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmMKaW5kZXggYjUyNGRjODdmYy4uMWQ0NzYzNDhhNiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuYwpAQCAtMTY1NCw2ICsxNjU0LDE5IEBAIHBzcWxfY29tcGxldGlvbihjb25z dCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJLyogQUxURVIgUFVCTElDQVRJ T04gPG5hbWU+IFNFVCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJTRVQiKSkKIAkJQ09NUExFVEVfV0lUSCgiKCIsICJBTEwgVEFC TEVTIElOIFNDSEVNQSIsICJUQUJMRSIpOworCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1l PiBTRVQgVEFCTEUgPG5hbWU+ICovCisJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IEFE RCBUQUJMRSA8bmFtZT4gKi8KKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiU0VUfEFERCIsICJUQUJMRSIsIE1hdGNoQW55KSAmJiAhZW5k c193aXRoKHByZXZfd2QsICcsJykpCisJCUNPTVBMRVRFX1dJVEgoIldIRVJFICgiKTsKKwkv KgorCSAqICJBTFRFUiBQVUJMSUNBVElPTiA8bmFtZT4gU0VUIFRBQkxFIDxuYW1lPiBXSEVS RSAoIiAtIGNvbXBsZXRlIHdpdGgKKwkgKiB0YWJsZSBhdHRyaWJ1dGVzCisJICoKKwkgKiAi QUxURVIgUFVCTElDQVRJT04gPG5hbWU+IEFERCBUQUJMRSA8bmFtZT4gV0hFUkUgKCIgLSBj b21wbGV0ZSB3aXRoCisJICogdGFibGUgYXR0cmlidXRlcworCSAqLworCWVsc2UgaWYgKEhl YWRNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55KSAmJiBUYWlsTWF0 Y2hlcygiV0hFUkUiLCAiKCIpKQorCQlDT01QTEVURV9XSVRIX0FUVFIocHJldjNfd2QsICIi KTsKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiQUREfERST1B8U0VUIiwgIkFMTCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIikpCiAJ CUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfc2NoZW1hcwogCQkJCQkJ CSIgQU5EIG5zcG5hbWUgIT0gJ3BnX2NhdGFsb2cnICIKQEAgLTI3NzcsMTIgKzI3OTAsMTkg QEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVu ZCkKIAkJQ09NUExFVEVfV0lUSCgiVEFCTEVTIiwgIlRBQkxFUyBJTiBTQ0hFTUEiKTsKIAll bHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkZP UiIsICJBTEwiLCAiVEFCTEVTIikpCiAJCUNPTVBMRVRFX1dJVEgoIklOIFNDSEVNQSIsICJX SVRIICgiKTsKLQllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIkZPUiIsICJUQUJMRSIsIE1hdGNoQW55KSkKLQkJQ09NUExFVEVfV0lUSCgi V0lUSCAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwg TWF0Y2hBbnksICJGT1IiLCAiVEFCTEUiLCBNYXRjaEFueSkgJiYgIWVuZHNfd2l0aChwcmV2 X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCJXSEVSRSAoIiwgIldJVEggKCIpOwogCS8q IENvbXBsZXRlICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+IEZPUiBUQUJMRSIgd2l0aCAi PHRhYmxlPiwgLi4uIiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxFIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NI RU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcywgTlVMTCk7CiAKKwkvKgorCSAq ICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+IEZPUiBUQUJMRSA8bmFtZT4gV0hFUkUgKCIg LSBjb21wbGV0ZSB3aXRoCisJICogdGFibGUgYXR0cmlidXRlcworCSAqLworCWVsc2UgaWYg KEhlYWRNYXRjaGVzKCJDUkVBVEUiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSkgJiYgVGFp bE1hdGNoZXMoIldIRVJFIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSF9BVFRSKHByZXYzX3dk LCAiIik7CisKIAkvKgogCSAqIENvbXBsZXRlICJDUkVBVEUgUFVCTElDQVRJT04gPG5hbWU+ IEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSA8c2NoZW1hPiwKIAkgKiAuLi4iCi0tIAoyLjIw LjEKCg== --04cc277225e34ea480c6f61c2553d463 Content-Disposition: attachment;filename="v50-0007-Row-filter-handle-FOR-ALL-TABLES.patch" Content-Type: text/x-patch; name="v50-0007-Row-filter-handle-FOR-ALL-TABLES.patch" Content-Transfer-Encoding: BASE64 RnJvbSA2ZTM2MzYyZjk5NzliMzY1MjY0YzNlZDkzNWJmN2U5ZTYwNzA2OGYwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBTbWl0aCA8cGV0ZXIuYi5zbWl0aEBmdWpp dHN1LmNvbT4KRGF0ZTogRnJpLCAxNyBEZWMgMjAyMSAyMDo0MTo0MCArMTEwMApTdWJqZWN0 OiBbUEFUQ0ggdjUwIDcvOF0gUm93LWZpbHRlciBoYW5kbGUgRk9SIEFMTCBUQUJMRVMKCklm IG9uZSBvZiB0aGUgc3Vic2NyaWJlcidzIHB1YmxpY2F0aW9ucyB3YXMgY3JlYXRlZCB1c2lu ZyBGT1IgQUxMIFRBQkxFUyB0aGVuCnRoYXQgaW1wbGllcyBOTyByb3ctZmlsdGVyaW5nIHdp bGwgYmUgYXBwbGllZC4KCklmIG9uZSBvZiB0aGUgc3Vic2NyaWJlcidzIHB1YmxpY2F0aW9u cyB3YXMgY3JlYXRlZCB1c2luZyBGT1IgQUxMIFRBQkxFUyBJTgpTQ0hFTUEgYW5kIHRoZSB0 YWJsZSBiZWxvbmcgdG8gdGhhdCBzYW1lIHNjaG1lYSwgdGhlbiB0aGF0IGFsc28gaW1wbGll cyBOTwpyb3ctZmlsdGVyaW5nIHdpbGwgYmUgYXBwbGllZC4KClRoZXNlIHJ1bGVzIG92ZXJy aWRlcyBhbnkgb3RoZXIgcm93LWZpbHRlcnMgZnJvbSBvdGhlciBzdWJzY3JpYmVkIHB1Ymxp Y2F0aW9ucy4KCk5vdGUgdGhhdCB0aGUgaW5pdGlhbCBDT1BZIGRvZXMgbm90IHRha2UgcHVi bGljYXRpb24gb3BlcmF0aW9ucyBpbnRvIGFjY291bnQuCgpBdXRob3I6IFBldGVyIFNtaXRo ClJlcG9ydGVkIEJ5OiBUYW5nCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwu b3JnL21lc3NhZ2UtaWQvT1MwUFIwMU1CNjExM0Q4MjExM0FBMDgxQUNGNzEwRDBDRkI2RTkl NDBPUzBQUjAxTUI2MTEzLmpwbnByZDAxLnByb2Qub3V0bG9vay5jb20KLS0tCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIHwgIDQ4ICsrKysrLS0tCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIHwgIDYzICsrKysr KysrKystCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjdfcm93X2ZpbHRlci5wbCAgIHwg MTE4ICsrKysrKysrKysrKysrKysrKystCiAzIGZpbGVzIGNoYW5nZWQsIDIwMiBpbnNlcnRp b25zKCspLCAyNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC90YWJsZXN5bmMuYwppbmRleCBjMjBjMjIxOWZjLi40NjlhYWRjMWM0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTgw MiwyMSArODAyLDIyIEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUs IGNoYXIgKnJlbG5hbWUsCiAJd2FscmN2X2NsZWFyX3Jlc3VsdChyZXMpOwogCiAJLyoKKwkg KiBJZiBhbnkgcHVibGljYXRpb24gaGFzIHB1YmFsbHRhYmxlcyB0cnVlIHRoZW4gYWxsIHJv dy1maWx0ZXJpbmcgaXMKKwkgKiBpZ25vcmVkLgorCSAqCisJICogSWYgdGhlIHJlbGF0aW9u IGlzIGEgbWVtYmVyIG9mIGEgc2NoZW1hIG9mIGEgc3Vic2NyaWJlZCBwdWJsaWNhdGlvbiB0 aGF0CisJICogc2FpZCBBTEwgVEFCTEVTIElOIFNDSEVNQSB0aGVuIGFsbCByb3ctZmlsdGVy aW5nIGlzIGlnbm9yZWQuCisJICoKIAkgKiBHZXQgcmVsYXRpb24gcXVhbC4gRElTVElOQ1Qg YXZvaWRzIHRoZSBzYW1lIGV4cHJlc3Npb24gb2YgYSB0YWJsZSBpbgogCSAqIG11bHRpcGxl IHB1YmxpY2F0aW9ucyBmcm9tIGJlaW5nIGluY2x1ZGVkIG11bHRpcGxlIHRpbWVzIGluIHRo ZSBmaW5hbAogCSAqIGV4cHJlc3Npb24uCiAJICovCiAJaWYgKHdhbHJjdl9zZXJ2ZXJfdmVy c2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKSA+PSAxNTAwMDApCiAJewotCQlyZXNldFN0 cmluZ0luZm8oJmNtZCk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwKLQkJCQkJCSAiU0VM RUNUIERJU1RJTkNUIHBnX2dldF9leHByKHBycXVhbCwgcHJyZWxpZCkgIgotCQkJCQkJICIg IEZST00gcGdfcHVibGljYXRpb24gcCAiCi0JCQkJCQkgIiAgSU5ORVIgSk9JTiBwZ19wdWJs aWNhdGlvbl9yZWwgcHIgIgotCQkJCQkJICIgICAgICAgT04gKHAub2lkID0gcHIucHJwdWJp ZCkgIgotCQkJCQkJICIgV0hFUkUgcHIucHJyZWxpZCA9ICV1ICIKLQkJCQkJCSAiICAgQU5E IHAucHVibmFtZSBJTiAoIiwgbHJlbC0+cmVtb3RlaWQpOworCQlTdHJpbmdJbmZvRGF0YSBw dWJfbmFtZXM7CiAKKwkJLyogQnVpbGQgdGhlIHB1Ym5hbWUgbGlzdC4gKi8KKwkJaW5pdFN0 cmluZ0luZm8oJnB1Yl9uYW1lcyk7CiAJCWZpcnN0ID0gdHJ1ZTsKIAkJZm9yZWFjaChsYywg TXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9ucykKIAkJewpAQCAtODI1LDExICs4MjYsMjgg QEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFt ZSwKIAkJCWlmIChmaXJzdCkKIAkJCQlmaXJzdCA9IGZhbHNlOwogCQkJZWxzZQotCQkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiwgIik7CisJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmcHViX25hbWVzLCAiLCAiKTsKIAotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmlu ZygmY21kLCBxdW90ZV9saXRlcmFsX2NzdHIocHVibmFtZSkpOworCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmcHViX25hbWVzLCBxdW90ZV9saXRlcmFsX2NzdHIocHVibmFtZSkpOwog CQl9Ci0JCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZjbWQsICcpJyk7CisKKwkJLyogQ2hlY2sg Zm9yIHJvdy1maWx0ZXJzICovCisJCXJlc2V0U3RyaW5nSW5mbygmY21kKTsKKwkJYXBwZW5k U3RyaW5nSW5mbygmY21kLAorCQkJCQkJICJTRUxFQ1QgRElTVElOQ1QgcGdfZ2V0X2V4cHIo cHJxdWFsLCBwcnJlbGlkKSAiCisJCQkJCQkgIiAgRlJPTSBwZ19wdWJsaWNhdGlvbiBwICIK KwkJCQkJCSAiICBJTk5FUiBKT0lOIHBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiAocC5vaWQg PSBwci5wcnB1YmlkKSAiCisJCQkJCQkgIiAgICBXSEVSRSBwci5wcnJlbGlkID0gJXUgQU5E IHAucHVibmFtZSBJTiAoICVzICkgIgorCQkJCQkJICIgICAgQU5EIE5PVCAoc2VsZWN0IGJv b2xfb3IocHViYWxsdGFibGVzKSAiCisJCQkJCQkgIiAgICAgIEZST00gcGdfcHVibGljYXRp b24gIgorCQkJCQkJICIgICAgICBXSEVSRSBwdWJuYW1lIGluICggJXMgKSkgIgorCQkJCQkJ ICIgICAgQU5EIChTRUxFQ1QgY291bnQoMSk9MCAiCisJCQkJCQkgIiAgICAgIEZST00gcGdf cHVibGljYXRpb25fbmFtZXNwYWNlIHBuLCBwZ19jbGFzcyBjICIKKwkJCQkJCSAiICAgICAg V0hFUkUgYy5vaWQgPSAldSBBTkQgYy5yZWxuYW1lc3BhY2UgPSBwbi5wbm5zcGlkKSIsCisJ CQkJCQlscmVsLT5yZW1vdGVpZCwKKwkJCQkJCXB1Yl9uYW1lcy5kYXRhLAorCQkJCQkJcHVi X25hbWVzLmRhdGEsCisJCQkJCQlscmVsLT5yZW1vdGVpZCk7CiAKIAkJcmVzID0gd2FscmN2 X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgY21kLmRhdGEsIDEsIHF1YWxSb3cpOwog CkBAIC04NDcsMTggKzg2NSwxNCBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpu c3BuYW1lLCBjaGFyICpyZWxuYW1lLAogCQlzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVT bG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsKIAkJd2hpbGUgKHR1 cGxlc3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVwbGVzdG9yZSwgdHJ1ZSwgZmFsc2UsIHNs b3QpKQogCQl7Ci0JCQlEYXR1bQkJcmYgPSBzbG90X2dldGF0dHIoc2xvdCwgMSwgJmlzbnVs bCk7CisJCQlEYXR1bSByZiA9IHNsb3RfZ2V0YXR0cihzbG90LCAxLCAmaXNudWxsKTsKIAog CQkJaWYgKCFpc251bGwpCiAJCQkJKnF1YWwgPSBsYXBwZW5kKCpxdWFsLCBtYWtlU3RyaW5n KFRleHREYXR1bUdldENTdHJpbmcocmYpKSk7CiAKIAkJCUV4ZWNDbGVhclR1cGxlKHNsb3Qp OwogCi0JCQkvKgotCQkJICogT25lIGVudHJ5IHdpdGhvdXQgYSByb3cgZmlsdGVyIGV4cHJl c3Npb24gbWVhbnMgY2xlYW4gdXAKLQkJCSAqIHByZXZpb3VzIGV4cHJlc3Npb25zIChpZiB0 aGVyZSBhcmUgYW55KSBhbmQgcmV0dXJuIHdpdGggbm8KLQkJCSAqIGV4cHJlc3Npb25zLgot CQkJICovCisJCQkvKiBJZ25vcmUgZmlsdGVycyBhbmQgY2xlYW51cCBhcyBuZWNlc3Nhcnku ICovCiAJCQlpZiAoaXNudWxsKQogCQkJewogCQkJCWlmICgqcXVhbCkKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDdlNWI5M2ExMzUu LmE5MjZmZmM1NjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0 cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYwpAQCAtODA0LDEzICs4MDQsNjggQEAgcGdvdXRwdXRfcm93X2ZpbHRlcl9p bml0KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24sIFJlbGF0aW9uU3lu Y0VudHIKIAkJICogcmVsYXRpb24uIFNpbmNlIHJvdyBmaWx0ZXIgdXNhZ2UgZGVwZW5kcyBv biB0aGUgRE1MIG9wZXJhdGlvbiwKIAkJICogdGhlcmUgYXJlIG11bHRpcGxlIGxpc3RzIChv bmUgZm9yIGVhY2ggb3BlcmF0aW9uKSB3aGljaCByb3cgZmlsdGVycwogCQkgKiB3aWxsIGJl IGFwcGVuZGVkLgorCQkgKgorCQkgKiBOT1RFOiBGT1IgQUxMIFRBQkxFUyBpbXBsaWVzICJ1 c2Ugbm8gZmlsdGVycyIgc28gaXQgdGFrZXMgcHJlY2VkZW5jZQorCQkgKgorCQkgKiBOT1RF OiBBTEwgVEFCTEVTIElOIFNDSEVNQSBhbHNvIGltcGxpZXMgInVzZSBub3QgZmlsdGVycyIg aWYgdGhlCisJCSAqIHRhYmxlIGlzIGEgbWVtYmVyIG9mIHRoZSBzYW1lIHNjaGVtYS4KIAkJ ICovCiAJCWZvcmVhY2gobGMsIGRhdGEtPnB1YmxpY2F0aW9ucykKIAkJewotCQkJUHVibGlj YXRpb24gKnB1YiA9IGxmaXJzdChsYyk7Ci0JCQlIZWFwVHVwbGUJcmZ0dXBsZTsKLQkJCURh dHVtCQlyZmRhdHVtOwotCQkJYm9vbAkJcmZpc251bGw7CisJCQlQdWJsaWNhdGlvbgkgICAq cHViID0gbGZpcnN0KGxjKTsKKwkJCUhlYXBUdXBsZQkJcmZ0dXBsZTsKKwkJCURhdHVtCQkJ cmZkYXR1bTsKKwkJCWJvb2wJCQlyZmlzbnVsbDsKKwkJCUxpc3QJCSAgICpzY2hlbWFyZWxp ZHMgPSBOSUw7CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcHVibGljYXRpb24gaXMgRk9SIEFM TCBUQUJMRVMgdGhlbiBpdCBpcyB0cmVhdGVkIHRoZSBzYW1lCisJCQkgKiBhcyBpZiB0aGlz IHRhYmxlIGhhcyBubyBmaWx0ZXJzIChldmVuIGlmIGZvciBzb21lIG90aGVyCisJCQkgKiBw dWJsaWNhdGlvbiBpdCBkb2VzKS4KKwkJCSAqLworCQkJaWYgKHB1Yi0+YWxsdGFibGVzKQor CQkJeworCQkJCWlmIChwdWItPnB1YmFjdGlvbnMucHViaW5zZXJ0KQorCQkJCQlub19maWx0 ZXJbaWR4X2luc10gPSB0cnVlOworCQkJCWlmIChwdWItPnB1YmFjdGlvbnMucHVidXBkYXRl KQorCQkJCQlub19maWx0ZXJbaWR4X3VwZF0gPSB0cnVlOworCQkJCWlmIChwdWItPnB1YmFj dGlvbnMucHViZGVsZXRlKQorCQkJCQlub19maWx0ZXJbaWR4X2RlbF0gPSB0cnVlOworCisJ CQkJLyogUXVpY2sgZXhpdCBsb29wIGlmIGFsbCBwdWJhY3Rpb25zIGhhdmUgbm8gcm93LWZp bHRlci4gKi8KKwkJCQlpZiAobm9fZmlsdGVyW2lkeF9pbnNdICYmIG5vX2ZpbHRlcltpZHhf dXBkXSAmJiBub19maWx0ZXJbaWR4X2RlbF0pCisJCQkJCWJyZWFrOworCisJCQkJY29udGlu dWU7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcHVibGljYXRpb24gaXMgRk9SIEFM TCBUQUJMRVMgSU4gU0NIRU1BIGFuZCBpdCBvdmVybGFwcyB3aXRoIHRoZQorCQkJICogY3Vy cmVudCByZWxhdGlvbiBpbiB0aGUgc2FtZSBzY2hlbWEgdGhlbiB0aGlzIGlzIGFsc28gdHJl YXRlZCBzYW1lIGFzIGlmCisJCQkgKiB0aGlzIHRhYmxlIGhhcyBubyBmaWx0ZXJzIChldmVu IGlmIGZvciBzb21lIG90aGVyIHB1YmxpY2F0aW9uIGl0IGRvZXMpLgorCQkJICovCisJCQlz Y2hlbWFyZWxpZHMgPSBHZXRBbGxTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWItPm9p ZCwKKwkJCQkJCQkJCQkJCQkJCXB1Yi0+cHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkJCQlQ VUJMSUNBVElPTl9QQVJUX1JPT1QgOgorCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFS VF9MRUFGKTsKKwkJCWlmIChsaXN0X21lbWJlcl9vaWQoc2NoZW1hcmVsaWRzLCBlbnRyeS0+ cmVsaWQpKQorCQkJeworCQkJCWlmIChwdWItPnB1YmFjdGlvbnMucHViaW5zZXJ0KQorCQkJ CQlub19maWx0ZXJbaWR4X2luc10gPSB0cnVlOworCQkJCWlmIChwdWItPnB1YmFjdGlvbnMu cHVidXBkYXRlKQorCQkJCQlub19maWx0ZXJbaWR4X3VwZF0gPSB0cnVlOworCQkJCWlmIChw dWItPnB1YmFjdGlvbnMucHViZGVsZXRlKQorCQkJCQlub19maWx0ZXJbaWR4X2RlbF0gPSB0 cnVlOworCisJCQkJbGlzdF9mcmVlKHNjaGVtYXJlbGlkcyk7CisKKwkJCQkvKiBRdWljayBl eGl0IGxvb3AgaWYgYWxsIHB1YmFjdGlvbnMgaGF2ZSBubyByb3ctZmlsdGVyLiAqLworCQkJ CWlmIChub19maWx0ZXJbaWR4X2luc10gJiYgbm9fZmlsdGVyW2lkeF91cGRdICYmIG5vX2Zp bHRlcltpZHhfZGVsXSkKKwkJCQkJYnJlYWs7CisKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJ CWxpc3RfZnJlZShzY2hlbWFyZWxpZHMpOwogCiAJCQkvKgogCQkJICogTG9va3VwIGlmIHRo ZXJlIGlzIGEgcm93IGZpbHRlciwgYW5kIGlmIHllcyByZW1lbWJlciBpdCBpbiBhIGxpc3Qg KHBlcgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI3X3Jvd19maWx0 ZXIucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjdfcm93X2ZpbHRlci5wbAppbmRl eCBkZTZiNzNkMjZhLi5hYmVhZjc2MGM1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjdfcm93X2ZpbHRlci5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMjdfcm93X2ZpbHRlci5wbApAQCAtMyw3ICszLDcgQEAgdXNlIHN0cmljdDsKIHVzZSB3 YXJuaW5nczsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwotdXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMTA7Cit1c2UgVGVz dDo6TW9yZSB0ZXN0cyA9PiAxNDsKIAogIyBjcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRu b2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlz aGVyJyk7CkBAIC0xNSw2ICsxNSwxMTYgQEAgbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwogJG5vZGVfc3Vic2Ny aWJlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CiAkbm9kZV9zdWJz Y3JpYmVyLT5zdGFydDsKIAorbXkgJHN5bmNlZF9xdWVyeSA9CisgICJTRUxFQ1QgY291bnQo MSkgPSAwIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBzcnN1YnN0YXRlIE5PVCBJ TiAoJ3InLCAncycpOyI7CisKK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxp c2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKK215ICRhcHBuYW1lICAgICAg ICAgICA9ICd0YXBfc3ViJzsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFy dDogRk9SIEFMTCBUQUJMRVMKKyMKKyMgVGhlIEZPUiBBTEwgVEFCTEVTIHRlc3QgbXVzdCBj b21lIGZpcnN0IHNvIHRoYXQgaXQgaXMgbm90IGFmZmVjdGVkIGJ5CisjIGFsbCB0aGUgb3Ro ZXIgdGVzdCB0YWJsZXMgdGhhdCBhcmUgbGF0ZXIgY3JlYXRlZC4KKworIyBjcmVhdGUgdGFi bGVzIHB1YiBhbmQgc3ViCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiQ1JFQVRFIFRBQkxFIHRhYl9yZl94ICh4IGludCBwcmltYXJ5IGtleSkiKTsKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRhYl9y Zl94ICh4IGludCBwcmltYXJ5IGtleSkiKTsKKworIyBpbnNlcnQgc29tZSBpbml0aWFsIGRh dGEKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJ TlRPIHRhYl9yZl94ICh4KSBWQUxVRVMgKDApLCAoNSksICgxMCksICgxNSksICgyMCkiKTsK KworIyBjcmVhdGUgcHViL3N1YgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfeCBGT1IgVEFCTEUgdGFiX3Jm X3ggV0hFUkUgKHggPiAxMCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX2ZvcmFsbCBGT1IgQUxMIFRB QkxFUyIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5z dHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1Yl94LCB0 YXBfcHViX2ZvcmFsbCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworIyB3YWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmNocm9uaXphdGlvbiB0 byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywgJHN5bmNlZF9xdWVyeSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKKworIyBUaGUgc3Vic2NyaXB0 aW9uIG9mIHRoZSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiBtZWFucyB0aGVyZSBzaG91 bGQgYmUgbm8KKyMgZmlsdGVyaW5nIG9uIHRoZSB0YWJsZXN5bmMgQ09QWSwgc28gYWxsIGV4 cGVjdCBhbGwgNSB3aWxsIGJlIHByZXNlbnQuCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoeCkgRlJPTSB0YWJf cmZfeCIpOworaXMoJHJlc3VsdCwgcXEoNSksICdjaGVjayBpbml0aWFsIGRhdGEgY29weSBm cm9tIHRhYmxlIHRhYl9yZl94IHNob3VsZCBub3QgYmUgZmlsdGVyZWQnKTsKKworIyBTaW1p bGFybHksIG5vcm1hbCBmaWx0ZXJpbmcgYWZ0ZXIgdGhlIGluaXRpYWwgcGhhc2Ugd2lsbCBh bHNvIGhhdmUgbm90IGVmZmVjdC4KKyMgRXhwZWN0ZWQ6IDUgaW5pdGlhbCByb3dzICsgMiBu ZXcgcm93cyA9IDcgcm93cworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIklOU0VSVCBJTlRPIHRhYl9yZl94ICh4KSBWQUxVRVMgKC05OSksICg5OSkiKTsKKyRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiskcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo eCkgRlJPTSB0YWJfcmZfeCIpOworaXMoJHJlc3VsdCwgcXEoNyksICdjaGVjayB0YWJsZSB0 YWJfcmZfeCBzaG91bGQgbm90IGJlIGZpbHRlcmVkJyk7CisKKyMgY2xlYW51cCBwdWIKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFBVQkxJQ0FUSU9O IHRhcF9wdWJfZm9yYWxsIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViX3giKTsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRhYl9yZl94Iik7CisjIGNsZWFu dXAgc3ViCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1Ag U1VCU0NSSVBUSU9OIHRhcF9zdWIiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiRFJPUCBUQUJMRSB0YWJfcmZfeCIpOworCisjIFRlc3RjYXNlIGVuZDog Rk9SIEFMTCBUQUJMRVMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor IyBUZXN0Y2FzZSBzdGFydDogQUxMIFRBQkxFUyBJTiBTQ0hFTUEKKyMKKyMgVGhlIEFMTCBU QUJMRVMgSU4gU0NIRU1BIHRlc3QgaXMgaW5kZXBlbmRlbnQgb2YgYWxsIG90aGVyIHRlc3Qg Y2FzZXMgc28gaXQKKyMgY2xlYW5zIHVwIGFmdGVyIGl0c2VsZi4KKworIyBjcmVhdGUgdGFi bGVzIHB1YiBhbmQgc3ViCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiQ1JFQVRFIFNDSEVNQSBzY2hlbWFfcmZfeCIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSBzY2hlbWFfcmZfeC50YWJfcmZfeCAo eCBpbnQgcHJpbWFyeSBrZXkpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNSRUFURSBTQ0hFTUEgc2NoZW1hX3JmX3giKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHNjaGVtYV9yZl94LnRh Yl9yZl94ICh4IGludCBwcmltYXJ5IGtleSkiKTsKKworIyBpbnNlcnQgc29tZSBpbml0aWFs IGRhdGEKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHNjaGVtYV9yZl94LnRhYl9yZl94ICh4KSBWQUxVRVMgKDApLCAoNSksICgxMCks ICgxNSksICgyMCkiKTsKKworIyBjcmVhdGUgcHViL3N1YgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWJfeCBG T1IgVEFCTEUgc2NoZW1hX3JmX3gudGFiX3JmX3ggV0hFUkUgKHggPiAxMCkiKTsKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElP TiB0YXBfcHViX2FsbGluc2NoZW1hIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBzY2hlbWFf cmZfeCIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5z dHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1Yl94LCB0 YXBfcHViX2FsbGluc2NoZW1hIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisjIHdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luY2hyb25pemF0 aW9uIHRvIGZpbmlzaAorJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9z dGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0 aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRhdGEiOworCisjIFRoZSBzdWJz Y3JpcHRpb24gb2YgdGhlIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIG1lYW5z IHRoZXJlIHNob3VsZCBiZQorIyBubyBmaWx0ZXJpbmcgb24gdGhlIHRhYmxlc3luYyBDT1BZ LCBzbyBhbGwgZXhwZWN0IGFsbCA1IHdpbGwgYmUgcHJlc2VudC4KKyRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCh4KSBG Uk9NIHNjaGVtYV9yZl94LnRhYl9yZl94Iik7CitpcygkcmVzdWx0LCBxcSg1KSwgJ2NoZWNr IGluaXRpYWwgZGF0YSBjb3B5IGZyb20gdGFibGUgdGFiX3JmX3ggc2hvdWxkIG5vdCBiZSBm aWx0ZXJlZCcpOworCisjIFNpbWlsYXJseSwgbm9ybWFsIGZpbHRlcmluZyBhZnRlciB0aGUg aW5pdGlhbCBwaGFzZSB3aWxsIGFsc28gaGF2ZSBub3QgZWZmZWN0LgorIyBFeHBlY3RlZDog NSBpbml0aWFsIHJvd3MgKyAyIG5ldyByb3dzID0gNyByb3dzCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gc2NoZW1hX3JmX3gudGFiX3Jm X3ggKHgpIFZBTFVFUyAoLTk5KSwgKDk5KSIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCh4KSBGUk9NIHNjaGVtYV9yZl94LnRh Yl9yZl94Iik7CitpcygkcmVzdWx0LCBxcSg3KSwgJ2NoZWNrIHRhYmxlIHRhYl9yZl94IHNo b3VsZCBub3QgYmUgZmlsdGVyZWQnKTsKKworIyBjbGVhbnVwIHB1YgorJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgUFVCTElDQVRJT04gdGFwX3B1Yl9h bGxpbnNjaGVtYSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IkRST1AgUFVCTElDQVRJT04gdGFwX3B1Yl94Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSBzY2hlbWFfcmZfeC50YWJfcmZfeCIpOwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgU0NIRU1BIHNj aGVtYV9yZl94Iik7CisjIGNsZWFudXAgc3ViCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWIiKTsKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBUQUJMRSBzY2hlbWFfcmZf eC50YWJfcmZfeCIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJEUk9QIFNDSEVNQSBzY2hlbWFfcmZfeCIpOworCisjIFRlc3RjYXNlIGVuZDogQUxMIFRB QkxFUyBJTiBTQ0hFTUEKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwogIyBzZXR1cCBzdHJ1Y3R1cmUg b24gcHVibGlzaGVyCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJDUkVBVEUgVEFCTEUgdGFiX3Jvd2ZpbHRlcl8xIChhIGludCBwcmltYXJ5IGtleSwgYiB0 ZXh0KSIpOwpAQCAtMTI3LDggKzIzNyw2IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJJTlNFUlQgSU5UTyB0YWJfcm93ZmlsdGVyX2dyZWF0ZXJfMTBrIChhLCBiKSBWQUxVRVMo MTYwMDAsIDEwMykiKTsKIAotbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlz aGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOwotbXkgJGFwcG5hbWUgICAgICAg ICAgID0gJ3RhcF9zdWInOwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlz aGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFw X3B1Yl8xLCB0YXBfcHViXzIsIHRhcF9wdWJfMywgdGFwX3B1Yl80YSwgdGFwX3B1Yl80YiIK ICk7CkBAIC0xMzYsOCArMjQ0LDYgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwogCiAjIHdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luY2hyb25pemF0aW9uIHRvIGZpbmlz aAotbXkgJHN5bmNlZF9xdWVyeSA9Ci0gICJTRUxFQ1QgY291bnQoMSkgPSAwIEZST00gcGdf c3Vic2NyaXB0aW9uX3JlbCBXSEVSRSBzcnN1YnN0YXRlIE5PVCBJTiAoJ3InLCAncycpOyI7 CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5j ZWRfcXVlcnkpCiAgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNj cmliZXIgdG8gc3luY2hyb25pemUgZGF0YSI7CiAKQEAgLTE0OCw3ICsyNTQsNyBAQCAkbm9k ZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVl cnkpCiAjIC0gSU5TRVJUICgxOTgwLCAnbm90IGZpbHRlcmVkJykgIFlFUwogIyAtIGdlbmVy YXRlX3Nlcmllcyg5OTAsMTAwMikgICAgICBZRVMsIG9ubHkgZm9yIDEwMDEsMTAwMiBiZWNh dXNlIGEgPiAxMDAwCiAjCi1teSAkcmVzdWx0ID0KKyRyZXN1bHQgPQogICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGEsIGIgRlJPTSB0YWJf cm93ZmlsdGVyXzEgT1JERVIgQlkgMSwgMiIpOwogaXMoICRyZXN1bHQsIHFxKDEwMDF8dGVz dCAxMDAxCi0tIAoyLjIwLjEKCg== --04cc277225e34ea480c6f61c2553d463 Content-Disposition: attachment;filename="v50-0008-fixes-0005.patch" Content-Type: text/x-patch; name="v50-0008-fixes-0005.patch" Content-Transfer-Encoding: BASE64 RnJvbSAwNjU3OGEwOWI1NzU1OGExZmNlMDMyN2M3NDhlY2QwNzQ0MTViZDYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBFdWxlciBUYXZlaXJhIDxldWxlci50YXZlaXJhQGVu dGVycHJpc2VkYi5jb20+CkRhdGU6IE1vbiwgMjAgRGVjIDIwMjEgMTA6MDU6MjMgLTAzMDAK U3ViamVjdDogW1BBVENIIHY1MCA4LzhdIGZpeGVzIDAwMDUKCi0tLQogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyB8IDQ1ICsrKysrKysrKysrKy0tLS0t LS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyB8IDI0 ICsrKysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDMwIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jCmluZGV4IDQ2OWFhZGMxYzQuLjUxMjcxYTZhMDAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtODAyLDE1ICs4MDIsMjAg QEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2luZm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFt ZSwKIAl3YWxyY3ZfY2xlYXJfcmVzdWx0KHJlcyk7CiAKIAkvKgotCSAqIElmIGFueSBwdWJs aWNhdGlvbiBoYXMgcHViYWxsdGFibGVzIHRydWUgdGhlbiBhbGwgcm93LWZpbHRlcmluZyBp cwotCSAqIGlnbm9yZWQuCisJICogR2V0IHJlbGF0aW9uIHJvdyBmaWx0ZXIgZXhwcmVzc2lv bnMuIERJU1RJTkNUIGF2b2lkcyB0aGUgc2FtZSBleHByZXNzaW9uCisJICogb2YgYSB0YWJs ZSBpbiBtdWx0aXBsZSBwdWJsaWNhdGlvbnMgZnJvbSBiZWluZyBpbmNsdWRlZCBtdWx0aXBs ZSB0aW1lcworCSAqIGluIHRoZSBmaW5hbCBleHByZXNzaW9uLgogCSAqCi0JICogSWYgdGhl IHJlbGF0aW9uIGlzIGEgbWVtYmVyIG9mIGEgc2NoZW1hIG9mIGEgc3Vic2NyaWJlZCBwdWJs aWNhdGlvbiB0aGF0Ci0JICogc2FpZCBBTEwgVEFCTEVTIElOIFNDSEVNQSB0aGVuIGFsbCBy b3ctZmlsdGVyaW5nIGlzIGlnbm9yZWQuCisJICogRm9yIGluaXRpYWwgc3luY2hyb25pemF0 aW9uLCByb3cgZmlsdGVyaW5nIGNhbiBiZSBpZ25vcmVkIGluIDIgY2FzZXM6CiAJICoKLQkg KiBHZXQgcmVsYXRpb24gcXVhbC4gRElTVElOQ1QgYXZvaWRzIHRoZSBzYW1lIGV4cHJlc3Np b24gb2YgYSB0YWJsZSBpbgotCSAqIG11bHRpcGxlIHB1YmxpY2F0aW9ucyBmcm9tIGJlaW5n IGluY2x1ZGVkIG11bHRpcGxlIHRpbWVzIGluIHRoZSBmaW5hbAotCSAqIGV4cHJlc3Npb24u CisJICogMSkgb25lIG9mIHRoZSBzdWJzY3JpYmVkIHB1YmxpY2F0aW9ucyBoYXMgcHViYWxs dGFibGVzIHNldCB0byB0cnVlCisJICogMikgb25lIG9mIHRoZSBzdWJzY3JpYmVkIHB1Ymxp Y2F0aW9ucyBpcyBkZWNsYXJlZCBhcyBBTEwgVEFCTEVTIElOCisJICogU0NIRU1BIHRoYXQg aW5jbHVkZXMgdGhpcyByZWxhdGlvbgorCSAqCisJICogVGhlc2UgMiBjYXNlcyBkb24ndCBh bGxvdyByb3cgZmlsdGVyIGV4cHJlc3Npb25zLCBzbyBhIGFic2VuY2Ugb2YKKwkgKiByZWxh dGlvbiByb3cgZmlsdGVyIGV4cHJlc3Npb25zIGlzIGEgc3VmZmljaWVudCBjb25kaXRpb24g dG8gY29weSB0aGUKKwkgKiBlbnRpcmUgdGFibGUsIGFsdGhvdWdoIG90aGVyIHB1YmxpY2F0 aW9ucyBjb250YWluIGEgcm93IGZpbHRlciBmb3IgdGhpcworCSAqIHJlbGF0aW9uLgogCSAq LwogCWlmICh3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubikg Pj0gMTUwMDAwKQogCXsKQEAgLTgzMSwyMyArODM2LDIzIEBAIGZldGNoX3JlbW90ZV90YWJs ZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsCiAJCQlhcHBlbmRTdHJpbmdJ bmZvU3RyaW5nKCZwdWJfbmFtZXMsIHF1b3RlX2xpdGVyYWxfY3N0cihwdWJuYW1lKSk7CiAJ CX0KIAotCQkvKiBDaGVjayBmb3Igcm93LWZpbHRlcnMgKi8KKwkJLyogQ2hlY2sgZm9yIHJv dyBmaWx0ZXJzLiAqLwogCQlyZXNldFN0cmluZ0luZm8oJmNtZCk7CiAJCWFwcGVuZFN0cmlu Z0luZm8oJmNtZCwKLQkJCQkJCSAiU0VMRUNUIERJU1RJTkNUIHBnX2dldF9leHByKHBycXVh bCwgcHJyZWxpZCkgIgotCQkJCQkJICIgIEZST00gcGdfcHVibGljYXRpb24gcCAiCi0JCQkJ CQkgIiAgSU5ORVIgSk9JTiBwZ19wdWJsaWNhdGlvbl9yZWwgcHIgT04gKHAub2lkID0gcHIu cHJwdWJpZCkgIgorCQkJCQkJICJTRUxFQ1QgRElTVElOQ1QgcGdfY2F0YWxvZy5wZ19nZXRf ZXhwcihwci5wcnF1YWwsIHByLnBycmVsaWQpICIKKwkJCQkJCSAiICBGUk9NIHBnX2NhdGFs b2cucGdfcHVibGljYXRpb24gcCAiCisJCQkJCQkgIiAgSU5ORVIgSk9JTiBwZ19jYXRhbG9n LnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiAocC5vaWQgPSBwci5wcnB1YmlkKSAiCiAJCQkJ CQkgIiAgICBXSEVSRSBwci5wcnJlbGlkID0gJXUgQU5EIHAucHVibmFtZSBJTiAoICVzICkg IgotCQkJCQkJICIgICAgQU5EIE5PVCAoc2VsZWN0IGJvb2xfb3IocHViYWxsdGFibGVzKSAi Ci0JCQkJCQkgIiAgICAgIEZST00gcGdfcHVibGljYXRpb24gIgotCQkJCQkJICIgICAgICBX SEVSRSBwdWJuYW1lIGluICggJXMgKSkgIgotCQkJCQkJICIgICAgQU5EIChTRUxFQ1QgY291 bnQoMSk9MCAiCi0JCQkJCQkgIiAgICAgIEZST00gcGdfcHVibGljYXRpb25fbmFtZXNwYWNl IHBuLCBwZ19jbGFzcyBjICIKLQkJCQkJCSAiICAgICAgV0hFUkUgYy5vaWQgPSAldSBBTkQg Yy5yZWxuYW1lc3BhY2UgPSBwbi5wbm5zcGlkKSIsCisJCQkJCQkgIiAgICBBTkQgTk9UIChT RUxFQ1QgcGdfY2F0YWxvZy5ib29sX29yKGIucHViYWxsdGFibGVzKSAiCisJCQkJCQkgIiAg ICAgIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBiICIKKwkJCQkJCSAiICAgICAg V0hFUkUgYi5wdWJuYW1lIElOICggJXMgKSkgIgorCQkJCQkJICIgICAgQU5EIE5PVCBFWElT VFMoICIKKwkJCQkJCSAiICAgICAgU0VMRUNUIDEgRlJPTSBwZ19jYXRhbG9nLnBnX3B1Ymxp Y2F0aW9uX25hbWVzcGFjZSBwbiAiCisJCQkJCQkgIiAgICAgIElOTkVSIEpPSU4gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjIE9OIChwbi5wbm5zcGlkID0gYy5yZWxuYW1lc3BhY2UpICIKKwkJ CQkJCSAiICAgICAgV0hFUkUgYy5vaWQgPSBwci5wcnJlbGlkKSIsCiAJCQkJCQlscmVsLT5y ZW1vdGVpZCwKIAkJCQkJCXB1Yl9uYW1lcy5kYXRhLAotCQkJCQkJcHViX25hbWVzLmRhdGEs Ci0JCQkJCQlscmVsLT5yZW1vdGVpZCk7CisJCQkJCQlwdWJfbmFtZXMuZGF0YSk7CiAKIAkJ cmVzID0gd2FscmN2X2V4ZWMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgY21kLmRhdGEsIDEs IHF1YWxSb3cpOwogCkBAIC04NjUsNyArODcwLDcgQEAgZmV0Y2hfcmVtb3RlX3RhYmxlX2lu Zm8oY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwKIAkJc2xvdCA9IE1ha2VTaW5nbGVU dXBsZVRhYmxlU2xvdChyZXMtPnR1cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CiAJ CXdoaWxlICh0dXBsZXN0b3JlX2dldHR1cGxlc2xvdChyZXMtPnR1cGxlc3RvcmUsIHRydWUs IGZhbHNlLCBzbG90KSkKIAkJewotCQkJRGF0dW0gcmYgPSBzbG90X2dldGF0dHIoc2xvdCwg MSwgJmlzbnVsbCk7CisJCQlEYXR1bQkJcmYgPSBzbG90X2dldGF0dHIoc2xvdCwgMSwgJmlz bnVsbCk7CiAKIAkJCWlmICghaXNudWxsKQogCQkJCSpxdWFsID0gbGFwcGVuZCgqcXVhbCwg bWFrZVN0cmluZyhUZXh0RGF0dW1HZXRDU3RyaW5nKHJmKSkpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggYTkyNmZmYzU2Ni4uMzBh NmFkYjJkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jCkBAIC04MDUsMTAgKzgwNSwxMSBAQCBwZ291dHB1dF9yb3dfZmlsdGVyX2luaXQo UEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbiwgUmVsYXRpb25TeW5jRW50 cgogCQkgKiB0aGVyZSBhcmUgbXVsdGlwbGUgbGlzdHMgKG9uZSBmb3IgZWFjaCBvcGVyYXRp b24pIHdoaWNoIHJvdyBmaWx0ZXJzCiAJCSAqIHdpbGwgYmUgYXBwZW5kZWQuCiAJCSAqCi0J CSAqIE5PVEU6IEZPUiBBTEwgVEFCTEVTIGltcGxpZXMgInVzZSBubyBmaWx0ZXJzIiBzbyBp dCB0YWtlcyBwcmVjZWRlbmNlCisJCSAqIE5PVEU6IEZPUiBBTEwgVEFCTEVTIGltcGxpZXMg ImRvbid0IHVzZSByb3cgZmlsdGVyIGV4cHJlc3Npb24iIHNvIGl0CisJCSAqIHRha2VzIHBy ZWNlZGVuY2UuCiAJCSAqCi0JCSAqIE5PVEU6IEFMTCBUQUJMRVMgSU4gU0NIRU1BIGFsc28g aW1wbGllcyAidXNlIG5vdCBmaWx0ZXJzIiBpZiB0aGUKLQkJICogdGFibGUgaXMgYSBtZW1i ZXIgb2YgdGhlIHNhbWUgc2NoZW1hLgorCQkgKiBOT1RFOiBBTEwgVEFCTEVTIElOIFNDSEVN QSBpbXBsaWVzICJkb24ndCB1c2Ugcm93IGZpbHRlciBleHByZXNzaW9uIgorCQkgKiBpZiB0 aGUgc2NoZW1hIGlzIHRoZSBzYW1lIGFzIHRoZSB0YWJsZSBzY2hlbWEuCiAJCSAqLwogCQlm b3JlYWNoKGxjLCBkYXRhLT5wdWJsaWNhdGlvbnMpCiAJCXsKQEAgLTgyMCw4ICs4MjEsOCBA QCBwZ291dHB1dF9yb3dfZmlsdGVyX2luaXQoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlv biByZWxhdGlvbiwgUmVsYXRpb25TeW5jRW50cgogCiAJCQkvKgogCQkJICogSWYgdGhlIHB1 YmxpY2F0aW9uIGlzIEZPUiBBTEwgVEFCTEVTIHRoZW4gaXQgaXMgdHJlYXRlZCB0aGUgc2Ft ZQotCQkJICogYXMgaWYgdGhpcyB0YWJsZSBoYXMgbm8gZmlsdGVycyAoZXZlbiBpZiBmb3Ig c29tZSBvdGhlcgotCQkJICogcHVibGljYXRpb24gaXQgZG9lcykuCisJCQkgKiBhcyBpZiB0 aGlzIHRhYmxlIGhhcyBubyByb3cgZmlsdGVycyAoZXZlbiBpZiBmb3Igb3RoZXIKKwkJCSAq IHB1YmxpY2F0aW9ucyBpdCBkb2VzKS4KIAkJCSAqLwogCQkJaWYgKHB1Yi0+YWxsdGFibGVz KQogCQkJewpAQCAtODMyLDE3ICs4MzMsMTkgQEAgcGdvdXRwdXRfcm93X2ZpbHRlcl9pbml0 KFBHT3V0cHV0RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24sIFJlbGF0aW9uU3luY0Vu dHIKIAkJCQlpZiAocHViLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSkKIAkJCQkJbm9fZmlsdGVy W2lkeF9kZWxdID0gdHJ1ZTsKIAotCQkJCS8qIFF1aWNrIGV4aXQgbG9vcCBpZiBhbGwgcHVi YWN0aW9ucyBoYXZlIG5vIHJvdy1maWx0ZXIuICovCisJCQkJLyogUXVpY2sgZXhpdCBsb29w IGlmIGFsbCBwdWJhY3Rpb25zIGhhdmUgbm8gcm93IGZpbHRlci4gKi8KIAkJCQlpZiAobm9f ZmlsdGVyW2lkeF9pbnNdICYmIG5vX2ZpbHRlcltpZHhfdXBkXSAmJiBub19maWx0ZXJbaWR4 X2RlbF0pCiAJCQkJCWJyZWFrOwogCisJCQkJLyogTm8gYWRkaXRpb25hbCB3b3JrIGZvciB0 aGlzIHB1YmxpY2F0aW9uLiBOZXh0IG9uZS4gKi8KIAkJCQljb250aW51ZTsKIAkJCX0KIAog CQkJLyoKLQkJCSAqIElmIHRoZSBwdWJsaWNhdGlvbiBpcyBGT1IgQUxMIFRBQkxFUyBJTiBT Q0hFTUEgYW5kIGl0IG92ZXJsYXBzIHdpdGggdGhlCi0JCQkgKiBjdXJyZW50IHJlbGF0aW9u IGluIHRoZSBzYW1lIHNjaGVtYSB0aGVuIHRoaXMgaXMgYWxzbyB0cmVhdGVkIHNhbWUgYXMg aWYKLQkJCSAqIHRoaXMgdGFibGUgaGFzIG5vIGZpbHRlcnMgKGV2ZW4gaWYgZm9yIHNvbWUg b3RoZXIgcHVibGljYXRpb24gaXQgZG9lcykuCisJCQkgKiBJZiB0aGUgcHVibGljYXRpb24g aXMgRk9SIEFMTCBUQUJMRVMgSU4gU0NIRU1BIGFuZCBpdCBvdmVybGFwcworCQkJICogd2l0 aCB0aGUgY3VycmVudCByZWxhdGlvbiBpbiB0aGUgc2FtZSBzY2hlbWEgdGhlbiB0aGlzIGlz IGFsc28KKwkJCSAqIHRyZWF0ZWQgc2FtZSBhcyBpZiB0aGlzIHRhYmxlIGhhcyBubyByb3cg ZmlsdGVycyAoZXZlbiBpZiBmb3IKKwkJCSAqIG90aGVyIHB1YmxpY2F0aW9ucyBpdCBkb2Vz KS4KIAkJCSAqLwogCQkJc2NoZW1hcmVsaWRzID0gR2V0QWxsU2NoZW1hUHVibGljYXRpb25S ZWxhdGlvbnMocHViLT5vaWQsCiAJCQkJCQkJCQkJCQkJCQlwdWItPnB1YnZpYXJvb3QgPwpA QCAtODU5LDEwICs4NjIsMTEgQEAgcGdvdXRwdXRfcm93X2ZpbHRlcl9pbml0KFBHT3V0cHV0 RGF0YSAqZGF0YSwgUmVsYXRpb24gcmVsYXRpb24sIFJlbGF0aW9uU3luY0VudHIKIAogCQkJ CWxpc3RfZnJlZShzY2hlbWFyZWxpZHMpOwogCi0JCQkJLyogUXVpY2sgZXhpdCBsb29wIGlm IGFsbCBwdWJhY3Rpb25zIGhhdmUgbm8gcm93LWZpbHRlci4gKi8KKwkJCQkvKiBRdWljayBl eGl0IGxvb3AgaWYgYWxsIHB1YmFjdGlvbnMgaGF2ZSBubyByb3cgZmlsdGVyLiAqLwogCQkJ CWlmIChub19maWx0ZXJbaWR4X2luc10gJiYgbm9fZmlsdGVyW2lkeF91cGRdICYmIG5vX2Zp bHRlcltpZHhfZGVsXSkKIAkJCQkJYnJlYWs7CiAKKwkJCQkvKiBObyBhZGRpdGlvbmFsIHdv cmsgZm9yIHRoaXMgcHVibGljYXRpb24uIE5leHQgb25lLiAqLwogCQkJCWNvbnRpbnVlOwog CQkJfQogCQkJbGlzdF9mcmVlKHNjaGVtYXJlbGlkcyk7Ci0tIAoyLjIwLjEKCg== --04cc277225e34ea480c6f61c2553d463--