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.92) (envelope-from ) id 1jHW0S-00036f-Vu for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Mar 2020 17:09:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1jHW0R-0004M7-PG for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Mar 2020 17:09:23 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1jHW0R-0004M0-9s for pgsql-hackers@lists.postgresql.org; Thu, 26 Mar 2020 17:09:23 +0000 Received: from cyclops.postgrespro.ru ([93.174.131.138] helo=mail.postgrespro.ru) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jHW0M-0000fm-Ke for pgsql-hackers@lists.postgresql.org; Thu, 26 Mar 2020 17:09:22 +0000 Received: from localhost (localhost [127.0.0.1]) by mail.postgrespro.ru (Postfix) with ESMTP id B8A8621C56E3; Thu, 26 Mar 2020 20:09:16 +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 2690B21C49D0; Thu, 26 Mar 2020 20:09:16 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1585242556; bh=gs8LLyK1EvMHDh6CPHpsyM9Pq2QhODTAarG7ai90v0A=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=deydIkgC2/764B7ziCQN1SdX9Lc+wNg2/GHUH7oC0l6BBs0rBOhdFcY6sVGMjzm1m r6T/rmtjFk1FS8L84ERRubv00nDJ79Fcf30q6+wvj9Y/i/nynknwELjfL82Zs+G9zP P/s5j/GNiMouQ2yrjZ967gpbHMMlKPpSuQgfFvzM= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_98e9e04a9e787f2c95fd6b36db13caf3" Content-Transfer-Encoding: 8bit Date: Thu, 26 Mar 2020 20:09:15 +0300 From: Alexey Kondratov To: Justin Pryzby Cc: Michael Paquier , Masahiko Sawada , Steve Singer , pgsql-hackers@lists.postgresql.org, 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: <20200325234027.GH21443@telsasoft.com> References: <20191127035416.GG5435@paquier.xyz> <3ae48673-283c-3e99-3dd8-36ebb81614b5@postgrespro.ru> <20191202082134.GI1696@paquier.xyz> <20200211164848.GO1412@telsasoft.com> <20200229145304.GI29456@telsasoft.com> <20200309200447.GA32459@telsasoft.com> <20200325234027.GH21443@telsasoft.com> User-Agent: Roundcube Webmail/1.4.0 Message-ID: <39a055a7a8cd19552f35f4cb98a8cd80@postgrespro.ru> X-Sender: a.kondratov@postgrespro.ru List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_98e9e04a9e787f2c95fd6b36db13caf3 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2020-03-26 02:40, Justin Pryzby wrote: > On Thu, Mar 12, 2020 at 08:08:46PM +0300, Alexey Kondratov wrote: >> On 09.03.2020 23:04, Justin Pryzby wrote: >>> On Sat, Feb 29, 2020 at 08:53:04AM -0600, Justin Pryzby wrote: >>>> On Sat, Feb 29, 2020 at 03:35:27PM +0300, Alexey Kondratov wrote: >>>> tests for that. (I'm including your v8 untouched in hopes of not >>>> messing up >>>> the cfbot). My fixes avoid an issue if you try to REINDEX onto >>>> pg_default, I >>>> think due to moving system toast indexes. >>> I was able to avoid this issue by adding a call to GetNewRelFileNode, >>> even >>> though that's already called by RelationSetNewRelfilenode(). Not >>> sure if >>> there's a better way, or if it's worth Alexey's v3 patch which added >>> a >>> tablespace param to RelationSetNewRelfilenode. >> >> Do you have any understanding of what exactly causes this error? I >> have >> tried to debug it a little bit, but still cannot figure out why we >> need this >> extra GetNewRelFileNode() call and a mechanism how it helps. > > The PANIC is from smgr hashtable, which couldn't find an entry it > expected. My > very tentative understanding is that smgr is prepared to handle a > *relation* > which is dropped/recreated multiple times in a transaction, but it's > *not* > prepared to deal with a given RelFileNode(Backend) being > dropped/recreated, > since that's used as a hash key. > > I revisited it and solved it in a somewhat nicer way. > I included your new solution regarding this part from 0004 into 0001. It seems that at least a tip of the problem was in that we tried to change tablespace to pg_default being already there. > > It's still not clear to > me if there's an issue with your original way of adding a tablespace > parameter > to RelationSetNewRelfilenode(). > Yes, it is not clear for me too. > >> Many thanks for you review and fixups! There are some inconsistencies >> like >> mentions of SET TABLESPACE in error messages and so on. I am going to >> refactor and include your fixes 0003-0004 into 0001 and 0002, but keep >> 0005 >> separated for now, since this part requires more understanding IMO >> (and >> comparison with v4 implementation). > > I'd suggest to keep the CLUSTER/VACUUM FULL separate from REINDEX, in > case > Michael or someone else wants to progress one but cannot commit to > both. > Yes, sure, I did not have plans to melt everything into a single patch. So, it has taken much longer to understand and rework all these fixes and permission validations. Attached is the updated patch set. 0001: — It is mostly the same, but refactored — I also included your most recent fix for REINDEX DATABASE with allow_system_table_mods=1 — With this patch REINDEX + TABLESPACE simply errors out, when index on TOAST table is met and allow_system_table_mods=0 0002: — I reworked it a bit, since REINDEX CONCURRENTLY is not allowed on system catalog anyway, that is checked at the hegher levels of statement processing. So we have to care about TOAST relations — Also added the same check into the plain REINDEX — It works fine, but I am not entirely happy that with this patch errors/warnings are a bit inconsistent: template1=# REINDEX INDEX CONCURRENTLY pg_toast.pg_toast_12773_index TABLESPACE pg_default; WARNING: skipping tablespace change of "pg_toast_12773_index" DETAIL: Cannot move system relation, only REINDEX CONCURRENTLY is performed. template1=# REINDEX TABLE CONCURRENTLY pg_toast.pg_toast_12773 TABLESPACE pg_default; ERROR: permission denied: "pg_toast_12773" is a system catalog And REINDEX DATABASE CONCURRENTLY will generate a warning again. Maybe we should always throw a warning and do only reindex if it is not possible to change tablespace? 0003: — I have get rid of some of previous refactoring pieces like check_relation_is_movable for now. Let all these validations to settle and then think whether we could do it better — Added CLUSTER to copy/equalfuncs — Cleaned up messages and comments I hope that I did not forget anything from your proposals. -- Alexey Kondratov Postgres Professional https://www.postgrespro.com Russian Postgres Company --=_98e9e04a9e787f2c95fd6b36db13caf3 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v12-0003-Allow-CLUSTER-and-VACUUM-FULL-to-change-tablespa.patch Content-Disposition: attachment; filename=v12-0003-Allow-CLUSTER-and-VACUUM-FULL-to-change-tablespa.patch; size=25433 RnJvbSA2OTJiY2FkZmFjZmEwYzQ3ZmVjN2I2OTY5NTI1ZDMzZDBjYWMxZjgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFR1ZSwgMjQgTWFyIDIwMjAgMTg6MTY6MDYgKzAzMDAKU3ViamVjdDog W1BBVENIIHYxMiAzLzNdIEFsbG93IENMVVNURVIgYW5kIFZBQ1VVTSBGVUxMIHRvIGNoYW5nZSB0 YWJsZXNwYWNlCgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY2x1c3Rlci5zZ21sICAgICAgICAgICAg IHwgMTEgKysrKy0KIGRvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwgICAgICAgICAgICAgIHwg MTEgKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyAgICAgICAgICAgIHwgNTgg KysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAg ICAgICAgICAgIHwgNTEgKysrKysrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL25vZGVzL2Nv cHlmdW5jcy5jICAgICAgICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5j cy5jICAgICAgICAgICAgfCAgMiArCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAg ICAgICAgICB8IDQ1ICsrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9h dXRvdmFjdXVtLmMgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmgg ICAgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAg ICAgICB8ICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgIHwg IDIgKwogc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSAgfCAyMyArKysr KysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlIHwgMzcgKysr KysrKysrKysrKystCiAxMyBmaWxlcyBjaGFuZ2VkLCAyMzEgaW5zZXJ0aW9ucygrKSwgMTYgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVyLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2NsdXN0ZXIuc2dtbAppbmRleCA0ZGE2MGQ4ZDU2Li4xYWRmMTJjM2I5 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NsdXN0ZXIuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NsdXN0ZXIuc2dtbApAQCAtMjEsNyArMjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3Vt ZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KLUNMVVNURVIgW1ZFUkJP U0VdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJs ZT4gWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbmFtZTwvcmVw bGFjZWFibGU+IF0KK0NMVVNURVIgW1ZFUkJPU0VdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+aW5kZXhfbmFtZTwvcmVwbGFjZWFibGU+IF0gWyBUQUJMRVNQQUNFIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfdGFibGVzcGFjZTwvcmVwbGFjZWFibGU+IF0K IENMVVNURVIgW1ZFUkJPU0VdCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CkBAIC05 OSw2ICs5OSwxNSBAQCBDTFVTVEVSIFtWRVJCT1NFXQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zh cmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bmV3X3RhYmxlc3BhY2U8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIG5hbWUgb2YgYSBzcGVjaWZpYyB0 YWJsZXNwYWNlIHRvIHN0b3JlIGNsdXN0ZXJlZCByZWxhdGlvbnMuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAg ICAgPHRlcm0+PGxpdGVyYWw+VkVSQk9TRTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVt PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0uc2dtbCBiL2RvYy9zcmMvc2dt bC9yZWYvdmFjdXVtLnNnbWwKaW5kZXggODQ2MDU2YTM1My4uMGEwMDEyNWEzNiAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3Zh Y3V1bS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogPHN5 bm9wc2lzPgogVkFDVVVNIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9u PC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dGFibGVfYW5kX2NvbHVtbnM8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KIFZBQ1VVTSBbIEZV TEwgXSBbIEZSRUVaRSBdIFsgVkVSQk9TRSBdIFsgQU5BTFlaRSBdIFsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBd CitWQUNVVU0gKCBGVUxMIFssIC4uLl0gKSBbIFRBQkxFU1BBQ0UgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IFssIC4u Ll0gXQogCiA8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRp b248L3JlcGxhY2VhYmxlPiBjYW4gYmUgb25lIG9mOjwvcGhyYXNlPgogCkBAIC0yOTksNiArMzAw LDE2IEBAIFZBQ1VVTSBbIEZVTEwgXSBbIEZSRUVaRSBdIFsgVkVSQk9TRSBdIFsgQU5BTFlaRSBd IFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBuYW1lIG9m IGEgc3BlY2lmaWMgdGFibGVzcGFjZSB0byB3cml0ZSBhIG5ldyBjb3B5IG9mIHRoZSB0YWJsZS4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICA8 L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNlY3QxPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9jbHVzdGVyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKaW5kZXgg YWZjNzUyZTlkNi4uODk0YjFmYjk4ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y2x1c3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYwpAQCAtMzMsMTAg KzMzLDEyIEBACiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRh bG9nL29iamVjdGFjY2Vzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfYW0uaCIKKyNpbmNsdWRl ICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3RvYXN0aW5nLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvY2x1c3Rlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3Byb2dy ZXNzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCisjaW5jbHVkZSAiY29tbWFu ZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKQEAgLTY3LDcg KzY5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIH0gUmVsVG9DbHVzdGVyOwogCiAKLXN0YXRpYyB2b2lk IHJlYnVpbGRfcmVsYXRpb24oUmVsYXRpb24gT2xkSGVhcCwgT2lkIGluZGV4T2lkLCBib29sIHZl cmJvc2UpOworc3RhdGljIHZvaWQgcmVidWlsZF9yZWxhdGlvbihSZWxhdGlvbiBPbGRIZWFwLCBP aWQgaW5kZXhPaWQsIE9pZCBOZXdUYWJsZVNwYWNlT2lkLCBib29sIHZlcmJvc2UpOwogc3RhdGlj IHZvaWQgY29weV90YWJsZV9kYXRhKE9pZCBPSUROZXdIZWFwLCBPaWQgT0lET2xkSGVhcCwgT2lk IE9JRE9sZEluZGV4LAogCQkJCQkJCWJvb2wgdmVyYm9zZSwgYm9vbCAqcFN3YXBUb2FzdEJ5Q29u dGVudCwKIAkJCQkJCQlUcmFuc2FjdGlvbklkICpwRnJlZXplWGlkLCBNdWx0aVhhY3RJZCAqcEN1 dG9mZk11bHRpKTsKQEAgLTEwMSw2ICsxMDMsMjIgQEAgc3RhdGljIExpc3QgKmdldF90YWJsZXNf dG9fY2x1c3RlcihNZW1vcnlDb250ZXh0IGNsdXN0ZXJfY29udGV4dCk7CiB2b2lkCiBjbHVzdGVy KENsdXN0ZXJTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiB7CisJLyogT2lkIG9mIHRhYmxl c3BhY2UgdG8gdXNlIGZvciBjbHVzdGVyZWQgcmVsYXRpb24uICovCisJT2lkIHRhYmxlc3BhY2VP aWQgPSBJbnZhbGlkT2lkOworCisJLyogU2VsZWN0IHRhYmxlc3BhY2UgT2lkIHRvIHVzZS4gKi8K KwlpZiAoc3RtdC0+dGFibGVzcGFjZW5hbWUpCisJeworCQl0YWJsZXNwYWNlT2lkID0gZ2V0X3Rh Ymxlc3BhY2Vfb2lkKHN0bXQtPnRhYmxlc3BhY2VuYW1lLCBmYWxzZSk7CisKKwkJLyogQ2FuJ3Qg bW92ZSBhIG5vbi1zaGFyZWQgcmVsYXRpb24gaW50byBwZ19nbG9iYWwgKi8KKwkJaWYgKHRhYmxl c3BhY2VPaWQgPT0gR0xPQkFMVEFCTEVTUEFDRV9PSUQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2co ImNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVsYXRpb24gdG8gdGFibGVzcGFjZSBcIiVzXCIiLAor CQkJCQkJCXN0bXQtPnRhYmxlc3BhY2VuYW1lKSkpOworCX0KKwogCWlmIChzdG10LT5yZWxhdGlv biAhPSBOVUxMKQogCXsKIAkJLyogVGhpcyBpcyB0aGUgc2luZ2xlLXJlbGF0aW9uIGNhc2UuICov CkBAIC0xODIsNyArMjAwLDcgQEAgY2x1c3RlcihDbHVzdGVyU3RtdCAqc3RtdCwgYm9vbCBpc1Rv cExldmVsKQogCQl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CiAKIAkJLyogRG8gdGhlIGpvYi4g Ki8KLQkJY2x1c3Rlcl9yZWwodGFibGVPaWQsIGluZGV4T2lkLCBzdG10LT5vcHRpb25zKTsKKwkJ Y2x1c3Rlcl9yZWwodGFibGVPaWQsIGluZGV4T2lkLCB0YWJsZXNwYWNlT2lkLCBzdG10LT5vcHRp b25zKTsKIAl9CiAJZWxzZQogCXsKQEAgLTIzMCw3ICsyNDgsNyBAQCBjbHVzdGVyKENsdXN0ZXJT dG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQkvKiBmdW5jdGlvbnMgaW4gaW5kZXhlcyBt YXkgd2FudCBhIHNuYXBzaG90IHNldCAqLwogCQkJUHVzaEFjdGl2ZVNuYXBzaG90KEdldFRyYW5z YWN0aW9uU25hcHNob3QoKSk7CiAJCQkvKiBEbyB0aGUgam9iLiAqLwotCQkJY2x1c3Rlcl9yZWwo cnZ0Yy0+dGFibGVPaWQsIHJ2dGMtPmluZGV4T2lkLAorCQkJY2x1c3Rlcl9yZWwocnZ0Yy0+dGFi bGVPaWQsIHJ2dGMtPmluZGV4T2lkLCB0YWJsZXNwYWNlT2lkLAogCQkJCQkJc3RtdC0+b3B0aW9u cyB8IENMVU9QVF9SRUNIRUNLKTsKIAkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTI2Miw3ICsyODAsNyBAQCBjbHVzdGVyKENsdXN0ZXJT dG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAgKiBhbmQgZXJyb3IgbWVzc2FnZXMgc2hvdWxk IHJlZmVyIHRvIHRoZSBvcGVyYXRpb24gYXMgVkFDVVVNIG5vdCBDTFVTVEVSLgogICovCiB2b2lk Ci1jbHVzdGVyX3JlbChPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCwgaW50IG9wdGlvbnMpCitj bHVzdGVyX3JlbChPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCwgT2lkIHRhYmxlc3BhY2VPaWQs IGludCBvcHRpb25zKQogewogCVJlbGF0aW9uCU9sZEhlYXA7CiAJYm9vbAkJdmVyYm9zZSA9ICgo b3B0aW9ucyAmIENMVU9QVF9WRVJCT1NFKSAhPSAwKTsKQEAgLTM3NSw2ICszOTMsMjMgQEAgY2x1 c3Rlcl9yZWwoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQsIGludCBvcHRpb25zKQogCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJjYW5u b3QgY2x1c3RlciBhIHNoYXJlZCBjYXRhbG9nIikpKTsKIAorCWlmIChPaWRJc1ZhbGlkKHRhYmxl c3BhY2VPaWQpICYmCisJCSFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbVJlbGF0aW9u KE9sZEhlYXApKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZG SUNJRU5UX1BSSVZJTEVHRSksCisJCQkJZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZDogXCIlc1wi IGlzIGEgc3lzdGVtIGNhdGFsb2ciLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoT2xk SGVhcCkpKSk7CisKKwkvKgorCSAqIFdlIGNhbm5vdCBzdXBwb3J0IG1vdmluZyBtYXBwZWQgcmVs YXRpb25zIGludG8gZGlmZmVyZW50IHRhYmxlc3BhY2VzLgorCSAqIChJbiBwYXJ0aWN1bGFyIHRo aXMgZWxpbWluYXRlcyBhbGwgc2hhcmVkIGNhdGFsb2dzLikKKwkgKi8KKwlpZiAoT2lkSXNWYWxp ZCh0YWJsZXNwYWNlT2lkKSAmJiBSZWxhdGlvbklzTWFwcGVkKE9sZEhlYXApKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgbWFwcGVkIHJlbGF0aW9uIFwi JXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShPbGRIZWFwKSkpKTsKKwogCS8q CiAJICogRG9uJ3QgcHJvY2VzcyB0ZW1wIHRhYmxlcyBvZiBvdGhlciBiYWNrZW5kcyAuLi4gdGhl aXIgbG9jYWwgYnVmZmVyCiAJICogbWFuYWdlciBpcyBub3QgZ29pbmcgdG8gY29wZS4KQEAgLTQy NSw3ICs0NjAsNyBAQCBjbHVzdGVyX3JlbChPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCwgaW50 IG9wdGlvbnMpCiAJVHJhbnNmZXJQcmVkaWNhdGVMb2Nrc1RvSGVhcFJlbGF0aW9uKE9sZEhlYXAp OwogCiAJLyogcmVidWlsZF9yZWxhdGlvbiBkb2VzIGFsbCB0aGUgZGlydHkgd29yayAqLwotCXJl YnVpbGRfcmVsYXRpb24oT2xkSGVhcCwgaW5kZXhPaWQsIHZlcmJvc2UpOworCXJlYnVpbGRfcmVs YXRpb24oT2xkSGVhcCwgaW5kZXhPaWQsIHRhYmxlc3BhY2VPaWQsIHZlcmJvc2UpOwogCiAJLyog TkI6IHJlYnVpbGRfcmVsYXRpb24gZG9lcyB0YWJsZV9jbG9zZSgpIG9uIE9sZEhlYXAgKi8KIApA QCAtNTg0LDcgKzYxOSw3IEBAIG1hcmtfaW5kZXhfY2x1c3RlcmVkKFJlbGF0aW9uIHJlbCwgT2lk IGluZGV4T2lkLCBib29sIGlzX2ludGVybmFsKQogICogTkI6IHRoaXMgcm91dGluZSBjbG9zZXMg T2xkSGVhcCBhdCB0aGUgcmlnaHQgdGltZTsgY2FsbGVyIHNob3VsZCBub3QuCiAgKi8KIHN0YXRp YyB2b2lkCi1yZWJ1aWxkX3JlbGF0aW9uKFJlbGF0aW9uIE9sZEhlYXAsIE9pZCBpbmRleE9pZCwg Ym9vbCB2ZXJib3NlKQorcmVidWlsZF9yZWxhdGlvbihSZWxhdGlvbiBPbGRIZWFwLCBPaWQgaW5k ZXhPaWQsIE9pZCBOZXdUYWJsZXNwYWNlT2lkLCBib29sIHZlcmJvc2UpCiB7CiAJT2lkCQkJdGFi bGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKE9sZEhlYXApOwogCU9pZAkJCXRhYmxlU3BhY2UgPSBP bGRIZWFwLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2U7CkBAIC01OTUsNiArNjMwLDEwIEBAIHJlYnVp bGRfcmVsYXRpb24oUmVsYXRpb24gT2xkSGVhcCwgT2lkIGluZGV4T2lkLCBib29sIHZlcmJvc2Up CiAJVHJhbnNhY3Rpb25JZCBmcm96ZW5YaWQ7CiAJTXVsdGlYYWN0SWQgY3V0b2ZmTXVsdGk7CiAK KwkvKiBVc2UgbmV3IHRhYmxlc3BhY2UgaWYgcGFzc2VkLiAqLworCWlmIChPaWRJc1ZhbGlkKE5l d1RhYmxlc3BhY2VPaWQpKQorCQl0YWJsZVNwYWNlID0gTmV3VGFibGVzcGFjZU9pZDsKKwogCS8q IE1hcmsgdGhlIGNvcnJlY3QgaW5kZXggYXMgY2x1c3RlcmVkICovCiAJaWYgKE9pZElzVmFsaWQo aW5kZXhPaWQpKQogCQltYXJrX2luZGV4X2NsdXN0ZXJlZChPbGRIZWFwLCBpbmRleE9pZCwgdHJ1 ZSk7CkBAIC0xMDM5LDYgKzEwNzgsMTMgQEAgc3dhcF9yZWxhdGlvbl9maWxlcyhPaWQgcjEsIE9p ZCByMiwgYm9vbCB0YXJnZXRfaXNfcGdfY2xhc3MsCiAJCSAqLwogCQlBc3NlcnQoIXRhcmdldF9p c19wZ19jbGFzcyk7CiAKKwkJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbUNs YXNzKHIxLCByZWxmb3JtMSkgJiYKKwkJCXJlbGZvcm0xLT5yZWx0YWJsZXNwYWNlICE9IHJlbGZv cm0yLT5yZWx0YWJsZXNwYWNlKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJIGVycm1zZygicGVybWlzc2lvbiBk ZW5pZWQ6IFwiJXNcIiBpcyBhIHN5c3RlbSBjYXRhbG9nIiwKKwkJCQkJCQlnZXRfcmVsX25hbWUo cjEpKSkpOworCiAJCXN3YXB0ZW1wID0gcmVsZm9ybTEtPnJlbGZpbGVub2RlOwogCQlyZWxmb3Jt MS0+cmVsZmlsZW5vZGUgPSByZWxmb3JtMi0+cmVsZmlsZW5vZGU7CiAJCXJlbGZvcm0yLT5yZWxm aWxlbm9kZSA9IHN3YXB0ZW1wOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCA1OTczMWQ2ODdmLi45 NWJlYzhkNmJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtMzEsMTMgKzMxLDE2IEBACiAjaW5j bHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2lu Y2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmhlcml0cy5oIgogI2luY2x1ZGUgImNhdGFsb2cv cGdfbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvY2x1c3Rlci5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgog I2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3Bh Y2UuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3Mu aCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTEwNiw2ICsxMDksOCBAQCBFeGVjVmFjdXVtKFBh cnNlU3RhdGUgKnBzdGF0ZSwgVmFjdXVtU3RtdCAqdmFjc3RtdCwgYm9vbCBpc1RvcExldmVsKQog CWJvb2wJCWRpc2FibGVfcGFnZV9za2lwcGluZyA9IGZhbHNlOwogCWJvb2wJCXBhcmFsbGVsX29w dGlvbiA9IGZhbHNlOwogCUxpc3RDZWxsICAgKmxjOworCU9pZCAJCXRhYmxlc3BhY2VPaWQgPSBJ bnZhbGlkT2lkOyAvKiBPaWQgb2YgdGFibGVzcGFjZSB0byB1c2UgZm9yIHJlbGF0aW9ucworCQkJ CQkJCQkJCQkgKiBhZnRlciBWQUNVVU0gRlVMTC4gKi8KIAogCS8qIFNldCBkZWZhdWx0IHZhbHVl ICovCiAJcGFyYW1zLmluZGV4X2NsZWFudXAgPSBWQUNPUFRfVEVSTkFSWV9ERUZBVUxUOwpAQCAt MjQxLDYgKzI0NiwyOCBAQCBFeGVjVmFjdXVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgVmFjdXVtU3Rt dCAqdmFjc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQlwYXJhbXMubXVsdGl4YWN0X2ZyZWV6ZV90 YWJsZV9hZ2UgPSAtMTsKIAl9CiAKKwkvKiBHZXQgdGFibGVzcGFjZSBPaWQgdG8gdXNlLiAqLwor CWlmICh2YWNzdG10LT50YWJsZXNwYWNlbmFtZSkKKwl7CisJCWlmIChwYXJhbXMub3B0aW9ucyAm IFZBQ09QVF9GVUxMKQorCQl7CisJCQl0YWJsZXNwYWNlT2lkID0gZ2V0X3RhYmxlc3BhY2Vfb2lk KHZhY3N0bXQtPnRhYmxlc3BhY2VuYW1lLCBmYWxzZSk7CisKKwkJCS8qIENhbid0IG1vdmUgYSBu b24tc2hhcmVkIHJlbGF0aW9uIGludG8gcGdfZ2xvYmFsICovCisJCQlpZiAodGFibGVzcGFjZU9p ZCA9PSBHTE9CQUxUQUJMRVNQQUNFX09JRCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJZXJybXNnKCJjYW5u b3QgbW92ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKKwkJCQkJ CQkJdmFjc3RtdC0+dGFibGVzcGFjZW5hbWUpKSk7CisJCX0KKwkJZWxzZQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJ CQllcnJtc2coImluY29tcGF0aWJsZSBUQUJMRVNQQUNFIG9wdGlvbiIpLAorCQkJCQllcnJkZXRh aWwoIllvdSBjYW4gb25seSB1c2UgVEFCTEVTUEFDRSB3aXRoIFZBQ1VVTSBGVUxMLiIpKSk7CisJ fQorCXBhcmFtcy50YWJsZXNwYWNlX29pZCA9IHRhYmxlc3BhY2VPaWQ7CisKIAkvKiB1c2VyLWlu dm9rZWQgdmFjdXVtIGlzIG5ldmVyICJmb3Igd3JhcGFyb3VuZCIgKi8KIAlwYXJhbXMuaXNfd3Jh cGFyb3VuZCA9IGZhbHNlOwogCkBAIC0xNjcyLDggKzE2OTksOSBAQCB2YWN1dW1fcmVsKE9pZCBy ZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBWYWN1dW1QYXJhbXMgKnBhcmFtcykKIAlMT0NLTU9E RQlsbW9kZTsKIAlSZWxhdGlvbglvbmVyZWw7CiAJTG9ja1JlbElkCW9uZXJlbGlkOwotCU9pZAkJ CXRvYXN0X3JlbGlkOwotCU9pZAkJCXNhdmVfdXNlcmlkOworCU9pZAkJCXRvYXN0X3JlbGlkLAor CQkJCXNhdmVfdXNlcmlkLAorCQkJCXRhYmxlc3BhY2VPaWQgPSBJbnZhbGlkT2lkOwogCWludAkJ CXNhdmVfc2VjX2NvbnRleHQ7CiAJaW50CQkJc2F2ZV9uZXN0bGV2ZWw7CiAKQEAgLTE4MDcsNiAr MTgzNSwyMyBAQCB2YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBWYWN1 dW1QYXJhbXMgKnBhcmFtcykKIAkJcmV0dXJuIHRydWU7CiAJfQogCisJLyoKKwkgKiBXZSBjYW5u b3Qgc3VwcG9ydCBtb3Zpbmcgc3lzdGVtIHJlbGF0aW9ucyBpbnRvIGRpZmZlcmVudCB0YWJsZXNw YWNlcywKKwkgKiB1bmxlc3MgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM9MS4KKwkgKi8KKwlpZiAo cGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX0ZVTEwgJiYKKwkJT2lkSXNWYWxpZChwYXJhbXMtPnRh Ymxlc3BhY2Vfb2lkKSAmJgorCQlJc1N5c3RlbVJlbGF0aW9uKG9uZXJlbCkgJiYgIWFsbG93U3lz dGVtVGFibGVNb2RzKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2coInNraXBwaW5nIHRhYmxlc3Bh Y2UgY2hhbmdlIG9mIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShvbmVy ZWwpKSwKKwkJCQllcnJkZXRhaWwoIkNhbm5vdCBtb3ZlIHN5c3RlbSByZWxhdGlvbiwgb25seSBW QUNVVU0gaXMgcGVyZm9ybWVkLiIpKSk7CisJfQorCWVsc2UKKwkJdGFibGVzcGFjZU9pZCA9IHBh cmFtcy0+dGFibGVzcGFjZV9vaWQ7CisKIAkvKgogCSAqIEdldCBhIHNlc3Npb24tbGV2ZWwgbG9j ayB0b28uIFRoaXMgd2lsbCBwcm90ZWN0IG91ciBhY2Nlc3MgdG8gdGhlCiAJICogcmVsYXRpb24g YWNyb3NzIG11bHRpcGxlIHRyYW5zYWN0aW9ucywgc28gdGhhdCB3ZSBjYW4gdmFjdXVtIHRoZQpA QCAtMTg3Niw3ICsxOTIxLDcgQEAgdmFjdXVtX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxh dGlvbiwgVmFjdXVtUGFyYW1zICpwYXJhbXMpCiAJCQljbHVzdGVyX29wdGlvbnMgfD0gQ0xVT1BU X1ZFUkJPU0U7CiAKIAkJLyogVkFDVVVNIEZVTEwgaXMgbm93IGEgdmFyaWFudCBvZiBDTFVTVEVS OyBzZWUgY2x1c3Rlci5jICovCi0JCWNsdXN0ZXJfcmVsKHJlbGlkLCBJbnZhbGlkT2lkLCBjbHVz dGVyX29wdGlvbnMpOworCQljbHVzdGVyX3JlbChyZWxpZCwgSW52YWxpZE9pZCwgdGFibGVzcGFj ZU9pZCwgY2x1c3Rlcl9vcHRpb25zKTsKIAl9CiAJZWxzZQogCQl0YWJsZV9yZWxhdGlvbl92YWN1 dW0ob25lcmVsLCBwYXJhbXMsIHZhY19zdHJhdGVneSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4 IDdiZjlhYTdlNzUuLjcwYjAyMzRmNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2Nv cHlmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC0zMzE2LDYg KzMzMTYsNyBAQCBfY29weUNsdXN0ZXJTdG10KGNvbnN0IENsdXN0ZXJTdG10ICpmcm9tKQogCUNP UFlfTk9ERV9GSUVMRChyZWxhdGlvbik7CiAJQ09QWV9TVFJJTkdfRklFTEQoaW5kZXhuYW1lKTsK IAlDT1BZX1NDQUxBUl9GSUVMRChvcHRpb25zKTsKKwlDT1BZX1NUUklOR19GSUVMRCh0YWJsZXNw YWNlbmFtZSk7CiAKIAlyZXR1cm4gbmV3bm9kZTsKIH0KQEAgLTM5MDEsNiArMzkwMiw3IEBAIF9j b3B5VmFjdXVtU3RtdChjb25zdCBWYWN1dW1TdG10ICpmcm9tKQogCUNPUFlfTk9ERV9GSUVMRChv cHRpb25zKTsKIAlDT1BZX05PREVfRklFTEQocmVscyk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoaXNf dmFjdXVtY21kKTsKKwlDT1BZX1NUUklOR19GSUVMRCh0YWJsZXNwYWNlbmFtZSk7CiAKIAlyZXR1 cm4gbmV3bm9kZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3Mu YyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCAwNDhjNTlmZDY4Li4yMGNm ZGQ2YzMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0xMjE1LDYgKzEyMTUsNyBAQCBfZXF1 YWxDbHVzdGVyU3RtdChjb25zdCBDbHVzdGVyU3RtdCAqYSwgY29uc3QgQ2x1c3RlclN0bXQgKmIp CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHJlbGF0aW9uKTsKIAlDT01QQVJFX1NUUklOR19GSUVMRChp bmRleG5hbWUpOwogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKG9wdGlvbnMpOworCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKHRhYmxlc3BhY2VuYW1lKTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtMTcwMiw2 ICsxNzAzLDcgQEAgX2VxdWFsVmFjdXVtU3RtdChjb25zdCBWYWN1dW1TdG10ICphLCBjb25zdCBW YWN1dW1TdG10ICpiKQogCUNPTVBBUkVfTk9ERV9GSUVMRChvcHRpb25zKTsKIAlDT01QQVJFX05P REVfRklFTEQocmVscyk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaXNfdmFjdXVtY21kKTsKKwlD T01QQVJFX1NDQUxBUl9GSUVMRCh0YWJsZXNwYWNlbmFtZSk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CmluZGV4IGRmOGY2M2Y5ODkuLjMwMGU2NDA5ZjggMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAt MTA1ODksMTQgKzEwNTg5LDE0IEBAIENyZWF0ZUNvbnZlcnNpb25TdG10OgogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCiAgKgogICoJCVFVRVJZOgotICoJCQkJQ0xVU1RFUiBbVkVSQk9TRV0gPHF1YWxp ZmllZF9uYW1lPiBbIFVTSU5HIDxpbmRleF9uYW1lPiBdCi0gKgkJCQlDTFVTVEVSIFtWRVJCT1NF XQorICoJCQkJQ0xVU1RFUiBbVkVSQk9TRV0gPHF1YWxpZmllZF9uYW1lPiBbIFVTSU5HIDxpbmRl eF9uYW1lPiBdIFsgVEFCTEVTUEFDRSA8dGFibGVzcGFjZV9uYW1lPiBdCisgKgkJCQlDTFVTVEVS IFtWRVJCT1NFXSBbIFRBQkxFU1BBQ0UgPHRhYmxlc3BhY2VfbmFtZT4gXQogICoJCQkJQ0xVU1RF UiBbVkVSQk9TRV0gPGluZGV4X25hbWU+IE9OIDxxdWFsaWZpZWRfbmFtZT4gKGZvciBwcmUtOC4z KQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogQ2x1c3RlclN0bXQ6Ci0JCQlDTFVTVEVS IG9wdF92ZXJib3NlIHF1YWxpZmllZF9uYW1lIGNsdXN0ZXJfaW5kZXhfc3BlY2lmaWNhdGlvbgor CQkJQ0xVU1RFUiBvcHRfdmVyYm9zZSBxdWFsaWZpZWRfbmFtZSBjbHVzdGVyX2luZGV4X3NwZWNp ZmljYXRpb24gT3B0VGFibGVTcGFjZQogCQkJCXsKIAkJCQkJQ2x1c3RlclN0bXQgKm4gPSBtYWtl Tm9kZShDbHVzdGVyU3RtdCk7CiAJCQkJCW4tPnJlbGF0aW9uID0gJDM7CkBAIC0xMDYwNCw2ICsx MDYwNCw3IEBAIENsdXN0ZXJTdG10OgogCQkJCQluLT5vcHRpb25zID0gMDsKIAkJCQkJaWYgKCQy KQogCQkJCQkJbi0+b3B0aW9ucyB8PSBDTFVPUFRfVkVSQk9TRTsKKwkJCQkJbi0+dGFibGVzcGFj ZW5hbWUgPSAkNTsKIAkJCQkJJCQgPSAoTm9kZSopbjsKIAkJCQl9CiAJCQl8IENMVVNURVIgb3B0 X3ZlcmJvc2UKQEAgLTEwNjE0LDYgKzEwNjE1LDcgQEAgQ2x1c3RlclN0bXQ6CiAJCQkJCW4tPm9w dGlvbnMgPSAwOwogCQkJCQlpZiAoJDIpCiAJCQkJCQluLT5vcHRpb25zIHw9IENMVU9QVF9WRVJC T1NFOworCQkJCQluLT50YWJsZXNwYWNlbmFtZSA9IE5VTEw7CiAJCQkJCSQkID0gKE5vZGUqKW47 CiAJCQkJfQogCQkJLyoga2VwdCBmb3IgcHJlLTguMyBjb21wYXRpYmlsaXR5ICovCkBAIC0xMDYy NSw2ICsxMDYyNyw3IEBAIENsdXN0ZXJTdG10OgogCQkJCQluLT5vcHRpb25zID0gMDsKIAkJCQkJ aWYgKCQyKQogCQkJCQkJbi0+b3B0aW9ucyB8PSBDTFVPUFRfVkVSQk9TRTsKKwkJCQkJbi0+dGFi bGVzcGFjZW5hbWUgPSBOVUxMOwogCQkJCQkkJCA9IChOb2RlKiluOwogCQkJCX0KIAkJOwpAQCAt MTA2MzksNiArMTA2NDIsOCBAQCBjbHVzdGVyX2luZGV4X3NwZWNpZmljYXRpb246CiAgKgogICoJ CVFVRVJZOgogICoJCQkJVkFDVVVNCisgKgkJCQlWQUNVVU0gRlVMTCBbIFRBQkxFU1BBQ0UgPHRh Ymxlc3BhY2VfbmFtZT4gXSBbIDx0YWJsZV9hbmRfY29sdW1ucz4gWywgLi4uXSBdCisgKgkJCQlW QUNVVU0gKEZVTEwpIFsgVEFCTEVTUEFDRSA8dGFibGVzcGFjZV9uYW1lPiBdIFsgPHRhYmxlX2Fu ZF9jb2x1bW5zPiBbLCAuLi5dIF0KICAqCQkJCUFOQUxZWkUKICAqCiAgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCkBAIC0xMDY2MSw2ICsxMDY2NiwyOCBAQCBWYWN1dW1TdG10OiBWQUNVVU0gb3B0X2Z1 bGwgb3B0X2ZyZWV6ZSBvcHRfdmVyYm9zZSBvcHRfYW5hbHl6ZSBvcHRfdmFjdXVtX3JlbGF0aQog CQkJCQkJCQkJCQkgbWFrZURlZkVsZW0oImFuYWx5emUiLCBOVUxMLCBANSkpOwogCQkJCQluLT5y ZWxzID0gJDY7CiAJCQkJCW4tPmlzX3ZhY3V1bWNtZCA9IHRydWU7CisJCQkJCW4tPnRhYmxlc3Bh Y2VuYW1lID0gTlVMTDsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJfCBWQUNVVU0g b3B0X2Z1bGwgb3B0X2ZyZWV6ZSBvcHRfdmVyYm9zZSBvcHRfYW5hbHl6ZSBUQUJMRVNQQUNFIG5h bWUgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CisJCQkJeworCQkJCQlWYWN1dW1TdG10ICpuID0g bWFrZU5vZGUoVmFjdXVtU3RtdCk7CisJCQkJCW4tPm9wdGlvbnMgPSBOSUw7CisJCQkJCWlmICgk MikKKwkJCQkJCW4tPm9wdGlvbnMgPSBsYXBwZW5kKG4tPm9wdGlvbnMsCisJCQkJCQkJCW1ha2VE ZWZFbGVtKCJmdWxsIiwgTlVMTCwgQDIpKTsKKwkJCQkJaWYgKCQzKQorCQkJCQkJbi0+b3B0aW9u cyA9IGxhcHBlbmQobi0+b3B0aW9ucywKKwkJCQkJCQkJbWFrZURlZkVsZW0oImZyZWV6ZSIsIE5V TEwsIEAzKSk7CisJCQkJCWlmICgkNCkKKwkJCQkJCW4tPm9wdGlvbnMgPSBsYXBwZW5kKG4tPm9w dGlvbnMsCisJCQkJCQkJCW1ha2VEZWZFbGVtKCJ2ZXJib3NlIiwgTlVMTCwgQDQpKTsKKwkJCQkJ aWYgKCQ1KQorCQkJCQkJbi0+b3B0aW9ucyA9IGxhcHBlbmQobi0+b3B0aW9ucywKKwkJCQkJCQkJ bWFrZURlZkVsZW0oImFuYWx5emUiLCBOVUxMLCBANSkpOworCQkJCQluLT50YWJsZXNwYWNlbmFt ZSA9ICQ3OworCQkJCQluLT5yZWxzID0gJDg7CisJCQkJCW4tPmlzX3ZhY3V1bWNtZCA9IHRydWU7 CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KIAkJCXwgVkFDVVVNICcoJyB2YWNfYW5hbHl6 ZV9vcHRpb25fbGlzdCAnKScgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CkBAIC0xMDY2OSw2ICsx MDY5NiwxNiBAQCBWYWN1dW1TdG10OiBWQUNVVU0gb3B0X2Z1bGwgb3B0X2ZyZWV6ZSBvcHRfdmVy Ym9zZSBvcHRfYW5hbHl6ZSBvcHRfdmFjdXVtX3JlbGF0aQogCQkJCQluLT5vcHRpb25zID0gJDM7 CiAJCQkJCW4tPnJlbHMgPSAkNTsKIAkJCQkJbi0+aXNfdmFjdXVtY21kID0gdHJ1ZTsKKwkJCQkJ bi0+dGFibGVzcGFjZW5hbWUgPSBOVUxMOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQor CQkJfCBWQUNVVU0gJygnIHZhY19hbmFseXplX29wdGlvbl9saXN0ICcpJyBUQUJMRVNQQUNFIG5h bWUgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CisJCQkJeworCQkJCQlWYWN1dW1TdG10ICpuID0g bWFrZU5vZGUoVmFjdXVtU3RtdCk7CisJCQkJCW4tPm9wdGlvbnMgPSAkMzsKKwkJCQkJbi0+dGFi bGVzcGFjZW5hbWUgPSAkNjsKKwkJCQkJbi0+cmVscyA9ICQ3OworCQkJCQluLT5pc192YWN1dW1j bWQgPSB0cnVlOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQogCQk7CkBAIC0xMDY4Miw2 ICsxMDcxOSw3IEBAIEFuYWx5emVTdG10OiBhbmFseXplX2tleXdvcmQgb3B0X3ZlcmJvc2Ugb3B0 X3ZhY3V1bV9yZWxhdGlvbl9saXN0CiAJCQkJCQkJCQkJCSBtYWtlRGVmRWxlbSgidmVyYm9zZSIs IE5VTEwsIEAyKSk7CiAJCQkJCW4tPnJlbHMgPSAkMzsKIAkJCQkJbi0+aXNfdmFjdXVtY21kID0g ZmFsc2U7CisJCQkJCW4tPnRhYmxlc3BhY2VuYW1lID0gTlVMTDsKIAkJCQkJJCQgPSAoTm9kZSAq KW47CiAJCQkJfQogCQkJfCBhbmFseXplX2tleXdvcmQgJygnIHZhY19hbmFseXplX29wdGlvbl9s aXN0ICcpJyBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKQEAgLTEwNjkwLDYgKzEwNzI4LDcgQEAg QW5hbHl6ZVN0bXQ6IGFuYWx5emVfa2V5d29yZCBvcHRfdmVyYm9zZSBvcHRfdmFjdXVtX3JlbGF0 aW9uX2xpc3QKIAkJCQkJbi0+b3B0aW9ucyA9ICQzOwogCQkJCQluLT5yZWxzID0gJDU7CiAJCQkJ CW4tPmlzX3ZhY3V1bWNtZCA9IGZhbHNlOworCQkJCQluLT50YWJsZXNwYWNlbmFtZSA9IE5VTEw7 CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CiAJCTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRv dmFjdXVtLmMKaW5kZXggZGE3NWU3NTVmMC4uYWQ1MzhhODcyZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9hdXRvdmFjdXVtLmMKQEAgLTI4OTUsNiArMjg5NSw3IEBAIHRhYmxlX3JlY2hlY2tfYXV0b3Zh YyhPaWQgcmVsaWQsIEhUQUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJdGFiLT5hdF9wYXJhbXMubXVs dGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2UgPSBtdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZTsKIAkJ dGFiLT5hdF9wYXJhbXMuaXNfd3JhcGFyb3VuZCA9IHdyYXBhcm91bmQ7CiAJCXRhYi0+YXRfcGFy YW1zLmxvZ19taW5fZHVyYXRpb24gPSBsb2dfbWluX2R1cmF0aW9uOworCQl0YWItPmF0X3BhcmFt cy50YWJsZXNwYWNlX29pZCA9IEludmFsaWRPaWQ7CiAJCXRhYi0+YXRfdmFjdXVtX2Nvc3RfbGlt aXQgPSB2YWNfY29zdF9saW1pdDsKIAkJdGFiLT5hdF92YWN1dW1fY29zdF9kZWxheSA9IHZhY19j b3N0X2RlbGF5OwogCQl0YWItPmF0X3JlbG5hbWUgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5o CmluZGV4IGUwNTg4NDc4MWIuLmFlY2MwYzMxMmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2NsdXN0ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmgKQEAg LTE5LDcgKzE5LDcgQEAKIAogCiBleHRlcm4gdm9pZCBjbHVzdGVyKENsdXN0ZXJTdG10ICpzdG10 LCBib29sIGlzVG9wTGV2ZWwpOwotZXh0ZXJuIHZvaWQgY2x1c3Rlcl9yZWwoT2lkIHRhYmxlT2lk LCBPaWQgaW5kZXhPaWQsIGludCBvcHRpb25zKTsKK2V4dGVybiB2b2lkIGNsdXN0ZXJfcmVsKE9p ZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkLCBPaWQgdGFibGVzcGFjZU9pZCwgaW50IG9wdGlvbnMp OwogZXh0ZXJuIHZvaWQgY2hlY2tfaW5kZXhfaXNfY2x1c3RlcmFibGUoUmVsYXRpb24gT2xkSGVh cCwgT2lkIGluZGV4T2lkLAogCQkJCQkJCQkJICAgYm9vbCByZWNoZWNrLCBMT0NLTU9ERSBsb2Nr bW9kZSk7CiBleHRlcm4gdm9pZCBtYXJrX2luZGV4X2NsdXN0ZXJlZChSZWxhdGlvbiByZWwsIE9p ZCBpbmRleE9pZCwgYm9vbCBpc19pbnRlcm5hbCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCmluZGV4IDI3 NzliZWE1YzkuLjY3NThlOTgxMmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Zh Y3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCkBAIC0yMjksNiArMjI5 LDggQEAgdHlwZWRlZiBzdHJ1Y3QgVmFjdXVtUGFyYW1zCiAJICogZGlzYWJsZWQuCiAJICovCiAJ aW50CQkJbndvcmtlcnM7CisJT2lkCQkJdGFibGVzcGFjZV9vaWQ7IC8qIHRhYmxlc3BhY2UgT2lk IHRvIHVzZSBmb3IgcmVsYXRpb25zCisJCQkJCQkJCSAqIGFmdGVyIFZBQ1VVTSBGVUxMICovCiB9 IFZhY3V1bVBhcmFtczsKIAogLyogR1VDIHBhcmFtZXRlcnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMu aAppbmRleCA1MDc1YTc5YmQzLi5lYzU4YzczY2UxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBA IC0zMjAyLDYgKzMyMDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBDbHVzdGVyU3RtdAogCU5vZGVUYWcJ CXR5cGU7CiAJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiBiZWluZyBpbmRleGVk LCBvciBOVUxMIGlmIGFsbCAqLwogCWNoYXIJICAgKmluZGV4bmFtZTsJCS8qIG9yaWdpbmFsIGlu ZGV4IGRlZmluZWQgKi8KKwljaGFyCSAgICp0YWJsZXNwYWNlbmFtZTsgLyogdGFibGVzcGFjZSBu YW1lIHRvIHVzZSBmb3IgY2x1c3RlcmVkIHJlbGF0aW9uICovCiAJaW50CQkJb3B0aW9uczsJCS8q IE9SIG9mIENsdXN0ZXJPcHRpb24gZmxhZ3MgKi8KIH0gQ2x1c3RlclN0bXQ7CiAKQEAgLTMyMTgs NiArMzIxOSw3IEBAIHR5cGVkZWYgc3RydWN0IFZhY3V1bVN0bXQKIAlMaXN0CSAgICpvcHRpb25z OwkJLyogbGlzdCBvZiBEZWZFbGVtIG5vZGVzICovCiAJTGlzdAkgICAqcmVsczsJCQkvKiBsaXN0 IG9mIFZhY3V1bVJlbGF0aW9uLCBvciBOSUwgZm9yIGFsbCAqLwogCWJvb2wJCWlzX3ZhY3V1bWNt ZDsJLyogdHJ1ZSBmb3IgVkFDVVVNLCBmYWxzZSBmb3IgQU5BTFlaRSAqLworCWNoYXIJICAgKnRh Ymxlc3BhY2VuYW1lOyAvKiB0YWJsZXNwYWNlIG5hbWUgdG8gdXNlIGZvciB2YWN1dW1lZCByZWxh dGlvbiAqLwogfSBWYWN1dW1TdG10OwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVz cGFjZS5zb3VyY2UKaW5kZXggNzdlYTRjYmNlZS4uMzUyZGIzMjNjOCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCkBAIC0xNyw3ICsxNyw3IEBAIEFMVEVSIFRBQkxF U1BBQ0UgcmVncmVzc190YmxzcGFjZSBTRVQgKHNvbWVfbm9uZXhpc3RlbnRfcGFyYW1ldGVyID0g dHJ1ZSk7ICAtLSBmCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJh bmRvbV9wYWdlX2Nvc3QgPSAyLjApOyAtLSBmYWlsCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3Nf dGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nvc3QsIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5j eSk7IC0tIG9rCiAKLS0tIGNyZWF0ZSB0YWJsZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQ QUNFIGNoYW5nZQorLS0gY3JlYXRlIHRhYmxlIHRvIHRlc3QgUkVJTkRFWCwgQ0xVU1RFUiBhbmQg VkFDVVVNIEZVTEwgd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQogQ1JFQVRFIFRBQkxFIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmlnaW50LCBudW0yIGRvdWJsZSBwcmVjaXNpb24sIG51 bTMgZG91YmxlIHByZWNpc2lvbik7CiBJTlNFUlQgSU5UTyByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf dGJsIChudW0xLCBudW0yLCBudW0zKQogICBTRUxFQ1Qgcm91bmQocmFuZG9tKCkqMTAwKSwgcmFu ZG9tKCksIHJhbmRvbSgpKjQyCkBAIC00MSwxMSArNDEsMzIgQEAgUkVJTkRFWCBUQUJMRSBDT05D VVJSRU5UTFkgcGdfYW0gVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOyAtLSBmYWlsCiBSRUlO REVYIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IFRBQkxFU1BBQ0UgcGdfZ2xv YmFsOyAtLSBmYWlsCiBSRUlOREVYIFRBQkxFIHBnX2FtIFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZTsgLS0gZmFpbAogCistLSBjaGVjayB0aGF0IGFsbCBpbmRleGVzIG1vdmVkIHRvIG5ldyB0 YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNw YWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNz X3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7CisKKy0tIGNoZWNrIENMVVNURVIgd2l0aCBU QUJMRVNQQUNFIGNoYW5nZQorQ0xVU1RFUiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFVTSU5H IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZTsgLS0gb2sKK0NMVVNURVIgcGdfYXV0aGlkIFVTSU5HIHBnX2F1dGhpZF9yb2xuYW1lX2luZGV4 IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gZmFpbAorQ0xVU1RFUiByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsIFVTSU5HIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IFRBQkxF U1BBQ0UgcGdfZ2xvYmFsOyAtLSBmYWlsCisKIC0tIGNoZWNrIHRoYXQgYWxsIHJlbGF0aW9ucyBt b3ZlZCB0byBuZXcgdGFibGVzcGFjZQogU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcwogV0hF UkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3Bj bmFtZT0ncmVncmVzc190YmxzcGFjZScpCiBPUkRFUiBCWSByZWxuYW1lOwogCistLSBjaGVjayBW QUNVVU0gd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorVkFDVVVNIChGVUxMLCBBTkFMWVNFLCBGUkVF WkUpIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOyAtLSBv aworVkFDVVVNIChGVUxMKSBUQUJMRVNQQUNFIHBnX2RlZmF1bHQgcGdfYXV0aGlkOyAtLSBza2lw IHdpdGggd2FybmluZworVkFDVVVNIChBTkFMWVNFKSBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7IC0t IGZhaWwKK1ZBQ1VVTSAoRlVMTCkgVEFCTEVTUEFDRSBwZ19nbG9iYWwgcmVncmVzc190YmxzcGFj ZV90ZXN0X3RibDsgLS0gZmFpbAorCistLSBjaGVjayB0aGF0IGFsbCB0YWJsZXMgbW92ZWQgYmFj ayB0byBwZ19kZWZhdWx0CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0 YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdy ZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7CisKIC0tIG1vdmUgaW5kZXhlcyBi YWNrIHRvIHBnX2RlZmF1bHQgdGFibGVzcGFjZQogUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkg cmVncmVzc190YmxzcGFjZV90ZXN0X3RibCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7IC0tIG9rCiAK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlIGIv c3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UKaW5kZXggMGRiOTkyOWY0 NC4uYTA1MTc2MDY5YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVz cGFjZS5zb3VyY2UKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3Vy Y2UKQEAgLTIwLDcgKzIwLDcgQEAgRVJST1I6ICB1bnJlY29nbml6ZWQgcGFyYW1ldGVyICJzb21l X25vbmV4aXN0ZW50X3BhcmFtZXRlciIKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCA9IDIuMCk7IC0tIGZhaWwKIEVSUk9SOiAgUkVTRVQg bXVzdCBub3QgaW5jbHVkZSB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMKIEFMVEVSIFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCwgZWZmZWN0aXZlX2lvX2Nv bmN1cnJlbmN5KTsgLS0gb2sKLS0tIGNyZWF0ZSB0YWJsZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBU QUJMRVNQQUNFIGNoYW5nZQorLS0gY3JlYXRlIHRhYmxlIHRvIHRlc3QgUkVJTkRFWCwgQ0xVU1RF UiBhbmQgVkFDVVVNIEZVTEwgd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQogQ1JFQVRFIFRBQkxFIHJl Z3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmlnaW50LCBudW0yIGRvdWJsZSBwcmVjaXNp b24sIG51bTMgZG91YmxlIHByZWNpc2lvbik7CiBJTlNFUlQgSU5UTyByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsIChudW0xLCBudW0yLCBudW0zKQogICBTRUxFQ1Qgcm91bmQocmFuZG9tKCkqMTAw KSwgcmFuZG9tKCksIHJhbmRvbSgpKjQyCkBAIC01MCw5ICs1MCw0NCBAQCBSRUlOREVYIElOREVY IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IFRBQkxFU1BBQ0UgcGdfZ2xvYmFsOyAtLSBm YWlsCiBFUlJPUjogIGNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVsYXRpb24gdG8gdGFibGVzcGFj ZSAicGdfZ2xvYmFsIgogUkVJTkRFWCBUQUJMRSBwZ19hbSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2U7IC0tIGZhaWwKIEVSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQ6ICJwZ19hbV9uYW1lX2lu ZGV4IiBpcyBhIHN5c3RlbSBjYXRhbG9nCistLSBjaGVjayB0aGF0IGFsbCBpbmRleGVzIG1vdmVk IHRvIG5ldyB0YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSBy ZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1l PSdyZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7CisgICAgICAgICAgICByZWxu YW1lICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVz c190YmxzcGFjZV90ZXN0X3RibF9pZHgKKygxIHJvdykKKworLS0gY2hlY2sgQ0xVU1RFUiB3aXRo IFRBQkxFU1BBQ0UgY2hhbmdlCitDTFVTVEVSIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgVVNJ TkcgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlOyAtLSBvaworQ0xVU1RFUiBwZ19hdXRoaWQgVVNJTkcgcGdfYXV0aGlkX3JvbG5hbWVfaW5k ZXggVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCBj bHVzdGVyIGEgc2hhcmVkIGNhdGFsb2cKK0NMVVNURVIgcmVncmVzc190YmxzcGFjZV90ZXN0X3Ri bCBVU0lORyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeCBUQUJMRVNQQUNFIHBnX2dsb2Jh bDsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3QgbW92ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRh Ymxlc3BhY2UgInBnX2dsb2JhbCIKIC0tIGNoZWNrIHRoYXQgYWxsIHJlbGF0aW9ucyBtb3ZlZCB0 byBuZXcgdGFibGVzcGFjZQogU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcwogV0hFUkUgcmVs dGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0n cmVncmVzc190YmxzcGFjZScpCitPUkRFUiBCWSByZWxuYW1lOworICAgICAgICAgICAgcmVsbmFt ZSAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF90YmwKKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeAorKDIgcm93 cykKKworLS0gY2hlY2sgVkFDVVVNIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UKK1ZBQ1VVTSAoRlVM TCwgQU5BTFlTRSwgRlJFRVpFKSBUQUJMRVNQQUNFIHBnX2RlZmF1bHQgcmVncmVzc190YmxzcGFj ZV90ZXN0X3RibDsgLS0gb2sKK1ZBQ1VVTSAoRlVMTCkgVEFCTEVTUEFDRSBwZ19kZWZhdWx0IHBn X2F1dGhpZDsgLS0gc2tpcCB3aXRoIHdhcm5pbmcKK1dBUk5JTkc6ICBza2lwcGluZyB0YWJsZXNw YWNlIGNoYW5nZSBvZiAicGdfYXV0aGlkIgorREVUQUlMOiAgQ2Fubm90IG1vdmUgc3lzdGVtIHJl bGF0aW9uLCBvbmx5IFZBQ1VVTSBpcyBwZXJmb3JtZWQuCitWQUNVVU0gKEFOQUxZU0UpIFRBQkxF U1BBQ0UgcGdfZGVmYXVsdDsgLS0gZmFpbAorRVJST1I6ICBpbmNvbXBhdGlibGUgVEFCTEVTUEFD RSBvcHRpb24KK0RFVEFJTDogIFlvdSBjYW4gb25seSB1c2UgVEFCTEVTUEFDRSB3aXRoIFZBQ1VV TSBGVUxMLgorVkFDVVVNIChGVUxMKSBUQUJMRVNQQUNFIHBnX2dsb2JhbCByZWdyZXNzX3RibHNw YWNlX3Rlc3RfdGJsOyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVs YXRpb24gdG8gdGFibGVzcGFjZSAicGdfZ2xvYmFsIgorLS0gY2hlY2sgdGhhdCBhbGwgdGFibGVz IG1vdmVkIGJhY2sgdG8gcGdfZGVmYXVsdAorU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcwor V0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUg c3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpCiBPUkRFUiBCWSByZWxuYW1lOwogICAgICAgICAg ICAgcmVsbmFtZSAgICAgICAgICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot LSAKMi4xOS4xCgo= --=_98e9e04a9e787f2c95fd6b36db13caf3 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v12-0002-Specially-handle-toast-relations-during-REINDEX.patch Content-Disposition: attachment; filename=v12-0002-Specially-handle-toast-relations-during-REINDEX.patch; size=5240 RnJvbSA3YWNkMzViNzAwZDUzY2VlNTg1ZGQ1ZWY3NTAxZjljMDc5YTE2NDlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlqQHRlbHNhc29mdC5jb20+ CkRhdGU6IE1vbiwgOSBNYXIgMjAyMCAxNTozNDo0MSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggdjEy IDIvM10gU3BlY2lhbGx5IGhhbmRsZSB0b2FzdCByZWxhdGlvbnMgZHVyaW5nIFJFSU5ERVguCgpJ cyB0aGlzIGZpbmUgPyAgSXQgc2F5cyAiY2Fubm90IHJlaW5kZXggc3lzdGVtIGNhdGFsb2dzIGNv bmN1cnJlbnRseSIgKG9uY2UpLAphbmQgaGl0cyB0aGUgcGdfdG9hc3QgdGFibGVzIGZvciBpbmZv cm1hdGlvbl9zY2hlbWEuICBTaG91bGQgaXQgc2tpcCB0b2FzdAppbmRleGVzIChsaWtlIGl0IHNh aWQpID8gIE9yIHNob3VsZCBpdCBSRUlOREVYIHRoZW0gb24gdGhlIHNhbWUgdGFibGVzcGFjZT8K CnRlbXBsYXRlMT0jIFJFSU5ERVggREFUQUJBU0UgQ09OQ1VSUkVOVExZIHRlbXBsYXRlMSBUQUJM RVNQQUNFIHBnX2RlZmF1bHQ7CjIwMjAtMDMtMDkgMTU6MzM6NTEuNzkyIENEVCBbNjQ2NF0gV0FS TklORzogIGNhbm5vdCByZWluZGV4IHN5c3RlbSBjYXRhbG9ncyBjb25jdXJyZW50bHksIHNraXBw aW5nIGFsbApXQVJOSU5HOiAgY2Fubm90IHJlaW5kZXggc3lzdGVtIGNhdGFsb2dzIGNvbmN1cnJl bnRseSwgc2tpcHBpbmcgYWxsCjIwMjAtMDMtMDkgMTU6MzM6NTEuNzk0IENEVCBbNjQ2NF0gV0FS TklORzogIHNraXBwaW5nIHRhYmxlc3BhY2UgY2hhbmdlIG9mICJwZ190b2FzdF8xMjU1OF9pbmRl eCIKMjAyMC0wMy0wOSAxNTozMzo1MS43OTQgQ0RUIFs2NDY0XSBERVRBSUw6ICBDYW5ub3QgbW92 ZSBzeXN0ZW0gcmVsYXRpb24sIG9ubHkgUkVJTkRFWCBDT05DVVJSRU5UTFkgaXMgcGVyZm9ybWVk LgpXQVJOSU5HOiAgc2tpcHBpbmcgdGFibGVzcGFjZSBjaGFuZ2Ugb2YgInBnX3RvYXN0XzEyNTU4 X2luZGV4IgpERVRBSUw6ICBDYW5ub3QgbW92ZSBzeXN0ZW0gcmVsYXRpb24sIG9ubHkgUkVJTkRF WCBDT05DVVJSRU5UTFkgaXMgcGVyZm9ybWVkLgoyMDIwLTAzLTA5IDE1OjMzOjUxLjkyNCBDRFQg WzY0NjRdIFdBUk5JTkc6ICBza2lwcGluZyB0YWJsZXNwYWNlIGNoYW5nZSBvZiAicGdfdG9hc3Rf MTI1NDNfaW5kZXgiCjIwMjAtMDMtMDkgMTU6MzM6NTEuOTI0IENEVCBbNjQ2NF0gREVUQUlMOiAg Q2Fubm90IG1vdmUgc3lzdGVtIHJlbGF0aW9uLCBvbmx5IFJFSU5ERVggQ09OQ1VSUkVOVExZIGlz IHBlcmZvcm1lZC4KV0FSTklORzogIHNraXBwaW5nIHRhYmxlc3BhY2UgY2hhbmdlIG9mICJwZ190 b2FzdF8xMjU0M19pbmRleCIKREVUQUlMOiAgQ2Fubm90IG1vdmUgc3lzdGVtIHJlbGF0aW9uLCBv bmx5IFJFSU5ERVggQ09OQ1VSUkVOVExZIGlzIHBlcmZvcm1lZC4KMjAyMC0wMy0wOSAxNTozMzo1 MS45ODIgQ0RUIFs2NDY0XSBXQVJOSU5HOiAgc2tpcHBpbmcgdGFibGVzcGFjZSBjaGFuZ2Ugb2Yg InBnX3RvYXN0XzEyNTQ4X2luZGV4IgoyMDIwLTAzLTA5IDE1OjMzOjUxLjk4MiBDRFQgWzY0NjRd IERFVEFJTDogIENhbm5vdCBtb3ZlIHN5c3RlbSByZWxhdGlvbiwgb25seSBSRUlOREVYIENPTkNV UlJFTlRMWSBpcyBwZXJmb3JtZWQuCldBUk5JTkc6ICBza2lwcGluZyB0YWJsZXNwYWNlIGNoYW5n ZSBvZiAicGdfdG9hc3RfMTI1NDhfaW5kZXgiCkRFVEFJTDogIENhbm5vdCBtb3ZlIHN5c3RlbSBy ZWxhdGlvbiwgb25seSBSRUlOREVYIENPTkNVUlJFTlRMWSBpcyBwZXJmb3JtZWQuCjIwMjAtMDMt MDkgMTU6MzM6NTIuMDQ4IENEVCBbNjQ2NF0gV0FSTklORzogIHNraXBwaW5nIHRhYmxlc3BhY2Ug Y2hhbmdlIG9mICJwZ190b2FzdF8xMjU1M19pbmRleCIKMjAyMC0wMy0wOSAxNTozMzo1Mi4wNDgg Q0RUIFs2NDY0XSBERVRBSUw6ICBDYW5ub3QgbW92ZSBzeXN0ZW0gcmVsYXRpb24sIG9ubHkgUkVJ TkRFWCBDT05DVVJSRU5UTFkgaXMgcGVyZm9ybWVkLgpXQVJOSU5HOiAgc2tpcHBpbmcgdGFibGVz cGFjZSBjaGFuZ2Ugb2YgInBnX3RvYXN0XzEyNTUzX2luZGV4IgpERVRBSUw6ICBDYW5ub3QgbW92 ZSBzeXN0ZW0gcmVsYXRpb24sIG9ubHkgUkVJTkRFWCBDT05DVVJSRU5UTFkgaXMgcGVyZm9ybWVk LgpSRUlOREVYCi0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgfCAyMCArKysr KysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgfCAyMCAr KysrKysrKysrKystLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAx MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggYjc2MjkwZTE4My4uOGYwMzUzY2Nh NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAtMzQ3NCwxMSArMzQ3NCwyMyBAQCByZWluZGV4X2luZGV4 KE9pZCBpbmRleElkLCBPaWQgdGFibGVzcGFjZU9pZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hl Y2tzLAogCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlSZWwpKTsKIAogCS8qCi0JICogV2Ug ZG9uJ3Qgc3VwcG9ydCBtb3Zpbmcgc3lzdGVtIHJlbGF0aW9ucyBpbnRvIGRpZmZlcmVudCB0YWJs ZXNwYWNlcywKLQkgKiB1bmxlc3MgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM9MS4KKwkgKiBTa2lw IHRhYmxlc3BhY2UgY2hhbmdlIG9mIGFsbCBpbmRleGVzIG9uIFRPQVNUIHRhYmxlcywgdW5sZXNz CisJICogYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM9MSwgYnV0IGVycm9yIG91dCBvbiBzeXN0ZW0g Y2F0YWxvZy4KIAkgKi8KLQlpZiAoc2V0X3RhYmxlc3BhY2UgJiYKLQkJIWFsbG93U3lzdGVtVGFi bGVNb2RzICYmIElzU3lzdGVtUmVsYXRpb24oaVJlbCkpCisJaWYgKHNldF90YWJsZXNwYWNlICYm IElzVG9hc3RSZWxhdGlvbihpUmVsKSkKKwl7CisJCWlmICghYWxsb3dTeXN0ZW1UYWJsZU1vZHMp CisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJza2lwcGluZyB0YWJsZXNwYWNlIGNoYW5n ZSBvZiBcIiVzXCIiLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlSZWwpKSwKKwkJ CQkJIGVycmRldGFpbCgiQ2Fubm90IG1vdmUgc3lzdGVtIHJlbGF0aW9uLCBvbmx5IFJFSU5ERVgg aXMgcGVyZm9ybWVkLiIpKSk7CisJCQlzZXRfdGFibGVzcGFjZSA9IGZhbHNlOworCQl9CisJfQor CWVsc2UgaWYgKHNldF90YWJsZXNwYWNlICYmCisJCQkgSXNDYXRhbG9nUmVsYXRpb25PaWQoaW5k ZXhJZCkgJiYgIWFsbG93U3lzdGVtVGFibGVNb2RzKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCiAJCQkJIGVycm1zZygicGVy bWlzc2lvbiBkZW5pZWQ6IFwiJXNcIiBpcyBhIHN5c3RlbSBjYXRhbG9nIiwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMKaW5kZXggNTlmYjdkZWEyZS4uYWZjOThjZGJiYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv aW5kZXhjbWRzLmMKQEAgLTMwNjEsMTQgKzMwNjEsMTcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3Vy cmVudGx5KE9pZCByZWxhdGlvbk9pZCwgT2lkIHRhYmxlc3BhY2VPaWQsIGludCBvcHRpb25zKQog CiAJCS8qCiAJCSAqIFdlIGRvbid0IHN1cHBvcnQgbW92aW5nIHN5c3RlbSByZWxhdGlvbnMgaW50 byBkaWZmZXJlbnQgdGFibGVzcGFjZXMsCi0JCSAqIHVubGVzcyBhbGxvd19zeXN0ZW1fdGFibGVf bW9kcz0xLgorCQkgKiB1bmxlc3MgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM9MS4gIFJlaW5kZXhp bmcgY29uY3VycmVudGx5IGlzIG5vdAorCQkgKiBhbGxvd2VkIGZvciBzeXN0ZW0gY2F0YWxvZywg c28gd2Ugb25seSBjaGVjayBmb3IgaW5kZXhlcyBvbgorCQkgKiBUT0FTVCB0YWJsZXMgaGVyZS4K IAkJICovCi0JCWlmIChPaWRJc1ZhbGlkKHRhYmxlc3BhY2VPaWQpICYmCi0JCQkhYWxsb3dTeXN0 ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1SZWxhdGlvbihpbmRleFJlbCkpCi0JCQllcmVwb3J0KEVS Uk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAotCQkJ CQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZDogXCIlc1wiIGlzIGEgc3lzdGVtIGNhdGFsb2ci LAotCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZGV4UmVsKSkpKTsKKwkJaWYgKE9p ZElzVmFsaWQodGFibGVzcGFjZU9pZCkKKwkJCSYmIElzVG9hc3RSZWxhdGlvbihpbmRleFJlbCkg JiYgIWFsbG93U3lzdGVtVGFibGVNb2RzKQorCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coInNraXBw aW5nIHRhYmxlc3BhY2UgY2hhbmdlIG9mIFwiJXNcIiIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUoaW5kZXhSZWwpKSwKKwkJCQkJIGVycmRldGFpbCgiQ2Fubm90IG1vdmUgc3lzdGVt IHJlbGF0aW9uLCBvbmx5IFJFSU5ERVggQ09OQ1VSUkVOVExZIGlzIHBlcmZvcm1lZC4iKSkpOwog CiAJCS8qCiAJCSAqIFdlIGNhbm5vdCBzdXBwb3J0IG1vdmluZyBtYXBwZWQgcmVsYXRpb25zIGlu dG8gZGlmZmVyZW50IHRhYmxlc3BhY2VzLgpAQCAtMzA5OSw3ICszMTAyLDggQEAgUmVpbmRleFJl bGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgT2lkIHRhYmxlc3BhY2VPaWQsIGlu dCBvcHRpb25zKQogCQkvKiBDcmVhdGUgbmV3IGluZGV4IGRlZmluaXRpb24gYmFzZWQgb24gZ2l2 ZW4gaW5kZXggKi8KIAkJbmV3SW5kZXhJZCA9IGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29w eShoZWFwUmVsLAogCQkJCQkJCQkJCQkJCWluZGV4SWQsCi0JCQkJCQkJCQkJCQkJdGFibGVzcGFj ZU9pZCwKKwkJCQkJCQkJCQkJCQlJc1RvYXN0UmVsYXRpb24oaW5kZXhSZWwpICYmICFhbGxvd1N5 c3RlbVRhYmxlTW9kcyA/CisJCQkJCQkJCQkJCQkJCUludmFsaWRPaWQgOiB0YWJsZXNwYWNlT2lk LAogCQkJCQkJCQkJCQkJCWNvbmN1cnJlbnROYW1lKTsKIAogCQkvKgotLSAKMi4xOS4xCgo= --=_98e9e04a9e787f2c95fd6b36db13caf3 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v12-0001-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v12-0001-Allow-REINDEX-to-change-tablespace.patch; size=34870 RnJvbSA1MDdhNmVkNjMzNzViZjkyNGIzZDJlOWU4Y2YwOWY3MTViYWNlYmJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMjMgTWFyIDIwMjAgMjE6MTA6MjkgKzAzMDAKU3ViamVjdDog W1BBVENIIHYxMiAxLzNdIEFsbG93IFJFSU5ERVggdG8gY2hhbmdlIHRhYmxlc3BhY2UKClJFSU5E RVggYWxyZWFkeSBkb2VzIGZ1bGwgcmVsYXRpb24gcmV3cml0ZSwgdGhpcyBwYXRjaCBhZGRzIGEK cG9zc2liaWxpdHkgdG8gc3BlY2lmeSBhIG5ldyB0YWJsZXNwYWNlIHdoZXJlIG5ldyByZWxmaWxl bm9kZQp3aWxsIGJlIGNyZWF0ZWQuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwg ICAgICAgICAgICAgfCAgMjQgKysrLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAg ICAgICAgICAgfCAgODkgKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0 ZXIuYyAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMu YyAgICAgICAgICB8IDEzOSArKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvbm9kZXMvY29w eWZ1bmNzLmMgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5j cy5jICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgfCAgMTQgKystCiBzcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyAgICAgICAgICAg ICAgICB8ICAgNiArLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAgICAgICAgICAgICAg fCAgIDYgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgICAgICAgICAgfCAgIDcg Ky0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAgICAgICAgIHwgICA2ICstCiBz cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVz dC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlICB8ICAzOSArKysrKysKIHNyYy90ZXN0 L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlIHwgIDUwICsrKysrKysrCiAxNSBmaWxl cyBjaGFuZ2VkLCAzNTQgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5k ZXguc2dtbAppbmRleCBjNTRhN2M0MjBkLi5iOTdiZDY3M2E1IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvcmVmL3JlaW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXguc2dt bApAQCAtMjEsNyArMjEsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5v cHNpc2Rpdj4KIDxzeW5vcHNpcz4KLVJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElOREVYIHwgVEFCTEUg fCBTQ0hFTUEgfCBEQVRBQkFTRSB8IFNZU1RFTSB9IFsgQ09OQ1VSUkVOVExZIF0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgorUkVJTkRFWCBbICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0g KSBdIHsgSU5ERVggfCBUQUJMRSB8IFNDSEVNQSB8IERBVEFCQVNFIHwgU1lTVEVNIH0gWyBDT05D VVJSRU5UTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+IFsgVEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3RhYmxl c3BhY2U8L3JlcGxhY2VhYmxlPiBdCiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IGNhbiBiZSBvbmUgb2Y6PC9waHJhc2U+ CiAKQEAgLTE3NCw2ICsxNzQsMjggQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRl cm0+PGxpdGVyYWw+VEFCTEVTUEFDRTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoaXMgc3BlY2lmaWVzIGEgdGFibGVzcGFjZSwgd2hlcmUgYWxs IHJlYnVpbHQgaW5kZXhlcyB3aWxsIGJlIGNyZWF0ZWQuCisgICAgICBDYW5ub3QgYmUgdXNlZCB3 aXRoICJtYXBwZWQiIHJlbGF0aW9ucy4gSWYgPGxpdGVyYWw+U0NIRU1BPC9saXRlcmFsPiwKKyAg ICAgIDxsaXRlcmFsPkRBVEFCQVNFPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5TWVNURU08L2xpdGVy YWw+IGlzIHNwZWNpZmllZCwgdGhlbgorICAgICAgYWxsIHVuc3VpdGFibGUgcmVsYXRpb25zIHdp bGwgYmUgc2tpcHBlZCBhbmQgYSBzaW5nbGUgPGxpdGVyYWw+V0FSTklORzwvbGl0ZXJhbD4KKyAg ICAgIHdpbGwgYmUgZ2VuZXJhdGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfdGFibGVzcGFjZTwvcmVwbGFjZWFibGU+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbmFtZSBvZiBhIHNwZWNp ZmljIHRhYmxlc3BhY2UgdG8gc3RvcmUgcmVidWlsdCBpbmRleGVzLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5Pgog ICAgIDx0ZXJtPjxsaXRlcmFsPlZFUkJPU0U8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRl bT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvaW5kZXguYwppbmRleCAyZDgxYmMzY2JjLi5iNzYyOTBlMTgzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmRleC5jCkBAIC0xMjM1LDkgKzEyMzUsMTMgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBS ZWxhdGlvbiwKICAqIENyZWF0ZSBjb25jdXJyZW50bHkgYW4gaW5kZXggYmFzZWQgb24gdGhlIGRl ZmluaXRpb24gb2YgdGhlIG9uZSBwcm92aWRlZCBieQogICogY2FsbGVyLiAgVGhlIGluZGV4IGlz IGluc2VydGVkIGludG8gY2F0YWxvZ3MgYW5kIG5lZWRzIHRvIGJlIGJ1aWx0IGxhdGVyCiAgKiBv bi4gIFRoaXMgaXMgY2FsbGVkIGR1cmluZyBjb25jdXJyZW50IHJlaW5kZXggcHJvY2Vzc2luZy4K KyAqCisgKiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIG5ldyB0YWJsZXNwYWNlIHRvIHVzZSBmb3Ig dGhpcyBpbmRleC4gIElmCisgKiBJbnZhbGlkT2lkLCB1c2UgdGhlIHRhYmxlc3BhY2UgaW4tdXNl IGluc3RlYWQuCiAgKi8KIE9pZAotaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0 aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCitp bmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLCBPaWQg b2xkSW5kZXhJZCwKKwkJCQkJCQkgICBPaWQgdGFibGVzcGFjZU9pZCwgY29uc3QgY2hhciAqbmV3 TmFtZSkKIHsKIAlSZWxhdGlvbglpbmRleFJlbGF0aW9uOwogCUluZGV4SW5mbyAgKm9sZEluZm8s CkBAIC0xMzY3LDcgKzEzNzEsOCBAQCBpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVs YXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwgY29uc3QgY2hhcgogCQkJCQkJCSAg bmV3SW5mbywKIAkJCQkJCQkgIGluZGV4Q29sTmFtZXMsCiAJCQkJCQkJICBpbmRleFJlbGF0aW9u LT5yZF9yZWwtPnJlbGFtLAotCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWx0YWJs ZXNwYWNlLAorCQkJCQkJCSAgT2lkSXNWYWxpZCh0YWJsZXNwYWNlT2lkKSA/CisJCQkJCQkJCXRh Ymxlc3BhY2VPaWQgOiBpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UsCiAJCQkJ CQkJICBpbmRleFJlbGF0aW9uLT5yZF9pbmRjb2xsYXRpb24sCiAJCQkJCQkJICBpbmRjbGFzcy0+ dmFsdWVzLAogCQkJCQkJCSAgaW5kY29sb3B0aW9ucy0+dmFsdWVzLApAQCAtMzQxNSwxMCArMzQy MCwxMiBAQCBJbmRleEdldFJlbGF0aW9uKE9pZCBpbmRleElkLCBib29sIG1pc3Npbmdfb2spCiAK IC8qCiAgKiByZWluZGV4X2luZGV4IC0gVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gcmVjcmVhdGUg YSBzaW5nbGUgaW5kZXgKKyAqCisgKiBTZWUgY29tbWVudHMgb2YgcmVpbmRleF9yZWxhdGlvbigp IGZvciBkZXRhaWxzIGFib3V0ICJ0YWJsZXNwYWNlT2lkIi4KICAqLwogdm9pZAotcmVpbmRleF9p bmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNp c3RlbmNlLAotCQkJICBpbnQgb3B0aW9ucykKK3JlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIE9p ZCB0YWJsZXNwYWNlT2lkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsCisJCQkgIGNoYXIg cGVyc2lzdGVuY2UsIGludCBvcHRpb25zKQogewogCVJlbGF0aW9uCWlSZWwsCiAJCQkJaGVhcFJl bGF0aW9uOwpAQCAtMzQyNyw2ICszNDM0LDcgQEAgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwg Ym9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLAogCXZvbGF0aWxl IGJvb2wgc2tpcHBlZF9jb25zdHJhaW50ID0gZmFsc2U7CiAJUEdSVXNhZ2UJcnUwOwogCWJvb2wJ CXByb2dyZXNzID0gKG9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9QUk9HUkVTUykgIT0gMDsK Kwlib29sCQlzZXRfdGFibGVzcGFjZSA9IE9pZElzVmFsaWQodGFibGVzcGFjZU9pZCk7CiAKIAlw Z19ydXNhZ2VfaW5pdCgmcnUwKTsKIApAQCAtMzQ2NSw2ICszNDczLDI3IEBAIHJlaW5kZXhfaW5k ZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0 ZW5jZSwKIAkJZWxvZyhFUlJPUiwgInVuc3VwcG9ydGVkIHJlbGF0aW9uIGtpbmQgZm9yIGluZGV4 IFwiJXNcIiIsCiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaVJlbCkpOwogCisJLyoKKwkg KiBXZSBkb24ndCBzdXBwb3J0IG1vdmluZyBzeXN0ZW0gcmVsYXRpb25zIGludG8gZGlmZmVyZW50 IHRhYmxlc3BhY2VzLAorCSAqIHVubGVzcyBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcz0xLgorCSAq LworCWlmIChzZXRfdGFibGVzcGFjZSAmJgorCQkhYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYgSXNT eXN0ZW1SZWxhdGlvbihpUmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCSBlcnJtc2coInBlcm1pc3Npb24gZGVu aWVkOiBcIiVzXCIgaXMgYSBzeXN0ZW0gY2F0YWxvZyIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShpUmVsKSkpKTsKKworCS8qCisJICogV2UgY2Fubm90IHN1cHBvcnQgbW92aW5nIG1h cHBlZCByZWxhdGlvbnMgaW50byBkaWZmZXJlbnQgdGFibGVzcGFjZXMuCisJICogKEluIHBhcnRp Y3VsYXIgdGhpcyBlbGltaW5hdGVzIGFsbCBzaGFyZWQgY2F0YWxvZ3MuKQorCSAqLworCWlmIChz ZXRfdGFibGVzcGFjZSAmJiBSZWxhdGlvbklzTWFwcGVkKGlSZWwpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJy bXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgbWFwcGVkIHJlbGF0aW9uIFwiJXNcIiIs CisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpUmVsKSkpKTsKKwogCS8qCiAJICogRG9u J3QgYWxsb3cgcmVpbmRleCBvbiB0ZW1wIHRhYmxlcyBvZiBvdGhlciBiYWNrZW5kcyAuLi4gdGhl aXIgbG9jYWwKIAkgKiBidWZmZXIgbWFuYWdlciBpcyBub3QgZ29pbmcgdG8gY29wZS4KQEAgLTM0 OTEsNiArMzUyMCw0NyBAQCByZWluZGV4X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29u c3RyYWludF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAJICovCiAJQ2hlY2tUYWJsZU5vdElu VXNlKGlSZWwsICJSRUlOREVYIElOREVYIik7CiAKKwlpZiAodGFibGVzcGFjZU9pZCA9PSBNeURh dGFiYXNlVGFibGVTcGFjZSkKKwkJdGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7CisKKwkvKgor CSAqIFNldCB0aGUgbmV3IHRhYmxlc3BhY2UgZm9yIHRoZSByZWxhdGlvbi4gIERvIHRoYXQgb25s eSBpbiB0aGUKKwkgKiBjYXNlIHdoZXJlIHRoZSByZWluZGV4IGNhbGxlciB3aXNoZXMgdG8gZW5m b3JjZSBhIG5ldyB0YWJsZXNwYWNlLgorCSAqLworCWlmIChzZXRfdGFibGVzcGFjZSAmJgorCQl0 YWJsZXNwYWNlT2lkICE9IGlSZWwtPnJkX3JlbC0+cmVsdGFibGVzcGFjZSkKKwl7CisJCVJlbGF0 aW9uCQlwZ19jbGFzczsKKwkJRm9ybV9wZ19jbGFzcwlyZF9yZWw7CisJCUhlYXBUdXBsZQkJdHVw bGU7CisKKwkJLyogRmlyc3QgZ2V0IGEgbW9kaWZpYWJsZSBjb3B5IG9mIHRoZSByZWxhdGlvbidz IHBnX2NsYXNzIHJvdyAqLworCQlwZ19jbGFzcyA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlv bklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEo UkVMT0lELCBPYmplY3RJZEdldERhdHVtKGluZGV4SWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKHR1cGxlKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxh dGlvbiAldSIsIGluZGV4SWQpOworCQlyZF9yZWwgPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNU KHR1cGxlKTsKKworCQkvKgorCQkgKiBNYXJrIHRoZSByZWxhdGlvbiBhcyByZWFkeSB0byBiZSBk cm9wcGVkIGF0IHRyYW5zYWN0aW9uIGNvbW1pdCwKKwkJICogYmVmb3JlIG1ha2luZyB2aXNpYmxl IHRoZSBuZXcgdGFibGVzcGFjZSBjaGFuZ2Ugc28gYXMgdGhpcyB3b24ndAorCQkgKiBtaXNzIHRo aW5ncy4KKwkJICovCisJCVJlbGF0aW9uRHJvcFN0b3JhZ2UoaVJlbCk7CisKKwkJLyogVXBkYXRl IHRoZSBwZ19jbGFzcyByb3cgKi8KKwkJcmRfcmVsLT5yZWx0YWJsZXNwYWNlID0gdGFibGVzcGFj ZU9pZDsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2NsYXNzLCAmdHVwbGUtPnRfc2VsZiwgdHVw bGUpOworCisJCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKKworCQl0YWJsZV9jbG9zZShwZ19jbGFz cywgUm93RXhjbHVzaXZlTG9jayk7CisKKwkJLyogTWFrZSBzdXJlIHRoZSByZWx0YWJsZXNwYWNl IGNoYW5nZSBpcyB2aXNpYmxlICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CisJfQor CiAJLyoKIAkgKiBBbGwgcHJlZGljYXRlIGxvY2tzIG9uIHRoZSBpbmRleCBhcmUgYWJvdXQgdG8g YmUgbWFkZSBpbnZhbGlkLiBQcm9tb3RlCiAJICogdGhlbSB0byByZWxhdGlvbiBsb2NrcyBvbiB0 aGUgaGVhcC4KQEAgLTM2MjksNiArMzY5OSwxMCBAQCByZWluZGV4X2luZGV4KE9pZCBpbmRleElk LCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAgKiByZWlu ZGV4X3JlbGF0aW9uIC0gVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gcmVjcmVhdGUgYWxsIGluZGV4 ZXMKICAqIG9mIGEgcmVsYXRpb24gKGFuZCBvcHRpb25hbGx5IGl0cyB0b2FzdCByZWxhdGlvbiB0 b28sIGlmIGFueSkuCiAgKgorICogInRhYmxlc3BhY2VPaWQiIGRlZmluZXMgdGhlIG5ldyB0YWJs ZXNwYWNlIHdoZXJlIHRoZSBpbmRleGVzIG9mCisgKiB0aGUgcmVsYXRpb24gd2lsbCBiZSByZWJ1 aWx0LiAgSWYgSW52YWxpZE9pZCBpcyB1c2VkLCB0aGUgY3VycmVudAorICogdGFibGVzcGFjZSBv ZiBlYWNoIGluZGV4IGlzIHVzZWQgaW5zdGVhZC4KKyAqCiAgKiAiZmxhZ3MiIGlzIGEgYml0bWFz ayB0aGF0IGNhbiBpbmNsdWRlIGFueSBjb21iaW5hdGlvbiBvZiB0aGVzZSBiaXRzOgogICoKICAq IFJFSU5ERVhfUkVMX1BST0NFU1NfVE9BU1Q6IGlmIHRydWUsIHByb2Nlc3MgdGhlIHRvYXN0IHRh YmxlIHRvbyAoaWYgYW55KS4KQEAgLTM2NjEsNyArMzczNSw3IEBAIHJlaW5kZXhfaW5kZXgoT2lk IGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwK ICAqIGluZGV4IHJlYnVpbGQuCiAgKi8KIGJvb2wKLXJlaW5kZXhfcmVsYXRpb24oT2lkIHJlbGlk LCBpbnQgZmxhZ3MsIGludCBvcHRpb25zKQorcmVpbmRleF9yZWxhdGlvbihPaWQgcmVsaWQsIE9p ZCB0YWJsZXNwYWNlT2lkLCBpbnQgZmxhZ3MsIGludCBvcHRpb25zKQogewogCVJlbGF0aW9uCXJl bDsKIAlPaWQJCQl0b2FzdF9yZWxpZDsKQEAgLTM3NTIsNyArMzgyNiw4IEBAIHJlaW5kZXhfcmVs YXRpb24oT2lkIHJlbGlkLCBpbnQgZmxhZ3MsIGludCBvcHRpb25zKQogCQkJCWNvbnRpbnVlOwog CQkJfQogCi0JCQlyZWluZGV4X2luZGV4KGluZGV4T2lkLCAhKGZsYWdzICYgUkVJTkRFWF9SRUxf Q0hFQ0tfQ09OU1RSQUlOVFMpLAorCQkJcmVpbmRleF9pbmRleChpbmRleE9pZCwgdGFibGVzcGFj ZU9pZCwKKwkJCQkJCSAgIShmbGFncyAmIFJFSU5ERVhfUkVMX0NIRUNLX0NPTlNUUkFJTlRTKSwK IAkJCQkJCSAgcGVyc2lzdGVuY2UsIG9wdGlvbnMpOwogCiAJCQlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOwpAQCAtMzc4NSw3ICszODYwLDcgQEAgcmVpbmRleF9yZWxhdGlvbihPaWQgcmVsaWQs IGludCBmbGFncywgaW50IG9wdGlvbnMpCiAJICogc3RpbGwgaG9sZCB0aGUgbG9jayBvbiB0aGUg bWFzdGVyIHRhYmxlLgogCSAqLwogCWlmICgoZmxhZ3MgJiBSRUlOREVYX1JFTF9QUk9DRVNTX1RP QVNUKSAmJiBPaWRJc1ZhbGlkKHRvYXN0X3JlbGlkKSkKLQkJcmVzdWx0IHw9IHJlaW5kZXhfcmVs YXRpb24odG9hc3RfcmVsaWQsIGZsYWdzLCBvcHRpb25zKTsKKwkJcmVzdWx0IHw9IHJlaW5kZXhf cmVsYXRpb24odG9hc3RfcmVsaWQsIHRhYmxlc3BhY2VPaWQsIGZsYWdzLCBvcHRpb25zKTsKIAog CXJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVz dGVyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKaW5kZXggZmMxY2VhMDIzNi4u YWZjNzUyZTlkNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYwpAQCAtMTQwNiw3ICsxNDA2LDcgQEAg ZmluaXNoX2hlYXBfc3dhcChPaWQgT0lET2xkSGVhcCwgT2lkIE9JRE5ld0hlYXAsCiAJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DTFVTVEVSX1BIQVNFLAogCQkJCQkJCQkg UFJPR1JFU1NfQ0xVU1RFUl9QSEFTRV9SRUJVSUxEX0lOREVYKTsKIAotCXJlaW5kZXhfcmVsYXRp b24oT0lET2xkSGVhcCwgcmVpbmRleF9mbGFncywgMCk7CisJcmVpbmRleF9yZWxhdGlvbihPSURP bGRIZWFwLCBJbnZhbGlkT2lkLCByZWluZGV4X2ZsYWdzLCAwKTsKIAogCS8qIFJlcG9ydCB0aGF0 IHdlIGFyZSBub3cgZG9pbmcgY2xlYW4gdXAgKi8KIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NMVVNURVJfUEhBU0UsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4 IDRlODI2M2FmNGIuLjU5ZmI3ZGVhMmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBAIC04 Nyw3ICs4Nyw3IEBAIHN0YXRpYyBjaGFyICpDaG9vc2VJbmRleE5hbWVBZGRpdGlvbihMaXN0ICpj b2xuYW1lcyk7CiBzdGF0aWMgTGlzdCAqQ2hvb3NlSW5kZXhDb2x1bW5OYW1lcyhMaXN0ICppbmRl eEVsZW1zKTsKIHN0YXRpYyB2b2lkIFJhbmdlVmFyQ2FsbGJhY2tGb3JSZWluZGV4SW5kZXgoY29u c3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAogCQkJCQkJCQkJCQlPaWQgcmVsSWQsIE9pZCBvbGRSZWxJ ZCwgdm9pZCAqYXJnKTsKLXN0YXRpYyBib29sIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShP aWQgcmVsYXRpb25PaWQsIGludCBvcHRpb25zKTsKK3N0YXRpYyBib29sIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIE9pZCB0YWJsZXNwYWNlT2lkLCBpbnQgb3B0 aW9ucyk7CiBzdGF0aWMgdm9pZCBSZWluZGV4UGFydGl0aW9uZWRJbmRleChSZWxhdGlvbiBwYXJl bnRJZHgpOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbGlzcGFydGl0aW9uKE9pZCByZWxhdGlvbklk LCBib29sIG5ld3ZhbCk7CiAKQEAgLTIzMDMsMTAgKzIzMDMsMTEgQEAgQ2hvb3NlSW5kZXhDb2x1 bW5OYW1lcyhMaXN0ICppbmRleEVsZW1zKQogICoJCVJlY3JlYXRlIGEgc3BlY2lmaWMgaW5kZXgu CiAgKi8KIHZvaWQKLVJlaW5kZXhJbmRleChSYW5nZVZhciAqaW5kZXhSZWxhdGlvbiwgaW50IG9w dGlvbnMsIGJvb2wgY29uY3VycmVudCkKK1JlaW5kZXhJbmRleChSYW5nZVZhciAqaW5kZXhSZWxh dGlvbiwgY2hhciAqbmV3VGFibGVTcGFjZU5hbWUsIGludCBvcHRpb25zLCBib29sIGNvbmN1cnJl bnQpCiB7CiAJc3RydWN0IFJlaW5kZXhJbmRleENhbGxiYWNrU3RhdGUgc3RhdGU7CiAJT2lkCQkJ aW5kT2lkOworCU9pZAkJCXRhYmxlc3BhY2VPaWQgPSBJbnZhbGlkT2lkOwogCVJlbGF0aW9uCWly ZWw7CiAJY2hhcgkJcGVyc2lzdGVuY2U7CiAKQEAgLTIzNDEsMTIgKzIzNDIsMjYgQEAgUmVpbmRl eEluZGV4KFJhbmdlVmFyICppbmRleFJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBjb25jdXJy ZW50KQogCX0KIAogCXBlcnNpc3RlbmNlID0gaXJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZTsK KworCS8qIERlZmluZSBuZXcgdGFibGVzcGFjZU9pZCBpZiBpdCBpcyB3YW50ZWQgYnkgY2FsbGVy ICovCisJaWYgKG5ld1RhYmxlU3BhY2VOYW1lKQorCXsKKwkJdGFibGVzcGFjZU9pZCA9IGdldF90 YWJsZXNwYWNlX29pZChuZXdUYWJsZVNwYWNlTmFtZSwgZmFsc2UpOworCisJCS8qIENhbid0IG1v dmUgYSBub24tc2hhcmVkIHJlbGF0aW9uIGludG8gcGdfZ2xvYmFsICovCisJCWlmICh0YWJsZXNw YWNlT2lkID09IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJj YW5ub3QgbW92ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKKwkJ CQkJCQluZXdUYWJsZVNwYWNlTmFtZSkpKTsKKwl9CisKIAlpbmRleF9jbG9zZShpcmVsLCBOb0xv Y2spOwogCiAJaWYgKGNvbmN1cnJlbnQgJiYgcGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0Vf VEVNUCkKLQkJUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGluZE9pZCwgb3B0aW9ucyk7CisJ CVJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShpbmRPaWQsIHRhYmxlc3BhY2VPaWQsIG9wdGlv bnMpOwogCWVsc2UKLQkJcmVpbmRleF9pbmRleChpbmRPaWQsIGZhbHNlLCBwZXJzaXN0ZW5jZSwK KwkJcmVpbmRleF9pbmRleChpbmRPaWQsIHRhYmxlc3BhY2VPaWQsIGZhbHNlLCBwZXJzaXN0ZW5j ZSwKIAkJCQkJICBvcHRpb25zIHwgUkVJTkRFWE9QVF9SRVBPUlRfUFJPR1JFU1MpOwogfQogCkBA IC0yNDI1LDEwICsyNDQwLDExIEBAIFJhbmdlVmFyQ2FsbGJhY2tGb3JSZWluZGV4SW5kZXgoY29u c3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAogICoJCVJlY3JlYXRlIGFsbCBpbmRleGVzIG9mIGEgdGFi bGUgKGFuZCBvZiBpdHMgdG9hc3QgdGFibGUsIGlmIGFueSkKICAqLwogT2lkCi1SZWluZGV4VGFi bGUoUmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBjb25jdXJyZW50KQorUmVp bmRleFRhYmxlKFJhbmdlVmFyICpyZWxhdGlvbiwgY2hhciAqbmV3VGFibGVTcGFjZU5hbWUsIGlu dCBvcHRpb25zLCBib29sIGNvbmN1cnJlbnQpCiB7CiAJT2lkCQkJaGVhcE9pZDsKIAlib29sCQly ZXN1bHQ7CisJT2lkIAkJdGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7CiAKIAkvKgogCSAqIFRo ZSBsb2NrIGxldmVsIHVzZWQgaGVyZSBzaG91bGQgbWF0Y2ggcmVpbmRleF9yZWxhdGlvbigpLgpA QCAtMjQ0Myw5ICsyNDU5LDIyIEBAIFJlaW5kZXhUYWJsZShSYW5nZVZhciAqcmVsYXRpb24sIGlu dCBvcHRpb25zLCBib29sIGNvbmN1cnJlbnQpCiAJCQkJCQkJCQkgICAwLAogCQkJCQkJCQkJICAg UmFuZ2VWYXJDYWxsYmFja093bnNUYWJsZSwgTlVMTCk7CiAKKwkvKiBEZWZpbmUgbmV3IHRhYmxl c3BhY2VPaWQgaWYgaXQgaXMgd2FudGVkIGJ5IGNhbGxlciAqLworCWlmIChuZXdUYWJsZVNwYWNl TmFtZSkKKwl7CisJCXRhYmxlc3BhY2VPaWQgPSBnZXRfdGFibGVzcGFjZV9vaWQobmV3VGFibGVT cGFjZU5hbWUsIGZhbHNlKTsKKworCQkvKiBDYW4ndCBtb3ZlIGEgbm9uLXNoYXJlZCByZWxhdGlv biBpbnRvIHBnX2dsb2JhbCAqLworCQlpZiAodGFibGVzcGFjZU9pZCA9PSBHTE9CQUxUQUJMRVNQ QUNFX09JRCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgbm9uLXNoYXJlZCBy ZWxhdGlvbiB0byB0YWJsZXNwYWNlIFwiJXNcIiIsCisJCQkJCQkJbmV3VGFibGVTcGFjZU5hbWUp KSk7CisJfQorCiAJaWYgKGNvbmN1cnJlbnQgJiYgZ2V0X3JlbF9wZXJzaXN0ZW5jZShoZWFwT2lk KSAhPSBSRUxQRVJTSVNURU5DRV9URU1QKQogCXsKLQkJcmVzdWx0ID0gUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGhlYXBPaWQsIG9wdGlvbnMpOworCQlyZXN1bHQgPSBSZWluZGV4UmVsYXRp b25Db25jdXJyZW50bHkoaGVhcE9pZCwgdGFibGVzcGFjZU9pZCwgb3B0aW9ucyk7CiAKIAkJaWYg KCFyZXN1bHQpCiAJCQllcmVwb3J0KE5PVElDRSwKQEAgLTI0NTUsNiArMjQ4NCw3IEBAIFJlaW5k ZXhUYWJsZShSYW5nZVZhciAqcmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGNvbmN1cnJlbnQp CiAJZWxzZQogCXsKIAkJcmVzdWx0ID0gcmVpbmRleF9yZWxhdGlvbihoZWFwT2lkLAorCQkJCQkJ CQkgIHRhYmxlc3BhY2VPaWQsCiAJCQkJCQkJCSAgUkVJTkRFWF9SRUxfUFJPQ0VTU19UT0FTVCB8 CiAJCQkJCQkJCSAgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMsCiAJCQkJCQkJCSAgb3B0 aW9ucyB8IFJFSU5ERVhPUFRfUkVQT1JUX1BST0dSRVNTKTsKQEAgLTI0NzYsMTAgKzI1MDYsMTEg QEAgUmVpbmRleFRhYmxlKFJhbmdlVmFyICpyZWxhdGlvbiwgaW50IG9wdGlvbnMsIGJvb2wgY29u Y3VycmVudCkKICAqIFRoYXQgbWVhbnMgdGhpcyBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aGluIGEg dXNlciB0cmFuc2FjdGlvbiBibG9jayEKICAqLwogdm9pZAotUmVpbmRleE11bHRpcGxlVGFibGVz KGNvbnN0IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQsCitS ZWluZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVpbmRleE9iamVj dFR5cGUgb2JqZWN0S2luZCwgY2hhciAqbmV3VGFibGVTcGFjZU5hbWUsCiAJCQkJCSAgaW50IG9w dGlvbnMsIGJvb2wgY29uY3VycmVudCkKIHsKIAlPaWQJCQlvYmplY3RPaWQ7CisJT2lkCQkJdGFi bGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7CiAJUmVsYXRpb24JcmVsYXRpb25SZWxhdGlvbjsKIAlU YWJsZVNjYW5EZXNjIHNjYW47CiAJU2NhbktleURhdGEgc2Nhbl9rZXlzWzFdOwpAQCAtMjQ5MCw2 ICsyNTIxLDcgQEAgUmVpbmRleE11bHRpcGxlVGFibGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUs IFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQsCiAJTGlzdENlbGwgICAqbDsKIAlpbnQJCQlu dW1fa2V5czsKIAlib29sCQljb25jdXJyZW50X3dhcm5pbmcgPSBmYWxzZTsKKwlib29sCQl0YWJs ZXNwYWNlX3dhcm5pbmcgPSBmYWxzZTsKIAogCUFzc2VydEFyZyhvYmplY3ROYW1lKTsKIAlBc3Nl cnQob2JqZWN0S2luZCA9PSBSRUlOREVYX09CSkVDVF9TQ0hFTUEgfHwKQEAgLTI1MjgsNiArMjU2 MCwxOSBAQCBSZWluZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVp bmRleE9iamVjdFR5cGUgb2JqZWN0S2luZCwKIAkJCQkJCSAgIG9iamVjdE5hbWUpOwogCX0KIAor CS8qIERlZmluZSBuZXcgdGFibGVzcGFjZU9pZCBpZiBpdCBpcyB3YW50ZWQgYnkgY2FsbGVyICov CisJaWYgKG5ld1RhYmxlU3BhY2VOYW1lKQorCXsKKwkJdGFibGVzcGFjZU9pZCA9IGdldF90YWJs ZXNwYWNlX29pZChuZXdUYWJsZVNwYWNlTmFtZSwgZmFsc2UpOworCisJCS8qIENhbid0IG1vdmUg YSBub24tc2hhcmVkIHJlbGF0aW9uIGludG8gcGdfZ2xvYmFsICovCisJCWlmICh0YWJsZXNwYWNl T2lkID09IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJjYW5u b3QgbW92ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKKwkJCQkJ CQluZXdUYWJsZVNwYWNlTmFtZSkpKTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSBhIG1lbW9yeSBj b250ZXh0IHRoYXQgd2lsbCBzdXJ2aXZlIGZvcmNlZCB0cmFuc2FjdGlvbiBjb21taXRzIHdlCiAJ ICogZG8gYmVsb3cuICBTaW5jZSBpdCBpcyBhIGNoaWxkIG9mIFBvcnRhbENvbnRleHQsIGl0IHdp bGwgZ28gYXdheQpAQCAtMjYxOCw2ICsyNjYzLDM1IEBAIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhj b25zdCBjaGFyICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAogCQkJ Y29udGludWU7CiAJCX0KIAorCQlpZiAoT2lkSXNWYWxpZCh0YWJsZXNwYWNlT2lkKSAmJgorCQkJ SXNTeXN0ZW1DbGFzcyhyZWxpZCwgY2xhc3N0dXBsZSkpCisJCXsKKwkJCWlmICghYWxsb3dTeXN0 ZW1UYWJsZU1vZHMpCisJCQl7CisJCQkJLyogU2tpcCBhbGwgc3lzdGVtIHJlbGF0aW9ucywgaWYg bm90IGFsbG93U3lzdGVtVGFibGVNb2RzICovCisJCQkJaWYgKCF0YWJsZXNwYWNlX3dhcm5pbmcp CisJCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklD SUVOVF9QUklWSUxFR0UpLAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFj ZSBvZiBpbmRleGVzIG9uIHN5c3RlbSByZWxhdGlvbnMsIHNraXBwaW5nIGFsbCIpKSk7CisJCQkJ dGFibGVzcGFjZV93YXJuaW5nID0gdHJ1ZTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWVsc2Ug aWYgKCFPaWRJc1ZhbGlkKGNsYXNzdHVwbGUtPnJlbGZpbGVub2RlKSkKKwkJCXsKKwkJCQkvKgor CQkJCSAqIFNraXAgYWxsIG1hcHBlZCByZWxhdGlvbnMuCisJCQkJICogcmVsZmlsZW5vZGUgPT0g MCBjaGVja3MgYWZ0ZXIgdGhhdCwgc2ltaWxhcmx5IHRvCisJCQkJICogUmVsYXRpb25Jc01hcHBl ZCgpLgorCQkJCSAqLworCQkJCWlmICghdGFibGVzcGFjZV93YXJuaW5nKQorCQkJCQllcmVwb3J0 KFdBUk5JTkcsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBpbmRleGVzIG9u IG1hcHBlZCByZWxhdGlvbnMsIHNraXBwaW5nIGFsbCIpKSk7CisJCQkJdGFibGVzcGFjZV93YXJu aW5nID0gdHJ1ZTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfQorCiAJCS8qIFNhdmUgdGhlIGxp c3Qgb2YgcmVsYXRpb24gT0lEcyBpbiBwcml2YXRlIGNvbnRleHQgKi8KIAkJb2xkID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKHByaXZhdGVfY29udGV4dCk7CiAKQEAgLTI2NTEsNyArMjcyNSw3IEBA IFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1lLCBSZWluZGV4T2Jq ZWN0VHlwZSBvYmplY3RLaW5kLAogCiAJCWlmIChjb25jdXJyZW50ICYmIGdldF9yZWxfcGVyc2lz dGVuY2UocmVsaWQpICE9IFJFTFBFUlNJU1RFTkNFX1RFTVApCiAJCXsKLQkJCSh2b2lkKSBSZWlu ZGV4UmVsYXRpb25Db25jdXJyZW50bHkocmVsaWQsIG9wdGlvbnMpOworCQkJKHZvaWQpIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShyZWxpZCwgdGFibGVzcGFjZU9pZCwgb3B0aW9ucyk7CiAJ CQkvKiBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoKSBkb2VzIHRoZSB2ZXJib3NlIG91dHB1 dCAqLwogCQl9CiAJCWVsc2UKQEAgLTI2NTksNiArMjczMyw3IEBAIFJlaW5kZXhNdWx0aXBsZVRh Ymxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5k LAogCQkJYm9vbAkJcmVzdWx0OwogCiAJCQlyZXN1bHQgPSByZWluZGV4X3JlbGF0aW9uKHJlbGlk LAorCQkJCQkJCQkJICB0YWJsZXNwYWNlT2lkLAogCQkJCQkJCQkJICBSRUlOREVYX1JFTF9QUk9D RVNTX1RPQVNUIHwKIAkJCQkJCQkJCSAgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMsCiAJ CQkJCQkJCQkgIG9wdGlvbnMgfCBSRUlOREVYT1BUX1JFUE9SVF9QUk9HUkVTUyk7CkBAIC0yNjkx LDYgKzI3NjYsOSBAQCBSZWluZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFt ZSwgUmVpbmRleE9iamVjdFR5cGUgb2JqZWN0S2luZCwKICAqIGl0c2VsZiB3aWxsIGJlIHJlYnVp bHQuICBJZiAncmVsYXRpb25PaWQnIGJlbG9uZ3MgdG8gYSBwYXJ0aXRpb25lZCB0YWJsZQogICog dGhlbiB3ZSBpc3N1ZSBhIHdhcm5pbmcgdG8gbWVudGlvbiB0aGVzZSBhcmUgbm90IHlldCBzdXBw b3J0ZWQuCiAgKgorICogJ3RhYmxlc3BhY2VPaWQnIGRlZmluZXMgdGhlIG5ldyB0YWJsZXNwYWNl IHdoZXJlIHRoZSBpbmRleGVzIG9mCisgKiB0aGUgcmVsYXRpb24gd2lsbCBiZSByZWJ1aWx0Lgor ICoKICAqIFRoZSBsb2NrcyB0YWtlbiBvbiBwYXJlbnQgdGFibGVzIGFuZCBpbnZvbHZlZCBpbmRl eGVzIGFyZSBrZXB0IHVudGlsIHRoZQogICogdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLCBhdCB3 aGljaCBwb2ludCBhIHNlc3Npb24gbG9jayBpcyB0YWtlbiBvbiBlYWNoCiAgKiByZWxhdGlvbi4g IEJvdGggb2YgdGhlc2UgcHJvdGVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgc2NoZW1hIGNoYW5nZXMu CkBAIC0yNzA1LDcgKzI3ODMsNyBAQCBSZWluZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAq b2JqZWN0TmFtZSwgUmVpbmRleE9iamVjdFR5cGUgb2JqZWN0S2luZCwKICAqIGFueXdheSwgYW5k IGEgbm9uLWNvbmN1cnJlbnQgcmVpbmRleCBpcyBtb3JlIGVmZmljaWVudC4KICAqLwogc3RhdGlj IGJvb2wKLVJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIGludCBv cHRpb25zKQorUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgT2lk IHRhYmxlc3BhY2VPaWQsIGludCBvcHRpb25zKQogewogCUxpc3QJICAgKmhlYXBSZWxhdGlvbklk cyA9IE5JTDsKIAlMaXN0CSAgICppbmRleElkcyA9IE5JTDsKQEAgLTI3NzgsNiArMjg1NiwyNyBA QCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBpbnQgb3B0aW9u cykKIAkJCQkvKiBPcGVuIHJlbGF0aW9uIHRvIGdldCBpdHMgaW5kZXhlcyAqLwogCQkJCWhlYXBS ZWxhdGlvbiA9IHRhYmxlX29wZW4ocmVsYXRpb25PaWQsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9j ayk7CiAKKwkJCQkvKgorCQkJCSAqIFdlIGRvbid0IHN1cHBvcnQgbW92aW5nIHN5c3RlbSByZWxh dGlvbnMgaW50byBkaWZmZXJlbnQgdGFibGVzcGFjZXMsCisJCQkJICogdW5sZXNzIGFsbG93X3N5 c3RlbV90YWJsZV9tb2RzPTEuCisJCQkJICovCisJCQkJaWYgKE9pZElzVmFsaWQodGFibGVzcGFj ZU9pZCkgJiYKKwkJCQkJIWFsbG93U3lzdGVtVGFibGVNb2RzICYmIElzU3lzdGVtUmVsYXRpb24o aGVhcFJlbGF0aW9uKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCQkJCWVycm1zZygicGVybWlzc2lvbiBk ZW5pZWQ6IFwiJXNcIiBpcyBhIHN5c3RlbSBjYXRhbG9nIiwKKwkJCQkJCQkJCVJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKGhlYXBSZWxhdGlvbikpKSk7CisKKwkJCQkvKgorCQkJCSAqIFdlIGNhbm5v dCBzdXBwb3J0IG1vdmluZyBtYXBwZWQgcmVsYXRpb25zIGludG8gZGlmZmVyZW50IHRhYmxlc3Bh Y2VzLgorCQkJCSAqIChJbiBwYXJ0aWN1bGFyIHRoaXMgZWxpbWluYXRlcyBhbGwgc2hhcmVkIGNh dGFsb2dzLikKKwkJCQkgKi8KKwkJCQlpZiAoT2lkSXNWYWxpZCh0YWJsZXNwYWNlT2lkKSAmJiBS ZWxhdGlvbklzTWFwcGVkKGhlYXBSZWxhdGlvbikpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJCSBlcnJt c2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBpbmRleGVzIG9uIG1hcHBlZCByZWxhdGlv biBcIiVzXCIiLAorCQkJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoaGVhcFJlbGF0aW9u KSkpKTsKKwogCQkJCS8qIEFkZCBhbGwgdGhlIHZhbGlkIGluZGV4ZXMgb2YgcmVsYXRpb24gdG8g bGlzdCAqLwogCQkJCWZvcmVhY2gobGMsIFJlbGF0aW9uR2V0SW5kZXhMaXN0KGhlYXBSZWxhdGlv bikpCiAJCQkJewpAQCAtMjk2MCw2ICszMDU5LDI3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShPaWQgcmVsYXRpb25PaWQsIGludCBvcHRpb25zKQogCQlpZiAoaW5kZXhSZWwtPnJkX3Jl bC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKIAkJCWVsb2coRVJST1Is ICJjYW5ub3QgcmVpbmRleCBhIHRlbXBvcmFyeSB0YWJsZSBjb25jdXJyZW50bHkiKTsKIAorCQkv KgorCQkgKiBXZSBkb24ndCBzdXBwb3J0IG1vdmluZyBzeXN0ZW0gcmVsYXRpb25zIGludG8gZGlm ZmVyZW50IHRhYmxlc3BhY2VzLAorCQkgKiB1bmxlc3MgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM9 MS4KKwkJICovCisJCWlmIChPaWRJc1ZhbGlkKHRhYmxlc3BhY2VPaWQpICYmCisJCQkhYWxsb3dT eXN0ZW1UYWJsZU1vZHMgJiYgSXNTeXN0ZW1SZWxhdGlvbihpbmRleFJlbCkpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAor CQkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZDogXCIlc1wiIGlzIGEgc3lzdGVtIGNhdGFs b2ciLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGluZGV4UmVsKSkpKTsKKworCQkv KgorCQkgKiBXZSBjYW5ub3Qgc3VwcG9ydCBtb3ZpbmcgbWFwcGVkIHJlbGF0aW9ucyBpbnRvIGRp ZmZlcmVudCB0YWJsZXNwYWNlcy4KKwkJICogKEluIHBhcnRpY3VsYXIgdGhpcyBlbGltaW5hdGVz IGFsbCBzaGFyZWQgY2F0YWxvZ3MuKQorCQkgKi8KKwkJaWYgKE9pZElzVmFsaWQodGFibGVzcGFj ZU9pZCkgJiYgUmVsYXRpb25Jc01hcHBlZChpbmRleFJlbCkpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJt c2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBtYXBwZWQgcmVsYXRpb24gXCIlc1wiIiwK KwkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpbmRleFJlbCkpKSk7CisKIAkJcGdzdGF0 X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsCiAJ CQkJCQkJCQkgIFJlbGF0aW9uR2V0UmVsaWQoaGVhcFJlbCkpOwogCQlwZ3N0YXRfcHJvZ3Jlc3Nf dXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9DT01NQU5ELApAQCAtMjk3OSw2ICszMDk5 LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgaW50IG9w dGlvbnMpCiAJCS8qIENyZWF0ZSBuZXcgaW5kZXggZGVmaW5pdGlvbiBiYXNlZCBvbiBnaXZlbiBp bmRleCAqLwogCQluZXdJbmRleElkID0gaW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KGhl YXBSZWwsCiAJCQkJCQkJCQkJCQkJaW5kZXhJZCwKKwkJCQkJCQkJCQkJCQl0YWJsZXNwYWNlT2lk LAogCQkJCQkJCQkJCQkJCWNvbmN1cnJlbnROYW1lKTsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwppbmRleCA4ZTM1YzViZDFhLi5kMWY5NTQyNjVjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwpAQCAtMTg3MSw3ICsxODcxLDcgQEAgRXhlY3V0ZVRydW5jYXRlR3V0cyhMaXN0ICpl eHBsaWNpdF9yZWxzLCBMaXN0ICpyZWxpZHMsIExpc3QgKnJlbGlkc19sb2dnZWQsCiAJCQkvKgog CQkJICogUmVjb25zdHJ1Y3QgdGhlIGluZGV4ZXMgdG8gbWF0Y2gsIGFuZCB3ZSdyZSBkb25lLgog CQkJICovCi0JCQlyZWluZGV4X3JlbGF0aW9uKGhlYXBfcmVsaWQsIFJFSU5ERVhfUkVMX1BST0NF U1NfVE9BU1QsIDApOworCQkJcmVpbmRleF9yZWxhdGlvbihoZWFwX3JlbGlkLCBJbnZhbGlkT2lk LCBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNULCAwKTsKIAkJfQogCiAJCXBnc3RhdF9jb3VudF90 cnVuY2F0ZShyZWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMg Yi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBlYWFiOTdmNzUzLi43YmY5YWE3 ZTc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtNDQwNiw2ICs0NDA2LDcgQEAgX2NvcHlSZWlu ZGV4U3RtdChjb25zdCBSZWluZGV4U3RtdCAqZnJvbSkKIAlDT1BZX1NUUklOR19GSUVMRChuYW1l KTsKIAlDT1BZX1NDQUxBUl9GSUVMRChvcHRpb25zKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChjb25j dXJyZW50KTsKKwlDT1BZX1NUUklOR19GSUVMRCh0YWJsZXNwYWNlbmFtZSk7CiAKIAlyZXR1cm4g bmV3bm9kZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBi L3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCA4OGI5MTI5NzdlLi4wNDhjNTlm ZDY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3Jj L2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0yMTMxLDYgKzIxMzEsNyBAQCBfZXF1YWxS ZWluZGV4U3RtdChjb25zdCBSZWluZGV4U3RtdCAqYSwgY29uc3QgUmVpbmRleFN0bXQgKmIpCiAJ Q09NUEFSRV9TVFJJTkdfRklFTEQobmFtZSk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQob3B0aW9u cyk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoY29uY3VycmVudCk7CisJQ09NUEFSRV9TVFJJTkdf RklFTEQodGFibGVzcGFjZW5hbWUpOwogCiAJcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRl eCA3ZTM4NGY5NTZjLi5kZjhmNjNmOTg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTgzODUsMzEgKzgzODUs MzMgQEAgRHJvcFRyYW5zZm9ybVN0bXQ6IERST1AgVFJBTlNGT1JNIG9wdF9pZl9leGlzdHMgRk9S IFR5cGVuYW1lIExBTkdVQUdFIG5hbWUgb3B0X2QKICAqCiAgKgkJUVVFUlk6CiAgKgotICoJCVJF SU5ERVggWyAob3B0aW9ucykgXSB0eXBlIFtDT05DVVJSRU5UTFldIDxuYW1lPgorICoJCVJFSU5E RVggWyAob3B0aW9ucykgXSB0eXBlIFtDT05DVVJSRU5UTFldIDxuYW1lPiBbIFRBQkxFU1BBQ0Ug PHRhYmxlc3BhY2VfbmFtZT4gXQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBSZWluZGV4U3Rt dDoKLQkJCVJFSU5ERVggcmVpbmRleF90YXJnZXRfdHlwZSBvcHRfY29uY3VycmVudGx5IHF1YWxp ZmllZF9uYW1lCisJCQlSRUlOREVYIHJlaW5kZXhfdGFyZ2V0X3R5cGUgb3B0X2NvbmN1cnJlbnRs eSBxdWFsaWZpZWRfbmFtZSBPcHRUYWJsZVNwYWNlCiAJCQkJewogCQkJCQlSZWluZGV4U3RtdCAq biA9IG1ha2VOb2RlKFJlaW5kZXhTdG10KTsKIAkJCQkJbi0+a2luZCA9ICQyOwogCQkJCQluLT5j b25jdXJyZW50ID0gJDM7CiAJCQkJCW4tPnJlbGF0aW9uID0gJDQ7CisJCQkJCW4tPnRhYmxlc3Bh Y2VuYW1lID0gJDU7CiAJCQkJCW4tPm5hbWUgPSBOVUxMOwogCQkJCQluLT5vcHRpb25zID0gMDsK IAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBSRUlOREVYIHJlaW5kZXhfdGFyZ2V0 X211bHRpdGFibGUgb3B0X2NvbmN1cnJlbnRseSBuYW1lCisJCQl8IFJFSU5ERVggcmVpbmRleF90 YXJnZXRfbXVsdGl0YWJsZSBvcHRfY29uY3VycmVudGx5IG5hbWUgT3B0VGFibGVTcGFjZQogCQkJ CXsKIAkJCQkJUmVpbmRleFN0bXQgKm4gPSBtYWtlTm9kZShSZWluZGV4U3RtdCk7CiAJCQkJCW4t PmtpbmQgPSAkMjsKIAkJCQkJbi0+Y29uY3VycmVudCA9ICQzOwogCQkJCQluLT5uYW1lID0gJDQ7 CisJCQkJCW4tPnRhYmxlc3BhY2VuYW1lID0gJDU7CiAJCQkJCW4tPnJlbGF0aW9uID0gTlVMTDsK IAkJCQkJbi0+b3B0aW9ucyA9IDA7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwg UkVJTkRFWCAnKCcgcmVpbmRleF9vcHRpb25fbGlzdCAnKScgcmVpbmRleF90YXJnZXRfdHlwZSBv cHRfY29uY3VycmVudGx5IHF1YWxpZmllZF9uYW1lCisJCQl8IFJFSU5ERVggJygnIHJlaW5kZXhf b3B0aW9uX2xpc3QgJyknIHJlaW5kZXhfdGFyZ2V0X3R5cGUgb3B0X2NvbmN1cnJlbnRseSBxdWFs aWZpZWRfbmFtZSBPcHRUYWJsZVNwYWNlCiAJCQkJewogCQkJCQlSZWluZGV4U3RtdCAqbiA9IG1h a2VOb2RlKFJlaW5kZXhTdG10KTsKIAkJCQkJbi0+a2luZCA9ICQ1OwpAQCAtODQxNyw5ICs4NDE5 LDEwIEBAIFJlaW5kZXhTdG10OgogCQkJCQluLT5yZWxhdGlvbiA9ICQ3OwogCQkJCQluLT5uYW1l ID0gTlVMTDsKIAkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQluLT50YWJsZXNwYWNlbmFtZSA9 ICQ4OwogCQkJCQkkJCA9IChOb2RlICopbjsKIAkJCQl9Ci0JCQl8IFJFSU5ERVggJygnIHJlaW5k ZXhfb3B0aW9uX2xpc3QgJyknIHJlaW5kZXhfdGFyZ2V0X211bHRpdGFibGUgb3B0X2NvbmN1cnJl bnRseSBuYW1lCisJCQl8IFJFSU5ERVggJygnIHJlaW5kZXhfb3B0aW9uX2xpc3QgJyknIHJlaW5k ZXhfdGFyZ2V0X211bHRpdGFibGUgb3B0X2NvbmN1cnJlbnRseSBuYW1lIE9wdFRhYmxlU3BhY2UK IAkJCQl7CiAJCQkJCVJlaW5kZXhTdG10ICpuID0gbWFrZU5vZGUoUmVpbmRleFN0bXQpOwogCQkJ CQluLT5raW5kID0gJDU7CkBAIC04NDI3LDYgKzg0MzAsNyBAQCBSZWluZGV4U3RtdDoKIAkJCQkJ bi0+bmFtZSA9ICQ3OwogCQkJCQluLT5yZWxhdGlvbiA9IE5VTEw7CiAJCQkJCW4tPm9wdGlvbnMg PSAkMzsKKwkJCQkJbi0+dGFibGVzcGFjZW5hbWUgPSAkODsKIAkJCQkJJCQgPSAoTm9kZSAqKW47 CiAJCQkJfQogCQk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3Ny Yy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IGIxZjdmNmUyZDAuLjFkOWU0NDhhMWMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rj b3AvdXRpbGl0eS5jCkBAIC05MjQsMTAgKzkyNCwxMCBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0 eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJc3dpdGNoIChzdG10LT5raW5kKQogCQkJCXsKIAkJ CQkJY2FzZSBSRUlOREVYX09CSkVDVF9JTkRFWDoKLQkJCQkJCVJlaW5kZXhJbmRleChzdG10LT5y ZWxhdGlvbiwgc3RtdC0+b3B0aW9ucywgc3RtdC0+Y29uY3VycmVudCk7CisJCQkJCQlSZWluZGV4 SW5kZXgoc3RtdC0+cmVsYXRpb24sIHN0bXQtPnRhYmxlc3BhY2VuYW1lLCBzdG10LT5vcHRpb25z LCBzdG10LT5jb25jdXJyZW50KTsKIAkJCQkJCWJyZWFrOwogCQkJCQljYXNlIFJFSU5ERVhfT0JK RUNUX1RBQkxFOgotCQkJCQkJUmVpbmRleFRhYmxlKHN0bXQtPnJlbGF0aW9uLCBzdG10LT5vcHRp b25zLCBzdG10LT5jb25jdXJyZW50KTsKKwkJCQkJCVJlaW5kZXhUYWJsZShzdG10LT5yZWxhdGlv biwgc3RtdC0+dGFibGVzcGFjZW5hbWUsIHN0bXQtPm9wdGlvbnMsIHN0bXQtPmNvbmN1cnJlbnQp OwogCQkJCQkJYnJlYWs7CiAJCQkJCWNhc2UgUkVJTkRFWF9PQkpFQ1RfU0NIRU1BOgogCQkJCQlj YXNlIFJFSU5ERVhfT0JKRUNUX1NZU1RFTToKQEAgLTk0Myw3ICs5NDMsNyBAQCBzdGFuZGFyZF9Q cm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQkJCQkJCQkJCQkgIChzdG10LT5r aW5kID09IFJFSU5ERVhfT0JKRUNUX1NDSEVNQSkgPyAiUkVJTkRFWCBTQ0hFTUEiIDoKIAkJCQkJ CQkJCQkJCSAgKHN0bXQtPmtpbmQgPT0gUkVJTkRFWF9PQkpFQ1RfU1lTVEVNKSA/ICJSRUlOREVY IFNZU1RFTSIgOgogCQkJCQkJCQkJCQkJICAiUkVJTkRFWCBEQVRBQkFTRSIpOwotCQkJCQkJUmVp bmRleE11bHRpcGxlVGFibGVzKHN0bXQtPm5hbWUsIHN0bXQtPmtpbmQsIHN0bXQtPm9wdGlvbnMs IHN0bXQtPmNvbmN1cnJlbnQpOworCQkJCQkJUmVpbmRleE11bHRpcGxlVGFibGVzKHN0bXQtPm5h bWUsIHN0bXQtPmtpbmQsIHN0bXQtPnRhYmxlc3BhY2VuYW1lLCBzdG10LT5vcHRpb25zLCBzdG10 LT5jb25jdXJyZW50KTsKIAkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0OgogCQkJCQkJZWxvZyhF UlJPUiwgInVucmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLApkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4 IGFlMzVmYTRhYTkuLmMyMjU3NTgyZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29t cGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTM0MzIsNiArMzQz MiwxMiBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQg ZW5kKQogCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVtYXMpOwog CWVsc2UgaWYgKE1hdGNoZXMoIlJFSU5ERVgiLCAiU1lTVEVNfERBVEFCQVNFIiwgIkNPTkNVUlJF TlRMWSIpKQogCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2RhdGFiYXNl cyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiUkVJTkRFWCIsIE1hdGNoQW55LCAiQ09OQ1VSUkVOVExZ IiwgTWF0Y2hBbnkpKQorCQlDT01QTEVURV9XSVRIKCJUQUJMRVNQQUNFIik7CisJZWxzZSBpZiAo TWF0Y2hlcygiUkVJTkRFWCIsIE1hdGNoQW55LCBNYXRjaEFueSkpCisJCUNPTVBMRVRFX1dJVEgo IlRBQkxFU1BBQ0UiKTsKKwllbHNlIGlmIChUYWlsTWF0Y2hlcygiVEFCTEVTUEFDRSIpKQorCQlD T01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlc3BhY2VzKTsKIAogLyog U0VDVVJJVFkgTEFCRUwgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJTRUNVUklUWSIpKQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9p bmRleC5oCmluZGV4IGEyODkwYzEzMTQuLmYzOGU5NzhiNDUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAg LTgwLDYgKzgwLDcgQEAgZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0 aW9uLAogCiBleHRlcm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkJICAgT2lkIG9sZEluZGV4SWQsCisJCQkJCQkJCQkJ ICAgT2lkIHRhYmxlc3BhY2VPaWQsCiAJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqbmV3TmFtZSk7 CiAKIGV4dGVybiB2b2lkIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9u SWQsCkBAIC0xMzEsOCArMTMyLDggQEAgZXh0ZXJuIHZvaWQgdmFsaWRhdGVfaW5kZXgoT2lkIGhl YXBJZCwgT2lkIGluZGV4SWQsIFNuYXBzaG90IHNuYXBzaG90KTsKIAogZXh0ZXJuIHZvaWQgaW5k ZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRleElkLCBJbmRleFN0YXRlRmxhZ3NBY3Rpb24gYWN0 aW9uKTsKIAotZXh0ZXJuIHZvaWQgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lw X2NvbnN0cmFpbnRfY2hlY2tzLAotCQkJCQkJICBjaGFyIHJlbHBlcnNpc3RlbmNlLCBpbnQgb3B0 aW9ucyk7CitleHRlcm4gdm9pZCByZWluZGV4X2luZGV4KE9pZCBpbmRleElkLCBPaWQgdGFibGVz cGFjZU9pZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLAorCQkJICBjaGFyIHJlbHBlcnNp c3RlbmNlLCBpbnQgb3B0aW9ucyk7CiAKIC8qIEZsYWcgYml0cyBmb3IgcmVpbmRleF9yZWxhdGlv bigpOiAqLwogI2RlZmluZSBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNUCQkJMHgwMQpAQCAtMTQx LDcgKzE0Miw3IEBAIGV4dGVybiB2b2lkIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wg c2tpcF9jb25zdHJhaW50X2NoZWNrcywKICNkZWZpbmUgUkVJTkRFWF9SRUxfRk9SQ0VfSU5ERVhF U19VTkxPR0dFRAkweDA4CiAjZGVmaW5lIFJFSU5ERVhfUkVMX0ZPUkNFX0lOREVYRVNfUEVSTUFO RU5UIDB4MTAKIAotZXh0ZXJuIGJvb2wgcmVpbmRleF9yZWxhdGlvbihPaWQgcmVsaWQsIGludCBm bGFncywgaW50IG9wdGlvbnMpOworZXh0ZXJuIGJvb2wgcmVpbmRleF9yZWxhdGlvbihPaWQgcmVs aWQsIE9pZCB0YWJsZXNwYWNlT2lkLCBpbnQgZmxhZ3MsIGludCBvcHRpb25zKTsKIAogZXh0ZXJu IGJvb2wgUmVpbmRleElzUHJvY2Vzc2luZ0hlYXAoT2lkIGhlYXBPaWQpOwogZXh0ZXJuIGJvb2wg UmVpbmRleElzUHJvY2Vzc2luZ0luZGV4KE9pZCBpbmRleE9pZCk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5o CmluZGV4IGM3N2M5YTZlZDUuLjZjNGYwOTk2ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2RlZnJlbS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC0z NCwxMCArMzQsMTAgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lSW5kZXgoT2lkIHJlbGF0 aW9uSWQsCiAJCQkJCQkJCSBib29sIGNoZWNrX25vdF9pbl91c2UsCiAJCQkJCQkJCSBib29sIHNr aXBfYnVpbGQsCiAJCQkJCQkJCSBib29sIHF1aWV0KTsKLWV4dGVybiB2b2lkIFJlaW5kZXhJbmRl eChSYW5nZVZhciAqaW5kZXhSZWxhdGlvbiwgaW50IG9wdGlvbnMsIGJvb2wgY29uY3VycmVudCk7 Ci1leHRlcm4gT2lkCVJlaW5kZXhUYWJsZShSYW5nZVZhciAqcmVsYXRpb24sIGludCBvcHRpb25z LCBib29sIGNvbmN1cnJlbnQpOworZXh0ZXJuIHZvaWQgUmVpbmRleEluZGV4KFJhbmdlVmFyICpp bmRleFJlbGF0aW9uLCBjaGFyICpuZXdUYWJsZVNwYWNlTmFtZSwgaW50IG9wdGlvbnMsIGJvb2wg Y29uY3VycmVudCk7CitleHRlcm4gT2lkCVJlaW5kZXhUYWJsZShSYW5nZVZhciAqcmVsYXRpb24s IGNoYXIgKm5ld1RhYmxlU3BhY2VOYW1lLCBpbnQgb3B0aW9ucywgYm9vbCBjb25jdXJyZW50KTsK IGV4dGVybiB2b2lkIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1l LCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAotCQkJCQkJCQkgIGludCBvcHRpb25zLCBi b29sIGNvbmN1cnJlbnQpOworCQkJCQkJCQkgIGNoYXIgKm5ld1RhYmxlU3BhY2VOYW1lLCBpbnQg b3B0aW9ucywgYm9vbCBjb25jdXJyZW50KTsKIGV4dGVybiBjaGFyICptYWtlT2JqZWN0TmFtZShj b25zdCBjaGFyICpuYW1lMSwgY29uc3QgY2hhciAqbmFtZTIsCiAJCQkJCQkJY29uc3QgY2hhciAq bGFiZWwpOwogZXh0ZXJuIGNoYXIgKkNob29zZVJlbGF0aW9uTmFtZShjb25zdCBjaGFyICpuYW1l MSwgY29uc3QgY2hhciAqbmFtZTIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggMjAzOWI0MjQ0 OS4uNTA3NWE3OWJkMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzM2Myw2ICszMzYzLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleFN0bXQKIAljb25zdCBjaGFyICpuYW1lOwkJCS8qIG5h bWUgb2YgZGF0YWJhc2UgdG8gcmVpbmRleCAqLwogCWludAkJCW9wdGlvbnM7CQkvKiBSZWluZGV4 IG9wdGlvbnMgZmxhZ3MgKi8KIAlib29sCQljb25jdXJyZW50OwkJLyogcmVpbmRleCBjb25jdXJy ZW50bHk/ICovCisJY2hhcgkgICAqdGFibGVzcGFjZW5hbWU7IC8qIG5hbWUgb2YgdGFibGVzcGFj ZSB0byBzdG9yZSBpbmRleCAqLwogfSBSZWluZGV4U3RtdDsKIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNv dXJjZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UKaW5kZXggYTVm NjFhMzVkYy4uNzdlYTRjYmNlZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90 YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uu c291cmNlCkBAIC0xNyw2ICsxNyw0MiBAQCBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2UgU0VUIChzb21lX25vbmV4aXN0ZW50X3BhcmFtZXRlciA9IHRydWUpOyAgLS0gZgogQUxURVIg VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFJFU0VUIChyYW5kb21fcGFnZV9jb3N0ID0gMi4w KTsgLS0gZmFpbAogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFJFU0VUIChyYW5k b21fcGFnZV9jb3N0LCBlZmZlY3RpdmVfaW9fY29uY3VycmVuY3kpOyAtLSBvawogCistLSBjcmVh dGUgdGFibGUgdG8gdGVzdCBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UKK0NSRUFURSBU QUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xIGJpZ2ludCwgbnVtMiBkb3VibGUg cHJlY2lzaW9uLCBudW0zIGRvdWJsZSBwcmVjaXNpb24pOworSU5TRVJUIElOVE8gcmVncmVzc190 YmxzcGFjZV90ZXN0X3RibCAobnVtMSwgbnVtMiwgbnVtMykKKyAgU0VMRUNUIHJvdW5kKHJhbmRv bSgpKjEwMCksIHJhbmRvbSgpLCByYW5kb20oKSo0MgorICBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAyMDAwMCkgcyhpKTsKK0NSRUFURSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lk eCBPTiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xKTsKKworLS0gY2hlY2sgdGhhdCBS RUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UgaXMgdHJhbnNhY3Rpb25hbAorQkVHSU47CitS RUlOREVYIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IFRBQkxFU1BBQ0UgcmVn cmVzc190YmxzcGFjZTsKK1JFSU5ERVggVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCBU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitST0xMQkFDSzsKK1NFTEVDVCByZWxuYW1lIEZS T00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJs ZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKworLS0gY2hlY2sgUkVJ TkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitSRUlOREVYIElOREVYIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF90YmxfaWR4IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gb2sKK1JFSU5E RVggVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJs c3BhY2U7IC0tIG9rCitSRUlOREVYIFRBQkxFIHBnX2F1dGhpZCBUQUJMRVNQQUNFIHJlZ3Jlc3Nf dGJsc3BhY2U7IC0tIGZhaWwKK1JFSU5ERVggU1lTVEVNIENPTkNVUlJFTlRMWSBwb3N0Z3JlcyBU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7IC0tIGZhaWwKK1JFSU5ERVggVEFCTEUgQ09OQ1VS UkVOVExZIHBnX2FtIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gZmFpbAorUkVJTkRF WCBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeCBUQUJMRVNQQUNFIHBnX2dsb2Jh bDsgLS0gZmFpbAorUkVJTkRFWCBUQUJMRSBwZ19hbSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2U7IC0tIGZhaWwKKworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIHRvIG5ldyB0 YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNw YWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNz X3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7CisKKy0tIG1vdmUgaW5kZXhlcyBiYWNrIHRv IHBnX2RlZmF1bHQgdGFibGVzcGFjZQorUkVJTkRFWCBUQUJMRSBDT05DVVJSRU5UTFkgcmVncmVz c190YmxzcGFjZV90ZXN0X3RibCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQ7IC0tIG9rCisKKy0tIGNo ZWNrIHRoYXQgYWxsIHJlbGF0aW9ucyBtb3ZlZCBiYWNrIHRvIHBnX2RlZmF1bHQKK1NFTEVDVCBy ZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJP TSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKwogLS0g Y3JlYXRlIGEgc2NoZW1hIHdlIGNhbiB1c2UKIENSRUFURSBTQ0hFTUEgdGVzdHNjaGVtYTsKIApA QCAtMjc5LDYgKzMxNSw5IEBAIEFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3Nf dGJsc3BhY2VfcmVuYW1lZCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0CiAtLSBTaG91bGQgc3Vj Y2VlZAogRFJPUCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZDsKIAorRFJPUCBJ TkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsKK0RST1AgVEFCTEUgcmVncmVzc190 YmxzcGFjZV90ZXN0X3RibDsKKwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwogCiBE Uk9QIFJPTEUgcmVncmVzc190YWJsZXNwYWNlX3VzZXIxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9yZWdyZXNzL291dHB1 dC90YWJsZXNwYWNlLnNvdXJjZQppbmRleCAxNjJiNTkxYjMxLi4wZGI5OTI5ZjQ0IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMv dGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQpAQCAtMjAsNiArMjAsNTQgQEAg RVJST1I6ICB1bnJlY29nbml6ZWQgcGFyYW1ldGVyICJzb21lX25vbmV4aXN0ZW50X3BhcmFtZXRl ciIKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2Vf Y29zdCA9IDIuMCk7IC0tIGZhaWwKIEVSUk9SOiAgUkVTRVQgbXVzdCBub3QgaW5jbHVkZSB2YWx1 ZXMgZm9yIHBhcmFtZXRlcnMKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNF VCAocmFuZG9tX3BhZ2VfY29zdCwgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5KTsgLS0gb2sKKy0t IGNyZWF0ZSB0YWJsZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorQ1JF QVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmlnaW50LCBudW0yIGRv dWJsZSBwcmVjaXNpb24sIG51bTMgZG91YmxlIHByZWNpc2lvbik7CitJTlNFUlQgSU5UTyByZWdy ZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xLCBudW0yLCBudW0zKQorICBTRUxFQ1Qgcm91bmQo cmFuZG9tKCkqMTAwKSwgcmFuZG9tKCksIHJhbmRvbSgpKjQyCisgIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDIwMDAwKSBzKGkpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90 YmxfaWR4IE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEpOworLS0gY2hlY2sgdGhh dCBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UgaXMgdHJhbnNhY3Rpb25hbAorQkVHSU47 CitSRUlOREVYIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZTsKK1JFSU5ERVggVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3Ri bCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7CitST0xMQkFDSzsKK1NFTEVDVCByZWxuYW1l IEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190 YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKyByZWxuYW1lIAor LS0tLS0tLS0tCisoMCByb3dzKQorCistLSBjaGVjayBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBj aGFuZ2UKK1JFSU5ERVggSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHggVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlOyAtLSBvaworUkVJTkRFWCBUQUJMRSByZWdyZXNzX3RibHNw YWNlX3Rlc3RfdGJsIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gb2sKK1JFSU5ERVgg VEFCTEUgcGdfYXV0aGlkIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gZmFpbAorRVJS T1I6ICBwZXJtaXNzaW9uIGRlbmllZDogInBnX2F1dGhpZF9yb2xuYW1lX2luZGV4IiBpcyBhIHN5 c3RlbSBjYXRhbG9nCitSRUlOREVYIFNZU1RFTSBDT05DVVJSRU5UTFkgcG9zdGdyZXMgVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlOyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCByZWluZGV4IHN5 c3RlbSBjYXRhbG9ncyBjb25jdXJyZW50bHkKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIHBn X2FtIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZTsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3Qg cmVpbmRleCBzeXN0ZW0gY2F0YWxvZ3MgY29uY3VycmVudGx5CitSRUlOREVYIElOREVYIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IFRBQkxFU1BBQ0UgcGdfZ2xvYmFsOyAtLSBmYWlsCitF UlJPUjogIGNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVsYXRpb24gdG8gdGFibGVzcGFjZSAicGdf Z2xvYmFsIgorUkVJTkRFWCBUQUJMRSBwZ19hbSBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2U7 IC0tIGZhaWwKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQ6ICJwZ19hbV9uYW1lX2luZGV4IiBp cyBhIHN5c3RlbSBjYXRhbG9nCistLSBjaGVjayB0aGF0IGFsbCByZWxhdGlvbnMgbW92ZWQgdG8g bmV3IHRhYmxlc3BhY2UKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRh Ymxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3Jl Z3Jlc3NfdGJsc3BhY2UnKQorT1JERVIgQlkgcmVsbmFtZTsKKyAgICAgICAgICAgIHJlbG5hbWUg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsX2lkeAorKDEgcm93KQorCistLSBtb3ZlIGluZGV4ZXMgYmFjayB0byBw Z19kZWZhdWx0IHRhYmxlc3BhY2UKK1JFSU5ERVggVEFCTEUgQ09OQ1VSUkVOVExZIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF90YmwgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OyAtLSBvaworLS0gY2hlY2sg dGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIGJhY2sgdG8gcGdfZGVmYXVsdAorU0VMRUNUIHJlbG5h bWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBn X3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworIHJlbG5hbWUg CistLS0tLS0tLS0KKygwIHJvd3MpCisKIC0tIGNyZWF0ZSBhIHNjaGVtYSB3ZSBjYW4gdXNlCiBD UkVBVEUgU0NIRU1BIHRlc3RzY2hlbWE7CiAtLSB0cnkgYSB0YWJsZQpAQCAtNzM2LDYgKzc4NCw4 IEBAIEFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1l ZCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0CiBOT1RJQ0U6ICBubyBtYXRjaGluZyByZWxhdGlv bnMgaW4gdGFibGVzcGFjZSAicmVncmVzc190YmxzcGFjZV9yZW5hbWVkIiBmb3VuZAogLS0gU2hv dWxkIHN1Y2NlZWQKIERST1AgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7CitE Uk9QIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OworRFJPUCBUQUJMRSByZWdy ZXNzX3RibHNwYWNlX3Rlc3RfdGJsOwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwog Tk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byA2IG90aGVyIG9iamVjdHMKIERFVEFJTDogIGRyb3Ag Y2FzY2FkZXMgdG8gdGFibGUgdGVzdHNjaGVtYS5mb28KCmJhc2UtY29tbWl0OiBlZmY1YjI0NWRm MjU5YzczZDgzNDJlMmYwNGRiYTVhODMyZDJlYTBhCi0tIAoyLjE5LjEKCg== --=_98e9e04a9e787f2c95fd6b36db13caf3--