Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kL7rP-0002yy-Ur for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Sep 2020 16:43:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kL7rM-00009l-V8 for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Sep 2020 16:43:12 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kL7rL-00008f-Vh for pgsql-hackers@lists.postgresql.org; Wed, 23 Sep 2020 16:43:12 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kL7rE-0001h8-NM for pgsql-hackers@lists.postgresql.org; Wed, 23 Sep 2020 16:43:10 +0000 Received: from mail.postgrespro.ru (cyclops.postgrespro.ru [93.174.131.138]) (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 6374A21C35BB; Wed, 23 Sep 2020 19:43:01 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1600879381; bh=yhMwHkrk6u5yje9bc6qyNx6znUsT56zDY/pTUCm1OMA=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=Yv5yHxsPchVJ+V0KVdmqa9CjfJd+Y1wdbyR+SI9q9zmf5jcDPjP8Uju+NQaJwaOJv cI1w57AvzpiF/chwJbLwMtP9hZlFhmJJlHCwHFYfVr+YmOoUl5PMmNYGYlqiI7Ust1 HfVz6SCmTpAHpn7jtPZmPtjmp5QUKnad8b8eIKs8= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_cc5f51042d13cebfefdd7061a3a1222c" Content-Transfer-Encoding: 7bit Date: Wed, 23 Sep 2020 19:43:01 +0300 From: Alexey Kondratov To: Justin Pryzby Cc: Michael Paquier , Alvaro Herrera , Masahiko Sawada , Steve Singer , pgsql-hackers@lists.postgresql.org, 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: <20200909153629.GG18552@telsasoft.com> References: <20200908233951.GC18552@telsasoft.com> <20200909000238.GA1563@alvherre.pgsql> <20200909001757.GD18552@telsasoft.com> <20200909122200.GA2743@paquier.xyz> <20200909153629.GG18552@telsasoft.com> User-Agent: Roundcube Webmail/1.4.0 Message-ID: X-Sender: a.kondratov@postgrespro.ru List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_cc5f51042d13cebfefdd7061a3a1222c Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2020-09-09 18:36, Justin Pryzby wrote: > Rebased on a6642b3ae: Add support for partitioned tables and indexes in > REINDEX > > So now this includes the new functionality and test for reindexing a > partitioned table onto a new tablespace. That part could use some > additional > review. > I have finally had a look on your changes regarding partitioned tables. +set_rel_tablespace(Oid indexid, char *tablespace) +{ + Oid tablespaceOid = tablespace ? get_tablespace_oid(tablespace, false) : + InvalidOid; You pass a tablespace name to set_rel_tablespace(), but it is already parsed into the Oid before. So I do not see why we need this extra work here instead of just passing Oid directly. Also set_rel_tablespace() does not check for a no-op case, i.e. if requested tablespace is the same as before. + /* + * Set the new tablespace for the relation. Do that only in the + * case where the reindex caller wishes to enforce a new tablespace. + */ + if (set_tablespace && + tablespaceOid != iRel->rd_rel->reltablespace) Just noticed that this check is not completely correct as well, since it does not check for MyDatabaseTableSpace (stored as InvalidOid) logic. I put these small fixes directly into the attached 0003. Also, I thought about your comment above set_rel_tablespace() and did a bit 'extreme' refactoring, which is attached as a separated patch 0004. The only one doubtful change IMO is reordering of RelationDropStorage() operation inside reindex_index(). However, it only schedules unlinking of physical storage at transaction commit, so this refactoring seems to be safe. If there will be no objections I would merge it with 0003. On 2020-09-09 16:03, Alexey Kondratov wrote: > On 2020-09-09 15:22, Michael Paquier wrote: >> >> By the way, skimming through the patch set, I was wondering if we >> could do the refactoring of patch 0005 as a first step >> > > Yes, I did it with intention to put as a first patch, but wanted to > get some feedback. It's easier to refactor the last patch without > rebasing others. > >> >> until I >> noticed this part: >> +common_option_name: >> NonReservedWord { $$ = $1; } >> | analyze_keyword { $$ = "analyze"; } >> This is not a good idea as you make ANALYZE an option available for >> all the commands involved in the refactoring. A portion of that could >> be considered though, like the use of common_option_arg. >> > > From the grammar perspective ANY option is available for any command > that uses parenthesized option list. All the checks and validations > are performed at the corresponding command code. > This analyze_keyword is actually doing only an ANALYZE word > normalization if it's used as an option. Why it could be harmful? > Michael has not replied since then, but he was relatively positive about 0005 initially, so I put it as a first patch now. Regards -- Alexey Kondratov Postgres Professional https://www.postgrespro.com Russian Postgres Company --=_cc5f51042d13cebfefdd7061a3a1222c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v28-0006-Implement-vacuum-full-cluster-INDEX_TABLESPACE-t.patch Content-Disposition: attachment; filename=v28-0006-Implement-vacuum-full-cluster-INDEX_TABLESPACE-t.patch; size=19498 RnJvbSBkZGE3ODUxYzg4YjFiNTZjZWFkNThlZmE5NmExYTBlMjFlMDM2MzczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlqQHRlbHNhc29mdC5jb20+ CkRhdGU6IFR1ZSwgMzEgTWFyIDIwMjAgMjA6MzU6NDEgLTA1MDAKU3ViamVjdDogW1BBVENIIHYy OCA2LzZdIEltcGxlbWVudCB2YWN1dW0gZnVsbC9jbHVzdGVyIChJTkRFWF9UQUJMRVNQQUNFCiA8 dGFibGVzcGFjZT4pCgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY2x1c3Rlci5zZ21sICAgICAgICAg ICAgIHwgMTIgKysrKy0KIGRvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwgICAgICAgICAgICAg IHwgMTIgKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyAgICAgICAgICAgIHwg NjQgKysrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YyAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAg ICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAg IHwgNDYgKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmggICAgICAgICAg ICB8ICA2ICsrLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICAgICAgfCAg NSArLQogc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSAgfCAxMyArKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgfCAyMCArKysrKysr CiAxMSBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgNjEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVyLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2NsdXN0ZXIuc2dtbAppbmRleCBiMTk4YTc2MDVjLi45ZGVkMWY2NDdkIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NsdXN0ZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ns dXN0ZXIuc2dtbApAQCAtMjgsNiArMjgsNyBAQCBDTFVTVEVSIFtWRVJCT1NFXSBbICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLgogCiAg ICAgVkVSQk9TRSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBs YWNlYWJsZT4gXQogICAgIFRBQkxFU1BBQ0UgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT4KKyAgICBJTkRFWF9UQUJMRVNQQUNFIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfdGFibGVzcGFjZTwvcmVwbGFjZWFibGU+CiAK IDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KQEAgLTEwNSw2ICsxMDYsMTUgQEAgQ0xV U1RFUiBbVkVSQk9TRV0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248 L3JlcGxhY2VhYmxlPiBbLCAuLi4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+SU5ERVhfVEFCTEVTUEFD RTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNw ZWNpZmllcyB0aGF0IHRoZSB0YWJsZSdzIGluZGV4ZXMgd2lsbCBiZSByZWJ1aWx0IG9uIGEgbmV3 IHRhYmxlc3BhY2UuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0 ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0 ZW0+CkBAIC0xNDEsNyArMTUxLDcgQEAgQ0xVU1RFUiBbVkVSQk9TRV0gWyAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi4KICAgICA8dGVy bT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3RhYmxlc3BhY2U8L3JlcGxhY2Vh YmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CiAgICAgIDxwYXJhPgotICAgICAgVGhlIHRhYmxl c3BhY2Ugd2hlcmUgdGhlIHRhYmxlIHdpbGwgYmUgcmVidWlsdC4KKyAgICAgIFRoZSB0YWJsZXNw YWNlIHdoZXJlIHRoZSB0YWJsZSBvciBpdHMgaW5kZXhlcyB3aWxsIGJlIHJlYnVpbHQuCiAgICAg IDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0u c2dtbAppbmRleCAyNDA4YjU5YmIyLi42NDYxNzQ2OTY4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL3ZhY3V1bS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwKQEAg LTM2LDYgKzM2LDcgQEAgVkFDVVVNIFsgRlVMTCBdIFsgRlJFRVpFIF0gWyBWRVJCT1NFIF0gWyBB TkFMWVpFIF0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXQKICAgICBUUlVOQ0FURSBbIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT4gXQogICAg IFBBUkFMTEVMIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbnRlZ2VyPC9yZXBsYWNl YWJsZT4KICAgICBUQUJMRVNQQUNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdf dGFibGVzcGFjZTwvcmVwbGFjZWFibGU+CisgICAgSU5ERVhfVEFCTEVTUEFDRSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3RhYmxlc3BhY2U8L3JlcGxhY2VhYmxlPgogCiA8cGhy YXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8 L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIApAQCAtMjY1LDYgKzI2NiwxNSBAQCBWQUNVVU0g WyBGVUxMIF0gWyBGUkVFWkUgXSBbIFZFUkJPU0UgXSBbIEFOQUxZWkUgXSBbIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldAogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5JTkRFWF9UQUJMRVNQQUNFPC9s aXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgU3BlY2lm aWVzIHRoYXQgdGhlIHJlbGF0aW9uJ3MgaW5kZXhlcyB3aWxsIGJlIHJlYnVpbHQgb24gYSBuZXcg dGFibGVzcGFjZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4K QEAgLTMxNCw3ICszMjQsNyBAQCBWQUNVVU0gWyBGVUxMIF0gWyBGUkVFWkUgXSBbIFZFUkJPU0Ug XSBbIEFOQUxZWkUgXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldAogICAgIDx0ZXJtPjxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfdGFibGVzcGFjZTwvcmVwbGFjZWFibGU+ PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGUgdGFibGVzcGFj ZSB3aGVyZSB0aGUgcmVsYXRpb24gd2lsbCBiZSByZWJ1aWx0LgorICAgICAgVGhlIHRhYmxlc3Bh Y2Ugd2hlcmUgdGhlIHJlbGF0aW9uIG9yIGl0cyBpbmRleGVzIHdpbGwgYmUgcmVidWlsdC4KICAg ICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NsdXN0ZXIuYwppbmRleCAzOTkwZGJhY2E1Li5lZmUzZDZmYzBiIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1 c3Rlci5jCkBAIC03Miw3ICs3Miw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIHN0YXRpYyB2b2lkIHJl YnVpbGRfcmVsYXRpb24oUmVsYXRpb24gT2xkSGVhcCwgT2lkIGluZGV4T2lkLAogCQkJCQkJCSBi b29sIGlzVG9wTGV2ZWwsIGJvb2wgdmVyYm9zZSwKLQkJCQkJCQkgT2lkIE5ld1RhYmxlU3BhY2VP aWQpOworCQkJCQkJCSBPaWQgTmV3VGFibGVTcGFjZU9pZCwgT2lkIE5ld0lkeFRhYmxlU3BhY2VP aWQpOwogc3RhdGljIHZvaWQgY29weV90YWJsZV9kYXRhKE9pZCBPSUROZXdIZWFwLCBPaWQgT0lE T2xkSGVhcCwgT2lkIE9JRE9sZEluZGV4LAogCQkJCQkJCWJvb2wgaXNUb3BMZXZlbCwgYm9vbCB2 ZXJib3NlLAogCQkJCQkJCWJvb2wgKnBTd2FwVG9hc3RCeUNvbnRlbnQsCkBAIC0xMTAsOSArMTEw LDExIEBAIGNsdXN0ZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDbHVzdGVyU3RtdCAqc3RtdCwgYm9v bCBpc1RvcExldmVsKQogewogCUxpc3RDZWxsCSpsYzsKIAlpbnQJCQlvcHRpb25zID0gMDsKLQkv KiBOYW1lIGFuZCBPaWQgb2YgdGFibGVzcGFjZSB0byB1c2UgZm9yIGNsdXN0ZXJlZCByZWxhdGlv bi4gKi8KLQljaGFyCQkqdGFibGVzcGFjZU5hbWUgPSBOVUxMOwotCU9pZAkJCXRhYmxlc3BhY2VP aWQgPSBJbnZhbGlkT2lkOworCS8qIE5hbWUgYW5kIE9pZCBvZiB0YWJsZXNwYWNlcyB0byB1c2Ug Zm9yIGNsdXN0ZXJlZCByZWxhdGlvbnMuICovCisJY2hhcgkJKnRhYmxlc3BhY2VOYW1lID0gTlVM TCwKKwkJCQkqaWR4dGFibGVzcGFjZU5hbWUgPSBOVUxMOworCU9pZAkJCXRhYmxlc3BhY2VPaWQs CisJCQkJaWR4dGFibGVzcGFjZU9pZDsKIAogCS8qIFBhcnNlIGxpc3Qgb2YgZ2VuZXJpYyBwYXJh bWV0ZXJzIG5vdCBoYW5kbGVkIGJ5IHRoZSBwYXJzZXIgKi8KIAlmb3JlYWNoKGxjLCBzdG10LT5w YXJhbXMpCkBAIC0xMjYsNiArMTI4LDggQEAgY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENs dXN0ZXJTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQkJb3B0aW9ucyAmPSB+Q0xVT1BU X1ZFUkJPU0U7CiAJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJ0YWJsZXNwYWNlIikg PT0gMCkKIAkJCXRhYmxlc3BhY2VOYW1lID0gZGVmR2V0U3RyaW5nKG9wdCk7CisJCWVsc2UgaWYg KHN0cmNtcChvcHQtPmRlZm5hbWUsICJpbmRleF90YWJsZXNwYWNlIikgPT0gMCkKKwkJCWlkeHRh Ymxlc3BhY2VOYW1lID0gZGVmR2V0U3RyaW5nKG9wdCk7CiAJCWVsc2UKIAkJCWVyZXBvcnQoRVJS T1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTEzNCwxOCArMTM4 LDExIEBAIGNsdXN0ZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDbHVzdGVyU3RtdCAqc3RtdCwgYm9v bCBpc1RvcExldmVsKQogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgb3B0LT5sb2Nh dGlvbikpKTsKIAl9CiAKLQkvKiBTZWxlY3QgdGFibGVzcGFjZSBPaWQgdG8gdXNlLiAqLwotCWlm ICh0YWJsZXNwYWNlTmFtZSkKLQl7Ci0JCXRhYmxlc3BhY2VPaWQgPSBnZXRfdGFibGVzcGFjZV9v aWQodGFibGVzcGFjZU5hbWUsIGZhbHNlKTsKLQotCQkvKiBDYW4ndCBtb3ZlIGEgbm9uLXNoYXJl ZCByZWxhdGlvbiBpbnRvIHBnX2dsb2JhbCAqLwotCQlpZiAodGFibGVzcGFjZU9pZCA9PSBHTE9C QUxUQUJMRVNQQUNFX09JRCkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgbm9u LXNoYXJlZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlIFwiJXNcIiIsCi0JCQkJCQkJdGFibGVzcGFj ZU5hbWUpKSk7Ci0JfQorCS8qIEdldCB0YWJsZXNwYWNlcyB0byB1c2UuICovCisJdGFibGVzcGFj ZU9pZCA9IHRhYmxlc3BhY2VOYW1lID8KKwkJZ2V0X3RhYmxlc3BhY2Vfb2lkKHRhYmxlc3BhY2VO YW1lLCBmYWxzZSkgOiBJbnZhbGlkT2lkOworCWlkeHRhYmxlc3BhY2VPaWQgPSBpZHh0YWJsZXNw YWNlTmFtZSA/CisJCWdldF90YWJsZXNwYWNlX29pZChpZHh0YWJsZXNwYWNlTmFtZSwgZmFsc2Up IDogSW52YWxpZE9pZDsKIAogCWlmIChzdG10LT5yZWxhdGlvbiAhPSBOVUxMKQogCXsKQEAgLTIx Nyw3ICsyMTQsNyBAQCBjbHVzdGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ2x1c3RlclN0bXQgKnN0 bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAogCQkvKiBEbyB0aGUgam9iLiAqLwogCQljbHVzdGVyX3Jl bCh0YWJsZU9pZCwgaW5kZXhPaWQsIG9wdGlvbnMsIGlzVG9wTGV2ZWwsCi0JCQkJdGFibGVzcGFj ZU9pZCk7CisJCQkJdGFibGVzcGFjZU9pZCwgaWR4dGFibGVzcGFjZU9pZCk7CiAJfQogCWVsc2UK IAl7CkBAIC0yNjcsNyArMjY0LDcgQEAgY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0 ZXJTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQkvKiBEbyB0aGUgam9iLiAqLwogCQkJ Y2x1c3Rlcl9yZWwocnZ0Yy0+dGFibGVPaWQsIHJ2dGMtPmluZGV4T2lkLAogCQkJCQkJb3B0aW9u cyB8IENMVU9QVF9SRUNIRUNLLAotCQkJCQkJaXNUb3BMZXZlbCwgdGFibGVzcGFjZU9pZCk7CisJ CQkJCQlpc1RvcExldmVsLCB0YWJsZXNwYWNlT2lkLCBpZHh0YWJsZXNwYWNlT2lkKTsKIAkJCVBv cEFjdGl2ZVNuYXBzaG90KCk7CiAJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAkJfQpA QCAtMjk3LDExICsyOTQsMTIgQEAgY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0ZXJT dG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAgKiBpbnN0ZWFkIG9mIGluZGV4IG9yZGVyLiAg VGhpcyBpcyB0aGUgbmV3IGltcGxlbWVudGF0aW9uIG9mIFZBQ1VVTSBGVUxMLAogICogYW5kIGVy cm9yIG1lc3NhZ2VzIHNob3VsZCByZWZlciB0byB0aGUgb3BlcmF0aW9uIGFzIFZBQ1VVTSBub3Qg Q0xVU1RFUi4KICAqCi0gKiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIHRhYmxlc3BhY2Ugd2hlcmUg dGhlIHJlbGF0aW9uIHdpbGwgYmUgcmVidWlsdCwgb3IKLSAqIEludmFsaWRPaWQgdG8gdXNlIGl0 cyBjdXJyZW50IHRhYmxlc3BhY2UuCisgKiAidGFibGVzcGFjZU9pZCIgYW5kICJpZHh0YWJsZXNw YWNlT2lkIiBhcmUgdGhlIHRhYmxlc3BhY2VzIHdoZXJlIHRoZSByZWxhdGlvbgorICogYW5kIGl0 cyBpbmRleGVzIHdpbGwgYmUgcmVidWlsdCwgb3IgSW52YWxpZE9pZCB0byB1c2UgdGhlaXIgY3Vy cmVudAorICogdGFibGVzcGFjZXMuCiAgKi8KIHZvaWQKLWNsdXN0ZXJfcmVsKE9pZCB0YWJsZU9p ZCwgT2lkIGluZGV4T2lkLCBpbnQgb3B0aW9ucywgYm9vbCBpc1RvcExldmVsLCBPaWQgdGFibGVz cGFjZU9pZCkKK2NsdXN0ZXJfcmVsKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkLCBpbnQgb3B0 aW9ucywgYm9vbCBpc1RvcExldmVsLCBPaWQgdGFibGVzcGFjZU9pZCwgT2lkIGlkeHRhYmxlc3Bh Y2VPaWQpCiB7CiAJUmVsYXRpb24JT2xkSGVhcDsKIAlib29sCQl2ZXJib3NlID0gKChvcHRpb25z ICYgQ0xVT1BUX1ZFUkJPU0UpICE9IDApOwpAQCAtNDY5LDcgKzQ2Nyw3IEBAIGNsdXN0ZXJfcmVs KE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkLCBpbnQgb3B0aW9ucywgYm9vbCBpc1RvcExldmVs LCBPaWQgdGFibGVzCiAKIAkvKiByZWJ1aWxkX3JlbGF0aW9uIGRvZXMgYWxsIHRoZSBkaXJ0eSB3 b3JrICovCiAJcmVidWlsZF9yZWxhdGlvbihPbGRIZWFwLCBpbmRleE9pZCwgaXNUb3BMZXZlbCwg dmVyYm9zZSwKLQkJCXRhYmxlc3BhY2VPaWQpOworCQkJdGFibGVzcGFjZU9pZCwgaWR4dGFibGVz cGFjZU9pZCk7CiAKIAkvKiBOQjogcmVidWlsZF9yZWxhdGlvbiBkb2VzIHRhYmxlX2Nsb3NlKCkg b24gT2xkSGVhcCAqLwogCkBAIC02MTksMTAgKzYxNywxMSBAQCBtYXJrX2luZGV4X2NsdXN0ZXJl ZChSZWxhdGlvbiByZWwsIE9pZCBpbmRleE9pZCwgYm9vbCBpc19pbnRlcm5hbCkKICAqIE5COiB0 aGlzIHJvdXRpbmUgY2xvc2VzIE9sZEhlYXAgYXQgdGhlIHJpZ2h0IHRpbWU7IGNhbGxlciBzaG91 bGQgbm90LgogICovCiBzdGF0aWMgdm9pZAotcmVidWlsZF9yZWxhdGlvbihSZWxhdGlvbiBPbGRI ZWFwLCBPaWQgaW5kZXhPaWQsIGJvb2wgaXNUb3BMZXZlbCwgYm9vbCB2ZXJib3NlLCBPaWQgTmV3 VGFibGVzcGFjZU9pZCkKK3JlYnVpbGRfcmVsYXRpb24oUmVsYXRpb24gT2xkSGVhcCwgT2lkIGlu ZGV4T2lkLCBib29sIGlzVG9wTGV2ZWwsIGJvb2wgdmVyYm9zZSwgT2lkIE5ld1RhYmxlc3BhY2VP aWQsIE9pZCBOZXdJZHhUYWJsZXNwYWNlT2lkKQogewogCU9pZAkJCXRhYmxlT2lkID0gUmVsYXRp b25HZXRSZWxpZChPbGRIZWFwKTsKIAlPaWQJCQl0YWJsZVNwYWNlID0gT2xkSGVhcC0+cmRfcmVs LT5yZWx0YWJsZXNwYWNlOworCU9pZAkJCWlkeHRhYmxlU3BhY2U7CiAJT2lkCQkJT0lETmV3SGVh cDsKIAljaGFyCQlyZWxwZXJzaXN0ZW5jZTsKIAlib29sCQlpc19zeXN0ZW1fY2F0YWxvZzsKQEAg LTYzMiw3ICs2MzEsMjAgQEAgcmVidWlsZF9yZWxhdGlvbihSZWxhdGlvbiBPbGRIZWFwLCBPaWQg aW5kZXhPaWQsIGJvb2wgaXNUb3BMZXZlbCwgYm9vbCB2ZXJib3NlLAogCiAJLyogVXNlIG5ldyB0 YWJsZXNwYWNlIGlmIHBhc3NlZC4gKi8KIAlpZiAoT2lkSXNWYWxpZChOZXdUYWJsZXNwYWNlT2lk KSkKKwl7CiAJCXRhYmxlU3BhY2UgPSBOZXdUYWJsZXNwYWNlT2lkOworCQkvKiBJdCdzIG5vdCBh IHNoYXJlZCBjYXRhbG9nLCBzbyByZWZ1c2UgdG8gbW92ZSBpdCB0byBzaGFyZWQgdGFibGVzcGFj ZSAqLworCQlpZiAodGFibGVTcGFjZSA9PSBHTE9CQUxUQUJMRVNQQUNFX09JRCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgbm9uLXNoYXJlZCByZWxhdGlvbiB0byB0YWJsZXNw YWNlIFwiJXNcIiIsCisJCQkJCQkJZ2V0X3RhYmxlc3BhY2VfbmFtZSh0YWJsZVNwYWNlKSkpKTsK Kwl9CisKKwlpZiAoT2lkSXNWYWxpZChOZXdJZHhUYWJsZXNwYWNlT2lkKSkKKwkJaWR4dGFibGVT cGFjZSA9IE5ld0lkeFRhYmxlc3BhY2VPaWQ7CisJZWxzZQorCQlpZHh0YWJsZVNwYWNlID0gZ2V0 X3JlbF90YWJsZXNwYWNlKGluZGV4T2lkKTsKIAogCS8qIE1hcmsgdGhlIGNvcnJlY3QgaW5kZXgg YXMgY2x1c3RlcmVkICovCiAJaWYgKE9pZElzVmFsaWQoaW5kZXhPaWQpKQpAQCAtNjYxLDcgKzY3 Myw3IEBAIHJlYnVpbGRfcmVsYXRpb24oUmVsYXRpb24gT2xkSGVhcCwgT2lkIGluZGV4T2lkLCBi b29sIGlzVG9wTGV2ZWwsIGJvb2wgdmVyYm9zZSwKIAlmaW5pc2hfaGVhcF9zd2FwKHRhYmxlT2lk LCBPSUROZXdIZWFwLCBpc19zeXN0ZW1fY2F0YWxvZywKIAkJCQkJIHN3YXBfdG9hc3RfYnlfY29u dGVudCwgZmFsc2UsIHRydWUsCiAJCQkJCSBmcm96ZW5YaWQsIGN1dG9mZk11bHRpLAotCQkJCQkg cmVscGVyc2lzdGVuY2UpOworCQkJCQkgcmVscGVyc2lzdGVuY2UsIGlkeHRhYmxlU3BhY2UpOwog fQogCiAKQEAgLTE0MTAsNyArMTQyMiw3IEBAIGZpbmlzaF9oZWFwX3N3YXAoT2lkIE9JRE9sZEhl YXAsIE9pZCBPSUROZXdIZWFwLAogCQkJCSBib29sIGlzX2ludGVybmFsLAogCQkJCSBUcmFuc2Fj dGlvbklkIGZyb3plblhpZCwKIAkJCQkgTXVsdGlYYWN0SWQgY3V0b2ZmTXVsdGksCi0JCQkJIGNo YXIgbmV3cmVscGVyc2lzdGVuY2UpCisJCQkJIGNoYXIgbmV3cmVscGVyc2lzdGVuY2UsIE9pZCBp ZHh0YWJsZVNwYWNlKQogewogCU9iamVjdEFkZHJlc3Mgb2JqZWN0OwogCU9pZAkJCW1hcHBlZF90 YWJsZXNbNF07CkBAIC0xNDcyLDcgKzE0ODQsNyBAQCBmaW5pc2hfaGVhcF9zd2FwKE9pZCBPSURP bGRIZWFwLCBPaWQgT0lETmV3SGVhcCwKIAlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBS T0dSRVNTX0NMVVNURVJfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DTFVTVEVSX1BIQVNFX1JF QlVJTERfSU5ERVgpOwogCi0JcmVpbmRleF9yZWxhdGlvbihPSURPbGRIZWFwLCByZWluZGV4X2Zs YWdzLCAwLCBJbnZhbGlkT2lkKTsKKwlyZWluZGV4X3JlbGF0aW9uKE9JRE9sZEhlYXAsIHJlaW5k ZXhfZmxhZ3MsIDAsIGlkeHRhYmxlU3BhY2UpOwogCiAJLyogUmVwb3J0IHRoYXQgd2UgYXJlIG5v dyBkb2luZyBjbGVhbiB1cCAqLwogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ0xVU1RFUl9QSEFTRSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZp ZXcuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwppbmRleCBmODBhOWU5NmE5Li42 OGVhMDdjYWU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCkBAIC04NDQsNyArODQ0LDggQEAgc3Rh dGljIHZvaWQKIHJlZnJlc2hfYnlfaGVhcF9zd2FwKE9pZCBtYXR2aWV3T2lkLCBPaWQgT0lETmV3 SGVhcCwgY2hhciByZWxwZXJzaXN0ZW5jZSkKIHsKIAlmaW5pc2hfaGVhcF9zd2FwKG1hdHZpZXdP aWQsIE9JRE5ld0hlYXAsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwKLQkJCQkJIFJlY2VudFht aW4sIFJlYWROZXh0TXVsdGlYYWN0SWQoKSwgcmVscGVyc2lzdGVuY2UpOworCQkJCQkgUmVjZW50 WG1pbiwgUmVhZE5leHRNdWx0aVhhY3RJZCgpLCByZWxwZXJzaXN0ZW5jZSwKKwkJCQkJIEludmFs aWRPaWQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA2MmQyNzZkMjAz Li5mMDQ1MTJlZDYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNTA1Myw3ICs1MDUz LDcgQEAgQVRSZXdyaXRlVGFibGVzKEFsdGVyVGFibGVTdG10ICpwYXJzZXRyZWUsIExpc3QgKip3 cXVldWUsIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJCSAhT2lkSXNWYWxpZCh0YWItPm5ld1Rh YmxlU3BhY2UpLAogCQkJCQkJCSBSZWNlbnRYbWluLAogCQkJCQkJCSBSZWFkTmV4dE11bHRpWGFj dElkKCksCi0JCQkJCQkJIHBlcnNpc3RlbmNlKTsKKwkJCQkJCQkgcGVyc2lzdGVuY2UsIEludmFs aWRPaWQpOwogCQl9CiAJCWVsc2UKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCAyNWU0Mzcw NTZjLi5lNGZlNmZlN2RkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtMTA5LDkgKzEwOSw5IEBA IEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYWN1dW1TdG10ICp2YWNzdG10LCBib29s IGlzVG9wTGV2ZWwpCiAJYm9vbAkJZGlzYWJsZV9wYWdlX3NraXBwaW5nID0gZmFsc2U7CiAJTGlz dENlbGwgICAqbGM7CiAKLQkvKiBOYW1lIGFuZCBPaWQgb2YgdGFibGVzcGFjZSB0byB1c2UgZm9y IHJlbGF0aW9ucyBhZnRlciBWQUNVVU0gRlVMTC4gKi8KLQljaGFyCQkqdGFibGVzcGFjZW5hbWUg PSBOVUxMOwotCU9pZCAJCXRhYmxlc3BhY2VPaWQgPSBJbnZhbGlkT2lkOworCS8qIFRhYmxlc3Bh Y2UgdG8gdXNlIGZvciByZWxhdGlvbnMgYWZ0ZXIgVkFDVVVNIEZVTEwuICovCisJY2hhcgkJKnRh Ymxlc3BhY2VuYW1lID0gTlVMTCwKKwkJCQkqaWR4dGFibGVzcGFjZW5hbWUgPSBOVUxMOwogCiAJ LyogU2V0IGRlZmF1bHQgdmFsdWUgKi8KIAlwYXJhbXMuaW5kZXhfY2xlYW51cCA9IFZBQ09QVF9U RVJOQVJZX0RFRkFVTFQ7CkBAIC0xNTEsNiArMTUxLDggQEAgRXhlY1ZhY3V1bShQYXJzZVN0YXRl ICpwc3RhdGUsIFZhY3V1bVN0bXQgKnZhY3N0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAkJCXBhcmFt cy50cnVuY2F0ZSA9IGdldF92YWNvcHRfdGVybmFyeV92YWx1ZShvcHQpOwogCQllbHNlIGlmIChz dHJjbXAob3B0LT5kZWZuYW1lLCAidGFibGVzcGFjZSIpID09IDApCiAJCQl0YWJsZXNwYWNlbmFt ZSA9IGRlZkdldFN0cmluZyhvcHQpOworCQllbHNlIGlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAi aW5kZXhfdGFibGVzcGFjZSIpID09IDApCisJCQlpZHh0YWJsZXNwYWNlbmFtZSA9IGRlZkdldFN0 cmluZyhvcHQpOwogCQllbHNlIGlmIChzdHJjbXAob3B0LT5kZWZuYW1lLCAicGFyYWxsZWwiKSA9 PSAwKQogCQl7CiAJCQlpZiAob3B0LT5hcmcgPT0gTlVMTCkKQEAgLTIxMSwyNiArMjEzLDE4IEBA IEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRlLCBWYWN1dW1TdG10ICp2YWNzdG10LCBib29s IGlzVG9wTGV2ZWwpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAogCQkJCSBlcnJtc2coIlZBQ1VVTSBGVUxMIGNhbm5vdCBiZSBwZXJmb3JtZWQgaW4gcGFyYWxs ZWwiKSkpOwogCi0JLyogR2V0IHRhYmxlc3BhY2UgT2lkIHRvIHVzZS4gKi8KLQlpZiAodGFibGVz cGFjZW5hbWUpCi0JewotCQlpZiAoKHBhcmFtcy5vcHRpb25zICYgVkFDT1BUX0ZVTEwpID09IDAp Ci0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCi0JCQkJCWVycm1zZygiaW5jb21wYXRpYmxlIFRBQkxFU1BBQ0Ugb3B0aW9uIiks Ci0JCQkJCWVycmRldGFpbCgiWW91IGNhbiBvbmx5IHVzZSBUQUJMRVNQQUNFIHdpdGggVkFDVVVN IEZVTEwuIikpKTsKLQotCQl0YWJsZXNwYWNlT2lkID0gZ2V0X3RhYmxlc3BhY2Vfb2lkKHRhYmxl c3BhY2VuYW1lLCBmYWxzZSk7Ci0KLQkJLyogQ2FuJ3QgbW92ZSBhIG5vbi1zaGFyZWQgcmVsYXRp b24gaW50byBwZ19nbG9iYWwgKi8KLQkJaWYgKHRhYmxlc3BhY2VPaWQgPT0gR0xPQkFMVEFCTEVT UEFDRV9PSUQpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCWVycm1zZygiY2Fubm90IG1vdmUgbm9uLXNoYXJlZCBy ZWxhdGlvbiB0byB0YWJsZXNwYWNlIFwiJXNcIiIsCi0JCQkJCQkJdGFibGVzcGFjZW5hbWUpKSk7 CisJaWYgKChwYXJhbXMub3B0aW9ucyAmIFZBQ09QVF9GVUxMKSA9PSAwICYmCisJCSh0YWJsZXNw YWNlbmFtZSB8fCBpZHh0YWJsZXNwYWNlbmFtZSkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygiaW5jb21w YXRpYmxlIFRBQkxFU1BBQ0Ugb3B0aW9uIiksCisJCQkJZXJyZGV0YWlsKCJZb3UgY2FuIG9ubHkg dXNlIFRBQkxFU1BBQ0Ugd2l0aCBWQUNVVU0gRlVMTC4iKSkpOwogCi0JfQotCXBhcmFtcy50YWJs ZXNwYWNlX29pZCA9IHRhYmxlc3BhY2VPaWQ7CisJLyogR2V0IHRhYmxlc3BhY2UgT2lkcyB0byB1 c2UuICovCisJcGFyYW1zLnRhYmxlc3BhY2Vfb2lkID0gdGFibGVzcGFjZW5hbWUgPworCQlnZXRf dGFibGVzcGFjZV9vaWQodGFibGVzcGFjZW5hbWUsIGZhbHNlKSA6IEludmFsaWRPaWQ7CisJcGFy YW1zLmlkeHRhYmxlc3BhY2Vfb2lkID0gaWR4dGFibGVzcGFjZW5hbWUgPworCQlnZXRfdGFibGVz cGFjZV9vaWQoaWR4dGFibGVzcGFjZW5hbWUsIGZhbHNlKSA6IEludmFsaWRPaWQ7CiAKIAkvKgog CSAqIE1ha2Ugc3VyZSBWQUNPUFRfQU5BTFlaRSBpcyBzcGVjaWZpZWQgaWYgYW55IGNvbHVtbiBs aXN0cyBhcmUgcHJlc2VudC4KQEAgLTE3NTUsOCArMTc0OSw3IEBAIHZhY3V1bV9yZWwoT2lkIHJl bGlkLCBSYW5nZVZhciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyAqcGFyYW1zKQogCVJlbGF0aW9u CW9uZXJlbDsKIAlMb2NrUmVsSWQJb25lcmVsaWQ7CiAJT2lkCQkJdG9hc3RfcmVsaWQsCi0JCQkJ c2F2ZV91c2VyaWQsCi0JCQkJdGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7CisJCQkJc2F2ZV91 c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZlbDsK IApAQCAtMTkwMCwxNCArMTg5MywxMyBAQCB2YWN1dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIg KnJlbGF0aW9uLCBWYWN1dW1QYXJhbXMgKnBhcmFtcykKIAkJT2lkSXNWYWxpZChwYXJhbXMtPnRh Ymxlc3BhY2Vfb2lkKSAmJgogCQlJc1N5c3RlbVJlbGF0aW9uKG9uZXJlbCkgJiYgIWFsbG93U3lz dGVtVGFibGVNb2RzKQogCXsKKwkJcGFyYW1zLT50YWJsZXNwYWNlX29pZCA9IEludmFsaWRPaWQ7 CiAJCWVyZXBvcnQoV0FSTklORywKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCiAJCQkJZXJybXNnKCJza2lwcGluZyB0YWJsZXNwYWNlIGNoYW5nZSBvZiBcIiVz XCIiLAogCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUob25lcmVsKSksCiAJCQkJZXJyZGV0 YWlsKCJDYW5ub3QgbW92ZSBzeXN0ZW0gcmVsYXRpb24sIG9ubHkgVkFDVVVNIGlzIHBlcmZvcm1l ZC4iKSkpOwogCX0KLQllbHNlCi0JCXRhYmxlc3BhY2VPaWQgPSBwYXJhbXMtPnRhYmxlc3BhY2Vf b2lkOwogCiAJLyoKIAkgKiBHZXQgYSBzZXNzaW9uLWxldmVsIGxvY2sgdG9vLiBUaGlzIHdpbGwg cHJvdGVjdCBvdXIgYWNjZXNzIHRvIHRoZQpAQCAtMTk3OSw3ICsxOTcxLDcgQEAgdmFjdXVtX3Jl bChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwgVmFjdXVtUGFyYW1zICpwYXJhbXMpCiAK IAkJLyogVkFDVVVNIEZVTEwgaXMgbm93IGEgdmFyaWFudCBvZiBDTFVTVEVSOyBzZWUgY2x1c3Rl ci5jICovCiAJCWNsdXN0ZXJfcmVsKHJlbGlkLCBJbnZhbGlkT2lkLCBjbHVzdGVyX29wdGlvbnMs IHRydWUsCi0JCQkJdGFibGVzcGFjZU9pZCk7CisJCQkJcGFyYW1zLT50YWJsZXNwYWNlX29pZCwg cGFyYW1zLT5pZHh0YWJsZXNwYWNlX29pZCk7CiAJfQogCWVsc2UKIAkJdGFibGVfcmVsYXRpb25f dmFjdXVtKG9uZXJlbCwgcGFyYW1zLCB2YWNfc3RyYXRlZ3kpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYwppbmRleCBlNzNlMTI0MzM1Li5hY2ExZGIwODYxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYwpAQCAtMjkxNyw2ICsyOTE3LDcgQEAgdGFibGVfcmVjaGVja19hdXRv dmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQl0YWItPmF0X3BhcmFtcy5p c193cmFwYXJvdW5kID0gd3JhcGFyb3VuZDsKIAkJdGFiLT5hdF9wYXJhbXMubG9nX21pbl9kdXJh dGlvbiA9IGxvZ19taW5fZHVyYXRpb247CiAJCXRhYi0+YXRfcGFyYW1zLnRhYmxlc3BhY2Vfb2lk ID0gSW52YWxpZE9pZDsKKwkJdGFiLT5hdF9wYXJhbXMuaWR4dGFibGVzcGFjZV9vaWQgPSBJbnZh bGlkT2lkOwogCQl0YWItPmF0X3ZhY3V1bV9jb3N0X2xpbWl0ID0gdmFjX2Nvc3RfbGltaXQ7CiAJ CXRhYi0+YXRfdmFjdXVtX2Nvc3RfZGVsYXkgPSB2YWNfY29zdF9kZWxheTsKIAkJdGFiLT5hdF9y ZWxuYW1lID0gTlVMTDsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NsdXN0ZXIu aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NsdXN0ZXIuaAppbmRleCA5NzcyYWExNzYxLi5mYzRk MWFhODNkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oCkBAIC0yMSw3ICsyMSw4IEBACiAKIGV4dGVy biB2b2lkIGNsdXN0ZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDbHVzdGVyU3RtdCAqc3RtdCwgYm9v bCBpc1RvcExldmVsKTsKIGV4dGVybiB2b2lkIGNsdXN0ZXJfcmVsKE9pZCB0YWJsZU9pZCwgT2lk IGluZGV4T2lkLCBpbnQgb3B0aW9ucywKLQkJCQkJCWJvb2wgaXNUb3BMZXZlbCwgT2lkIHRhYmxl c3BhY2VPaWQpOworCQkJCQkJYm9vbCBpc1RvcExldmVsLCBPaWQgdGFibGVzcGFjZU9pZCwKKwkJ CQkJCU9pZCBpbmRleHRhYmxlc3BhY2VPaWQpOwogZXh0ZXJuIHZvaWQgY2hlY2tfaW5kZXhfaXNf Y2x1c3RlcmFibGUoUmVsYXRpb24gT2xkSGVhcCwgT2lkIGluZGV4T2lkLAogCQkJCQkJCQkJICAg Ym9vbCByZWNoZWNrLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gdm9pZCBtYXJrX2luZGV4 X2NsdXN0ZXJlZChSZWxhdGlvbiByZWwsIE9pZCBpbmRleE9pZCwgYm9vbCBpc19pbnRlcm5hbCk7 CkBAIC0zNSw2ICszNiw3IEBAIGV4dGVybiB2b2lkIGZpbmlzaF9oZWFwX3N3YXAoT2lkIE9JRE9s ZEhlYXAsIE9pZCBPSUROZXdIZWFwLAogCQkJCQkJCSBib29sIGlzX2ludGVybmFsLAogCQkJCQkJ CSBUcmFuc2FjdGlvbklkIGZyb3plblhpZCwKIAkJCQkJCQkgTXVsdGlYYWN0SWQgbWluTXVsdGks Ci0JCQkJCQkJIGNoYXIgbmV3cmVscGVyc2lzdGVuY2UpOworCQkJCQkJCSBjaGFyIG5ld3JlbHBl cnNpc3RlbmNlLAorCQkJCQkJCSBPaWQgaWR4dGFibGVzcGFjZU9pZCk7CiAKICNlbmRpZgkJCQkJ CQkvKiBDTFVTVEVSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1 bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggYjZlOTQ0ZDNhNS4uYTVk MGIzMWFiMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKQEAgLTIyOSw4ICsyMjksOSBAQCB0eXBlZGVm IHN0cnVjdCBWYWN1dW1QYXJhbXMKIAkgKiBkaXNhYmxlZC4KIAkgKi8KIAlpbnQJCQlud29ya2Vy czsKLQlPaWQJCQl0YWJsZXNwYWNlX29pZDsgLyogdGFibGVzcGFjZSB0byB1c2UgZm9yIHJlbGF0 aW9ucwotCQkJCQkJCQkgKiByZWJ1aWx0IGJ5IFZBQ1VVTSBGVUxMICovCisJLyogdGFibGVzcGFj ZXMgdG8gdXNlIGZvciByZWxhdGlvbnMgcmVidWlsdCBieSBWQUNVVU0gRlVMTCAqLworCU9pZAkJ CXRhYmxlc3BhY2Vfb2lkOworCU9pZAkJCWlkeHRhYmxlc3BhY2Vfb2lkOwogfSBWYWN1dW1QYXJh bXM7CiAKIC8qIEdVQyBwYXJhbWV0ZXJzICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2lucHV0L3RhYmxlc3BhY2Uuc291cmNlIGIvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNw YWNlLnNvdXJjZQppbmRleCBmNDY4N2Y2YmZiLi4zMDY1ZTE1ZTE4IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UKQEAgLTgwLDYgKzgwLDE5IEBAIFJFSU5ERVggKFRB QkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgQ09OQ1VSUkVOVExZIHJlZ3Jlc3NfdGJsc3BhY2Vf dGVzdF90Ymw7IC0tCiBTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCiBXSEVSRSByZWx0YWJs ZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdy ZXNzX3RibHNwYWNlJyk7CiAKKy0tIGNoZWNrIENMVVNURVIgd2l0aCBJTkRFWF9UQUJMRVNQQUNF IGNoYW5nZSB0byBub24tZGVmYXVsdCBsb2NhdGlvbgorQ0xVU1RFUiAoSU5ERVhfVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlKSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFVTSU5HIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAtLSBvaworLS0gY2hlY2sgcmVsYXRpb25zIG1vdmVk IHRvIG5ldyB0YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSBy ZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1l PSdyZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7CistLSBjaGVjayBWQUNVVU0g d2l0aCBJTkRFWF9UQUJMRVNQQUNFIGNoYW5nZQorVkFDVVVNIChGVUxMLCBBTkFMWVNFLCBGUkVF WkUsIElOREVYX1RBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgcmVncmVzc190YmxzcGFjZV90ZXN0X3Ri bDsgLS0gb2sKKy0tIGNoZWNrIHJlbGF0aW9ucyBtb3ZlZCBiYWNrIHRvIHBnX2RlZmF1bHQKK1NF TEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBv aWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsK KworCiAtLSBjcmVhdGUgYSBzY2hlbWEgd2UgY2FuIHVzZQogQ1JFQVRFIFNDSEVNQSB0ZXN0c2No ZW1hOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNv dXJjZSBiL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlCmluZGV4IGUw YTVjNDhmZTkuLjY1YzYxZWUzNzMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0 L3RhYmxlc3BhY2Uuc291cmNlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3Bh Y2Uuc291cmNlCkBAIC0xMTQsNiArMTE0LDI2IEBAIFdIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVD VCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhCiAt LS0tLS0tLS0KICgwIHJvd3MpCiAKKy0tIGNoZWNrIENMVVNURVIgd2l0aCBJTkRFWF9UQUJMRVNQ QUNFIGNoYW5nZSB0byBub24tZGVmYXVsdCBsb2NhdGlvbgorQ0xVU1RFUiAoSU5ERVhfVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlKSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFVTSU5HIHJl Z3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAtLSBvaworLS0gY2hlY2sgcmVsYXRpb25zIG1v dmVkIHRvIG5ldyB0YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVS RSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNu YW1lPSdyZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7CisgICAgICAgICAgICBy ZWxuYW1lICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVn cmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHgKKygxIHJvdykKKworLS0gY2hlY2sgVkFDVVVNIHdp dGggSU5ERVhfVEFCTEVTUEFDRSBjaGFuZ2UKK1ZBQ1VVTSAoRlVMTCwgQU5BTFlTRSwgRlJFRVpF LCBJTkRFWF9UQUJMRVNQQUNFIHBnX2RlZmF1bHQpIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7 IC0tIG9rCistLSBjaGVjayByZWxhdGlvbnMgbW92ZWQgYmFjayB0byBwZ19kZWZhdWx0CitTRUxF Q1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lk IEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7Cisg cmVsbmFtZSAKKy0tLS0tLS0tLQorKDAgcm93cykKKwogLS0gY3JlYXRlIGEgc2NoZW1hIHdlIGNh biB1c2UKIENSRUFURSBTQ0hFTUEgdGVzdHNjaGVtYTsKIC0tIHRyeSBhIHRhYmxlCi0tIAoyLjE5 LjEKCg== --=_cc5f51042d13cebfefdd7061a3a1222c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v28-0005-Allow-CLUSTER-and-VACUUM-FULL-to-change-tablespa.patch Content-Disposition: attachment; filename=v28-0005-Allow-CLUSTER-and-VACUUM-FULL-to-change-tablespa.patch; size=24046 RnJvbSA0YTE0ODViNWU2NDI0ZjhiMTRkMWI3OWMzMWI1MmFiZDA3MWI1ZGYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFR1ZSwgMjQgTWFyIDIwMjAgMTg6MTY6MDYgKzAzMDAKU3ViamVjdDog W1BBVENIIHYyOCA1LzZdIEFsbG93IENMVVNURVIgYW5kIFZBQ1VVTSBGVUxMIHRvIGNoYW5nZSB0 YWJsZXNwYWNlCgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY2x1c3Rlci5zZ21sICAgICAgICAgICAg IHwgMTkgKysrKysrKwogZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0uc2dtbCAgICAgICAgICAgICAg fCAyMCArKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMgICAgICAgICAgICB8 IDY2ICsrKysrKysrKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyAgICAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAg ICAgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgICAgICAgICAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jICAgICAgIHwgIDEgKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAgICAgICAg ICAgICAgfCAgOSArKystCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmggICAgICAgICAg ICB8ICAyICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAgICAgICB8ICAy ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UgIHwgMjMgKysrKysr Ky0KIHNyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlIHwgMzcgKysrKysr KysrKysrLQogMTIgZmlsZXMgY2hhbmdlZCwgMjI2IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY2x1c3Rlci5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jbHVzdGVyLnNnbWwKaW5kZXggZTZlYmNlMjdlNi4uYjE5OGE3NjA1YyAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L3JlZi9jbHVzdGVyLnNnbWwKQEAgLTI3LDYgKzI3LDcgQEAgQ0xVU1RFUiBbVkVSQk9TRV0gWyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAu Li4KIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwv cmVwbGFjZWFibGU+IGNhbiBiZSBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBWRVJCT1NFIFsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCisgICAg VEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3RhYmxlc3BhY2U8 L3JlcGxhY2VhYmxlPgogCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CkBAIC05NSw2 ICs5NiwxNSBAQCBDTFVTVEVSIFtWRVJCT1NFXSBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLgogICAgIDwvbGlzdGl0ZW0+CiAgICA8 L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5U QUJMRVNQQUNFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgU3BlY2lmaWVzIHRoYXQgdGhlIHRhYmxlIHdpbGwgYmUgcmVidWlsdCBvbiBhIG5ldyB0 YWJsZXNwYWNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVt PgpAQCAtMTI2LDYgKzEzNiwxNSBAQCBDTFVTVEVSIFtWRVJCT1NFXSBbICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLgogICAgICA8L3Bh cmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVu dHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfdGFibGVz cGFjZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Cisg ICAgICBUaGUgdGFibGVzcGFjZSB3aGVyZSB0aGUgdGFibGUgd2lsbCBiZSByZWJ1aWx0LgorICAg ICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgogICA8L3Zhcmlh YmxlbGlzdD4KICA8L3JlZnNlY3QxPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3Zh Y3V1bS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0uc2dtbAppbmRleCBhNDhmNzVhZDdi Li4yNDA4YjU5YmIyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bS5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwKQEAgLTM1LDYgKzM1LDcgQEAgVkFDVVVN IFsgRlVMTCBdIFsgRlJFRVpFIF0gWyBWRVJCT1NFIF0gWyBBTkFMWVpFIF0gWyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXQKICAgICBJTkRFWF9DTEVBTlVQIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCiAgICAgVFJVTkNBVEUgWyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBQ QVJBTExFTCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW50ZWdlcjwvcmVwbGFjZWFi bGU+CisgICAgVEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmV3X3Rh Ymxlc3BhY2U8L3JlcGxhY2VhYmxlPgogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVtbnM8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4K IApAQCAtMjU1LDYgKzI1NiwxNSBAQCBWQUNVVU0gWyBGVUxMIF0gWyBGUkVFWkUgXSBbIFZFUkJP U0UgXSBbIEFOQUxZWkUgXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldAogICAgIDwvbGlz dGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVy bT48bGl0ZXJhbD5UQUJMRVNQQUNFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgU3BlY2lmaWVzIHRoYXQgdGhlIHJlbGF0aW9uIHdpbGwgYmUgcmVi dWlsdCBvbiBhIG5ldyB0YWJsZXNwYWNlLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAg ICAgPGxpc3RpdGVtPgpAQCAtMjk5LDYgKzMwOSwxNiBAQCBWQUNVVU0gWyBGVUxMIF0gWyBGUkVF WkUgXSBbIFZFUkJPU0UgXSBbIEFOQUxZWkUgXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dAogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgorCisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5uZXdfdGFibGVzcGFjZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBUaGUgdGFibGVzcGFjZSB3aGVyZSB0aGUgcmVsYXRpb24gd2lsbCBi ZSByZWJ1aWx0LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVu dHJ5PgorCiAgIDwvdmFyaWFibGVsaXN0PgogIDwvcmVmc2VjdDE+CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0 ZXIuYwppbmRleCA5NDE5Y2M0ZGNmLi4zOTkwZGJhY2E1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jbHVzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5j CkBAIC0zMywxMSArMzMsMTMgQEAKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvb2JqZWN0YWNjZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19hbS5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cv dG9hc3RpbmcuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jbHVzdGVyLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvZGVmcmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRl ICJjb21tYW5kcy90YWJsZWNtZHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgpAQCAtNjksNyArNzEsOCBAQCB0eXBlZGVm IHN0cnVjdAogCiAKIHN0YXRpYyB2b2lkIHJlYnVpbGRfcmVsYXRpb24oUmVsYXRpb24gT2xkSGVh cCwgT2lkIGluZGV4T2lkLAotCQkJCQkJCSBib29sIGlzVG9wTGV2ZWwsIGJvb2wgdmVyYm9zZSk7 CisJCQkJCQkJIGJvb2wgaXNUb3BMZXZlbCwgYm9vbCB2ZXJib3NlLAorCQkJCQkJCSBPaWQgTmV3 VGFibGVTcGFjZU9pZCk7CiBzdGF0aWMgdm9pZCBjb3B5X3RhYmxlX2RhdGEoT2lkIE9JRE5ld0hl YXAsIE9pZCBPSURPbGRIZWFwLCBPaWQgT0lET2xkSW5kZXgsCiAJCQkJCQkJYm9vbCBpc1RvcExl dmVsLCBib29sIHZlcmJvc2UsCiAJCQkJCQkJYm9vbCAqcFN3YXBUb2FzdEJ5Q29udGVudCwKQEAg LTEwNyw2ICsxMTAsOSBAQCBjbHVzdGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ2x1c3RlclN0bXQg KnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIHsKIAlMaXN0Q2VsbAkqbGM7CiAJaW50CQkJb3B0aW9u cyA9IDA7CisJLyogTmFtZSBhbmQgT2lkIG9mIHRhYmxlc3BhY2UgdG8gdXNlIGZvciBjbHVzdGVy ZWQgcmVsYXRpb24uICovCisJY2hhcgkJKnRhYmxlc3BhY2VOYW1lID0gTlVMTDsKKwlPaWQJCQl0 YWJsZXNwYWNlT2lkID0gSW52YWxpZE9pZDsKIAogCS8qIFBhcnNlIGxpc3Qgb2YgZ2VuZXJpYyBw YXJhbWV0ZXJzIG5vdCBoYW5kbGVkIGJ5IHRoZSBwYXJzZXIgKi8KIAlmb3JlYWNoKGxjLCBzdG10 LT5wYXJhbXMpCkBAIC0xMTgsNiArMTI0LDggQEAgY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUs IENsdXN0ZXJTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQkJb3B0aW9ucyB8PSBDTFVP UFRfVkVSQk9TRTsKIAkJCWVsc2UKIAkJCQlvcHRpb25zICY9IH5DTFVPUFRfVkVSQk9TRTsKKwkJ ZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgInRhYmxlc3BhY2UiKSA9PSAwKQorCQkJdGFi bGVzcGFjZU5hbWUgPSBkZWZHZXRTdHJpbmcob3B0KTsKIAkJZWxzZQogCQkJZXJlcG9ydChFUlJP UiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtMTI2LDYgKzEzNCwx OSBAQCBjbHVzdGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ2x1c3RlclN0bXQgKnN0bXQsIGJvb2wg aXNUb3BMZXZlbCkKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG9wdC0+bG9jYXRp b24pKSk7CiAJfQogCisJLyogU2VsZWN0IHRhYmxlc3BhY2UgT2lkIHRvIHVzZS4gKi8KKwlpZiAo dGFibGVzcGFjZU5hbWUpCisJeworCQl0YWJsZXNwYWNlT2lkID0gZ2V0X3RhYmxlc3BhY2Vfb2lk KHRhYmxlc3BhY2VOYW1lLCBmYWxzZSk7CisKKwkJLyogQ2FuJ3QgbW92ZSBhIG5vbi1zaGFyZWQg cmVsYXRpb24gaW50byBwZ19nbG9iYWwgKi8KKwkJaWYgKHRhYmxlc3BhY2VPaWQgPT0gR0xPQkFM VEFCTEVTUEFDRV9PSUQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coImNhbm5vdCBtb3ZlIG5vbi1z aGFyZWQgcmVsYXRpb24gdG8gdGFibGVzcGFjZSBcIiVzXCIiLAorCQkJCQkJCXRhYmxlc3BhY2VO YW1lKSkpOworCX0KKwogCWlmIChzdG10LT5yZWxhdGlvbiAhPSBOVUxMKQogCXsKIAkJLyogVGhp cyBpcyB0aGUgc2luZ2xlLXJlbGF0aW9uIGNhc2UuICovCkBAIC0xOTUsNyArMjE2LDggQEAgY2x1 c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0ZXJTdG10ICpzdG10LCBib29sIGlzVG9wTGV2 ZWwpCiAJCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKIAogCQkvKiBEbyB0aGUgam9iLiAqLwot CQljbHVzdGVyX3JlbCh0YWJsZU9pZCwgaW5kZXhPaWQsIG9wdGlvbnMsIGlzVG9wTGV2ZWwpOwor CQljbHVzdGVyX3JlbCh0YWJsZU9pZCwgaW5kZXhPaWQsIG9wdGlvbnMsIGlzVG9wTGV2ZWwsCisJ CQkJdGFibGVzcGFjZU9pZCk7CiAJfQogCWVsc2UKIAl7CkBAIC0yNDUsNyArMjY3LDcgQEAgY2x1 c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0ZXJTdG10ICpzdG10LCBib29sIGlzVG9wTGV2 ZWwpCiAJCQkvKiBEbyB0aGUgam9iLiAqLwogCQkJY2x1c3Rlcl9yZWwocnZ0Yy0+dGFibGVPaWQs IHJ2dGMtPmluZGV4T2lkLAogCQkJCQkJb3B0aW9ucyB8IENMVU9QVF9SRUNIRUNLLAotCQkJCQkJ aXNUb3BMZXZlbCk7CisJCQkJCQlpc1RvcExldmVsLCB0YWJsZXNwYWNlT2lkKTsKIAkJCVBvcEFj dGl2ZVNuYXBzaG90KCk7CiAJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAkJfQpAQCAt Mjc0LDkgKzI5NiwxMiBAQCBjbHVzdGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ2x1c3RlclN0bXQg KnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKICAqIElmIGluZGV4T2lkIGlzIEludmFsaWRPaWQsIHRo ZSB0YWJsZSB3aWxsIGJlIHJld3JpdHRlbiBpbiBwaHlzaWNhbCBvcmRlcgogICogaW5zdGVhZCBv ZiBpbmRleCBvcmRlci4gIFRoaXMgaXMgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiBWQUNVVU0g RlVMTCwKICAqIGFuZCBlcnJvciBtZXNzYWdlcyBzaG91bGQgcmVmZXIgdG8gdGhlIG9wZXJhdGlv biBhcyBWQUNVVU0gbm90IENMVVNURVIuCisgKgorICogInRhYmxlc3BhY2VPaWQiIGlzIHRoZSB0 YWJsZXNwYWNlIHdoZXJlIHRoZSByZWxhdGlvbiB3aWxsIGJlIHJlYnVpbHQsIG9yCisgKiBJbnZh bGlkT2lkIHRvIHVzZSBpdHMgY3VycmVudCB0YWJsZXNwYWNlLgogICovCiB2b2lkCi1jbHVzdGVy X3JlbChPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BM ZXZlbCkKK2NsdXN0ZXJfcmVsKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkLCBpbnQgb3B0aW9u cywgYm9vbCBpc1RvcExldmVsLCBPaWQgdGFibGVzcGFjZU9pZCkKIHsKIAlSZWxhdGlvbglPbGRI ZWFwOwogCWJvb2wJCXZlcmJvc2UgPSAoKG9wdGlvbnMgJiBDTFVPUFRfVkVSQk9TRSkgIT0gMCk7 CkBAIC0zNzYsNiArNDAxLDIzIEBAIGNsdXN0ZXJfcmVsKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4 T2lkLCBpbnQgb3B0aW9ucywgYm9vbCBpc1RvcExldmVsKQogCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJjYW5ub3QgY2x1c3RlciBhIHNo YXJlZCBjYXRhbG9nIikpKTsKIAorCWlmIChPaWRJc1ZhbGlkKHRhYmxlc3BhY2VPaWQpICYmCisJ CSFhbGxvd1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbVJlbGF0aW9uKE9sZEhlYXApKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVH RSksCisJCQkJZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZDogXCIlc1wiIGlzIGEgc3lzdGVtIGNh dGFsb2ciLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoT2xkSGVhcCkpKSk7CisKKwkv KgorCSAqIFdlIGNhbm5vdCBzdXBwb3J0IG1vdmluZyBtYXBwZWQgcmVsYXRpb25zIGludG8gZGlm ZmVyZW50IHRhYmxlc3BhY2VzLgorCSAqIChJbiBwYXJ0aWN1bGFyIHRoaXMgZWxpbWluYXRlcyBh bGwgc2hhcmVkIGNhdGFsb2dzLikKKwkgKi8KKwlpZiAoT2lkSXNWYWxpZCh0YWJsZXNwYWNlT2lk KSAmJiBSZWxhdGlvbklzTWFwcGVkKE9sZEhlYXApKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5u b3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgbWFwcGVkIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShPbGRIZWFwKSkpKTsKKwogCS8qCiAJICogRG9uJ3QgcHJv Y2VzcyB0ZW1wIHRhYmxlcyBvZiBvdGhlciBiYWNrZW5kcyAuLi4gdGhlaXIgbG9jYWwgYnVmZmVy CiAJICogbWFuYWdlciBpcyBub3QgZ29pbmcgdG8gY29wZS4KQEAgLTQyNiw3ICs0NjgsOCBAQCBj bHVzdGVyX3JlbChPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCwgaW50IG9wdGlvbnMsIGJvb2wg aXNUb3BMZXZlbCkKIAlUcmFuc2ZlclByZWRpY2F0ZUxvY2tzVG9IZWFwUmVsYXRpb24oT2xkSGVh cCk7CiAKIAkvKiByZWJ1aWxkX3JlbGF0aW9uIGRvZXMgYWxsIHRoZSBkaXJ0eSB3b3JrICovCi0J cmVidWlsZF9yZWxhdGlvbihPbGRIZWFwLCBpbmRleE9pZCwgaXNUb3BMZXZlbCwgdmVyYm9zZSk7 CisJcmVidWlsZF9yZWxhdGlvbihPbGRIZWFwLCBpbmRleE9pZCwgaXNUb3BMZXZlbCwgdmVyYm9z ZSwKKwkJCXRhYmxlc3BhY2VPaWQpOwogCiAJLyogTkI6IHJlYnVpbGRfcmVsYXRpb24gZG9lcyB0 YWJsZV9jbG9zZSgpIG9uIE9sZEhlYXAgKi8KIApAQCAtNTc2LDcgKzYxOSw3IEBAIG1hcmtfaW5k ZXhfY2x1c3RlcmVkKFJlbGF0aW9uIHJlbCwgT2lkIGluZGV4T2lkLCBib29sIGlzX2ludGVybmFs KQogICogTkI6IHRoaXMgcm91dGluZSBjbG9zZXMgT2xkSGVhcCBhdCB0aGUgcmlnaHQgdGltZTsg Y2FsbGVyIHNob3VsZCBub3QuCiAgKi8KIHN0YXRpYyB2b2lkCi1yZWJ1aWxkX3JlbGF0aW9uKFJl bGF0aW9uIE9sZEhlYXAsIE9pZCBpbmRleE9pZCwgYm9vbCBpc1RvcExldmVsLCBib29sIHZlcmJv c2UpCityZWJ1aWxkX3JlbGF0aW9uKFJlbGF0aW9uIE9sZEhlYXAsIE9pZCBpbmRleE9pZCwgYm9v bCBpc1RvcExldmVsLCBib29sIHZlcmJvc2UsIE9pZCBOZXdUYWJsZXNwYWNlT2lkKQogewogCU9p ZAkJCXRhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChPbGRIZWFwKTsKIAlPaWQJCQl0YWJsZVNw YWNlID0gT2xkSGVhcC0+cmRfcmVsLT5yZWx0YWJsZXNwYWNlOwpAQCAtNTg3LDYgKzYzMCwxMCBA QCByZWJ1aWxkX3JlbGF0aW9uKFJlbGF0aW9uIE9sZEhlYXAsIE9pZCBpbmRleE9pZCwgYm9vbCBp c1RvcExldmVsLCBib29sIHZlcmJvc2UpCiAJVHJhbnNhY3Rpb25JZCBmcm96ZW5YaWQ7CiAJTXVs dGlYYWN0SWQgY3V0b2ZmTXVsdGk7CiAKKwkvKiBVc2UgbmV3IHRhYmxlc3BhY2UgaWYgcGFzc2Vk LiAqLworCWlmIChPaWRJc1ZhbGlkKE5ld1RhYmxlc3BhY2VPaWQpKQorCQl0YWJsZVNwYWNlID0g TmV3VGFibGVzcGFjZU9pZDsKKwogCS8qIE1hcmsgdGhlIGNvcnJlY3QgaW5kZXggYXMgY2x1c3Rl cmVkICovCiAJaWYgKE9pZElzVmFsaWQoaW5kZXhPaWQpKQogCQltYXJrX2luZGV4X2NsdXN0ZXJl ZChPbGRIZWFwLCBpbmRleE9pZCwgdHJ1ZSk7CkBAIC0xMDMyLDYgKzEwNzksMTMgQEAgc3dhcF9y ZWxhdGlvbl9maWxlcyhPaWQgcjEsIE9pZCByMiwgYm9vbCB0YXJnZXRfaXNfcGdfY2xhc3MsCiAJ CSAqLwogCQlBc3NlcnQoIXRhcmdldF9pc19wZ19jbGFzcyk7CiAKKwkJaWYgKCFhbGxvd1N5c3Rl bVRhYmxlTW9kcyAmJiBJc1N5c3RlbUNsYXNzKHIxLCByZWxmb3JtMSkgJiYKKwkJCXJlbGZvcm0x LT5yZWx0YWJsZXNwYWNlICE9IHJlbGZvcm0yLT5yZWx0YWJsZXNwYWNlKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJ CQkJIGVycm1zZygicGVybWlzc2lvbiBkZW5pZWQ6IFwiJXNcIiBpcyBhIHN5c3RlbSBjYXRhbG9n IiwKKwkJCQkJCQlnZXRfcmVsX25hbWUocjEpKSkpOworCiAJCXN3YXB0ZW1wID0gcmVsZm9ybTEt PnJlbGZpbGVub2RlOwogCQlyZWxmb3JtMS0+cmVsZmlsZW5vZGUgPSByZWxmb3JtMi0+cmVsZmls ZW5vZGU7CiAJCXJlbGZvcm0yLT5yZWxmaWxlbm9kZSA9IHN3YXB0ZW1wOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwppbmRleCBlZmE2ZDA5MWIxLi42MmQyNzZkMjAzIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwpAQCAtMTMxNTMsOCArMTMxNTMsOSBAQCBBVEV4ZWNTZXRUYWJsZVNwYWNlKE9p ZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tNT0RFIGxvY2ttb2RlKQogCWlmIChS ZWxhdGlvbklzTWFwcGVkKHJlbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImNhbm5vdCBtb3ZlIHN5 c3RlbSByZWxhdGlvbiBcIiVzXCIiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSkpKTsKKwkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgbWFwcGVkIHJl bGF0aW9uIFwiJXNcIiIsCisJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwor CiAKIAkvKiBDYW4ndCBtb3ZlIGEgbm9uLXNoYXJlZCByZWxhdGlvbiBpbnRvIHBnX2dsb2JhbCAq LwogCWlmIChuZXdUYWJsZVNwYWNlID09IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW0uYwppbmRleCBkZGVlYzg3MGQ4Li4yNWU0MzcwNTZjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0u YwpAQCAtMzEsMTMgKzMxLDE2IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNs dWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19pbmhl cml0cy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY2x1c3Rlci5oIgogI2lu Y2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgor I2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK ICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTEw Niw2ICsxMDksMTAgQEAgRXhlY1ZhY3V1bShQYXJzZVN0YXRlICpwc3RhdGUsIFZhY3V1bVN0bXQg KnZhY3N0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAlib29sCQlkaXNhYmxlX3BhZ2Vfc2tpcHBpbmcg PSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpsYzsKIAorCS8qIE5hbWUgYW5kIE9pZCBvZiB0YWJsZXNw YWNlIHRvIHVzZSBmb3IgcmVsYXRpb25zIGFmdGVyIFZBQ1VVTSBGVUxMLiAqLworCWNoYXIJCSp0 YWJsZXNwYWNlbmFtZSA9IE5VTEw7CisJT2lkIAkJdGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7 CisKIAkvKiBTZXQgZGVmYXVsdCB2YWx1ZSAqLwogCXBhcmFtcy5pbmRleF9jbGVhbnVwID0gVkFD T1BUX1RFUk5BUllfREVGQVVMVDsKIAlwYXJhbXMudHJ1bmNhdGUgPSBWQUNPUFRfVEVSTkFSWV9E RUZBVUxUOwpAQCAtMTQyLDYgKzE0OSw4IEBAIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAqcHN0YXRl LCBWYWN1dW1TdG10ICp2YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQlwYXJhbXMuaW5kZXhf Y2xlYW51cCA9IGdldF92YWNvcHRfdGVybmFyeV92YWx1ZShvcHQpOwogCQllbHNlIGlmIChzdHJj bXAob3B0LT5kZWZuYW1lLCAidHJ1bmNhdGUiKSA9PSAwKQogCQkJcGFyYW1zLnRydW5jYXRlID0g Z2V0X3ZhY29wdF90ZXJuYXJ5X3ZhbHVlKG9wdCk7CisJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRl Zm5hbWUsICJ0YWJsZXNwYWNlIikgPT0gMCkKKwkJCXRhYmxlc3BhY2VuYW1lID0gZGVmR2V0U3Ry aW5nKG9wdCk7CiAJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJwYXJhbGxlbCIpID09 IDApCiAJCXsKIAkJCWlmIChvcHQtPmFyZyA9PSBOVUxMKQpAQCAtMjAyLDYgKzIxMSwyNyBAQCBF eGVjVmFjdXVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgVmFjdXVtU3RtdCAqdmFjc3RtdCwgYm9vbCBp c1RvcExldmVsKQogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK IAkJCQkgZXJybXNnKCJWQUNVVU0gRlVMTCBjYW5ub3QgYmUgcGVyZm9ybWVkIGluIHBhcmFsbGVs IikpKTsKIAorCS8qIEdldCB0YWJsZXNwYWNlIE9pZCB0byB1c2UuICovCisJaWYgKHRhYmxlc3Bh Y2VuYW1lKQorCXsKKwkJaWYgKChwYXJhbXMub3B0aW9ucyAmIFZBQ09QVF9GVUxMKSA9PSAwKQor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAorCQkJCQllcnJtc2coImluY29tcGF0aWJsZSBUQUJMRVNQQUNFIG9wdGlvbiIpLAor CQkJCQllcnJkZXRhaWwoIllvdSBjYW4gb25seSB1c2UgVEFCTEVTUEFDRSB3aXRoIFZBQ1VVTSBG VUxMLiIpKSk7CisKKwkJdGFibGVzcGFjZU9pZCA9IGdldF90YWJsZXNwYWNlX29pZCh0YWJsZXNw YWNlbmFtZSwgZmFsc2UpOworCisJCS8qIENhbid0IG1vdmUgYSBub24tc2hhcmVkIHJlbGF0aW9u IGludG8gcGdfZ2xvYmFsICovCisJCWlmICh0YWJsZXNwYWNlT2lkID09IEdMT0JBTFRBQkxFU1BB Q0VfT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coImNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVs YXRpb24gdG8gdGFibGVzcGFjZSBcIiVzXCIiLAorCQkJCQkJCXRhYmxlc3BhY2VuYW1lKSkpOwor CisJfQorCXBhcmFtcy50YWJsZXNwYWNlX29pZCA9IHRhYmxlc3BhY2VPaWQ7CisKIAkvKgogCSAq IE1ha2Ugc3VyZSBWQUNPUFRfQU5BTFlaRSBpcyBzcGVjaWZpZWQgaWYgYW55IGNvbHVtbiBsaXN0 cyBhcmUgcHJlc2VudC4KIAkgKi8KQEAgLTE3MjQsOCArMTc1NCw5IEBAIHZhY3V1bV9yZWwoT2lk IHJlbGlkLCBSYW5nZVZhciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyAqcGFyYW1zKQogCUxPQ0tN T0RFCWxtb2RlOwogCVJlbGF0aW9uCW9uZXJlbDsKIAlMb2NrUmVsSWQJb25lcmVsaWQ7Ci0JT2lk CQkJdG9hc3RfcmVsaWQ7Ci0JT2lkCQkJc2F2ZV91c2VyaWQ7CisJT2lkCQkJdG9hc3RfcmVsaWQs CisJCQkJc2F2ZV91c2VyaWQsCisJCQkJdGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7CiAJaW50 CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIApAQCAtMTg2MSw2 ICsxODkyLDIzIEBAIHZhY3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZhciAqcmVsYXRpb24sIFZh Y3V1bVBhcmFtcyAqcGFyYW1zKQogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKKwkvKgorCSAqIFdlIGRv bid0IHN1cHBvcnQgbW92aW5nIHN5c3RlbSByZWxhdGlvbnMgaW50byBkaWZmZXJlbnQgdGFibGVz cGFjZXMKKwkgKiB1bmxlc3MgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM9MS4KKwkgKi8KKwlpZiAo cGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX0ZVTEwgJiYKKwkJT2lkSXNWYWxpZChwYXJhbXMtPnRh Ymxlc3BhY2Vfb2lkKSAmJgorCQlJc1N5c3RlbVJlbGF0aW9uKG9uZXJlbCkgJiYgIWFsbG93U3lz dGVtVGFibGVNb2RzKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2coInNraXBwaW5nIHRhYmxlc3Bh Y2UgY2hhbmdlIG9mIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShvbmVy ZWwpKSwKKwkJCQllcnJkZXRhaWwoIkNhbm5vdCBtb3ZlIHN5c3RlbSByZWxhdGlvbiwgb25seSBW QUNVVU0gaXMgcGVyZm9ybWVkLiIpKSk7CisJfQorCWVsc2UKKwkJdGFibGVzcGFjZU9pZCA9IHBh cmFtcy0+dGFibGVzcGFjZV9vaWQ7CisKIAkvKgogCSAqIEdldCBhIHNlc3Npb24tbGV2ZWwgbG9j ayB0b28uIFRoaXMgd2lsbCBwcm90ZWN0IG91ciBhY2Nlc3MgdG8gdGhlCiAJICogcmVsYXRpb24g YWNyb3NzIG11bHRpcGxlIHRyYW5zYWN0aW9ucywgc28gdGhhdCB3ZSBjYW4gdmFjdXVtIHRoZQpA QCAtMTkzMCw3ICsxOTc4LDggQEAgdmFjdXVtX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFyICpyZWxh dGlvbiwgVmFjdXVtUGFyYW1zICpwYXJhbXMpCiAJCQljbHVzdGVyX29wdGlvbnMgfD0gQ0xVT1BU X1ZFUkJPU0U7CiAKIAkJLyogVkFDVVVNIEZVTEwgaXMgbm93IGEgdmFyaWFudCBvZiBDTFVTVEVS OyBzZWUgY2x1c3Rlci5jICovCi0JCWNsdXN0ZXJfcmVsKHJlbGlkLCBJbnZhbGlkT2lkLCBjbHVz dGVyX29wdGlvbnMsIHRydWUpOworCQljbHVzdGVyX3JlbChyZWxpZCwgSW52YWxpZE9pZCwgY2x1 c3Rlcl9vcHRpb25zLCB0cnVlLAorCQkJCXRhYmxlc3BhY2VPaWQpOwogCX0KIAllbHNlCiAJCXRh YmxlX3JlbGF0aW9uX3ZhY3V1bShvbmVyZWwsIHBhcmFtcywgdmFjX3N0cmF0ZWd5KTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IDcyOWYyZTcxZmUuLjE2YmExNGNiY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTA0MzEs OCArMTA0MzEsOSBAQCBjbHVzdGVyX2luZGV4X3NwZWNpZmljYXRpb246CiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKICAqCiAgKgkJUVVFUlk6Ci0gKgkJCQlWQUNVVU0KLSAqCQkJCUFOQUxZWkUKKyAq CQkJCVZBQ1VVTSBbRlVMTF0gW0ZSRUVaRV0gW1ZFUkJPU0VdIFtBTkFMWVpFXSBbIDx0YWJsZV9h bmRfY29sdW1ucz4gWywgLi4uXSBdCisgKgkJCQlWQUNVVU0gWyhvcHRpb25zKV0gWyA8dGFibGVf YW5kX2NvbHVtbnM+IFssIC4uLl0gXQorICoJCQkJQU5BTFlaRSBbVkVSQk9TRV0gWyA8dGFibGVf YW5kX2NvbHVtbnM+IFssIC4uLl0gXQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCAyY2VmNTZmMTE1Li5lNzNlMTI0MzM1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMjkxNiw2ICsyOTE2LDcgQEAgdGFi bGVfcmVjaGVja19hdXRvdmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQl0 YWItPmF0X3BhcmFtcy5tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZSA9IG11bHRpeGFjdF9mcmVl emVfdGFibGVfYWdlOwogCQl0YWItPmF0X3BhcmFtcy5pc193cmFwYXJvdW5kID0gd3JhcGFyb3Vu ZDsKIAkJdGFiLT5hdF9wYXJhbXMubG9nX21pbl9kdXJhdGlvbiA9IGxvZ19taW5fZHVyYXRpb247 CisJCXRhYi0+YXRfcGFyYW1zLnRhYmxlc3BhY2Vfb2lkID0gSW52YWxpZE9pZDsKIAkJdGFiLT5h dF92YWN1dW1fY29zdF9saW1pdCA9IHZhY19jb3N0X2xpbWl0OwogCQl0YWItPmF0X3ZhY3V1bV9j b3N0X2RlbGF5ID0gdmFjX2Nvc3RfZGVsYXk7CiAJCXRhYi0+YXRfcmVsbmFtZSA9IE5VTEw7CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFi LWNvbXBsZXRlLmMKaW5kZXggNGY0NmM0ZjBjNy4uZjVlOTFhN2RkZCAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUu YwpAQCAtMjI4NCw3ICsyMjg0LDkgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQs IGludCBzdGFydCwgaW50IGVuZCkKIAkJICogb25lIHdvcmQsIHNvIHRoZSBhYm92ZSB0ZXN0IGlz IGNvcnJlY3QuCiAJCSAqLwogCQlpZiAoZW5kc193aXRoKHByZXZfd2QsICcoJykgfHwgZW5kc193 aXRoKHByZXZfd2QsICcsJykpCi0JCQlDT01QTEVURV9XSVRIKCJWRVJCT1NFIik7CisJCQlDT01Q TEVURV9XSVRIKCJUQUJMRVNQQUNFIiwgIlZFUkJPU0UiKTsKKwkJZWxzZSBpZiAoVGFpbE1hdGNo ZXMoIlRBQkxFU1BBQ0UiKSkKKwkJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rf b2ZfdGFibGVzcGFjZXMpOwogCX0KIAogLyogQ09NTUVOVCAqLwpAQCAtMzcyMiw5ICszNzI0LDEy IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQp CiAJCWlmIChlbmRzX3dpdGgocHJldl93ZCwgJygnKSB8fCBlbmRzX3dpdGgocHJldl93ZCwgJywn KSkKIAkJCUNPTVBMRVRFX1dJVEgoIkZVTEwiLCAiRlJFRVpFIiwgIkFOQUxZWkUiLCAiVkVSQk9T RSIsCiAJCQkJCQkgICJESVNBQkxFX1BBR0VfU0tJUFBJTkciLCAiU0tJUF9MT0NLRUQiLAotCQkJ CQkJICAiSU5ERVhfQ0xFQU5VUCIsICJUUlVOQ0FURSIsICJQQVJBTExFTCIpOworCQkJCQkJICAi SU5ERVhfQ0xFQU5VUCIsICJUUlVOQ0FURSIsICJQQVJBTExFTCIsCisJCQkJCQkgICJUQUJMRVNQ QUNFIik7CiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJGVUxMfEZSRUVaRXxBTkFMWVpFfFZFUkJP U0V8RElTQUJMRV9QQUdFX1NLSVBQSU5HfFNLSVBfTE9DS0VEfElOREVYX0NMRUFOVVB8VFJVTkNB VEUiKSkKIAkJCUNPTVBMRVRFX1dJVEgoIk9OIiwgIk9GRiIpOworCQllbHNlIGlmIChUYWlsTWF0 Y2hlcygiVEFCTEVTUEFDRSIpKQorCQkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlz dF9vZl90YWJsZXNwYWNlcyk7CiAJfQogCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJWQUNVVU0iKSAm JiBUYWlsTWF0Y2hlcygiKCIpKQogCQkvKiAiVkFDVVVNICgiIHNob3VsZCBiZSBjYXVnaHQgYWJv dmUsIHNvIGFzc3VtZSB3ZSB3YW50IGNvbHVtbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2NsdXN0ZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NsdXN0ZXIuaAppbmRl eCBjNzYxYjk1NzVhLi45NzcyYWExNzYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9jbHVzdGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oCkBAIC0yMSw3 ICsyMSw3IEBACiAKIGV4dGVybiB2b2lkIGNsdXN0ZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDbHVz dGVyU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKTsKIGV4dGVybiB2b2lkIGNsdXN0ZXJfcmVs KE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkLCBpbnQgb3B0aW9ucywKLQkJCQkJCWJvb2wgaXNU b3BMZXZlbCk7CisJCQkJCQlib29sIGlzVG9wTGV2ZWwsIE9pZCB0YWJsZXNwYWNlT2lkKTsKIGV4 dGVybiB2b2lkIGNoZWNrX2luZGV4X2lzX2NsdXN0ZXJhYmxlKFJlbGF0aW9uIE9sZEhlYXAsIE9p ZCBpbmRleE9pZCwKIAkJCQkJCQkJCSAgIGJvb2wgcmVjaGVjaywgTE9DS01PREUgbG9ja21vZGUp OwogZXh0ZXJuIHZvaWQgbWFya19pbmRleF9jbHVzdGVyZWQoUmVsYXRpb24gcmVsLCBPaWQgaW5k ZXhPaWQsIGJvb2wgaXNfaW50ZXJuYWwpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdmFjdXVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAppbmRleCBkOTQ3NWM5 OTg5Li5iNmU5NDRkM2E1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0u aAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApAQCAtMjI5LDYgKzIyOSw4IEBA IHR5cGVkZWYgc3RydWN0IFZhY3V1bVBhcmFtcwogCSAqIGRpc2FibGVkLgogCSAqLwogCWludAkJ CW53b3JrZXJzOworCU9pZAkJCXRhYmxlc3BhY2Vfb2lkOyAvKiB0YWJsZXNwYWNlIHRvIHVzZSBm b3IgcmVsYXRpb25zCisJCQkJCQkJCSAqIHJlYnVpbHQgYnkgVkFDVVVNIEZVTEwgKi8KIH0gVmFj dXVtUGFyYW1zOwogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQv dGFibGVzcGFjZS5zb3VyY2UKaW5kZXggNWQ4YTIyY2ZmYi4uZjQ2ODdmNmJmYiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCkBAIC0xNyw3ICsxNyw3IEBAIEFMVEVS IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBTRVQgKHNvbWVfbm9uZXhpc3RlbnRfcGFyYW1l dGVyID0gdHJ1ZSk7ICAtLSBmCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVT RVQgKHJhbmRvbV9wYWdlX2Nvc3QgPSAyLjApOyAtLSBmYWlsCiBBTFRFUiBUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nvc3QsIGVmZmVjdGl2ZV9pb19jb25j dXJyZW5jeSk7IC0tIG9rCiAKLS0tIGNyZWF0ZSB0YWJsZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBU QUJMRVNQQUNFIGNoYW5nZQorLS0gY3JlYXRlIHRhYmxlIHRvIHRlc3QgUkVJTkRFWCwgQ0xVU1RF UiBhbmQgVkFDVVVNIEZVTEwgd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQogQ1JFQVRFIFRBQkxFIHJl Z3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmlnaW50LCBudW0yIGRvdWJsZSBwcmVjaXNp b24sIG51bTMgZG91YmxlIHByZWNpc2lvbik7CiBJTlNFUlQgSU5UTyByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsIChudW0xLCBudW0yLCBudW0zKQogICBTRUxFQ1Qgcm91bmQocmFuZG9tKCkqMTAw KSwgcmFuZG9tKCksIHJhbmRvbSgpKjQyCkBAIC00NywxMSArNDcsMzIgQEAgUkVJTkRFWCAoVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBDT05DVVJSRU5UTFkgcGdfYW07IC0tIGZh aWwKIFJFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSBJTkRFWCByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsX2lkeDsgLS0gZmFpbAogUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlKSBUQUJMRSBwZ19hbTsgLS0gZmFpbAogCistLSBjaGVjayB0aGF0IGFsbCBpbmRleGVzIG1v dmVkIHRvIG5ldyB0YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVS RSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNu YW1lPSdyZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7CisKKy0tIGNoZWNrIENM VVNURVIgd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorQ0xVU1RFUiAoVEFCTEVTUEFDRSByZWdyZXNz X3RibHNwYWNlKSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFVTSU5HIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF90YmxfaWR4OyAtLSBvaworQ0xVU1RFUiAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlKSBwZ19hdXRoaWQgVVNJTkcgcGdfYXV0aGlkX3JvbG5hbWVfaW5kZXg7IC0tIGZhaWwKK0NM VVNURVIgKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFVT SU5HIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAtLSBmYWlsCisKIC0tIGNoZWNrIHRo YXQgYWxsIHJlbGF0aW9ucyBtb3ZlZCB0byBuZXcgdGFibGVzcGFjZQogU0VMRUNUIHJlbG5hbWUg RlJPTSBwZ19jbGFzcwogV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3Rh Ymxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpCiBPUkRFUiBCWSByZWxu YW1lOwogCistLSBjaGVjayBWQUNVVU0gd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorVkFDVVVNIChG VUxMLCBBTkFMWVNFLCBGUkVFWkUsIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgcmVncmVzc190Ymxz cGFjZV90ZXN0X3RibDsgLS0gb2sKK1ZBQ1VVTSAoRlVMTCwgVEFCTEVTUEFDRSBwZ19kZWZhdWx0 KSBwZ19hdXRoaWQ7IC0tIHNraXAgd2l0aCB3YXJuaW5nCitWQUNVVU0gKEFOQUxZU0UsIFRBQkxF U1BBQ0UgcGdfZGVmYXVsdCk7IC0tIGZhaWwKK1ZBQ1VVTSAoRlVMTCwgVEFCTEVTUEFDRSBwZ19n bG9iYWwpIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIGZhaWwKKworLS0gY2hlY2sgdGhh dCBhbGwgdGFibGVzIG1vdmVkIGJhY2sgdG8gcGdfZGVmYXVsdAorU0VMRUNUIHJlbG5hbWUgRlJP TSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxl c3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpCitPUkRFUiBCWSByZWxuYW1l OworCiAtLSBtb3ZlIGluZGV4ZXMgYmFjayB0byBwZ19kZWZhdWx0IHRhYmxlc3BhY2UKIFJFSU5E RVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgQ09OQ1VSUkVOVExZIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF90Ymw7IC0tIG9rCiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0 cHV0L3RhYmxlc3BhY2Uuc291cmNlIGIvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFj ZS5zb3VyY2UKaW5kZXggMTE2OWYwMzE4Yi4uZTBhNWM0OGZlOSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UKQEAgLTIwLDcgKzIwLDcgQEAgRVJST1I6ICB1bnJl Y29nbml6ZWQgcGFyYW1ldGVyICJzb21lX25vbmV4aXN0ZW50X3BhcmFtZXRlciIKIEFMVEVSIFRB QkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCA9IDIuMCk7 IC0tIGZhaWwKIEVSUk9SOiAgUkVTRVQgbXVzdCBub3QgaW5jbHVkZSB2YWx1ZXMgZm9yIHBhcmFt ZXRlcnMKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3Bh Z2VfY29zdCwgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5KTsgLS0gb2sKLS0tIGNyZWF0ZSB0YWJs ZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorLS0gY3JlYXRlIHRhYmxl IHRvIHRlc3QgUkVJTkRFWCwgQ0xVU1RFUiBhbmQgVkFDVVVNIEZVTEwgd2l0aCBUQUJMRVNQQUNF IGNoYW5nZQogQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmln aW50LCBudW0yIGRvdWJsZSBwcmVjaXNpb24sIG51bTMgZG91YmxlIHByZWNpc2lvbik7CiBJTlNF UlQgSU5UTyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xLCBudW0yLCBudW0zKQogICBT RUxFQ1Qgcm91bmQocmFuZG9tKCkqMTAwKSwgcmFuZG9tKCksIHJhbmRvbSgpKjQyCkBAIC02MSw5 ICs2MSw0NCBAQCBSRUlOREVYIChUQUJMRVNQQUNFIHBnX2dsb2JhbCkgSU5ERVggcmVncmVzc190 YmxzcGFjZV90ZXN0X3RibF9pZHg7IC0tIGZhaWwKIEVSUk9SOiAgY2Fubm90IG1vdmUgbm9uLXNo YXJlZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlICJwZ19nbG9iYWwiCiBSRUlOREVYIChUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHBnX2FtOyAtLSBmYWlsCiBFUlJPUjogIHBlcm1p c3Npb24gZGVuaWVkOiAicGdfYW1fbmFtZV9pbmRleCIgaXMgYSBzeXN0ZW0gY2F0YWxvZworLS0g Y2hlY2sgdGhhdCBhbGwgaW5kZXhlcyBtb3ZlZCB0byBuZXcgdGFibGVzcGFjZQorU0VMRUNUIHJl bG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9N IHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpCitPUkRFUiBC WSByZWxuYW1lOworICAgICAgICAgICAgcmVsbmFtZSAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4CisoMSBy b3cpCisKKy0tIGNoZWNrIENMVVNURVIgd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorQ0xVU1RFUiAo VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIFVT SU5HIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAtLSBvaworQ0xVU1RFUiAoVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlKSBwZ19hdXRoaWQgVVNJTkcgcGdfYXV0aGlkX3JvbG5hbWVf aW5kZXg7IC0tIGZhaWwKK0VSUk9SOiAgY2Fubm90IGNsdXN0ZXIgYSBzaGFyZWQgY2F0YWxvZwor Q0xVU1RFUiAoVEFCTEVTUEFDRSBwZ19nbG9iYWwpIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymwg VVNJTkcgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHg7IC0tIGZhaWwKK0VSUk9SOiAgY2Fu bm90IG1vdmUgbm9uLXNoYXJlZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlICJwZ19nbG9iYWwiCiAt LSBjaGVjayB0aGF0IGFsbCByZWxhdGlvbnMgbW92ZWQgdG8gbmV3IHRhYmxlc3BhY2UKIFNFTEVD VCByZWxuYW1lIEZST00gcGdfY2xhc3MKIFdIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQg RlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKQorT1JE RVIgQlkgcmVsbmFtZTsKKyAgICAgICAgICAgIHJlbG5hbWUgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsCisgcmVn cmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHgKKygyIHJvd3MpCisKKy0tIGNoZWNrIFZBQ1VVTSB3 aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitWQUNVVU0gKEZVTEwsIEFOQUxZU0UsIEZSRUVaRSwgVEFC TEVTUEFDRSBwZ19kZWZhdWx0KSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOyAtLSBvaworVkFD VVVNIChGVUxMLCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIHBnX2F1dGhpZDsgLS0gc2tpcCB3aXRo IHdhcm5pbmcKK1dBUk5JTkc6ICBza2lwcGluZyB0YWJsZXNwYWNlIGNoYW5nZSBvZiAicGdfYXV0 aGlkIgorREVUQUlMOiAgQ2Fubm90IG1vdmUgc3lzdGVtIHJlbGF0aW9uLCBvbmx5IFZBQ1VVTSBp cyBwZXJmb3JtZWQuCitWQUNVVU0gKEFOQUxZU0UsIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCk7IC0t IGZhaWwKK0VSUk9SOiAgaW5jb21wYXRpYmxlIFRBQkxFU1BBQ0Ugb3B0aW9uCitERVRBSUw6ICBZ b3UgY2FuIG9ubHkgdXNlIFRBQkxFU1BBQ0Ugd2l0aCBWQUNVVU0gRlVMTC4KK1ZBQ1VVTSAoRlVM TCwgVEFCTEVTUEFDRSBwZ19nbG9iYWwpIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIGZh aWwKK0VSUk9SOiAgY2Fubm90IG1vdmUgbm9uLXNoYXJlZCByZWxhdGlvbiB0byB0YWJsZXNwYWNl ICJwZ19nbG9iYWwiCistLSBjaGVjayB0aGF0IGFsbCB0YWJsZXMgbW92ZWQgYmFjayB0byBwZ19k ZWZhdWx0CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNl PShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3Ri bHNwYWNlJykKIE9SREVSIEJZIHJlbG5hbWU7CiAgICAgICAgICAgICByZWxuYW1lICAgICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIAoyLjE5LjEKCg== --=_cc5f51042d13cebfefdd7061a3a1222c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v28-0004-Refactor-and-reuse-set_rel_tablespace.patch Content-Disposition: attachment; filename=v28-0004-Refactor-and-reuse-set_rel_tablespace.patch; size=6722 RnJvbSA4MDk2MGY2YmMwNTNiZTRjNmI3OGY2Y2RjZjViNjA3NzQwZDg4NjVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjMgU2VwIDIwMjAgMTg6MjE6MTYgKzAzMDAKU3ViamVjdDog W1BBVENIIHYyOCA0LzZdIFJlZmFjdG9yIGFuZCByZXVzZSBzZXRfcmVsX3RhYmxlc3BhY2UoKQoK LS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICB8IDc0ICsrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyB8IDM5 ICstLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAgICB8ICAy ICsKIDMgZmlsZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jCmluZGV4IGJlZTY4YWJiZDIuLjgyNjk2ZWRkNDEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMKQEAgLTM0MzcsNyArMzQzNyw2IEBAIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wg c2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwKIAlSZWxhdGlvbglpUmVs LAogCQkJCWhlYXBSZWxhdGlvbjsKIAlPaWQJCQloZWFwSWQ7Ci0JT2lkCQkJb2xkVGFibGVzcGFj ZU9pZDsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAJdm9sYXRpbGUgYm9vbCBza2lwcGVkX2Nv bnN0cmFpbnQgPSBmYWxzZTsKIAlQR1JVc2FnZQlydTA7CkBAIC0zNTUzLDQxICszNTUyLDE3IEBA IHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywg Y2hhciBwZXJzaXN0ZW5jZSwKIAkJdGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7CiAKIAkvKgot CSAqIFNldCB0aGUgbmV3IHRhYmxlc3BhY2UgZm9yIHRoZSByZWxhdGlvbi4gIERvIHRoYXQgb25s eSBpbiB0aGUKLQkgKiBjYXNlIHdoZXJlIHRoZSByZWluZGV4IGNhbGxlciB3aXNoZXMgdG8gZW5m b3JjZSBhIG5ldyB0YWJsZXNwYWNlLgorCSAqIFNldCB0aGUgbmV3IHRhYmxlc3BhY2UgZm9yIHRo ZSByZWxhdGlvbiBpZiByZXF1ZXN0ZWQuCiAJICovCi0Jb2xkVGFibGVzcGFjZU9pZCA9IGlSZWwt PnJkX3JlbC0+cmVsdGFibGVzcGFjZTsKIAlpZiAoc2V0X3RhYmxlc3BhY2UgJiYKLQkJKHRhYmxl c3BhY2VPaWQgIT0gb2xkVGFibGVzcGFjZU9pZCB8fAotCQkodGFibGVzcGFjZU9pZCA9PSBNeURh dGFiYXNlVGFibGVTcGFjZSAmJiBPaWRJc1ZhbGlkKG9sZFRhYmxlc3BhY2VPaWQpKSkpCisJCXNl dF9yZWxfdGFibGVzcGFjZShpbmRleElkLCB0YWJsZXNwYWNlT2lkKSkKIAl7Ci0JCVJlbGF0aW9u CQlwZ19jbGFzczsKLQkJRm9ybV9wZ19jbGFzcwlyZF9yZWw7Ci0JCUhlYXBUdXBsZQkJdHVwbGU7 Ci0KLQkJLyogRmlyc3QgZ2V0IGEgbW9kaWZpYWJsZSBjb3B5IG9mIHRoZSByZWxhdGlvbidzIHBn X2NsYXNzIHJvdyAqLwotCQlwZ19jbGFzcyA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklk LCBSb3dFeGNsdXNpdmVMb2NrKTsKLQotCQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoUkVM T0lELCBPYmplY3RJZEdldERhdHVtKGluZGV4SWQpKTsKLQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cGxlKSkKLQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlv biAldSIsIGluZGV4SWQpOwotCQlyZF9yZWwgPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1 cGxlKTsKLQogCQkvKgogCQkgKiBNYXJrIHRoZSByZWxhdGlvbiBhcyByZWFkeSB0byBiZSBkcm9w cGVkIGF0IHRyYW5zYWN0aW9uIGNvbW1pdCwKIAkJICogYmVmb3JlIG1ha2luZyB2aXNpYmxlIHRo ZSBuZXcgdGFibGVzcGFjZSBjaGFuZ2Ugc28gYXMgdGhpcyB3b24ndAogCQkgKiBtaXNzIHRoaW5n cy4KIAkJICovCiAJCVJlbGF0aW9uRHJvcFN0b3JhZ2UoaVJlbCk7Ci0KLQkJLyogVXBkYXRlIHRo ZSBwZ19jbGFzcyByb3cgKi8KLQkJcmRfcmVsLT5yZWx0YWJsZXNwYWNlID0gdGFibGVzcGFjZU9p ZDsKLQkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2NsYXNzLCAmdHVwbGUtPnRfc2VsZiwgdHVwbGUp OwotCi0JCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKLQotCQl0YWJsZV9jbG9zZShwZ19jbGFzcywg Um93RXhjbHVzaXZlTG9jayk7Ci0KIAkJUmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbm9kZShpUmVs KTsKIAogCQkvKiBNYWtlIHN1cmUgdGhlIHJlbHRhYmxlc3BhY2UgY2hhbmdlIGlzIHZpc2libGUg Ki8KQEAgLTM4OTAsNiArMzg2NSw1MSBAQCByZWluZGV4X3JlbGF0aW9uKE9pZCByZWxpZCwgaW50 IGZsYWdzLCBpbnQgb3B0aW9ucywgT2lkIHRhYmxlc3BhY2VPaWQpCiAJcmV0dXJuIHJlc3VsdDsK IH0KIAorLyoKKyAqIHNldF9yZWxfdGFibGVzcGFjZSAtIG1vZGlmeSByZWxhdGlvbiB0YWJsZXNw YWNlIGluIHRoZSBwZ19jbGFzcyBlbnRyeS4KKyAqCisgKiAncmVsb2lkJyBpcyBhbiBPaWQgb2Yg cmVsYXRpb24gdG8gYmUgbW9kaWZpZWQuCisgKiAndGFibGVzcGFjZU9pZCcgaXMgYW4gT2lkIG9m IG5ldyB0YWJsZXNwYWNlLgorICoKKyAqIENhdGFsb2cgbW9kaWZpY2F0aW9uIGlzIGRvbmUgb25s eSBpZiB0YWJsZXNwYWNlT2lkIGlzIGRpZmZlcmVudCBmcm9tCisgKiB0aGUgY3VycmVudGx5IHNl dC4gIFJldHVybmVkIGJvb2wgdmFsdWUgaXMgaW5kaWNhdGluZyB3aGV0aGVyIGFueSBjaGFuZ2Vz CisgKiB3ZXJlIG1hZGUgb3Igbm90LgorICovCitib29sCitzZXRfcmVsX3RhYmxlc3BhY2UoT2lk IHJlbG9pZCwgT2lkIHRhYmxlc3BhY2VPaWQpCit7CisJUmVsYXRpb24JCXBnX2NsYXNzOworCUhl YXBUdXBsZQkJdHVwbGU7CisJRm9ybV9wZ19jbGFzcwlyZF9yZWw7CisJYm9vbAkJCWNoYW5nZWQg PSBmYWxzZTsKKwlPaWQJCQlvbGRUYWJsZXNwYWNlT2lkOworCisJLyogR2V0IGEgbW9kaWZpYWJs ZSBjb3B5IG9mIHRoZSByZWxhdGlvbidzIHBnX2NsYXNzIHJvdy4gKi8KKwlwZ19jbGFzcyA9IHRh YmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXR1cGxl ID0gU2VhcmNoU3lzQ2FjaGVDb3B5MShSRUxPSUQsIE9iamVjdElkR2V0RGF0dW0ocmVsb2lkKSk7 CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwgcmVsb2lkKTsKKwlyZF9yZWwgPSAoRm9ybV9w Z19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsKKworCS8qIE5vIHdvcmsgaWYgbm8gY2hhbmdlIGlu IHRhYmxlc3BhY2UuICovCisJb2xkVGFibGVzcGFjZU9pZCA9IHJkX3JlbC0+cmVsdGFibGVzcGFj ZTsKKwlpZiAodGFibGVzcGFjZU9pZCAhPSBvbGRUYWJsZXNwYWNlT2lkIHx8CisJCSh0YWJsZXNw YWNlT2lkID09IE15RGF0YWJhc2VUYWJsZVNwYWNlICYmIE9pZElzVmFsaWQob2xkVGFibGVzcGFj ZU9pZCkpKQorCXsKKwkJLyogVXBkYXRlIHRoZSBwZ19jbGFzcyByb3cuICovCisJCXJkX3JlbC0+ cmVsdGFibGVzcGFjZSA9ICh0YWJsZXNwYWNlT2lkID09IE15RGF0YWJhc2VUYWJsZVNwYWNlKSA/ CisJCQlJbnZhbGlkT2lkIDogdGFibGVzcGFjZU9pZDsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBn X2NsYXNzLCAmdHVwbGUtPnRfc2VsZiwgdHVwbGUpOworCisJCWNoYW5nZWQgPSB0cnVlOworCX0K KworCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKKwl0YWJsZV9jbG9zZShwZ19jbGFzcywgUm93RXhj bHVzaXZlTG9jayk7CisKKwlyZXR1cm4gY2hhbmdlZDsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCVN5 c3RlbSBpbmRleCByZWluZGV4aW5nIHN1cHBvcnQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5k ZXggMTVhODE5YjNkNC4uMWRmOGNhOWEwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAg LTI4MzQsNDEgKzI4MzQsNiBAQCByZWluZGV4X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIAkJ CQkgICBlcnJpbmZvLT5yZWxuYW1lc3BhY2UsIGVycmluZm8tPnJlbG5hbWUpOwogfQogCi0vKgot ICogVGhpcyBpcyBtb3N0bHkgZHVwbGljYXRpbmcgQVRFeGVjU2V0VGFibGVTcGFjZU5vU3RvcmFn ZSwKLSAqIHdoaWNoIHNob3VsZCBtYXliZSBiZSBmYWN0b3JlZCBvdXQgdG8gYSBsaWJyYXJ5IGZ1 bmN0aW9uLgotICovCi1zdGF0aWMgdm9pZAotc2V0X3JlbF90YWJsZXNwYWNlKE9pZCByZWxvaWQs IE9pZCB0YWJsZXNwYWNlT2lkKQotewotCVJlbGF0aW9uCQlwZ19jbGFzczsKLQlIZWFwVHVwbGUJ CXR1cGxlOwotCUZvcm1fcGdfY2xhc3MJcmRfcmVsOwotCU9pZAkJCW9sZFRhYmxlc3BhY2VPaWQ7 Ci0KLQkvKiBHZXQgYSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIHJlbGF0aW9uJ3MgcGdfY2xhc3Mg cm93ICovCi0JcGdfY2xhc3MgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7Ci0KLQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoUkVMT0lELCBPYmpl Y3RJZEdldERhdHVtKHJlbG9pZCkpOwotCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCi0J CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHJlbG9p ZCk7Ci0JcmRfcmVsID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7Ci0KLQkvKiBO byB3b3JrIGlmIG5vIGNoYW5nZSBpbiB0YWJsZXNwYWNlLiAqLwotCW9sZFRhYmxlc3BhY2VPaWQg PSByZF9yZWwtPnJlbHRhYmxlc3BhY2U7Ci0JaWYgKHRhYmxlc3BhY2VPaWQgIT0gb2xkVGFibGVz cGFjZU9pZCB8fAotCQkodGFibGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVTcGFjZSAmJiBP aWRJc1ZhbGlkKG9sZFRhYmxlc3BhY2VPaWQpKSkKLQl7Ci0JCS8qIFVwZGF0ZSB0aGUgcGdfY2xh c3Mgcm93ICovCi0JCXJkX3JlbC0+cmVsdGFibGVzcGFjZSA9ICh0YWJsZXNwYWNlT2lkID09IE15 RGF0YWJhc2VUYWJsZVNwYWNlKSA/Ci0JCQlJbnZhbGlkT2lkIDogdGFibGVzcGFjZU9pZDsKLQkJ Q2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2NsYXNzLCAmdHVwbGUtPnRfc2VsZiwgdHVwbGUpOwotCX0K LQotCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKLQl0YWJsZV9jbG9zZShwZ19jbGFzcywgUm93RXhj bHVzaXZlTG9jayk7Ci19Ci0KIC8qCiAgKiBSZWluZGV4UGFydGl0aW9ucwogICoKQEAgLTI5NDIs NyArMjkwNyw3IEBAIFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgaW50IG9wdGlvbnMsIGJv b2wgaXNUb3BMZXZlbCwgY2hhciAqdGFibGVzcGFjZSkKIAkJICogcmVsYXRpb25zLgogCQkgKi8K IAkJaWYgKHBhcnRraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCi0JCQlzZXRfcmVs X3RhYmxlc3BhY2UocGFydG9pZCwgdGFibGVzcGFjZU9pZCk7CisJCQkodm9pZCkgc2V0X3JlbF90 YWJsZXNwYWNlKHBhcnRvaWQsIHRhYmxlc3BhY2VPaWQpOwogCQllbHNlIGlmIChwYXJ0a2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQogCQl7CiAJCQlSZWxhdGlvbiByZWwgPSB0YWJs ZV9vcGVuKHBhcnRvaWQsIFNoYXJlTG9jayk7CkBAIC0yOTUzLDcgKzI5MTgsNyBAQCBSZWluZGV4 UGFydGl0aW9ucyhPaWQgcmVsaWQsIGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2ZWwsIGNoYXIg KnRhYmxlc3BhY2UpCiAJCQlmb3JlYWNoIChsYywgaW5kZXhJZHMpCiAJCQl7CiAJCQkJT2lkIGlu ZGV4aWQgPSBsZmlyc3Rfb2lkKGxjKTsKLQkJCQlzZXRfcmVsX3RhYmxlc3BhY2UoaW5kZXhpZCwg dGFibGVzcGFjZU9pZCk7CisJCQkJKHZvaWQpIHNldF9yZWxfdGFibGVzcGFjZShpbmRleGlkLCB0 YWJsZXNwYWNlT2lkKTsKIAkJCX0KIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggNmE2NjdkZjM1 NS4uYTc3NDViYTgxNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMTM3LDYgKzEzNyw4IEBAIGV4dGVy biBPaWQJSW5kZXhHZXRSZWxhdGlvbihPaWQgaW5kZXhJZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4 dGVybiB2b2lkIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50 X2NoZWNrcywKIAkJCQkJCSAgY2hhciByZWxwZXJzaXN0ZW5jZSwgaW50IG9wdGlvbnMsIE9pZCB0 YWJsZXNwYWNlT2lkKTsKIAorZXh0ZXJuIGJvb2wgc2V0X3JlbF90YWJsZXNwYWNlKE9pZCByZWxv aWQsIE9pZCB0YWJsZXNwYWNlT2lkKTsKKwogLyogRmxhZyBiaXRzIGZvciByZWluZGV4X3JlbGF0 aW9uKCk6ICovCiAjZGVmaW5lIFJFSU5ERVhfUkVMX1BST0NFU1NfVE9BU1QJCQkweDAxCiAjZGVm aW5lIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRQkJMHgwMgotLSAKMi4xOS4xCgo= --=_cc5f51042d13cebfefdd7061a3a1222c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v28-0003-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v28-0003-Allow-REINDEX-to-change-tablespace.patch; size=37647 RnJvbSBiMmRmZDUxOTk0YzZiZjY1YjRhMTdhOGE4NDI4MDM4NWQxNWI3MjIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMjMgTWFyIDIwMjAgMjE6MTA6MjkgKzAzMDAKU3ViamVjdDog W1BBVENIIHYyOCAzLzZdIEFsbG93IFJFSU5ERVggdG8gY2hhbmdlIHRhYmxlc3BhY2UKClJFSU5E RVggYWxyZWFkeSBkb2VzIGZ1bGwgcmVsYXRpb24gcmV3cml0ZSwgdGhpcyBwYXRjaCBhZGRzIGEK cG9zc2liaWxpdHkgdG8gc3BlY2lmeSBhIG5ldyB0YWJsZXNwYWNlIHdoZXJlIG5ldyByZWxmaWxl bm9kZQp3aWxsIGJlIGNyZWF0ZWQuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwg ICAgICAgICAgICAgfCAgMjIgKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAg ICAgICAgICAgfCAxMDMgKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jbHVz dGVyLmMgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMgICAgICAgICAgfCAxNTIgKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvdXRp bGl0eS5jICAgICAgICAgICAgICAgIHwgIDE3ICsrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5jICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAg ICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCAgICAg ICAgICAgICB8ICAgNiArLQogc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJj ZSAgfCAgNTMgKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291 cmNlIHwgMTAyICsrKysrKysrKysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgNDI1IGluc2VydGlv bnMoKyksIDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmVp bmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXggNjJiYjZlOWQ1 NS4uM2UxN2NiZTE5YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTI2LDYgKzI2LDcgQEAgUkVJ TkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFi bGU+IFssIC4uLl0gKSBdIHsgSU4KIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IGNhbiBiZSBvbmUgb2Y6PC9waHJhc2U+CiAK ICAgICBWRVJCT1NFIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3Jl cGxhY2VhYmxlPiBdCisgICAgVEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmV3X3RhYmxlc3BhY2U8L3JlcGxhY2VhYmxlPgogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9w c2lzZGl2PgogCkBAIC0xNjQsNiArMTY1LDE5IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElOCiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxsaXRlcmFsPlRBQkxFU1BBQ0U8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIHNwZWNpZmllcyB0aGF0IGluZGV4ZXMgd2ls bCBiZSByZWJ1aWx0IG9uIGEgbmV3IHRhYmxlc3BhY2UuCisgICAgICBDYW5ub3QgYmUgdXNlZCB3 aXRoICJtYXBwZWQiIHJlbGF0aW9ucy4gSWYgPGxpdGVyYWw+U0NIRU1BPC9saXRlcmFsPiwKKyAg ICAgIDxsaXRlcmFsPkRBVEFCQVNFPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5TWVNURU08L2xpdGVy YWw+IGlzIHNwZWNpZmllZCwgdGhlbgorICAgICAgYWxsIHVuc3VpdGFibGUgcmVsYXRpb25zIHdp bGwgYmUgc2tpcHBlZCBhbmQgYSBzaW5nbGUgPGxpdGVyYWw+V0FSTklORzwvbGl0ZXJhbD4KKyAg ICAgIHdpbGwgYmUgZ2VuZXJhdGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFs PlZFUkJPU0U8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTIwMCw2ICsyMTQs MTQgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwv cmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSB0YWJsZXNwYWNlIHdoZXJlIGluZGV4 ZXMgd2lsbCBiZSByZWJ1aWx0LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNlY3QxPgogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKaW5kZXggMDk3NGYzZTIzYS4uYmVlNjhhYmJkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt NTYsNiArNTYsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNs dWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90 cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKQEAgLTEyMzIsOSArMTIzMywxMyBAQCBpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVh cFJlbGF0aW9uLAogICogQ3JlYXRlIGNvbmN1cnJlbnRseSBhbiBpbmRleCBiYXNlZCBvbiB0aGUg ZGVmaW5pdGlvbiBvZiB0aGUgb25lIHByb3ZpZGVkIGJ5CiAgKiBjYWxsZXIuICBUaGUgaW5kZXgg aXMgaW5zZXJ0ZWQgaW50byBjYXRhbG9ncyBhbmQgbmVlZHMgdG8gYmUgYnVpbHQgbGF0ZXIKICAq IG9uLiAgVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGNvbmN1cnJlbnQgcmVpbmRleCBwcm9jZXNzaW5n LgorICoKKyAqICJ0YWJsZXNwYWNlT2lkIiBpcyB0aGUgbmV3IHRhYmxlc3BhY2UgdG8gdXNlIGZv ciB0aGlzIGluZGV4LiAgSWYKKyAqIEludmFsaWRPaWQsIHVzZSB0aGUgdGFibGVzcGFjZSBpbi11 c2UgaW5zdGVhZC4KICAqLwogT2lkCi1pbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVs YXRpb24gaGVhcFJlbGF0aW9uLCBPaWQgb2xkSW5kZXhJZCwgY29uc3QgY2hhciAqbmV3TmFtZSkK K2luZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9p ZCBvbGRJbmRleElkLAorCQkJCQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lkLCBjb25zdCBjaGFyICpu ZXdOYW1lKQogewogCVJlbGF0aW9uCWluZGV4UmVsYXRpb247CiAJSW5kZXhJbmZvICAqb2xkSW5m bywKQEAgLTEzNjQsNyArMTM2OSw4IEBAIGluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLCBjb25zdCBjaGFyCiAJCQkJCQkJ ICBuZXdJbmZvLAogCQkJCQkJCSAgaW5kZXhDb2xOYW1lcywKIAkJCQkJCQkgIGluZGV4UmVsYXRp b24tPnJkX3JlbC0+cmVsYW0sCi0JCQkJCQkJICBpbmRleFJlbGF0aW9uLT5yZF9yZWwtPnJlbHRh Ymxlc3BhY2UsCisJCQkJCQkJICBPaWRJc1ZhbGlkKHRhYmxlc3BhY2VPaWQpID8KKwkJCQkJCQkJ dGFibGVzcGFjZU9pZCA6IGluZGV4UmVsYXRpb24tPnJkX3JlbC0+cmVsdGFibGVzcGFjZSwKIAkJ CQkJCQkgIGluZGV4UmVsYXRpb24tPnJkX2luZGNvbGxhdGlvbiwKIAkJCQkJCQkgIGluZGNsYXNz LT52YWx1ZXMsCiAJCQkJCQkJICBpbmRjb2xvcHRpb25zLT52YWx1ZXMsCkBAIC0zNDIxLDE4ICsz NDI3LDIyIEBAIEluZGV4R2V0UmVsYXRpb24oT2lkIGluZGV4SWQsIGJvb2wgbWlzc2luZ19vaykK IAogLyoKICAqIHJlaW5kZXhfaW5kZXggLSBUaGlzIHJvdXRpbmUgaXMgdXNlZCB0byByZWNyZWF0 ZSBhIHNpbmdsZSBpbmRleAorICoKKyAqIFNlZSBjb21tZW50cyBvZiByZWluZGV4X3JlbGF0aW9u KCkgZm9yIGRldGFpbHMgYWJvdXQgInRhYmxlc3BhY2VPaWQiLgogICovCiB2b2lkCiByZWluZGV4 X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVy c2lzdGVuY2UsCi0JCQkgIGludCBvcHRpb25zKQorCQkJICBpbnQgb3B0aW9ucywgT2lkIHRhYmxl c3BhY2VPaWQpCiB7CiAJUmVsYXRpb24JaVJlbCwKIAkJCQloZWFwUmVsYXRpb247CiAJT2lkCQkJ aGVhcElkOworCU9pZAkJCW9sZFRhYmxlc3BhY2VPaWQ7CiAJSW5kZXhJbmZvICAqaW5kZXhJbmZv OwogCXZvbGF0aWxlIGJvb2wgc2tpcHBlZF9jb25zdHJhaW50ID0gZmFsc2U7CiAJUEdSVXNhZ2UJ cnUwOwogCWJvb2wJCXByb2dyZXNzID0gKG9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9QUk9H UkVTUykgIT0gMDsKKwlib29sCQlzZXRfdGFibGVzcGFjZSA9IE9pZElzVmFsaWQodGFibGVzcGFj ZU9pZCk7CiAKIAlwZ19ydXNhZ2VfaW5pdCgmcnUwKTsKIApAQCAtMzQ4NCw2ICszNDk0LDM1IEBA IHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywg Y2hhciBwZXJzaXN0ZW5jZSwKIAkJCSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1l c3BhY2UoaVJlbCkpLAogCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlSZWwpKTsKIAorCS8q CisJICogV2UgZG9uJ3Qgc3VwcG9ydCBtb3Zpbmcgc3lzdGVtIHJlbGF0aW9ucyBpbnRvIGRpZmZl cmVudCB0YWJsZXNwYWNlcworCSAqIHVubGVzcyBhbGxvd19zeXN0ZW1fdGFibGVfbW9kcz0xLgor CSAqLworCWlmIChzZXRfdGFibGVzcGFjZSAmJgorCQkhYWxsb3dTeXN0ZW1UYWJsZU1vZHMgJiYg SXNTeXN0ZW1SZWxhdGlvbihpUmVsKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAorCQkJCSBlcnJtc2coInBlcm1pc3Npb24g ZGVuaWVkOiBcIiVzXCIgaXMgYSBzeXN0ZW0gY2F0YWxvZyIsCisJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShpUmVsKSkpKTsKKworCS8qCisJICogV2UgY2Fubm90IHN1cHBvcnQgbW92aW5n IG1hcHBlZCByZWxhdGlvbnMgaW50byBkaWZmZXJlbnQgdGFibGVzcGFjZXMuCisJICogKEluIHBh cnRpY3VsYXIgdGhpcyBlbGltaW5hdGVzIGFsbCBzaGFyZWQgY2F0YWxvZ3MuKQorCSAqLworCWlm IChzZXRfdGFibGVzcGFjZSAmJiBSZWxhdGlvbklzTWFwcGVkKGlSZWwpKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkg ZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgbWFwcGVkIHJlbGF0aW9uIFwiJXNc IiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShpUmVsKSkpKTsKKworCS8qIEl0J3Mg bm90IGEgc2hhcmVkIGNhdGFsb2csIHNvIHJlZnVzZSB0byBtb3ZlIGl0IHRvIHNoYXJlZCB0YWJs ZXNwYWNlICovCisJaWYgKHRhYmxlc3BhY2VPaWQgPT0gR0xPQkFMVEFCTEVTUEFDRV9PSUQpCisJ CWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCSBlcnJtc2coImNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVsYXRpb24gdG8gdGFi bGVzcGFjZSBcIiVzXCIiLAorCQkJCQkgZ2V0X3RhYmxlc3BhY2VfbmFtZSh0YWJsZXNwYWNlT2lk KSkpKTsKKworCiAJLyoKIAkgKiBEb24ndCBhbGxvdyByZWluZGV4IG9uIHRlbXAgdGFibGVzIG9m IG90aGVyIGJhY2tlbmRzIC4uLiB0aGVpciBsb2NhbAogCSAqIGJ1ZmZlciBtYW5hZ2VyIGlzIG5v dCBnb2luZyB0byBjb3BlLgpAQCAtMzUxMCw2ICszNTQ5LDUxIEBAIHJlaW5kZXhfaW5kZXgoT2lk IGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwK IAkgKi8KIAlDaGVja1RhYmxlTm90SW5Vc2UoaVJlbCwgIlJFSU5ERVggSU5ERVgiKTsKIAorCWlm ICh0YWJsZXNwYWNlT2lkID09IE15RGF0YWJhc2VUYWJsZVNwYWNlKQorCQl0YWJsZXNwYWNlT2lk ID0gSW52YWxpZE9pZDsKKworCS8qCisJICogU2V0IHRoZSBuZXcgdGFibGVzcGFjZSBmb3IgdGhl IHJlbGF0aW9uLiAgRG8gdGhhdCBvbmx5IGluIHRoZQorCSAqIGNhc2Ugd2hlcmUgdGhlIHJlaW5k ZXggY2FsbGVyIHdpc2hlcyB0byBlbmZvcmNlIGEgbmV3IHRhYmxlc3BhY2UuCisJICovCisJb2xk VGFibGVzcGFjZU9pZCA9IGlSZWwtPnJkX3JlbC0+cmVsdGFibGVzcGFjZTsKKwlpZiAoc2V0X3Rh Ymxlc3BhY2UgJiYKKwkJKHRhYmxlc3BhY2VPaWQgIT0gb2xkVGFibGVzcGFjZU9pZCB8fAorCQko dGFibGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVTcGFjZSAmJiBPaWRJc1ZhbGlkKG9sZFRh Ymxlc3BhY2VPaWQpKSkpCisJeworCQlSZWxhdGlvbgkJcGdfY2xhc3M7CisJCUZvcm1fcGdfY2xh c3MJcmRfcmVsOworCQlIZWFwVHVwbGUJCXR1cGxlOworCisJCS8qIEZpcnN0IGdldCBhIG1vZGlm aWFibGUgY29weSBvZiB0aGUgcmVsYXRpb24ncyBwZ19jbGFzcyByb3cgKi8KKwkJcGdfY2xhc3Mg PSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkJ dHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShpbmRl eElkKSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAi Y2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVsYXRpb24gJXUiLCBpbmRleElkKTsKKwkJcmRfcmVs ID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJLyoKKwkJICogTWFyayB0 aGUgcmVsYXRpb24gYXMgcmVhZHkgdG8gYmUgZHJvcHBlZCBhdCB0cmFuc2FjdGlvbiBjb21taXQs CisJCSAqIGJlZm9yZSBtYWtpbmcgdmlzaWJsZSB0aGUgbmV3IHRhYmxlc3BhY2UgY2hhbmdlIHNv IGFzIHRoaXMgd29uJ3QKKwkJICogbWlzcyB0aGluZ3MuCisJCSAqLworCQlSZWxhdGlvbkRyb3BT dG9yYWdlKGlSZWwpOworCisJCS8qIFVwZGF0ZSB0aGUgcGdfY2xhc3Mgcm93ICovCisJCXJkX3Jl bC0+cmVsdGFibGVzcGFjZSA9IHRhYmxlc3BhY2VPaWQ7CisJCUNhdGFsb2dUdXBsZVVwZGF0ZShw Z19jbGFzcywgJnR1cGxlLT50X3NlbGYsIHR1cGxlKTsKKworCQloZWFwX2ZyZWV0dXBsZSh0dXBs ZSk7CisKKwkJdGFibGVfY2xvc2UocGdfY2xhc3MsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJCVJl bGF0aW9uQXNzdW1lTmV3UmVsZmlsZW5vZGUoaVJlbCk7CisKKwkJLyogTWFrZSBzdXJlIHRoZSBy ZWx0YWJsZXNwYWNlIGNoYW5nZSBpcyB2aXNpYmxlICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVt ZW50KCk7CisJfQorCiAJLyoKIAkgKiBBbGwgcHJlZGljYXRlIGxvY2tzIG9uIHRoZSBpbmRleCBh cmUgYWJvdXQgdG8gYmUgbWFkZSBpbnZhbGlkLiBQcm9tb3RlCiAJICogdGhlbSB0byByZWxhdGlv biBsb2NrcyBvbiB0aGUgaGVhcC4KQEAgLTM2NDEsNiArMzcyNSw5IEBAIHJlaW5kZXhfaW5kZXgo T2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5j ZSwKICAqIHJlaW5kZXhfcmVsYXRpb24gLSBUaGlzIHJvdXRpbmUgaXMgdXNlZCB0byByZWNyZWF0 ZSBhbGwgaW5kZXhlcwogICogb2YgYSByZWxhdGlvbiAoYW5kIG9wdGlvbmFsbHkgaXRzIHRvYXN0 IHJlbGF0aW9uIHRvbywgaWYgYW55KS4KICAqCisgKiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIHRh Ymxlc3BhY2Ugd2hlcmUgdGhlIHJlbGF0aW9uJ3MgaW5kZXhlcyB3aWxsIGJlCisgKiByZWJ1aWx0 LCBvciBJbnZhbGlkT2lkIHRvIGtlZXAgZWFjaCBpbmRleCBvbiBpdHMgY3VycmVudCB0YWJsZXNw YWNlLgorICoKICAqICJmbGFncyIgaXMgYSBiaXRtYXNrIHRoYXQgY2FuIGluY2x1ZGUgYW55IGNv bWJpbmF0aW9uIG9mIHRoZXNlIGJpdHM6CiAgKgogICogUkVJTkRFWF9SRUxfUFJPQ0VTU19UT0FT VDogaWYgdHJ1ZSwgcHJvY2VzcyB0aGUgdG9hc3QgdGFibGUgdG9vIChpZiBhbnkpLgpAQCAtMzY3 Myw3ICszNzYwLDcgQEAgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0 cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLAogICogaW5kZXggcmVidWlsZC4KICAqLwog Ym9vbAotcmVpbmRleF9yZWxhdGlvbihPaWQgcmVsaWQsIGludCBmbGFncywgaW50IG9wdGlvbnMp CityZWluZGV4X3JlbGF0aW9uKE9pZCByZWxpZCwgaW50IGZsYWdzLCBpbnQgb3B0aW9ucywgT2lk IHRhYmxlc3BhY2VPaWQpCiB7CiAJUmVsYXRpb24JcmVsOwogCU9pZAkJCXRvYXN0X3JlbGlkOwpA QCAtMzc2Miw3ICszODQ5LDcgQEAgcmVpbmRleF9yZWxhdGlvbihPaWQgcmVsaWQsIGludCBmbGFn cywgaW50IG9wdGlvbnMpCiAJCX0KIAogCQlyZWluZGV4X2luZGV4KGluZGV4T2lkLCAhKGZsYWdz ICYgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMpLAotCQkJCQkgIHBlcnNpc3RlbmNlLCBv cHRpb25zKTsKKwkJCQkJICBwZXJzaXN0ZW5jZSwgb3B0aW9ucywgdGFibGVzcGFjZU9pZCk7CiAK IAkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIApAQCAtMzc5MSw5ICszODc4LDEzIEBAIHJl aW5kZXhfcmVsYXRpb24oT2lkIHJlbGlkLCBpbnQgZmxhZ3MsIGludCBvcHRpb25zKQogCQkvKgog CQkgKiBOb3RlIHRoYXQgdGhpcyBzaG91bGQgZmFpbCBpZiB0aGUgdG9hc3QgcmVsYXRpb24gaXMg bWlzc2luZywgc28KIAkJICogcmVzZXQgUkVJTkRFWE9QVF9NSVNTSU5HX09LLgorCQkgKgorCQkg KiBFdmVuIGlmIHRhYmxlIHdhcyBtb3ZlZCB0byBuZXcgdGFibGVzcGFjZSwgbm9ybWFsbHkgdG9h c3QgY2Fubm90IG1vdmUuCiAJCSAqLworCQlPaWQgdG9hc3R0YWJsZXNwYWNlT2lkID0gYWxsb3dT eXN0ZW1UYWJsZU1vZHMgPyB0YWJsZXNwYWNlT2lkIDogSW52YWxpZE9pZDsKIAkJcmVzdWx0IHw9 IHJlaW5kZXhfcmVsYXRpb24odG9hc3RfcmVsaWQsIGZsYWdzLAotCQkJCQkJCQkgICBvcHRpb25z ICYgfihSRUlOREVYT1BUX01JU1NJTkdfT0spKTsKKwkJCQkJCQkJICAgb3B0aW9ucyAmIH4oUkVJ TkRFWE9QVF9NSVNTSU5HX09LKSwKKwkJCQkJCQkJICAgdG9hc3R0YWJsZXNwYWNlT2lkKTsKIAl9 CiAKIAlyZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1 c3Rlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCmluZGV4IDRhMzY3ODgzMWQu Ljk0MTljYzRkY2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKQEAgLTE0MTgsNyArMTQxOCw3IEBA IGZpbmlzaF9oZWFwX3N3YXAoT2lkIE9JRE9sZEhlYXAsIE9pZCBPSUROZXdIZWFwLAogCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0xVU1RFUl9QSEFTRSwKIAkJCQkJCQkJ IFBST0dSRVNTX0NMVVNURVJfUEhBU0VfUkVCVUlMRF9JTkRFWCk7CiAKLQlyZWluZGV4X3JlbGF0 aW9uKE9JRE9sZEhlYXAsIHJlaW5kZXhfZmxhZ3MsIDApOworCXJlaW5kZXhfcmVsYXRpb24oT0lE T2xkSGVhcCwgcmVpbmRleF9mbGFncywgMCwgSW52YWxpZE9pZCk7CiAKIAkvKiBSZXBvcnQgdGhh dCB3ZSBhcmUgbm93IGRvaW5nIGNsZWFuIHVwICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShQUk9HUkVTU19DTFVTVEVSX1BIQVNFLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwppbmRl eCBmMWI1Zjg3ZTZhLi4xNWE4MTliM2Q0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAt ODcsMTAgKzg3LDEwIEBAIHN0YXRpYyBjaGFyICpDaG9vc2VJbmRleE5hbWVBZGRpdGlvbihMaXN0 ICpjb2xuYW1lcyk7CiBzdGF0aWMgTGlzdCAqQ2hvb3NlSW5kZXhDb2x1bW5OYW1lcyhMaXN0ICpp bmRleEVsZW1zKTsKIHN0YXRpYyB2b2lkIFJhbmdlVmFyQ2FsbGJhY2tGb3JSZWluZGV4SW5kZXgo Y29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAogCQkJCQkJCQkJCQlPaWQgcmVsSWQsIE9pZCBvbGRS ZWxJZCwgdm9pZCAqYXJnKTsKLXN0YXRpYyBib29sIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShPaWQgcmVsYXRpb25PaWQsIGludCBvcHRpb25zKTsKK3N0YXRpYyBib29sIFJlaW5kZXhSZWxh dGlvbkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIGludCBvcHRpb25zLCBPaWQgdGFibGVz cGFjZU9pZCk7CiAKLXN0YXRpYyB2b2lkIFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgaW50 IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCk7Ci1zdGF0aWMgdm9pZCBSZWluZGV4TXVsdGlwbGVJ bnRlcm5hbChMaXN0ICpyZWxpZHMsIGludCBvcHRpb25zKTsKK3N0YXRpYyB2b2lkIFJlaW5kZXhQ YXJ0aXRpb25zKE9pZCByZWxpZCwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCwgY2hhciAq dGFibGVzcGFjZSk7CitzdGF0aWMgdm9pZCBSZWluZGV4TXVsdGlwbGVJbnRlcm5hbChMaXN0ICpy ZWxpZHMsIGludCBvcHRpb25zLCBPaWQgdGFibGVzcGFjZU9pZCk7CiBzdGF0aWMgdm9pZCByZWlu ZGV4X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZ3MpOwogc3RhdGljIHZvaWQgdXBkYXRlX3JlbGlz cGFydGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29sIG5ld3ZhbCk7CiBzdGF0aWMgYm9vbCBDb21w YXJlT3BjbGFzc09wdGlvbnMoRGF0dW0gKm9wdHMxLCBEYXR1bSAqb3B0czIsIGludCBuYXR0cyk7 CkBAIC0yNDMzLDEwICsyNDMzLDEyIEBAIENob29zZUluZGV4Q29sdW1uTmFtZXMoTGlzdCAqaW5k ZXhFbGVtcykKICAqCQlSZWNyZWF0ZSBhIHNwZWNpZmljIGluZGV4LgogICovCiB2b2lkCi1SZWlu ZGV4SW5kZXgoUmFuZ2VWYXIgKmluZGV4UmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGlzVG9w TGV2ZWwpCitSZWluZGV4SW5kZXgoUmFuZ2VWYXIgKmluZGV4UmVsYXRpb24sIGludCBvcHRpb25z LCBib29sIGlzVG9wTGV2ZWwsIGNoYXIgKnRhYmxlc3BhY2UpCiB7CiAJc3RydWN0IFJlaW5kZXhJ bmRleENhbGxiYWNrU3RhdGUgc3RhdGU7CiAJT2lkCQkJaW5kT2lkOworCU9pZAkJCXRhYmxlc3Bh Y2VPaWQgPSB0YWJsZXNwYWNlID8KKwkJCWdldF90YWJsZXNwYWNlX29pZCh0YWJsZXNwYWNlLCBm YWxzZSkgOiBJbnZhbGlkT2lkOwogCWNoYXIJCXBlcnNpc3RlbmNlOwogCWNoYXIJCXJlbGtpbmQ7 CiAKQEAgLTI0NjcsMTMgKzI0NjksMTQgQEAgUmVpbmRleEluZGV4KFJhbmdlVmFyICppbmRleFJl bGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBpc1RvcExldmVsKQogCXJlbGtpbmQgPSBnZXRfcmVs X3JlbGtpbmQoaW5kT2lkKTsKIAogCWlmIChyZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURf SU5ERVgpCi0JCVJlaW5kZXhQYXJ0aXRpb25zKGluZE9pZCwgb3B0aW9ucywgaXNUb3BMZXZlbCk7 CisJCVJlaW5kZXhQYXJ0aXRpb25zKGluZE9pZCwgb3B0aW9ucywgaXNUb3BMZXZlbCwgdGFibGVz cGFjZSk7CiAJZWxzZSBpZiAoKG9wdGlvbnMgJiBSRUlOREVYT1BUX0NPTkNVUlJFTlRMWSkgIT0g MCAmJgogCQkJIHBlcnNpc3RlbmNlICE9IFJFTFBFUlNJU1RFTkNFX1RFTVApCi0JCVJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShpbmRPaWQsIG9wdGlvbnMpOworCQlSZWluZGV4UmVsYXRpb25D b25jdXJyZW50bHkoaW5kT2lkLCBvcHRpb25zLCB0YWJsZXNwYWNlT2lkKTsKIAllbHNlCiAJCXJl aW5kZXhfaW5kZXgoaW5kT2lkLCBmYWxzZSwgcGVyc2lzdGVuY2UsCi0JCQkJCSAgb3B0aW9ucyB8 IFJFSU5ERVhPUFRfUkVQT1JUX1BST0dSRVNTKTsKKwkJCQkJICBvcHRpb25zIHwgUkVJTkRFWE9Q VF9SRVBPUlRfUFJPR1JFU1MsCisJCQkJCSAgdGFibGVzcGFjZU9pZCk7CiB9CiAKIC8qCkBAIC0y NTUyLDEwICsyNTU1LDEyIEBAIFJhbmdlVmFyQ2FsbGJhY2tGb3JSZWluZGV4SW5kZXgoY29uc3Qg UmFuZ2VWYXIgKnJlbGF0aW9uLAogICoJCVJlY3JlYXRlIGFsbCBpbmRleGVzIG9mIGEgdGFibGUg KGFuZCBvZiBpdHMgdG9hc3QgdGFibGUsIGlmIGFueSkKICAqLwogT2lkCi1SZWluZGV4VGFibGUo UmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBpc1RvcExldmVsKQorUmVpbmRl eFRhYmxlKFJhbmdlVmFyICpyZWxhdGlvbiwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCwg Y2hhciAqdGFibGVzcGFjZSkKIHsKIAlPaWQJCQloZWFwT2lkOwogCWJvb2wJCXJlc3VsdDsKKwlP aWQgCQl0YWJsZXNwYWNlT2lkID0gdGFibGVzcGFjZSA/CisJCWdldF90YWJsZXNwYWNlX29pZCh0 YWJsZXNwYWNlLCBmYWxzZSkgOiBJbnZhbGlkT2lkOwogCiAJLyoKIAkgKiBUaGUgbG9jayBsZXZl bCB1c2VkIGhlcmUgc2hvdWxkIG1hdGNoIHJlaW5kZXhfcmVsYXRpb24oKS4KQEAgLTI1NzIsMTEg KzI1NzcsMTEgQEAgUmVpbmRleFRhYmxlKFJhbmdlVmFyICpyZWxhdGlvbiwgaW50IG9wdGlvbnMs IGJvb2wgaXNUb3BMZXZlbCkKIAkJCQkJCQkJCSAgIFJhbmdlVmFyQ2FsbGJhY2tPd25zVGFibGUs IE5VTEwpOwogCiAJaWYgKGdldF9yZWxfcmVsa2luZChoZWFwT2lkKSA9PSBSRUxLSU5EX1BBUlRJ VElPTkVEX1RBQkxFKQotCQlSZWluZGV4UGFydGl0aW9ucyhoZWFwT2lkLCBvcHRpb25zLCBpc1Rv cExldmVsKTsKKwkJUmVpbmRleFBhcnRpdGlvbnMoaGVhcE9pZCwgb3B0aW9ucywgaXNUb3BMZXZl bCwgdGFibGVzcGFjZSk7CiAJZWxzZSBpZiAoKG9wdGlvbnMgJiBSRUlOREVYT1BUX0NPTkNVUlJF TlRMWSkgIT0gMCAmJgogCQkJIGdldF9yZWxfcGVyc2lzdGVuY2UoaGVhcE9pZCkgIT0gUkVMUEVS U0lTVEVOQ0VfVEVNUCkKIAl7Ci0JCXJlc3VsdCA9IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRs eShoZWFwT2lkLCBvcHRpb25zKTsKKwkJcmVzdWx0ID0gUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KGhlYXBPaWQsIG9wdGlvbnMsIHRhYmxlc3BhY2VPaWQpOwogCiAJCWlmICghcmVzdWx0KQog CQkJZXJlcG9ydChOT1RJQ0UsCkBAIC0yNTg4LDcgKzI1OTMsOCBAQCBSZWluZGV4VGFibGUoUmFu Z2VWYXIgKnJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBpc1RvcExldmVsKQogCQlyZXN1bHQg PSByZWluZGV4X3JlbGF0aW9uKGhlYXBPaWQsCiAJCQkJCQkJCSAgUkVJTkRFWF9SRUxfUFJPQ0VT U19UT0FTVCB8CiAJCQkJCQkJCSAgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RSQUlOVFMsCi0JCQkJ CQkJCSAgb3B0aW9ucyB8IFJFSU5ERVhPUFRfUkVQT1JUX1BST0dSRVNTKTsKKwkJCQkJCQkJICBv cHRpb25zIHwgUkVJTkRFWE9QVF9SRVBPUlRfUFJPR1JFU1MsCisJCQkJCQkJCSAgdGFibGVzcGFj ZU9pZCk7CiAJCWlmICghcmVzdWx0KQogCQkJZXJlcG9ydChOT1RJQ0UsCiAJCQkJCShlcnJtc2co InRhYmxlIFwiJXNcIiBoYXMgbm8gaW5kZXhlcyB0byByZWluZGV4IiwKQEAgLTI2MDgsNyArMjYx NCw3IEBAIFJlaW5kZXhUYWJsZShSYW5nZVZhciAqcmVsYXRpb24sIGludCBvcHRpb25zLCBib29s IGlzVG9wTGV2ZWwpCiAgKi8KIHZvaWQKIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFy ICpvYmplY3ROYW1lLCBSZWluZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAotCQkJCQkgIGludCBv cHRpb25zKQorCQkJCQkgIGludCBvcHRpb25zLCBjaGFyICp0YWJsZXNwYWNlKQogewogCU9pZAkJ CW9iamVjdE9pZDsKIAlSZWxhdGlvbglyZWxhdGlvblJlbGF0aW9uOwpAQCAtMjYxOSw3ICsyNjI1 LDEyIEBAIFJlaW5kZXhNdWx0aXBsZVRhYmxlcyhjb25zdCBjaGFyICpvYmplY3ROYW1lLCBSZWlu ZGV4T2JqZWN0VHlwZSBvYmplY3RLaW5kLAogCU1lbW9yeUNvbnRleHQgb2xkOwogCUxpc3QJICAg KnJlbGlkcyA9IE5JTDsKIAlpbnQJCQludW1fa2V5czsKKwogCWJvb2wJCWNvbmN1cnJlbnRfd2Fy bmluZyA9IGZhbHNlOworCWJvb2wJCXRhYmxlc3BhY2Vfd2FybmluZyA9IGZhbHNlOworCWJvb2wJ CW1hcHBlZF93YXJuaW5nID0gZmFsc2U7CisJT2lkCQkJdGFibGVzcGFjZU9pZCA9IHRhYmxlc3Bh Y2UgPworCQl0YWJsZXNwYWNlT2lkID0gZ2V0X3RhYmxlc3BhY2Vfb2lkKHRhYmxlc3BhY2UsIGZh bHNlKSA6IEludmFsaWRPaWQ7CiAKIAlBc3NlcnRBcmcob2JqZWN0TmFtZSk7CiAJQXNzZXJ0KG9i amVjdEtpbmQgPT0gUkVJTkRFWF9PQkpFQ1RfU0NIRU1BIHx8CkBAIC0yNzQ2LDYgKzI3NTcsMzUg QEAgUmVpbmRleE11bHRpcGxlVGFibGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhP YmplY3RUeXBlIG9iamVjdEtpbmQsCiAJCQljb250aW51ZTsKIAkJfQogCisJCWlmIChPaWRJc1Zh bGlkKHRhYmxlc3BhY2VPaWQpICYmCisJCQlJc1N5c3RlbUNsYXNzKHJlbGlkLCBjbGFzc3R1cGxl KSkKKwkJeworCQkJaWYgKCFhbGxvd1N5c3RlbVRhYmxlTW9kcykKKwkJCXsKKwkJCQkvKiBTa2lw IGFsbCBzeXN0ZW0gcmVsYXRpb25zLCBpZiBub3QgYWxsb3dTeXN0ZW1UYWJsZU1vZHMgKi8KKwkJ CQlpZiAoIXRhYmxlc3BhY2Vfd2FybmluZykKKwkJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCQkJIGVycm1z ZygiY2Fubm90IGNoYW5nZSB0YWJsZXNwYWNlIG9mIGluZGV4ZXMgb24gc3lzdGVtIHJlbGF0aW9u cywgc2tpcHBpbmcgYWxsIikpKTsKKwkJCQl0YWJsZXNwYWNlX3dhcm5pbmcgPSB0cnVlOworCQkJ CWNvbnRpbnVlOworCQkJfQorCQkJZWxzZSBpZiAoIU9pZElzVmFsaWQoY2xhc3N0dXBsZS0+cmVs ZmlsZW5vZGUpKQorCQkJeworCQkJCS8qCisJCQkJICogU2tpcCBhbGwgbWFwcGVkIHJlbGF0aW9u cyBpZiBUQUJMRVNQQUNFIGlzIHNwZWNpZmllZC4KKwkJCQkgKiBPaWRJc1ZhbGlkKHJlbGZpbGVu b2RlKSBjaGVja3MgdGhhdCwgc2ltaWxhciB0bworCQkJCSAqIFJlbGF0aW9uSXNNYXBwZWQoKS4K KwkJCQkgKi8KKwkJCQlpZiAoIW1hcHBlZF93YXJuaW5nKQorCQkJCQllcmVwb3J0KFdBUk5JTkcs CisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJ CSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBpbmRleGVzIG9uIG1hcHBlZCBy ZWxhdGlvbnMsIHNraXBwaW5nIGFsbCIpKSk7CisJCQkJbWFwcGVkX3dhcm5pbmcgPSB0cnVlOwor CQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKIAkJLyogU2F2ZSB0aGUgbGlzdCBvZiByZWxhdGlv biBPSURzIGluIHByaXZhdGUgY29udGV4dCAqLwogCQlvbGQgPSBNZW1vcnlDb250ZXh0U3dpdGNo VG8ocHJpdmF0ZV9jb250ZXh0KTsKIApAQCAtMjc3MCw3ICsyODEwLDcgQEAgUmVpbmRleE11bHRp cGxlVGFibGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVj dEtpbmQsCiAJICogUHJvY2VzcyBlYWNoIHJlbGF0aW9uIGxpc3RlZCBpbiBhIHNlcGFyYXRlIHRy YW5zYWN0aW9uLiAgTm90ZSB0aGF0IHRoaXMKIAkgKiBjb21taXRzIGFuZCB0aGVuIHN0YXJ0cyBh IG5ldyB0cmFuc2FjdGlvbiBpbW1lZGlhdGVseS4KIAkgKi8KLQlSZWluZGV4TXVsdGlwbGVJbnRl cm5hbChyZWxpZHMsIG9wdGlvbnMpOworCVJlaW5kZXhNdWx0aXBsZUludGVybmFsKHJlbGlkcywg b3B0aW9ucywgdGFibGVzcGFjZU9pZCk7CiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKHByaXZhdGVf Y29udGV4dCk7CiB9CkBAIC0yNzk0LDYgKzI4MzQsNDEgQEAgcmVpbmRleF9lcnJvcl9jYWxsYmFj ayh2b2lkICphcmcpCiAJCQkJICAgZXJyaW5mby0+cmVsbmFtZXNwYWNlLCBlcnJpbmZvLT5yZWxu YW1lKTsKIH0KIAorLyoKKyAqIFRoaXMgaXMgbW9zdGx5IGR1cGxpY2F0aW5nIEFURXhlY1NldFRh YmxlU3BhY2VOb1N0b3JhZ2UsCisgKiB3aGljaCBzaG91bGQgbWF5YmUgYmUgZmFjdG9yZWQgb3V0 IHRvIGEgbGlicmFyeSBmdW5jdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3NldF9yZWxfdGFibGVz cGFjZShPaWQgcmVsb2lkLCBPaWQgdGFibGVzcGFjZU9pZCkKK3sKKwlSZWxhdGlvbgkJcGdfY2xh c3M7CisJSGVhcFR1cGxlCQl0dXBsZTsKKwlGb3JtX3BnX2NsYXNzCXJkX3JlbDsKKwlPaWQJCQlv bGRUYWJsZXNwYWNlT2lkOworCisJLyogR2V0IGEgbW9kaWZpYWJsZSBjb3B5IG9mIHRoZSByZWxh dGlvbidzIHBnX2NsYXNzIHJvdyAqLworCXBnX2NsYXNzID0gdGFibGVfb3BlbihSZWxhdGlvblJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNv cHkxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxvaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwbGUpKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcmVs YXRpb24gJXUiLCByZWxvaWQpOworCXJkX3JlbCA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1Qo dHVwbGUpOworCisJLyogTm8gd29yayBpZiBubyBjaGFuZ2UgaW4gdGFibGVzcGFjZS4gKi8KKwlv bGRUYWJsZXNwYWNlT2lkID0gcmRfcmVsLT5yZWx0YWJsZXNwYWNlOworCWlmICh0YWJsZXNwYWNl T2lkICE9IG9sZFRhYmxlc3BhY2VPaWQgfHwKKwkJKHRhYmxlc3BhY2VPaWQgPT0gTXlEYXRhYmFz ZVRhYmxlU3BhY2UgJiYgT2lkSXNWYWxpZChvbGRUYWJsZXNwYWNlT2lkKSkpCisJeworCQkvKiBV cGRhdGUgdGhlIHBnX2NsYXNzIHJvdyAqLworCQlyZF9yZWwtPnJlbHRhYmxlc3BhY2UgPSAodGFi bGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVTcGFjZSkgPworCQkJSW52YWxpZE9pZCA6IHRh Ymxlc3BhY2VPaWQ7CisJCUNhdGFsb2dUdXBsZVVwZGF0ZShwZ19jbGFzcywgJnR1cGxlLT50X3Nl bGYsIHR1cGxlKTsKKwl9CisKKwloZWFwX2ZyZWV0dXBsZSh0dXBsZSk7CisJdGFibGVfY2xvc2Uo cGdfY2xhc3MsIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICogUmVpbmRleFBhcnRpdGlv bnMKICAqCkBAIC0yODAxLDcgKzI4NzYsNyBAQCByZWluZGV4X2Vycm9yX2NhbGxiYWNrKHZvaWQg KmFyZykKICAqIGJ5IHRoZSBjYWxsZXIuCiAgKi8KIHN0YXRpYyB2b2lkCi1SZWluZGV4UGFydGl0 aW9ucyhPaWQgcmVsaWQsIGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2ZWwpCitSZWluZGV4UGFy dGl0aW9ucyhPaWQgcmVsaWQsIGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2ZWwsIGNoYXIgKnRh Ymxlc3BhY2UpCiB7CiAJTGlzdAkgICAqcGFydGl0aW9ucyA9IE5JTDsKIAljaGFyCQlyZWxraW5k ID0gZ2V0X3JlbF9yZWxraW5kKHJlbGlkKTsKQEAgLTI4MTIsNiArMjg4Nyw4IEBAIFJlaW5kZXhQ YXJ0aXRpb25zKE9pZCByZWxpZCwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCkKIAlMaXN0 Q2VsbCAgICpsYzsKIAlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKIAlSZWluZGV4 RXJyb3JJbmZvIGVycmluZm87CisJT2lkCQkJdGFibGVzcGFjZU9pZCA9IHRhYmxlc3BhY2UgPwor CQlnZXRfdGFibGVzcGFjZV9vaWQodGFibGVzcGFjZSwgZmFsc2UpIDogSW52YWxpZE9pZDsKIAog CUFzc2VydChyZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVggfHwKIAkJICAgcmVs a2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKQEAgLTI4NTksOSArMjkzNiwyNyBA QCBSZWluZGV4UGFydGl0aW9ucyhPaWQgcmVsaWQsIGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2 ZWwpCiAJCU1lbW9yeUNvbnRleHQgb2xkX2NvbnRleHQ7CiAKIAkJLyoKLQkJICogVGhpcyBkaXNj YXJkcyBwYXJ0aXRpb25lZCB0YWJsZXMsIHBhcnRpdGlvbmVkIGluZGV4ZXMgYW5kIGZvcmVpZ24K LQkJICogdGFibGVzLgorCQkgKiBGb3JlaWduIHRhYmxlcyBhbmQgcGFydGl0aW9uZWQgcmVsYXRp b25zIGFyZSBub3QgdGhlbXNlbHZlcworCQkgKiByZWluZGV4ZWQgLSBsZWFmIHBhcnRpdGlvbnMg YXJlIHByb2Nlc3NlZCBkaXJlY3RseS4gIEJ1dCBhbnkKKwkJICogdGFibGVzcGFjZSBjaGFuZ2Ug aXMgcmVjb3JkZWQgaW4gdGhlIGNhdGFsb2cgZm9yIHBhcnRpdGlvbmVkCisJCSAqIHJlbGF0aW9u cy4KIAkJICovCisJCWlmIChwYXJ0a2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX0lOREVYKQor CQkJc2V0X3JlbF90YWJsZXNwYWNlKHBhcnRvaWQsIHRhYmxlc3BhY2VPaWQpOworCQllbHNlIGlm IChwYXJ0a2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQorCQl7CisJCQlSZWxhdGlv biByZWwgPSB0YWJsZV9vcGVuKHBhcnRvaWQsIFNoYXJlTG9jayk7CisJCQlMaXN0CSppbmRleElk cyA9IFJlbGF0aW9uR2V0SW5kZXhMaXN0KHJlbCk7CisJCQlMaXN0Q2VsbCAqbGM7CisKKwkJCXRh YmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwkJCWZvcmVhY2ggKGxjLCBpbmRleElkcykKKwkJCXsK KwkJCQlPaWQgaW5kZXhpZCA9IGxmaXJzdF9vaWQobGMpOworCQkJCXNldF9yZWxfdGFibGVzcGFj ZShpbmRleGlkLCB0YWJsZXNwYWNlT2lkKTsKKwkJCX0KKwkJfQorCiAJCWlmICghUkVMS0lORF9I QVNfU1RPUkFHRShwYXJ0a2luZCkpCiAJCQljb250aW51ZTsKIApAQCAtMjg3OCw3ICsyOTczLDcg QEAgUmVpbmRleFBhcnRpdGlvbnMoT2lkIHJlbGlkLCBpbnQgb3B0aW9ucywgYm9vbCBpc1RvcExl dmVsKQogCSAqIFByb2Nlc3MgZWFjaCBwYXJ0aXRpb24gbGlzdGVkIGluIGEgc2VwYXJhdGUgdHJh bnNhY3Rpb24uICBOb3RlIHRoYXQKIAkgKiB0aGlzIGNvbW1pdHMgYW5kIHRoZW4gc3RhcnRzIGEg bmV3IHRyYW5zYWN0aW9uIGltbWVkaWF0ZWx5LgogCSAqLwotCVJlaW5kZXhNdWx0aXBsZUludGVy bmFsKHBhcnRpdGlvbnMsIG9wdGlvbnMpOworCVJlaW5kZXhNdWx0aXBsZUludGVybmFsKHBhcnRp dGlvbnMsIG9wdGlvbnMsIHRhYmxlc3BhY2VPaWQpOwogCiAJLyoKIAkgKiBDbGVhbiB1cCB3b3Jr aW5nIHN0b3JhZ2UgLS0tIG5vdGUgd2UgbXVzdCBkbyB0aGlzIGFmdGVyCkBAIC0yODk2LDcgKzI5 OTEsNyBAQCBSZWluZGV4UGFydGl0aW9ucyhPaWQgcmVsaWQsIGludCBvcHRpb25zLCBib29sIGlz VG9wTGV2ZWwpCiAgKiBhbmQgc3RhcnRzIGEgbmV3IHRyYW5zYWN0aW9uIHdoZW4gZmluaXNoZWQu CiAgKi8KIHN0YXRpYyB2b2lkCi1SZWluZGV4TXVsdGlwbGVJbnRlcm5hbChMaXN0ICpyZWxpZHMs IGludCBvcHRpb25zKQorUmVpbmRleE11bHRpcGxlSW50ZXJuYWwoTGlzdCAqcmVsaWRzLCBpbnQg b3B0aW9ucywgT2lkIHRhYmxlc3BhY2VPaWQpCiB7CiAJTGlzdENlbGwgICAqbDsKIApAQCAtMjkz Nyw3ICszMDMyLDggQEAgUmVpbmRleE11bHRpcGxlSW50ZXJuYWwoTGlzdCAqcmVsaWRzLCBpbnQg b3B0aW9ucykKIAkJewogCQkJKHZvaWQpIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShyZWxp ZCwKIAkJCQkJCQkJCQkJICAgb3B0aW9ucyB8Ci0JCQkJCQkJCQkJCSAgIFJFSU5ERVhPUFRfTUlT U0lOR19PSyk7CisJCQkJCQkJCQkJCSAgIFJFSU5ERVhPUFRfTUlTU0lOR19PSywKKwkJCQkJCQkJ CQkJICAgdGFibGVzcGFjZU9pZCk7CiAJCQkvKiBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko KSBkb2VzIHRoZSB2ZXJib3NlIG91dHB1dCAqLwogCQl9CiAJCWVsc2UgaWYgKHJlbGtpbmQgPT0g UkVMS0lORF9JTkRFWCkKQEAgLTI5NDUsNyArMzA0MSw3IEBAIFJlaW5kZXhNdWx0aXBsZUludGVy bmFsKExpc3QgKnJlbGlkcywgaW50IG9wdGlvbnMpCiAJCQlyZWluZGV4X2luZGV4KHJlbGlkLCBm YWxzZSwgcmVscGVyc2lzdGVuY2UsCiAJCQkJCQkgIG9wdGlvbnMgfAogCQkJCQkJICBSRUlOREVY T1BUX1JFUE9SVF9QUk9HUkVTUyB8Ci0JCQkJCQkgIFJFSU5ERVhPUFRfTUlTU0lOR19PSyk7CisJ CQkJCQkgIFJFSU5ERVhPUFRfTUlTU0lOR19PSywgdGFibGVzcGFjZU9pZCk7CiAJCQlQb3BBY3Rp dmVTbmFwc2hvdCgpOwogCQkJLyogcmVpbmRleF9pbmRleCgpIGRvZXMgdGhlIHZlcmJvc2Ugb3V0 cHV0ICovCiAJCX0KQEAgLTI5NTgsNyArMzA1NCw4IEBAIFJlaW5kZXhNdWx0aXBsZUludGVybmFs KExpc3QgKnJlbGlkcywgaW50IG9wdGlvbnMpCiAJCQkJCQkJCQkgIFJFSU5ERVhfUkVMX0NIRUNL X0NPTlNUUkFJTlRTLAogCQkJCQkJCQkJICBvcHRpb25zIHwKIAkJCQkJCQkJCSAgUkVJTkRFWE9Q VF9SRVBPUlRfUFJPR1JFU1MgfAotCQkJCQkJCQkJICBSRUlOREVYT1BUX01JU1NJTkdfT0spOwor CQkJCQkJCQkJICBSRUlOREVYT1BUX01JU1NJTkdfT0ssCisJCQkJCQkJCQkgIHRhYmxlc3BhY2VP aWQpOwogCiAJCQlpZiAocmVzdWx0ICYmIChvcHRpb25zICYgUkVJTkRFWE9QVF9WRVJCT1NFKSkK IAkJCQllcmVwb3J0KElORk8sCkBAIC0yOTg2LDYgKzMwODMsOSBAQCBSZWluZGV4TXVsdGlwbGVJ bnRlcm5hbChMaXN0ICpyZWxpZHMsIGludCBvcHRpb25zKQogICogYnV0IGluY2x1ZGluZyBpdHMg YXNzb2NpYXRlZCB0b2FzdCB0YWJsZSBpbmRleGVzLiAgRm9yIGluZGV4ZXMsIHRoZSBpbmRleAog ICogaXRzZWxmIHdpbGwgYmUgcmVidWlsdC4KICAqCisgKiAndGFibGVzcGFjZU9pZCcgaXMgdGhl IHRhYmxlc3BhY2Ugd2hlcmUgdGhlIHJlbGF0aW9uJ3MgaW5kZXhlcyB3aWxsIGJlCisgKiByZWJ1 aWx0LgorICoKICAqIFRoZSBsb2NrcyB0YWtlbiBvbiBwYXJlbnQgdGFibGVzIGFuZCBpbnZvbHZl ZCBpbmRleGVzIGFyZSBrZXB0IHVudGlsIHRoZQogICogdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVk LCBhdCB3aGljaCBwb2ludCBhIHNlc3Npb24gbG9jayBpcyB0YWtlbiBvbiBlYWNoCiAgKiByZWxh dGlvbi4gIEJvdGggb2YgdGhlc2UgcHJvdGVjdCBhZ2FpbnN0IGNvbmN1cnJlbnQgc2NoZW1hIGNo YW5nZXMuCkBAIC0zMDAwLDcgKzMxMDAsNyBAQCBSZWluZGV4TXVsdGlwbGVJbnRlcm5hbChMaXN0 ICpyZWxpZHMsIGludCBvcHRpb25zKQogICogYW55d2F5LCBhbmQgYSBub24tY29uY3VycmVudCBy ZWluZGV4IGlzIG1vcmUgZWZmaWNpZW50LgogICovCiBzdGF0aWMgYm9vbAotUmVpbmRleFJlbGF0 aW9uQ29uY3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgaW50IG9wdGlvbnMpCitSZWluZGV4UmVs YXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBpbnQgb3B0aW9ucywgT2lkIHRhYmxl c3BhY2VPaWQpCiB7CiAJTGlzdAkgICAqaGVhcFJlbGF0aW9uSWRzID0gTklMOwogCUxpc3QJICAg KmluZGV4SWRzID0gTklMOwpAQCAtMzI0Nyw2ICszMzQ3LDEzIEBAIFJlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIGludCBvcHRpb25zKQogCQlyZXR1cm4gZmFsc2U7 CiAJfQogCisJLyogSXQncyBub3QgYSBzaGFyZWQgY2F0YWxvZywgc28gcmVmdXNlIHRvIG1vdmUg aXQgdG8gc2hhcmVkIHRhYmxlc3BhY2UgKi8KKwlpZiAodGFibGVzcGFjZU9pZCA9PSBHTE9CQUxU QUJMRVNQQUNFX09JRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgbm9uLXNoYXJl ZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlIFwiJXNcIiIsCisJCQkJCSBnZXRfdGFibGVzcGFjZV9u YW1lKHRhYmxlc3BhY2VPaWQpKSkpOworCiAJQXNzZXJ0KGhlYXBSZWxhdGlvbklkcyAhPSBOSUwp OwogCiAJLyotLS0tLQpAQCAtMzMxMSw2ICszNDE4LDcgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3Vy cmVudGx5KE9pZCByZWxhdGlvbk9pZCwgaW50IG9wdGlvbnMpCiAJCS8qIENyZWF0ZSBuZXcgaW5k ZXggZGVmaW5pdGlvbiBiYXNlZCBvbiBnaXZlbiBpbmRleCAqLwogCQluZXdJbmRleElkID0gaW5k ZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KGhlYXBSZWwsCiAJCQkJCQkJCQkJCQkJaW5kZXhJ ZCwKKwkJCQkJCQkJCQkJCQl0YWJsZXNwYWNlT2lkLAogCQkJCQkJCQkJCQkJCWNvbmN1cnJlbnRO YW1lKTsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBlYWI1NzBhODY3Li5l ZmE2ZDA5MWIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTg4Niw3ICsxODg2LDcg QEAgRXhlY3V0ZVRydW5jYXRlR3V0cyhMaXN0ICpleHBsaWNpdF9yZWxzLCBMaXN0ICpyZWxpZHMs IExpc3QgKnJlbGlkc19sb2dnZWQsCiAJCQkvKgogCQkJICogUmVjb25zdHJ1Y3QgdGhlIGluZGV4 ZXMgdG8gbWF0Y2gsIGFuZCB3ZSdyZSBkb25lLgogCQkJICovCi0JCQlyZWluZGV4X3JlbGF0aW9u KGhlYXBfcmVsaWQsIFJFSU5ERVhfUkVMX1BST0NFU1NfVE9BU1QsIDApOworCQkJcmVpbmRleF9y ZWxhdGlvbihoZWFwX3JlbGlkLCBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNULCAwLCBJbnZhbGlk T2lkKTsKIAkJfQogCiAJCXBnc3RhdF9jb3VudF90cnVuY2F0ZShyZWwpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpp bmRleCAwYzFiNTAyMDI1Li44MmVlZjJkMWJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29w L3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYwpAQCAtNTI4LDcgKzUy OCw3IEBAIFByb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAogLyogUGFyc2UgcGFy YW1zIG5vdCBwYXJzZWQgYnkgdGhlIGdyYW1tYXIgKi8KIHN0YXRpYwotdm9pZCBwYXJzZV9yZWlu ZGV4X3BhcmFtcyhQYXJzZVN0YXRlICpwc3RhdGUsIFJlaW5kZXhTdG10ICpzdG10LCBpbnQgKm9w dGlvbnMpCit2b2lkIHBhcnNlX3JlaW5kZXhfcGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVp bmRleFN0bXQgKnN0bXQsIGludCAqb3B0aW9ucywgY2hhciAqKnRhYmxlc3BhY2UpCiB7CiAJTGlz dENlbGwgKmxjOwogCWZvcmVhY2gobGMsIHN0bXQtPnBhcmFtcykKQEAgLTU0Nyw2ICs1NDcsOCBA QCB2b2lkIHBhcnNlX3JlaW5kZXhfcGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVpbmRleFN0 bXQgKnN0bXQsIGludCAqb3B0aW9ucykKIAkJCQkqb3B0aW9ucyB8PSBSRUlOREVYT1BUX0NPTkNV UlJFTlRMWTsKIAkJCWVsc2UKIAkJCQkqb3B0aW9ucyAmPSB+UkVJTkRFWE9QVF9DT05DVVJSRU5U TFk7CisJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJ0YWJsZXNwYWNlIikgPT0gMCkK KwkJCSp0YWJsZXNwYWNlID0gZGVmR2V0U3RyaW5nKG9wdCk7CiAJCWVsc2UKIAkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTk0OSw4ICs5 NTEsOSBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCQl7 CiAJCQkJUmVpbmRleFN0bXQgKnN0bXQgPSAoUmVpbmRleFN0bXQgKikgcGFyc2V0cmVlOwogCQkJ CWludCBvcHRpb25zID0gMDsKKwkJCQljaGFyICp0YWJsZXNwYWNlID0gTlVMTDsKIAotCQkJCXBh cnNlX3JlaW5kZXhfcGFyYW1zKHBzdGF0ZSwgc3RtdCwgJm9wdGlvbnMpOworCQkJCXBhcnNlX3Jl aW5kZXhfcGFyYW1zKHBzdGF0ZSwgc3RtdCwgJm9wdGlvbnMsICZ0YWJsZXNwYWNlKTsKIAkJCQlp ZiAob3B0aW9ucyAmIFJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZKQogCQkJCQlQcmV2ZW50SW5UcmFu c2FjdGlvbkJsb2NrKGlzVG9wTGV2ZWwsCiAJCQkJCQkJCQkJCSAgIlJFSU5ERVggQ09OQ1VSUkVO VExZIik7CkBAIC05NTgsMTIgKzk2MSwxMiBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFu bmVkU3RtdCAqcHN0bXQsCiAJCQkJc3dpdGNoIChzdG10LT5raW5kKQogCQkJCXsKIAkJCQkJY2Fz ZSBSRUlOREVYX09CSkVDVF9JTkRFWDoKLQkJCQkJCVJlaW5kZXhJbmRleChzdG10LT5yZWxhdGlv biwgc3RtdC0+b3B0aW9ucywKLQkJCQkJCQkJCSBpc1RvcExldmVsKTsKKwkJCQkJCVJlaW5kZXhJ bmRleChzdG10LT5yZWxhdGlvbiwgb3B0aW9ucywKKwkJCQkJCQkJCSBpc1RvcExldmVsLCB0YWJs ZXNwYWNlKTsKIAkJCQkJCWJyZWFrOwogCQkJCQljYXNlIFJFSU5ERVhfT0JKRUNUX1RBQkxFOgot CQkJCQkJUmVpbmRleFRhYmxlKHN0bXQtPnJlbGF0aW9uLCBzdG10LT5vcHRpb25zLAotCQkJCQkJ CQkJIGlzVG9wTGV2ZWwpOworCQkJCQkJUmVpbmRleFRhYmxlKHN0bXQtPnJlbGF0aW9uLCBvcHRp b25zLAorCQkJCQkJCQkJIGlzVG9wTGV2ZWwsIHRhYmxlc3BhY2UpOwogCQkJCQkJYnJlYWs7CiAJ CQkJCWNhc2UgUkVJTkRFWF9PQkpFQ1RfU0NIRU1BOgogCQkJCQljYXNlIFJFSU5ERVhfT0JKRUNU X1NZU1RFTToKQEAgLTk3OSw3ICs5ODIsNyBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFu bmVkU3RtdCAqcHN0bXQsCiAJCQkJCQkJCQkJCQkgIChzdG10LT5raW5kID09IFJFSU5ERVhfT0JK RUNUX1NDSEVNQSkgPyAiUkVJTkRFWCBTQ0hFTUEiIDoKIAkJCQkJCQkJCQkJCSAgKHN0bXQtPmtp bmQgPT0gUkVJTkRFWF9PQkpFQ1RfU1lTVEVNKSA/ICJSRUlOREVYIFNZU1RFTSIgOgogCQkJCQkJ CQkJCQkJICAiUkVJTkRFWCBEQVRBQkFTRSIpOwotCQkJCQkJUmVpbmRleE11bHRpcGxlVGFibGVz KHN0bXQtPm5hbWUsIHN0bXQtPmtpbmQsIG9wdGlvbnMpOworCQkJCQkJUmVpbmRleE11bHRpcGxl VGFibGVzKHN0bXQtPm5hbWUsIHN0bXQtPmtpbmQsIG9wdGlvbnMsIHRhYmxlc3BhY2UpOwogCQkJ CQkJYnJlYWs7CiAJCQkJCWRlZmF1bHQ6CiAJCQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IG9iamVjdCB0eXBlOiAlZCIsCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKaW5kZXggYzY4ZTRiNmQ1ZC4uNGY0NmM0 ZjBjNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9i aW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAtMzQ5Myw3ICszNDkzLDkgQEAgcHNxbF9jb21wbGV0 aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIAkJICogb25lIHdvcmQs IHNvIHRoZSBhYm92ZSB0ZXN0IGlzIGNvcnJlY3QuCiAJCSAqLwogCQlpZiAoZW5kc193aXRoKHBy ZXZfd2QsICcoJykgfHwgZW5kc193aXRoKHByZXZfd2QsICcsJykpCi0JCQlDT01QTEVURV9XSVRI KCJDT05DVVJSRU5UTFkiLCAiVkVSQk9TRSIpOworCQkJQ09NUExFVEVfV0lUSCgiQ09OQ1VSUkVO VExZIiwgIlRBQkxFU1BBQ0UiLCAiVkVSQk9TRSIpOworCQllbHNlIGlmIChUYWlsTWF0Y2hlcygi VEFCTEVTUEFDRSIpKQorCQkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90 YWJsZXNwYWNlcyk7CiAJfQogCiAvKiBTRUNVUklUWSBMQUJFTCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmlu ZGV4IGY1OGU4Njc1ZjMuLjZhNjY3ZGYzNTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTgwLDYgKzgw LDcgQEAgZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCiBl eHRlcm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCQkJCQkJCQkJICAgT2lkIG9sZEluZGV4SWQsCisJCQkJCQkJCQkJICAgT2lkIHRh Ymxlc3BhY2VPaWQsCiAJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqbmV3TmFtZSk7CiAKIGV4dGVy biB2b2lkIGluZGV4X2NvbmN1cnJlbnRseV9idWlsZChPaWQgaGVhcFJlbGF0aW9uSWQsCkBAIC0x MzQsNyArMTM1LDcgQEAgZXh0ZXJuIHZvaWQgaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKE9pZCBpbmRl eElkLCBJbmRleFN0YXRlRmxhZ3NBY3Rpb24gYWN0aW9uKTsKIGV4dGVybiBPaWQJSW5kZXhHZXRS ZWxhdGlvbihPaWQgaW5kZXhJZCwgYm9vbCBtaXNzaW5nX29rKTsKIAogZXh0ZXJuIHZvaWQgcmVp bmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLAotCQkJ CQkJICBjaGFyIHJlbHBlcnNpc3RlbmNlLCBpbnQgb3B0aW9ucyk7CisJCQkJCQkgIGNoYXIgcmVs cGVyc2lzdGVuY2UsIGludCBvcHRpb25zLCBPaWQgdGFibGVzcGFjZU9pZCk7CiAKIC8qIEZsYWcg Yml0cyBmb3IgcmVpbmRleF9yZWxhdGlvbigpOiAqLwogI2RlZmluZSBSRUlOREVYX1JFTF9QUk9D RVNTX1RPQVNUCQkJMHgwMQpAQCAtMTQzLDcgKzE0NCw3IEBAIGV4dGVybiB2b2lkIHJlaW5kZXhf aW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50X2NoZWNrcywKICNkZWZpbmUg UkVJTkRFWF9SRUxfRk9SQ0VfSU5ERVhFU19VTkxPR0dFRAkweDA4CiAjZGVmaW5lIFJFSU5ERVhf UkVMX0ZPUkNFX0lOREVYRVNfUEVSTUFORU5UIDB4MTAKIAotZXh0ZXJuIGJvb2wgcmVpbmRleF9y ZWxhdGlvbihPaWQgcmVsaWQsIGludCBmbGFncywgaW50IG9wdGlvbnMpOworZXh0ZXJuIGJvb2wg cmVpbmRleF9yZWxhdGlvbihPaWQgcmVsaWQsIGludCBmbGFncywgaW50IG9wdGlvbnMsIE9pZCB0 YWJsZXNwYWNlT2lkKTsKIAogZXh0ZXJuIGJvb2wgUmVpbmRleElzUHJvY2Vzc2luZ0hlYXAoT2lk IGhlYXBPaWQpOwogZXh0ZXJuIGJvb2wgUmVpbmRleElzUHJvY2Vzc2luZ0luZGV4KE9pZCBpbmRl eE9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCBiL3NyYy9p bmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDdhMDc5ZWYwN2YuLmVlOTcwYTBmNTUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCisrKyBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2RlZnJlbS5oCkBAIC0zNCwxMCArMzQsMTAgQEAgZXh0ZXJuIE9iamVjdEFkZHJl c3MgRGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJCQkJCQkJCSBib29sIGNoZWNrX25vdF9p bl91c2UsCiAJCQkJCQkJCSBib29sIHNraXBfYnVpbGQsCiAJCQkJCQkJCSBib29sIHF1aWV0KTsK LWV4dGVybiB2b2lkIFJlaW5kZXhJbmRleChSYW5nZVZhciAqaW5kZXhSZWxhdGlvbiwgaW50IG9w dGlvbnMsIGJvb2wgaXNUb3BMZXZlbCk7Ci1leHRlcm4gT2lkCVJlaW5kZXhUYWJsZShSYW5nZVZh ciAqcmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2ZWwpOworZXh0ZXJuIHZvaWQg UmVpbmRleEluZGV4KFJhbmdlVmFyICppbmRleFJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBp c1RvcExldmVsLCBjaGFyICp0YWJsZXNwYWNlKTsKK2V4dGVybiBPaWQJUmVpbmRleFRhYmxlKFJh bmdlVmFyICpyZWxhdGlvbiwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCwgY2hhciAqdGFi bGVzcGFjZSk7CiBleHRlcm4gdm9pZCBSZWluZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAq b2JqZWN0TmFtZSwgUmVpbmRleE9iamVjdFR5cGUgb2JqZWN0S2luZCwKLQkJCQkJCQkJICBpbnQg b3B0aW9ucyk7CisJCQkJCQkJCSAgaW50IG9wdGlvbnMsIGNoYXIgKnRhYmxlc3BhY2UpOwogZXh0 ZXJuIGNoYXIgKm1ha2VPYmplY3ROYW1lKGNvbnN0IGNoYXIgKm5hbWUxLCBjb25zdCBjaGFyICpu YW1lMiwKIAkJCQkJCQljb25zdCBjaGFyICpsYWJlbCk7CiBleHRlcm4gY2hhciAqQ2hvb3NlUmVs YXRpb25OYW1lKGNvbnN0IGNoYXIgKm5hbWUxLCBjb25zdCBjaGFyICpuYW1lMiwKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9y ZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCmluZGV4IGE1ZjYxYTM1ZGMuLjVkOGEyMmNm ZmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZQpAQCAtMTcsNiAr MTcsNDggQEAgQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlIFNFVCAoc29tZV9ub25l eGlzdGVudF9wYXJhbWV0ZXIgPSB0cnVlKTsgIC0tIGYKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCA9IDIuMCk7IC0tIGZhaWwKIEFMVEVS IFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCwgZWZm ZWN0aXZlX2lvX2NvbmN1cnJlbmN5KTsgLS0gb2sKIAorLS0gY3JlYXRlIHRhYmxlIHRvIHRlc3Qg UkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitDUkVBVEUgVEFCTEUgcmVncmVzc190Ymxz cGFjZV90ZXN0X3RibCAobnVtMSBiaWdpbnQsIG51bTIgZG91YmxlIHByZWNpc2lvbiwgbnVtMyBk b3VibGUgcHJlY2lzaW9uKTsKK0lOU0VSVCBJTlRPIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymwg KG51bTEsIG51bTIsIG51bTMpCisgIFNFTEVDVCByb3VuZChyYW5kb20oKSoxMDApLCByYW5kb20o KSwgcmFuZG9tKCkqNDIKKyAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwMDApIHMoaSk7CitD UkVBVEUgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHggT04gcmVncmVzc190Ymxz cGFjZV90ZXN0X3RibCAobnVtMSk7CisKKy0tIGNoZWNrIHRoYXQgUkVJTkRFWCB3aXRoIFRBQkxF U1BBQ0UgY2hhbmdlIGlzIHRyYW5zYWN0aW9uYWwKK0JFR0lOOworUkVJTkRFWCAoVEFCTEVTUEFD RSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsK K1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcmVncmVzc190Ymxz cGFjZV90ZXN0X3RibDsKK1JPTExCQUNLOworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcwor V0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUg c3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworCistLSBmaXJzdCwgbGV0IHVzIHJlaW5kZXgg YW5kIG1vdmUgdGhlIGVudGlyZSBkYXRhYmFzZSwgYWZ0ZXIgdGhhdCByZXR1cm4gZXZlcnl0aGlu ZyBiYWNrCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIERBVEFCQVNFIHJl Z3Jlc3Npb247IC0tIG9rIHdpdGggd2FybmluZworUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZh dWx0KSBEQVRBQkFTRSByZWdyZXNzaW9uOyAtLSBvayB3aXRoIHdhcm5pbmcKK1NFTEVDVCByZWxu YW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBw Z190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKworLS0gY2hl Y2sgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitSRUlOREVYIChUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAtLSBv aworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsOyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlKSBUQUJMRSBwZ19hdXRoaWQ7IC0tIGZhaWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVz c190YmxzcGFjZSkgU1lTVEVNIENPTkNVUlJFTlRMWSBwb3N0Z3JlczsgLS0gZmFpbAorUkVJTkRF WCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBDT05DVVJSRU5UTFkgcGdfYW07 IC0tIGZhaWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSBJTkRFWCByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gZmFpbAorUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNz X3RibHNwYWNlKSBUQUJMRSBwZ19hbTsgLS0gZmFpbAorCistLSBjaGVjayB0aGF0IGFsbCByZWxh dGlvbnMgbW92ZWQgdG8gbmV3IHRhYmxlc3BhY2UKK1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xh c3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdI RVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKQorT1JERVIgQlkgcmVsbmFtZTsKKworLS0g bW92ZSBpbmRleGVzIGJhY2sgdG8gcGdfZGVmYXVsdCB0YWJsZXNwYWNlCitSRUlOREVYIChUQUJM RVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIENPTkNVUlJFTlRMWSByZWdyZXNzX3RibHNwYWNlX3Rl c3RfdGJsOyAtLSBvaworCistLSBjaGVjayB0aGF0IGFsbCByZWxhdGlvbnMgbW92ZWQgYmFjayB0 byBwZ19kZWZhdWx0CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJs ZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdy ZXNzX3RibHNwYWNlJyk7CisKIC0tIGNyZWF0ZSBhIHNjaGVtYSB3ZSBjYW4gdXNlCiBDUkVBVEUg U0NIRU1BIHRlc3RzY2hlbWE7CiAKQEAgLTk2LDYgKzEzOCwxNCBAQCBTRUxFQ1QgcmVsbmFtZSwg c3BjbmFtZSBGUk9NIHBnX2NhdGFsb2cucGdfdGFibGVzcGFjZSB0LCBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMKIFxkIHRlc3RzY2hlbWEucGFydF9hX2lkeAogXGQrIHRlc3RzY2hlbWEucGFydF9hX2lk eAogCistLSBSRUlOREVYIHBhcnRpdGlvbmVkIGluZGV4ZXMgdG8gbmV3IHRhYmxlc3BhY2UKK1JF SU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgdGVzdHNjaGVtYS5wYXJ0OworXGQg dGVzdHNjaGVtYS5wYXJ0CitcZCB0ZXN0c2NoZW1hLnBhcnQxCitSRUlOREVYIChDT05DVVJSRU5U TFksIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggdGVzdHNjaGVtYS5wYXJ0X2Ff aWR4OworXGQgdGVzdHNjaGVtYS5wYXJ0CitcZCB0ZXN0c2NoZW1hLnBhcnQxCisKIC0tIHBhcnRp dGlvbmVkIHJlbHMgY2Fubm90IHNwZWNpZnkgdGhlIGRlZmF1bHQgdGFibGVzcGFjZS4gIFRoZXNl IGZhaWw6CiBDUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0IChhIGludCBQUklNQVJZIEtFWSkg UEFSVElUSU9OIEJZIExJU1QgKGEpIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKIENSRUFURSBUQUJM RSB0ZXN0c2NoZW1hLmRmbHQgKGEgaW50IFBSSU1BUlkgS0VZIFVTSU5HIElOREVYIFRBQkxFU1BB Q0UgcGdfZGVmYXVsdCkgUEFSVElUSU9OIEJZIExJU1QgKGEpOwpAQCAtMjc5LDYgKzMyOSw5IEBA IEFMVEVSIFRBQkxFIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCBT RVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0CiAtLSBTaG91bGQgc3VjY2VlZAogRFJPUCBUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZDsKIAorRFJPUCBJTkRFWCByZWdyZXNzX3RibHNw YWNlX3Rlc3RfdGJsX2lkeDsKK0RST1AgVEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsK KwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwogCiBEUk9QIFJPTEUgcmVncmVzc190 YWJsZXNwYWNlX3VzZXIxOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFi bGVzcGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJj ZQppbmRleCAxNjJiNTkxYjMxLi4xMTY5ZjAzMThiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL291dHB1 dC90YWJsZXNwYWNlLnNvdXJjZQpAQCAtMjAsNiArMjAsNjUgQEAgRVJST1I6ICB1bnJlY29nbml6 ZWQgcGFyYW1ldGVyICJzb21lX25vbmV4aXN0ZW50X3BhcmFtZXRlciIKIEFMVEVSIFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCA9IDIuMCk7IC0tIGZh aWwKIEVSUk9SOiAgUkVTRVQgbXVzdCBub3QgaW5jbHVkZSB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMK IEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29z dCwgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5KTsgLS0gb2sKKy0tIGNyZWF0ZSB0YWJsZSB0byB0 ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorQ1JFQVRFIFRBQkxFIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmlnaW50LCBudW0yIGRvdWJsZSBwcmVjaXNpb24sIG51 bTMgZG91YmxlIHByZWNpc2lvbik7CitJTlNFUlQgSU5UTyByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf dGJsIChudW0xLCBudW0yLCBudW0zKQorICBTRUxFQ1Qgcm91bmQocmFuZG9tKCkqMTAwKSwgcmFu ZG9tKCksIHJhbmRvbSgpKjQyCisgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMDAwKSBzKGkp OworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4IE9OIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF90YmwgKG51bTEpOworLS0gY2hlY2sgdGhhdCBSRUlOREVYIHdpdGggVEFC TEVTUEFDRSBjaGFuZ2UgaXMgdHJhbnNhY3Rpb25hbAorQkVHSU47CitSRUlOREVYIChUQUJMRVNQ QUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4 OworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsOworUk9MTEJBQ0s7CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNz CitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVS RSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisgcmVsbmFtZSAKKy0tLS0tLS0tLQorKDAg cm93cykKKworLS0gZmlyc3QsIGxldCB1cyByZWluZGV4IGFuZCBtb3ZlIHRoZSBlbnRpcmUgZGF0 YWJhc2UsIGFmdGVyIHRoYXQgcmV0dXJuIGV2ZXJ5dGhpbmcgYmFjaworUkVJTkRFWCAoVEFCTEVT UEFDRSByZWdyZXNzX3RibHNwYWNlKSBEQVRBQkFTRSByZWdyZXNzaW9uOyAtLSBvayB3aXRoIHdh cm5pbmcKK1dBUk5JTkc6ICBjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgaW5kZXhlcyBvbiBz eXN0ZW0gcmVsYXRpb25zLCBza2lwcGluZyBhbGwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVm YXVsdCkgREFUQUJBU0UgcmVncmVzc2lvbjsgLS0gb2sgd2l0aCB3YXJuaW5nCitXQVJOSU5HOiAg Y2Fubm90IGNoYW5nZSB0YWJsZXNwYWNlIG9mIGluZGV4ZXMgb24gc3lzdGVtIHJlbGF0aW9ucywg c2tpcHBpbmcgYWxsCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJs ZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdy ZXNzX3RibHNwYWNlJyk7CisgcmVsbmFtZSAKKy0tLS0tLS0tLQorKDAgcm93cykKKworLS0gY2hl Y2sgUkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitSRUlOREVYIChUQUJMRVNQQUNFIHJl Z3Jlc3NfdGJsc3BhY2UpIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAtLSBv aworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsOyAtLSBvaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlKSBUQUJMRSBwZ19hdXRoaWQ7IC0tIGZhaWwKK0VSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQ6 ICJwZ19hdXRoaWRfcm9sbmFtZV9pbmRleCIgaXMgYSBzeXN0ZW0gY2F0YWxvZworUkVJTkRFWCAo VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBTWVNURU0gQ09OQ1VSUkVOVExZIHBvc3RncmVz OyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCByZWluZGV4IHN5c3RlbSBjYXRhbG9ncyBjb25jdXJy ZW50bHkKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgQ09OQ1VS UkVOVExZIHBnX2FtOyAtLSBmYWlsCitFUlJPUjogIGNhbm5vdCByZWluZGV4IHN5c3RlbSBjYXRh bG9ncyBjb25jdXJyZW50bHkKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSBJTkRFWCBy ZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3QgbW92 ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgInBnX2dsb2JhbCIKK1JFSU5ERVgg KFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcGdfYW07IC0tIGZhaWwKK0VSUk9S OiAgcGVybWlzc2lvbiBkZW5pZWQ6ICJwZ19hbV9uYW1lX2luZGV4IiBpcyBhIHN5c3RlbSBjYXRh bG9nCistLSBjaGVjayB0aGF0IGFsbCByZWxhdGlvbnMgbW92ZWQgdG8gbmV3IHRhYmxlc3BhY2UK K1NFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVD VCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2Un KQorT1JERVIgQlkgcmVsbmFtZTsKKyAgICAgICAgICAgIHJlbG5hbWUgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs X2lkeAorKDEgcm93KQorCistLSBtb3ZlIGluZGV4ZXMgYmFjayB0byBwZ19kZWZhdWx0IHRhYmxl c3BhY2UKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgQ09OQ1VSUkVOVExZ IHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIG9rCistLSBjaGVjayB0aGF0IGFsbCByZWxh dGlvbnMgbW92ZWQgYmFjayB0byBwZ19kZWZhdWx0CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2Ns YXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBX SEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJyk7CisgcmVsbmFtZSAKKy0tLS0tLS0tLQor KDAgcm93cykKKwogLS0gY3JlYXRlIGEgc2NoZW1hIHdlIGNhbiB1c2UKIENSRUFURSBTQ0hFTUEg dGVzdHNjaGVtYTsKIC0tIHRyeSBhIHRhYmxlCkBAIC0xOTksNiArMjU4LDQ3IEBAIFBhcnRpdGlv bnM6IHRlc3RzY2hlbWEucGFydDFfYV9pZHgsCiAgICAgICAgICAgICB0ZXN0c2NoZW1hLnBhcnQy X2FfaWR4CiBUYWJsZXNwYWNlOiAicmVncmVzc190YmxzcGFjZSIKIAorLS0gUkVJTkRFWCBwYXJ0 aXRpb25lZCBpbmRleGVzIHRvIG5ldyB0YWJsZXNwYWNlCitSRUlOREVYIChUQUJMRVNQQUNFIHBn X2RlZmF1bHQpIFRBQkxFIHRlc3RzY2hlbWEucGFydDsKK1xkIHRlc3RzY2hlbWEucGFydAorICAg ICAgICBQYXJ0aXRpb25lZCB0YWJsZSAidGVzdHNjaGVtYS5wYXJ0IgorIENvbHVtbiB8ICBUeXBl ICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IExJU1QgKGEpCitJbmRleGVzOgor ICAgICJwYXJ0X2FfaWR4IiBidHJlZSAoYSkKK051bWJlciBvZiBwYXJ0aXRpb25zOiAyIChVc2Ug XGQrIHRvIGxpc3QgdGhlbS4pCisKK1xkIHRlc3RzY2hlbWEucGFydDEKKyAgICAgICAgICAgICBU YWJsZSAidGVzdHNjaGVtYS5wYXJ0MSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCitQYXJ0aXRpb24gb2Y6IHRlc3RzY2hlbWEucGFydCBGT1IgVkFMVUVTIElOICgxKQorSW5k ZXhlczoKKyAgICAicGFydDFfYV9pZHgiIGJ0cmVlIChhKQorCitSRUlOREVYIChDT05DVVJSRU5U TFksIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggdGVzdHNjaGVtYS5wYXJ0X2Ff aWR4OworXGQgdGVzdHNjaGVtYS5wYXJ0CisgICAgICAgIFBhcnRpdGlvbmVkIHRhYmxlICJ0ZXN0 c2NoZW1hLnBhcnQiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwg RGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0t LS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0 aW9uIGtleTogTElTVCAoYSkKK0luZGV4ZXM6CisgICAgInBhcnRfYV9pZHgiIGJ0cmVlIChhKSwg dGFibGVzcGFjZSAicmVncmVzc190YmxzcGFjZSIKK051bWJlciBvZiBwYXJ0aXRpb25zOiAyIChV c2UgXGQrIHRvIGxpc3QgdGhlbS4pCisKK1xkIHRlc3RzY2hlbWEucGFydDEKKyAgICAgICAgICAg ICBUYWJsZSAidGVzdHNjaGVtYS5wYXJ0MSIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRlc3RzY2hlbWEucGFydCBGT1IgVkFMVUVTIElOICgxKQor SW5kZXhlczoKKyAgICAicGFydDFfYV9pZHgiIGJ0cmVlIChhKSwgdGFibGVzcGFjZSAicmVncmVz c190YmxzcGFjZSIKKwogLS0gcGFydGl0aW9uZWQgcmVscyBjYW5ub3Qgc3BlY2lmeSB0aGUgZGVm YXVsdCB0YWJsZXNwYWNlLiAgVGhlc2UgZmFpbDoKIENSRUFURSBUQUJMRSB0ZXN0c2NoZW1hLmRm bHQgKGEgaW50IFBSSU1BUlkgS0VZKSBQQVJUSVRJT04gQlkgTElTVCAoYSkgVEFCTEVTUEFDRSBw Z19kZWZhdWx0OwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSBkZWZhdWx0IHRhYmxlc3BhY2UgZm9y IHBhcnRpdGlvbmVkIHJlbGF0aW9ucwpAQCAtNzM2LDYgKzgzNiw4IEBAIEFMVEVSIFRBQkxFIEFM TCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCBTRVQgVEFCTEVTUEFDRSBw Z19kZWZhdWx0CiBOT1RJQ0U6ICBubyBtYXRjaGluZyByZWxhdGlvbnMgaW4gdGFibGVzcGFjZSAi cmVncmVzc190YmxzcGFjZV9yZW5hbWVkIiBmb3VuZAogLS0gU2hvdWxkIHN1Y2NlZWQKIERST1Ag VEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7CitEUk9QIElOREVYIHJlZ3Jlc3Nf dGJsc3BhY2VfdGVzdF90YmxfaWR4OworRFJPUCBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3Rf dGJsOwogRFJPUCBTQ0hFTUEgdGVzdHNjaGVtYSBDQVNDQURFOwogTk9USUNFOiAgZHJvcCBjYXNj YWRlcyB0byA2IG90aGVyIG9iamVjdHMKIERFVEFJTDogIGRyb3AgY2FzY2FkZXMgdG8gdGFibGUg dGVzdHNjaGVtYS5mb28KLS0gCjIuMTkuMQoK --=_cc5f51042d13cebfefdd7061a3a1222c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v28-0002-Change-REINDEX-CLUSTER-to-accept-an-option-list.patch Content-Disposition: attachment; filename=v28-0002-Change-REINDEX-CLUSTER-to-accept-an-option-list.patch; size=18965 RnJvbSAzMWFiM2QyMmFlMzc0MzVhMTJhMWE5YzZhN2IwNzhkYjczODZjOTY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlqQHRlbHNhc29mdC5jb20+ CkRhdGU6IEZyaSwgMjcgTWFyIDIwMjAgMTc6NTA6NDYgLTA1MDAKU3ViamVjdDogW1BBVENIIHYy OCAyLzZdIENoYW5nZSBSRUlOREVYL0NMVVNURVIgdG8gYWNjZXB0IGFuIG9wdGlvbiBsaXN0Li4K Ci4ubGlrZSBFWFBMQUlOICguLiksIFZBQ1VVTSAoLi4pLCBhbmQgQU5BTFlaRSAoLi4pLgoKQ2hh bmdlIGRvY3MgaW4gdGhlIHN0eWxlIG9mIFZBQ1VVTS4gIFNlZSBhbHNvOiA1MmRjZmRhNDg3Nzhk MTY2ODNjNjRjYTQzNzIyOTlhMDk5YTE1Yjk2Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVy LnNnbWwgIHwgMjcgKysrKysrKysrKysrKystLS0KIGRvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5z Z21sICB8IDQzICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvY2x1c3Rlci5jIHwgMjggKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYyAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyB8ICA0 ICstLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgIHwgNTQgKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgIHwgMzgg KysrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAg fCAyMiArKysrKysrKysrLS0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oIHwgIDMg Ky0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCB8ICA0ICstLQogMTAgZmlsZXMgY2hh bmdlZCwgMTY3IGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvY2x1c3Rlci5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVyLnNn bWwKaW5kZXggNGRhNjBkOGQ1Ni4uZTZlYmNlMjdlNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9jbHVzdGVyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVyLnNnbWwKQEAg LTIxLDggKzIxLDEzIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5bm9wc2lz ZGl2PgogPHN5bm9wc2lzPgotQ0xVU1RFUiBbVkVSQk9TRV0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbIFVTSU5HIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5pbmRleF9uYW1lPC9yZXBsYWNlYWJsZT4gXQotQ0xVU1RFUiBbVkVS Qk9TRV0KK0NMVVNURVIgW1ZFUkJPU0VdIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbIFVTSU5HIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5pbmRleF9uYW1lPC9yZXBsYWNlYWJsZT4gXQorQ0xVU1RFUiBbVkVS Qk9TRV0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2Vh YmxlPiBbLCAuLi5dICkgXQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBjYW4gYmUgb25lIG9mOjwvcGhyYXNlPgorCisg ICAgVkVSQk9TRSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBs YWNlYWJsZT4gXQorCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTgxLDYg Kzg2LDE1IEBAIENMVVNURVIgW1ZFUkJPU0VdCiAgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRsZT4K IAogICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJh bD5WRVJCT1NFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgor ICAgICAgUHJpbnRzIGEgcHJvZ3Jlc3MgcmVwb3J0IGFzIGVhY2ggdGFibGUgaXMgY2x1c3RlcmVk LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAg ICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtMTAw LDEwICsxMTQsMTUgQEAgQ0xVU1RFUiBbVkVSQk9TRV0KICAgIDwvdmFybGlzdGVudHJ5PgogCiAg ICA8dmFybGlzdGVudHJ5PgotICAgIDx0ZXJtPjxsaXRlcmFsPlZFUkJPU0U8L2xpdGVyYWw+PC90 ZXJtPgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9y ZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAgIFBy aW50cyBhIHByb2dyZXNzIHJlcG9ydCBhcyBlYWNoIHRhYmxlIGlzIGNsdXN0ZXJlZC4KKyAgICAg IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBzZWxlY3RlZCBvcHRpb24gc2hvdWxkIGJlIHR1cm5lZCBv biBvciBvZmYuCisgICAgICBZb3UgY2FuIHdyaXRlIDxsaXRlcmFsPlRSVUU8L2xpdGVyYWw+LCA8 bGl0ZXJhbD5PTjwvbGl0ZXJhbD4sIG9yCisgICAgICA8bGl0ZXJhbD4xPC9saXRlcmFsPiB0byBl bmFibGUgdGhlIG9wdGlvbiwgYW5kIDxsaXRlcmFsPkZBTFNFPC9saXRlcmFsPiwKKyAgICAgIDxs aXRlcmFsPk9GRjwvbGl0ZXJhbD4sIG9yIDxsaXRlcmFsPjA8L2xpdGVyYWw+IHRvIGRpc2FibGUg aXQuICBUaGUKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9y ZXBsYWNlYWJsZT4gdmFsdWUgY2FuIGFsc28KKyAgICAgIGJlIG9taXR0ZWQsIGluIHdoaWNoIGNh c2UgPGxpdGVyYWw+VFJVRTwvbGl0ZXJhbD4gaXMgYXNzdW1lZC4KICAgICAgPC9wYXJhPgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvcmVpbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXgg ZmE0M2UzYTk3Mi4uNjJiYjZlOWQ1NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWlu ZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTI1LDcgKzI1 LDcgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwv cmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KIAogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gY2FuIGJlIG9uZSBvZjo8 L3BocmFzZT4KIAotICAgIFZFUkJPU0UKKyAgICBWRVJCT1NFIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCiA8L3N5bm9wc2lzPgogIDwvcmVm c3lub3BzaXNkaXY+CiAKQEAgLTE0NSwxOSArMTQ1LDYgQEAgUkVJTkRFWCBbICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsg SU4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKLSAgIDx2YXJsaXN0ZW50 cnk+Ci0gICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPjwvdGVybT4KLSAgICA8bGlzdGl0ZW0+Ci0gICAgIDxwYXJhPgotICAgICAgVGhlIG5h bWUgb2YgdGhlIHNwZWNpZmljIGluZGV4LCB0YWJsZSwgb3IgZGF0YWJhc2UgdG8gYmUKLSAgICAg IHJlaW5kZXhlZC4gIEluZGV4IGFuZCB0YWJsZSBuYW1lcyBjYW4gYmUgc2NoZW1hLXF1YWxpZmll ZC4KLSAgICAgIFByZXNlbnRseSwgPGNvbW1hbmQ+UkVJTkRFWCBEQVRBQkFTRTwvY29tbWFuZD4g YW5kIDxjb21tYW5kPlJFSU5ERVggU1lTVEVNPC9jb21tYW5kPgotICAgICAgY2FuIG9ubHkgcmVp bmRleCB0aGUgY3VycmVudCBkYXRhYmFzZSwgc28gdGhlaXIgcGFyYW1ldGVyIG11c3QgbWF0Y2gK LSAgICAgIHRoZSBjdXJyZW50IGRhdGFiYXNlJ3MgbmFtZS4KLSAgICAgPC9wYXJhPgotICAgIDwv bGlzdGl0ZW0+Ci0gICA8L3Zhcmxpc3RlbnRyeT4KLQogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8 dGVybT48bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRl bT4KQEAgLTE4NSw2ICsxNzIsMzQgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KICAgICAgPC9w YXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3Rl bnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVw bGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUg bmFtZSBvZiB0aGUgc3BlY2lmaWMgaW5kZXgsIHRhYmxlLCBvciBkYXRhYmFzZSB0byBiZQorICAg ICAgcmVpbmRleGVkLiAgSW5kZXggYW5kIHRhYmxlIG5hbWVzIGNhbiBiZSBzY2hlbWEtcXVhbGlm aWVkLgorICAgICAgUHJlc2VudGx5LCA8Y29tbWFuZD5SRUlOREVYIERBVEFCQVNFPC9jb21tYW5k PiBhbmQgPGNvbW1hbmQ+UkVJTkRFWCBTWVNURU08L2NvbW1hbmQ+CisgICAgICBjYW4gb25seSBy ZWluZGV4IHRoZSBjdXJyZW50IGRhdGFiYXNlLCBzbyB0aGVpciBwYXJhbWV0ZXIgbXVzdCBtYXRj aAorICAgICAgdGhlIGN1cnJlbnQgZGF0YWJhc2UncyBuYW1lLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAg IDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJs ZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNwZWNpZmllcyB3 aGV0aGVyIHRoZSBzZWxlY3RlZCBvcHRpb24gc2hvdWxkIGJlIHR1cm5lZCBvbiBvciBvZmYuCisg ICAgICBZb3UgY2FuIHdyaXRlIDxsaXRlcmFsPlRSVUU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5PTjwv bGl0ZXJhbD4sIG9yCisgICAgICA8bGl0ZXJhbD4xPC9saXRlcmFsPiB0byBlbmFibGUgdGhlIG9w dGlvbiwgYW5kIDxsaXRlcmFsPkZBTFNFPC9saXRlcmFsPiwKKyAgICAgIDxsaXRlcmFsPk9GRjwv bGl0ZXJhbD4sIG9yIDxsaXRlcmFsPjA8L2xpdGVyYWw+IHRvIGRpc2FibGUgaXQuICBUaGUKKyAg ICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT4g dmFsdWUgY2FuIGFsc28KKyAgICAgIGJlIG9taXR0ZWQsIGluIHdoaWNoIGNhc2UgPGxpdGVyYWw+ VFJVRTwvbGl0ZXJhbD4gaXMgYXNzdW1lZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+ CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICA8L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNlY3QxPgog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jbHVzdGVyLmMKaW5kZXggMGQ2NDdlOTEyYy4uNGEzNjc4ODMxZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NsdXN0ZXIuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdf YW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3RvYXN0aW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv Y2x1c3Rlci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1h bmRzL3Byb2dyZXNzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5jbHVk ZSAiY29tbWFuZHMvdmFjdXVtLmgiCkBAIC0xMDIsOCArMTAzLDI5IEBAIHN0YXRpYyBMaXN0ICpn ZXRfdGFibGVzX3RvX2NsdXN0ZXIoTWVtb3J5Q29udGV4dCBjbHVzdGVyX2NvbnRleHQpOwogICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdm9pZAotY2x1c3RlcihDbHVzdGVyU3RtdCAqc3RtdCwg Ym9vbCBpc1RvcExldmVsKQorY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0ZXJTdG10 ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiB7CisJTGlzdENlbGwJKmxjOworCWludAkJCW9wdGlv bnMgPSAwOworCisJLyogUGFyc2UgbGlzdCBvZiBnZW5lcmljIHBhcmFtZXRlcnMgbm90IGhhbmRs ZWQgYnkgdGhlIHBhcnNlciAqLworCWZvcmVhY2gobGMsIHN0bXQtPnBhcmFtcykKKwl7CisJCURl ZkVsZW0JKm9wdCA9IChEZWZFbGVtICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHN0cmNtcChvcHQt PmRlZm5hbWUsICJ2ZXJib3NlIikgPT0gMCkKKwkJCWlmIChkZWZHZXRCb29sZWFuKG9wdCkpCisJ CQkJb3B0aW9ucyB8PSBDTFVPUFRfVkVSQk9TRTsKKwkJCWVsc2UKKwkJCQlvcHRpb25zICY9IH5D TFVPUFRfVkVSQk9TRTsKKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgQ0xVU1RF UiBvcHRpb24gXCIlc1wiIiwKKwkJCQkJCSBvcHQtPmRlZm5hbWUpLAorCQkJCQkgcGFyc2VyX2Vy cnBvc2l0aW9uKHBzdGF0ZSwgb3B0LT5sb2NhdGlvbikpKTsKKwl9CisKIAlpZiAoc3RtdC0+cmVs YXRpb24gIT0gTlVMTCkKIAl7CiAJCS8qIFRoaXMgaXMgdGhlIHNpbmdsZS1yZWxhdGlvbiBjYXNl LiAqLwpAQCAtMTczLDcgKzE5NSw3IEBAIGNsdXN0ZXIoQ2x1c3RlclN0bXQgKnN0bXQsIGJvb2wg aXNUb3BMZXZlbCkKIAkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCiAJCS8qIERvIHRoZSBq b2IuICovCi0JCWNsdXN0ZXJfcmVsKHRhYmxlT2lkLCBpbmRleE9pZCwgc3RtdC0+b3B0aW9ucywg aXNUb3BMZXZlbCk7CisJCWNsdXN0ZXJfcmVsKHRhYmxlT2lkLCBpbmRleE9pZCwgb3B0aW9ucywg aXNUb3BMZXZlbCk7CiAJfQogCWVsc2UKIAl7CkBAIC0yMjIsNyArMjQ0LDcgQEAgY2x1c3RlcihD bHVzdGVyU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJUHVzaEFjdGl2ZVNuYXBzaG90 KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJCQkvKiBEbyB0aGUgam9iLiAqLwogCQkJY2x1 c3Rlcl9yZWwocnZ0Yy0+dGFibGVPaWQsIHJ2dGMtPmluZGV4T2lkLAotCQkJCQkJc3RtdC0+b3B0 aW9ucyB8IENMVU9QVF9SRUNIRUNLLAorCQkJCQkJb3B0aW9ucyB8IENMVU9QVF9SRUNIRUNLLAog CQkJCQkJaXNUb3BMZXZlbCk7CiAJCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCQkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IDA0MDlhNDBiODIuLjJh NzNmMWNiNmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC0zMzU3LDcgKzMzNTcsNyBAQCBfY29w eUNsdXN0ZXJTdG10KGNvbnN0IENsdXN0ZXJTdG10ICpmcm9tKQogCiAJQ09QWV9OT0RFX0ZJRUxE KHJlbGF0aW9uKTsKIAlDT1BZX1NUUklOR19GSUVMRChpbmRleG5hbWUpOwotCUNPUFlfU0NBTEFS X0ZJRUxEKG9wdGlvbnMpOworCUNPUFlfTk9ERV9GSUVMRChwYXJhbXMpOwogCiAJcmV0dXJuIG5l d25vZGU7CiB9CkBAIC00NDQ5LDcgKzQ0NDksNyBAQCBfY29weVJlaW5kZXhTdG10KGNvbnN0IFJl aW5kZXhTdG10ICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxEKGtpbmQpOwogCUNPUFlfTk9ERV9G SUVMRChyZWxhdGlvbik7CiAJQ09QWV9TVFJJTkdfRklFTEQobmFtZSk7Ci0JQ09QWV9TQ0FMQVJf RklFTEQob3B0aW9ucyk7CisJQ09QWV9OT0RFX0ZJRUxEKHBhcmFtcyk7CiAKIAlyZXR1cm4gbmV3 bm9kZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBlMmQxYjk4N2JmLi4zYzZjNDBhNTBk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0xMjE2LDcgKzEyMTYsNyBAQCBfZXF1YWxDbHVz dGVyU3RtdChjb25zdCBDbHVzdGVyU3RtdCAqYSwgY29uc3QgQ2x1c3RlclN0bXQgKmIpCiB7CiAJ Q09NUEFSRV9OT0RFX0ZJRUxEKHJlbGF0aW9uKTsKIAlDT01QQVJFX1NUUklOR19GSUVMRChpbmRl eG5hbWUpOwotCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKG9wdGlvbnMpOworCUNPTVBBUkVfTk9ERV9G SUVMRChwYXJhbXMpOwogCiAJcmV0dXJuIHRydWU7CiB9CkBAIC0yMTM0LDcgKzIxMzQsNyBAQCBf ZXF1YWxSZWluZGV4U3RtdChjb25zdCBSZWluZGV4U3RtdCAqYSwgY29uc3QgUmVpbmRleFN0bXQg KmIpCiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoa2luZCk7CiAJQ09NUEFSRV9OT0RFX0ZJRUxEKHJl bGF0aW9uKTsKIAlDT01QQVJFX1NUUklOR19GSUVMRChuYW1lKTsKLQlDT01QQVJFX1NDQUxBUl9G SUVMRChvcHRpb25zKTsKKwlDT01QQVJFX05PREVfRklFTEQocGFyYW1zKTsKIAogCXJldHVybiB0 cnVlOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggYzcwZDA2YjBlMy4uNzI5ZjJlNzFmZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CkBAIC01MTUsNyArNTE1LDYgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxs aXN0PglnZW5lcmljX29wdGlvbl9saXN0IGFsdGVyX2dlbmVyaWNfb3B0aW9uX2xpc3QKIAogJXR5 cGUgPGl2YWw+CXJlaW5kZXhfdGFyZ2V0X3R5cGUgcmVpbmRleF90YXJnZXRfbXVsdGl0YWJsZQot JXR5cGUgPGl2YWw+CXJlaW5kZXhfb3B0aW9uX2xpc3QgcmVpbmRleF9vcHRpb25fZWxlbQogCiAl dHlwZSA8bm9kZT4JY29weV9nZW5lcmljX29wdF9hcmcgY29weV9nZW5lcmljX29wdF9hcmdfbGlz dF9pdGVtCiAldHlwZSA8ZGVmZWx0Pgljb3B5X2dlbmVyaWNfb3B0X2VsZW0KQEAgLTgxNzIsOSAr ODE3MSwxMCBAQCBSZWluZGV4U3RtdDoKIAkJCQkJbi0+a2luZCA9ICQyOwogCQkJCQluLT5yZWxh dGlvbiA9ICQ0OwogCQkJCQluLT5uYW1lID0gTlVMTDsKLQkJCQkJbi0+b3B0aW9ucyA9IDA7CisJ CQkJCW4tPnBhcmFtcyA9IE5JTDsKIAkJCQkJaWYgKCQzKQotCQkJCQkJbi0+b3B0aW9ucyB8PSBS RUlOREVYT1BUX0NPTkNVUlJFTlRMWTsKKwkJCQkJCW4tPnBhcmFtcyA9IGxhcHBlbmQobi0+cGFy YW1zLAorCQkJCQkJCQltYWtlRGVmRWxlbSgiY29uY3VycmVudGx5IiwgTlVMTCwgQDMpKTsKIAkJ CQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQogCQkJfCBSRUlOREVYIHJlaW5kZXhfdGFyZ2V0X211 bHRpdGFibGUgb3B0X2NvbmN1cnJlbnRseSBuYW1lCkBAIC04MTgzLDMxICs4MTgzLDM0IEBAIFJl aW5kZXhTdG10OgogCQkJCQluLT5raW5kID0gJDI7CiAJCQkJCW4tPm5hbWUgPSAkNDsKIAkJCQkJ bi0+cmVsYXRpb24gPSBOVUxMOwotCQkJCQluLT5vcHRpb25zID0gMDsKKwkJCQkJbi0+cGFyYW1z ID0gTklMOwogCQkJCQlpZiAoJDMpCi0JCQkJCQluLT5vcHRpb25zIHw9IFJFSU5ERVhPUFRfQ09O Q1VSUkVOVExZOworCQkJCQkJbi0+cGFyYW1zID0gbGFwcGVuZChuLT5wYXJhbXMsCisJCQkJCQkJ CW1ha2VEZWZFbGVtKCJjb25jdXJyZW50bHkiLCBOVUxMLCBAMykpOwogCQkJCQkkJCA9IChOb2Rl ICopbjsKIAkJCQl9Ci0JCQl8IFJFSU5ERVggJygnIHJlaW5kZXhfb3B0aW9uX2xpc3QgJyknIHJl aW5kZXhfdGFyZ2V0X3R5cGUgb3B0X2NvbmN1cnJlbnRseSBxdWFsaWZpZWRfbmFtZQorCQkJfCBS RUlOREVYICcoJyBjb21tb25fb3B0aW9uX2xpc3QgJyknIHJlaW5kZXhfdGFyZ2V0X3R5cGUgb3B0 X2NvbmN1cnJlbnRseSBxdWFsaWZpZWRfbmFtZQogCQkJCXsKIAkJCQkJUmVpbmRleFN0bXQgKm4g PSBtYWtlTm9kZShSZWluZGV4U3RtdCk7CiAJCQkJCW4tPmtpbmQgPSAkNTsKIAkJCQkJbi0+cmVs YXRpb24gPSAkNzsKIAkJCQkJbi0+bmFtZSA9IE5VTEw7Ci0JCQkJCW4tPm9wdGlvbnMgPSAkMzsK KwkJCQkJbi0+cGFyYW1zID0gJDM7CiAJCQkJCWlmICgkNikKLQkJCQkJCW4tPm9wdGlvbnMgfD0g UkVJTkRFWE9QVF9DT05DVVJSRU5UTFk7CisJCQkJCQluLT5wYXJhbXMgPSBsYXBwZW5kKG4tPnBh cmFtcywKKwkJCQkJCQkJbWFrZURlZkVsZW0oImNvbmN1cnJlbnRseSIsIE5VTEwsIEA2KSk7CiAJ CQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgUkVJTkRFWCAnKCcgcmVpbmRleF9vcHRp b25fbGlzdCAnKScgcmVpbmRleF90YXJnZXRfbXVsdGl0YWJsZSBvcHRfY29uY3VycmVudGx5IG5h bWUKKwkJCXwgUkVJTkRFWCAnKCcgY29tbW9uX29wdGlvbl9saXN0ICcpJyByZWluZGV4X3Rhcmdl dF9tdWx0aXRhYmxlIG9wdF9jb25jdXJyZW50bHkgbmFtZQogCQkJCXsKIAkJCQkJUmVpbmRleFN0 bXQgKm4gPSBtYWtlTm9kZShSZWluZGV4U3RtdCk7CiAJCQkJCW4tPmtpbmQgPSAkNTsKIAkJCQkJ bi0+bmFtZSA9ICQ3OwogCQkJCQluLT5yZWxhdGlvbiA9IE5VTEw7Ci0JCQkJCW4tPm9wdGlvbnMg PSAkMzsKKwkJCQkJbi0+cGFyYW1zID0gJDM7CiAJCQkJCWlmICgkNikKLQkJCQkJCW4tPm9wdGlv bnMgfD0gUkVJTkRFWE9QVF9DT05DVVJSRU5UTFk7CisJCQkJCQluLT5wYXJhbXMgPSBsYXBwZW5k KG4tPnBhcmFtcywKKwkJCQkJCQkJbWFrZURlZkVsZW0oImNvbmN1cnJlbnRseSIsIE5VTEwsIEA2 KSk7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KIAkJOwpAQCAtODIyMCwxMyArODIyMyw2 IEBAIHJlaW5kZXhfdGFyZ2V0X211bHRpdGFibGU6CiAJCQl8IFNZU1RFTV9QCQkJCXsgJCQgPSBS RUlOREVYX09CSkVDVF9TWVNURU07IH0KIAkJCXwgREFUQUJBU0UJCQkJeyAkJCA9IFJFSU5ERVhf T0JKRUNUX0RBVEFCQVNFOyB9CiAJCTsKLXJlaW5kZXhfb3B0aW9uX2xpc3Q6Ci0JCQlyZWluZGV4 X29wdGlvbl9lbGVtCQkJCQkJCQl7ICQkID0gJDE7IH0KLQkJCXwgcmVpbmRleF9vcHRpb25fbGlz dCAnLCcgcmVpbmRleF9vcHRpb25fZWxlbQl7ICQkID0gJDEgfCAkMzsgfQotCQk7Ci1yZWluZGV4 X29wdGlvbl9lbGVtOgotCQkJVkVSQk9TRQl7ICQkID0gUkVJTkRFWE9QVF9WRVJCT1NFOyB9Ci0J CTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMTAzNzcsNiArMTAzNzMsNyBAQCBD cmVhdGVDb252ZXJzaW9uU3RtdDoKICAqCiAgKgkJUVVFUlk6CiAgKgkJCQlDTFVTVEVSIFtWRVJC T1NFXSA8cXVhbGlmaWVkX25hbWU+IFsgVVNJTkcgPGluZGV4X25hbWU+IF0KKyAqCQkJCUNMVVNU RVIgW1ZFUkJPU0VdIFsob3B0aW9ucyldIDxxdWFsaWZpZWRfbmFtZT4gWyBVU0lORyA8aW5kZXhf bmFtZT4gXQogICoJCQkJQ0xVU1RFUiBbVkVSQk9TRV0KICAqCQkJCUNMVVNURVIgW1ZFUkJPU0Vd IDxpbmRleF9uYW1lPiBPTiA8cXVhbGlmaWVkX25hbWU+IChmb3IgcHJlLTguMykKICAqCkBAIC0x MDM4OCw5ICsxMDM4NSwxOCBAQCBDbHVzdGVyU3RtdDoKIAkJCQkJQ2x1c3RlclN0bXQgKm4gPSBt YWtlTm9kZShDbHVzdGVyU3RtdCk7CiAJCQkJCW4tPnJlbGF0aW9uID0gJDM7CiAJCQkJCW4tPmlu ZGV4bmFtZSA9ICQ0OwotCQkJCQluLT5vcHRpb25zID0gMDsKKwkJCQkJbi0+cGFyYW1zID0gTklM OwogCQkJCQlpZiAoJDIpCi0JCQkJCQluLT5vcHRpb25zIHw9IENMVU9QVF9WRVJCT1NFOworCQkJ CQkJbi0+cGFyYW1zID0gbGFwcGVuZChuLT5wYXJhbXMsIG1ha2VEZWZFbGVtKCJ2ZXJib3NlIiwg TlVMTCwgQDIpKTsKKwkJCQkJJCQgPSAoTm9kZSopbjsKKwkJCQl9CisKKwkJCXwgQ0xVU1RFUiAn KCcgY29tbW9uX29wdGlvbl9saXN0ICcpJyBxdWFsaWZpZWRfbmFtZSBjbHVzdGVyX2luZGV4X3Nw ZWNpZmljYXRpb24KKwkJCQl7CisJCQkJCUNsdXN0ZXJTdG10ICpuID0gbWFrZU5vZGUoQ2x1c3Rl clN0bXQpOworCQkJCQluLT5yZWxhdGlvbiA9ICQ1OworCQkJCQluLT5pbmRleG5hbWUgPSAkNjsK KwkJCQkJbi0+cGFyYW1zID0gJDM7CiAJCQkJCSQkID0gKE5vZGUqKW47CiAJCQkJfQogCQkJfCBD TFVTVEVSIG9wdF92ZXJib3NlCkBAIC0xMDM5OCw5ICsxMDQwNCw5IEBAIENsdXN0ZXJTdG10Ogog CQkJCQlDbHVzdGVyU3RtdCAqbiA9IG1ha2VOb2RlKENsdXN0ZXJTdG10KTsKIAkJCQkJbi0+cmVs YXRpb24gPSBOVUxMOwogCQkJCQluLT5pbmRleG5hbWUgPSBOVUxMOwotCQkJCQluLT5vcHRpb25z ID0gMDsKKwkJCQkJbi0+cGFyYW1zID0gTklMOwogCQkJCQlpZiAoJDIpCi0JCQkJCQluLT5vcHRp b25zIHw9IENMVU9QVF9WRVJCT1NFOworCQkJCQkJbi0+cGFyYW1zID0gbGFwcGVuZChuLT5wYXJh bXMsIG1ha2VEZWZFbGVtKCJ2ZXJib3NlIiwgTlVMTCwgQDIpKTsKIAkJCQkJJCQgPSAoTm9kZSop bjsKIAkJCQl9CiAJCQkvKiBrZXB0IGZvciBwcmUtOC4zIGNvbXBhdGliaWxpdHkgKi8KQEAgLTEw NDA5LDkgKzEwNDE1LDkgQEAgQ2x1c3RlclN0bXQ6CiAJCQkJCUNsdXN0ZXJTdG10ICpuID0gbWFr ZU5vZGUoQ2x1c3RlclN0bXQpOwogCQkJCQluLT5yZWxhdGlvbiA9ICQ1OwogCQkJCQluLT5pbmRl eG5hbWUgPSAkMzsKLQkJCQkJbi0+b3B0aW9ucyA9IDA7CisJCQkJCW4tPnBhcmFtcyA9IE5JTDsK IAkJCQkJaWYgKCQyKQotCQkJCQkJbi0+b3B0aW9ucyB8PSBDTFVPUFRfVkVSQk9TRTsKKwkJCQkJ CW4tPnBhcmFtcyA9IGxhcHBlbmQobi0+cGFyYW1zLCBtYWtlRGVmRWxlbSgidmVyYm9zZSIsIE5V TEwsIEAyKSk7CiAJCQkJCSQkID0gKE5vZGUqKW47CiAJCQkJfQogCQk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmlu ZGV4IDlhMzUxNDdiMjYuLjBjMWI1MDIwMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3Av dXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC01MjYsNiArNTI2 LDM2IEBAIFByb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCQkJCQkJZGVzdCwg cWMpOwogfQogCisvKiBQYXJzZSBwYXJhbXMgbm90IHBhcnNlZCBieSB0aGUgZ3JhbW1hciAqLwor c3RhdGljCit2b2lkIHBhcnNlX3JlaW5kZXhfcGFyYW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVp bmRleFN0bXQgKnN0bXQsIGludCAqb3B0aW9ucykKK3sKKwlMaXN0Q2VsbCAqbGM7CisJZm9yZWFj aChsYywgc3RtdC0+cGFyYW1zKQorCXsKKwkJRGVmRWxlbSAgICAqb3B0ID0gKERlZkVsZW0gKikg bGZpcnN0KGxjKTsKKworCQlpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgInZlcmJvc2UiKSA9PSAw KQorCQl7CisJCQlpZiAoZGVmR2V0Qm9vbGVhbihvcHQpKQorCQkJCSpvcHRpb25zIHw9IFJFSU5E RVhPUFRfVkVSQk9TRTsKKwkJCWVsc2UKKwkJCQkqb3B0aW9ucyAmPSB+UkVJTkRFWE9QVF9WRVJC T1NFOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJjb25jdXJyZW50bHki KSA9PSAwKQorCQkJaWYgKGRlZkdldEJvb2xlYW4ob3B0KSkKKwkJCQkqb3B0aW9ucyB8PSBSRUlO REVYT1BUX0NPTkNVUlJFTlRMWTsKKwkJCWVsc2UKKwkJCQkqb3B0aW9ucyAmPSB+UkVJTkRFWE9Q VF9DT05DVVJSRU5UTFk7CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygidW5yZWNvZ25pemVkIFJFSU5E RVggb3B0aW9uIFwiJXNcIiIsCisJCQkJCQkgb3B0LT5kZWZuYW1lKSwKKwkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihwc3RhdGUsIG9wdC0+bG9jYXRpb24pKSk7CisJfQorfQorCiAvKgogICogc3Rh bmRhcmRfUHJvY2Vzc1V0aWxpdHkgaXRzZWxmIGRlYWxzIG9ubHkgd2l0aCB1dGlsaXR5IGNvbW1h bmRzIGZvcgogICogd2hpY2ggd2UgZG8gbm90IHByb3ZpZGUgZXZlbnQgdHJpZ2dlciBzdXBwb3J0 LiAgQ29tbWFuZHMgdGhhdCBkbyBoYXZlCkBAIC04MTgsNyArODQ4LDcgQEAgc3RhbmRhcmRfUHJv Y2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJYnJlYWs7CiAKIAkJY2FzZSBUX0Ns dXN0ZXJTdG10OgotCQkJY2x1c3RlcigoQ2x1c3RlclN0bXQgKikgcGFyc2V0cmVlLCBpc1RvcExl dmVsKTsKKwkJCWNsdXN0ZXIocHN0YXRlLCAoQ2x1c3RlclN0bXQgKikgcGFyc2V0cmVlLCBpc1Rv cExldmVsKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVF9WYWN1dW1TdG10OgpAQCAtOTE4LDggKzk0 OCwxMCBAQCBzdGFuZGFyZF9Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsCiAJCWNh c2UgVF9SZWluZGV4U3RtdDoKIAkJCXsKIAkJCQlSZWluZGV4U3RtdCAqc3RtdCA9IChSZWluZGV4 U3RtdCAqKSBwYXJzZXRyZWU7CisJCQkJaW50IG9wdGlvbnMgPSAwOwogCi0JCQkJaWYgKChzdG10 LT5vcHRpb25zICYgUkVJTkRFWE9QVF9DT05DVVJSRU5UTFkpICE9IDApCisJCQkJcGFyc2VfcmVp bmRleF9wYXJhbXMocHN0YXRlLCBzdG10LCAmb3B0aW9ucyk7CisJCQkJaWYgKG9wdGlvbnMgJiBS RUlOREVYT1BUX0NPTkNVUlJFTlRMWSkKIAkJCQkJUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayhp c1RvcExldmVsLAogCQkJCQkJCQkJCQkgICJSRUlOREVYIENPTkNVUlJFTlRMWSIpOwogCkBAIC05 NDcsNyArOTc5LDcgQEAgc3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10 LAogCQkJCQkJCQkJCQkJICAoc3RtdC0+a2luZCA9PSBSRUlOREVYX09CSkVDVF9TQ0hFTUEpID8g IlJFSU5ERVggU0NIRU1BIiA6CiAJCQkJCQkJCQkJCQkgIChzdG10LT5raW5kID09IFJFSU5ERVhf T0JKRUNUX1NZU1RFTSkgPyAiUkVJTkRFWCBTWVNURU0iIDoKIAkJCQkJCQkJCQkJCSAgIlJFSU5E RVggREFUQUJBU0UiKTsKLQkJCQkJCVJlaW5kZXhNdWx0aXBsZVRhYmxlcyhzdG10LT5uYW1lLCBz dG10LT5raW5kLCBzdG10LT5vcHRpb25zKTsKKwkJCQkJCVJlaW5kZXhNdWx0aXBsZVRhYmxlcyhz dG10LT5uYW1lLCBzdG10LT5raW5kLCBvcHRpb25zKTsKIAkJCQkJCWJyZWFrOwogCQkJCQlkZWZh dWx0OgogCQkJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5jCmluZGV4IDljNmY1ZWNiNmEuLmM2OGU0YjZkNWQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmMKQEAgLTIyNTksMjEgKzIyNTksMzMgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRl eHQsIGludCBzdGFydCwgaW50IGVuZCkKIC8qIENMVVNURVIgKi8KIAllbHNlIGlmIChNYXRjaGVz KCJDTFVTVEVSIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0 X29mX2NsdXN0ZXJhYmxlcywgIlVOSU9OIFNFTEVDVCAnVkVSQk9TRSciKTsKLQllbHNlIGlmIChN YXRjaGVzKCJDTFVTVEVSIiwgIlZFUkJPU0UiKSkKKwllbHNlIGlmIChNYXRjaGVzKCJDTFVTVEVS IiwgIlZFUkJPU0UiKSB8fAorCQkJIE1hdGNoZXMoIkNMVVNURVIiLCAiKCopIikpCiAJCUNPTVBM RVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2NsdXN0ZXJhYmxlcywgTlVM TCk7CiAJLyogSWYgd2UgaGF2ZSBDTFVTVEVSIDxzdGg+LCB0aGVuIGFkZCAiVVNJTkciICovCi0J ZWxzZSBpZiAoTWF0Y2hlcygiQ0xVU1RFUiIsIE1hdGNoQW55RXhjZXB0KCJWRVJCT1NFfE9OIikp KQorCWVsc2UgaWYgKE1hdGNoZXMoIkNMVVNURVIiLCBNYXRjaEFueUV4Y2VwdCgiVkVSQk9TRXxP TnwofCgqKSIpKSkKIAkJQ09NUExFVEVfV0lUSCgiVVNJTkciKTsKIAkvKiBJZiB3ZSBoYXZlIENM VVNURVIgVkVSQk9TRSA8c3RoPiwgdGhlbiBhZGQgIlVTSU5HIiAqLwotCWVsc2UgaWYgKE1hdGNo ZXMoIkNMVVNURVIiLCAiVkVSQk9TRSIsIE1hdGNoQW55KSkKKwllbHNlIGlmIChNYXRjaGVzKCJD TFVTVEVSIiwgIlZFUkJPU0V8KCopIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJVU0lO RyIpOwogCS8qIElmIHdlIGhhdmUgQ0xVU1RFUiA8c3RoPiBVU0lORywgdGhlbiBhZGQgdGhlIGlu ZGV4IGFzIHdlbGwgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDTFVTVEVSIiwgTWF0Y2hBbnksICJV U0lORyIpIHx8Ci0JCQkgTWF0Y2hlcygiQ0xVU1RFUiIsICJWRVJCT1NFIiwgTWF0Y2hBbnksICJV U0lORyIpKQorCQkJIE1hdGNoZXMoIkNMVVNURVIiLCAiVkVSQk9TRXwoKikiLCBNYXRjaEFueSwg IlVTSU5HIikpCiAJewogCQljb21wbGV0aW9uX2luZm9fY2hhcnAgPSBwcmV2Ml93ZDsKIAkJQ09N UExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfaW5kZXhfb2ZfdGFibGUpOwogCX0KKwllbHNlIGlm IChIZWFkTWF0Y2hlcygiQ0xVU1RFUiIsICIoKiIpICYmCisJCQkgIUhlYWRNYXRjaGVzKCJDTFVT VEVSIiwgIigqKSIpKQorCXsKKwkJLyoKKwkJICogVGhpcyBmaXJlcyBpZiB3ZSdyZSBpbiBhbiB1 bmZpbmlzaGVkIHBhcmVudGhlc2l6ZWQgb3B0aW9uIGxpc3QuCisJCSAqIGdldF9wcmV2aW91c193 b3JkcyB0cmVhdHMgYSBjb21wbGV0ZWQgcGFyZW50aGVzaXplZCBvcHRpb24gbGlzdCBhcworCQkg KiBvbmUgd29yZCwgc28gdGhlIGFib3ZlIHRlc3QgaXMgY29ycmVjdC4KKwkJICovCisJCWlmIChl bmRzX3dpdGgocHJldl93ZCwgJygnKSB8fCBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJCUNP TVBMRVRFX1dJVEgoIlZFUkJPU0UiKTsKKwl9CiAKIC8qIENPTU1FTlQgKi8KIAllbHNlIGlmIChN YXRjaGVzKCJDT01NRU5UIikpCkBAIC0zNDgxLDcgKzM0OTMsNyBAQCBwc3FsX2NvbXBsZXRpb24o Y29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogCQkgKiBvbmUgd29yZCwgc28g dGhlIGFib3ZlIHRlc3QgaXMgY29ycmVjdC4KIAkJICovCiAJCWlmIChlbmRzX3dpdGgocHJldl93 ZCwgJygnKSB8fCBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKLQkJCUNPTVBMRVRFX1dJVEgoIlZF UkJPU0UiKTsKKwkJCUNPTVBMRVRFX1dJVEgoIkNPTkNVUlJFTlRMWSIsICJWRVJCT1NFIik7CiAJ fQogCiAvKiBTRUNVUklUWSBMQUJFTCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvY2x1c3Rlci5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oCmluZGV4IDFlYjE0 NDIwNGIuLmM3NjFiOTU3NWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NsdXN0 ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmgKQEAgLTE0LDExICsxNCwx MiBAQAogI2RlZmluZSBDTFVTVEVSX0gKIAogI2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIK KyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9kZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5o IgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAKIAotZXh0ZXJuIHZvaWQgY2x1c3RlcihD bHVzdGVyU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKTsKK2V4dGVybiB2b2lkIGNsdXN0ZXIo UGFyc2VTdGF0ZSAqcHN0YXRlLCBDbHVzdGVyU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKTsK IGV4dGVybiB2b2lkIGNsdXN0ZXJfcmVsKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkLCBpbnQg b3B0aW9ucywKIAkJCQkJCWJvb2wgaXNUb3BMZXZlbCk7CiBleHRlcm4gdm9pZCBjaGVja19pbmRl eF9pc19jbHVzdGVyYWJsZShSZWxhdGlvbiBPbGRIZWFwLCBPaWQgaW5kZXhPaWQsCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKaW5kZXggNjBjMmY0NTQ2Ni4uZDNlNjYwZjZiOSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaApAQCAtMzIxMSw3ICszMjExLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2x1c3RlclN0bXQK IAlOb2RlVGFnCQl0eXBlOwogCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gYmVp bmcgaW5kZXhlZCwgb3IgTlVMTCBpZiBhbGwgKi8KIAljaGFyCSAgICppbmRleG5hbWU7CQkvKiBv cmlnaW5hbCBpbmRleCBkZWZpbmVkICovCi0JaW50CQkJb3B0aW9uczsJCS8qIE9SIG9mIENsdXN0 ZXJPcHRpb24gZmxhZ3MgKi8KKwlMaXN0CQkqcGFyYW1zOwkJLyogbGlzdCBvZiBEZWZFbGVtIG5v ZGVzICovCiB9IENsdXN0ZXJTdG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0z MzcyLDcgKzMzNzIsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWluZGV4U3RtdAogCQkJCQkJCQkgKiBl dGMuICovCiAJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiBUYWJsZSBvciBpbmRleCB0byByZWlu ZGV4ICovCiAJY29uc3QgY2hhciAqbmFtZTsJCQkvKiBuYW1lIG9mIGRhdGFiYXNlIHRvIHJlaW5k ZXggKi8KLQlpbnQJCQlvcHRpb25zOwkJLyogUmVpbmRleCBvcHRpb25zIGZsYWdzICovCisJTGlz dAkJKnBhcmFtczsJCS8qIGxpc3Qgb2YgRGVmRWxlbSBub2RlcyAqLwogfSBSZWluZGV4U3RtdDsK IAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAKMi4xOS4xCgo= --=_cc5f51042d13cebfefdd7061a3a1222c Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v28-0001-Refactor-gram.y-in-order-to-add-a-common-parenth.patch Content-Disposition: attachment; filename=v28-0001-Refactor-gram.y-in-order-to-add-a-common-parenth.patch; size=5020 RnJvbSA1OTEyMTQwOWRlNzQ2ZjE5MDdhOWRjZDA4MDRlZTUwMGRlNmUxOWI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMiBTZXAgMjAyMCAyMzowNToxNiArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjI4IDEvNl0gUmVmYWN0b3IgZ3JhbS55IGluIG9yZGVyIHRvIGFkZCBhIGNvbW1vbgog cGFyZW50aGVzaXplZCBvcHRpb24gbGlzdAoKUHJldmlvdXNseSB0aGVyZSB3ZXJlIHR3byBpZGVu dGljYWwgb3B0aW9uIGxpc3RzCihleHBsYWluX29wdGlvbl9saXN0IGFuZCB2YWNfYW5hbHl6ZV9v cHRpb25fbGlzdCkgKyB2ZXJ5IHNpbWlsYXIKcmVpbmRleF9vcHRpb25fbGlzdC4gIEl0IGRvZXMg bm90IHNlZW0gdG8gbWFrZQpzZW5zZSB0byBtYWludGFpbiBpZGVudGljYWwgb3B0aW9uIGxpc3Rz IGluIHRoZSBncmFtbWFyLCBzaW5jZQphbGwgbmV3IG9wdGlvbnMgYXJlIGFkZGVkIGFuZCBwYXJz ZWQgaW4gdGhlIGJhY2tlbmQgY29kZS4KClRoYXQgd2F5LCBuZXcgY29tbW9uX29wdGlvbl9saXN0 IGFkZGVkIGluIG9yZGVyIHRvIHJlcGxhY2UgYWxsCmV4cGxhaW5fb3B0aW9uX2xpc3QsIHZhY19h bmFseXplX29wdGlvbl9saXN0IGFuZCBwcm9iYWJseQphbHNvIHJlaW5kZXhfb3B0aW9uX2xpc3Qu Ci0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSB8IDYxICsrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDQ3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDE3NjUzZWYzYTcuLmM3MGQwNmIwZTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueQpAQCAtMzE1LDEwICszMTUsMTAgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsK IAkJCQljcmVhdGVfZXh0ZW5zaW9uX29wdF9pdGVtIGFsdGVyX2V4dGVuc2lvbl9vcHRfaXRlbQog CiAldHlwZSA8aXZhbD4Jb3B0X2xvY2sgbG9ja190eXBlIGNhc3RfY29udGV4dAotJXR5cGUgPHN0 cj4JCXZhY19hbmFseXplX29wdGlvbl9uYW1lCi0ldHlwZSA8ZGVmZWx0Pgl2YWNfYW5hbHl6ZV9v cHRpb25fZWxlbQotJXR5cGUgPGxpc3Q+CXZhY19hbmFseXplX29wdGlvbl9saXN0Ci0ldHlwZSA8 bm9kZT4JdmFjX2FuYWx5emVfb3B0aW9uX2FyZworJXR5cGUgPHN0cj4JCWNvbW1vbl9vcHRpb25f bmFtZQorJXR5cGUgPGRlZmVsdD4JY29tbW9uX29wdGlvbl9lbGVtCisldHlwZSA8bGlzdD4JY29t bW9uX29wdGlvbl9saXN0CisldHlwZSA8bm9kZT4JY29tbW9uX29wdGlvbl9hcmcKICV0eXBlIDxk ZWZlbHQ+CWRyb3Bfb3B0aW9uCiAldHlwZSA8Ym9vbGVhbj4Jb3B0X29yX3JlcGxhY2Ugb3B0X25v CiAJCQkJb3B0X2dyYW50X2dyYW50X29wdGlvbiBvcHRfZ3JhbnRfYWRtaW5fb3B0aW9uCkBAIC01 MTMsMTAgKzUxMyw2IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JZ2Vu ZXJpY19vcHRpb25fYXJnCiAldHlwZSA8ZGVmZWx0PglnZW5lcmljX29wdGlvbl9lbGVtIGFsdGVy X2dlbmVyaWNfb3B0aW9uX2VsZW0KICV0eXBlIDxsaXN0PglnZW5lcmljX29wdGlvbl9saXN0IGFs dGVyX2dlbmVyaWNfb3B0aW9uX2xpc3QKLSV0eXBlIDxzdHI+CQlleHBsYWluX29wdGlvbl9uYW1l Ci0ldHlwZSA8bm9kZT4JZXhwbGFpbl9vcHRpb25fYXJnCi0ldHlwZSA8ZGVmZWx0PglleHBsYWlu X29wdGlvbl9lbGVtCi0ldHlwZSA8bGlzdD4JZXhwbGFpbl9vcHRpb25fbGlzdAogCiAldHlwZSA8 aXZhbD4JcmVpbmRleF90YXJnZXRfdHlwZSByZWluZGV4X3RhcmdldF9tdWx0aXRhYmxlCiAldHlw ZSA8aXZhbD4JcmVpbmRleF9vcHRpb25fbGlzdCByZWluZGV4X29wdGlvbl9lbGVtCkBAIC0xMDQ1 NCw3ICsxMDQ1MCw3IEBAIFZhY3V1bVN0bXQ6IFZBQ1VVTSBvcHRfZnVsbCBvcHRfZnJlZXplIG9w dF92ZXJib3NlIG9wdF9hbmFseXplIG9wdF92YWN1dW1fcmVsYXRpCiAJCQkJCW4tPmlzX3ZhY3V1 bWNtZCA9IHRydWU7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCXwgVkFDVVVNICco JyB2YWNfYW5hbHl6ZV9vcHRpb25fbGlzdCAnKScgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CisJ CQl8IFZBQ1VVTSAnKCcgY29tbW9uX29wdGlvbl9saXN0ICcpJyBvcHRfdmFjdXVtX3JlbGF0aW9u X2xpc3QKIAkJCQl7CiAJCQkJCVZhY3V1bVN0bXQgKm4gPSBtYWtlTm9kZShWYWN1dW1TdG10KTsK IAkJCQkJbi0+b3B0aW9ucyA9ICQzOwpAQCAtMTA0NzUsNyArMTA0NzEsNyBAQCBBbmFseXplU3Rt dDogYW5hbHl6ZV9rZXl3b3JkIG9wdF92ZXJib3NlIG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAog CQkJCQluLT5pc192YWN1dW1jbWQgPSBmYWxzZTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJ fQotCQkJfCBhbmFseXplX2tleXdvcmQgJygnIHZhY19hbmFseXplX29wdGlvbl9saXN0ICcpJyBv cHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKKwkJCXwgYW5hbHl6ZV9rZXl3b3JkICcoJyBjb21tb25f b3B0aW9uX2xpc3QgJyknIG9wdF92YWN1dW1fcmVsYXRpb25fbGlzdAogCQkJCXsKIAkJCQkJVmFj dXVtU3RtdCAqbiA9IG1ha2VOb2RlKFZhY3V1bVN0bXQpOwogCQkJCQluLT5vcHRpb25zID0gJDM7 CkBAIC0xMDQ4NSwxMiArMTA0ODEsMTIgQEAgQW5hbHl6ZVN0bXQ6IGFuYWx5emVfa2V5d29yZCBv cHRfdmVyYm9zZSBvcHRfdmFjdXVtX3JlbGF0aW9uX2xpc3QKIAkJCQl9CiAJCTsKIAotdmFjX2Fu YWx5emVfb3B0aW9uX2xpc3Q6Ci0JCQl2YWNfYW5hbHl6ZV9vcHRpb25fZWxlbQorY29tbW9uX29w dGlvbl9saXN0OgorCQkJY29tbW9uX29wdGlvbl9lbGVtCiAJCQkJewogCQkJCQkkJCA9IGxpc3Rf bWFrZTEoJDEpOwogCQkJCX0KLQkJCXwgdmFjX2FuYWx5emVfb3B0aW9uX2xpc3QgJywnIHZhY19h bmFseXplX29wdGlvbl9lbGVtCisJCQl8IGNvbW1vbl9vcHRpb25fbGlzdCAnLCcgY29tbW9uX29w dGlvbl9lbGVtCiAJCQkJewogCQkJCQkkJCA9IGxhcHBlbmQoJDEsICQzKTsKIAkJCQl9CkBAIC0x MDUwMSwxOSArMTA0OTcsMTkgQEAgYW5hbHl6ZV9rZXl3b3JkOgogCQkJfCBBTkFMWVNFIC8qIEJy aXRpc2ggKi8JCQkJCXt9CiAJCTsKIAotdmFjX2FuYWx5emVfb3B0aW9uX2VsZW06Ci0JCQl2YWNf YW5hbHl6ZV9vcHRpb25fbmFtZSB2YWNfYW5hbHl6ZV9vcHRpb25fYXJnCitjb21tb25fb3B0aW9u X2VsZW06CisJCQljb21tb25fb3B0aW9uX25hbWUgY29tbW9uX29wdGlvbl9hcmcKIAkJCQl7CiAJ CQkJCSQkID0gbWFrZURlZkVsZW0oJDEsICQyLCBAMSk7CiAJCQkJfQogCQk7CiAKLXZhY19hbmFs eXplX29wdGlvbl9uYW1lOgorY29tbW9uX29wdGlvbl9uYW1lOgogCQkJTm9uUmVzZXJ2ZWRXb3Jk CQkJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCBhbmFseXplX2tleXdvcmQJCQkJCQl7ICQkID0gImFu YWx5emUiOyB9CiAJCTsKIAotdmFjX2FuYWx5emVfb3B0aW9uX2FyZzoKK2NvbW1vbl9vcHRpb25f YXJnOgogCQkJb3B0X2Jvb2xlYW5fb3Jfc3RyaW5nCQkJCQl7ICQkID0gKE5vZGUgKikgbWFrZVN0 cmluZygkMSk7IH0KIAkJCXwgTnVtZXJpY09ubHkJCQl7ICQkID0gKE5vZGUgKikgJDE7IH0KIAkJ CXwgLyogRU1QVFkgKi8JCSAJCQkJCXsgJCQgPSBOVUxMOyB9CkBAIC0xMDU5NSw3ICsxMDU5MSw3 IEBAIEV4cGxhaW5TdG10OgogCQkJCQluLT5vcHRpb25zID0gbGlzdF9tYWtlMShtYWtlRGVmRWxl bSgidmVyYm9zZSIsIE5VTEwsIEAyKSk7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0J CXwgRVhQTEFJTiAnKCcgZXhwbGFpbl9vcHRpb25fbGlzdCAnKScgRXhwbGFpbmFibGVTdG10CisJ CXwgRVhQTEFJTiAnKCcgY29tbW9uX29wdGlvbl9saXN0ICcpJyBFeHBsYWluYWJsZVN0bXQKIAkJ CQl7CiAJCQkJCUV4cGxhaW5TdG10ICpuID0gbWFrZU5vZGUoRXhwbGFpblN0bXQpOwogCQkJCQlu LT5xdWVyeSA9ICQ1OwpAQCAtMTA2MTYsMzUgKzEwNjEyLDYgQEAgRXhwbGFpbmFibGVTdG10Ogog CQkJfCBFeGVjdXRlU3RtdAkJCQkJLyogYnkgZGVmYXVsdCBhbGwgYXJlICQkPSQxICovCiAJCTsK IAotZXhwbGFpbl9vcHRpb25fbGlzdDoKLQkJCWV4cGxhaW5fb3B0aW9uX2VsZW0KLQkJCQl7Ci0J CQkJCSQkID0gbGlzdF9tYWtlMSgkMSk7Ci0JCQkJfQotCQkJfCBleHBsYWluX29wdGlvbl9saXN0 ICcsJyBleHBsYWluX29wdGlvbl9lbGVtCi0JCQkJewotCQkJCQkkJCA9IGxhcHBlbmQoJDEsICQz KTsKLQkJCQl9Ci0JCTsKLQotZXhwbGFpbl9vcHRpb25fZWxlbToKLQkJCWV4cGxhaW5fb3B0aW9u X25hbWUgZXhwbGFpbl9vcHRpb25fYXJnCi0JCQkJewotCQkJCQkkJCA9IG1ha2VEZWZFbGVtKCQx LCAkMiwgQDEpOwotCQkJCX0KLQkJOwotCi1leHBsYWluX29wdGlvbl9uYW1lOgotCQkJTm9uUmVz ZXJ2ZWRXb3JkCQkJeyAkJCA9ICQxOyB9Ci0JCQl8IGFuYWx5emVfa2V5d29yZAkJeyAkJCA9ICJh bmFseXplIjsgfQotCQk7Ci0KLWV4cGxhaW5fb3B0aW9uX2FyZzoKLQkJCW9wdF9ib29sZWFuX29y X3N0cmluZwl7ICQkID0gKE5vZGUgKikgbWFrZVN0cmluZygkMSk7IH0KLQkJCXwgTnVtZXJpY09u bHkJCQl7ICQkID0gKE5vZGUgKikgJDE7IH0KLQkJCXwgLyogRU1QVFkgKi8JCQl7ICQkID0gTlVM TDsgfQotCQk7Ci0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCQlRVUVSWToKCmJhc2Ut Y29tbWl0OiA3MzNmYTlhYTUxYzUyNjU4MmYxMDBhYTBkMzc1ZTBlYjlhNmJjZThiCi0tIAoyLjE5 LjEKCg== --=_cc5f51042d13cebfefdd7061a3a1222c--