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 1nAIqJ-0001f7-EQ for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Jan 2022 21:50:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nAIqI-0001wx-BG for pgsql-hackers@arkaria.postgresql.org; Wed, 19 Jan 2022 21:50:10 +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 1nAIqH-0001wn-Vl for pgsql-hackers@lists.postgresql.org; Wed, 19 Jan 2022 21:50:10 +0000 Received: from mxout1.routing.net ([2a03:2900:1:a::a]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nAIqF-0005SP-7f for pgsql-hackers@postgresql.org; Wed, 19 Jan 2022 21:50:09 +0000 Received: from mxbox1.masterlogin.de (unknown [192.168.10.88]) by mxout1.routing.net (Postfix) with ESMTP id 0D2CC401C6; Wed, 19 Jan 2022 21:50:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de; s=20200217; t=1642629006; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=kqf4htjtPsBVDhXMHR7YFCvgndTr/4fd7jgrQtod4ms=; b=HIaLUefVJw+Cn4aOj70nEF7A8DUwxHkAcv2TYfX9n4UxtRd4V0ovCRTs3leX3BfwYTZXaR TzaRMI8rbS6ljFLTHSFtCKFOAAZsIQbr5lrHJNKFjT6ZoOj5+ZvRVW3RHHPx0KJKVhBoKi emhIRcARiT0EZKISM9p3BXPOCDTqsIE= Received: from remote.index.de (i68970D96.versanet.de [104.151.13.150]) by mxbox1.masterlogin.de (Postfix) with ESMTPSA id 75746402CA; Wed, 19 Jan 2022 21:50:05 +0000 (UTC) Received: from acedia.index-gruppe.local (192.168.54.121) by invidia.index-gruppe.local (192.168.54.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Wed, 19 Jan 2022 22:50:02 +0100 Received: from acedia.index-gruppe.local ([fe80::501:b638:b4b6:57d1]) by acedia.index-gruppe.local ([fe80::501:b638:b4b6:57d1%13]) with mapi id 15.01.2308.021; Wed, 19 Jan 2022 22:50:01 +0100 From: Arne Roland To: Alvaro Herrera , Julien Rouhaud CC: pgsql-hackers Subject: Re: missing indexes in indexlist with partitioned tables Thread-Topic: missing indexes in indexlist with partitioned tables Thread-Index: AQHXsJoeXw6ojQG4NkOLdiX4KUBdD6vkTOpcgIAWJQCAA2SO7oAAbRh////16wCAADDYxYAAo/oAgABsDQCAAiIn7oAADRXl Date: Wed, 19 Jan 2022 21:50:01 +0000 Message-ID: <673783be909248ff9cf3a463da14e1a1@index.de> References: <20220118065750.v5zigpuisljc6jmk@jrouhaud>,<202201181324.idvthmrhbtf5@alvherre.pgsql>,<225acbe1b6e242df8025ea6e75de2158@index.de> In-Reply-To: <225acbe1b6e242df8025ea6e75de2158@index.de> Accept-Language: en-US, de-DE Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.255.1.33] Content-Type: multipart/mixed; boundary="_004_673783be909248ff9cf3a463da14e1a1indexde_" MIME-Version: 1.0 X-Mail-ID: 205cc3a1-0ce1-4f2f-bb42-16574f3cc00d List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_673783be909248ff9cf3a463da14e1a1indexde_ Content-Type: multipart/alternative; boundary="_000_673783be909248ff9cf3a463da14e1a1indexde_" --_000_673783be909248ff9cf3a463da14e1a1indexde_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi, I came up with a slightly more intuitive way to force the different outcome= for the fractional test, that does hardly change anything. I'm not sure, whether the differentiation between fract_x and fract_t is wo= rth it, since there shouldn't be any difference, but as mentioned before I = added it for potential future clarity. Thanks for your feedback again! Regards Arne ________________________________ From: Arne Roland Sent: Wednesday, January 19, 2022 10:13:55 PM To: Alvaro Herrera; Julien Rouhaud Cc: pgsql-hackers Subject: Re: missing indexes in indexlist with partitioned tables Hi! > From: Alvaro Herrera > [...] > Hmm, these plan changes look valid to me. A left self-join using the > primary key column? That looks optimizable all right. > [...] > What I still don't know is whether this patch is actually desirable or > not. If the only cases it affects is self-joins, is there much actual > value? This is not really about self joins. That was just the most simple example,= because otherwise we need a second table. It's unique, it's not relevant whether it's the same table. In most cases i= t won't. I was talking about join pruning. > I suspect that the author of partition-wise joins would want to change > these queries so that whatever was being tested by these self-joins is > tested by some other means (maybe just create an identical partitioned > table via CREATE TABLE fract_t2 ... ; INSERT INTO fract_t2 SELECT FROM > fract_t). But at the same time, the author of this patch should Your suggestion doesn't work, because with my patch we solve that case as w= ell. We solve the general join pruning case. If we make the index non-uniqu= e however, we should be able to test the fractional case the same way. > b) add some test cases to verify that his desired > behavior is tested somewhere, not just in a test case that's > incidentally broken by his patch. My patch already includes such a test, look at @@ -90,6 +90,13 @@ src/test/= regress/sql/partition_join.sql Since the selfjoin part was confusing to you, it might be worthwhile to do = test that with two different tables. While I see no need to test in that wa= y, I will adjust the patch so. Just to make it more clear for people lookin= g at those tests in the future. a) make > sure that the submitted patch updates these test results so that the > test pass [...] Just for the record: I did run the tests, but I did miss that the commit of= Tomas fix for fractional optimization is already on the master. Please not= e that this is a very new test case from a patch committed less than one we= ek ago. I'm glad Julien Rouhaud pointed out, that Tomas patch is committed it by no= w. That was very helpful to me, as I can now integrate the two tests. @=C1lvaro Herrera: If you want to help me, please don't put forward an abstract list of respon= sibilities. If anything I obviously need practical help, on how I can catch= on recent changes quicker and without manual intervention. I don't have a = modified buildfarm animal running, that tries to apply my patch and run reg= ression tests for my patch on a daily basis. Is there a simple way for me to check for that? I will probably integrate those two tests, since they can work of similar s= tructures without need to recreate the tables again and again. I have clear= understanding how that new test works. I have to attend a few calls now, b= ut I should be able to update the tests later. Regards Arne --_000_673783be909248ff9cf3a463da14e1a1indexde_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi,


I came up with a slightly more intuitive way to force the different outc= ome for the fractional test, that does hardly change anything.


I'm not sure, whether the differentiation between fract_x a= nd fract_t is worth it, since there shouldn't be any difference, but as mentio= ned before I added it for potential future clarity.


Thanks for your feedback again!


Regards

Arne



From: Arne Roland
Sent: Wednesday, January 19, 2022 10:13:55 PM
To: Alvaro Herrera; Julien Rouhaud
Cc: pgsql-hackers
Subject: Re: missing indexes in indexlist with partitioned tables
 

Hi!

> From: Alvaro Herrera <alvherre@alvh.no-ip.org>
> [...]
> Hmm, these plan changes look valid to me.  A left self-join using= the
> primary key column?  That looks optimizable all right.
> [...]
> What I still don't know is whether this patch is actually desirable or=
> not.  If the only cases it affects is self-joins, is there much a= ctual
> value?

This is not really about self joins. That was just the most simple example,= because otherwise we need a second table.
It's unique, it's not relevant whether it's the same table. In most cases i= t won't. I was talking about join pruning.

> I suspect that the author of partition-wise joins would want to c= hange
> these queries so that whatever was being tested by these self-joins is=
> tested by some other means (maybe just create an identical partitioned=
> table via CREATE TABLE fract_t2 ... ; INSERT INTO fract_t2 SELECT FROM=
> fract_t).  But at the same time, the author of this patch should<= br>
Your suggestion doesn't work, because with my patch we solve that case as w= ell. We solve the general join pruning case. If we make the index non-uniqu= e however, we should be able to test the fractional case the same way.

> b) add some test cases to verify that his desired
> behavior is tested somewhere, not just in a test case that's
> incidentally broken by his patch.

My patch already includes such a test, look at @@ -90,6 +90,13 @@ src/t= est/regress/sql/partition_join.sql
Since the selfjoin part was confusing to you, it might be worthwhile t= o do test that with two different tables. While I see no need to test in th= at way, I will adjust the patch so. Just to make it more clear for people l= ooking at those tests in the future.

a) make
> sure that the submitted patch updates these test results so that = the
> test pass [...]

Just for the record: I did run the tests, but I did miss that the commit of= Tomas fix for fractional optimization is already on the master. Please not= e that this is a very new test case from a patch committed less than one we= ek ago.

I'm glad Julien Rouhaud pointed out, that Tomas patch is committed it by no= w. That was very helpful to me, as I can now integrate the two tests.

@=C1lvaro Herrera:
If you want to help me, please don't put forward an abstract list of respon= sibilities. If anything I obviously need practical help, on how I can catch= on recent changes quicker and without manual intervention. I don't have a = modified buildfarm animal running, that tries to apply my patch and run regression tests for my patch on a da= ily basis.
Is there a simple way for me to check for that?

I will probably integrate those two tests, since they can work of similar s= tructures without need to recreate the tables again and again. I have clear= understanding how that new test works. I have to attend a few calls now, b= ut I should be able to update the tests later.

Regards
Arne

--_000_673783be909248ff9cf3a463da14e1a1indexde_-- --_004_673783be909248ff9cf3a463da14e1a1indexde_ Content-Type: text/x-patch; name="0004-partIndexlistClean.patch" Content-Description: 0004-partIndexlistClean.patch Content-Disposition: attachment; filename="0004-partIndexlistClean.patch"; size=19764; creation-date="Wed, 19 Jan 2022 21:46:26 GMT"; modification-date="Wed, 19 Jan 2022 21:46:26 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IDBlZjcwYWQ3ZjEuLmZlNTA5 MTk2MzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwpAQCAtMzUwNCw3ICsz NTA0LDcgQEAgcmVsYXRpb25faGFzX3VuaXF1ZV9pbmRleF9mb3IoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAlBc3NlcnQobGlzdF9sZW5ndGgoZXhwcmxpc3QpID09IGxpc3Rf bGVuZ3RoKG9wcmxpc3QpKTsKIAogCS8qIFNob3J0LWNpcmN1aXQgaWYgbm8gaW5kZXhlcy4uLiAq LwotCWlmIChyZWwtPmluZGV4bGlzdCA9PSBOSUwpCisJaWYgKHJlbC0+aW5kZXhsaXN0ID09IE5J TCAmJiByZWwtPnBhcnRJbmRleGxpc3QgPT0gTklMKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKgpA QCAtMzU0OSw3ICszNTQ5LDcgQEAgcmVsYXRpb25faGFzX3VuaXF1ZV9pbmRleF9mb3IoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogRXhh bWluZSBlYWNoIGluZGV4IG9mIHRoZSByZWxhdGlvbiAuLi4gKi8KLQlmb3JlYWNoKGljLCByZWwt PmluZGV4bGlzdCkKKwlmb3JlYWNoKGljLCBsaXN0X2NvbmNhdChyZWwtPmluZGV4bGlzdCwgcmVs LT5wYXJ0SW5kZXhsaXN0KSkKIAl7CiAJCUluZGV4T3B0SW5mbyAqaW5kID0gKEluZGV4T3B0SW5m byAqKSBsZmlyc3QoaWMpOwogCQlpbnQJCQljOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9h bmFseXplam9pbnMuYwppbmRleCAzMzdmNDcwZDU4Li5iMDRiM2Y4OGFkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYwpAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1 ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNpbmNsdWRl ICJub2Rlcy9ub2Rlcy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1c2VzLmgiCiAjaW5jbHVk ZSAib3B0aW1pemVyL2pvaW5pbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5o IgpAQCAtNTk4LDcgKzU5OSw3IEBAIHJlbF9zdXBwb3J0c19kaXN0aW5jdG5lc3MoUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkKIAkJICovCiAJCUxpc3RDZWxsICAgKmxjOwogCi0J CWZvcmVhY2gobGMsIHJlbC0+aW5kZXhsaXN0KQorCQlmb3JlYWNoKGxjLCBsaXN0X2NvbmNhdChy ZWwtPmluZGV4bGlzdCwgcmVsLT5wYXJ0SW5kZXhsaXN0KSkKIAkJewogCQkJSW5kZXhPcHRJbmZv ICppbmQgPSAoSW5kZXhPcHRJbmZvICopIGxmaXJzdChsYyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91 dGlsL3BsYW5jYXQuYwppbmRleCBhNTAwMmFkODk1Li5kYjZjM2YyOTEyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3V0aWwvcGxhbmNhdC5jCkBAIC0xMTYsOCArMTE2LDggQEAgZ2V0X3JlbGF0aW9uX2lu Zm8oUGxhbm5lckluZm8gKnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVu dCwKIHsKIAlJbmRleAkJdmFybm8gPSByZWwtPnJlbGlkOwogCVJlbGF0aW9uCXJlbGF0aW9uOwot CWJvb2wJCWhhc2luZGV4OwogCUxpc3QJICAgKmluZGV4aW5mb3MgPSBOSUw7CisJTGlzdAkgICAq cGFydEluZGV4aW5mb3MgPSBOSUw7CiAKIAkvKgogCSAqIFdlIG5lZWQgbm90IGxvY2sgdGhlIHJl bGF0aW9uIHNpbmNlIGl0IHdhcyBhbHJlYWR5IGxvY2tlZCwgZWl0aGVyIGJ5CkBAIC0xNTQsMTcg KzE1NCw4IEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5uZXJJbmZvICpyb290LCBPaWQgcmVsYXRp b25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJLyogUmV0cmlldmUgdGhlIHBhcmFsbGVsX3dv cmtlcnMgcmVsb3B0aW9uLCBvciAtMSBpZiBub3Qgc2V0LiAqLwogCXJlbC0+cmVsX3BhcmFsbGVs X3dvcmtlcnMgPSBSZWxhdGlvbkdldFBhcmFsbGVsV29ya2VycyhyZWxhdGlvbiwgLTEpOwogCi0J LyoKLQkgKiBNYWtlIGxpc3Qgb2YgaW5kZXhlcy4gIElnbm9yZSBpbmRleGVzIG9uIHN5c3RlbSBj YXRhbG9ncyBpZiB0b2xkIHRvLgotCSAqIERvbid0IGJvdGhlciB3aXRoIGluZGV4ZXMgZm9yIGFu IGluaGVyaXRhbmNlIHBhcmVudCwgZWl0aGVyLgotCSAqLwotCWlmIChpbmhwYXJlbnQgfHwKLQkJ KElnbm9yZVN5c3RlbUluZGV4ZXMgJiYgSXNTeXN0ZW1SZWxhdGlvbihyZWxhdGlvbikpKQotCQlo YXNpbmRleCA9IGZhbHNlOwotCWVsc2UKLQkJaGFzaW5kZXggPSByZWxhdGlvbi0+cmRfcmVsLT5y ZWxoYXNpbmRleDsKLQotCWlmIChoYXNpbmRleCkKKwkvKiBNYWtlIGxpc3Qgb2YgaW5kZXhlcy4g SWdub3JlIGluZGV4ZXMgb24gc3lzdGVtIGNhdGFsb2dzIGlmIHRvbGQgdG8uICovCisJaWYgKCEo SWdub3JlU3lzdGVtSW5kZXhlcyAmJiBJc1N5c3RlbVJlbGF0aW9uKHJlbGF0aW9uKSkgJiYgcmVs YXRpb24tPnJkX3JlbC0+cmVsaGFzaW5kZXgpCiAJewogCQlMaXN0CSAgICppbmRleG9pZGxpc3Q7 CiAJCUxPQ0tNT0RFCWxtb2RlOwpAQCAtMjEzLDEwICsyMDQsMTIgQEAgZ2V0X3JlbGF0aW9uX2lu Zm8oUGxhbm5lckluZm8gKnJvb3QsIE9pZCByZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVu dCwKIAkJCX0KIAogCQkJLyoKLQkJCSAqIElnbm9yZSBwYXJ0aXRpb25lZCBpbmRleGVzLCBzaW5j ZSB0aGV5IGFyZSBub3QgdXNhYmxlIGZvcgotCQkJICogcXVlcmllcy4KKwkJCSAqIERvbid0IGFk ZCBwYXJ0aXRpb25lZCBpbmRleGVzIHRvIHRoZSBpbmRleGxpc3QsIHNpbmNlIHRoZXkgYXJlCisJ CQkgKiBub3QgdXNhYmxlIGJ5IHRoZSBleGVjdXRvci4gSWYgdGhleSBhcmUgdW5pcXVlIGFkZCB0 aGVtIHRvIHRoZQorCQkJICogcGFydGluZGV4bGlzdCBpbnN0ZWFkLCB0byB1c2UgZm9yIGZ1cnRo ZXIgcHJ1bmluZy4gSWYgdGhleQorCQkJICogYXJlbid0IHRoYXQgZWl0aGVyLCBzaW1wbHkgc2tp cCB0aGVtLgogCQkJICovCi0JCQlpZiAoaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCisJCQlpZiAoaW5ocGFyZW50ICYmICghaW5kZXgt PmluZGlzdW5pcXVlIHx8IGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5E X1BBUlRJVElPTkVEX0lOREVYKSkKIAkJCXsKIAkJCQlpbmRleF9jbG9zZShpbmRleFJlbGF0aW9u LCBOb0xvY2spOwogCQkJCWNvbnRpbnVlOwpAQCAtMjY0LDcgKzI1Nyw0MCBAQCBnZXRfcmVsYXRp b25faW5mbyhQbGFubmVySW5mbyAqcm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJvb2wgaW5o cGFyZW50LAogCQkJCWluZm8tPmluZGV4Y29sbGF0aW9uc1tpXSA9IGluZGV4UmVsYXRpb24tPnJk X2luZGNvbGxhdGlvbltpXTsKIAkJCX0KIAotCQkJaW5mby0+cmVsYW0gPSBpbmRleFJlbGF0aW9u LT5yZF9yZWwtPnJlbGFtOworCQkJLyoKKwkJCSAqIEZldGNoIHRoZSBpbmRleCBleHByZXNzaW9u cyBhbmQgcHJlZGljYXRlLCBpZiBhbnkuICBXZSBtdXN0CisJCQkgKiBtb2RpZnkgdGhlIGNvcGll cyB3ZSBvYnRhaW4gZnJvbSB0aGUgcmVsY2FjaGUgdG8gaGF2ZSB0aGUKKwkJCSAqIGNvcnJlY3Qg dmFybm8gZm9yIHRoZSBwYXJlbnQgcmVsYXRpb24sIHNvIHRoYXQgdGhleSBtYXRjaCB1cAorCQkJ ICogY29ycmVjdGx5IGFnYWluc3QgcXVhbCBjbGF1c2VzLgorCQkJICovCisJCQlpbmZvLT5pbmRl eHBycyA9IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbGF0aW9uKTsKKwkJCWlu Zm8tPmluZHByZWQgPSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsYXRpb24pOwor CQkJaWYgKGluZm8tPmluZGV4cHJzICYmIHZhcm5vICE9IDEpCisJCQkJQ2hhbmdlVmFyTm9kZXMo KE5vZGUgKikgaW5mby0+aW5kZXhwcnMsIDEsIHZhcm5vLCAwKTsKKwkJCWlmIChpbmZvLT5pbmRw cmVkICYmIHZhcm5vICE9IDEpCisJCQkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUgKikgaW5mby0+aW5k cHJlZCwgMSwgdmFybm8sIDApOworCisJCQlpbmZvLT51bmlxdWUgPSBpbmRleC0+aW5kaXN1bmlx dWU7CisJCQlpbmZvLT5pbW1lZGlhdGUgPSBpbmRleC0+aW5kaW1tZWRpYXRlOworCisJCQkvKgor CQkJICogRG9uJ3QgYWRkIHBhcnRpdGlvbmVkIGluZGV4ZXMgdG8gdGhlIGluZGV4bGlzdCwgYWRk IHRoZW0gdG8gdGhlCisJCQkgKiBwYXJ0aW5kZXhsaXN0IGluc3RlYWQsIHNpbmNlIHRoZXkgYXJl IG5vdCB1c2FibGUgYnkgdGhlCisJCQkgKiBleGVjdXRvci4KKwkJCSAqLworCQkJaWYgKGluZGV4 UmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYKQor CQkJeworCQkJCWluZGV4X2Nsb3NlKGluZGV4UmVsYXRpb24sIE5vTG9jayk7CisJCQkJcGFydElu ZGV4aW5mb3MgPSBsYXBwZW5kKHBhcnRJbmRleGluZm9zLCBpbmZvKTsKKwkJCQljb250aW51ZTsK KwkJCX0KKworCQkJaW5mby0+aHlwb3RoZXRpY2FsID0gZmFsc2U7CisJCQlpbmZvLT5pbmRyZXN0 cmljdGluZm8gPSBOSUw7CS8qIHNldCBsYXRlciwgaW4gaW5keHBhdGguYyAqLworCQkJaW5mby0+ cHJlZE9LID0gZmFsc2U7CS8qIHNldCBsYXRlciwgaW4gaW5keHBhdGguYyAqLworCisJCQkvKiBC dWlsZCB0YXJnZXRsaXN0IHVzaW5nIHRoZSBjb21wbGV0ZWQgaW5kZXhwcnMgZGF0YSAqLworCQkJ aW5mby0+aW5kZXh0bGlzdCA9IGJ1aWxkX2luZGV4X3RsaXN0KHJvb3QsIGluZm8sIHJlbGF0aW9u KTsKIAogCQkJLyogV2UgY29weSBqdXN0IHRoZSBmaWVsZHMgd2UgbmVlZCwgbm90IGFsbCBvZiBy ZF9pbmRhbSAqLwogCQkJYW1yb3V0aW5lID0gaW5kZXhSZWxhdGlvbi0+cmRfaW5kYW07CkBAIC0y ODQsNiArMzEwLDggQEAgZ2V0X3JlbGF0aW9uX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIE9pZCBy ZWxhdGlvbk9iamVjdElkLCBib29sIGluaHBhcmVudCwKIAkJCS8qIEZldGNoIGluZGV4IG9wY2xh c3Mgb3B0aW9ucyAqLwogCQkJaW5mby0+b3BjbGFzc29wdGlvbnMgPSBSZWxhdGlvbkdldEluZGV4 QXR0T3B0aW9ucyhpbmRleFJlbGF0aW9uLCB0cnVlKTsKIAorCQkJaW5mby0+cmVsYW0gPSBpbmRl eFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFtOworCiAJCQkvKgogCQkJICogRmV0Y2ggdGhlIG9yZGVy aW5nIGluZm9ybWF0aW9uIGZvciB0aGUgaW5kZXgsIGlmIGFueS4KIAkJCSAqLwpAQCAtMzcwLDI4 ICszOTgsNiBAQCBnZXRfcmVsYXRpb25faW5mbyhQbGFubmVySW5mbyAqcm9vdCwgT2lkIHJlbGF0 aW9uT2JqZWN0SWQsIGJvb2wgaW5ocGFyZW50LAogCQkJCWluZm8tPm51bGxzX2ZpcnN0ID0gTlVM TDsKIAkJCX0KIAotCQkJLyoKLQkJCSAqIEZldGNoIHRoZSBpbmRleCBleHByZXNzaW9ucyBhbmQg cHJlZGljYXRlLCBpZiBhbnkuICBXZSBtdXN0Ci0JCQkgKiBtb2RpZnkgdGhlIGNvcGllcyB3ZSBv YnRhaW4gZnJvbSB0aGUgcmVsY2FjaGUgdG8gaGF2ZSB0aGUKLQkJCSAqIGNvcnJlY3QgdmFybm8g Zm9yIHRoZSBwYXJlbnQgcmVsYXRpb24sIHNvIHRoYXQgdGhleSBtYXRjaCB1cAotCQkJICogY29y cmVjdGx5IGFnYWluc3QgcXVhbCBjbGF1c2VzLgotCQkJICovCi0JCQlpbmZvLT5pbmRleHBycyA9 IFJlbGF0aW9uR2V0SW5kZXhFeHByZXNzaW9ucyhpbmRleFJlbGF0aW9uKTsKLQkJCWluZm8tPmlu ZHByZWQgPSBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKGluZGV4UmVsYXRpb24pOwotCQkJaWYg KGluZm8tPmluZGV4cHJzICYmIHZhcm5vICE9IDEpCi0JCQkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUg KikgaW5mby0+aW5kZXhwcnMsIDEsIHZhcm5vLCAwKTsKLQkJCWlmIChpbmZvLT5pbmRwcmVkICYm IHZhcm5vICE9IDEpCi0JCQkJQ2hhbmdlVmFyTm9kZXMoKE5vZGUgKikgaW5mby0+aW5kcHJlZCwg MSwgdmFybm8sIDApOwotCi0JCQkvKiBCdWlsZCB0YXJnZXRsaXN0IHVzaW5nIHRoZSBjb21wbGV0 ZWQgaW5kZXhwcnMgZGF0YSAqLwotCQkJaW5mby0+aW5kZXh0bGlzdCA9IGJ1aWxkX2luZGV4X3Rs aXN0KHJvb3QsIGluZm8sIHJlbGF0aW9uKTsKLQotCQkJaW5mby0+aW5kcmVzdHJpY3RpbmZvID0g TklMOwkvKiBzZXQgbGF0ZXIsIGluIGluZHhwYXRoLmMgKi8KLQkJCWluZm8tPnByZWRPSyA9IGZh bHNlOwkvKiBzZXQgbGF0ZXIsIGluIGluZHhwYXRoLmMgKi8KLQkJCWluZm8tPnVuaXF1ZSA9IGlu ZGV4LT5pbmRpc3VuaXF1ZTsKLQkJCWluZm8tPmltbWVkaWF0ZSA9IGluZGV4LT5pbmRpbW1lZGlh dGU7Ci0JCQlpbmZvLT5oeXBvdGhldGljYWwgPSBmYWxzZTsKLQogCQkJLyoKIAkJCSAqIEVzdGlt YXRlIHRoZSBpbmRleCBzaXplLiAgSWYgaXQncyBub3QgYSBwYXJ0aWFsIGluZGV4LCB3ZSBsb2Nr CiAJCQkgKiB0aGUgbnVtYmVyLW9mLXR1cGxlcyBlc3RpbWF0ZSB0byBlcXVhbCB0aGUgcGFyZW50 IHRhYmxlOyBpZiBpdApAQCAtNDQxLDYgKzQ0Nyw3IEBAIGdldF9yZWxhdGlvbl9pbmZvKFBsYW5u ZXJJbmZvICpyb290LCBPaWQgcmVsYXRpb25PYmplY3RJZCwgYm9vbCBpbmhwYXJlbnQsCiAJfQog CiAJcmVsLT5pbmRleGxpc3QgPSBpbmRleGluZm9zOworCXJlbC0+cGFydEluZGV4bGlzdCA9IHBh cnRJbmRleGluZm9zOwogCiAJcmVsLT5zdGF0bGlzdCA9IGdldF9yZWxhdGlvbl9zdGF0aXN0aWNz KHJlbCwgcmVsYXRpb24pOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDFmMzg0NWIzZmUuLjRk MGVkOTM4YWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0zMzQsMTEgKzMzNCwxMSBAQCBzdHJ1 Y3QgUGxhbm5lckluZm8KIAogCU1lbW9yeUNvbnRleHQgcGxhbm5lcl9jeHQ7CS8qIGNvbnRleHQg aG9sZGluZyBQbGFubmVySW5mbyAqLwogCi0JQ2FyZGluYWxpdHkJdG90YWxfdGFibGVfcGFnZXM7 CS8qICMgb2YgcGFnZXMgaW4gYWxsIG5vbi1kdW1teSB0YWJsZXMgb2YKKwlDYXJkaW5hbGl0eSB0 b3RhbF90YWJsZV9wYWdlczsJLyogIyBvZiBwYWdlcyBpbiBhbGwgbm9uLWR1bW15IHRhYmxlcyBv ZgogCQkJCQkJCQkJICogcXVlcnkgKi8KIAotCVNlbGVjdGl2aXR5CXR1cGxlX2ZyYWN0aW9uOyAv KiB0dXBsZV9mcmFjdGlvbiBwYXNzZWQgdG8gcXVlcnlfcGxhbm5lciAqLwotCUNhcmRpbmFsaXR5 CWxpbWl0X3R1cGxlczsJLyogbGltaXRfdHVwbGVzIHBhc3NlZCB0byBxdWVyeV9wbGFubmVyICov CisJU2VsZWN0aXZpdHkgdHVwbGVfZnJhY3Rpb247IC8qIHR1cGxlX2ZyYWN0aW9uIHBhc3NlZCB0 byBxdWVyeV9wbGFubmVyICovCisJQ2FyZGluYWxpdHkgbGltaXRfdHVwbGVzOwkvKiBsaW1pdF90 dXBsZXMgcGFzc2VkIHRvIHF1ZXJ5X3BsYW5uZXIgKi8KIAogCUluZGV4CQlxdWFsX3NlY3VyaXR5 X2xldmVsOwkvKiBtaW5pbXVtIHNlY3VyaXR5X2xldmVsIGZvciBxdWFscyAqLwogCS8qIE5vdGU6 IHF1YWxfc2VjdXJpdHlfbGV2ZWwgaXMgemVybyBpZiB0aGVyZSBhcmUgbm8gc2VjdXJpdHlRdWFs cyAqLwpAQCAtNjgxLDcgKzY4MSw3IEBAIHR5cGVkZWYgc3RydWN0IFJlbE9wdEluZm8KIAlSZWxp ZHMJCXJlbGlkczsJCQkvKiBzZXQgb2YgYmFzZSByZWxpZHMgKHJhbmdldGFibGUgaW5kZXhlcykg Ki8KIAogCS8qIHNpemUgZXN0aW1hdGVzIGdlbmVyYXRlZCBieSBwbGFubmVyICovCi0JQ2FyZGlu YWxpdHkJcm93czsJCQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMgKi8KKwlD YXJkaW5hbGl0eSByb3dzOwkJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgcmVzdWx0IHR1cGxlcyAq LwogCiAJLyogcGVyLXJlbGF0aW9uIHBsYW5uZXIgY29udHJvbCBmbGFncyAqLwogCWJvb2wJCWNv bnNpZGVyX3N0YXJ0dXA7CS8qIGtlZXAgY2hlYXAtc3RhcnR1cC1jb3N0IHBhdGhzPyAqLwpAQCAt NzE2LDkgKzcxNiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBSZWxPcHRJbmZvCiAJTGlzdAkgICAqbGF0 ZXJhbF92YXJzOwkvKiBMQVRFUkFMIFZhcnMgYW5kIFBIVnMgcmVmZXJlbmNlZCBieSByZWwgKi8K IAlSZWxpZHMJCWxhdGVyYWxfcmVmZXJlbmNlcnM7CS8qIHJlbHMgdGhhdCByZWZlcmVuY2UgbWUg bGF0ZXJhbGx5ICovCiAJTGlzdAkgICAqaW5kZXhsaXN0OwkJLyogbGlzdCBvZiBJbmRleE9wdElu Zm8gKi8KKwlMaXN0CSAgICpwYXJ0SW5kZXhsaXN0OwkvKiBsaXN0IG9mIEluZGV4T3B0SW5mbyAq LwogCUxpc3QJICAgKnN0YXRsaXN0OwkJLyogbGlzdCBvZiBTdGF0aXN0aWNFeHRJbmZvICovCiAJ QmxvY2tOdW1iZXIgcGFnZXM7CQkJLyogc2l6ZSBlc3RpbWF0ZXMgZGVyaXZlZCBmcm9tIHBnX2Ns YXNzICovCi0JQ2FyZGluYWxpdHkJdHVwbGVzOworCUNhcmRpbmFsaXR5IHR1cGxlczsKIAlkb3Vi bGUJCWFsbHZpc2ZyYWM7CiAJQml0bWFwc2V0ICAqZWNsYXNzX2luZGV4ZXM7IC8qIEluZGV4ZXMg aW4gUGxhbm5lckluZm8ncyBlcV9jbGFzc2VzIGxpc3Qgb2YKIAkJCQkJCQkJICogRUNzIHRoYXQg bWVudGlvbiB0aGlzIHJlbCAqLwpAQCAtODQxLDcgKzg0Miw3IEBAIHN0cnVjdCBJbmRleE9wdElu Zm8KIAogCS8qIGluZGV4LXNpemUgc3RhdGlzdGljcyAoZnJvbSBwZ19jbGFzcyBhbmQgZWxzZXdo ZXJlKSAqLwogCUJsb2NrTnVtYmVyIHBhZ2VzOwkJCS8qIG51bWJlciBvZiBkaXNrIHBhZ2VzIGlu IGluZGV4ICovCi0JQ2FyZGluYWxpdHkJdHVwbGVzOwkJCS8qIG51bWJlciBvZiBpbmRleCB0dXBs ZXMgaW4gaW5kZXggKi8KKwlDYXJkaW5hbGl0eSB0dXBsZXM7CQkJLyogbnVtYmVyIG9mIGluZGV4 IHR1cGxlcyBpbiBpbmRleCAqLwogCWludAkJCXRyZWVfaGVpZ2h0OwkvKiBpbmRleCB0cmVlIGhl aWdodCwgb3IgLTEgaWYgdW5rbm93biAqLwogCiAJLyogaW5kZXggZGVzY3JpcHRvciBpbmZvcm1h dGlvbiAqLwpAQCAtMTE0MCw3ICsxMTQxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYW1QYXRoSW5m bwogCU5vZGVUYWcJCXR5cGU7CiAKIAlSZWxpZHMJCXBwaV9yZXFfb3V0ZXI7CS8qIHJlbHMgc3Vw cGx5aW5nIHBhcmFtZXRlcnMgdXNlZCBieSBwYXRoICovCi0JQ2FyZGluYWxpdHkJcHBpX3Jvd3M7 CQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMgKi8KKwlDYXJkaW5hbGl0eSBw cGlfcm93czsJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgcmVzdWx0IHR1cGxlcyAqLwogCUxpc3QJ ICAgKnBwaV9jbGF1c2VzOwkvKiBqb2luIGNsYXVzZXMgYXZhaWxhYmxlIGZyb20gb3V0ZXIgcmVs cyAqLwogfSBQYXJhbVBhdGhJbmZvOwogCkBAIC0xMTkwLDcgKzExOTEsNyBAQCB0eXBlZGVmIHN0 cnVjdCBQYXRoCiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsJLyogZGVzaXJlZCAjIG9mIHdvcmtl cnM7IDAgPSBub3QgcGFyYWxsZWwgKi8KIAogCS8qIGVzdGltYXRlZCBzaXplL2Nvc3RzIGZvciBw YXRoIChzZWUgY29zdHNpemUuYyBmb3IgbW9yZSBpbmZvKSAqLwotCUNhcmRpbmFsaXR5CXJvd3M7 CQkJLyogZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgdHVwbGVzICovCisJQ2FyZGluYWxpdHkg cm93czsJCQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMgKi8KIAlDb3N0CQlz dGFydHVwX2Nvc3Q7CS8qIGNvc3QgZXhwZW5kZWQgYmVmb3JlIGZldGNoaW5nIGFueSB0dXBsZXMg Ki8KIAlDb3N0CQl0b3RhbF9jb3N0OwkJLyogdG90YWwgY29zdCAoYXNzdW1pbmcgYWxsIHR1cGxl cyBmZXRjaGVkKSAqLwogCkBAIC0xNDUzLDcgKzE0NTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBBcHBl bmRQYXRoCiAJTGlzdAkgICAqc3VicGF0aHM7CQkvKiBsaXN0IG9mIGNvbXBvbmVudCBQYXRocyAq LwogCS8qIEluZGV4IG9mIGZpcnN0IHBhcnRpYWwgcGF0aCBpbiBzdWJwYXRoczsgbGlzdF9sZW5n dGgoc3VicGF0aHMpIGlmIG5vbmUgKi8KIAlpbnQJCQlmaXJzdF9wYXJ0aWFsX3BhdGg7Ci0JQ2Fy ZGluYWxpdHkJbGltaXRfdHVwbGVzOwkvKiBoYXJkIGxpbWl0IG9uIG91dHB1dCB0dXBsZXMsIG9y IC0xICovCisJQ2FyZGluYWxpdHkgbGltaXRfdHVwbGVzOwkvKiBoYXJkIGxpbWl0IG9uIG91dHB1 dCB0dXBsZXMsIG9yIC0xICovCiB9IEFwcGVuZFBhdGg7CiAKICNkZWZpbmUgSVNfRFVNTVlfQVBQ RU5EKHApIFwKQEAgLTE0NzUsNyArMTQ3Niw3IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQXBwZW5k UGF0aAogewogCVBhdGgJCXBhdGg7CiAJTGlzdAkgICAqc3VicGF0aHM7CQkvKiBsaXN0IG9mIGNv bXBvbmVudCBQYXRocyAqLwotCUNhcmRpbmFsaXR5CWxpbWl0X3R1cGxlczsJLyogaGFyZCBsaW1p dCBvbiBvdXRwdXQgdHVwbGVzLCBvciAtMSAqLworCUNhcmRpbmFsaXR5IGxpbWl0X3R1cGxlczsJ LyogaGFyZCBsaW1pdCBvbiBvdXRwdXQgdHVwbGVzLCBvciAtMSAqLwogfSBNZXJnZUFwcGVuZFBh dGg7CiAKIC8qCkBAIC0xNzczLDcgKzE3NzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZ2dQYXRoCiAJ UGF0aAkgICAqc3VicGF0aDsJCS8qIHBhdGggcmVwcmVzZW50aW5nIGlucHV0IHNvdXJjZSAqLwog CUFnZ1N0cmF0ZWd5IGFnZ3N0cmF0ZWd5OwkvKiBiYXNpYyBzdHJhdGVneSwgc2VlIG5vZGVzLmgg Ki8KIAlBZ2dTcGxpdAlhZ2dzcGxpdDsJCS8qIGFnZy1zcGxpdHRpbmcgbW9kZSwgc2VlIG5vZGVz LmggKi8KLQlDYXJkaW5hbGl0eQludW1Hcm91cHM7CQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdy b3VwcyBpbiBpbnB1dCAqLworCUNhcmRpbmFsaXR5IG51bUdyb3VwczsJCS8qIGVzdGltYXRlZCBu dW1iZXIgb2YgZ3JvdXBzIGluIGlucHV0ICovCiAJdWludDY0CQl0cmFuc2l0aW9uU3BhY2U7CS8q IGZvciBwYXNzLWJ5LXJlZiB0cmFuc2l0aW9uIGRhdGEgKi8KIAlMaXN0CSAgICpncm91cENsYXVz ZTsJLyogYSBsaXN0IG9mIFNvcnRHcm91cENsYXVzZSdzICovCiAJTGlzdAkgICAqcXVhbDsJCQkv KiBxdWFscyAoSEFWSU5HIHF1YWxzKSwgaWYgYW55ICovCkBAIC0xNzg3LDcgKzE3ODgsNyBAQCB0 eXBlZGVmIHN0cnVjdCBHcm91cGluZ1NldERhdGEKIHsKIAlOb2RlVGFnCQl0eXBlOwogCUxpc3QJ ICAgKnNldDsJCQkvKiBncm91cGluZyBzZXQgYXMgbGlzdCBvZiBzb3J0Z3JvdXByZWZzICovCi0J Q2FyZGluYWxpdHkJbnVtR3JvdXBzOwkJLyogZXN0LiBudW1iZXIgb2YgcmVzdWx0IGdyb3VwcyAq LworCUNhcmRpbmFsaXR5IG51bUdyb3VwczsJCS8qIGVzdC4gbnVtYmVyIG9mIHJlc3VsdCBncm91 cHMgKi8KIH0gR3JvdXBpbmdTZXREYXRhOwogCiB0eXBlZGVmIHN0cnVjdCBSb2xsdXBEYXRhCkBA IC0xNzk2LDcgKzE3OTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBSb2xsdXBEYXRhCiAJTGlzdAkgICAq Z3JvdXBDbGF1c2U7CS8qIGFwcGxpY2FibGUgc3Vic2V0IG9mIHBhcnNlLT5ncm91cENsYXVzZSAq LwogCUxpc3QJICAgKmdzZXRzOwkJCS8qIGxpc3RzIG9mIGludGVnZXIgaW5kZXhlcyBpbnRvIGdy b3VwQ2xhdXNlICovCiAJTGlzdAkgICAqZ3NldHNfZGF0YTsJCS8qIGxpc3Qgb2YgR3JvdXBpbmdT ZXREYXRhICovCi0JQ2FyZGluYWxpdHkJbnVtR3JvdXBzOwkJLyogZXN0LiBudW1iZXIgb2YgcmVz dWx0IGdyb3VwcyAqLworCUNhcmRpbmFsaXR5IG51bUdyb3VwczsJCS8qIGVzdC4gbnVtYmVyIG9m IHJlc3VsdCBncm91cHMgKi8KIAlib29sCQloYXNoYWJsZTsJCS8qIGNhbiBiZSBoYXNoZWQgKi8K IAlib29sCQlpc19oYXNoZWQ7CQkvKiB0byBiZSBpbXBsZW1lbnRlZCBhcyBhIGhhc2hhZ2cgKi8K IH0gUm9sbHVwRGF0YTsKQEAgLTE4NDcsNyArMTg0OCw3IEBAIHR5cGVkZWYgc3RydWN0IFNldE9w UGF0aAogCUxpc3QJICAgKmRpc3RpbmN0TGlzdDsJLyogU29ydEdyb3VwQ2xhdXNlcyBpZGVudGlm eWluZyB0YXJnZXQgY29scyAqLwogCUF0dHJOdW1iZXIJZmxhZ0NvbElkeDsJCS8qIHdoZXJlIGlz IHRoZSBmbGFnIGNvbHVtbiwgaWYgYW55ICovCiAJaW50CQkJZmlyc3RGbGFnOwkJLyogZmxhZyB2 YWx1ZSBmb3IgZmlyc3QgaW5wdXQgcmVsYXRpb24gKi8KLQlDYXJkaW5hbGl0eQludW1Hcm91cHM7 CQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdyb3VwcyBpbiBpbnB1dCAqLworCUNhcmRpbmFsaXR5 IG51bUdyb3VwczsJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgZ3JvdXBzIGluIGlucHV0ICovCiB9 IFNldE9wUGF0aDsKIAogLyoKQEAgLTE4NjAsNyArMTg2MSw3IEBAIHR5cGVkZWYgc3RydWN0IFJl Y3Vyc2l2ZVVuaW9uUGF0aAogCVBhdGgJICAgKnJpZ2h0cGF0aDsKIAlMaXN0CSAgICpkaXN0aW5j dExpc3Q7CS8qIFNvcnRHcm91cENsYXVzZXMgaWRlbnRpZnlpbmcgdGFyZ2V0IGNvbHMgKi8KIAlp bnQJCQl3dFBhcmFtOwkJLyogSUQgb2YgUGFyYW0gcmVwcmVzZW50aW5nIHdvcmsgdGFibGUgKi8K LQlDYXJkaW5hbGl0eQludW1Hcm91cHM7CQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdyb3VwcyBp biBpbnB1dCAqLworCUNhcmRpbmFsaXR5IG51bUdyb3VwczsJCS8qIGVzdGltYXRlZCBudW1iZXIg b2YgZ3JvdXBzIGluIGlucHV0ICovCiB9IFJlY3Vyc2l2ZVVuaW9uUGF0aDsKIAogLyoKQEAgLTI2 MTYsNyArMjYxNyw3IEBAIHR5cGVkZWYgc3RydWN0CiB0eXBlZGVmIHN0cnVjdAogewogCWJvb2wJ CWxpbWl0X25lZWRlZDsKLQlDYXJkaW5hbGl0eQlsaW1pdF90dXBsZXM7CisJQ2FyZGluYWxpdHkg bGltaXRfdHVwbGVzOwogCWludDY0CQljb3VudF9lc3Q7CiAJaW50NjQJCW9mZnNldF9lc3Q7CiB9 IEZpbmFsUGF0aEV4dHJhRGF0YTsKQEAgLTI2NDcsMTUgKzI2NDgsMTUgQEAgdHlwZWRlZiBzdHJ1 Y3QgSm9pbkNvc3RXb3Jrc3BhY2UKIAlDb3N0CQlpbm5lcl9yZXNjYW5fcnVuX2Nvc3Q7CiAKIAkv KiBwcml2YXRlIGZvciBjb3N0X21lcmdlam9pbiBjb2RlICovCi0JQ2FyZGluYWxpdHkJb3V0ZXJf cm93czsKLQlDYXJkaW5hbGl0eQlpbm5lcl9yb3dzOwotCUNhcmRpbmFsaXR5CW91dGVyX3NraXBf cm93czsKLQlDYXJkaW5hbGl0eQlpbm5lcl9za2lwX3Jvd3M7CisJQ2FyZGluYWxpdHkgb3V0ZXJf cm93czsKKwlDYXJkaW5hbGl0eSBpbm5lcl9yb3dzOworCUNhcmRpbmFsaXR5IG91dGVyX3NraXBf cm93czsKKwlDYXJkaW5hbGl0eSBpbm5lcl9za2lwX3Jvd3M7CiAKIAkvKiBwcml2YXRlIGZvciBj b3N0X2hhc2hqb2luIGNvZGUgKi8KIAlpbnQJCQludW1idWNrZXRzOwogCWludAkJCW51bWJhdGNo ZXM7Ci0JQ2FyZGluYWxpdHkJaW5uZXJfcm93c190b3RhbDsKKwlDYXJkaW5hbGl0eSBpbm5lcl9y b3dzX3RvdGFsOwogfSBKb2luQ29zdFdvcmtzcGFjZTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2pvaW4ub3V0IGIvc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9wYXJ0aXRpb25fam9pbi5vdXQKaW5kZXggYmI1YjdjNDdhNC4uNTYyYmFkNjU0 NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fam9pbi5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fam9pbi5vdXQKQEAg LTQ4NjYsMTQgKzQ4NjYsNDIgQEAgU0VMRUNUIHQxLiosIHQyLiogRlJPTSBhbHBoYSB0MSBJTk5F UiBKT0lOIGJldGEgdDIgT04gKHQxLmEgPSB0Mi5hIEFORCB0MS5iID0gdDIKIENSRUFURSBUQUJM RSBmcmFjdF90IChpZCBCSUdJTlQsIFBSSU1BUlkgS0VZIChpZCkpIFBBUlRJVElPTiBCWSBSQU5H RSAoaWQpOwogQ1JFQVRFIFRBQkxFIGZyYWN0X3QwIFBBUlRJVElPTiBPRiBmcmFjdF90IEZPUiBW QUxVRVMgRlJPTSAoJzAnKSBUTyAoJzEwMDAnKTsKIENSRUFURSBUQUJMRSBmcmFjdF90MSBQQVJU SVRJT04gT0YgZnJhY3RfdCBGT1IgVkFMVUVTIEZST00gKCcxMDAwJykgVE8gKCcyMDAwJyk7CitD UkVBVEUgVEFCTEUgZnJhY3RfeCAoaWQgQklHSU5ULCBQUklNQVJZIEtFWSAoaWQpKSBQQVJUSVRJ T04gQlkgUkFOR0UgKGlkKTsKK0NSRUFURSBUQUJMRSBmcmFjdF94MCBQQVJUSVRJT04gT0YgZnJh Y3RfeCBGT1IgVkFMVUVTIEZST00gKCcwJykgVE8gKCcxMDAwJyk7CitDUkVBVEUgVEFCTEUgZnJh Y3RfeDEgUEFSVElUSU9OIE9GIGZyYWN0X3ggRk9SIFZBTFVFUyBGUk9NICgnMTAwMCcpIFRPICgn MjAwMCcpOwogLS0gaW5zZXJ0IGRhdGEKIElOU0VSVCBJTlRPIGZyYWN0X3QgKGlkKSAoU0VMRUNU IGdlbmVyYXRlX3NlcmllcygwLCAxOTk5KSk7CiBBTkFMWVpFIGZyYWN0X3Q7Ci0tLSB2ZXJpZnkg cGxhbjsgbmVzdGVkIGluZGV4IG9ubHkgc2NhbnMKK0lOU0VSVCBJTlRPIGZyYWN0X3ggKGlkKSAo U0VMRUNUIGdlbmVyYXRlX3NlcmllcygwLCAxOTk5KSk7CitBTkFMWVpFIGZyYWN0X3g7CitTRVQg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CitTRVQgZW5hYmxlX3BhcnRpdGlv bndpc2Vfam9pbiA9IG9uOworLS0gdmVyaWZ5IHBhcnRpdGlvbiBwcnVuaW5nCiBTRVQgbWF4X3Bh cmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciA9IDA7CiBTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vf am9pbiA9IG9uOwogRVhQTEFJTiAoQ09TVFMgT0ZGKQotU0VMRUNUICogRlJPTSBmcmFjdF90IHgg TEVGVCBKT0lOIGZyYWN0X3QgeSBVU0lORyAoaWQpIE9SREVSIEJZIGlkIEFTQyBMSU1JVCAxMDsK K1NFTEVDVCB4LmlkIEZST00gZnJhY3RfeCB4IExFRlQgSk9JTiBmcmFjdF90IHkgVVNJTkcgKGlk KSBPUkRFUiBCWSBpZCBBU0MgTElNSVQgMTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBMaW1pdAor ICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBmcmFjdF94 MF9wa2V5IG9uIGZyYWN0X3gwIHhfMQorICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2lu ZyBmcmFjdF94MV9wa2V5IG9uIGZyYWN0X3gxIHhfMgorKDQgcm93cykKKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIHguaWQgRlJPTSBmcmFjdF94IHggTEVGVCBKT0lOIGZyYWN0X3QgeSBV U0lORyAoaWQpIE9SREVSIEJZIGlkIEFTQyBMSU1JVCAxMDsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IExpbWl0CisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5n IGZyYWN0X3gwX3BrZXkgb24gZnJhY3RfeDAgeF8xCisgICAgICAgICAtPiAgSW5kZXggT25seSBT Y2FuIHVzaW5nIGZyYWN0X3gxX3BrZXkgb24gZnJhY3RfeDEgeF8yCisoNCByb3dzKQorCistLSB2 ZXJpZnkgcGxhbjsgbmVzdGVkIGluZGV4IG9ubHkgc2NhbnMKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCB4LmlkLCB5LmlkIEZST00gZnJhY3RfeCB4IExFRlQgSk9JTiBmcmFjdF90IHkgVVNJ TkcgKGlkKSBPUkRFUiBCWSB4LmlkIEFTQyBMSU1JVCAxMDsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIExpbWl0CkBAIC00ODgxLDMyICs0OTA5LDMzIEBAIFNFTEVDVCAqIEZST00g ZnJhY3RfdCB4IExFRlQgSk9JTiBmcmFjdF90IHkgVVNJTkcgKGlkKSBPUkRFUiBCWSBpZCBBU0Mg TElNSVQgMTA7CiAgICAgICAgICBTb3J0IEtleTogeC5pZAogICAgICAgICAgLT4gIE1lcmdlIExl ZnQgSm9pbgogICAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHhfMS5pZCA9IHlfMS5pZCkKLSAg ICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgZnJhY3RfdDBfcGtleSBvbiBm cmFjdF90MCB4XzEKKyAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgZnJh Y3RfeDBfcGtleSBvbiBmcmFjdF94MCB4XzEKICAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5 IFNjYW4gdXNpbmcgZnJhY3RfdDBfcGtleSBvbiBmcmFjdF90MCB5XzEKICAgICAgICAgIC0+ICBN ZXJnZSBMZWZ0IEpvaW4KICAgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh4XzIuaWQgPSB5XzIu aWQpCi0gICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGZyYWN0X3QxX3Br ZXkgb24gZnJhY3RfdDEgeF8yCisgICAgICAgICAgICAgICAtPiAgSW5kZXggT25seSBTY2FuIHVz aW5nIGZyYWN0X3gxX3BrZXkgb24gZnJhY3RfeDEgeF8yCiAgICAgICAgICAgICAgICAtPiAgSW5k ZXggT25seSBTY2FuIHVzaW5nIGZyYWN0X3QxX3BrZXkgb24gZnJhY3RfdDEgeV8yCiAoMTEgcm93 cykKIAogRVhQTEFJTiAoQ09TVFMgT0ZGKQotU0VMRUNUICogRlJPTSBmcmFjdF90IHggTEVGVCBK T0lOIGZyYWN0X3QgeSBVU0lORyAoaWQpIE9SREVSIEJZIGlkIERFU0MgTElNSVQgMTA7CitTRUxF Q1QgeC5pZCwgeS5pZCBGUk9NIGZyYWN0X3ggeCBMRUZUIEpPSU4gZnJhY3RfdCB5IFVTSU5HIChp ZCkgT1JERVIgQlkgeC5pZCBERVNDIExJTUlUIDEwOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTGltaXQKICAgIC0+ICBNZXJnZSBBcHBlbmQKICAg ICAgICAgIFNvcnQgS2V5OiB4LmlkIERFU0MKICAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0 IEpvaW4KLSAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gQmFja3dhcmQgdXNpbmcg ZnJhY3RfdDBfcGtleSBvbiBmcmFjdF90MCB4XzEKKyAgICAgICAgICAgICAgIC0+ICBJbmRleCBP bmx5IFNjYW4gQmFja3dhcmQgdXNpbmcgZnJhY3RfeDBfcGtleSBvbiBmcmFjdF94MCB4XzEKICAg ICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgZnJhY3RfdDBfcGtleSBvbiBm cmFjdF90MCB5XzEKICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChpZCA9IHhfMS5p ZCkKICAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcCBMZWZ0IEpvaW4KLSAgICAgICAgICAgICAgIC0+ ICBJbmRleCBPbmx5IFNjYW4gQmFja3dhcmQgdXNpbmcgZnJhY3RfdDFfcGtleSBvbiBmcmFjdF90 MSB4XzIKKyAgICAgICAgICAgICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gQmFja3dhcmQgdXNpbmcg ZnJhY3RfeDFfcGtleSBvbiBmcmFjdF94MSB4XzIKICAgICAgICAgICAgICAgIC0+ICBJbmRleCBP bmx5IFNjYW4gdXNpbmcgZnJhY3RfdDFfcGtleSBvbiBmcmFjdF90MSB5XzIKICAgICAgICAgICAg ICAgICAgICAgIEluZGV4IENvbmQ6IChpZCA9IHhfMi5pZCkKICgxMSByb3dzKQogCiAtLSBjbGVh bnVwCiBEUk9QIFRBQkxFIGZyYWN0X3Q7CitEUk9QIFRBQkxFIGZyYWN0X3g7CiBSRVNFVCBtYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyOwogUkVTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vf am9pbjsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9qb2luLnNxbAppbmRleCA2N2Y1MDYz NjFmLi4zOWUyMzkxMWQwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fam9pbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX2pvaW4uc3Fs CkBAIC0xMTQ4LDIyICsxMTQ4LDM4IEBAIENSRUFURSBUQUJMRSBmcmFjdF90IChpZCBCSUdJTlQs IFBSSU1BUlkgS0VZIChpZCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaWQpOwogQ1JFQVRFIFRBQkxF IGZyYWN0X3QwIFBBUlRJVElPTiBPRiBmcmFjdF90IEZPUiBWQUxVRVMgRlJPTSAoJzAnKSBUTyAo JzEwMDAnKTsKIENSRUFURSBUQUJMRSBmcmFjdF90MSBQQVJUSVRJT04gT0YgZnJhY3RfdCBGT1Ig VkFMVUVTIEZST00gKCcxMDAwJykgVE8gKCcyMDAwJyk7CiAKK0NSRUFURSBUQUJMRSBmcmFjdF94 IChpZCBCSUdJTlQsIFBSSU1BUlkgS0VZIChpZCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoaWQpOwor Q1JFQVRFIFRBQkxFIGZyYWN0X3gwIFBBUlRJVElPTiBPRiBmcmFjdF94IEZPUiBWQUxVRVMgRlJP TSAoJzAnKSBUTyAoJzEwMDAnKTsKK0NSRUFURSBUQUJMRSBmcmFjdF94MSBQQVJUSVRJT04gT0Yg ZnJhY3RfeCBGT1IgVkFMVUVTIEZST00gKCcxMDAwJykgVE8gKCcyMDAwJyk7CiAtLSBpbnNlcnQg ZGF0YQogSU5TRVJUIElOVE8gZnJhY3RfdCAoaWQpIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDAs IDE5OTkpKTsKIEFOQUxZWkUgZnJhY3RfdDsKK0lOU0VSVCBJTlRPIGZyYWN0X3ggKGlkKSAoU0VM RUNUIGdlbmVyYXRlX3NlcmllcygwLCAxOTk5KSk7CitBTkFMWVpFIGZyYWN0X3g7CiAKLS0tIHZl cmlmeSBwbGFuOyBuZXN0ZWQgaW5kZXggb25seSBzY2FucwogU0VUIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXIgPSAwOwogU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW4gPSBvbjsK IAorLS0gdmVyaWZ5IHBhcnRpdGlvbiBwcnVuaW5nCitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA9IDA7CitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiA9IG9uOworCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgeC5pZCBGUk9NIGZyYWN0X3ggeCBMRUZUIEpPSU4g ZnJhY3RfdCB5IFVTSU5HIChpZCkgT1JERVIgQlkgaWQgQVNDIExJTUlUIDEwOworCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgeC5pZCBGUk9NIGZyYWN0X3ggeCBMRUZUIEpPSU4gZnJhY3Rf dCB5IFVTSU5HIChpZCkgT1JERVIgQlkgaWQgQVNDIExJTUlUIDEwOworCistLSB2ZXJpZnkgcGxh bjsgbmVzdGVkIGluZGV4IG9ubHkgc2NhbnMKIEVYUExBSU4gKENPU1RTIE9GRikKLVNFTEVDVCAq IEZST00gZnJhY3RfdCB4IExFRlQgSk9JTiBmcmFjdF90IHkgVVNJTkcgKGlkKSBPUkRFUiBCWSBp ZCBBU0MgTElNSVQgMTA7CitTRUxFQ1QgeC5pZCwgeS5pZCBGUk9NIGZyYWN0X3ggeCBMRUZUIEpP SU4gZnJhY3RfdCB5IFVTSU5HIChpZCkgT1JERVIgQlkgeC5pZCBBU0MgTElNSVQgMTA7CiAKIEVY UExBSU4gKENPU1RTIE9GRikKLVNFTEVDVCAqIEZST00gZnJhY3RfdCB4IExFRlQgSk9JTiBmcmFj dF90IHkgVVNJTkcgKGlkKSBPUkRFUiBCWSBpZCBERVNDIExJTUlUIDEwOworU0VMRUNUIHguaWQs IHkuaWQgRlJPTSBmcmFjdF94IHggTEVGVCBKT0lOIGZyYWN0X3QgeSBVU0lORyAoaWQpIE9SREVS IEJZIHguaWQgREVTQyBMSU1JVCAxMDsKIAogLS0gY2xlYW51cAogRFJPUCBUQUJMRSBmcmFjdF90 OworRFJPUCBUQUJMRSBmcmFjdF94OwogCiBSRVNFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJf Z2F0aGVyOwogUkVTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbjsK --_004_673783be909248ff9cf3a463da14e1a1indexde_--