Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1inoJt-0003yy-K9 for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Jan 2020 18:38:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1inoJr-0000hN-Bt for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Jan 2020 18:38:39 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1inoJq-0000hG-H1 for pgsql-hackers@lists.postgresql.org; Sat, 04 Jan 2020 18:38:39 +0000 Received: from cyclops.postgrespro.ru ([93.174.131.138] helo=mail.postgrespro.ru) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1inoJh-0002Ur-HE for pgsql-hackers@lists.postgresql.org; Sat, 04 Jan 2020 18:38:37 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id BD52C21C04DD; Sat, 4 Jan 2020 21:38:26 +0300 (MSK) X-Virus-Scanned: Debian amavisd-new at postgrespro.ru X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=x tagged_above=-99 required=4 WHITELISTED tests=[] autolearn=unavailable Received: from mail.postgrespro.ru (cyclops.l.postgrespro.ru [192.168.27.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 34FA021C03B6; Sat, 4 Jan 2020 21:38:24 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1578163106; bh=gCeKVkz1p9167ct6lJU9fDyMD7ps3B7tBCqbBiBcfDs=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=M0ep1Hjuh7WTcrgzLCaKQYLFdc4o1thp18s0rrfIvFwdZy1Qw2C4a9Si2payHo+PF DrJYIBsPDhtLpU+b2NY0MLbnkxqfTnntsYMh1D+r+t/w4oTtkP0pH+BOfGPsW8gkzx eaelpH5Fu0o+ZNDFaMF8551y8YjFe3Vk+R+wj3BY= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_8bf9aec0eabb67ca05b1ab3602e96347" Content-Transfer-Encoding: 7bit Date: Sat, 04 Jan 2020 21:38:24 +0300 From: Alexey Kondratov To: Michael Paquier Cc: Masahiko Sawada , Steve Singer , PostgreSQL Hackers , Alvaro Herrera , Robert Haas , Alexander Korotkov , Masahiko Sawada , Jose Luis Tallon Subject: Re: Allow CLUSTER, VACUUM FULL and REINDEX to change tablespace on the fly In-Reply-To: <20191202082134.GI1696@paquier.xyz> References: <8a8f5f73-00d3-55f8-7583-1375ca8f6a91@postgrespro.ru> <157395200750.29912.1178609357962324139.pgcf@coridan.postgresql.org> <827a9139-e02b-2dbf-5c6c-a6fbcaa1739a@postgrespro.ru> <20191127035416.GG5435@paquier.xyz> <3ae48673-283c-3e99-3dd8-36ebb81614b5@postgrespro.ru> <20191202082134.GI1696@paquier.xyz> User-Agent: Roundcube Webmail/1.4.0 Message-ID: X-Sender: a.kondratov@postgrespro.ru List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_8bf9aec0eabb67ca05b1ab3602e96347 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2019-12-02 11:21, Michael Paquier wrote: > On Wed, Nov 27, 2019 at 08:47:06PM +0300, Alexey Kondratov wrote: > >> Thus, I cannot get your point correctly here. Can you, please, >> elaborate a >> little bit more your concerns? > > The case of REINDEX CONCURRENTLY is pretty simple, because a new > relation which is a copy of the old relation is created before doing > the reindex, so you simply need to set the tablespace OID correctly > in index_concurrently_create_copy(). And actually, I think that the > computation is incorrect because we need to check after > MyDatabaseTableSpace as well, no? > > The case of REINDEX is more tricky, because you are working on a > relation that already exists, hence I think that what you need to do a > different thing before the actual REINDEX: > 1) Update the existing relation's pg_class tuple to point to the new > tablespace. > 2) Do a CommandCounterIncrement. > So I think that the order of the operations you are doing is incorrect, > and that you have a risk of breaking the existing tablespace assignment > logic done when first flushing a new relfilenode. > > This actually brings an extra thing: when doing a plain REINDEX you > need to make sure that the past relfilenode of the relation gets away > properly. The attached POC patch does that before doing the CCI which > is a bit ugly, but that's enough to show my point, and there is no > need to touch RelationSetNewRelfilenode() this way. > OK, I hope that now I understand your concerns better. Another thing I just realised is that RelationSetNewRelfilenode is also used for mapped relations, which are not movable at all, so adding a tablespace options there seems to be not semantically correct as well. However, I still have not find a way to reproduce how to actually brake anything with my previous version of the patch. As for doing RelationDropStorage before CCI, I do not think that there is something wrong with it, this is exactly what RelationSetNewRelfilenode does. I have only moved RelationDropStorage before CatalogTupleUpdate compared to your proposal to match order inside RelationSetNewRelfilenode. > > Your patch has forgotten to update copyfuncs.c and equalfuncs.c with > the new tablespace string field. > > It would be nice to add tab completion for this new clause in psql. > This is not ready for committer yet in my opinion, and more work is > done, so I am marking it as returned with feedback for now. > Finally, I have also merged and unified all your and Masahiko's proposals with my recent changes: ereport corrections, tab-completion, docs update, copy/equalfuncs update, etc. New version is attached. Have it come any closer to a committable state now? Regards -- Alexey Kondratov Postgres Professional https://www.postgrespro.com Russian Postgres Company --=_8bf9aec0eabb67ca05b1ab3602e96347 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v7-0001-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v7-0001-Allow-REINDEX-to-change-tablespace.patch; size=33649 RnJvbSA4MWE5ZGY0NmRiOTFiNmJhNDdlMTFmNTNlNmUyMzc5ZjgzNWI1NzZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMzAgRGVjIDIwMTkgMjA6MDA6MzcgKzAzMDAKU3ViamVjdDog W1BBVENIIHY3XSBBbGxvdyBSRUlOREVYIHRvIGNoYW5nZSB0YWJsZXNwYWNlCgpSRUlOREVYIGFs cmVhZHkgZG9lcyBmdWxsIHJlbGF0aW9uIHJld3JpdGUsIHRoaXMgcGF0Y2ggYWRkcyBhCnBvc3Np YmlsaXR5IHRvIHNwZWNpZnkgYSBuZXcgdGFibGVzcGFjZSB3aGVyZSBuZXcgcmVsZmlsZW5vZGUK d2lsbCBiZSBjcmVhdGVkLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sICAgICAg ICAgICAgIHwgMjQgKysrKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAg ICAgICB8IDc1ICsrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rl ci5jICAgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMg ICAgICAgICAgfCA5NiArKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1 bmNzLmMgICAgICAgICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMg ICAgICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgICAgICAgICAgICAg ICAgIHwgMTQgKystLQogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgICAgICAgICAgICAg fCAgNiArLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAgICAgICAgICAgICAgfCAgNiAr Kwogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgfCAgNyArLQogc3Jj L2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgfCAgNiArLQogc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNz L2lucHV0L3RhYmxlc3BhY2Uuc291cmNlICB8IDQ5ICsrKysrKysrKysrKwogc3JjL3Rlc3QvcmVn cmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgfCA2NiArKysrKysrKysrKysrKysrCiAxNSBm aWxlcyBjaGFuZ2VkLCAzMjMgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3Jl aW5kZXguc2dtbAppbmRleCA1YWE1OWQzYjc1MS4uY2Y2YmQ4OGMxMjggMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9yZWYvcmVpbmRleC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRl eC5zZ21sCkBAIC0yMSw3ICsyMSw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJl ZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU5ERVggfCBU QUJMRSB8IFNDSEVNQSB8IERBVEFCQVNFIHwgU1lTVEVNIH0gWyBDT05DVVJSRU5UTFkgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+CitSRUlOREVYIFsg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywg Li4uXSApIF0geyBJTkRFWCB8IFRBQkxFIHwgU0NIRU1BIHwgREFUQUJBU0UgfCBTWVNURU0gfSBb IENPTkNVUlJFTlRMWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBs YWNlYWJsZT4gWyBUQUJMRVNQQUNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdf dGFibGVzcGFjZTwvcmVwbGFjZWFibGU+IF0KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gY2FuIGJlIG9uZSBvZjo8L3Bo cmFzZT4KIApAQCAtMTY5LDYgKzE2OSwyOCBAQCBSRUlOREVYIFsgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0geyBJTgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAg ICA8dGVybT48bGl0ZXJhbD5UQUJMRVNQQUNFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBzcGVjaWZpZXMgYSB0YWJsZXNwYWNlLCB3aGVy ZSBhbGwgcmVidWlsdCBpbmRleGVzIHdpbGwgYmUgY3JlYXRlZC4KKyAgICAgIENhbm5vdCBiZSB1 c2VkIHdpdGggIm1hcHBlZCIgcmVsYXRpb25zLiBJZiA8bGl0ZXJhbD5TQ0hFTUE8L2xpdGVyYWw+ LAorICAgICAgPGxpdGVyYWw+REFUQUJBU0U8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPlNZU1RFTTwv bGl0ZXJhbD4gaXMgc3BlY2lmaWVkLCB0aGVuCisgICAgICBhbGwgdW5zdWl0YWJsZSByZWxhdGlv bnMgd2lsbCBiZSBza2lwcGVkIGFuZCBhIHNpbmdsZSA8bGl0ZXJhbD5XQVJOSU5HPC9saXRlcmFs PgorICAgICAgd2lsbCBiZSBnZW5lcmF0ZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVt PgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIG9mIHRo ZSBzcGVjaWZpYyB0YWJsZXNwYWNlIHRvIHN0b3JlIHJlYnVpbHQgaW5kZXhlcy4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3Rl bnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5WRVJCT1NFPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggM2U1OWU2NDdlNWMuLjQ5YWYwZDRlZTQxIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCkBAIC0xMjM1LDkgKzEyMzUsMTMgQEAgaW5kZXhfY3JlYXRlKFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwKICAqIENyZWF0ZSBjb25jdXJyZW50bHkgYW4gaW5kZXggYmFzZWQg b24gdGhlIGRlZmluaXRpb24gb2YgdGhlIG9uZSBwcm92aWRlZCBieQogICogY2FsbGVyLiAgVGhl IGluZGV4IGlzIGluc2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlIGJ1aWx0IGxh dGVyCiAgKiBvbi4gIFRoaXMgaXMgY2FsbGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXggcHJv Y2Vzc2luZy4KKyAqCisgKiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIG5ldyB0YWJsZXNwYWNlIHRv IHVzZSBmb3IgdGhpcyBpbmRleC4gIElmCisgKiBJbnZhbGlkT2lkLCB1c2UgdGhlIHRhYmxlc3Bh Y2UgaW4tdXNlIGluc3RlYWQuCiAgKi8KIE9pZAotaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9j b3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsIGNvbnN0IGNoYXIgKm5l d05hbWUpCitpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0 aW9uLCBPaWQgb2xkSW5kZXhJZCwKKwkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwgY29uc3Qg Y2hhciAqbmV3TmFtZSkKIHsKIAlSZWxhdGlvbglpbmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAg Km9sZEluZm8sCkBAIC0xMzY3LDcgKzEzNzEsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRl X2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwgY29uc3QgY2hhcgog CQkJCQkJCSAgbmV3SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCiAJCQkJCQkJICBpbmRl eFJlbGF0aW9uLT5yZF9yZWwtPnJlbGFtLAotCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfcmVs LT5yZWx0YWJsZXNwYWNlLAorCQkJCQkJCSAgT2lkSXNWYWxpZCh0YWJsZXNwYWNlT2lkKSA/CisJ CQkJCQkJCXRhYmxlc3BhY2VPaWQgOiBpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbHRhYmxlc3Bh Y2UsCiAJCQkJCQkJICBpbmRleFJlbGF0aW9uLT5yZF9pbmRjb2xsYXRpb24sCiAJCQkJCQkJICBp bmRjbGFzcy0+dmFsdWVzLAogCQkJCQkJCSAgaW5kY29sb3B0aW9ucy0+dmFsdWVzLApAQCAtMzM5 OSwxMCArMzQwNCwxMiBAQCBJbmRleEdldFJlbGF0aW9uKE9pZCBpbmRleElkLCBib29sIG1pc3Np bmdfb2spCiAKIC8qCiAgKiByZWluZGV4X2luZGV4IC0gVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8g cmVjcmVhdGUgYSBzaW5nbGUgaW5kZXgKKyAqCisgKiBTZWUgY29tbWVudHMgb2YgcmVpbmRleF9y ZWxhdGlvbigpIGZvciBkZXRhaWxzIGFib3V0ICJ0YWJsZXNwYWNlT2lkIi4KICAqLwogdm9pZAot cmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBj aGFyIHBlcnNpc3RlbmNlLAotCQkJICBpbnQgb3B0aW9ucykKK3JlaW5kZXhfaW5kZXgoT2lkIGlu ZGV4SWQsIE9pZCB0YWJsZXNwYWNlT2lkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsCisJ CQkgIGNoYXIgcGVyc2lzdGVuY2UsIGludCBvcHRpb25zKQogewogCVJlbGF0aW9uCWlSZWwsCiAJ CQkJaGVhcFJlbGF0aW9uOwpAQCAtMzQ0OSw2ICszNDU2LDE2IEBAIHJlaW5kZXhfaW5kZXgoT2lk IGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwK IAkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIHJlbGF0aW9uIGtpbmQgZm9yIGluZGV4IFwiJXNc IiIsCiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaVJlbCkpOwogCisJLyoKKwkgKiBXZSBj YW5ub3Qgc3VwcG9ydCBtb3ZpbmcgbWFwcGVkIHJlbGF0aW9ucyBpbnRvIGRpZmZlcmVudCB0YWJs ZXNwYWNlcy4KKwkgKiAoSW4gcGFydGljdWxhciB0aGlzIGVsaW1pbmF0ZXMgYWxsIHNoYXJlZCBj YXRhbG9ncy4pCisJICovCisJaWYgKE9pZElzVmFsaWQodGFibGVzcGFjZU9pZCkgJiYgUmVsYXRp b25Jc01hcHBlZChpUmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgc3lzdGVt IHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpUmVsKSkp KTsKKwogCS8qCiAJICogRG9uJ3QgYWxsb3cgcmVpbmRleCBvbiB0ZW1wIHRhYmxlcyBvZiBvdGhl ciBiYWNrZW5kcyAuLi4gdGhlaXIgbG9jYWwKIAkgKiBidWZmZXIgbWFuYWdlciBpcyBub3QgZ29p bmcgdG8gY29wZS4KQEAgLTM0NjQsNiArMzQ4MSw0NSBAQCByZWluZGV4X2luZGV4KE9pZCBpbmRl eElkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAJICov CiAJQ2hlY2tUYWJsZU5vdEluVXNlKGlSZWwsICJSRUlOREVYIElOREVYIik7CiAKKwkvKgorCSAq IFNldCB0aGUgbmV3IHRhYmxlc3BhY2UgZm9yIHRoZSByZWxhdGlvbi4gIERvIHRoYXQgb25seSBp biB0aGUKKwkgKiBjYXNlIHdoZXJlIHRoZSByZWluZGV4IGNhbGxlciB3aXNoZXMgdG8gZW5mb3Jj ZSBhIG5ldyB0YWJsZXNwYWNlLgorCSAqLworCWlmIChPaWRJc1ZhbGlkKHRhYmxlc3BhY2VPaWQp ICYmCisJCXRhYmxlc3BhY2VPaWQgIT0gaVJlbC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlKQorCXsK KwkJUmVsYXRpb24JCXBnX2NsYXNzOworCQlGb3JtX3BnX2NsYXNzCXJkX3JlbDsKKwkJSGVhcFR1 cGxlCQl0dXBsZTsKKworCQkvKiBGaXJzdCBnZXQgYSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIHJl bGF0aW9uJ3MgcGdfY2xhc3Mgcm93ICovCisJCXBnX2NsYXNzID0gdGFibGVfb3BlbihSZWxhdGlv blJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCXR1cGxlID0gU2VhcmNoU3lzQ2Fj aGVDb3B5MShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0oaW5kZXhJZCkpOworCQlpZiAoIUhlYXBU dXBsZUlzVmFsaWQodHVwbGUpKQorCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQg Zm9yIHJlbGF0aW9uICV1IiwgaW5kZXhJZCk7CisJCXJkX3JlbCA9IChGb3JtX3BnX2NsYXNzKSBH RVRTVFJVQ1QodHVwbGUpOworCisJCS8qCisJCSAqIE1hcmsgdGhlIHJlbGF0aW9uIGFzIHJlYWR5 IHRvIGJlIGRyb3BwZWQgYXQgdHJhbnNhY3Rpb24gY29tbWl0LAorCQkgKiBiZWZvcmUgbWFraW5n IHZpc2libGUgdGhlIG5ldyB0YWJsZXNwYWNlIGNoYW5nZSBzbyBhcyB0aGlzIHdvbid0CisJCSAq IG1pc3MgdGhpbmdzLgorCQkgKi8KKwkJUmVsYXRpb25Ecm9wU3RvcmFnZShpUmVsKTsKKworCQkv KiBVcGRhdGUgdGhlIHBnX2NsYXNzIHJvdyAqLworCQlyZF9yZWwtPnJlbHRhYmxlc3BhY2UgPSAo dGFibGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVTcGFjZSkgPworCQkJSW52YWxpZE9pZCA6 IHRhYmxlc3BhY2VPaWQ7CisJCUNhdGFsb2dUdXBsZVVwZGF0ZShwZ19jbGFzcywgJnR1cGxlLT50 X3NlbGYsIHR1cGxlKTsKKworCQloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisKKwkJdGFibGVfY2xv c2UocGdfY2xhc3MsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCS8qIE1ha2Ugc3VyZSB0aGUgcmVs dGFibGVzcGFjZSBjaGFuZ2UgaXMgdmlzaWJsZSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVu dCgpOworCX0KKwogCS8qCiAJICogQWxsIHByZWRpY2F0ZSBsb2NrcyBvbiB0aGUgaW5kZXggYXJl IGFib3V0IHRvIGJlIG1hZGUgaW52YWxpZC4gUHJvbW90ZQogCSAqIHRoZW0gdG8gcmVsYXRpb24g bG9ja3Mgb24gdGhlIGhlYXAuCkBAIC0zNjAyLDYgKzM2NTgsMTAgQEAgcmVpbmRleF9pbmRleChP aWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNl LAogICogcmVpbmRleF9yZWxhdGlvbiAtIFRoaXMgcm91dGluZSBpcyB1c2VkIHRvIHJlY3JlYXRl IGFsbCBpbmRleGVzCiAgKiBvZiBhIHJlbGF0aW9uIChhbmQgb3B0aW9uYWxseSBpdHMgdG9hc3Qg cmVsYXRpb24gdG9vLCBpZiBhbnkpLgogICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBkZWZpbmVzIHRo ZSBuZXcgdGFibGVzcGFjZSB3aGVyZSB0aGUgaW5kZXhlcyBvZgorICogdGhlIHJlbGF0aW9uIHdp bGwgYmUgcmVidWlsdC4gIElmIEludmFsaWRPaWQgaXMgdXNlZCwgdGhlIGRlZmF1bHQKKyAqIHRh Ymxlc3BhY2Ugb2YgZWFjaCBpbmRleCBpcyB1c2VkIGluc3RlYWQuCisgKgogICogImZsYWdzIiBp cyBhIGJpdG1hc2sgdGhhdCBjYW4gaW5jbHVkZSBhbnkgY29tYmluYXRpb24gb2YgdGhlc2UgYml0 czoKICAqCiAgKiBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNUOiBpZiB0cnVlLCBwcm9jZXNzIHRo ZSB0b2FzdCB0YWJsZSB0b28gKGlmIGFueSkuCkBAIC0zNjM0LDcgKzM2OTQsNyBAQCByZWluZGV4 X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVy c2lzdGVuY2UsCiAgKiBpbmRleCByZWJ1aWxkLgogICovCiBib29sCi1yZWluZGV4X3JlbGF0aW9u KE9pZCByZWxpZCwgaW50IGZsYWdzLCBpbnQgb3B0aW9ucykKK3JlaW5kZXhfcmVsYXRpb24oT2lk IHJlbGlkLCBPaWQgdGFibGVzcGFjZU9pZCwgaW50IGZsYWdzLCBpbnQgb3B0aW9ucykKIHsKIAlS ZWxhdGlvbglyZWw7CiAJT2lkCQkJdG9hc3RfcmVsaWQ7CkBAIC0zNzA4LDcgKzM3NjgsOCBAQCBy ZWluZGV4X3JlbGF0aW9uKE9pZCByZWxpZCwgaW50IGZsYWdzLCBpbnQgb3B0aW9ucykKIAkJewog CQkJT2lkCQkJaW5kZXhPaWQgPSBsZmlyc3Rfb2lkKGluZGV4SWQpOwogCi0JCQlyZWluZGV4X2lu ZGV4KGluZGV4T2lkLCAhKGZsYWdzICYgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMpLAor CQkJcmVpbmRleF9pbmRleChpbmRleE9pZCwgdGFibGVzcGFjZU9pZCwKKwkJCQkJCSAgIShmbGFn cyAmIFJFSU5ERVhfUkVMX0NIRUNLX0NPTlNUUkFJTlRTKSwKIAkJCQkJCSAgcGVyc2lzdGVuY2Us IG9wdGlvbnMpOwogCiAJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwpAQCAtMzc0MSw3ICsz ODAyLDcgQEAgcmVpbmRleF9yZWxhdGlvbihPaWQgcmVsaWQsIGludCBmbGFncywgaW50IG9wdGlv bnMpCiAJICogc3RpbGwgaG9sZCB0aGUgbG9jayBvbiB0aGUgbWFzdGVyIHRhYmxlLgogCSAqLwog CWlmICgoZmxhZ3MgJiBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNUKSAmJiBPaWRJc1ZhbGlkKHRv YXN0X3JlbGlkKSkKLQkJcmVzdWx0IHw9IHJlaW5kZXhfcmVsYXRpb24odG9hc3RfcmVsaWQsIGZs YWdzLCBvcHRpb25zKTsKKwkJcmVzdWx0IHw9IHJlaW5kZXhfcmVsYXRpb24odG9hc3RfcmVsaWQs IHRhYmxlc3BhY2VPaWQsIGZsYWdzLCBvcHRpb25zKTsKIAogCXJldHVybiByZXN1bHQ7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jbHVzdGVyLmMKaW5kZXggZTlkN2E3ZmY3OWIuLjViZDEyZWNhMzgyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY2x1c3Rlci5jCkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBmaW5pc2hfaGVhcF9zd2FwKE9p ZCBPSURPbGRIZWFwLCBPaWQgT0lETmV3SGVhcCwKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NMVVNURVJfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DTFVTVEVSX1BI QVNFX1JFQlVJTERfSU5ERVgpOwogCi0JcmVpbmRleF9yZWxhdGlvbihPSURPbGRIZWFwLCByZWlu ZGV4X2ZsYWdzLCAwKTsKKwlyZWluZGV4X3JlbGF0aW9uKE9JRE9sZEhlYXAsIEludmFsaWRPaWQs IHJlaW5kZXhfZmxhZ3MsIDApOwogCiAJLyogUmVwb3J0IHRoYXQgd2UgYXJlIG5vdyBkb2luZyBj bGVhbiB1cCAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0xVU1RF Ul9QSEFTRSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggNTJjZTAyZjg5ODEuLmM2ZDZi NzZkZTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtODcsNyArODcsNyBAQCBzdGF0 aWMgY2hhciAqQ2hvb3NlSW5kZXhOYW1lQWRkaXRpb24oTGlzdCAqY29sbmFtZXMpOwogc3RhdGlj IExpc3QgKkNob29zZUluZGV4Q29sdW1uTmFtZXMoTGlzdCAqaW5kZXhFbGVtcyk7CiBzdGF0aWMg dm9pZCBSYW5nZVZhckNhbGxiYWNrRm9yUmVpbmRleEluZGV4KGNvbnN0IFJhbmdlVmFyICpyZWxh dGlvbiwKIAkJCQkJCQkJCQkJT2lkIHJlbElkLCBPaWQgb2xkUmVsSWQsIHZvaWQgKmFyZyk7Ci1z dGF0aWMgYm9vbCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBp bnQgb3B0aW9ucyk7CitzdGF0aWMgYm9vbCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lk IHJlbGF0aW9uT2lkLCBPaWQgdGFibGVzcGFjZU9pZCwgaW50IG9wdGlvbnMpOwogc3RhdGljIHZv aWQgUmVpbmRleFBhcnRpdGlvbmVkSW5kZXgoUmVsYXRpb24gcGFyZW50SWR4KTsKIHN0YXRpYyB2 b2lkIHVwZGF0ZV9yZWxpc3BhcnRpdGlvbihPaWQgcmVsYXRpb25JZCwgYm9vbCBuZXd2YWwpOwog CkBAIC0yMzEyLDEwICsyMzEyLDExIEBAIENob29zZUluZGV4Q29sdW1uTmFtZXMoTGlzdCAqaW5k ZXhFbGVtcykKICAqCQlSZWNyZWF0ZSBhIHNwZWNpZmljIGluZGV4LgogICovCiB2b2lkCi1SZWlu ZGV4SW5kZXgoUmFuZ2VWYXIgKmluZGV4UmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGNvbmN1 cnJlbnQpCitSZWluZGV4SW5kZXgoUmFuZ2VWYXIgKmluZGV4UmVsYXRpb24sIGNoYXIgKm5ld1Rh YmxlU3BhY2VOYW1lLCBpbnQgb3B0aW9ucywgYm9vbCBjb25jdXJyZW50KQogewogCXN0cnVjdCBS ZWluZGV4SW5kZXhDYWxsYmFja1N0YXRlIHN0YXRlOwogCU9pZAkJCWluZE9pZDsKKwlPaWQJCQl0 YWJsZXNwYWNlT2lkID0gSW52YWxpZE9pZDsKIAlSZWxhdGlvbglpcmVsOwogCWNoYXIJCXBlcnNp c3RlbmNlOwogCkBAIC0yMzQ1LDEyICsyMzQ2LDI2IEBAIFJlaW5kZXhJbmRleChSYW5nZVZhciAq aW5kZXhSZWxhdGlvbiwgaW50IG9wdGlvbnMsIGJvb2wgY29uY3VycmVudCkKIAl9CiAKIAlwZXJz aXN0ZW5jZSA9IGlyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2U7CisKKwkvKiBEZWZpbmUgbmV3 IHRhYmxlc3BhY2VPaWQgaWYgaXQgaXMgd2FudGVkIGJ5IGNhbGxlciAqLworCWlmIChuZXdUYWJs ZVNwYWNlTmFtZSkKKwl7CisJCXRhYmxlc3BhY2VPaWQgPSBnZXRfdGFibGVzcGFjZV9vaWQobmV3 VGFibGVTcGFjZU5hbWUsIGZhbHNlKTsKKworCQkvKiBDYW4ndCBtb3ZlIGEgbm9uLXNoYXJlZCBy ZWxhdGlvbiBpbnRvIHBnX2dsb2JhbCAqLworCQlpZiAodGFibGVzcGFjZU9pZCA9PSBHTE9CQUxU QUJMRVNQQUNFX09JRCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgbm9uLXNo YXJlZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlIFwiJXNcIiIsCisJCQkJCQkJbmV3VGFibGVTcGFj ZU5hbWUpKSk7CisJfQorCiAJaW5kZXhfY2xvc2UoaXJlbCwgTm9Mb2NrKTsKIAogCWlmIChjb25j dXJyZW50KQotCQlSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoaW5kT2lkLCBvcHRpb25zKTsK KwkJUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGluZE9pZCwgdGFibGVzcGFjZU9pZCwgb3B0 aW9ucyk7CiAJZWxzZQotCQlyZWluZGV4X2luZGV4KGluZE9pZCwgZmFsc2UsIHBlcnNpc3RlbmNl LAorCQlyZWluZGV4X2luZGV4KGluZE9pZCwgdGFibGVzcGFjZU9pZCwgZmFsc2UsIHBlcnNpc3Rl bmNlLAogCQkJCQkgIG9wdGlvbnMgfCBSRUlOREVYT1BUX1JFUE9SVF9QUk9HUkVTUyk7CiB9CiAK QEAgLTI0MjksMTAgKzI0NDQsMTEgQEAgUmFuZ2VWYXJDYWxsYmFja0ZvclJlaW5kZXhJbmRleChj b25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAgKgkJUmVjcmVhdGUgYWxsIGluZGV4ZXMgb2YgYSB0 YWJsZSAoYW5kIG9mIGl0cyB0b2FzdCB0YWJsZSwgaWYgYW55KQogICovCiBPaWQKLVJlaW5kZXhU YWJsZShSYW5nZVZhciAqcmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGNvbmN1cnJlbnQpCitS ZWluZGV4VGFibGUoUmFuZ2VWYXIgKnJlbGF0aW9uLCBjaGFyICpuZXdUYWJsZVNwYWNlTmFtZSwg aW50IG9wdGlvbnMsIGJvb2wgY29uY3VycmVudCkKIHsKIAlPaWQJCQloZWFwT2lkOwogCWJvb2wJ CXJlc3VsdDsKKwlPaWQgCQl0YWJsZXNwYWNlT2lkID0gSW52YWxpZE9pZDsKIAogCS8qIFRoZSBs b2NrIGxldmVsIHVzZWQgaGVyZSBzaG91bGQgbWF0Y2ggcmVpbmRleF9yZWxhdGlvbigpLiAqLwog CWhlYXBPaWQgPSBSYW5nZVZhckdldFJlbGlkRXh0ZW5kZWQocmVsYXRpb24sCkBAIC0yNDQwLDkg KzI0NTYsMjIgQEAgUmVpbmRleFRhYmxlKFJhbmdlVmFyICpyZWxhdGlvbiwgaW50IG9wdGlvbnMs IGJvb2wgY29uY3VycmVudCkKIAkJCQkJCQkJCSAgIDAsCiAJCQkJCQkJCQkgICBSYW5nZVZhckNh bGxiYWNrT3duc1RhYmxlLCBOVUxMKTsKIAorCS8qIERlZmluZSBuZXcgdGFibGVzcGFjZU9pZCBp ZiBpdCBpcyB3YW50ZWQgYnkgY2FsbGVyICovCisJaWYgKG5ld1RhYmxlU3BhY2VOYW1lKQorCXsK KwkJdGFibGVzcGFjZU9pZCA9IGdldF90YWJsZXNwYWNlX29pZChuZXdUYWJsZVNwYWNlTmFtZSwg ZmFsc2UpOworCisJCS8qIENhbid0IG1vdmUgYSBub24tc2hhcmVkIHJlbGF0aW9uIGludG8gcGdf Z2xvYmFsICovCisJCWlmICh0YWJsZXNwYWNlT2lkID09IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRv IHRhYmxlc3BhY2UgXCIlc1wiIiwKKwkJCQkJCQluZXdUYWJsZVNwYWNlTmFtZSkpKTsKKwl9CisK IAlpZiAoY29uY3VycmVudCkKIAl7Ci0JCXJlc3VsdCA9IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShoZWFwT2lkLCBvcHRpb25zKTsKKwkJcmVzdWx0ID0gUmVpbmRleFJlbGF0aW9uQ29uY3Vy cmVudGx5KGhlYXBPaWQsIHRhYmxlc3BhY2VPaWQsIG9wdGlvbnMpOwogCiAJCWlmICghcmVzdWx0 KQogCQkJZXJlcG9ydChOT1RJQ0UsCkBAIC0yNDUyLDYgKzI0ODEsNyBAQCBSZWluZGV4VGFibGUo UmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBjb25jdXJyZW50KQogCWVsc2UK IAl7CiAJCXJlc3VsdCA9IHJlaW5kZXhfcmVsYXRpb24oaGVhcE9pZCwKKwkJCQkJCQkJICB0YWJs ZXNwYWNlT2lkLAogCQkJCQkJCQkgIFJFSU5ERVhfUkVMX1BST0NFU1NfVE9BU1QgfAogCQkJCQkJ CQkgIFJFSU5ERVhfUkVMX0NIRUNLX0NPTlNUUkFJTlRTLAogCQkJCQkJCQkgIG9wdGlvbnMgfCBS RUlOREVYT1BUX1JFUE9SVF9QUk9HUkVTUyk7CkBAIC0yNDczLDEwICsyNTAzLDExIEBAIFJlaW5k ZXhUYWJsZShSYW5nZVZhciAqcmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGNvbmN1cnJlbnQp CiAgKiBUaGF0IG1lYW5zIHRoaXMgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGhpbiBhIHVzZXIgdHJh bnNhY3Rpb24gYmxvY2shCiAgKi8KIHZvaWQKLVJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBj aGFyICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAorUmVpbmRleE11 bHRpcGxlVGFibGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9i amVjdEtpbmQsIGNoYXIgKm5ld1RhYmxlU3BhY2VOYW1lLAogCQkJCQkgIGludCBvcHRpb25zLCBi b29sIGNvbmN1cnJlbnQpCiB7CiAJT2lkCQkJb2JqZWN0T2lkOworCU9pZAkJCXRhYmxlc3BhY2VP aWQgPSBJbnZhbGlkT2lkOwogCVJlbGF0aW9uCXJlbGF0aW9uUmVsYXRpb247CiAJVGFibGVTY2Fu RGVzYyBzY2FuOwogCVNjYW5LZXlEYXRhIHNjYW5fa2V5c1sxXTsKQEAgLTI0ODcsNiArMjUxOCw3 IEBAIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1lLCBSZWluZGV4 T2JqZWN0VHlwZSBvYmplY3RLaW5kLAogCUxpc3RDZWxsICAgKmw7CiAJaW50CQkJbnVtX2tleXM7 CiAJYm9vbAkJY29uY3VycmVudF93YXJuaW5nID0gZmFsc2U7CisJYm9vbAkJbWFwcGVkX3dhcm5p bmcgPSBmYWxzZTsKIAogCUFzc2VydEFyZyhvYmplY3ROYW1lKTsKIAlBc3NlcnQob2JqZWN0S2lu ZCA9PSBSRUlOREVYX09CSkVDVF9TQ0hFTUEgfHwKQEAgLTI1MjUsNiArMjU1NywxOSBAQCBSZWlu ZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVpbmRleE9iamVjdFR5 cGUgb2JqZWN0S2luZCwKIAkJCQkJCSAgIG9iamVjdE5hbWUpOwogCX0KIAorCS8qIERlZmluZSBu ZXcgdGFibGVzcGFjZU9pZCBpZiBpdCBpcyB3YW50ZWQgYnkgY2FsbGVyICovCisJaWYgKG5ld1Rh YmxlU3BhY2VOYW1lKQorCXsKKwkJdGFibGVzcGFjZU9pZCA9IGdldF90YWJsZXNwYWNlX29pZChu ZXdUYWJsZVNwYWNlTmFtZSwgZmFsc2UpOworCisJCS8qIENhbid0IG1vdmUgYSBub24tc2hhcmVk IHJlbGF0aW9uIGludG8gcGdfZ2xvYmFsICovCisJCWlmICh0YWJsZXNwYWNlT2lkID09IEdMT0JB TFRBQkxFU1BBQ0VfT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBub24t c2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKKwkJCQkJCQluZXdUYWJsZVNw YWNlTmFtZSkpKTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSBhIG1lbW9yeSBjb250ZXh0IHRoYXQg d2lsbCBzdXJ2aXZlIGZvcmNlZCB0cmFuc2FjdGlvbiBjb21taXRzIHdlCiAJICogZG8gYmVsb3cu ICBTaW5jZSBpdCBpcyBhIGNoaWxkIG9mIFBvcnRhbENvbnRleHQsIGl0IHdpbGwgZ28gYXdheQpA QCAtMjYxNSw2ICsyNjYwLDIyIEBAIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpv YmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAogCQkJY29udGludWU7CiAJ CX0KIAorCQkvKgorCQkgKiBTa2lwIGFsbCBtYXBwZWQgcmVsYXRpb25zIGlmIFRBQkxFU1BBQ0Ug aXMgc3BlY2lmaWVkLgorCQkgKiByZWxmaWxlbm9kZSA9PSAwIGNoZWNrcyBhZnRlciB0aGF0LCBz aW1pbGFybHkgdG8KKwkJICogUmVsYXRpb25Jc01hcHBlZCgpLgorCQkgKi8KKwkJaWYgKE9pZElz VmFsaWQodGFibGVzcGFjZU9pZCkgJiYKKwkJCSFPaWRJc1ZhbGlkKGNsYXNzdHVwbGUtPnJlbGZp bGVub2RlKSkKKwkJeworCQkJaWYgKCFtYXBwZWRfd2FybmluZykKKwkJCQllcmVwb3J0KFdBUk5J TkcsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJ CQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgaW5kZXhlcyBmb3IgbWFwcGVk IHJlbGF0aW9ucywgc2tpcHBpbmcgYWxsIikpKTsKKwkJCW1hcHBlZF93YXJuaW5nID0gdHJ1ZTsK KwkJCWNvbnRpbnVlOworCQl9CisKIAkJLyogU2F2ZSB0aGUgbGlzdCBvZiByZWxhdGlvbiBPSURz IGluIHByaXZhdGUgY29udGV4dCAqLwogCQlvbGQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJp dmF0ZV9jb250ZXh0KTsKIApAQCAtMjY0OCw3ICsyNzA5LDcgQEAgUmVpbmRleE11bHRpcGxlVGFi bGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQs CiAKIAkJaWYgKGNvbmN1cnJlbnQpCiAJCXsKLQkJCSh2b2lkKSBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkocmVsaWQsIG9wdGlvbnMpOworCQkJKHZvaWQpIFJlaW5kZXhSZWxhdGlvbkNvbmN1 cnJlbnRseShyZWxpZCwgdGFibGVzcGFjZU9pZCwgb3B0aW9ucyk7CiAJCQkvKiBSZWluZGV4UmVs YXRpb25Db25jdXJyZW50bHkoKSBkb2VzIHRoZSB2ZXJib3NlIG91dHB1dCAqLwogCQl9CiAJCWVs c2UKQEAgLTI2NTYsNiArMjcxNyw3IEBAIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFy ICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAogCQkJYm9vbAkJcmVz dWx0OwogCiAJCQlyZXN1bHQgPSByZWluZGV4X3JlbGF0aW9uKHJlbGlkLAorCQkJCQkJCQkJICB0 YWJsZXNwYWNlT2lkLAogCQkJCQkJCQkJICBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNUIHwKIAkJ CQkJCQkJCSAgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMsCiAJCQkJCQkJCQkgIG9wdGlv bnMgfCBSRUlOREVYT1BUX1JFUE9SVF9QUk9HUkVTUyk7CkBAIC0yNjg4LDYgKzI3NTAsOSBAQCBS ZWluZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVpbmRleE9iamVj dFR5cGUgb2JqZWN0S2luZCwKICAqIGl0c2VsZiB3aWxsIGJlIHJlYnVpbHQuICBJZiAncmVsYXRp b25PaWQnIGJlbG9uZ3MgdG8gYSBwYXJ0aXRpb25lZCB0YWJsZQogICogdGhlbiB3ZSBpc3N1ZSBh IHdhcm5pbmcgdG8gbWVudGlvbiB0aGVzZSBhcmUgbm90IHlldCBzdXBwb3J0ZWQuCiAgKgorICog J3RhYmxlc3BhY2VPaWQnIGRlZmluZXMgdGhlIG5ldyB0YWJsZXNwYWNlIHdoZXJlIHRoZSBpbmRl eGVzIG9mCisgKiB0aGUgcmVsYXRpb24gd2lsbCBiZSByZWJ1aWx0LgorICoKICAqIFRoZSBsb2Nr cyB0YWtlbiBvbiBwYXJlbnQgdGFibGVzIGFuZCBpbnZvbHZlZCBpbmRleGVzIGFyZSBrZXB0IHVu dGlsIHRoZQogICogdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLCBhdCB3aGljaCBwb2ludCBhIHNl c3Npb24gbG9jayBpcyB0YWtlbiBvbiBlYWNoCiAgKiByZWxhdGlvbi4gIEJvdGggb2YgdGhlc2Ug cHJvdGVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgc2NoZW1hIGNoYW5nZXMuCkBAIC0yNjk2LDcgKzI3 NjEsNyBAQCBSZWluZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVp bmRleE9iamVjdFR5cGUgb2JqZWN0S2luZCwKICAqIGluZGV4ZXMsIHdoZW4gcmVsZXZhbnQpLCBv dGhlcndpc2UgcmV0dXJucyBmYWxzZS4KICAqLwogc3RhdGljIGJvb2wKLVJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIGludCBvcHRpb25zKQorUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgT2lkIHRhYmxlc3BhY2VPaWQsIGludCBv cHRpb25zKQogewogCUxpc3QJICAgKmhlYXBSZWxhdGlvbklkcyA9IE5JTDsKIAlMaXN0CSAgICpp bmRleElkcyA9IE5JTDsKQEAgLTI3NjksNiArMjgzNCwxMiBAQCBSZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBpbnQgb3B0aW9ucykKIAkJCQkvKiBPcGVuIHJlbGF0 aW9uIHRvIGdldCBpdHMgaW5kZXhlcyAqLwogCQkJCWhlYXBSZWxhdGlvbiA9IHRhYmxlX29wZW4o cmVsYXRpb25PaWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAKKwkJCQlpZiAoT2lkSXNW YWxpZCh0YWJsZXNwYWNlT2lkKSAmJiBSZWxhdGlvbklzTWFwcGVkKGhlYXBSZWxhdGlvbikpCisJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBp bmRleGVzIGZvciBtYXBwZWQgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCQkJCVJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKGhlYXBSZWxhdGlvbikpKSk7CisKIAkJCQkvKiBBZGQgYWxsIHRoZSB2YWxp ZCBpbmRleGVzIG9mIHJlbGF0aW9uIHRvIGxpc3QgKi8KIAkJCQlmb3JlYWNoKGxjLCBSZWxhdGlv bkdldEluZGV4TGlzdChoZWFwUmVsYXRpb24pKQogCQkJCXsKQEAgLTI5MzcsNiArMzAwOCwxMiBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBpbnQgb3B0aW9u cykKIAkJaGVhcFJlbCA9IHRhYmxlX29wZW4oaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRyZWxpZCwK IAkJCQkJCQkgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsKIAorCQlpZiAoT2lkSXNWYWxpZCh0 YWJsZXNwYWNlT2lkKSAmJiBSZWxhdGlvbklzTWFwcGVkKGhlYXBSZWwpKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ CQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgbWFwcGVkIHJlbGF0aW9uIFwi JXNcIiIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaGVhcFJlbCkpKSk7CisKIAkJ cGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5E RVgsCiAJCQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsaWQoaGVhcFJlbCkpOwogCQlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9DT01NQU5ELApAQCAtMjk1Niw2 ICszMDMzLDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwg aW50IG9wdGlvbnMpCiAJCS8qIENyZWF0ZSBuZXcgaW5kZXggZGVmaW5pdGlvbiBiYXNlZCBvbiBn aXZlbiBpbmRleCAqLwogCQluZXdJbmRleElkID0gaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9j b3B5KGhlYXBSZWwsCiAJCQkJCQkJCQkJCQkJaW5kZXhJZCwKKwkJCQkJCQkJCQkJCQl0YWJsZXNw YWNlT2lkLAogCQkJCQkJCQkJCQkJCWNvbmN1cnJlbnROYW1lKTsKIAogCQkvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwppbmRleCAxYzQzOTRhYmVhMS4uNTljZWY0NmYyZmYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RhYmxlY21kcy5jCkBAIC0xODIxLDcgKzE4MjEsNyBAQCBFeGVjdXRlVHJ1bmNhdGVHdXRz KExpc3QgKmV4cGxpY2l0X3JlbHMsIExpc3QgKnJlbGlkcywgTGlzdCAqcmVsaWRzX2xvZ2dlZCwK IAkJCS8qCiAJCQkgKiBSZWNvbnN0cnVjdCB0aGUgaW5kZXhlcyB0byBtYXRjaCwgYW5kIHdlJ3Jl IGRvbmUuCiAJCQkgKi8KLQkJCXJlaW5kZXhfcmVsYXRpb24oaGVhcF9yZWxpZCwgUkVJTkRFWF9S RUxfUFJPQ0VTU19UT0FTVCwgMCk7CisJCQlyZWluZGV4X3JlbGF0aW9uKGhlYXBfcmVsaWQsIElu dmFsaWRPaWQsIFJFSU5ERVhfUkVMX1BST0NFU1NfVE9BU1QsIDApOwogCQl9CiAKIAkJcGdzdGF0 X2NvdW50X3RydW5jYXRlKHJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5 ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IDgwMzRkNWE1MWM1 Li4xZjMyYWQ2NTgyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTQzOTEsNiArNDM5MSw3IEBA IF9jb3B5UmVpbmRleFN0bXQoY29uc3QgUmVpbmRleFN0bXQgKmZyb20pCiAJQ09QWV9TVFJJTkdf RklFTEQobmFtZSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQob3B0aW9ucyk7CiAJQ09QWV9TQ0FMQVJf RklFTEQoY29uY3VycmVudCk7CisJQ09QWV9TVFJJTkdfRklFTEQodGFibGVzcGFjZW5hbWUpOwog CiAJcmV0dXJuIG5ld25vZGU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVh bGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggOWM4MDcwYzY0 MDYuLmNkNDVmMWU2MTIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNz LmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0yMTE4LDYgKzIxMTgs NyBAQCBfZXF1YWxSZWluZGV4U3RtdChjb25zdCBSZWluZGV4U3RtdCAqYSwgY29uc3QgUmVpbmRl eFN0bXQgKmIpCiAJQ09NUEFSRV9TVFJJTkdfRklFTEQobmFtZSk7CiAJQ09NUEFSRV9TQ0FMQVJf RklFTEQob3B0aW9ucyk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoY29uY3VycmVudCk7CisJQ09N UEFSRV9TVFJJTkdfRklFTEQodGFibGVzcGFjZW5hbWUpOwogCiAJcmV0dXJuIHRydWU7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQppbmRleCBhZDViZTkwMmIwNy4uZjM3MjdmN2JjN2IgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAt ODM1OCwzMSArODM1OCwzMyBAQCBEcm9wVHJhbnNmb3JtU3RtdDogRFJPUCBUUkFOU0ZPUk0gb3B0 X2lmX2V4aXN0cyBGT1IgVHlwZW5hbWUgTEFOR1VBR0UgbmFtZSBvcHRfZAogICoKICAqCQlRVUVS WToKICAqCi0gKgkJUkVJTkRFWCBbIChvcHRpb25zKSBdIHR5cGUgW0NPTkNVUlJFTlRMWV0gPG5h bWU+CisgKgkJUkVJTkRFWCBbIChvcHRpb25zKSBdIHR5cGUgW0NPTkNVUlJFTlRMWV0gPG5hbWU+ IFsgVEFCTEVTUEFDRSA8dGFibGVzcGFjZV9uYW1lPiBdCiAgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKIFJlaW5kZXhTdG10OgotCQkJUkVJTkRFWCByZWluZGV4X3RhcmdldF90eXBlIG9wdF9jb25j dXJyZW50bHkgcXVhbGlmaWVkX25hbWUKKwkJCVJFSU5ERVggcmVpbmRleF90YXJnZXRfdHlwZSBv cHRfY29uY3VycmVudGx5IHF1YWxpZmllZF9uYW1lIE9wdFRhYmxlU3BhY2UKIAkJCQl7CiAJCQkJ CVJlaW5kZXhTdG10ICpuID0gbWFrZU5vZGUoUmVpbmRleFN0bXQpOwogCQkJCQluLT5raW5kID0g JDI7CiAJCQkJCW4tPmNvbmN1cnJlbnQgPSAkMzsKIAkJCQkJbi0+cmVsYXRpb24gPSAkNDsKKwkJ CQkJbi0+dGFibGVzcGFjZW5hbWUgPSAkNTsKIAkJCQkJbi0+bmFtZSA9IE5VTEw7CiAJCQkJCW4t Pm9wdGlvbnMgPSAwOwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9Ci0JCQl8IFJFSU5ERVgg cmVpbmRleF90YXJnZXRfbXVsdGl0YWJsZSBvcHRfY29uY3VycmVudGx5IG5hbWUKKwkJCXwgUkVJ TkRFWCByZWluZGV4X3RhcmdldF9tdWx0aXRhYmxlIG9wdF9jb25jdXJyZW50bHkgbmFtZSBPcHRU YWJsZVNwYWNlCiAJCQkJewogCQkJCQlSZWluZGV4U3RtdCAqbiA9IG1ha2VOb2RlKFJlaW5kZXhT dG10KTsKIAkJCQkJbi0+a2luZCA9ICQyOwogCQkJCQluLT5jb25jdXJyZW50ID0gJDM7CiAJCQkJ CW4tPm5hbWUgPSAkNDsKKwkJCQkJbi0+dGFibGVzcGFjZW5hbWUgPSAkNTsKIAkJCQkJbi0+cmVs YXRpb24gPSBOVUxMOwogCQkJCQluLT5vcHRpb25zID0gMDsKIAkJCQkJJCQgPSAoTm9kZSAqKW47 CiAJCQkJfQotCQkJfCBSRUlOREVYICcoJyByZWluZGV4X29wdGlvbl9saXN0ICcpJyByZWluZGV4 X3RhcmdldF90eXBlIG9wdF9jb25jdXJyZW50bHkgcXVhbGlmaWVkX25hbWUKKwkJCXwgUkVJTkRF WCAnKCcgcmVpbmRleF9vcHRpb25fbGlzdCAnKScgcmVpbmRleF90YXJnZXRfdHlwZSBvcHRfY29u Y3VycmVudGx5IHF1YWxpZmllZF9uYW1lIE9wdFRhYmxlU3BhY2UKIAkJCQl7CiAJCQkJCVJlaW5k ZXhTdG10ICpuID0gbWFrZU5vZGUoUmVpbmRleFN0bXQpOwogCQkJCQluLT5raW5kID0gJDU7CkBA IC04MzkwLDkgKzgzOTIsMTAgQEAgUmVpbmRleFN0bXQ6CiAJCQkJCW4tPnJlbGF0aW9uID0gJDc7 CiAJCQkJCW4tPm5hbWUgPSBOVUxMOwogCQkJCQluLT5vcHRpb25zID0gJDM7CisJCQkJCW4tPnRh Ymxlc3BhY2VuYW1lID0gJDg7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgUkVJ TkRFWCAnKCcgcmVpbmRleF9vcHRpb25fbGlzdCAnKScgcmVpbmRleF90YXJnZXRfbXVsdGl0YWJs ZSBvcHRfY29uY3VycmVudGx5IG5hbWUKKwkJCXwgUkVJTkRFWCAnKCcgcmVpbmRleF9vcHRpb25f bGlzdCAnKScgcmVpbmRleF90YXJnZXRfbXVsdGl0YWJsZSBvcHRfY29uY3VycmVudGx5IG5hbWUg T3B0VGFibGVTcGFjZQogCQkJCXsKIAkJCQkJUmVpbmRleFN0bXQgKm4gPSBtYWtlTm9kZShSZWlu ZGV4U3RtdCk7CiAJCQkJCW4tPmtpbmQgPSAkNTsKQEAgLTg0MDAsNiArODQwMyw3IEBAIFJlaW5k ZXhTdG10OgogCQkJCQluLT5uYW1lID0gJDc7CiAJCQkJCW4tPnJlbGF0aW9uID0gTlVMTDsKIAkJ CQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQluLT50YWJsZXNwYWNlbmFtZSA9ICQ4OwogCQkJCQkk JCA9IChOb2RlICopbjsKIAkJCQl9CiAJCTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av dXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKaW5kZXggNDQ3NDY1OGRkZjQu LjhiYWU0MWQ1NzliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysg Yi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtNzc5LDEwICs3NzksMTAgQEAgc3RhbmRh cmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCXN3aXRjaCAoc3RtdC0+ a2luZCkKIAkJCQl7CiAJCQkJCWNhc2UgUkVJTkRFWF9PQkpFQ1RfSU5ERVg6Ci0JCQkJCQlSZWlu ZGV4SW5kZXgoc3RtdC0+cmVsYXRpb24sIHN0bXQtPm9wdGlvbnMsIHN0bXQtPmNvbmN1cnJlbnQp OworCQkJCQkJUmVpbmRleEluZGV4KHN0bXQtPnJlbGF0aW9uLCBzdG10LT50YWJsZXNwYWNlbmFt ZSwgc3RtdC0+b3B0aW9ucywgc3RtdC0+Y29uY3VycmVudCk7CiAJCQkJCQlicmVhazsKIAkJCQkJ Y2FzZSBSRUlOREVYX09CSkVDVF9UQUJMRToKLQkJCQkJCVJlaW5kZXhUYWJsZShzdG10LT5yZWxh dGlvbiwgc3RtdC0+b3B0aW9ucywgc3RtdC0+Y29uY3VycmVudCk7CisJCQkJCQlSZWluZGV4VGFi bGUoc3RtdC0+cmVsYXRpb24sIHN0bXQtPnRhYmxlc3BhY2VuYW1lLCBzdG10LT5vcHRpb25zLCBz dG10LT5jb25jdXJyZW50KTsKIAkJCQkJCWJyZWFrOwogCQkJCQljYXNlIFJFSU5ERVhfT0JKRUNU X1NDSEVNQToKIAkJCQkJY2FzZSBSRUlOREVYX09CSkVDVF9TWVNURU06CkBAIC03OTgsNyArNzk4 LDcgQEAgc3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCQkJ CQkJCQkJICAoc3RtdC0+a2luZCA9PSBSRUlOREVYX09CSkVDVF9TQ0hFTUEpID8gIlJFSU5ERVgg U0NIRU1BIiA6CiAJCQkJCQkJCQkJCQkgIChzdG10LT5raW5kID09IFJFSU5ERVhfT0JKRUNUX1NZ U1RFTSkgPyAiUkVJTkRFWCBTWVNURU0iIDoKIAkJCQkJCQkJCQkJCSAgIlJFSU5ERVggREFUQUJB U0UiKTsKLQkJCQkJCVJlaW5kZXhNdWx0aXBsZVRhYmxlcyhzdG10LT5uYW1lLCBzdG10LT5raW5k LCBzdG10LT5vcHRpb25zLCBzdG10LT5jb25jdXJyZW50KTsKKwkJCQkJCVJlaW5kZXhNdWx0aXBs ZVRhYmxlcyhzdG10LT5uYW1lLCBzdG10LT5raW5kLCBzdG10LT50YWJsZXNwYWNlbmFtZSwgc3Rt dC0+b3B0aW9ucywgc3RtdC0+Y29uY3VycmVudCk7CiAJCQkJCQlicmVhazsKIAkJCQkJZGVmYXVs dDoKIAkJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuYwppbmRleCAyMjcxNzkxNGM3My4uNGM5NjBiMDVjNGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMKQEAgLTMzNjYsNiArMzM2NiwxMiBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4 dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9s aXN0X29mX3NjaGVtYXMpOwogCWVsc2UgaWYgKE1hdGNoZXMoIlJFSU5ERVgiLCAiU1lTVEVNfERB VEFCQVNFIiwgIkNPTkNVUlJFTlRMWSIpKQogCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zv cl9saXN0X29mX2RhdGFiYXNlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiUkVJTkRFWCIsIE1hdGNo QW55LCAiQ09OQ1VSUkVOVExZIiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRVNQ QUNFIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiUkVJTkRFWCIsIE1hdGNoQW55LCBNYXRjaEFueSkp CisJCUNPTVBMRVRFX1dJVEgoIlRBQkxFU1BBQ0UiKTsKKwllbHNlIGlmIChUYWlsTWF0Y2hlcygi VEFCTEVTUEFDRSIpKQorCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3Rh Ymxlc3BhY2VzKTsKIAogLyogU0VDVVJJVFkgTEFCRUwgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJT RUNVUklUWSIpKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IGEyODkwYzEzMTRkLi5mMzhlOTc4YjQ1ZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvaW5kZXguaApAQCAtODAsNiArODAsNyBAQCBleHRlcm4gT2lkCWluZGV4X2NyZWF0 ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAKIGV4dGVybiBPaWQJaW5kZXhfY29uY3VycmVudGx5 X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJCQkJCQkgICBPaWQgb2xk SW5kZXhJZCwKKwkJCQkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwKIAkJCQkJCQkJCQkgICBj b25zdCBjaGFyICpuZXdOYW1lKTsKIAogZXh0ZXJuIHZvaWQgaW5kZXhfY29uY3VycmVudGx5X2J1 aWxkKE9pZCBoZWFwUmVsYXRpb25JZCwKQEAgLTEzMSw4ICsxMzIsOCBAQCBleHRlcm4gdm9pZCB2 YWxpZGF0ZV9pbmRleChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCwgU25hcHNob3Qgc25hcHNob3Qp OwogCiBleHRlcm4gdm9pZCBpbmRleF9zZXRfc3RhdGVfZmxhZ3MoT2lkIGluZGV4SWQsIEluZGV4 U3RhdGVGbGFnc0FjdGlvbiBhY3Rpb24pOwogCi1leHRlcm4gdm9pZCByZWluZGV4X2luZGV4KE9p ZCBpbmRleElkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsCi0JCQkJCQkgIGNoYXIgcmVs cGVyc2lzdGVuY2UsIGludCBvcHRpb25zKTsKK2V4dGVybiB2b2lkIHJlaW5kZXhfaW5kZXgoT2lk IGluZGV4SWQsIE9pZCB0YWJsZXNwYWNlT2lkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3Ms CisJCQkgIGNoYXIgcmVscGVyc2lzdGVuY2UsIGludCBvcHRpb25zKTsKIAogLyogRmxhZyBiaXRz IGZvciByZWluZGV4X3JlbGF0aW9uKCk6ICovCiAjZGVmaW5lIFJFSU5ERVhfUkVMX1BST0NFU1Nf VE9BU1QJCQkweDAxCkBAIC0xNDEsNyArMTQyLDcgQEAgZXh0ZXJuIHZvaWQgcmVpbmRleF9pbmRl eChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLAogI2RlZmluZSBSRUlO REVYX1JFTF9GT1JDRV9JTkRFWEVTX1VOTE9HR0VECTB4MDgKICNkZWZpbmUgUkVJTkRFWF9SRUxf Rk9SQ0VfSU5ERVhFU19QRVJNQU5FTlQgMHgxMAogCi1leHRlcm4gYm9vbCByZWluZGV4X3JlbGF0 aW9uKE9pZCByZWxpZCwgaW50IGZsYWdzLCBpbnQgb3B0aW9ucyk7CitleHRlcm4gYm9vbCByZWlu ZGV4X3JlbGF0aW9uKE9pZCByZWxpZCwgT2lkIHRhYmxlc3BhY2VPaWQsIGludCBmbGFncywgaW50 IG9wdGlvbnMpOwogCiBleHRlcm4gYm9vbCBSZWluZGV4SXNQcm9jZXNzaW5nSGVhcChPaWQgaGVh cE9pZCk7CiBleHRlcm4gYm9vbCBSZWluZGV4SXNQcm9jZXNzaW5nSW5kZXgoT2lkIGluZGV4T2lk KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvZGVmcmVtLmgKaW5kZXggZGVkZTlkNzg4ZWMuLjQ5OTllNTkwZTY3IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAorKysgYi9zcmMvaW5jbHVkZS9j b21tYW5kcy9kZWZyZW0uaApAQCAtMzQsMTAgKzM0LDEwIEBAIGV4dGVybiBPYmplY3RBZGRyZXNz IERlZmluZUluZGV4KE9pZCByZWxhdGlvbklkLAogCQkJCQkJCQkgYm9vbCBjaGVja19ub3RfaW5f dXNlLAogCQkJCQkJCQkgYm9vbCBza2lwX2J1aWxkLAogCQkJCQkJCQkgYm9vbCBxdWlldCk7Ci1l eHRlcm4gdm9pZCBSZWluZGV4SW5kZXgoUmFuZ2VWYXIgKmluZGV4UmVsYXRpb24sIGludCBvcHRp b25zLCBib29sIGNvbmN1cnJlbnQpOwotZXh0ZXJuIE9pZAlSZWluZGV4VGFibGUoUmFuZ2VWYXIg KnJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBjb25jdXJyZW50KTsKK2V4dGVybiB2b2lkIFJl aW5kZXhJbmRleChSYW5nZVZhciAqaW5kZXhSZWxhdGlvbiwgY2hhciAqbmV3VGFibGVTcGFjZU5h bWUsIGludCBvcHRpb25zLCBib29sIGNvbmN1cnJlbnQpOworZXh0ZXJuIE9pZAlSZWluZGV4VGFi bGUoUmFuZ2VWYXIgKnJlbGF0aW9uLCBjaGFyICpuZXdUYWJsZVNwYWNlTmFtZSwgaW50IG9wdGlv bnMsIGJvb2wgY29uY3VycmVudCk7CiBleHRlcm4gdm9pZCBSZWluZGV4TXVsdGlwbGVUYWJsZXMo Y29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVpbmRleE9iamVjdFR5cGUgb2JqZWN0S2luZCwKLQkJ CQkJCQkJICBpbnQgb3B0aW9ucywgYm9vbCBjb25jdXJyZW50KTsKKwkJCQkJCQkJICBjaGFyICpu ZXdUYWJsZVNwYWNlTmFtZSwgaW50IG9wdGlvbnMsIGJvb2wgY29uY3VycmVudCk7CiBleHRlcm4g Y2hhciAqbWFrZU9iamVjdE5hbWUoY29uc3QgY2hhciAqbmFtZTEsIGNvbnN0IGNoYXIgKm5hbWUy LAogCQkJCQkJCWNvbnN0IGNoYXIgKmxhYmVsKTsKIGV4dGVybiBjaGFyICpDaG9vc2VSZWxhdGlv bk5hbWUoY29uc3QgY2hhciAqbmFtZTEsIGNvbnN0IGNoYXIgKm5hbWUyLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCmluZGV4IGY2N2JkOWZhZDU5Li4yNzI1ODYwYzkwZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaApAQCAtMzMzNCw2ICszMzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleFN0bXQKIAlj b25zdCBjaGFyICpuYW1lOwkJCS8qIG5hbWUgb2YgZGF0YWJhc2UgdG8gcmVpbmRleCAqLwogCWlu dAkJCW9wdGlvbnM7CQkvKiBSZWluZGV4IG9wdGlvbnMgZmxhZ3MgKi8KIAlib29sCQljb25jdXJy ZW50OwkJLyogcmVpbmRleCBjb25jdXJyZW50bHk/ICovCisJY2hhcgkgICAqdGFibGVzcGFjZW5h bWU7IC8qIG5hbWUgb2YgdGFibGVzcGFjZSB0byBzdG9yZSBpbmRleCAqLwogfSBSZWluZGV4U3Rt dDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFi bGVzcGFjZS5zb3VyY2UKaW5kZXggYTVmNjFhMzVkYzUuLjdkNjk4ZDQyOTRkIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UKQEAgLTE3LDYgKzE3LDUyIEBAIEFMVEVS IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBTRVQgKHNvbWVfbm9uZXhpc3RlbnRfcGFyYW1l dGVyID0gdHJ1ZSk7ICAtLSBmCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVT RVQgKHJhbmRvbV9wYWdlX2Nvc3QgPSAyLjApOyAtLSBmYWlsCiBBTFRFUiBUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nvc3QsIGVmZmVjdGl2ZV9pb19jb25j dXJyZW5jeSk7IC0tIG9rCiAKKy0tIGNyZWF0ZSB0YWJsZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBU QUJMRVNQQUNFIGNoYW5nZQorQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymwg KG51bTEgYmlnaW50LCBudW0yIGRvdWJsZSBwcmVjaXNpb24sIG51bTMgZG91YmxlIHByZWNpc2lv bik7CitJTlNFUlQgSU5UTyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xLCBudW0yLCBu dW0zKQorICBTRUxFQ1Qgcm91bmQocmFuZG9tKCkqMTAwKSwgcmFuZG9tKCksIHJhbmRvbSgpKjQy CisgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBzKGkpOworQ1JFQVRFIElOREVYIHJl Z3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymwg KG51bTEpOworCistLSBjaGVjayB0aGF0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZSBp cyB0cmFuc2FjdGlvbmFsCitCRUdJTjsKK1JFSU5ERVggSU5ERVggcmVncmVzc190YmxzcGFjZV90 ZXN0X3RibF9pZHggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworUkVJTkRFWCBUQUJMRSBy ZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK1JP TExCQUNLOworQkVHSU47CitSRUlOREVYIFRBQkxFIHBnX2FtIFRBQkxFU1BBQ0UgcmVncmVzc190 YmxzcGFjZTsKK1JPTExCQUNLOworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUg cmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFt ZT0ncmVncmVzc190YmxzcGFjZScpOworCistLSBmaXJzdCwgbGV0IHVzIHJlaW5kZXggYW5kIG1v dmUgdGhlIGVudGlyZSBkYXRhYmFzZSwgYWZ0ZXIgdGhhdCByZXR1cm4gZXZlcnl0aGluZyBiYWNr CitSRUlOREVYIERBVEFCQVNFIHJlZ3Jlc3Npb24gVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNl OyAtLSBvayB3aXRoIHdhcm5pbmcKK1JFSU5ERVggREFUQUJBU0UgcmVncmVzc2lvbiBUQUJMRVNQ QUNFIHBnX2RlZmF1bHQ7IC0tIG9rIHdpdGggd2FybmluZworU0VMRUNUIHJlbG5hbWUgRlJPTSBw Z19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3Bh Y2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworCistLSBjaGVjayBSRUlOREVY IHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UKK1JFSU5ERVggSU5ERVggcmVncmVzc190YmxzcGFjZV90 ZXN0X3RibF9pZHggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOyAtLSBvaworUkVJTkRFWCBU QUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZTsgLS0gb2sKK1JFSU5ERVggVEFCTEUgcGdfYXV0aGlkIFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZTsgLS0gZmFpbAorUkVJTkRFWCBTWVNURU0gQ09OQ1VSUkVOVExZIHBvc3RncmVzIFRBQkxF U1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gZmFpbAorUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5U TFkgcGdfYW0gVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOyAtLSBmYWlsCitSRUlOREVYIElO REVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IFRBQkxFU1BBQ0UgcGdfZ2xvYmFsOyAt LSBmYWlsCitSRUlOREVYIFRBQkxFIHBnX2FtIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsg LS0gb2sKKworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIHRvIG5ldyB0YWJsZXNw YWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShT RUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNw YWNlJykKK09SREVSIEJZIHJlbG5hbWU7CisKKy0tIG1vdmUgYmFjayB0byBwZ19kZWZhdWx0IHRh Ymxlc3BhY2UKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF90YmwgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OyAtLSBvaworUkVJTkRFWCBUQUJMRSBwZ19hbSBU QUJMRVNQQUNFIHBnX2RlZmF1bHQ7IC0tIG9rCisKKy0tIGNoZWNrIHRoYXQgYWxsIHJlbGF0aW9u cyBtb3ZlZCBiYWNrIHRvIHBnX2RlZmF1bHQKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MK K1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJF IHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKwogLS0gY3JlYXRlIGEgc2NoZW1hIHdlIGNh biB1c2UKIENSRUFURSBTQ0hFTUEgdGVzdHNjaGVtYTsKIApAQCAtMjc5LDYgKzMyNSw5IEBAIEFM VEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCBTRVQg VEFCTEVTUEFDRSBwZ19kZWZhdWx0CiAtLSBTaG91bGQgc3VjY2VlZAogRFJPUCBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZDsKIAorRFJPUCBJTkRFWCByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsX2lkeDsKK0RST1AgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsKKwog RFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwogCiBEUk9QIFJPTEUgcmVncmVzc190YWJs ZXNwYWNlX3VzZXIxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVz cGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQpp bmRleCAxNjJiNTkxYjMxNS4uYmQxN2ZlYWE3M2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0 L3RhYmxlc3BhY2Uuc291cmNlCkBAIC0yMCw2ICsyMCw3MCBAQCBFUlJPUjogIHVucmVjb2duaXpl ZCBwYXJhbWV0ZXIgInNvbWVfbm9uZXhpc3RlbnRfcGFyYW1ldGVyIgogQUxURVIgVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlIFJFU0VUIChyYW5kb21fcGFnZV9jb3N0ID0gMi4wKTsgLS0gZmFp bAogRVJST1I6ICBSRVNFVCBtdXN0IG5vdCBpbmNsdWRlIHZhbHVlcyBmb3IgcGFyYW1ldGVycwog QUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFJFU0VUIChyYW5kb21fcGFnZV9jb3N0 LCBlZmZlY3RpdmVfaW9fY29uY3VycmVuY3kpOyAtLSBvaworLS0gY3JlYXRlIHRhYmxlIHRvIHRl c3QgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitDUkVBVEUgVEFCTEUgcmVncmVzc190 YmxzcGFjZV90ZXN0X3RibCAobnVtMSBiaWdpbnQsIG51bTIgZG91YmxlIHByZWNpc2lvbiwgbnVt MyBkb3VibGUgcHJlY2lzaW9uKTsKK0lOU0VSVCBJTlRPIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90 YmwgKG51bTEsIG51bTIsIG51bTMpCisgIFNFTEVDVCByb3VuZChyYW5kb20oKSoxMDApLCByYW5k b20oKSwgcmFuZG9tKCkqNDIKKyAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwMDApIHMoaSk7 CitDUkVBVEUgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHggT04gcmVncmVzc190 YmxzcGFjZV90ZXN0X3RibCAobnVtMSk7CistLSBjaGVjayB0aGF0IFJFSU5ERVggd2l0aCBUQUJM RVNQQUNFIGNoYW5nZSBpcyB0cmFuc2FjdGlvbmFsCitCRUdJTjsKK1JFSU5ERVggSU5ERVggcmVn cmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOwor UkVJTkRFWCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZTsKK1JPTExCQUNLOworQkVHSU47CitSRUlOREVYIFRBQkxFIHBnX2FtIFRBQkxF U1BBQ0UgcmVncmVzc190YmxzcGFjZTsKK1JPTExCQUNLOworU0VMRUNUIHJlbG5hbWUgRlJPTSBw Z19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3Bh Y2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworIHJlbG5hbWUgCistLS0tLS0t LS0KKygwIHJvd3MpCisKKy0tIGZpcnN0LCBsZXQgdXMgcmVpbmRleCBhbmQgbW92ZSB0aGUgZW50 aXJlIGRhdGFiYXNlLCBhZnRlciB0aGF0IHJldHVybiBldmVyeXRoaW5nIGJhY2sKK1JFSU5ERVgg REFUQUJBU0UgcmVncmVzc2lvbiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7IC0tIG9rIHdp dGggd2FybmluZworV0FSTklORzogIGNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBpbmRleGVz IGZvciBtYXBwZWQgcmVsYXRpb25zLCBza2lwcGluZyBhbGwKK1JFSU5ERVggREFUQUJBU0UgcmVn cmVzc2lvbiBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7IC0tIG9rIHdpdGggd2FybmluZworV0FSTklO RzogIGNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBpbmRleGVzIGZvciBtYXBwZWQgcmVsYXRp b25zLCBza2lwcGluZyBhbGwKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJl bHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9 J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKyByZWxuYW1lIAorLS0tLS0tLS0tCisoMCByb3dzKQorCist LSBjaGVjayBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UKK1JFSU5ERVggSU5ERVggcmVn cmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOyAt LSBvaworUkVJTkRFWCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZTsgLS0gb2sKK1JFSU5ERVggVEFCTEUgcGdfYXV0aGlkIFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZTsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3QgbW92ZSBzeXN0ZW0g cmVsYXRpb24gInBnX2F1dGhpZF9yb2xuYW1lX2luZGV4IgorUkVJTkRFWCBTWVNURU0gQ09OQ1VS UkVOVExZIHBvc3RncmVzIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gZmFpbAorRVJS T1I6ICBjYW5ub3QgcmVpbmRleCBzeXN0ZW0gY2F0YWxvZ3MgY29uY3VycmVudGx5CitSRUlOREVY IFRBQkxFIENPTkNVUlJFTlRMWSBwZ19hbSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7IC0t IGZhaWwKK0VSUk9SOiAgY2Fubm90IHJlaW5kZXggc3lzdGVtIGNhdGFsb2dzIGNvbmN1cnJlbnRs eQorUkVJTkRFWCBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeCBUQUJMRVNQQUNF IHBnX2dsb2JhbDsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3QgbW92ZSBub24tc2hhcmVkIHJlbGF0 aW9uIHRvIHRhYmxlc3BhY2UgInBnX2dsb2JhbCIKK1JFSU5ERVggVEFCTEUgcGdfYW0gVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlOyAtLSBvaworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25z IG1vdmVkIHRvIG5ldyB0YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitX SEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBz cGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7CisgICAgICAgICAg ICByZWxuYW1lICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg cGdfYW1fbmFtZV9pbmRleAorIHBnX2FtX29pZF9pbmRleAorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVz dF90YmxfaWR4CisoMyByb3dzKQorCistLSBtb3ZlIGJhY2sgdG8gcGdfZGVmYXVsdCB0YWJsZXNw YWNlCitSRUlOREVYIFRBQkxFIENPTkNVUlJFTlRMWSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs IFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsgLS0gb2sKK1JFSU5ERVggVEFCTEUgcGdfYW0gVEFCTEVT UEFDRSBwZ19kZWZhdWx0OyAtLSBvaworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVk IGJhY2sgdG8gcGdfZGVmYXVsdAorU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUg cmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFt ZT0ncmVncmVzc190YmxzcGFjZScpOworIHJlbG5hbWUgCistLS0tLS0tLS0KKygwIHJvd3MpCisK IC0tIGNyZWF0ZSBhIHNjaGVtYSB3ZSBjYW4gdXNlCiBDUkVBVEUgU0NIRU1BIHRlc3RzY2hlbWE7 CiAtLSB0cnkgYSB0YWJsZQpAQCAtNzM2LDYgKzgwMCw4IEBAIEFMVEVSIFRBQkxFIEFMTCBJTiBU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZh dWx0CiBOT1RJQ0U6ICBubyBtYXRjaGluZyByZWxhdGlvbnMgaW4gdGFibGVzcGFjZSAicmVncmVz c190YmxzcGFjZV9yZW5hbWVkIiBmb3VuZAogLS0gU2hvdWxkIHN1Y2NlZWQKIERST1AgVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7CitEUk9QIElOREVYIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF90YmxfaWR4OworRFJPUCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOwog RFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwogTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0 byA2IG90aGVyIG9iamVjdHMKIERFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUgdGVzdHNj aGVtYS5mb28KCmJhc2UtY29tbWl0OiAwNDMzNGZkZTY5MTMyZjMzNWQ5ZDcwY2ZlZmU0MTliZDEy NzZiMjMyCi0tIAoyLjE5LjEKCg== --=_8bf9aec0eabb67ca05b1ab3602e96347--