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 1kjjvI-0000Yo-4F for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Nov 2020 14:13:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kjjvF-0000kU-KL for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Nov 2020 14:12:57 +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 1kjjvE-0000kN-PO for pgsql-hackers@lists.postgresql.org; Mon, 30 Nov 2020 14:12:57 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kjjv3-0003JJ-Jy for pgsql-hackers@lists.postgresql.org; Mon, 30 Nov 2020 14:12:55 +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 DD70821C552C; Mon, 30 Nov 2020 17:12:42 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1606745562; bh=MrvXxVkb01bhCZwvrkbZP1Yo8F0jyk9cRXrUEjF7Y0c=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=RNz7fbwRDvncQy6NH02pNdf7kMOEQynFT4mEPbO18N7Byg1/VuDA9MLv4BHSHZF8d iqWkhSwc1lvdt+s3oIssSpoMETF/LjVHKO5ZdySLrim59dpGrTS3h2TmfonySZDeAw whRBkULtWF4sGAcHV9K2xP+sy72LVYJ2/AZlbCTw= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_680b1b8a9b2a839baed301219b4ad717" Content-Transfer-Encoding: 7bit Date: Mon, 30 Nov 2020 17:12:42 +0300 From: Alexey Kondratov To: Michael Paquier Cc: Justin Pryzby , 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: References: <20200908233951.GC18552@telsasoft.com> <20200909000238.GA1563@alvherre.pgsql> <20200909001757.GD18552@telsasoft.com> <20200909122200.GA2743@paquier.xyz> <20200909153629.GG18552@telsasoft.com> <20201031183611.GA22691@telsasoft.com> <20201124153123.GO24052@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 --=_680b1b8a9b2a839baed301219b4ad717 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2020-11-30 14:33, Michael Paquier wrote: > On Tue, Nov 24, 2020 at 09:31:23AM -0600, Justin Pryzby wrote: >> @cfbot: rebased > > Catching up with the activity here, I can see four different things in > the patch set attached: > 1) Refactoring of the grammar of CLUSTER, VACUUM, ANALYZE and REINDEX > to support values in parameters. > 2) Tablespace change for REINDEX. > 3) Tablespace change for VACUUM FULL/CLUSTER. > 4) Tablespace change for indexes with VACUUM FULL/CLUSTER. > > I am not sure yet about the last three points, so let's begin with 1) > that is dealt with in 0001 and 0002. I have spent some time on 0001, > renaming the rule names to be less generic than "common", and applied > it. 0002 looks to be in rather good shape, still there are a few > things that have caught my eyes. I'll look at that more closely > tomorrow. > Thanks. I have rebased the remaining patches on top of 873ea9ee to use 'utility_option_list' instead of 'common_option_list'. Regards -- Alexey Kondratov Postgres Professional https://www.postgrespro.com Russian Postgres Company --=_680b1b8a9b2a839baed301219b4ad717 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v31-0005-Implement-vacuum-full-cluster-INDEX_TABLESPACE-t.patch Content-Disposition: attachment; filename=v31-0005-Implement-vacuum-full-cluster-INDEX_TABLESPACE-t.patch; size=19349 RnJvbSBhYzNiNzdhZWMyNmE0MDAxNjc4NGFkYTlkYWI4YjkwNTlmNDI0ZmE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlqQHRlbHNhc29mdC5jb20+ CkRhdGU6IFR1ZSwgMzEgTWFyIDIwMjAgMjA6MzU6NDEgLTA1MDAKU3ViamVjdDogW1BBVENIIHYz MSA1LzVdIEltcGxlbWVudCB2YWN1dW0gZnVsbC9jbHVzdGVyIChJTkRFWF9UQUJMRVNQQUNFCiA8 dGFibGVzcGFjZT4pCgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY2x1c3Rlci5zZ21sICAgICAgICAg ICAgIHwgMTIgKysrKy0KIGRvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwgICAgICAgICAgICAg IHwgMTIgKysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYyAgICAgICAgICAgIHwg NjQgKysrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YyAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAg ICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgICAg IHwgNDYgKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMgICAgICAgfCAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmggICAgICAgICAg ICB8ICA2ICsrLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICAgICAgfCAg NSArLQogc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSAgfCAxMyArKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgfCAyMCArKysrKysr CiAxMSBmaWxlcyBjaGFuZ2VkLCAxMjMgaW5zZXJ0aW9ucygrKSwgNjEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVyLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2NsdXN0ZXIuc2dtbAppbmRleCBjYmZjMDU4MmJlLi42NzgxZTNhMDI1IDEwMDY0NAotLS0g 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 c2dtbAppbmRleCA1MjYxYTdjNzI3Li4yOGNhYjExOWI2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn 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 L2NsdXN0ZXIuYwppbmRleCBiMjg5YTc2ZDU4Li4wZjlmMDlhMTVhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1 c3Rlci5jCkBAIC03MSw3ICs3MSw3IEBAIHR5cGVkZWYgc3RydWN0CiAKIAogc3RhdGljIHZvaWQg cmVidWlsZF9yZWxhdGlvbihSZWxhdGlvbiBPbGRIZWFwLCBPaWQgaW5kZXhPaWQsIGJvb2wgdmVy Ym9zZSwKLQkJCQkJCQkgT2lkIE5ld1RhYmxlU3BhY2VPaWQpOworCQkJCQkJCSBPaWQgTmV3VGFi bGVTcGFjZU9pZCwgT2lkIE5ld0lkeFRhYmxlU3BhY2VPaWQpOwogc3RhdGljIHZvaWQgY29weV90 YWJsZV9kYXRhKE9pZCBPSUROZXdIZWFwLCBPaWQgT0lET2xkSGVhcCwgT2lkIE9JRE9sZEluZGV4 LAogCQkJCQkJCWJvb2wgdmVyYm9zZSwgYm9vbCAqcFN3YXBUb2FzdEJ5Q29udGVudCwKIAkJCQkJ CQlUcmFuc2FjdGlvbklkICpwRnJlZXplWGlkLCBNdWx0aVhhY3RJZCAqcEN1dG9mZk11bHRpKTsK QEAgLTEwNyw5ICsxMDcsMTEgQEAgY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0ZXJT dG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiB7CiAJTGlzdENlbGwJKmxjOwogCWludAkJCW9w dGlvbnMgPSAwOwotCS8qIE5hbWUgYW5kIE9pZCBvZiB0YWJsZXNwYWNlIHRvIHVzZSBmb3IgY2x1 c3RlcmVkIHJlbGF0aW9uLiAqLwotCWNoYXIJCSp0YWJsZXNwYWNlTmFtZSA9IE5VTEw7Ci0JT2lk CQkJdGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7CisJLyogTmFtZSBhbmQgT2lkIG9mIHRhYmxl c3BhY2VzIHRvIHVzZSBmb3IgY2x1c3RlcmVkIHJlbGF0aW9ucy4gKi8KKwljaGFyCQkqdGFibGVz cGFjZU5hbWUgPSBOVUxMLAorCQkJCSppZHh0YWJsZXNwYWNlTmFtZSA9IE5VTEw7CisJT2lkCQkJ dGFibGVzcGFjZU9pZCwKKwkJCQlpZHh0YWJsZXNwYWNlT2lkOwogCiAJLyogUGFyc2UgbGlzdCBv ZiBnZW5lcmljIHBhcmFtZXRlcnMgbm90IGhhbmRsZWQgYnkgdGhlIHBhcnNlciAqLwogCWZvcmVh Y2gobGMsIHN0bXQtPnBhcmFtcykKQEAgLTEyMyw2ICsxMjUsOCBAQCBjbHVzdGVyKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ2x1c3RlclN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAkJCQlvcHRp b25zICY9IH5DTFVPUFRfVkVSQk9TRTsKIAkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwg InRhYmxlc3BhY2UiKSA9PSAwKQogCQkJdGFibGVzcGFjZU5hbWUgPSBkZWZHZXRTdHJpbmcob3B0 KTsKKwkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgImluZGV4X3RhYmxlc3BhY2UiKSA9 PSAwKQorCQkJaWR4dGFibGVzcGFjZU5hbWUgPSBkZWZHZXRTdHJpbmcob3B0KTsKIAkJZWxzZQog CQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApA QCAtMTMxLDE4ICsxMzUsMTEgQEAgY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0ZXJT dG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0 YXRlLCBvcHQtPmxvY2F0aW9uKSkpOwogCX0KIAotCS8qIFNlbGVjdCB0YWJsZXNwYWNlIE9pZCB0 byB1c2UuICovCi0JaWYgKHRhYmxlc3BhY2VOYW1lKQotCXsKLQkJdGFibGVzcGFjZU9pZCA9IGdl dF90YWJsZXNwYWNlX29pZCh0YWJsZXNwYWNlTmFtZSwgZmFsc2UpOwotCi0JCS8qIENhbid0IG1v dmUgYSBub24tc2hhcmVkIHJlbGF0aW9uIGludG8gcGdfZ2xvYmFsICovCi0JCWlmICh0YWJsZXNw YWNlT2lkID09IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkgZXJybXNnKCJj YW5ub3QgbW92ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKLQkJ CQkJCQl0YWJsZXNwYWNlTmFtZSkpKTsKLQl9CisJLyogR2V0IHRhYmxlc3BhY2VzIHRvIHVzZS4g Ki8KKwl0YWJsZXNwYWNlT2lkID0gdGFibGVzcGFjZU5hbWUgPworCQlnZXRfdGFibGVzcGFjZV9v aWQodGFibGVzcGFjZU5hbWUsIGZhbHNlKSA6IEludmFsaWRPaWQ7CisJaWR4dGFibGVzcGFjZU9p ZCA9IGlkeHRhYmxlc3BhY2VOYW1lID8KKwkJZ2V0X3RhYmxlc3BhY2Vfb2lkKGlkeHRhYmxlc3Bh Y2VOYW1lLCBmYWxzZSkgOiBJbnZhbGlkT2lkOwogCiAJaWYgKHN0bXQtPnJlbGF0aW9uICE9IE5V TEwpCiAJewpAQCAtMjE0LDcgKzIxMSw3IEBAIGNsdXN0ZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBD bHVzdGVyU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCiAJCS8qIERvIHRoZSBqb2IuICov CiAJCWNsdXN0ZXJfcmVsKHRhYmxlT2lkLCBpbmRleE9pZCwgb3B0aW9ucywKLQkJCQl0YWJsZXNw YWNlT2lkKTsKKwkJCQl0YWJsZXNwYWNlT2lkLCBpZHh0YWJsZXNwYWNlT2lkKTsKIAl9CiAJZWxz ZQogCXsKQEAgLTI2NCw3ICsyNjEsNyBAQCBjbHVzdGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ2x1 c3RlclN0bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAkJCS8qIERvIHRoZSBqb2IuICovCiAJ CQljbHVzdGVyX3JlbChydnRjLT50YWJsZU9pZCwgcnZ0Yy0+aW5kZXhPaWQsCiAJCQkJCQlvcHRp b25zIHwgQ0xVT1BUX1JFQ0hFQ0ssCi0JCQkJCQl0YWJsZXNwYWNlT2lkKTsKKwkJCQkJCXRhYmxl c3BhY2VPaWQsIGlkeHRhYmxlc3BhY2VPaWQpOwogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCQl9CkBAIC0yOTQsMTEgKzI5MSwxMiBAQCBj bHVzdGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ2x1c3RlclN0bXQgKnN0bXQsIGJvb2wgaXNUb3BM ZXZlbCkKICAqIGluc3RlYWQgb2YgaW5kZXggb3JkZXIuICBUaGlzIGlzIHRoZSBuZXcgaW1wbGVt ZW50YXRpb24gb2YgVkFDVVVNIEZVTEwsCiAgKiBhbmQgZXJyb3IgbWVzc2FnZXMgc2hvdWxkIHJl ZmVyIHRvIHRoZSBvcGVyYXRpb24gYXMgVkFDVVVNIG5vdCBDTFVTVEVSLgogICoKLSAqICJ0YWJs ZXNwYWNlT2lkIiBpcyB0aGUgdGFibGVzcGFjZSB3aGVyZSB0aGUgcmVsYXRpb24gd2lsbCBiZSBy ZWJ1aWx0LCBvcgotICogSW52YWxpZE9pZCB0byB1c2UgaXRzIGN1cnJlbnQgdGFibGVzcGFjZS4K KyAqICJ0YWJsZXNwYWNlT2lkIiBhbmQgImlkeHRhYmxlc3BhY2VPaWQiIGFyZSB0aGUgdGFibGVz cGFjZXMgd2hlcmUgdGhlIHJlbGF0aW9uCisgKiBhbmQgaXRzIGluZGV4ZXMgd2lsbCBiZSByZWJ1 aWx0LCBvciBJbnZhbGlkT2lkIHRvIHVzZSB0aGVpciBjdXJyZW50CisgKiB0YWJsZXNwYWNlcy4K ICAqLwogdm9pZAotY2x1c3Rlcl9yZWwoT2lkIHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQsIGludCBv cHRpb25zLCBPaWQgdGFibGVzcGFjZU9pZCkKK2NsdXN0ZXJfcmVsKE9pZCB0YWJsZU9pZCwgT2lk IGluZGV4T2lkLCBpbnQgb3B0aW9ucywgT2lkIHRhYmxlc3BhY2VPaWQsIE9pZCBpZHh0YWJsZXNw YWNlT2lkKQogewogCVJlbGF0aW9uCU9sZEhlYXA7CiAJYm9vbAkJdmVyYm9zZSA9ICgob3B0aW9u cyAmIENMVU9QVF9WRVJCT1NFKSAhPSAwKTsKQEAgLTQ2Niw3ICs0NjQsNyBAQCBjbHVzdGVyX3Jl bChPaWQgdGFibGVPaWQsIE9pZCBpbmRleE9pZCwgaW50IG9wdGlvbnMsIE9pZCB0YWJsZXNwYWNl T2lkKQogCiAJLyogcmVidWlsZF9yZWxhdGlvbiBkb2VzIGFsbCB0aGUgZGlydHkgd29yayAqLwog CXJlYnVpbGRfcmVsYXRpb24oT2xkSGVhcCwgaW5kZXhPaWQsIHZlcmJvc2UsCi0JCQl0YWJsZXNw YWNlT2lkKTsKKwkJCXRhYmxlc3BhY2VPaWQsIGlkeHRhYmxlc3BhY2VPaWQpOwogCiAJLyogTkI6 IHJlYnVpbGRfcmVsYXRpb24gZG9lcyB0YWJsZV9jbG9zZSgpIG9uIE9sZEhlYXAgKi8KIApAQCAt NjE1LDEwICs2MTMsMTEgQEAgbWFya19pbmRleF9jbHVzdGVyZWQoUmVsYXRpb24gcmVsLCBPaWQg aW5kZXhPaWQsIGJvb2wgaXNfaW50ZXJuYWwpCiAgKiBOQjogdGhpcyByb3V0aW5lIGNsb3NlcyBP bGRIZWFwIGF0IHRoZSByaWdodCB0aW1lOyBjYWxsZXIgc2hvdWxkIG5vdC4KICAqLwogc3RhdGlj IHZvaWQKLXJlYnVpbGRfcmVsYXRpb24oUmVsYXRpb24gT2xkSGVhcCwgT2lkIGluZGV4T2lkLCBi b29sIHZlcmJvc2UsIE9pZCBOZXdUYWJsZXNwYWNlT2lkKQorcmVidWlsZF9yZWxhdGlvbihSZWxh dGlvbiBPbGRIZWFwLCBPaWQgaW5kZXhPaWQsIGJvb2wgdmVyYm9zZSwgT2lkIE5ld1RhYmxlc3Bh Y2VPaWQsIE9pZCBOZXdJZHhUYWJsZXNwYWNlT2lkKQogewogCU9pZAkJCXRhYmxlT2lkID0gUmVs YXRpb25HZXRSZWxpZChPbGRIZWFwKTsKIAlPaWQJCQl0YWJsZVNwYWNlID0gT2xkSGVhcC0+cmRf cmVsLT5yZWx0YWJsZXNwYWNlOworCU9pZAkJCWlkeHRhYmxlU3BhY2U7CiAJT2lkCQkJT0lETmV3 SGVhcDsKIAljaGFyCQlyZWxwZXJzaXN0ZW5jZTsKIAlib29sCQlpc19zeXN0ZW1fY2F0YWxvZzsK QEAgLTYyOCw3ICs2MjcsMjAgQEAgcmVidWlsZF9yZWxhdGlvbihSZWxhdGlvbiBPbGRIZWFwLCBP aWQgaW5kZXhPaWQsIGJvb2wgdmVyYm9zZSwgT2lkIE5ld1RhYmxlc3BhY2UKIAogCS8qIFVzZSBu ZXcgdGFibGVzcGFjZSBpZiBwYXNzZWQuICovCiAJaWYgKE9pZElzVmFsaWQoTmV3VGFibGVzcGFj ZU9pZCkpCisJewogCQl0YWJsZVNwYWNlID0gTmV3VGFibGVzcGFjZU9pZDsKKwkJLyogSXQncyBu b3QgYSBzaGFyZWQgY2F0YWxvZywgc28gcmVmdXNlIHRvIG1vdmUgaXQgdG8gc2hhcmVkIHRhYmxl c3BhY2UgKi8KKwkJaWYgKHRhYmxlU3BhY2UgPT0gR0xPQkFMVEFCTEVTUEFDRV9PSUQpCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCisJCQkJCSBlcnJtc2coImNhbm5vdCBtb3ZlIG5vbi1zaGFyZWQgcmVsYXRpb24gdG8gdGFi bGVzcGFjZSBcIiVzXCIiLAorCQkJCQkJCWdldF90YWJsZXNwYWNlX25hbWUodGFibGVTcGFjZSkp KSk7CisJfQorCisJaWYgKE9pZElzVmFsaWQoTmV3SWR4VGFibGVzcGFjZU9pZCkpCisJCWlkeHRh YmxlU3BhY2UgPSBOZXdJZHhUYWJsZXNwYWNlT2lkOworCWVsc2UKKwkJaWR4dGFibGVTcGFjZSA9 IGdldF9yZWxfdGFibGVzcGFjZShpbmRleE9pZCk7CiAKIAkvKiBNYXJrIHRoZSBjb3JyZWN0IGlu ZGV4IGFzIGNsdXN0ZXJlZCAqLwogCWlmIChPaWRJc1ZhbGlkKGluZGV4T2lkKSkKQEAgLTY1Nyw3 ICs2NjksNyBAQCByZWJ1aWxkX3JlbGF0aW9uKFJlbGF0aW9uIE9sZEhlYXAsIE9pZCBpbmRleE9p ZCwgYm9vbCB2ZXJib3NlLCBPaWQgTmV3VGFibGVzcGFjZQogCWZpbmlzaF9oZWFwX3N3YXAodGFi bGVPaWQsIE9JRE5ld0hlYXAsIGlzX3N5c3RlbV9jYXRhbG9nLAogCQkJCQkgc3dhcF90b2FzdF9i eV9jb250ZW50LCBmYWxzZSwgdHJ1ZSwKIAkJCQkJIGZyb3plblhpZCwgY3V0b2ZmTXVsdGksCi0J CQkJCSByZWxwZXJzaXN0ZW5jZSk7CisJCQkJCSByZWxwZXJzaXN0ZW5jZSwgaWR4dGFibGVTcGFj ZSk7CiB9CiAKIApAQCAtMTQwNSw3ICsxNDE3LDcgQEAgZmluaXNoX2hlYXBfc3dhcChPaWQgT0lE T2xkSGVhcCwgT2lkIE9JRE5ld0hlYXAsCiAJCQkJIGJvb2wgaXNfaW50ZXJuYWwsCiAJCQkJIFRy YW5zYWN0aW9uSWQgZnJvemVuWGlkLAogCQkJCSBNdWx0aVhhY3RJZCBjdXRvZmZNdWx0aSwKLQkJ CQkgY2hhciBuZXdyZWxwZXJzaXN0ZW5jZSkKKwkJCQkgY2hhciBuZXdyZWxwZXJzaXN0ZW5jZSwg T2lkIGlkeHRhYmxlU3BhY2UpCiB7CiAJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CiAJT2lkCQkJbWFw cGVkX3RhYmxlc1s0XTsKQEAgLTE0NjcsNyArMTQ3OSw3IEBAIGZpbmlzaF9oZWFwX3N3YXAoT2lk IE9JRE9sZEhlYXAsIE9pZCBPSUROZXdIZWFwLAogCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFy YW0oUFJPR1JFU1NfQ0xVU1RFUl9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NMVVNURVJfUEhB U0VfUkVCVUlMRF9JTkRFWCk7CiAKLQlyZWluZGV4X3JlbGF0aW9uKE9JRE9sZEhlYXAsIHJlaW5k ZXhfZmxhZ3MsIDAsIEludmFsaWRPaWQpOworCXJlaW5kZXhfcmVsYXRpb24oT0lET2xkSGVhcCwg cmVpbmRleF9mbGFncywgMCwgaWR4dGFibGVTcGFjZSk7CiAKIAkvKiBSZXBvcnQgdGhhdCB3ZSBh cmUgbm93IGRvaW5nIGNsZWFuIHVwICovCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DTFVTVEVSX1BIQVNFLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv bWF0dmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCmluZGV4IGNmYzYzOTE1 ZjMuLjI2MzBkY2ZiYmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKQEAgLTg1NSw3ICs4NTUsOCBA QCBzdGF0aWMgdm9pZAogcmVmcmVzaF9ieV9oZWFwX3N3YXAoT2lkIG1hdHZpZXdPaWQsIE9pZCBP SUROZXdIZWFwLCBjaGFyIHJlbHBlcnNpc3RlbmNlKQogewogCWZpbmlzaF9oZWFwX3N3YXAobWF0 dmlld09pZCwgT0lETmV3SGVhcCwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLAotCQkJCQkgUmVj ZW50WG1pbiwgUmVhZE5leHRNdWx0aVhhY3RJZCgpLCByZWxwZXJzaXN0ZW5jZSk7CisJCQkJCSBS ZWNlbnRYbWluLCBSZWFkTmV4dE11bHRpWGFjdElkKCksIHJlbHBlcnNpc3RlbmNlLAorCQkJCQkg SW52YWxpZE9pZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGJiZjNi YWQ0NGMuLmNkZjBkN2FlMTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC01MDc2LDcg KzUwNzYsNyBAQCBBVFJld3JpdGVUYWJsZXMoQWx0ZXJUYWJsZVN0bXQgKnBhcnNldHJlZSwgTGlz dCAqKndxdWV1ZSwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkJICFPaWRJc1ZhbGlkKHRhYi0+ bmV3VGFibGVTcGFjZSksCiAJCQkJCQkJIFJlY2VudFhtaW4sCiAJCQkJCQkJIFJlYWROZXh0TXVs dGlYYWN0SWQoKSwKLQkJCQkJCQkgcGVyc2lzdGVuY2UpOworCQkJCQkJCSBwZXJzaXN0ZW5jZSwg SW52YWxpZE9pZCk7CiAJCX0KIAkJZWxzZQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IGMw ZGRhNWU1ODQuLmUzMDA1ZTEzOGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC0xMDksOSArMTA5 LDkgQEAgRXhlY1ZhY3V1bShQYXJzZVN0YXRlICpwc3RhdGUsIFZhY3V1bVN0bXQgKnZhY3N0bXQs IGJvb2wgaXNUb3BMZXZlbCkKIAlib29sCQlkaXNhYmxlX3BhZ2Vfc2tpcHBpbmcgPSBmYWxzZTsK IAlMaXN0Q2VsbCAgICpsYzsKIAotCS8qIE5hbWUgYW5kIE9pZCBvZiB0YWJsZXNwYWNlIHRvIHVz ZSBmb3IgcmVsYXRpb25zIGFmdGVyIFZBQ1VVTSBGVUxMLiAqLwotCWNoYXIJCSp0YWJsZXNwYWNl bmFtZSA9IE5VTEw7Ci0JT2lkIAkJdGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7CisJLyogVGFi bGVzcGFjZSB0byB1c2UgZm9yIHJlbGF0aW9ucyBhZnRlciBWQUNVVU0gRlVMTC4gKi8KKwljaGFy CQkqdGFibGVzcGFjZW5hbWUgPSBOVUxMLAorCQkJCSppZHh0YWJsZXNwYWNlbmFtZSA9IE5VTEw7 CiAKIAkvKiBTZXQgZGVmYXVsdCB2YWx1ZSAqLwogCXBhcmFtcy5pbmRleF9jbGVhbnVwID0gVkFD T1BUX1RFUk5BUllfREVGQVVMVDsKQEAgLTE1MSw2ICsxNTEsOCBAQCBFeGVjVmFjdXVtKFBhcnNl U3RhdGUgKnBzdGF0ZSwgVmFjdXVtU3RtdCAqdmFjc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJ cGFyYW1zLnRydW5jYXRlID0gZ2V0X3ZhY29wdF90ZXJuYXJ5X3ZhbHVlKG9wdCk7CiAJCWVsc2Ug aWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJ0YWJsZXNwYWNlIikgPT0gMCkKIAkJCXRhYmxlc3Bh Y2VuYW1lID0gZGVmR2V0U3RyaW5nKG9wdCk7CisJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5h bWUsICJpbmRleF90YWJsZXNwYWNlIikgPT0gMCkKKwkJCWlkeHRhYmxlc3BhY2VuYW1lID0gZGVm R2V0U3RyaW5nKG9wdCk7CiAJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJwYXJhbGxl bCIpID09IDApCiAJCXsKIAkJCWlmIChvcHQtPmFyZyA9PSBOVUxMKQpAQCAtMjExLDI2ICsyMTMs MTggQEAgRXhlY1ZhY3V1bShQYXJzZVN0YXRlICpwc3RhdGUsIFZhY3V1bVN0bXQgKnZhY3N0bXQs IGJvb2wgaXNUb3BMZXZlbCkKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCiAJCQkJIGVycm1zZygiVkFDVVVNIEZVTEwgY2Fubm90IGJlIHBlcmZvcm1lZCBpbiBw YXJhbGxlbCIpKSk7CiAKLQkvKiBHZXQgdGFibGVzcGFjZSBPaWQgdG8gdXNlLiAqLwotCWlmICh0 YWJsZXNwYWNlbmFtZSkKLQl7Ci0JCWlmICgocGFyYW1zLm9wdGlvbnMgJiBWQUNPUFRfRlVMTCkg PT0gMCkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKLQkJCQkJZXJybXNnKCJpbmNvbXBhdGlibGUgVEFCTEVTUEFDRSBvcHRp b24iKSwKLQkJCQkJZXJyZGV0YWlsKCJZb3UgY2FuIG9ubHkgdXNlIFRBQkxFU1BBQ0Ugd2l0aCBW QUNVVU0gRlVMTC4iKSkpOwotCi0JCXRhYmxlc3BhY2VPaWQgPSBnZXRfdGFibGVzcGFjZV9vaWQo dGFibGVzcGFjZW5hbWUsIGZhbHNlKTsKLQotCQkvKiBDYW4ndCBtb3ZlIGEgbm9uLXNoYXJlZCBy ZWxhdGlvbiBpbnRvIHBnX2dsb2JhbCAqLwotCQlpZiAodGFibGVzcGFjZU9pZCA9PSBHTE9CQUxU QUJMRVNQQUNFX09JRCkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJZXJybXNnKCJjYW5ub3QgbW92ZSBub24tc2hh cmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKLQkJCQkJCQl0YWJsZXNwYWNlbmFt ZSkpKTsKKwlpZiAoKHBhcmFtcy5vcHRpb25zICYgVkFDT1BUX0ZVTEwpID09IDAgJiYKKwkJKHRh Ymxlc3BhY2VuYW1lIHx8IGlkeHRhYmxlc3BhY2VuYW1lKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJZXJybXNnKCJp bmNvbXBhdGlibGUgVEFCTEVTUEFDRSBvcHRpb24iKSwKKwkJCQllcnJkZXRhaWwoIllvdSBjYW4g b25seSB1c2UgVEFCTEVTUEFDRSB3aXRoIFZBQ1VVTSBGVUxMLiIpKSk7CiAKLQl9Ci0JcGFyYW1z LnRhYmxlc3BhY2Vfb2lkID0gdGFibGVzcGFjZU9pZDsKKwkvKiBHZXQgdGFibGVzcGFjZSBPaWRz IHRvIHVzZS4gKi8KKwlwYXJhbXMudGFibGVzcGFjZV9vaWQgPSB0YWJsZXNwYWNlbmFtZSA/CisJ CWdldF90YWJsZXNwYWNlX29pZCh0YWJsZXNwYWNlbmFtZSwgZmFsc2UpIDogSW52YWxpZE9pZDsK KwlwYXJhbXMuaWR4dGFibGVzcGFjZV9vaWQgPSBpZHh0YWJsZXNwYWNlbmFtZSA/CisJCWdldF90 YWJsZXNwYWNlX29pZChpZHh0YWJsZXNwYWNlbmFtZSwgZmFsc2UpIDogSW52YWxpZE9pZDsKIAog CS8qCiAJICogTWFrZSBzdXJlIFZBQ09QVF9BTkFMWVpFIGlzIHNwZWNpZmllZCBpZiBhbnkgY29s dW1uIGxpc3RzIGFyZSBwcmVzZW50LgpAQCAtMTczMyw4ICsxNzI3LDcgQEAgdmFjdXVtX3JlbChP aWQgcmVsaWQsIFJhbmdlVmFyICpyZWxhdGlvbiwgVmFjdXVtUGFyYW1zICpwYXJhbXMpCiAJUmVs YXRpb24Jb25lcmVsOwogCUxvY2tSZWxJZAlvbmVyZWxpZDsKIAlPaWQJCQl0b2FzdF9yZWxpZCwK LQkJCQlzYXZlX3VzZXJpZCwKLQkJCQl0YWJsZXNwYWNlT2lkID0gSW52YWxpZE9pZDsKKwkJCQlz YXZlX3VzZXJpZDsKIAlpbnQJCQlzYXZlX3NlY19jb250ZXh0OwogCWludAkJCXNhdmVfbmVzdGxl dmVsOwogCkBAIC0xODgwLDE0ICsxODczLDEzIEBAIHZhY3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5n ZVZhciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyAqcGFyYW1zKQogCQlPaWRJc1ZhbGlkKHBhcmFt cy0+dGFibGVzcGFjZV9vaWQpICYmCiAJCUlzU3lzdGVtUmVsYXRpb24ob25lcmVsKSAmJiAhYWxs b3dTeXN0ZW1UYWJsZU1vZHMpCiAJeworCQlwYXJhbXMtPnRhYmxlc3BhY2Vfb2lkID0gSW52YWxp ZE9pZDsKIAkJZXJlcG9ydChXQVJOSU5HLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKIAkJCQllcnJtc2coInNraXBwaW5nIHRhYmxlc3BhY2UgY2hhbmdlIG9m IFwiJXNcIiIsCiAJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShvbmVyZWwpKSwKIAkJCQll cnJkZXRhaWwoIkNhbm5vdCBtb3ZlIHN5c3RlbSByZWxhdGlvbiwgb25seSBWQUNVVU0gaXMgcGVy Zm9ybWVkLiIpKSk7CiAJfQotCWVsc2UKLQkJdGFibGVzcGFjZU9pZCA9IHBhcmFtcy0+dGFibGVz cGFjZV9vaWQ7CiAKIAkvKgogCSAqIEdldCBhIHNlc3Npb24tbGV2ZWwgbG9jayB0b28uIFRoaXMg d2lsbCBwcm90ZWN0IG91ciBhY2Nlc3MgdG8gdGhlCkBAIC0xOTU5LDcgKzE5NTEsNyBAQCB2YWN1 dW1fcmVsKE9pZCByZWxpZCwgUmFuZ2VWYXIgKnJlbGF0aW9uLCBWYWN1dW1QYXJhbXMgKnBhcmFt cykKIAogCQkvKiBWQUNVVU0gRlVMTCBpcyBub3cgYSB2YXJpYW50IG9mIENMVVNURVI7IHNlZSBj bHVzdGVyLmMgKi8KIAkJY2x1c3Rlcl9yZWwocmVsaWQsIEludmFsaWRPaWQsIGNsdXN0ZXJfb3B0 aW9ucywKLQkJCQl0YWJsZXNwYWNlT2lkKTsKKwkJCQlwYXJhbXMtPnRhYmxlc3BhY2Vfb2lkLCBw YXJhbXMtPmlkeHRhYmxlc3BhY2Vfb2lkKTsKIAl9CiAJZWxzZQogCQl0YWJsZV9yZWxhdGlvbl92 YWN1dW0ob25lcmVsLCBwYXJhbXMsIHZhY19zdHJhdGVneSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0 b3ZhY3V1bS5jCmluZGV4IGYzNjRiMzc1ODUuLmNlYTk5MTEyNmEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5jCkBAIC0yOTE3LDYgKzI5MTcsNyBAQCB0YWJsZV9yZWNoZWNrX2F1dG92 YWMoT2lkIHJlbGlkLCBIVEFCICp0YWJsZV90b2FzdF9tYXAsCiAJCXRhYi0+YXRfcGFyYW1zLmlz X3dyYXBhcm91bmQgPSB3cmFwYXJvdW5kOwogCQl0YWItPmF0X3BhcmFtcy5sb2dfbWluX2R1cmF0 aW9uID0gbG9nX21pbl9kdXJhdGlvbjsKIAkJdGFiLT5hdF9wYXJhbXMudGFibGVzcGFjZV9vaWQg PSBJbnZhbGlkT2lkOworCQl0YWItPmF0X3BhcmFtcy5pZHh0YWJsZXNwYWNlX29pZCA9IEludmFs aWRPaWQ7CiAJCXRhYi0+YXRfdmFjdXVtX2Nvc3RfbGltaXQgPSB2YWNfY29zdF9saW1pdDsKIAkJ dGFiLT5hdF92YWN1dW1fY29zdF9kZWxheSA9IHZhY19jb3N0X2RlbGF5OwogCQl0YWItPmF0X3Jl bG5hbWUgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5o IGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oCmluZGV4IDMwMzAwYThmNzQuLjhlNTM1 ZDk1MTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NsdXN0ZXIuaAorKysgYi9z cmMvaW5jbHVkZS9jb21tYW5kcy9jbHVzdGVyLmgKQEAgLTIxLDcgKzIxLDggQEAKIAogZXh0ZXJu IHZvaWQgY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0ZXJTdG10ICpzdG10LCBib29s IGlzVG9wTGV2ZWwpOwogZXh0ZXJuIHZvaWQgY2x1c3Rlcl9yZWwoT2lkIHRhYmxlT2lkLCBPaWQg aW5kZXhPaWQsIGludCBvcHRpb25zLAotCQkJCQkJT2lkIHRhYmxlc3BhY2VPaWQpOworCQkJCQkJ T2lkIHRhYmxlc3BhY2VPaWQsCisJCQkJCQlPaWQgaW5kZXh0YWJsZXNwYWNlT2lkKTsKIGV4dGVy biB2b2lkIGNoZWNrX2luZGV4X2lzX2NsdXN0ZXJhYmxlKFJlbGF0aW9uIE9sZEhlYXAsIE9pZCBp bmRleE9pZCwKIAkJCQkJCQkJCSAgIGJvb2wgcmVjaGVjaywgTE9DS01PREUgbG9ja21vZGUpOwog ZXh0ZXJuIHZvaWQgbWFya19pbmRleF9jbHVzdGVyZWQoUmVsYXRpb24gcmVsLCBPaWQgaW5kZXhP aWQsIGJvb2wgaXNfaW50ZXJuYWwpOwpAQCAtMzUsNiArMzYsNyBAQCBleHRlcm4gdm9pZCBmaW5p c2hfaGVhcF9zd2FwKE9pZCBPSURPbGRIZWFwLCBPaWQgT0lETmV3SGVhcCwKIAkJCQkJCQkgYm9v bCBpc19pbnRlcm5hbCwKIAkJCQkJCQkgVHJhbnNhY3Rpb25JZCBmcm96ZW5YaWQsCiAJCQkJCQkJ IE11bHRpWGFjdElkIG1pbk11bHRpLAotCQkJCQkJCSBjaGFyIG5ld3JlbHBlcnNpc3RlbmNlKTsK KwkJCQkJCQkgY2hhciBuZXdyZWxwZXJzaXN0ZW5jZSwKKwkJCQkJCQkgT2lkIGlkeHRhYmxlc3Bh Y2VPaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogQ0xVU1RFUl9IICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5o CmluZGV4IDRiNWFjNzE0NWQuLjQ4OGQ3NTQwYzcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCkBAIC0y MjksOCArMjI5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFjdXVtUGFyYW1zCiAJICogZGlzYWJsZWQu CiAJICovCiAJaW50CQkJbndvcmtlcnM7Ci0JT2lkCQkJdGFibGVzcGFjZV9vaWQ7IC8qIHRhYmxl c3BhY2UgdG8gdXNlIGZvciByZWxhdGlvbnMKLQkJCQkJCQkJICogcmVidWlsdCBieSBWQUNVVU0g RlVMTCAqLworCS8qIHRhYmxlc3BhY2VzIHRvIHVzZSBmb3IgcmVsYXRpb25zIHJlYnVpbHQgYnkg VkFDVVVNIEZVTEwgKi8KKwlPaWQJCQl0YWJsZXNwYWNlX29pZDsKKwlPaWQJCQlpZHh0YWJsZXNw YWNlX29pZDsKIH0gVmFjdXVtUGFyYW1zOwogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSBiL3NyYy90ZXN0 L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UKaW5kZXggZjQ2ODdmNmJmYi4uMzA2NWUx NWUxOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJj ZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCkBAIC04MCw2 ICs4MCwxOSBAQCBSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIENPTkNVUlJF TlRMWSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOyAtLQogU0VMRUNUIHJlbG5hbWUgRlJPTSBw Z19jbGFzcwogV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3Bh Y2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOwogCistLSBjaGVjayBDTFVTVEVS IHdpdGggSU5ERVhfVEFCTEVTUEFDRSBjaGFuZ2UgdG8gbm9uLWRlZmF1bHQgbG9jYXRpb24KK0NM VVNURVIgKElOREVYX1RBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgcmVncmVzc190YmxzcGFj ZV90ZXN0X3RibCBVU0lORyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gb2sKKy0t IGNoZWNrIHJlbGF0aW9ucyBtb3ZlZCB0byBuZXcgdGFibGVzcGFjZQorU0VMRUNUIHJlbG5hbWUg RlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3Rh Ymxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpCitPUkRFUiBCWSByZWxu YW1lOworLS0gY2hlY2sgVkFDVVVNIHdpdGggSU5ERVhfVEFCTEVTUEFDRSBjaGFuZ2UKK1ZBQ1VV TSAoRlVMTCwgQU5BTFlTRSwgRlJFRVpFLCBJTkRFWF9UQUJMRVNQQUNFIHBnX2RlZmF1bHQpIHJl Z3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIG9rCistLSBjaGVjayByZWxhdGlvbnMgbW92ZWQg YmFjayB0byBwZ19kZWZhdWx0CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSBy ZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1l PSdyZWdyZXNzX3RibHNwYWNlJyk7CisKKwogLS0gY3JlYXRlIGEgc2NoZW1hIHdlIGNhbiB1c2UK IENSRUFURSBTQ0hFTUEgdGVzdHNjaGVtYTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgYi9zcmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJs ZXNwYWNlLnNvdXJjZQppbmRleCBlMGE1YzQ4ZmU5Li42NWM2MWVlMzczIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL291dHB1dC90YWJsZXNwYWNlLnNvdXJjZQpAQCAtMTE0LDYgKzExNCwyNiBAQCBXSEVS RSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNu YW1lPSdyZWdyZXNzX3RibHNwYQogLS0tLS0tLS0tCiAoMCByb3dzKQogCistLSBjaGVjayBDTFVT VEVSIHdpdGggSU5ERVhfVEFCTEVTUEFDRSBjaGFuZ2UgdG8gbm9uLWRlZmF1bHQgbG9jYXRpb24K K0NMVVNURVIgKElOREVYX1RBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgcmVncmVzc190Ymxz cGFjZV90ZXN0X3RibCBVU0lORyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gb2sK Ky0tIGNoZWNrIHJlbGF0aW9ucyBtb3ZlZCB0byBuZXcgdGFibGVzcGFjZQorU0VMRUNUIHJlbG5h bWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBn X3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpCitPUkRFUiBCWSBy ZWxuYW1lOworICAgICAgICAgICAgcmVsbmFtZSAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4CisoMSByb3cp CisKKy0tIGNoZWNrIFZBQ1VVTSB3aXRoIElOREVYX1RBQkxFU1BBQ0UgY2hhbmdlCitWQUNVVU0g KEZVTEwsIEFOQUxZU0UsIEZSRUVaRSwgSU5ERVhfVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSByZWdy ZXNzX3RibHNwYWNlX3Rlc3RfdGJsOyAtLSBvaworLS0gY2hlY2sgcmVsYXRpb25zIG1vdmVkIGJh Y2sgdG8gcGdfZGVmYXVsdAorU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVs dGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0n cmVncmVzc190YmxzcGFjZScpOworIHJlbG5hbWUgCistLS0tLS0tLS0KKygwIHJvd3MpCisKIC0t IGNyZWF0ZSBhIHNjaGVtYSB3ZSBjYW4gdXNlCiBDUkVBVEUgU0NIRU1BIHRlc3RzY2hlbWE7CiAt LSB0cnkgYSB0YWJsZQotLSAKMi4yMC4xCgo= --=_680b1b8a9b2a839baed301219b4ad717 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v31-0004-Allow-CLUSTER-and-VACUUM-FULL-to-change-tablespa.patch Content-Disposition: attachment; filename=v31-0004-Allow-CLUSTER-and-VACUUM-FULL-to-change-tablespa.patch; size=24010 RnJvbSA4N2M3Yjk4MmQyOTU2M2EyYmQ2Njg4OGIyZWExZmVkMzZkMjA0NjdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFR1ZSwgMjQgTWFyIDIwMjAgMTg6MTY6MDYgKzAzMDAKU3ViamVjdDog W1BBVENIIHYzMSA0LzVdIEFsbG93IENMVVNURVIgYW5kIFZBQ1VVTSBGVUxMIHRvIGNoYW5nZSB0 YWJsZXNwYWNlCgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY2x1c3Rlci5zZ21sICAgICAgICAgICAg IHwgMTkgKysrKysrKwogZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0uc2dtbCAgICAgICAgICAgICAg fCAyMCArKysrKysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMgICAgICAgICAgICB8 IDY3ICsrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyAgICAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYyAgICAg ICAgICAgICB8IDU1ICsrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgICAgICAgICAgICAgICAgIHwgIDUgKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3Zh Y3V1bS5jICAgICAgIHwgIDEgKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAgICAgICAg ICAgICAgfCAgOSArKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NsdXN0ZXIuaCAgICAgICAgICAg IHwgIDMgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oICAgICAgICAgICAgIHwgIDIg Kwogc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSAgfCAyMyArKysrKysr LQogc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UgfCAzNyArKysrKysr KysrKystCiAxMiBmaWxlcyBjaGFuZ2VkLCAyMjggaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVyLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NsdXN0ZXIuc2dtbAppbmRleCBlZmQ4MTY1ZTM1Li5jYmZjMDU4MmJlIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NsdXN0ZXIuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv cmVmL2NsdXN0ZXIuc2dtbApAQCAtMjcsNiArMjcsNyBAQCBDTFVTVEVSIFtWRVJCT1NFXSBbICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4u LgogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9y ZXBsYWNlYWJsZT4gY2FuIGJlIG9uZSBvZjo8L3BocmFzZT4KIAogICAgIFZFUkJPU0UgWyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KKyAgICBU QUJMRVNQQUNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfdGFibGVzcGFjZTwv cmVwbGFjZWFibGU+CiAKIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rpdj4KQEAgLTk1LDYg Kzk2LDE1IEBAIENMVVNURVIgW1ZFUkJPU0VdIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uCiAgICAgPC9saXN0aXRlbT4KICAgIDwv dmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPlRB QkxFU1BBQ0U8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Cisg ICAgICBTcGVjaWZpZXMgdGhhdCB0aGUgdGFibGUgd2lsbCBiZSByZWJ1aWx0IG9uIGEgbmV3IHRh Ymxlc3BhY2UuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+ CkBAIC0xMjYsNiArMTM2LDE1IEBAIENMVVNURVIgW1ZFUkJPU0VdIFsgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uCiAgICAgIDwvcGFy YT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5ld190YWJsZXNw YWNlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAg ICAgIFRoZSB0YWJsZXNwYWNlIHdoZXJlIHRoZSB0YWJsZSB3aWxsIGJlIHJlYnVpbHQuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CiAgIDwvdmFyaWFi bGVsaXN0PgogIDwvcmVmc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvdmFj dXVtLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3ZhY3V1bS5zZ21sCmluZGV4IDIxYWI1N2Q4ODAu LjUyNjFhN2M3MjcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvdmFjdXVtLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3JlZi92YWN1dW0uc2dtbApAQCAtMzUsNiArMzUsNyBAQCBWQUNVVU0g WyBGVUxMIF0gWyBGUkVFWkUgXSBbIFZFUkJPU0UgXSBbIEFOQUxZWkUgXSBbIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldAogICAgIElOREVYX0NMRUFOVVAgWyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBUUlVOQ0FURSBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJsZT4gXQogICAgIFBB UkFMTEVMIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbnRlZ2VyPC9yZXBsYWNlYWJs ZT4KKyAgICBUQUJMRVNQQUNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uZXdfdGFi bGVzcGFjZTwvcmVwbGFjZWFibGU+CiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50YWJsZV9hbmRfY29sdW1uczwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgog CkBAIC0yNTUsNiArMjU2LDE1IEBAIFZBQ1VVTSBbIEZVTEwgXSBbIEZSRUVaRSBdIFsgVkVSQk9T RSBdIFsgQU5BTFlaRSBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0CiAgICAgPC9saXN0 aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJt PjxsaXRlcmFsPlRBQkxFU1BBQ0U8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBTcGVjaWZpZXMgdGhhdCB0aGUgcmVsYXRpb24gd2lsbCBiZSByZWJ1 aWx0IG9uIGEgbmV3IHRhYmxlc3BhY2UuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPjwvdGVybT4KICAg ICA8bGlzdGl0ZW0+CkBAIC0yOTksNiArMzA5LDE2IEBAIFZBQ1VVTSBbIEZVTEwgXSBbIEZSRUVa RSBdIFsgVkVSQk9TRSBdIFsgQU5BTFlaRSBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 CiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CisKKyAg IDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAg ICA8cGFyYT4KKyAgICAgIFRoZSB0YWJsZXNwYWNlIHdoZXJlIHRoZSByZWxhdGlvbiB3aWxsIGJl IHJlYnVpbHQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKICAgPC92YXJpYWJsZWxpc3Q+CiAgPC9yZWZzZWN0MT4KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rl ci5jCmluZGV4IDhhYmFiYmViMTQuLmIyODlhNzZkNTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NsdXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMK QEAgLTMzLDExICszMywxMyBAQAogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9vYmplY3RhY2Nlc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2FtLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy90 b2FzdGluZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NsdXN0ZXIuaCIKICNpbmNsdWRlICJjb21t YW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3RhYmxlY21kcy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIK ICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCkBAIC02OCw3ICs3MCw4IEBAIHR5cGVkZWYg c3RydWN0CiB9IFJlbFRvQ2x1c3RlcjsKIAogCi1zdGF0aWMgdm9pZCByZWJ1aWxkX3JlbGF0aW9u KFJlbGF0aW9uIE9sZEhlYXAsIE9pZCBpbmRleE9pZCwgYm9vbCB2ZXJib3NlKTsKK3N0YXRpYyB2 b2lkIHJlYnVpbGRfcmVsYXRpb24oUmVsYXRpb24gT2xkSGVhcCwgT2lkIGluZGV4T2lkLCBib29s IHZlcmJvc2UsCisJCQkJCQkJIE9pZCBOZXdUYWJsZVNwYWNlT2lkKTsKIHN0YXRpYyB2b2lkIGNv cHlfdGFibGVfZGF0YShPaWQgT0lETmV3SGVhcCwgT2lkIE9JRE9sZEhlYXAsIE9pZCBPSURPbGRJ bmRleCwKIAkJCQkJCQlib29sIHZlcmJvc2UsIGJvb2wgKnBTd2FwVG9hc3RCeUNvbnRlbnQsCiAJ CQkJCQkJVHJhbnNhY3Rpb25JZCAqcEZyZWV6ZVhpZCwgTXVsdGlYYWN0SWQgKnBDdXRvZmZNdWx0 aSk7CkBAIC0xMDQsNiArMTA3LDkgQEAgY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0 ZXJTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiB7CiAJTGlzdENlbGwJKmxjOwogCWludAkJ CW9wdGlvbnMgPSAwOworCS8qIE5hbWUgYW5kIE9pZCBvZiB0YWJsZXNwYWNlIHRvIHVzZSBmb3Ig Y2x1c3RlcmVkIHJlbGF0aW9uLiAqLworCWNoYXIJCSp0YWJsZXNwYWNlTmFtZSA9IE5VTEw7CisJ T2lkCQkJdGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7CiAKIAkvKiBQYXJzZSBsaXN0IG9mIGdl bmVyaWMgcGFyYW1ldGVycyBub3QgaGFuZGxlZCBieSB0aGUgcGFyc2VyICovCiAJZm9yZWFjaChs Yywgc3RtdC0+cGFyYW1zKQpAQCAtMTE1LDYgKzEyMSw4IEBAIGNsdXN0ZXIoUGFyc2VTdGF0ZSAq cHN0YXRlLCBDbHVzdGVyU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJCW9wdGlvbnMg fD0gQ0xVT1BUX1ZFUkJPU0U7CiAJCQllbHNlCiAJCQkJb3B0aW9ucyAmPSB+Q0xVT1BUX1ZFUkJP U0U7CisJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJ0YWJsZXNwYWNlIikgPT0gMCkK KwkJCXRhYmxlc3BhY2VOYW1lID0gZGVmR2V0U3RyaW5nKG9wdCk7CiAJCWVsc2UKIAkJCWVyZXBv cnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTEyMyw2 ICsxMzEsMTkgQEAgY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0ZXJTdG10ICpzdG10 LCBib29sIGlzVG9wTGV2ZWwpCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcHQt PmxvY2F0aW9uKSkpOwogCX0KIAorCS8qIFNlbGVjdCB0YWJsZXNwYWNlIE9pZCB0byB1c2UuICov CisJaWYgKHRhYmxlc3BhY2VOYW1lKQorCXsKKwkJdGFibGVzcGFjZU9pZCA9IGdldF90YWJsZXNw YWNlX29pZCh0YWJsZXNwYWNlTmFtZSwgZmFsc2UpOworCisJCS8qIENhbid0IG1vdmUgYSBub24t c2hhcmVkIHJlbGF0aW9uIGludG8gcGdfZ2xvYmFsICovCisJCWlmICh0YWJsZXNwYWNlT2lkID09 IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJjYW5ub3QgbW92 ZSBub24tc2hhcmVkIHJlbGF0aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKKwkJCQkJCQl0YWJs ZXNwYWNlTmFtZSkpKTsKKwl9CisKIAlpZiAoc3RtdC0+cmVsYXRpb24gIT0gTlVMTCkKIAl7CiAJ CS8qIFRoaXMgaXMgdGhlIHNpbmdsZS1yZWxhdGlvbiBjYXNlLiAqLwpAQCAtMTkyLDcgKzIxMyw4 IEBAIGNsdXN0ZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDbHVzdGVyU3RtdCAqc3RtdCwgYm9vbCBp c1RvcExldmVsKQogCQl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CiAKIAkJLyogRG8gdGhlIGpv Yi4gKi8KLQkJY2x1c3Rlcl9yZWwodGFibGVPaWQsIGluZGV4T2lkLCBvcHRpb25zKTsKKwkJY2x1 c3Rlcl9yZWwodGFibGVPaWQsIGluZGV4T2lkLCBvcHRpb25zLAorCQkJCXRhYmxlc3BhY2VPaWQp OwogCX0KIAllbHNlCiAJewpAQCAtMjQxLDcgKzI2Myw4IEBAIGNsdXN0ZXIoUGFyc2VTdGF0ZSAq cHN0YXRlLCBDbHVzdGVyU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKQogCQkJUHVzaEFjdGl2 ZVNuYXBzaG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CiAJCQkvKiBEbyB0aGUgam9iLiAq LwogCQkJY2x1c3Rlcl9yZWwocnZ0Yy0+dGFibGVPaWQsIHJ2dGMtPmluZGV4T2lkLAotCQkJCQkJ b3B0aW9ucyB8IENMVU9QVF9SRUNIRUNLKTsKKwkJCQkJCW9wdGlvbnMgfCBDTFVPUFRfUkVDSEVD SywKKwkJCQkJCXRhYmxlc3BhY2VPaWQpOwogCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCQl9CkBAIC0yNzAsOSArMjkzLDEyIEBAIGNsdXN0 ZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDbHVzdGVyU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVs KQogICogSWYgaW5kZXhPaWQgaXMgSW52YWxpZE9pZCwgdGhlIHRhYmxlIHdpbGwgYmUgcmV3cml0 dGVuIGluIHBoeXNpY2FsIG9yZGVyCiAgKiBpbnN0ZWFkIG9mIGluZGV4IG9yZGVyLiAgVGhpcyBp cyB0aGUgbmV3IGltcGxlbWVudGF0aW9uIG9mIFZBQ1VVTSBGVUxMLAogICogYW5kIGVycm9yIG1l c3NhZ2VzIHNob3VsZCByZWZlciB0byB0aGUgb3BlcmF0aW9uIGFzIFZBQ1VVTSBub3QgQ0xVU1RF Ui4KKyAqCisgKiAidGFibGVzcGFjZU9pZCIgaXMgdGhlIHRhYmxlc3BhY2Ugd2hlcmUgdGhlIHJl bGF0aW9uIHdpbGwgYmUgcmVidWlsdCwgb3IKKyAqIEludmFsaWRPaWQgdG8gdXNlIGl0cyBjdXJy ZW50IHRhYmxlc3BhY2UuCiAgKi8KIHZvaWQKLWNsdXN0ZXJfcmVsKE9pZCB0YWJsZU9pZCwgT2lk IGluZGV4T2lkLCBpbnQgb3B0aW9ucykKK2NsdXN0ZXJfcmVsKE9pZCB0YWJsZU9pZCwgT2lkIGlu ZGV4T2lkLCBpbnQgb3B0aW9ucywgT2lkIHRhYmxlc3BhY2VPaWQpCiB7CiAJUmVsYXRpb24JT2xk SGVhcDsKIAlib29sCQl2ZXJib3NlID0gKChvcHRpb25zICYgQ0xVT1BUX1ZFUkJPU0UpICE9IDAp OwpAQCAtMzcyLDYgKzM5OCwyMyBAQCBjbHVzdGVyX3JlbChPaWQgdGFibGVPaWQsIE9pZCBpbmRl eE9pZCwgaW50IG9wdGlvbnMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkJCSBlcnJtc2coImNhbm5vdCBjbHVzdGVyIGEgc2hhcmVkIGNhdGFsb2ciKSkp OwogCisJaWYgKE9pZElzVmFsaWQodGFibGVzcGFjZU9pZCkgJiYKKwkJIWFsbG93U3lzdGVtVGFi bGVNb2RzICYmIElzU3lzdGVtUmVsYXRpb24oT2xkSGVhcCkpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQllcnJtc2co InBlcm1pc3Npb24gZGVuaWVkOiBcIiVzXCIgaXMgYSBzeXN0ZW0gY2F0YWxvZyIsCisJCQkJCQlS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShPbGRIZWFwKSkpKTsKKworCS8qCisJICogV2UgY2Fubm90 IHN1cHBvcnQgbW92aW5nIG1hcHBlZCByZWxhdGlvbnMgaW50byBkaWZmZXJlbnQgdGFibGVzcGFj ZXMuCisJICogKEluIHBhcnRpY3VsYXIgdGhpcyBlbGltaW5hdGVzIGFsbCBzaGFyZWQgY2F0YWxv Z3MuKQorCSAqLworCWlmIChPaWRJc1ZhbGlkKHRhYmxlc3BhY2VPaWQpICYmIFJlbGF0aW9uSXNN YXBwZWQoT2xkSGVhcCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVz cGFjZSBvZiBtYXBwZWQgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKE9sZEhlYXApKSkpOworCiAJLyoKIAkgKiBEb24ndCBwcm9jZXNzIHRlbXAgdGFibGVz IG9mIG90aGVyIGJhY2tlbmRzIC4uLiB0aGVpciBsb2NhbCBidWZmZXIKIAkgKiBtYW5hZ2VyIGlz IG5vdCBnb2luZyB0byBjb3BlLgpAQCAtNDIyLDcgKzQ2NSw4IEBAIGNsdXN0ZXJfcmVsKE9pZCB0 YWJsZU9pZCwgT2lkIGluZGV4T2lkLCBpbnQgb3B0aW9ucykKIAlUcmFuc2ZlclByZWRpY2F0ZUxv Y2tzVG9IZWFwUmVsYXRpb24oT2xkSGVhcCk7CiAKIAkvKiByZWJ1aWxkX3JlbGF0aW9uIGRvZXMg YWxsIHRoZSBkaXJ0eSB3b3JrICovCi0JcmVidWlsZF9yZWxhdGlvbihPbGRIZWFwLCBpbmRleE9p ZCwgdmVyYm9zZSk7CisJcmVidWlsZF9yZWxhdGlvbihPbGRIZWFwLCBpbmRleE9pZCwgdmVyYm9z ZSwKKwkJCXRhYmxlc3BhY2VPaWQpOwogCiAJLyogTkI6IHJlYnVpbGRfcmVsYXRpb24gZG9lcyB0 YWJsZV9jbG9zZSgpIG9uIE9sZEhlYXAgKi8KIApAQCAtNTcxLDcgKzYxNSw3IEBAIG1hcmtfaW5k ZXhfY2x1c3RlcmVkKFJlbGF0aW9uIHJlbCwgT2lkIGluZGV4T2lkLCBib29sIGlzX2ludGVybmFs KQogICogTkI6IHRoaXMgcm91dGluZSBjbG9zZXMgT2xkSGVhcCBhdCB0aGUgcmlnaHQgdGltZTsg Y2FsbGVyIHNob3VsZCBub3QuCiAgKi8KIHN0YXRpYyB2b2lkCi1yZWJ1aWxkX3JlbGF0aW9uKFJl bGF0aW9uIE9sZEhlYXAsIE9pZCBpbmRleE9pZCwgYm9vbCB2ZXJib3NlKQorcmVidWlsZF9yZWxh dGlvbihSZWxhdGlvbiBPbGRIZWFwLCBPaWQgaW5kZXhPaWQsIGJvb2wgdmVyYm9zZSwgT2lkIE5l d1RhYmxlc3BhY2VPaWQpCiB7CiAJT2lkCQkJdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKE9s ZEhlYXApOwogCU9pZAkJCXRhYmxlU3BhY2UgPSBPbGRIZWFwLT5yZF9yZWwtPnJlbHRhYmxlc3Bh Y2U7CkBAIC01ODIsNiArNjI2LDEwIEBAIHJlYnVpbGRfcmVsYXRpb24oUmVsYXRpb24gT2xkSGVh cCwgT2lkIGluZGV4T2lkLCBib29sIHZlcmJvc2UpCiAJVHJhbnNhY3Rpb25JZCBmcm96ZW5YaWQ7 CiAJTXVsdGlYYWN0SWQgY3V0b2ZmTXVsdGk7CiAKKwkvKiBVc2UgbmV3IHRhYmxlc3BhY2UgaWYg cGFzc2VkLiAqLworCWlmIChPaWRJc1ZhbGlkKE5ld1RhYmxlc3BhY2VPaWQpKQorCQl0YWJsZVNw YWNlID0gTmV3VGFibGVzcGFjZU9pZDsKKwogCS8qIE1hcmsgdGhlIGNvcnJlY3QgaW5kZXggYXMg Y2x1c3RlcmVkICovCiAJaWYgKE9pZElzVmFsaWQoaW5kZXhPaWQpKQogCQltYXJrX2luZGV4X2Ns dXN0ZXJlZChPbGRIZWFwLCBpbmRleE9pZCwgdHJ1ZSk7CkBAIC0xMDI2LDYgKzEwNzQsMTMgQEAg c3dhcF9yZWxhdGlvbl9maWxlcyhPaWQgcjEsIE9pZCByMiwgYm9vbCB0YXJnZXRfaXNfcGdfY2xh c3MsCiAJCSAqLwogCQlBc3NlcnQoIXRhcmdldF9pc19wZ19jbGFzcyk7CiAKKwkJaWYgKCFhbGxv d1N5c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbUNsYXNzKHIxLCByZWxmb3JtMSkgJiYKKwkJCXJl bGZvcm0xLT5yZWx0YWJsZXNwYWNlICE9IHJlbGZvcm0yLT5yZWx0YWJsZXNwYWNlKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdF KSwKKwkJCQkJIGVycm1zZygicGVybWlzc2lvbiBkZW5pZWQ6IFwiJXNcIiBpcyBhIHN5c3RlbSBj YXRhbG9nIiwKKwkJCQkJCQlnZXRfcmVsX25hbWUocjEpKSkpOworCiAJCXN3YXB0ZW1wID0gcmVs Zm9ybTEtPnJlbGZpbGVub2RlOwogCQlyZWxmb3JtMS0+cmVsZmlsZW5vZGUgPSByZWxmb3JtMi0+ cmVsZmlsZW5vZGU7CiAJCXJlbGZvcm0yLT5yZWxmaWxlbm9kZSA9IHN3YXB0ZW1wOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwppbmRleCA5MzJiOGRkZmQyLi5iYmYzYmFkNDRjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwpAQCAtMTMxOTUsOCArMTMxOTUsOSBAQCBBVEV4ZWNTZXRUYWJsZVNw YWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExPQ0tNT0RFIGxvY2ttb2RlKQog CWlmIChSZWxhdGlvbklzTWFwcGVkKHJlbCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCSBlcnJtc2coImNhbm5vdCBt b3ZlIHN5c3RlbSByZWxhdGlvbiBcIiVzXCIiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsKSkpKTsKKwkJCQkgZXJybXNnKCJjYW5ub3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgbWFw cGVkIHJlbGF0aW9uIFwiJXNcIiIsCisJCQkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp KSkpOworCiAKIAkvKiBDYW4ndCBtb3ZlIGEgbm9uLXNoYXJlZCByZWxhdGlvbiBpbnRvIHBnX2ds b2JhbCAqLwogCWlmIChuZXdUYWJsZVNwYWNlID09IEdMT0JBTFRBQkxFU1BBQ0VfT0lEKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW0uYwppbmRleCBmMTExMjExMWRlLi5jMGRkYTVlNTg0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW0uYwpAQCAtMzEsMTMgKzMxLDE2IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIK ICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCisj aW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2Uu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19pbmhlcml0cy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNlLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY2x1c3Rlci5o IgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1 bS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK QEAgLTEwNiw2ICsxMDksMTAgQEAgRXhlY1ZhY3V1bShQYXJzZVN0YXRlICpwc3RhdGUsIFZhY3V1 bVN0bXQgKnZhY3N0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIAlib29sCQlkaXNhYmxlX3BhZ2Vfc2tp cHBpbmcgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpsYzsKIAorCS8qIE5hbWUgYW5kIE9pZCBvZiB0 YWJsZXNwYWNlIHRvIHVzZSBmb3IgcmVsYXRpb25zIGFmdGVyIFZBQ1VVTSBGVUxMLiAqLworCWNo YXIJCSp0YWJsZXNwYWNlbmFtZSA9IE5VTEw7CisJT2lkIAkJdGFibGVzcGFjZU9pZCA9IEludmFs aWRPaWQ7CisKIAkvKiBTZXQgZGVmYXVsdCB2YWx1ZSAqLwogCXBhcmFtcy5pbmRleF9jbGVhbnVw ID0gVkFDT1BUX1RFUk5BUllfREVGQVVMVDsKIAlwYXJhbXMudHJ1bmNhdGUgPSBWQUNPUFRfVEVS TkFSWV9ERUZBVUxUOwpAQCAtMTQyLDYgKzE0OSw4IEBAIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAq cHN0YXRlLCBWYWN1dW1TdG10ICp2YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJCQlwYXJhbXMu aW5kZXhfY2xlYW51cCA9IGdldF92YWNvcHRfdGVybmFyeV92YWx1ZShvcHQpOwogCQllbHNlIGlm IChzdHJjbXAob3B0LT5kZWZuYW1lLCAidHJ1bmNhdGUiKSA9PSAwKQogCQkJcGFyYW1zLnRydW5j YXRlID0gZ2V0X3ZhY29wdF90ZXJuYXJ5X3ZhbHVlKG9wdCk7CisJCWVsc2UgaWYgKHN0cmNtcChv cHQtPmRlZm5hbWUsICJ0YWJsZXNwYWNlIikgPT0gMCkKKwkJCXRhYmxlc3BhY2VuYW1lID0gZGVm R2V0U3RyaW5nKG9wdCk7CiAJCWVsc2UgaWYgKHN0cmNtcChvcHQtPmRlZm5hbWUsICJwYXJhbGxl bCIpID09IDApCiAJCXsKIAkJCWlmIChvcHQtPmFyZyA9PSBOVUxMKQpAQCAtMjAyLDYgKzIxMSwy NyBAQCBFeGVjVmFjdXVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgVmFjdXVtU3RtdCAqdmFjc3RtdCwg Ym9vbCBpc1RvcExldmVsKQogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKIAkJCQkgZXJybXNnKCJWQUNVVU0gRlVMTCBjYW5ub3QgYmUgcGVyZm9ybWVkIGluIHBh cmFsbGVsIikpKTsKIAorCS8qIEdldCB0YWJsZXNwYWNlIE9pZCB0byB1c2UuICovCisJaWYgKHRh Ymxlc3BhY2VuYW1lKQorCXsKKwkJaWYgKChwYXJhbXMub3B0aW9ucyAmIFZBQ09QVF9GVUxMKSA9 PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05P VF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coImluY29tcGF0aWJsZSBUQUJMRVNQQUNFIG9wdGlv biIpLAorCQkJCQllcnJkZXRhaWwoIllvdSBjYW4gb25seSB1c2UgVEFCTEVTUEFDRSB3aXRoIFZB Q1VVTSBGVUxMLiIpKSk7CisKKwkJdGFibGVzcGFjZU9pZCA9IGdldF90YWJsZXNwYWNlX29pZCh0 YWJsZXNwYWNlbmFtZSwgZmFsc2UpOworCisJCS8qIENhbid0IG1vdmUgYSBub24tc2hhcmVkIHJl bGF0aW9uIGludG8gcGdfZ2xvYmFsICovCisJCWlmICh0YWJsZXNwYWNlT2lkID09IEdMT0JBTFRB QkxFU1BBQ0VfT0lEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQllcnJtc2coImNhbm5vdCBtb3ZlIG5vbi1zaGFy ZWQgcmVsYXRpb24gdG8gdGFibGVzcGFjZSBcIiVzXCIiLAorCQkJCQkJCXRhYmxlc3BhY2VuYW1l KSkpOworCisJfQorCXBhcmFtcy50YWJsZXNwYWNlX29pZCA9IHRhYmxlc3BhY2VPaWQ7CisKIAkv KgogCSAqIE1ha2Ugc3VyZSBWQUNPUFRfQU5BTFlaRSBpcyBzcGVjaWZpZWQgaWYgYW55IGNvbHVt biBsaXN0cyBhcmUgcHJlc2VudC4KIAkgKi8KQEAgLTE3MDIsOCArMTczMiw5IEBAIHZhY3V1bV9y ZWwoT2lkIHJlbGlkLCBSYW5nZVZhciAqcmVsYXRpb24sIFZhY3V1bVBhcmFtcyAqcGFyYW1zKQog CUxPQ0tNT0RFCWxtb2RlOwogCVJlbGF0aW9uCW9uZXJlbDsKIAlMb2NrUmVsSWQJb25lcmVsaWQ7 Ci0JT2lkCQkJdG9hc3RfcmVsaWQ7Ci0JT2lkCQkJc2F2ZV91c2VyaWQ7CisJT2lkCQkJdG9hc3Rf cmVsaWQsCisJCQkJc2F2ZV91c2VyaWQsCisJCQkJdGFibGVzcGFjZU9pZCA9IEludmFsaWRPaWQ7 CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlzYXZlX25lc3RsZXZlbDsKIApAQCAt MTg0MSw2ICsxODcyLDIzIEBAIHZhY3V1bV9yZWwoT2lkIHJlbGlkLCBSYW5nZVZhciAqcmVsYXRp b24sIFZhY3V1bVBhcmFtcyAqcGFyYW1zKQogCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKKwkvKgorCSAq IFdlIGRvbid0IHN1cHBvcnQgbW92aW5nIHN5c3RlbSByZWxhdGlvbnMgaW50byBkaWZmZXJlbnQg dGFibGVzcGFjZXMKKwkgKiB1bmxlc3MgYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM9MS4KKwkgKi8K KwlpZiAocGFyYW1zLT5vcHRpb25zICYgVkFDT1BUX0ZVTEwgJiYKKwkJT2lkSXNWYWxpZChwYXJh bXMtPnRhYmxlc3BhY2Vfb2lkKSAmJgorCQlJc1N5c3RlbVJlbGF0aW9uKG9uZXJlbCkgJiYgIWFs bG93U3lzdGVtVGFibGVNb2RzKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQllcnJtc2coInNraXBwaW5nIHRh Ymxlc3BhY2UgY2hhbmdlIG9mIFwiJXNcIiIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShvbmVyZWwpKSwKKwkJCQllcnJkZXRhaWwoIkNhbm5vdCBtb3ZlIHN5c3RlbSByZWxhdGlvbiwg b25seSBWQUNVVU0gaXMgcGVyZm9ybWVkLiIpKSk7CisJfQorCWVsc2UKKwkJdGFibGVzcGFjZU9p ZCA9IHBhcmFtcy0+dGFibGVzcGFjZV9vaWQ7CisKIAkvKgogCSAqIEdldCBhIHNlc3Npb24tbGV2 ZWwgbG9jayB0b28uIFRoaXMgd2lsbCBwcm90ZWN0IG91ciBhY2Nlc3MgdG8gdGhlCiAJICogcmVs YXRpb24gYWNyb3NzIG11bHRpcGxlIHRyYW5zYWN0aW9ucywgc28gdGhhdCB3ZSBjYW4gdmFjdXVt IHRoZQpAQCAtMTkxMCw3ICsxOTU4LDggQEAgdmFjdXVtX3JlbChPaWQgcmVsaWQsIFJhbmdlVmFy ICpyZWxhdGlvbiwgVmFjdXVtUGFyYW1zICpwYXJhbXMpCiAJCQljbHVzdGVyX29wdGlvbnMgfD0g Q0xVT1BUX1ZFUkJPU0U7CiAKIAkJLyogVkFDVVVNIEZVTEwgaXMgbm93IGEgdmFyaWFudCBvZiBD TFVTVEVSOyBzZWUgY2x1c3Rlci5jICovCi0JCWNsdXN0ZXJfcmVsKHJlbGlkLCBJbnZhbGlkT2lk LCBjbHVzdGVyX29wdGlvbnMpOworCQljbHVzdGVyX3JlbChyZWxpZCwgSW52YWxpZE9pZCwgY2x1 c3Rlcl9vcHRpb25zLAorCQkJCXRhYmxlc3BhY2VPaWQpOwogCX0KIAllbHNlCiAJCXRhYmxlX3Jl bGF0aW9uX3ZhY3V1bShvbmVyZWwsIHBhcmFtcywgdmFjX3N0cmF0ZWd5KTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cmlu ZGV4IGJkY2VjMGYxNzcuLjk0Y2MwNjlhOGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTA0NjAsOCArMTA0 NjAsOSBAQCBjbHVzdGVyX2luZGV4X3NwZWNpZmljYXRpb246CiAvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKICAqCiAgKgkJUVVFUlk6Ci0gKgkJCQlWQUNVVU0KLSAqCQkJCUFOQUxZWkUKKyAqCQkJCVZB Q1VVTSBbRlVMTF0gW0ZSRUVaRV0gW1ZFUkJPU0VdIFtBTkFMWVpFXSBbIDx0YWJsZV9hbmRfY29s dW1ucz4gWywgLi4uXSBdCisgKgkJCQlWQUNVVU0gWyhvcHRpb25zKV0gWyA8dGFibGVfYW5kX2Nv bHVtbnM+IFssIC4uLl0gXQorICoJCQkJQU5BTFlaRSBbVkVSQk9TRV0gWyA8dGFibGVfYW5kX2Nv bHVtbnM+IFssIC4uLl0gXQogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCBhYTViOTdmYmFjLi5mMzY0YjM3NTg1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMjkxNiw2ICsyOTE2LDcgQEAgdGFibGVfcmVj aGVja19hdXRvdmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQl0YWItPmF0 X3BhcmFtcy5tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZSA9IG11bHRpeGFjdF9mcmVlemVfdGFi bGVfYWdlOwogCQl0YWItPmF0X3BhcmFtcy5pc193cmFwYXJvdW5kID0gd3JhcGFyb3VuZDsKIAkJ dGFiLT5hdF9wYXJhbXMubG9nX21pbl9kdXJhdGlvbiA9IGxvZ19taW5fZHVyYXRpb247CisJCXRh Yi0+YXRfcGFyYW1zLnRhYmxlc3BhY2Vfb2lkID0gSW52YWxpZE9pZDsKIAkJdGFiLT5hdF92YWN1 dW1fY29zdF9saW1pdCA9IHZhY19jb3N0X2xpbWl0OwogCQl0YWItPmF0X3ZhY3V1bV9jb3N0X2Rl bGF5ID0gdmFjX2Nvc3RfZGVsYXk7CiAJCXRhYi0+YXRfcmVsbmFtZSA9IE5VTEw7CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmMKaW5kZXggNjVlYmY5MTFmMy4uMDkwOGQ3ZDRjNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwpAQCAt MjMxMiw3ICsyMzEyLDkgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBz dGFydCwgaW50IGVuZCkKIAkJICogb25lIHdvcmQsIHNvIHRoZSBhYm92ZSB0ZXN0IGlzIGNvcnJl Y3QuCiAJCSAqLwogCQlpZiAoZW5kc193aXRoKHByZXZfd2QsICcoJykgfHwgZW5kc193aXRoKHBy ZXZfd2QsICcsJykpCi0JCQlDT01QTEVURV9XSVRIKCJWRVJCT1NFIik7CisJCQlDT01QTEVURV9X SVRIKCJUQUJMRVNQQUNFIiwgIlZFUkJPU0UiKTsKKwkJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIlRB QkxFU1BBQ0UiKSkKKwkJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2ZfdGFi bGVzcGFjZXMpOwogCX0KIAogLyogQ09NTUVOVCAqLwpAQCAtMzgwNiw5ICszODA4LDEyIEBAIHBz cWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCWlm IChlbmRzX3dpdGgocHJldl93ZCwgJygnKSB8fCBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKIAkJ CUNPTVBMRVRFX1dJVEgoIkZVTEwiLCAiRlJFRVpFIiwgIkFOQUxZWkUiLCAiVkVSQk9TRSIsCiAJ CQkJCQkgICJESVNBQkxFX1BBR0VfU0tJUFBJTkciLCAiU0tJUF9MT0NLRUQiLAotCQkJCQkJICAi SU5ERVhfQ0xFQU5VUCIsICJUUlVOQ0FURSIsICJQQVJBTExFTCIpOworCQkJCQkJICAiSU5ERVhf Q0xFQU5VUCIsICJUUlVOQ0FURSIsICJQQVJBTExFTCIsCisJCQkJCQkgICJUQUJMRVNQQUNFIik7 CiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJGVUxMfEZSRUVaRXxBTkFMWVpFfFZFUkJPU0V8RElT QUJMRV9QQUdFX1NLSVBQSU5HfFNLSVBfTE9DS0VEfElOREVYX0NMRUFOVVB8VFJVTkNBVEUiKSkK IAkJCUNPTVBMRVRFX1dJVEgoIk9OIiwgIk9GRiIpOworCQllbHNlIGlmIChUYWlsTWF0Y2hlcygi VEFCTEVTUEFDRSIpKQorCQkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90 YWJsZXNwYWNlcyk7CiAJfQogCWVsc2UgaWYgKEhlYWRNYXRjaGVzKCJWQUNVVU0iKSAmJiBUYWls TWF0Y2hlcygiKCIpKQogCQkvKiAiVkFDVVVNICgiIHNob3VsZCBiZSBjYXVnaHQgYWJvdmUsIHNv IGFzc3VtZSB3ZSB3YW50IGNvbHVtbnMgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2NsdXN0ZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NsdXN0ZXIuaAppbmRleCA2NzRj ZGNkMGNkLi4zMDMwMGE4Zjc0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jbHVz dGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oCkBAIC0yMCw3ICsyMCw4 IEBACiAKIAogZXh0ZXJuIHZvaWQgY2x1c3RlcihQYXJzZVN0YXRlICpwc3RhdGUsIENsdXN0ZXJT dG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpOwotZXh0ZXJuIHZvaWQgY2x1c3Rlcl9yZWwoT2lk IHRhYmxlT2lkLCBPaWQgaW5kZXhPaWQsIGludCBvcHRpb25zKTsKK2V4dGVybiB2b2lkIGNsdXN0 ZXJfcmVsKE9pZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkLCBpbnQgb3B0aW9ucywKKwkJCQkJCU9p ZCB0YWJsZXNwYWNlT2lkKTsKIGV4dGVybiB2b2lkIGNoZWNrX2luZGV4X2lzX2NsdXN0ZXJhYmxl KFJlbGF0aW9uIE9sZEhlYXAsIE9pZCBpbmRleE9pZCwKIAkJCQkJCQkJCSAgIGJvb2wgcmVjaGVj aywgTE9DS01PREUgbG9ja21vZGUpOwogZXh0ZXJuIHZvaWQgbWFya19pbmRleF9jbHVzdGVyZWQo UmVsYXRpb24gcmVsLCBPaWQgaW5kZXhPaWQsIGJvb2wgaXNfaW50ZXJuYWwpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92 YWN1dW0uaAppbmRleCBhNGNkNzIxNDAwLi40YjVhYzcxNDVkIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0u aApAQCAtMjI5LDYgKzIyOSw4IEBAIHR5cGVkZWYgc3RydWN0IFZhY3V1bVBhcmFtcwogCSAqIGRp c2FibGVkLgogCSAqLwogCWludAkJCW53b3JrZXJzOworCU9pZAkJCXRhYmxlc3BhY2Vfb2lkOyAv KiB0YWJsZXNwYWNlIHRvIHVzZSBmb3IgcmVsYXRpb25zCisJCQkJCQkJCSAqIHJlYnVpbHQgYnkg VkFDVVVNIEZVTEwgKi8KIH0gVmFjdXVtUGFyYW1zOwogCiAvKiBHVUMgcGFyYW1ldGVycyAqLwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZSBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5zb3VyY2UKaW5kZXggNWQ4YTIyY2ZmYi4u ZjQ2ODdmNmJmYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNl LnNvdXJjZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291cmNlCkBA IC0xNyw3ICsxNyw3IEBAIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBTRVQgKHNv bWVfbm9uZXhpc3RlbnRfcGFyYW1ldGVyID0gdHJ1ZSk7ICAtLSBmCiBBTFRFUiBUQUJMRVNQQUNF IHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nvc3QgPSAyLjApOyAtLSBmYWls CiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nv c3QsIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSk7IC0tIG9rCiAKLS0tIGNyZWF0ZSB0YWJsZSB0 byB0ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorLS0gY3JlYXRlIHRhYmxlIHRv IHRlc3QgUkVJTkRFWCwgQ0xVU1RFUiBhbmQgVkFDVVVNIEZVTEwgd2l0aCBUQUJMRVNQQUNFIGNo YW5nZQogQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmlnaW50 LCBudW0yIGRvdWJsZSBwcmVjaXNpb24sIG51bTMgZG91YmxlIHByZWNpc2lvbik7CiBJTlNFUlQg SU5UTyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xLCBudW0yLCBudW0zKQogICBTRUxF Q1Qgcm91bmQocmFuZG9tKCkqMTAwKSwgcmFuZG9tKCksIHJhbmRvbSgpKjQyCkBAIC00NywxMSAr NDcsMzIgQEAgUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBDT05D VVJSRU5UTFkgcGdfYW07IC0tIGZhaWwKIFJFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSBJ TkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsgLS0gZmFpbAogUkVJTkRFWCAoVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBUQUJMRSBwZ19hbTsgLS0gZmFpbAogCistLSBjaGVj ayB0aGF0IGFsbCBpbmRleGVzIG1vdmVkIHRvIG5ldyB0YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFt ZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdf dGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZIHJl bG5hbWU7CisKKy0tIGNoZWNrIENMVVNURVIgd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorQ0xVU1RF UiAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs IFVTSU5HIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAtLSBvaworQ0xVU1RFUiAoVEFC TEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBwZ19hdXRoaWQgVVNJTkcgcGdfYXV0aGlkX3JvbG5h bWVfaW5kZXg7IC0tIGZhaWwKK0NMVVNURVIgKFRBQkxFU1BBQ0UgcGdfZ2xvYmFsKSByZWdyZXNz X3RibHNwYWNlX3Rlc3RfdGJsIFVTSU5HIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAt LSBmYWlsCisKIC0tIGNoZWNrIHRoYXQgYWxsIHJlbGF0aW9ucyBtb3ZlZCB0byBuZXcgdGFibGVz cGFjZQogU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcwogV0hFUkUgcmVsdGFibGVzcGFjZT0o U0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190Ymxz cGFjZScpCiBPUkRFUiBCWSByZWxuYW1lOwogCistLSBjaGVjayBWQUNVVU0gd2l0aCBUQUJMRVNQ QUNFIGNoYW5nZQorVkFDVVVNIChGVUxMLCBBTkFMWVNFLCBGUkVFWkUsIFRBQkxFU1BBQ0UgcGdf ZGVmYXVsdCkgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsgLS0gb2sKK1ZBQ1VVTSAoRlVMTCwg VEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBwZ19hdXRoaWQ7IC0tIHNraXAgd2l0aCB3YXJuaW5nCitW QUNVVU0gKEFOQUxZU0UsIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCk7IC0tIGZhaWwKK1ZBQ1VVTSAo RlVMTCwgVEFCTEVTUEFDRSBwZ19nbG9iYWwpIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0t IGZhaWwKKworLS0gY2hlY2sgdGhhdCBhbGwgdGFibGVzIG1vdmVkIGJhY2sgdG8gcGdfZGVmYXVs dAorU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VM RUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFj ZScpCitPUkRFUiBCWSByZWxuYW1lOworCiAtLSBtb3ZlIGluZGV4ZXMgYmFjayB0byBwZ19kZWZh dWx0IHRhYmxlc3BhY2UKIFJFSU5ERVggKFRBQkxFU1BBQ0UgcGdfZGVmYXVsdCkgVEFCTEUgQ09O Q1VSUkVOVExZIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7IC0tIG9rCiAKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlIGIvc3JjL3Rlc3QvcmVn cmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UKaW5kZXggMTE2OWYwMzE4Yi4uZTBhNWM0OGZl OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UKQEAgLTIwLDcg KzIwLDcgQEAgRVJST1I6ICB1bnJlY29nbml6ZWQgcGFyYW1ldGVyICJzb21lX25vbmV4aXN0ZW50 X3BhcmFtZXRlciIKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSBSRVNFVCAocmFu ZG9tX3BhZ2VfY29zdCA9IDIuMCk7IC0tIGZhaWwKIEVSUk9SOiAgUkVTRVQgbXVzdCBub3QgaW5j bHVkZSB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZSBSRVNFVCAocmFuZG9tX3BhZ2VfY29zdCwgZWZmZWN0aXZlX2lvX2NvbmN1cnJlbmN5KTsg LS0gb2sKLS0tIGNyZWF0ZSB0YWJsZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNo YW5nZQorLS0gY3JlYXRlIHRhYmxlIHRvIHRlc3QgUkVJTkRFWCwgQ0xVU1RFUiBhbmQgVkFDVVVN IEZVTEwgd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQogQ1JFQVRFIFRBQkxFIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF90YmwgKG51bTEgYmlnaW50LCBudW0yIGRvdWJsZSBwcmVjaXNpb24sIG51bTMgZG91 YmxlIHByZWNpc2lvbik7CiBJTlNFUlQgSU5UTyByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChu dW0xLCBudW0yLCBudW0zKQogICBTRUxFQ1Qgcm91bmQocmFuZG9tKCkqMTAwKSwgcmFuZG9tKCks IHJhbmRvbSgpKjQyCkBAIC02MSw5ICs2MSw0NCBAQCBSRUlOREVYIChUQUJMRVNQQUNFIHBnX2ds b2JhbCkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHg7IC0tIGZhaWwKIEVSUk9S OiAgY2Fubm90IG1vdmUgbm9uLXNoYXJlZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlICJwZ19nbG9i YWwiCiBSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHBnX2FtOyAt LSBmYWlsCiBFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkOiAicGdfYW1fbmFtZV9pbmRleCIgaXMg YSBzeXN0ZW0gY2F0YWxvZworLS0gY2hlY2sgdGhhdCBhbGwgaW5kZXhlcyBtb3ZlZCB0byBuZXcg dGFibGVzcGFjZQorU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVz cGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVz c190YmxzcGFjZScpCitPUkRFUiBCWSByZWxuYW1lOworICAgICAgICAgICAgcmVsbmFtZSAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGJsc3Bh Y2VfdGVzdF90YmxfaWR4CisoMSByb3cpCisKKy0tIGNoZWNrIENMVVNURVIgd2l0aCBUQUJMRVNQ QUNFIGNoYW5nZQorQ0xVU1RFUiAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSByZWdyZXNz X3RibHNwYWNlX3Rlc3RfdGJsIFVTSU5HIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4OyAt LSBvaworQ0xVU1RFUiAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBwZ19hdXRoaWQgVVNJ TkcgcGdfYXV0aGlkX3JvbG5hbWVfaW5kZXg7IC0tIGZhaWwKK0VSUk9SOiAgY2Fubm90IGNsdXN0 ZXIgYSBzaGFyZWQgY2F0YWxvZworQ0xVU1RFUiAoVEFCTEVTUEFDRSBwZ19nbG9iYWwpIHJlZ3Jl c3NfdGJsc3BhY2VfdGVzdF90YmwgVVNJTkcgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHg7 IC0tIGZhaWwKK0VSUk9SOiAgY2Fubm90IG1vdmUgbm9uLXNoYXJlZCByZWxhdGlvbiB0byB0YWJs ZXNwYWNlICJwZ19nbG9iYWwiCiAtLSBjaGVjayB0aGF0IGFsbCByZWxhdGlvbnMgbW92ZWQgdG8g bmV3IHRhYmxlc3BhY2UKIFNFTEVDVCByZWxuYW1lIEZST00gcGdfY2xhc3MKIFdIRVJFIHJlbHRh Ymxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3Jl Z3Jlc3NfdGJsc3BhY2UnKQorT1JERVIgQlkgcmVsbmFtZTsKKyAgICAgICAgICAgIHJlbG5hbWUg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsCisgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHgKKygyIHJvd3Mp CisKKy0tIGNoZWNrIFZBQ1VVTSB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlCitWQUNVVU0gKEZVTEws IEFOQUxZU0UsIEZSRUVaRSwgVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSByZWdyZXNzX3RibHNwYWNl X3Rlc3RfdGJsOyAtLSBvaworVkFDVVVNIChGVUxMLCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIHBn X2F1dGhpZDsgLS0gc2tpcCB3aXRoIHdhcm5pbmcKK1dBUk5JTkc6ICBza2lwcGluZyB0YWJsZXNw YWNlIGNoYW5nZSBvZiAicGdfYXV0aGlkIgorREVUQUlMOiAgQ2Fubm90IG1vdmUgc3lzdGVtIHJl bGF0aW9uLCBvbmx5IFZBQ1VVTSBpcyBwZXJmb3JtZWQuCitWQUNVVU0gKEFOQUxZU0UsIFRBQkxF U1BBQ0UgcGdfZGVmYXVsdCk7IC0tIGZhaWwKK0VSUk9SOiAgaW5jb21wYXRpYmxlIFRBQkxFU1BB Q0Ugb3B0aW9uCitERVRBSUw6ICBZb3UgY2FuIG9ubHkgdXNlIFRBQkxFU1BBQ0Ugd2l0aCBWQUNV VU0gRlVMTC4KK1ZBQ1VVTSAoRlVMTCwgVEFCTEVTUEFDRSBwZ19nbG9iYWwpIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF90Ymw7IC0tIGZhaWwKK0VSUk9SOiAgY2Fubm90IG1vdmUgbm9uLXNoYXJlZCBy ZWxhdGlvbiB0byB0YWJsZXNwYWNlICJwZ19nbG9iYWwiCistLSBjaGVjayB0aGF0IGFsbCB0YWJs ZXMgbW92ZWQgYmFjayB0byBwZ19kZWZhdWx0CitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNz CitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVS RSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJykKIE9SREVSIEJZIHJlbG5hbWU7CiAgICAgICAg ICAgICByZWxuYW1lICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0tIAoyLjIwLjEKCg== --=_680b1b8a9b2a839baed301219b4ad717 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v31-0003-Refactor-and-reuse-set_rel_tablespace.patch Content-Disposition: attachment; filename=v31-0003-Refactor-and-reuse-set_rel_tablespace.patch; size=6722 RnJvbSBlMTFmZWRmYjMwYWE2NzQ3MTE1NmRlMWRlNWE4MTkyOGJiMGM0ZTA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IFdlZCwgMjMgU2VwIDIwMjAgMTg6MjE6MTYgKzAzMDAKU3ViamVjdDog W1BBVENIIHYzMSAzLzVdIFJlZmFjdG9yIGFuZCByZXVzZSBzZXRfcmVsX3RhYmxlc3BhY2UoKQoK LS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICB8IDc0ICsrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyB8IDM5 ICstLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAgICB8ICAy ICsKIDMgZmlsZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jCmluZGV4IDUzMmMxMWU5ZGQuLmIzMTdmNTU2ZGYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMKQEAgLTM2MDcsNyArMzYwNyw2IEBAIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wg c2tpcF9jb25zdHJhaW50X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwKIAlSZWxhdGlvbglpUmVs LAogCQkJCWhlYXBSZWxhdGlvbjsKIAlPaWQJCQloZWFwSWQ7Ci0JT2lkCQkJb2xkVGFibGVzcGFj ZU9pZDsKIAlJbmRleEluZm8gICppbmRleEluZm87CiAJdm9sYXRpbGUgYm9vbCBza2lwcGVkX2Nv bnN0cmFpbnQgPSBmYWxzZTsKIAlQR1JVc2FnZQlydTA7CkBAIC0zNzIzLDQxICszNzIyLDE3IEBA 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 Ki8KQEAgLTQwNjMsNiArNDAzOCw1MSBAQCByZWluZGV4X3JlbGF0aW9uKE9pZCByZWxpZCwgaW50 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 ZXggZjU2ZDM5NGU2MC4uYzI3NzE0ZWZjMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAg LTI4NTUsNDEgKzI4NTUsNiBAQCByZWluZGV4X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIAkJ CQkgICBlcnJpbmZvLT5yZWxuYW1lc3BhY2UsIGVycmluZm8tPnJlbG5hbWUpOwogfQogCi0vKgot ICogVGhpcyBpcyBtb3N0bHkgZHVwbGljYXRpbmcgQVRFeGVjU2V0VGFibGVTcGFjZU5vU3RvcmFn ZSwKLSAqIHdoaWNoIHNob3VsZCBtYXliZSBiZSBmYWN0b3JlZCBvdXQgdG8gYSBsaWJyYXJ5IGZ1 bmN0aW9uLgotICovCi1zdGF0aWMgdm9pZAotc2V0X3JlbF90YWJsZXNwYWNlKE9pZCByZWxvaWQs IE9pZCB0YWJsZXNwYWNlT2lkKQotewotCVJlbGF0aW9uCQlwZ19jbGFzczsKLQlIZWFwVHVwbGUJ CXR1cGxlOwotCUZvcm1fcGdfY2xhc3MJcmRfcmVsOwotCU9pZAkJCW9sZFRhYmxlc3BhY2VPaWQ7 Ci0KLQkvKiBHZXQgYSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIHJlbGF0aW9uJ3MgcGdfY2xhc3Mg cm93ICovCi0JcGdfY2xhc3MgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgUm93RXhj bHVzaXZlTG9jayk7Ci0KLQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoUkVMT0lELCBPYmpl Y3RJZEdldERhdHVtKHJlbG9pZCkpOwotCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSkpCi0J CWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIHJlbG9p ZCk7Ci0JcmRfcmVsID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7Ci0KLQkvKiBO byB3b3JrIGlmIG5vIGNoYW5nZSBpbiB0YWJsZXNwYWNlLiAqLwotCW9sZFRhYmxlc3BhY2VPaWQg PSByZF9yZWwtPnJlbHRhYmxlc3BhY2U7Ci0JaWYgKHRhYmxlc3BhY2VPaWQgIT0gb2xkVGFibGVz cGFjZU9pZCB8fAotCQkodGFibGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVTcGFjZSAmJiBP aWRJc1ZhbGlkKG9sZFRhYmxlc3BhY2VPaWQpKSkKLQl7Ci0JCS8qIFVwZGF0ZSB0aGUgcGdfY2xh c3Mgcm93ICovCi0JCXJkX3JlbC0+cmVsdGFibGVzcGFjZSA9ICh0YWJsZXNwYWNlT2lkID09IE15 RGF0YWJhc2VUYWJsZVNwYWNlKSA/Ci0JCQlJbnZhbGlkT2lkIDogdGFibGVzcGFjZU9pZDsKLQkJ Q2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2NsYXNzLCAmdHVwbGUtPnRfc2VsZiwgdHVwbGUpOwotCX0K LQotCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKLQl0YWJsZV9jbG9zZShwZ19jbGFzcywgUm93RXhj bHVzaXZlTG9jayk7Ci19Ci0KIC8qCiAgKiBSZWluZGV4UGFydGl0aW9ucwogICoKQEAgLTI5NjMs NyArMjkyOCw3IEBAIFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgaW50IG9wdGlvbnMsIGJv b2wgaXNUb3BMZXZlbCwgY2hhciAqdGFibGVzcGFjZSkKIAkJICogcmVsYXRpb25zLgogCQkgKi8K IAkJaWYgKHBhcnRraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCi0JCQlzZXRfcmVs X3RhYmxlc3BhY2UocGFydG9pZCwgdGFibGVzcGFjZU9pZCk7CisJCQkodm9pZCkgc2V0X3JlbF90 YWJsZXNwYWNlKHBhcnRvaWQsIHRhYmxlc3BhY2VPaWQpOwogCQllbHNlIGlmIChwYXJ0a2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQogCQl7CiAJCQlSZWxhdGlvbiByZWwgPSB0YWJs ZV9vcGVuKHBhcnRvaWQsIFNoYXJlTG9jayk7CkBAIC0yOTc0LDcgKzI5MzksNyBAQCBSZWluZGV4 UGFydGl0aW9ucyhPaWQgcmVsaWQsIGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2ZWwsIGNoYXIg KnRhYmxlc3BhY2UpCiAJCQlmb3JlYWNoIChsYywgaW5kZXhJZHMpCiAJCQl7CiAJCQkJT2lkIGlu ZGV4aWQgPSBsZmlyc3Rfb2lkKGxjKTsKLQkJCQlzZXRfcmVsX3RhYmxlc3BhY2UoaW5kZXhpZCwg dGFibGVzcGFjZU9pZCk7CisJCQkJKHZvaWQpIHNldF9yZWxfdGFibGVzcGFjZShpbmRleGlkLCB0 YWJsZXNwYWNlT2lkKTsKIAkJCX0KIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggNWRlNDBmMTgy Zi4uY2UzMmRiNjJmOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtMTQwLDYgKzE0MCw4IEBAIGV4dGVy biBPaWQJSW5kZXhHZXRSZWxhdGlvbihPaWQgaW5kZXhJZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4 dGVybiB2b2lkIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50 X2NoZWNrcywKIAkJCQkJCSAgY2hhciByZWxwZXJzaXN0ZW5jZSwgaW50IG9wdGlvbnMsIE9pZCB0 YWJsZXNwYWNlT2lkKTsKIAorZXh0ZXJuIGJvb2wgc2V0X3JlbF90YWJsZXNwYWNlKE9pZCByZWxv aWQsIE9pZCB0YWJsZXNwYWNlT2lkKTsKKwogLyogRmxhZyBiaXRzIGZvciByZWluZGV4X3JlbGF0 aW9uKCk6ICovCiAjZGVmaW5lIFJFSU5ERVhfUkVMX1BST0NFU1NfVE9BU1QJCQkweDAxCiAjZGVm aW5lIFJFSU5ERVhfUkVMX1NVUFBSRVNTX0lOREVYX1VTRQkJMHgwMgotLSAKMi4yMC4xCgo= --=_680b1b8a9b2a839baed301219b4ad717 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v31-0002-Allow-REINDEX-to-change-tablespace.patch Content-Disposition: attachment; filename=v31-0002-Allow-REINDEX-to-change-tablespace.patch; size=37549 RnJvbSAyMGJjOWNmMmJhODRjODY2ZTRiN2RhNjMyZmY3NjQ3NGQ4YTY0ZGRjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4ZXkgS29uZHJhdG92IDxrb25kcmF0b3YuYWxla3NleUBn bWFpbC5jb20+CkRhdGU6IE1vbiwgMjMgTWFyIDIwMjAgMjE6MTA6MjkgKzAzMDAKU3ViamVjdDog W1BBVENIIHYzMSAyLzVdIEFsbG93IFJFSU5ERVggdG8gY2hhbmdlIHRhYmxlc3BhY2UKClJFSU5E RVggYWxyZWFkeSBkb2VzIGZ1bGwgcmVsYXRpb24gcmV3cml0ZSwgdGhpcyBwYXRjaCBhZGRzIGEK cG9zc2liaWxpdHkgdG8gc3BlY2lmeSBhIG5ldyB0YWJsZXNwYWNlIHdoZXJlIG5ldyByZWxmaWxl bm9kZQp3aWxsIGJlIGNyZWF0ZWQuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwg ICAgICAgICAgICAgfCAgMjIgKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAg ICAgICAgICAgfCAxMDMgKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jbHVz dGVyLmMgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMgICAgICAgICAgfCAxNTIgKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvdXRp bGl0eS5jICAgICAgICAgICAgICAgIHwgIDE1ICsrLQogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5jICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAg ICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCAgICAg ICAgICAgICB8ICAgNiArLQogc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJj ZSAgfCAgNTMgKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291 cmNlIHwgMTAyICsrKysrKysrKysrKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgNDI1IGluc2VydGlv bnMoKyksIDQxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcmVp bmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5kZXggYTM4NDNiZmE0 ZC4uOGVjZWQ3OTQ1NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTI2LDYgKzI2LDcgQEAgUkVJ TkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFi bGU+IFssIC4uLl0gKSBdIHsgSU4KIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IGNhbiBiZSBvbmUgb2Y6PC9waHJhc2U+CiAK ICAgICBWRVJCT1NFIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3Jl cGxhY2VhYmxlPiBdCisgICAgVEFCTEVTUEFDRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bmV3X3RhYmxlc3BhY2U8L3JlcGxhY2VhYmxlPgogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9w c2lzZGl2PgogCkBAIC0xNzMsNiArMTc0LDE5IEBAIFJFSU5ERVggWyAoIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSB7IElOCiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxsaXRlcmFsPlRBQkxFU1BBQ0U8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0 aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIHNwZWNpZmllcyB0aGF0IGluZGV4ZXMgd2ls bCBiZSByZWJ1aWx0IG9uIGEgbmV3IHRhYmxlc3BhY2UuCisgICAgICBDYW5ub3QgYmUgdXNlZCB3 aXRoICJtYXBwZWQiIHJlbGF0aW9ucy4gSWYgPGxpdGVyYWw+U0NIRU1BPC9saXRlcmFsPiwKKyAg ICAgIDxsaXRlcmFsPkRBVEFCQVNFPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5TWVNURU08L2xpdGVy YWw+IGlzIHNwZWNpZmllZCwgdGhlbgorICAgICAgYWxsIHVuc3VpdGFibGUgcmVsYXRpb25zIHdp bGwgYmUgc2tpcHBlZCBhbmQgYSBzaW5nbGUgPGxpdGVyYWw+V0FSTklORzwvbGl0ZXJhbD4KKyAg ICAgIHdpbGwgYmUgZ2VuZXJhdGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFs PlZFUkJPU0U8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KQEAgLTIwOSw2ICsyMjMs MTQgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwv cmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPm5ld190YWJsZXNwYWNlPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSB0YWJsZXNwYWNlIHdoZXJlIGluZGV4 ZXMgd2lsbCBiZSByZWJ1aWx0LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwv dmFybGlzdGVudHJ5PgogICA8L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNlY3QxPgogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKaW5kZXggNzMxNjEwYzcwMS4uNTMyYzExZTlkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYwpAQCAt NTcsNiArNTcsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNs dWRlICJjb21tYW5kcy9wcm9ncmVzcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90 cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKQEAgLTEzOTQsOSArMTM5NSwxMyBAQCBpbmRleF91cGRhdGVfY29sbGF0aW9uX3Zl cnNpb25zKE9pZCByZWxpZCwgT2lkIGNvbGwpCiAgKiBDcmVhdGUgY29uY3VycmVudGx5IGFuIGlu ZGV4IGJhc2VkIG9uIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBvbmUgcHJvdmlkZWQgYnkKICAqIGNh bGxlci4gIFRoZSBpbmRleCBpcyBpbnNlcnRlZCBpbnRvIGNhdGFsb2dzIGFuZCBuZWVkcyB0byBi ZSBidWlsdCBsYXRlcgogICogb24uICBUaGlzIGlzIGNhbGxlZCBkdXJpbmcgY29uY3VycmVudCBy ZWluZGV4IHByb2Nlc3NpbmcuCisgKgorICogInRhYmxlc3BhY2VPaWQiIGlzIHRoZSBuZXcgdGFi bGVzcGFjZSB0byB1c2UgZm9yIHRoaXMgaW5kZXguICBJZgorICogSW52YWxpZE9pZCwgdXNlIHRo ZSB0YWJsZXNwYWNlIGluLXVzZSBpbnN0ZWFkLgogICovCiBPaWQKLWluZGV4X2NvbmN1cnJlbnRs eV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sIE9pZCBvbGRJbmRleElkLCBjb25z dCBjaGFyICpuZXdOYW1lKQoraW5kZXhfY29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9u IGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsCisJCQkJCQkJICAgT2lkIHRhYmxlc3BhY2VP aWQsIGNvbnN0IGNoYXIgKm5ld05hbWUpCiB7CiAJUmVsYXRpb24JaW5kZXhSZWxhdGlvbjsKIAlJ bmRleEluZm8gICpvbGRJbmZvLApAQCAtMTUyNiw3ICsxNTMxLDggQEAgaW5kZXhfY29uY3VycmVu dGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9sZEluZGV4SWQsIGNv bnN0IGNoYXIKIAkJCQkJCQkgIG5ld0luZm8sCiAJCQkJCQkJICBpbmRleENvbE5hbWVzLAogCQkJ CQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5yZWxhbSwKLQkJCQkJCQkgIGluZGV4UmVsYXRp b24tPnJkX3JlbC0+cmVsdGFibGVzcGFjZSwKKwkJCQkJCQkgIE9pZElzVmFsaWQodGFibGVzcGFj ZU9pZCkgPworCQkJCQkJCQl0YWJsZXNwYWNlT2lkIDogaW5kZXhSZWxhdGlvbi0+cmRfcmVsLT5y ZWx0YWJsZXNwYWNlLAogCQkJCQkJCSAgaW5kZXhSZWxhdGlvbi0+cmRfaW5kY29sbGF0aW9uLAog CQkJCQkJCSAgaW5kY2xhc3MtPnZhbHVlcywKIAkJCQkJCQkgIGluZGNvbG9wdGlvbnMtPnZhbHVl cywKQEAgLTM1OTEsMTggKzM1OTcsMjIgQEAgSW5kZXhHZXRSZWxhdGlvbihPaWQgaW5kZXhJZCwg Ym9vbCBtaXNzaW5nX29rKQogCiAvKgogICogcmVpbmRleF9pbmRleCAtIFRoaXMgcm91dGluZSBp cyB1c2VkIHRvIHJlY3JlYXRlIGEgc2luZ2xlIGluZGV4CisgKgorICogU2VlIGNvbW1lbnRzIG9m IHJlaW5kZXhfcmVsYXRpb24oKSBmb3IgZGV0YWlscyBhYm91dCAidGFibGVzcGFjZU9pZCIuCiAg Ki8KIHZvaWQKIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJhaW50 X2NoZWNrcywgY2hhciBwZXJzaXN0ZW5jZSwKLQkJCSAgaW50IG9wdGlvbnMpCisJCQkgIGludCBv cHRpb25zLCBPaWQgdGFibGVzcGFjZU9pZCkKIHsKIAlSZWxhdGlvbglpUmVsLAogCQkJCWhlYXBS ZWxhdGlvbjsKIAlPaWQJCQloZWFwSWQ7CisJT2lkCQkJb2xkVGFibGVzcGFjZU9pZDsKIAlJbmRl eEluZm8gICppbmRleEluZm87CiAJdm9sYXRpbGUgYm9vbCBza2lwcGVkX2NvbnN0cmFpbnQgPSBm YWxzZTsKIAlQR1JVc2FnZQlydTA7CiAJYm9vbAkJcHJvZ3Jlc3MgPSAob3B0aW9ucyAmIFJFSU5E RVhPUFRfUkVQT1JUX1BST0dSRVNTKSAhPSAwOworCWJvb2wJCXNldF90YWJsZXNwYWNlID0gT2lk SXNWYWxpZCh0YWJsZXNwYWNlT2lkKTsKIAogCXBnX3J1c2FnZV9pbml0KCZydTApOwogCkBAIC0z NjU0LDYgKzM2NjQsMzUgQEAgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2Nv bnN0cmFpbnRfY2hlY2tzLCBjaGFyIHBlcnNpc3RlbmNlLAogCQkJIGdldF9uYW1lc3BhY2VfbmFt ZShSZWxhdGlvbkdldE5hbWVzcGFjZShpUmVsKSksCiAJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUoaVJlbCkpOwogCisJLyoKKwkgKiBXZSBkb24ndCBzdXBwb3J0IG1vdmluZyBzeXN0ZW0gcmVs YXRpb25zIGludG8gZGlmZmVyZW50IHRhYmxlc3BhY2VzCisJICogdW5sZXNzIGFsbG93X3N5c3Rl bV90YWJsZV9tb2RzPTEuCisJICovCisJaWYgKHNldF90YWJsZXNwYWNlICYmCisJCSFhbGxvd1N5 c3RlbVRhYmxlTW9kcyAmJiBJc1N5c3RlbVJlbGF0aW9uKGlSZWwpKQorCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJIGVy cm1zZygicGVybWlzc2lvbiBkZW5pZWQ6IFwiJXNcIiBpcyBhIHN5c3RlbSBjYXRhbG9nIiwKKwkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlSZWwpKSkpOworCisJLyoKKwkgKiBXZSBjYW5u b3Qgc3VwcG9ydCBtb3ZpbmcgbWFwcGVkIHJlbGF0aW9ucyBpbnRvIGRpZmZlcmVudCB0YWJsZXNw YWNlcy4KKwkgKiAoSW4gcGFydGljdWxhciB0aGlzIGVsaW1pbmF0ZXMgYWxsIHNoYXJlZCBjYXRh bG9ncy4pCisJICovCisJaWYgKHNldF90YWJsZXNwYWNlICYmIFJlbGF0aW9uSXNNYXBwZWQoaVJl bCkpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJCSBlcnJtc2coImNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBtYXBw ZWQgcmVsYXRpb24gXCIlc1wiIiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGlSZWwp KSkpOworCisJLyogSXQncyBub3QgYSBzaGFyZWQgY2F0YWxvZywgc28gcmVmdXNlIHRvIG1vdmUg aXQgdG8gc2hhcmVkIHRhYmxlc3BhY2UgKi8KKwlpZiAodGFibGVzcGFjZU9pZCA9PSBHTE9CQUxU QUJMRVNQQUNFX09JRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fubm90IG1vdmUgbm9uLXNoYXJl ZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlIFwiJXNcIiIsCisJCQkJCSBnZXRfdGFibGVzcGFjZV9u YW1lKHRhYmxlc3BhY2VPaWQpKSkpOworCisKIAkvKgogCSAqIERvbid0IGFsbG93IHJlaW5kZXgg b24gdGVtcCB0YWJsZXMgb2Ygb3RoZXIgYmFja2VuZHMgLi4uIHRoZWlyIGxvY2FsCiAJICogYnVm ZmVyIG1hbmFnZXIgaXMgbm90IGdvaW5nIHRvIGNvcGUuCkBAIC0zNjgwLDYgKzM3MTksNTEgQEAg cmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tzLCBj aGFyIHBlcnNpc3RlbmNlLAogCSAqLwogCUNoZWNrVGFibGVOb3RJblVzZShpUmVsLCAiUkVJTkRF WCBJTkRFWCIpOwogCisJaWYgKHRhYmxlc3BhY2VPaWQgPT0gTXlEYXRhYmFzZVRhYmxlU3BhY2Up CisJCXRhYmxlc3BhY2VPaWQgPSBJbnZhbGlkT2lkOworCisJLyoKKwkgKiBTZXQgdGhlIG5ldyB0 YWJsZXNwYWNlIGZvciB0aGUgcmVsYXRpb24uICBEbyB0aGF0IG9ubHkgaW4gdGhlCisJICogY2Fz ZSB3aGVyZSB0aGUgcmVpbmRleCBjYWxsZXIgd2lzaGVzIHRvIGVuZm9yY2UgYSBuZXcgdGFibGVz cGFjZS4KKwkgKi8KKwlvbGRUYWJsZXNwYWNlT2lkID0gaVJlbC0+cmRfcmVsLT5yZWx0YWJsZXNw YWNlOworCWlmIChzZXRfdGFibGVzcGFjZSAmJgorCQkodGFibGVzcGFjZU9pZCAhPSBvbGRUYWJs ZXNwYWNlT2lkIHx8CisJCSh0YWJsZXNwYWNlT2lkID09IE15RGF0YWJhc2VUYWJsZVNwYWNlICYm IE9pZElzVmFsaWQob2xkVGFibGVzcGFjZU9pZCkpKSkKKwl7CisJCVJlbGF0aW9uCQlwZ19jbGFz czsKKwkJRm9ybV9wZ19jbGFzcwlyZF9yZWw7CisJCUhlYXBUdXBsZQkJdHVwbGU7CisKKwkJLyog Rmlyc3QgZ2V0IGEgbW9kaWZpYWJsZSBjb3B5IG9mIHRoZSByZWxhdGlvbidzIHBnX2NsYXNzIHJv dyAqLworCQlwZ19jbGFzcyA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKKworCQl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoUkVMT0lELCBPYmpl Y3RJZEdldERhdHVtKGluZGV4SWQpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkK KwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAldSIsIGlu ZGV4SWQpOworCQlyZF9yZWwgPSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsKKwor CQkvKgorCQkgKiBNYXJrIHRoZSByZWxhdGlvbiBhcyByZWFkeSB0byBiZSBkcm9wcGVkIGF0IHRy YW5zYWN0aW9uIGNvbW1pdCwKKwkJICogYmVmb3JlIG1ha2luZyB2aXNpYmxlIHRoZSBuZXcgdGFi bGVzcGFjZSBjaGFuZ2Ugc28gYXMgdGhpcyB3b24ndAorCQkgKiBtaXNzIHRoaW5ncy4KKwkJICov CisJCVJlbGF0aW9uRHJvcFN0b3JhZ2UoaVJlbCk7CisKKwkJLyogVXBkYXRlIHRoZSBwZ19jbGFz cyByb3cgKi8KKwkJcmRfcmVsLT5yZWx0YWJsZXNwYWNlID0gdGFibGVzcGFjZU9pZDsKKwkJQ2F0 YWxvZ1R1cGxlVXBkYXRlKHBnX2NsYXNzLCAmdHVwbGUtPnRfc2VsZiwgdHVwbGUpOworCisJCWhl YXBfZnJlZXR1cGxlKHR1cGxlKTsKKworCQl0YWJsZV9jbG9zZShwZ19jbGFzcywgUm93RXhjbHVz aXZlTG9jayk7CisKKwkJUmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbm9kZShpUmVsKTsKKworCQkv KiBNYWtlIHN1cmUgdGhlIHJlbHRhYmxlc3BhY2UgY2hhbmdlIGlzIHZpc2libGUgKi8KKwkJQ29t bWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKwl9CisKIAkvKgogCSAqIEFsbCBwcmVkaWNhdGUgbG9j a3Mgb24gdGhlIGluZGV4IGFyZSBhYm91dCB0byBiZSBtYWRlIGludmFsaWQuIFByb21vdGUKIAkg KiB0aGVtIHRvIHJlbGF0aW9uIGxvY2tzIG9uIHRoZSBoZWFwLgpAQCAtMzgxNCw2ICszODk4LDkg QEAgcmVpbmRleF9pbmRleChPaWQgaW5kZXhJZCwgYm9vbCBza2lwX2NvbnN0cmFpbnRfY2hlY2tz LCBjaGFyIHBlcnNpc3RlbmNlLAogICogcmVpbmRleF9yZWxhdGlvbiAtIFRoaXMgcm91dGluZSBp cyB1c2VkIHRvIHJlY3JlYXRlIGFsbCBpbmRleGVzCiAgKiBvZiBhIHJlbGF0aW9uIChhbmQgb3B0 aW9uYWxseSBpdHMgdG9hc3QgcmVsYXRpb24gdG9vLCBpZiBhbnkpLgogICoKKyAqICJ0YWJsZXNw YWNlT2lkIiBpcyB0aGUgdGFibGVzcGFjZSB3aGVyZSB0aGUgcmVsYXRpb24ncyBpbmRleGVzIHdp bGwgYmUKKyAqIHJlYnVpbHQsIG9yIEludmFsaWRPaWQgdG8ga2VlcCBlYWNoIGluZGV4IG9uIGl0 cyBjdXJyZW50IHRhYmxlc3BhY2UuCisgKgogICogImZsYWdzIiBpcyBhIGJpdG1hc2sgdGhhdCBj YW4gaW5jbHVkZSBhbnkgY29tYmluYXRpb24gb2YgdGhlc2UgYml0czoKICAqCiAgKiBSRUlOREVY X1JFTF9QUk9DRVNTX1RPQVNUOiBpZiB0cnVlLCBwcm9jZXNzIHRoZSB0b2FzdCB0YWJsZSB0b28g KGlmIGFueSkuCkBAIC0zODQ2LDcgKzM5MzMsNyBAQCByZWluZGV4X2luZGV4KE9pZCBpbmRleElk LCBib29sIHNraXBfY29uc3RyYWludF9jaGVja3MsIGNoYXIgcGVyc2lzdGVuY2UsCiAgKiBpbmRl eCByZWJ1aWxkLgogICovCiBib29sCi1yZWluZGV4X3JlbGF0aW9uKE9pZCByZWxpZCwgaW50IGZs YWdzLCBpbnQgb3B0aW9ucykKK3JlaW5kZXhfcmVsYXRpb24oT2lkIHJlbGlkLCBpbnQgZmxhZ3Ms IGludCBvcHRpb25zLCBPaWQgdGFibGVzcGFjZU9pZCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJT2lk CQkJdG9hc3RfcmVsaWQ7CkBAIC0zOTM1LDcgKzQwMjIsNyBAQCByZWluZGV4X3JlbGF0aW9uKE9p ZCByZWxpZCwgaW50IGZsYWdzLCBpbnQgb3B0aW9ucykKIAkJfQogCiAJCXJlaW5kZXhfaW5kZXgo aW5kZXhPaWQsICEoZmxhZ3MgJiBSRUlOREVYX1JFTF9DSEVDS19DT05TVFJBSU5UUyksCi0JCQkJ CSAgcGVyc2lzdGVuY2UsIG9wdGlvbnMpOworCQkJCQkgIHBlcnNpc3RlbmNlLCBvcHRpb25zLCB0 YWJsZXNwYWNlT2lkKTsKIAogCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCkBAIC0zOTY0 LDkgKzQwNTEsMTMgQEAgcmVpbmRleF9yZWxhdGlvbihPaWQgcmVsaWQsIGludCBmbGFncywgaW50 IG9wdGlvbnMpCiAJCS8qCiAJCSAqIE5vdGUgdGhhdCB0aGlzIHNob3VsZCBmYWlsIGlmIHRoZSB0 b2FzdCByZWxhdGlvbiBpcyBtaXNzaW5nLCBzbwogCQkgKiByZXNldCBSRUlOREVYT1BUX01JU1NJ TkdfT0suCisJCSAqCisJCSAqIEV2ZW4gaWYgdGFibGUgd2FzIG1vdmVkIHRvIG5ldyB0YWJsZXNw YWNlLCBub3JtYWxseSB0b2FzdCBjYW5ub3QgbW92ZS4KIAkJICovCisJCU9pZCB0b2FzdHRhYmxl c3BhY2VPaWQgPSBhbGxvd1N5c3RlbVRhYmxlTW9kcyA/IHRhYmxlc3BhY2VPaWQgOiBJbnZhbGlk T2lkOwogCQlyZXN1bHQgfD0gcmVpbmRleF9yZWxhdGlvbih0b2FzdF9yZWxpZCwgZmxhZ3MsCi0J CQkJCQkJCSAgIG9wdGlvbnMgJiB+KFJFSU5ERVhPUFRfTUlTU0lOR19PSykpOworCQkJCQkJCQkg ICBvcHRpb25zICYgfihSRUlOREVYT1BUX01JU1NJTkdfT0spLAorCQkJCQkJCQkgICB0b2FzdHRh Ymxlc3BhY2VPaWQpOwogCX0KIAogCXJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jbHVzdGVyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMK aW5kZXggNWU4NWZiYWNhZC4uOGFiYWJiZWIxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY2x1c3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NsdXN0ZXIuYwpAQCAt MTQxMiw3ICsxNDEyLDcgQEAgZmluaXNoX2hlYXBfc3dhcChPaWQgT0lET2xkSGVhcCwgT2lkIE9J RE5ld0hlYXAsCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DTFVTVEVS X1BIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQ0xVU1RFUl9QSEFTRV9SRUJVSUxEX0lOREVYKTsK IAotCXJlaW5kZXhfcmVsYXRpb24oT0lET2xkSGVhcCwgcmVpbmRleF9mbGFncywgMCk7CisJcmVp bmRleF9yZWxhdGlvbihPSURPbGRIZWFwLCByZWluZGV4X2ZsYWdzLCAwLCBJbnZhbGlkT2lkKTsK IAogCS8qIFJlcG9ydCB0aGF0IHdlIGFyZSBub3cgZG9pbmcgY2xlYW4gdXAgKi8KIAlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NMVVNURVJfUEhBU0UsCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCmluZGV4IGNhMjQ2MjBmZDAuLmY1NmQzOTRlNjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCkBAIC04OSw5ICs4OSw5IEBAIHN0YXRpYyBMaXN0ICpDaG9vc2VJbmRleENv bHVtbk5hbWVzKExpc3QgKmluZGV4RWxlbXMpOwogc3RhdGljIHZvaWQgUmFuZ2VWYXJDYWxsYmFj a0ZvclJlaW5kZXhJbmRleChjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkJCU9p ZCByZWxJZCwgT2lkIG9sZFJlbElkLCB2b2lkICphcmcpOwogc3RhdGljIHZvaWQgcmVpbmRleF9l cnJvcl9jYWxsYmFjayh2b2lkICphcmdzKTsKLXN0YXRpYyB2b2lkIFJlaW5kZXhQYXJ0aXRpb25z KE9pZCByZWxpZCwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCk7Ci1zdGF0aWMgdm9pZCBS ZWluZGV4TXVsdGlwbGVJbnRlcm5hbChMaXN0ICpyZWxpZHMsIGludCBvcHRpb25zKTsKLXN0YXRp YyBib29sIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIGludCBv cHRpb25zKTsKK3N0YXRpYyB2b2lkIFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgaW50IG9w dGlvbnMsIGJvb2wgaXNUb3BMZXZlbCwgY2hhciAqdGFibGVzcGFjZSk7CitzdGF0aWMgdm9pZCBS ZWluZGV4TXVsdGlwbGVJbnRlcm5hbChMaXN0ICpyZWxpZHMsIGludCBvcHRpb25zLCBPaWQgdGFi bGVzcGFjZU9pZCk7CitzdGF0aWMgYm9vbCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lk IHJlbGF0aW9uT2lkLCBpbnQgb3B0aW9ucywgT2lkIHRhYmxlc3BhY2VPaWQpOwogc3RhdGljIHZv aWQgdXBkYXRlX3JlbGlzcGFydGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29sIG5ld3ZhbCk7CiBz dGF0aWMgaW5saW5lIHZvaWQgc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3Modm9pZCk7CiAKQEAgLTI0 NTQsMTAgKzI0NTQsMTIgQEAgQ2hvb3NlSW5kZXhDb2x1bW5OYW1lcyhMaXN0ICppbmRleEVsZW1z KQogICoJCVJlY3JlYXRlIGEgc3BlY2lmaWMgaW5kZXguCiAgKi8KIHZvaWQKLVJlaW5kZXhJbmRl eChSYW5nZVZhciAqaW5kZXhSZWxhdGlvbiwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCkK K1JlaW5kZXhJbmRleChSYW5nZVZhciAqaW5kZXhSZWxhdGlvbiwgaW50IG9wdGlvbnMsIGJvb2wg aXNUb3BMZXZlbCwgY2hhciAqdGFibGVzcGFjZSkKIHsKIAlzdHJ1Y3QgUmVpbmRleEluZGV4Q2Fs bGJhY2tTdGF0ZSBzdGF0ZTsKIAlPaWQJCQlpbmRPaWQ7CisJT2lkCQkJdGFibGVzcGFjZU9pZCA9 IHRhYmxlc3BhY2UgPworCQkJZ2V0X3RhYmxlc3BhY2Vfb2lkKHRhYmxlc3BhY2UsIGZhbHNlKSA6 IEludmFsaWRPaWQ7CiAJY2hhcgkJcGVyc2lzdGVuY2U7CiAJY2hhcgkJcmVsa2luZDsKIApAQCAt MjQ4OCwxMyArMjQ5MCwxNCBAQCBSZWluZGV4SW5kZXgoUmFuZ2VWYXIgKmluZGV4UmVsYXRpb24s IGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2ZWwpCiAJcmVsa2luZCA9IGdldF9yZWxfcmVsa2lu ZChpbmRPaWQpOwogCiAJaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCkK LQkJUmVpbmRleFBhcnRpdGlvbnMoaW5kT2lkLCBvcHRpb25zLCBpc1RvcExldmVsKTsKKwkJUmVp bmRleFBhcnRpdGlvbnMoaW5kT2lkLCBvcHRpb25zLCBpc1RvcExldmVsLCB0YWJsZXNwYWNlKTsK IAllbHNlIGlmICgob3B0aW9ucyAmIFJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZKSAhPSAwICYmCiAJ CQkgcGVyc2lzdGVuY2UgIT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKLQkJUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGluZE9pZCwgb3B0aW9ucyk7CisJCVJlaW5kZXhSZWxhdGlvbkNvbmN1cnJl bnRseShpbmRPaWQsIG9wdGlvbnMsIHRhYmxlc3BhY2VPaWQpOwogCWVsc2UKIAkJcmVpbmRleF9p bmRleChpbmRPaWQsIGZhbHNlLCBwZXJzaXN0ZW5jZSwKLQkJCQkJICBvcHRpb25zIHwgUkVJTkRF WE9QVF9SRVBPUlRfUFJPR1JFU1MpOworCQkJCQkgIG9wdGlvbnMgfCBSRUlOREVYT1BUX1JFUE9S VF9QUk9HUkVTUywKKwkJCQkJICB0YWJsZXNwYWNlT2lkKTsKIH0KIAogLyoKQEAgLTI1NzMsMTAg KzI1NzYsMTIgQEAgUmFuZ2VWYXJDYWxsYmFja0ZvclJlaW5kZXhJbmRleChjb25zdCBSYW5nZVZh ciAqcmVsYXRpb24sCiAgKgkJUmVjcmVhdGUgYWxsIGluZGV4ZXMgb2YgYSB0YWJsZSAoYW5kIG9m IGl0cyB0b2FzdCB0YWJsZSwgaWYgYW55KQogICovCiBPaWQKLVJlaW5kZXhUYWJsZShSYW5nZVZh ciAqcmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2ZWwpCitSZWluZGV4VGFibGUo UmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBpc1RvcExldmVsLCBjaGFyICp0 YWJsZXNwYWNlKQogewogCU9pZAkJCWhlYXBPaWQ7CiAJYm9vbAkJcmVzdWx0OworCU9pZCAJCXRh Ymxlc3BhY2VPaWQgPSB0YWJsZXNwYWNlID8KKwkJZ2V0X3RhYmxlc3BhY2Vfb2lkKHRhYmxlc3Bh Y2UsIGZhbHNlKSA6IEludmFsaWRPaWQ7CiAKIAkvKgogCSAqIFRoZSBsb2NrIGxldmVsIHVzZWQg aGVyZSBzaG91bGQgbWF0Y2ggcmVpbmRleF9yZWxhdGlvbigpLgpAQCAtMjU5MywxMSArMjU5OCwx MSBAQCBSZWluZGV4VGFibGUoUmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBp c1RvcExldmVsKQogCQkJCQkJCQkJICAgUmFuZ2VWYXJDYWxsYmFja093bnNUYWJsZSwgTlVMTCk7 CiAKIAlpZiAoZ2V0X3JlbF9yZWxraW5kKGhlYXBPaWQpID09IFJFTEtJTkRfUEFSVElUSU9ORURf VEFCTEUpCi0JCVJlaW5kZXhQYXJ0aXRpb25zKGhlYXBPaWQsIG9wdGlvbnMsIGlzVG9wTGV2ZWwp OworCQlSZWluZGV4UGFydGl0aW9ucyhoZWFwT2lkLCBvcHRpb25zLCBpc1RvcExldmVsLCB0YWJs ZXNwYWNlKTsKIAllbHNlIGlmICgob3B0aW9ucyAmIFJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZKSAh PSAwICYmCiAJCQkgZ2V0X3JlbF9wZXJzaXN0ZW5jZShoZWFwT2lkKSAhPSBSRUxQRVJTSVNURU5D RV9URU1QKQogCXsKLQkJcmVzdWx0ID0gUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGhlYXBP aWQsIG9wdGlvbnMpOworCQlyZXN1bHQgPSBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoaGVh cE9pZCwgb3B0aW9ucywgdGFibGVzcGFjZU9pZCk7CiAKIAkJaWYgKCFyZXN1bHQpCiAJCQllcmVw b3J0KE5PVElDRSwKQEAgLTI2MDksNyArMjYxNCw4IEBAIFJlaW5kZXhUYWJsZShSYW5nZVZhciAq cmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2ZWwpCiAJCXJlc3VsdCA9IHJlaW5k ZXhfcmVsYXRpb24oaGVhcE9pZCwKIAkJCQkJCQkJICBSRUlOREVYX1JFTF9QUk9DRVNTX1RPQVNU IHwKIAkJCQkJCQkJICBSRUlOREVYX1JFTF9DSEVDS19DT05TVFJBSU5UUywKLQkJCQkJCQkJICBv cHRpb25zIHwgUkVJTkRFWE9QVF9SRVBPUlRfUFJPR1JFU1MpOworCQkJCQkJCQkgIG9wdGlvbnMg fCBSRUlOREVYT1BUX1JFUE9SVF9QUk9HUkVTUywKKwkJCQkJCQkJICB0YWJsZXNwYWNlT2lkKTsK IAkJaWYgKCFyZXN1bHQpCiAJCQllcmVwb3J0KE5PVElDRSwKIAkJCQkJKGVycm1zZygidGFibGUg XCIlc1wiIGhhcyBubyBpbmRleGVzIHRvIHJlaW5kZXgiLApAQCAtMjYyOSw3ICsyNjM1LDcgQEAg UmVpbmRleFRhYmxlKFJhbmdlVmFyICpyZWxhdGlvbiwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BM ZXZlbCkKICAqLwogdm9pZAogUmVpbmRleE11bHRpcGxlVGFibGVzKGNvbnN0IGNoYXIgKm9iamVj dE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQsCi0JCQkJCSAgaW50IG9wdGlvbnMp CisJCQkJCSAgaW50IG9wdGlvbnMsIGNoYXIgKnRhYmxlc3BhY2UpCiB7CiAJT2lkCQkJb2JqZWN0 T2lkOwogCVJlbGF0aW9uCXJlbGF0aW9uUmVsYXRpb247CkBAIC0yNjQwLDcgKzI2NDYsMTIgQEAg UmVpbmRleE11bHRpcGxlVGFibGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhPYmpl Y3RUeXBlIG9iamVjdEtpbmQsCiAJTWVtb3J5Q29udGV4dCBvbGQ7CiAJTGlzdAkgICAqcmVsaWRz ID0gTklMOwogCWludAkJCW51bV9rZXlzOworCiAJYm9vbAkJY29uY3VycmVudF93YXJuaW5nID0g ZmFsc2U7CisJYm9vbAkJdGFibGVzcGFjZV93YXJuaW5nID0gZmFsc2U7CisJYm9vbAkJbWFwcGVk X3dhcm5pbmcgPSBmYWxzZTsKKwlPaWQJCQl0YWJsZXNwYWNlT2lkID0gdGFibGVzcGFjZSA/CisJ CXRhYmxlc3BhY2VPaWQgPSBnZXRfdGFibGVzcGFjZV9vaWQodGFibGVzcGFjZSwgZmFsc2UpIDog SW52YWxpZE9pZDsKIAogCUFzc2VydEFyZyhvYmplY3ROYW1lKTsKIAlBc3NlcnQob2JqZWN0S2lu ZCA9PSBSRUlOREVYX09CSkVDVF9TQ0hFTUEgfHwKQEAgLTI3NjcsNiArMjc3OCwzNSBAQCBSZWlu ZGV4TXVsdGlwbGVUYWJsZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVpbmRleE9iamVjdFR5 cGUgb2JqZWN0S2luZCwKIAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJaWYgKE9pZElzVmFsaWQodGFi bGVzcGFjZU9pZCkgJiYKKwkJCUlzU3lzdGVtQ2xhc3MocmVsaWQsIGNsYXNzdHVwbGUpKQorCQl7 CisJCQlpZiAoIWFsbG93U3lzdGVtVGFibGVNb2RzKQorCQkJeworCQkJCS8qIFNraXAgYWxsIHN5 c3RlbSByZWxhdGlvbnMsIGlmIG5vdCBhbGxvd1N5c3RlbVRhYmxlTW9kcyAqLworCQkJCWlmICgh dGFibGVzcGFjZV93YXJuaW5nKQorCQkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJCQkgZXJybXNnKCJjYW5u b3QgY2hhbmdlIHRhYmxlc3BhY2Ugb2YgaW5kZXhlcyBvbiBzeXN0ZW0gcmVsYXRpb25zLCBza2lw cGluZyBhbGwiKSkpOworCQkJCXRhYmxlc3BhY2Vfd2FybmluZyA9IHRydWU7CisJCQkJY29udGlu dWU7CisJCQl9CisJCQllbHNlIGlmICghT2lkSXNWYWxpZChjbGFzc3R1cGxlLT5yZWxmaWxlbm9k ZSkpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBTa2lwIGFsbCBtYXBwZWQgcmVsYXRpb25zIGlmIFRB QkxFU1BBQ0UgaXMgc3BlY2lmaWVkLgorCQkJCSAqIE9pZElzVmFsaWQocmVsZmlsZW5vZGUpIGNo ZWNrcyB0aGF0LCBzaW1pbGFyIHRvCisJCQkJICogUmVsYXRpb25Jc01hcHBlZCgpLgorCQkJCSAq LworCQkJCWlmICghbWFwcGVkX3dhcm5pbmcpCisJCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJIGVycm1z ZygiY2Fubm90IGNoYW5nZSB0YWJsZXNwYWNlIG9mIGluZGV4ZXMgb24gbWFwcGVkIHJlbGF0aW9u cywgc2tpcHBpbmcgYWxsIikpKTsKKwkJCQltYXBwZWRfd2FybmluZyA9IHRydWU7CisJCQkJY29u dGludWU7CisJCQl9CisJCX0KKwogCQkvKiBTYXZlIHRoZSBsaXN0IG9mIHJlbGF0aW9uIE9JRHMg aW4gcHJpdmF0ZSBjb250ZXh0ICovCiAJCW9sZCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwcml2 YXRlX2NvbnRleHQpOwogCkBAIC0yNzkxLDcgKzI4MzEsNyBAQCBSZWluZGV4TXVsdGlwbGVUYWJs ZXMoY29uc3QgY2hhciAqb2JqZWN0TmFtZSwgUmVpbmRleE9iamVjdFR5cGUgb2JqZWN0S2luZCwK IAkgKiBQcm9jZXNzIGVhY2ggcmVsYXRpb24gbGlzdGVkIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rp b24uICBOb3RlIHRoYXQgdGhpcwogCSAqIGNvbW1pdHMgYW5kIHRoZW4gc3RhcnRzIGEgbmV3IHRy YW5zYWN0aW9uIGltbWVkaWF0ZWx5LgogCSAqLwotCVJlaW5kZXhNdWx0aXBsZUludGVybmFsKHJl bGlkcywgb3B0aW9ucyk7CisJUmVpbmRleE11bHRpcGxlSW50ZXJuYWwocmVsaWRzLCBvcHRpb25z LCB0YWJsZXNwYWNlT2lkKTsKIAogCU1lbW9yeUNvbnRleHREZWxldGUocHJpdmF0ZV9jb250ZXh0 KTsKIH0KQEAgLTI4MTUsNiArMjg1NSw0MSBAQCByZWluZGV4X2Vycm9yX2NhbGxiYWNrKHZvaWQg KmFyZykKIAkJCQkgICBlcnJpbmZvLT5yZWxuYW1lc3BhY2UsIGVycmluZm8tPnJlbG5hbWUpOwog fQogCisvKgorICogVGhpcyBpcyBtb3N0bHkgZHVwbGljYXRpbmcgQVRFeGVjU2V0VGFibGVTcGFj ZU5vU3RvcmFnZSwKKyAqIHdoaWNoIHNob3VsZCBtYXliZSBiZSBmYWN0b3JlZCBvdXQgdG8gYSBs aWJyYXJ5IGZ1bmN0aW9uLgorICovCitzdGF0aWMgdm9pZAorc2V0X3JlbF90YWJsZXNwYWNlKE9p ZCByZWxvaWQsIE9pZCB0YWJsZXNwYWNlT2lkKQoreworCVJlbGF0aW9uCQlwZ19jbGFzczsKKwlI ZWFwVHVwbGUJCXR1cGxlOworCUZvcm1fcGdfY2xhc3MJcmRfcmVsOworCU9pZAkJCW9sZFRhYmxl c3BhY2VPaWQ7CisKKwkvKiBHZXQgYSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIHJlbGF0aW9uJ3Mg cGdfY2xhc3Mgcm93ICovCisJcGdfY2xhc3MgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25J ZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlQ29weTEoUkVM T0lELCBPYmplY3RJZEdldERhdHVtKHJlbG9pZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0 dXBsZSkpCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciByZWxhdGlvbiAl dSIsIHJlbG9pZCk7CisJcmRfcmVsID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7 CisKKwkvKiBObyB3b3JrIGlmIG5vIGNoYW5nZSBpbiB0YWJsZXNwYWNlLiAqLworCW9sZFRhYmxl c3BhY2VPaWQgPSByZF9yZWwtPnJlbHRhYmxlc3BhY2U7CisJaWYgKHRhYmxlc3BhY2VPaWQgIT0g b2xkVGFibGVzcGFjZU9pZCB8fAorCQkodGFibGVzcGFjZU9pZCA9PSBNeURhdGFiYXNlVGFibGVT cGFjZSAmJiBPaWRJc1ZhbGlkKG9sZFRhYmxlc3BhY2VPaWQpKSkKKwl7CisJCS8qIFVwZGF0ZSB0 aGUgcGdfY2xhc3Mgcm93ICovCisJCXJkX3JlbC0+cmVsdGFibGVzcGFjZSA9ICh0YWJsZXNwYWNl T2lkID09IE15RGF0YWJhc2VUYWJsZVNwYWNlKSA/CisJCQlJbnZhbGlkT2lkIDogdGFibGVzcGFj ZU9pZDsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2NsYXNzLCAmdHVwbGUtPnRfc2VsZiwgdHVw bGUpOworCX0KKworCWhlYXBfZnJlZXR1cGxlKHR1cGxlKTsKKwl0YWJsZV9jbG9zZShwZ19jbGFz cywgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBSZWluZGV4UGFydGl0aW9ucwogICoK QEAgLTI4MjIsNyArMjg5Nyw3IEBAIHJlaW5kZXhfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKQog ICogYnkgdGhlIGNhbGxlci4KICAqLwogc3RhdGljIHZvaWQKLVJlaW5kZXhQYXJ0aXRpb25zKE9p ZCByZWxpZCwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCkKK1JlaW5kZXhQYXJ0aXRpb25z KE9pZCByZWxpZCwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCwgY2hhciAqdGFibGVzcGFj ZSkKIHsKIAlMaXN0CSAgICpwYXJ0aXRpb25zID0gTklMOwogCWNoYXIJCXJlbGtpbmQgPSBnZXRf cmVsX3JlbGtpbmQocmVsaWQpOwpAQCAtMjgzMyw2ICsyOTA4LDggQEAgUmVpbmRleFBhcnRpdGlv bnMoT2lkIHJlbGlkLCBpbnQgb3B0aW9ucywgYm9vbCBpc1RvcExldmVsKQogCUxpc3RDZWxsICAg KmxjOwogCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOwogCVJlaW5kZXhFcnJvcklu Zm8gZXJyaW5mbzsKKwlPaWQJCQl0YWJsZXNwYWNlT2lkID0gdGFibGVzcGFjZSA/CisJCWdldF90 YWJsZXNwYWNlX29pZCh0YWJsZXNwYWNlLCBmYWxzZSkgOiBJbnZhbGlkT2lkOwogCiAJQXNzZXJ0 KHJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9JTkRFWCB8fAogCQkgICByZWxraW5kID09 IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOwpAQCAtMjg4MCw5ICsyOTU3LDI3IEBAIFJlaW5k ZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCkKIAkJ TWVtb3J5Q29udGV4dCBvbGRfY29udGV4dDsKIAogCQkvKgotCQkgKiBUaGlzIGRpc2NhcmRzIHBh cnRpdGlvbmVkIHRhYmxlcywgcGFydGl0aW9uZWQgaW5kZXhlcyBhbmQgZm9yZWlnbgotCQkgKiB0 YWJsZXMuCisJCSAqIEZvcmVpZ24gdGFibGVzIGFuZCBwYXJ0aXRpb25lZCByZWxhdGlvbnMgYXJl IG5vdCB0aGVtc2VsdmVzCisJCSAqIHJlaW5kZXhlZCAtIGxlYWYgcGFydGl0aW9ucyBhcmUgcHJv Y2Vzc2VkIGRpcmVjdGx5LiAgQnV0IGFueQorCQkgKiB0YWJsZXNwYWNlIGNoYW5nZSBpcyByZWNv cmRlZCBpbiB0aGUgY2F0YWxvZyBmb3IgcGFydGl0aW9uZWQKKwkJICogcmVsYXRpb25zLgogCQkg Ki8KKwkJaWYgKHBhcnRraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCisJCQlzZXRf cmVsX3RhYmxlc3BhY2UocGFydG9pZCwgdGFibGVzcGFjZU9pZCk7CisJCWVsc2UgaWYgKHBhcnRr aW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXsKKwkJCVJlbGF0aW9uIHJlbCA9 IHRhYmxlX29wZW4ocGFydG9pZCwgU2hhcmVMb2NrKTsKKwkJCUxpc3QJKmluZGV4SWRzID0gUmVs YXRpb25HZXRJbmRleExpc3QocmVsKTsKKwkJCUxpc3RDZWxsICpsYzsKKworCQkJdGFibGVfY2xv c2UocmVsLCBOb0xvY2spOworCQkJZm9yZWFjaCAobGMsIGluZGV4SWRzKQorCQkJeworCQkJCU9p ZCBpbmRleGlkID0gbGZpcnN0X29pZChsYyk7CisJCQkJc2V0X3JlbF90YWJsZXNwYWNlKGluZGV4 aWQsIHRhYmxlc3BhY2VPaWQpOworCQkJfQorCQl9CisKIAkJaWYgKCFSRUxLSU5EX0hBU19TVE9S QUdFKHBhcnRraW5kKSkKIAkJCWNvbnRpbnVlOwogCkBAIC0yODk5LDcgKzI5OTQsNyBAQCBSZWlu ZGV4UGFydGl0aW9ucyhPaWQgcmVsaWQsIGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2ZWwpCiAJ ICogUHJvY2VzcyBlYWNoIHBhcnRpdGlvbiBsaXN0ZWQgaW4gYSBzZXBhcmF0ZSB0cmFuc2FjdGlv bi4gIE5vdGUgdGhhdAogCSAqIHRoaXMgY29tbWl0cyBhbmQgdGhlbiBzdGFydHMgYSBuZXcgdHJh bnNhY3Rpb24gaW1tZWRpYXRlbHkuCiAJICovCi0JUmVpbmRleE11bHRpcGxlSW50ZXJuYWwocGFy dGl0aW9ucywgb3B0aW9ucyk7CisJUmVpbmRleE11bHRpcGxlSW50ZXJuYWwocGFydGl0aW9ucywg b3B0aW9ucywgdGFibGVzcGFjZU9pZCk7CiAKIAkvKgogCSAqIENsZWFuIHVwIHdvcmtpbmcgc3Rv cmFnZSAtLS0gbm90ZSB3ZSBtdXN0IGRvIHRoaXMgYWZ0ZXIKQEAgLTI5MTcsNyArMzAxMiw3IEBA IFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgaW50IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZl bCkKICAqIGFuZCBzdGFydHMgYSBuZXcgdHJhbnNhY3Rpb24gd2hlbiBmaW5pc2hlZC4KICAqLwog c3RhdGljIHZvaWQKLVJlaW5kZXhNdWx0aXBsZUludGVybmFsKExpc3QgKnJlbGlkcywgaW50IG9w dGlvbnMpCitSZWluZGV4TXVsdGlwbGVJbnRlcm5hbChMaXN0ICpyZWxpZHMsIGludCBvcHRpb25z LCBPaWQgdGFibGVzcGFjZU9pZCkKIHsKIAlMaXN0Q2VsbCAgICpsOwogCkBAIC0yOTU4LDcgKzMw NTMsOCBAQCBSZWluZGV4TXVsdGlwbGVJbnRlcm5hbChMaXN0ICpyZWxpZHMsIGludCBvcHRpb25z KQogCQl7CiAJCQkodm9pZCkgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KHJlbGlkLAogCQkJ CQkJCQkJCQkgICBvcHRpb25zIHwKLQkJCQkJCQkJCQkJICAgUkVJTkRFWE9QVF9NSVNTSU5HX09L KTsKKwkJCQkJCQkJCQkJICAgUkVJTkRFWE9QVF9NSVNTSU5HX09LLAorCQkJCQkJCQkJCQkgICB0 YWJsZXNwYWNlT2lkKTsKIAkJCS8qIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseSgpIGRvZXMg dGhlIHZlcmJvc2Ugb3V0cHV0ICovCiAJCX0KIAkJZWxzZSBpZiAocmVsa2luZCA9PSBSRUxLSU5E X0lOREVYKQpAQCAtMjk2Niw3ICszMDYyLDcgQEAgUmVpbmRleE11bHRpcGxlSW50ZXJuYWwoTGlz dCAqcmVsaWRzLCBpbnQgb3B0aW9ucykKIAkJCXJlaW5kZXhfaW5kZXgocmVsaWQsIGZhbHNlLCBy ZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCSAgb3B0aW9ucyB8CiAJCQkJCQkgIFJFSU5ERVhPUFRfUkVQ T1JUX1BST0dSRVNTIHwKLQkJCQkJCSAgUkVJTkRFWE9QVF9NSVNTSU5HX09LKTsKKwkJCQkJCSAg UkVJTkRFWE9QVF9NSVNTSU5HX09LLCB0YWJsZXNwYWNlT2lkKTsKIAkJCVBvcEFjdGl2ZVNuYXBz aG90KCk7CiAJCQkvKiByZWluZGV4X2luZGV4KCkgZG9lcyB0aGUgdmVyYm9zZSBvdXRwdXQgKi8K IAkJfQpAQCAtMjk3OSw3ICszMDc1LDggQEAgUmVpbmRleE11bHRpcGxlSW50ZXJuYWwoTGlzdCAq cmVsaWRzLCBpbnQgb3B0aW9ucykKIAkJCQkJCQkJCSAgUkVJTkRFWF9SRUxfQ0hFQ0tfQ09OU1RS QUlOVFMsCiAJCQkJCQkJCQkgIG9wdGlvbnMgfAogCQkJCQkJCQkJICBSRUlOREVYT1BUX1JFUE9S VF9QUk9HUkVTUyB8Ci0JCQkJCQkJCQkgIFJFSU5ERVhPUFRfTUlTU0lOR19PSyk7CisJCQkJCQkJ CQkgIFJFSU5ERVhPUFRfTUlTU0lOR19PSywKKwkJCQkJCQkJCSAgdGFibGVzcGFjZU9pZCk7CiAK IAkJCWlmIChyZXN1bHQgJiYgKG9wdGlvbnMgJiBSRUlOREVYT1BUX1ZFUkJPU0UpKQogCQkJCWVy ZXBvcnQoSU5GTywKQEAgLTMwMDcsNiArMzEwNCw5IEBAIFJlaW5kZXhNdWx0aXBsZUludGVybmFs KExpc3QgKnJlbGlkcywgaW50IG9wdGlvbnMpCiAgKiBidXQgaW5jbHVkaW5nIGl0cyBhc3NvY2lh dGVkIHRvYXN0IHRhYmxlIGluZGV4ZXMuICBGb3IgaW5kZXhlcywgdGhlIGluZGV4CiAgKiBpdHNl bGYgd2lsbCBiZSByZWJ1aWx0LgogICoKKyAqICd0YWJsZXNwYWNlT2lkJyBpcyB0aGUgdGFibGVz cGFjZSB3aGVyZSB0aGUgcmVsYXRpb24ncyBpbmRleGVzIHdpbGwgYmUKKyAqIHJlYnVpbHQuCisg KgogICogVGhlIGxvY2tzIHRha2VuIG9uIHBhcmVudCB0YWJsZXMgYW5kIGludm9sdmVkIGluZGV4 ZXMgYXJlIGtlcHQgdW50aWwgdGhlCiAgKiB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQsIGF0IHdo aWNoIHBvaW50IGEgc2Vzc2lvbiBsb2NrIGlzIHRha2VuIG9uIGVhY2gKICAqIHJlbGF0aW9uLiAg Qm90aCBvZiB0aGVzZSBwcm90ZWN0IGFnYWluc3QgY29uY3VycmVudCBzY2hlbWEgY2hhbmdlcy4K QEAgLTMwMjEsNyArMzEyMSw3IEBAIFJlaW5kZXhNdWx0aXBsZUludGVybmFsKExpc3QgKnJlbGlk cywgaW50IG9wdGlvbnMpCiAgKiBhbnl3YXksIGFuZCBhIG5vbi1jb25jdXJyZW50IHJlaW5kZXgg aXMgbW9yZSBlZmZpY2llbnQuCiAgKi8KIHN0YXRpYyBib29sCi1SZWluZGV4UmVsYXRpb25Db25j dXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBpbnQgb3B0aW9ucykKK1JlaW5kZXhSZWxhdGlvbkNv bmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIGludCBvcHRpb25zLCBPaWQgdGFibGVzcGFjZU9p ZCkKIHsKIAlMaXN0CSAgICpoZWFwUmVsYXRpb25JZHMgPSBOSUw7CiAJTGlzdAkgICAqaW5kZXhJ ZHMgPSBOSUw7CkBAIC0zMjc2LDYgKzMzNzYsMTMgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5KE9pZCByZWxhdGlvbk9pZCwgaW50IG9wdGlvbnMpCiAJCXJldHVybiBmYWxzZTsKIAl9CiAK KwkvKiBJdCdzIG5vdCBhIHNoYXJlZCBjYXRhbG9nLCBzbyByZWZ1c2UgdG8gbW92ZSBpdCB0byBz aGFyZWQgdGFibGVzcGFjZSAqLworCWlmICh0YWJsZXNwYWNlT2lkID09IEdMT0JBTFRBQkxFU1BB Q0VfT0lEKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9O T1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgbW92ZSBub24tc2hhcmVkIHJlbGF0 aW9uIHRvIHRhYmxlc3BhY2UgXCIlc1wiIiwKKwkJCQkJIGdldF90YWJsZXNwYWNlX25hbWUodGFi bGVzcGFjZU9pZCkpKSk7CisKIAlBc3NlcnQoaGVhcFJlbGF0aW9uSWRzICE9IE5JTCk7CiAKIAkv Ki0tLS0tCkBAIC0zMzM5LDYgKzM0NDYsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHko T2lkIHJlbGF0aW9uT2lkLCBpbnQgb3B0aW9ucykKIAkJLyogQ3JlYXRlIG5ldyBpbmRleCBkZWZp bml0aW9uIGJhc2VkIG9uIGdpdmVuIGluZGV4ICovCiAJCW5ld0luZGV4SWQgPSBpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2NvcHkoaGVhcFJlbCwKIAkJCQkJCQkJCQkJCQlpbmRleElkLAorCQkJ CQkJCQkJCQkJCXRhYmxlc3BhY2VPaWQsCiAJCQkJCQkJCQkJCQkJY29uY3VycmVudE5hbWUpOwog CiAJCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDQ2ZjE2MzdlNzcuLjkzMmI4ZGRm ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xODkyLDcgKzE4OTIsNyBAQCBFeGVj dXRlVHJ1bmNhdGVHdXRzKExpc3QgKmV4cGxpY2l0X3JlbHMsIExpc3QgKnJlbGlkcywgTGlzdCAq cmVsaWRzX2xvZ2dlZCwKIAkJCS8qCiAJCQkgKiBSZWNvbnN0cnVjdCB0aGUgaW5kZXhlcyB0byBt YXRjaCwgYW5kIHdlJ3JlIGRvbmUuCiAJCQkgKi8KLQkJCXJlaW5kZXhfcmVsYXRpb24oaGVhcF9y ZWxpZCwgUkVJTkRFWF9SRUxfUFJPQ0VTU19UT0FTVCwgMCk7CisJCQlyZWluZGV4X3JlbGF0aW9u KGhlYXBfcmVsaWQsIFJFSU5ERVhfUkVMX1BST0NFU1NfVE9BU1QsIDAsIEludmFsaWRPaWQpOwog CQl9CiAKIAkJcGdzdGF0X2NvdW50X3RydW5jYXRlKHJlbCk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4IDc2 NjdjYTk3MTAuLmYyMTQwMTEyYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0 eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC01MjgsNyArNTI4LDcgQEAg UHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCiAvKiBQYXJzZSBwYXJhbXMgbm90 IHBhcnNlZCBieSB0aGUgZ3JhbW1hciAqLwogc3RhdGljCi12b2lkIHBhcnNlX3JlaW5kZXhfcGFy YW1zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVpbmRleFN0bXQgKnN0bXQsIGludCAqb3B0aW9ucykK K3ZvaWQgcGFyc2VfcmVpbmRleF9wYXJhbXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZWluZGV4U3Rt dCAqc3RtdCwgaW50ICpvcHRpb25zLCBjaGFyICoqdGFibGVzcGFjZSkKIHsKIAlMaXN0Q2VsbCAq bGM7CiAJZm9yZWFjaChsYywgc3RtdC0+cGFyYW1zKQpAQCAtNTQ3LDYgKzU0Nyw4IEBAIHZvaWQg cGFyc2VfcmVpbmRleF9wYXJhbXMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSZWluZGV4U3RtdCAqc3Rt dCwgaW50ICpvcHRpb25zKQogCQkJCSpvcHRpb25zIHw9IFJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZ OwogCQkJZWxzZQogCQkJCSpvcHRpb25zICY9IH5SRUlOREVYT1BUX0NPTkNVUlJFTlRMWTsKKwkJ ZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgInRhYmxlc3BhY2UiKSA9PSAwKQorCQkJKnRh Ymxlc3BhY2UgPSBkZWZHZXRTdHJpbmcob3B0KTsKIAkJZWxzZQogCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLApAQCAtOTQ5LDggKzk1MSw5IEBA IHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCXsKIAkJCQlS ZWluZGV4U3RtdCAqc3RtdCA9IChSZWluZGV4U3RtdCAqKSBwYXJzZXRyZWU7CiAJCQkJaW50IG9w dGlvbnMgPSAwOworCQkJCWNoYXIgKnRhYmxlc3BhY2UgPSBOVUxMOwogCi0JCQkJcGFyc2VfcmVp bmRleF9wYXJhbXMocHN0YXRlLCBzdG10LCAmb3B0aW9ucyk7CisJCQkJcGFyc2VfcmVpbmRleF9w YXJhbXMocHN0YXRlLCBzdG10LCAmb3B0aW9ucywgJnRhYmxlc3BhY2UpOwogCQkJCWlmIChvcHRp b25zICYgUkVJTkRFWE9QVF9DT05DVVJSRU5UTFkpCiAJCQkJCVByZXZlbnRJblRyYW5zYWN0aW9u QmxvY2soaXNUb3BMZXZlbCwKIAkJCQkJCQkJCQkJICAiUkVJTkRFWCBDT05DVVJSRU5UTFkiKTsK QEAgLTk1OCwxMCArOTYxLDEyIEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10 ICpwc3RtdCwKIAkJCQlzd2l0Y2ggKHN0bXQtPmtpbmQpCiAJCQkJewogCQkJCQljYXNlIFJFSU5E RVhfT0JKRUNUX0lOREVYOgotCQkJCQkJUmVpbmRleEluZGV4KHN0bXQtPnJlbGF0aW9uLCBvcHRp b25zLCBpc1RvcExldmVsKTsKKwkJCQkJCVJlaW5kZXhJbmRleChzdG10LT5yZWxhdGlvbiwgb3B0 aW9ucywKKwkJCQkJCQkJCSBpc1RvcExldmVsLCB0YWJsZXNwYWNlKTsKIAkJCQkJCWJyZWFrOwog CQkJCQljYXNlIFJFSU5ERVhfT0JKRUNUX1RBQkxFOgotCQkJCQkJUmVpbmRleFRhYmxlKHN0bXQt PnJlbGF0aW9uLCBvcHRpb25zLCBpc1RvcExldmVsKTsKKwkJCQkJCVJlaW5kZXhUYWJsZShzdG10 LT5yZWxhdGlvbiwgb3B0aW9ucywKKwkJCQkJCQkJCSBpc1RvcExldmVsLCB0YWJsZXNwYWNlKTsK IAkJCQkJCWJyZWFrOwogCQkJCQljYXNlIFJFSU5ERVhfT0JKRUNUX1NDSEVNQToKIAkJCQkJY2Fz ZSBSRUlOREVYX09CSkVDVF9TWVNURU06CkBAIC05NzcsNyArOTgyLDcgQEAgc3RhbmRhcmRfUHJv Y2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCQkJCQkJCQkJICAoc3RtdC0+a2lu ZCA9PSBSRUlOREVYX09CSkVDVF9TQ0hFTUEpID8gIlJFSU5ERVggU0NIRU1BIiA6CiAJCQkJCQkJ CQkJCQkgIChzdG10LT5raW5kID09IFJFSU5ERVhfT0JKRUNUX1NZU1RFTSkgPyAiUkVJTkRFWCBT WVNURU0iIDoKIAkJCQkJCQkJCQkJCSAgIlJFSU5ERVggREFUQUJBU0UiKTsKLQkJCQkJCVJlaW5k ZXhNdWx0aXBsZVRhYmxlcyhzdG10LT5uYW1lLCBzdG10LT5raW5kLCBvcHRpb25zKTsKKwkJCQkJ CVJlaW5kZXhNdWx0aXBsZVRhYmxlcyhzdG10LT5uYW1lLCBzdG10LT5raW5kLCBvcHRpb25zLCB0 YWJsZXNwYWNlKTsKIAkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0OgogCQkJCQkJZWxvZyhFUlJP UiwgInVucmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDNh NDNjMDliZjYuLjY1ZWJmOTExZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTM1NzcsNyArMzU3Nyw5 IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQp CiAJCSAqIG9uZSB3b3JkLCBzbyB0aGUgYWJvdmUgdGVzdCBpcyBjb3JyZWN0LgogCQkgKi8KIAkJ aWYgKGVuZHNfd2l0aChwcmV2X3dkLCAnKCcpIHx8IGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQot CQkJQ09NUExFVEVfV0lUSCgiQ09OQ1VSUkVOVExZIiwgIlZFUkJPU0UiKTsKKwkJCUNPTVBMRVRF X1dJVEgoIkNPTkNVUlJFTlRMWSIsICJUQUJMRVNQQUNFIiwgIlZFUkJPU0UiKTsKKwkJZWxzZSBp ZiAoVGFpbE1hdGNoZXMoIlRBQkxFU1BBQ0UiKSkKKwkJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVl cnlfZm9yX2xpc3Rfb2ZfdGFibGVzcGFjZXMpOwogCX0KIAogLyogU0VDVVJJVFkgTEFCRUwgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvaW5kZXguaAppbmRleCBmNDU1OWIwOWQ3Li41ZGU0MGYxODJmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRl eC5oCkBAIC04MCw2ICs4MCw3IEBAIGV4dGVybiBPaWQJaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhl YXBSZWxhdGlvbiwKIAogZXh0ZXJuIE9pZAlpbmRleF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHko UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIE9pZCBvbGRJbmRleElkLAorCQkJ CQkJCQkJCSAgIE9pZCB0YWJsZXNwYWNlT2lkLAogCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKm5l d05hbWUpOwogCiBleHRlcm4gdm9pZCBpbmRleF9jb25jdXJyZW50bHlfYnVpbGQoT2lkIGhlYXBS ZWxhdGlvbklkLApAQCAtMTM3LDcgKzEzOCw3IEBAIGV4dGVybiB2b2lkIGluZGV4X3NldF9zdGF0 ZV9mbGFncyhPaWQgaW5kZXhJZCwgSW5kZXhTdGF0ZUZsYWdzQWN0aW9uIGFjdGlvbik7CiBleHRl cm4gT2lkCUluZGV4R2V0UmVsYXRpb24oT2lkIGluZGV4SWQsIGJvb2wgbWlzc2luZ19vayk7CiAK IGV4dGVybiB2b2lkIHJlaW5kZXhfaW5kZXgoT2lkIGluZGV4SWQsIGJvb2wgc2tpcF9jb25zdHJh aW50X2NoZWNrcywKLQkJCQkJCSAgY2hhciByZWxwZXJzaXN0ZW5jZSwgaW50IG9wdGlvbnMpOwor CQkJCQkJICBjaGFyIHJlbHBlcnNpc3RlbmNlLCBpbnQgb3B0aW9ucywgT2lkIHRhYmxlc3BhY2VP aWQpOwogCiAvKiBGbGFnIGJpdHMgZm9yIHJlaW5kZXhfcmVsYXRpb24oKTogKi8KICNkZWZpbmUg UkVJTkRFWF9SRUxfUFJPQ0VTU19UT0FTVAkJCTB4MDEKQEAgLTE0Niw3ICsxNDcsNyBAQCBleHRl cm4gdm9pZCByZWluZGV4X2luZGV4KE9pZCBpbmRleElkLCBib29sIHNraXBfY29uc3RyYWludF9j aGVja3MsCiAjZGVmaW5lIFJFSU5ERVhfUkVMX0ZPUkNFX0lOREVYRVNfVU5MT0dHRUQJMHgwOAog I2RlZmluZSBSRUlOREVYX1JFTF9GT1JDRV9JTkRFWEVTX1BFUk1BTkVOVCAweDEwCiAKLWV4dGVy biBib29sIHJlaW5kZXhfcmVsYXRpb24oT2lkIHJlbGlkLCBpbnQgZmxhZ3MsIGludCBvcHRpb25z KTsKK2V4dGVybiBib29sIHJlaW5kZXhfcmVsYXRpb24oT2lkIHJlbGlkLCBpbnQgZmxhZ3MsIGlu dCBvcHRpb25zLCBPaWQgdGFibGVzcGFjZU9pZCk7CiAKIGV4dGVybiBib29sIFJlaW5kZXhJc1By b2Nlc3NpbmdIZWFwKE9pZCBoZWFwT2lkKTsKIGV4dGVybiBib29sIFJlaW5kZXhJc1Byb2Nlc3Np bmdJbmRleChPaWQgaW5kZXhPaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv ZGVmcmVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCA3YTA3OWVmMDdm Li5lZTk3MGEwZjU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAor KysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAtMzQsMTAgKzM0LDEwIEBAIGV4 dGVybiBPYmplY3RBZGRyZXNzIERlZmluZUluZGV4KE9pZCByZWxhdGlvbklkLAogCQkJCQkJCQkg Ym9vbCBjaGVja19ub3RfaW5fdXNlLAogCQkJCQkJCQkgYm9vbCBza2lwX2J1aWxkLAogCQkJCQkJ CQkgYm9vbCBxdWlldCk7Ci1leHRlcm4gdm9pZCBSZWluZGV4SW5kZXgoUmFuZ2VWYXIgKmluZGV4 UmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGlzVG9wTGV2ZWwpOwotZXh0ZXJuIE9pZAlSZWlu ZGV4VGFibGUoUmFuZ2VWYXIgKnJlbGF0aW9uLCBpbnQgb3B0aW9ucywgYm9vbCBpc1RvcExldmVs KTsKK2V4dGVybiB2b2lkIFJlaW5kZXhJbmRleChSYW5nZVZhciAqaW5kZXhSZWxhdGlvbiwgaW50 IG9wdGlvbnMsIGJvb2wgaXNUb3BMZXZlbCwgY2hhciAqdGFibGVzcGFjZSk7CitleHRlcm4gT2lk CVJlaW5kZXhUYWJsZShSYW5nZVZhciAqcmVsYXRpb24sIGludCBvcHRpb25zLCBib29sIGlzVG9w TGV2ZWwsIGNoYXIgKnRhYmxlc3BhY2UpOwogZXh0ZXJuIHZvaWQgUmVpbmRleE11bHRpcGxlVGFi bGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtpbmQs Ci0JCQkJCQkJCSAgaW50IG9wdGlvbnMpOworCQkJCQkJCQkgIGludCBvcHRpb25zLCBjaGFyICp0 YWJsZXNwYWNlKTsKIGV4dGVybiBjaGFyICptYWtlT2JqZWN0TmFtZShjb25zdCBjaGFyICpuYW1l MSwgY29uc3QgY2hhciAqbmFtZTIsCiAJCQkJCQkJY29uc3QgY2hhciAqbGFiZWwpOwogZXh0ZXJu IGNoYXIgKkNob29zZVJlbGF0aW9uTmFtZShjb25zdCBjaGFyICpuYW1lMSwgY29uc3QgY2hhciAq bmFtZTIsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3RhYmxlc3BhY2Uuc291 cmNlIGIvc3JjL3Rlc3QvcmVncmVzcy9pbnB1dC90YWJsZXNwYWNlLnNvdXJjZQppbmRleCBhNWY2 MWEzNWRjLi41ZDhhMjJjZmZiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2lucHV0L3Rh Ymxlc3BhY2Uuc291cmNlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvaW5wdXQvdGFibGVzcGFjZS5z b3VyY2UKQEAgLTE3LDYgKzE3LDQ4IEBAIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFj ZSBTRVQgKHNvbWVfbm9uZXhpc3RlbnRfcGFyYW1ldGVyID0gdHJ1ZSk7ICAtLSBmCiBBTFRFUiBU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nvc3QgPSAyLjAp OyAtLSBmYWlsCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRv bV9wYWdlX2Nvc3QsIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSk7IC0tIG9rCiAKKy0tIGNyZWF0 ZSB0YWJsZSB0byB0ZXN0IFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorQ1JFQVRFIFRB QkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEgYmlnaW50LCBudW0yIGRvdWJsZSBw cmVjaXNpb24sIG51bTMgZG91YmxlIHByZWNpc2lvbik7CitJTlNFUlQgSU5UTyByZWdyZXNzX3Ri bHNwYWNlX3Rlc3RfdGJsIChudW0xLCBudW0yLCBudW0zKQorICBTRUxFQ1Qgcm91bmQocmFuZG9t KCkqMTAwKSwgcmFuZG9tKCksIHJhbmRvbSgpKjQyCisgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwMDAwKSBzKGkpOworQ1JFQVRFIElOREVYIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmxfaWR4 IE9OIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90YmwgKG51bTEpOworCistLSBjaGVjayB0aGF0IFJF SU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZSBpcyB0cmFuc2FjdGlvbmFsCitCRUdJTjsKK1JF SU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgSU5ERVggcmVncmVzc190YmxzcGFj ZV90ZXN0X3RibF9pZHg7CitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRB QkxFIHJlZ3Jlc3NfdGJsc3BhY2VfdGVzdF90Ymw7CitST0xMQkFDSzsKK1NFTEVDVCByZWxuYW1l IEZST00gcGdfY2xhc3MKK1dIRVJFIHJlbHRhYmxlc3BhY2U9KFNFTEVDVCBvaWQgRlJPTSBwZ190 YWJsZXNwYWNlIFdIRVJFIHNwY25hbWU9J3JlZ3Jlc3NfdGJsc3BhY2UnKTsKKworLS0gZmlyc3Qs IGxldCB1cyByZWluZGV4IGFuZCBtb3ZlIHRoZSBlbnRpcmUgZGF0YWJhc2UsIGFmdGVyIHRoYXQg cmV0dXJuIGV2ZXJ5dGhpbmcgYmFjaworUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlKSBEQVRBQkFTRSByZWdyZXNzaW9uOyAtLSBvayB3aXRoIHdhcm5pbmcKK1JFSU5ERVggKFRB QkxFU1BBQ0UgcGdfZGVmYXVsdCkgREFUQUJBU0UgcmVncmVzc2lvbjsgLS0gb2sgd2l0aCB3YXJu aW5nCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShT RUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNw YWNlJyk7CisKKy0tIGNoZWNrIFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorUkVJTkRF WCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rl c3RfdGJsX2lkeDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkg VEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcGdfYXV0aGlkOyAtLSBmYWlsCitSRUlOREVYIChU QUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFNZU1RFTSBDT05DVVJSRU5UTFkgcG9zdGdyZXM7 IC0tIGZhaWwKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgQ09O Q1VSUkVOVExZIHBnX2FtOyAtLSBmYWlsCitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2dsb2JhbCkg SU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHg7IC0tIGZhaWwKK1JFSU5ERVggKFRB QkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcGdfYW07IC0tIGZhaWwKKworLS0gY2hl Y2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIHRvIG5ldyB0YWJsZXNwYWNlCitTRUxFQ1QgcmVs bmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00g cGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdyZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZ IHJlbG5hbWU7CisKKy0tIG1vdmUgaW5kZXhlcyBiYWNrIHRvIHBnX2RlZmF1bHQgdGFibGVzcGFj ZQorUkVJTkRFWCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSBDT05DVVJSRU5UTFkgcmVn cmVzc190YmxzcGFjZV90ZXN0X3RibDsgLS0gb2sKKworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRp b25zIG1vdmVkIGJhY2sgdG8gcGdfZGVmYXVsdAorU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFz cworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hF UkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworCiAtLSBjcmVhdGUgYSBzY2hlbWEgd2Ug Y2FuIHVzZQogQ1JFQVRFIFNDSEVNQSB0ZXN0c2NoZW1hOwogCkBAIC05Niw2ICsxMzgsMTQgQEAg U0VMRUNUIHJlbG5hbWUsIHNwY25hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX3RhYmxlc3BhY2UgdCwg cGdfY2F0YWxvZy5wZ19jbGFzcyBjCiBcZCB0ZXN0c2NoZW1hLnBhcnRfYV9pZHgKIFxkKyB0ZXN0 c2NoZW1hLnBhcnRfYV9pZHgKIAorLS0gUkVJTkRFWCBwYXJ0aXRpb25lZCBpbmRleGVzIHRvIG5l dyB0YWJsZXNwYWNlCitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRBQkxFIHRlc3Rz Y2hlbWEucGFydDsKK1xkIHRlc3RzY2hlbWEucGFydAorXGQgdGVzdHNjaGVtYS5wYXJ0MQorUkVJ TkRFWCAoQ09OQ1VSUkVOVExZLCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHRl c3RzY2hlbWEucGFydF9hX2lkeDsKK1xkIHRlc3RzY2hlbWEucGFydAorXGQgdGVzdHNjaGVtYS5w YXJ0MQorCiAtLSBwYXJ0aXRpb25lZCByZWxzIGNhbm5vdCBzcGVjaWZ5IHRoZSBkZWZhdWx0IHRh Ymxlc3BhY2UuICBUaGVzZSBmYWlsOgogQ1JFQVRFIFRBQkxFIHRlc3RzY2hlbWEuZGZsdCAoYSBp bnQgUFJJTUFSWSBLRVkpIFBBUlRJVElPTiBCWSBMSVNUIChhKSBUQUJMRVNQQUNFIHBnX2RlZmF1 bHQ7CiBDUkVBVEUgVEFCTEUgdGVzdHNjaGVtYS5kZmx0IChhIGludCBQUklNQVJZIEtFWSBVU0lO RyBJTkRFWCBUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFBBUlRJVElPTiBCWSBMSVNUIChhKTsKQEAg LTI3OSw2ICszMjksOSBAQCBBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFDRSByZWdyZXNzX3Ri bHNwYWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdAogLS0gU2hvdWxkIHN1Y2Nl ZWQKIERST1AgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7CiAKK0RST1AgSU5E RVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHg7CitEUk9QIFRBQkxFIHJlZ3Jlc3NfdGJs c3BhY2VfdGVzdF90Ymw7CisKIERST1AgU0NIRU1BIHRlc3RzY2hlbWEgQ0FTQ0FERTsKIAogRFJP UCBST0xFIHJlZ3Jlc3NfdGFibGVzcGFjZV91c2VyMTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvb3V0cHV0L3RhYmxlc3BhY2Uuc291cmNlIGIvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQv dGFibGVzcGFjZS5zb3VyY2UKaW5kZXggMTYyYjU5MWIzMS4uMTE2OWYwMzE4YiAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9vdXRwdXQvdGFibGVzcGFjZS5zb3VyY2UKQEAgLTIwLDYgKzIwLDY1IEBAIEVS Uk9SOiAgdW5yZWNvZ25pemVkIHBhcmFtZXRlciAic29tZV9ub25leGlzdGVudF9wYXJhbWV0ZXIi CiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQgKHJhbmRvbV9wYWdlX2Nv c3QgPSAyLjApOyAtLSBmYWlsCiBFUlJPUjogIFJFU0VUIG11c3Qgbm90IGluY2x1ZGUgdmFsdWVz IGZvciBwYXJhbWV0ZXJzCiBBTFRFUiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UgUkVTRVQg KHJhbmRvbV9wYWdlX2Nvc3QsIGVmZmVjdGl2ZV9pb19jb25jdXJyZW5jeSk7IC0tIG9rCistLSBj cmVhdGUgdGFibGUgdG8gdGVzdCBSRUlOREVYIHdpdGggVEFCTEVTUEFDRSBjaGFuZ2UKK0NSRUFU RSBUQUJMRSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xIGJpZ2ludCwgbnVtMiBkb3Vi bGUgcHJlY2lzaW9uLCBudW0zIGRvdWJsZSBwcmVjaXNpb24pOworSU5TRVJUIElOVE8gcmVncmVz c190YmxzcGFjZV90ZXN0X3RibCAobnVtMSwgbnVtMiwgbnVtMykKKyAgU0VMRUNUIHJvdW5kKHJh bmRvbSgpKjEwMCksIHJhbmRvbSgpLCByYW5kb20oKSo0MgorICBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAyMDAwMCkgcyhpKTsKK0NSRUFURSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJs X2lkeCBPTiByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsIChudW0xKTsKKy0tIGNoZWNrIHRoYXQg UkVJTkRFWCB3aXRoIFRBQkxFU1BBQ0UgY2hhbmdlIGlzIHRyYW5zYWN0aW9uYWwKK0JFR0lOOwor UkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNw YWNlX3Rlc3RfdGJsX2lkeDsKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkg VEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsKK1JPTExCQUNLOworU0VMRUNUIHJlbG5h bWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBn X3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworIHJlbG5hbWUg CistLS0tLS0tLS0KKygwIHJvd3MpCisKKy0tIGZpcnN0LCBsZXQgdXMgcmVpbmRleCBhbmQgbW92 ZSB0aGUgZW50aXJlIGRhdGFiYXNlLCBhZnRlciB0aGF0IHJldHVybiBldmVyeXRoaW5nIGJhY2sK K1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgREFUQUJBU0UgcmVncmVzc2lv bjsgLS0gb2sgd2l0aCB3YXJuaW5nCitXQVJOSU5HOiAgY2Fubm90IGNoYW5nZSB0YWJsZXNwYWNl IG9mIGluZGV4ZXMgb24gc3lzdGVtIHJlbGF0aW9ucywgc2tpcHBpbmcgYWxsCitSRUlOREVYIChU QUJMRVNQQUNFIHBnX2RlZmF1bHQpIERBVEFCQVNFIHJlZ3Jlc3Npb247IC0tIG9rIHdpdGggd2Fy bmluZworV0FSTklORzogIGNhbm5vdCBjaGFuZ2UgdGFibGVzcGFjZSBvZiBpbmRleGVzIG9uIHN5 c3RlbSByZWxhdGlvbnMsIHNraXBwaW5nIGFsbAorU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFz cworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hF UkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworIHJlbG5hbWUgCistLS0tLS0tLS0KKygw IHJvd3MpCisKKy0tIGNoZWNrIFJFSU5ERVggd2l0aCBUQUJMRVNQQUNFIGNoYW5nZQorUkVJTkRF WCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlKSBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rl c3RfdGJsX2lkeDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkg VEFCTEUgcmVncmVzc190YmxzcGFjZV90ZXN0X3RibDsgLS0gb2sKK1JFSU5ERVggKFRBQkxFU1BB Q0UgcmVncmVzc190YmxzcGFjZSkgVEFCTEUgcGdfYXV0aGlkOyAtLSBmYWlsCitFUlJPUjogIHBl cm1pc3Npb24gZGVuaWVkOiAicGdfYXV0aGlkX3JvbG5hbWVfaW5kZXgiIGlzIGEgc3lzdGVtIGNh dGFsb2cKK1JFSU5ERVggKFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZSkgU1lTVEVNIENPTkNV UlJFTlRMWSBwb3N0Z3JlczsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3QgcmVpbmRleCBzeXN0ZW0g Y2F0YWxvZ3MgY29uY3VycmVudGx5CitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3Bh Y2UpIFRBQkxFIENPTkNVUlJFTlRMWSBwZ19hbTsgLS0gZmFpbAorRVJST1I6ICBjYW5ub3QgcmVp bmRleCBzeXN0ZW0gY2F0YWxvZ3MgY29uY3VycmVudGx5CitSRUlOREVYIChUQUJMRVNQQUNFIHBn X2dsb2JhbCkgSU5ERVggcmVncmVzc190YmxzcGFjZV90ZXN0X3RibF9pZHg7IC0tIGZhaWwKK0VS Uk9SOiAgY2Fubm90IG1vdmUgbm9uLXNoYXJlZCByZWxhdGlvbiB0byB0YWJsZXNwYWNlICJwZ19n bG9iYWwiCitSRUlOREVYIChUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIFRBQkxFIHBnX2Ft OyAtLSBmYWlsCitFUlJPUjogIHBlcm1pc3Npb24gZGVuaWVkOiAicGdfYW1fbmFtZV9pbmRleCIg aXMgYSBzeXN0ZW0gY2F0YWxvZworLS0gY2hlY2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIHRv IG5ldyB0YWJsZXNwYWNlCitTRUxFQ1QgcmVsbmFtZSBGUk9NIHBnX2NsYXNzCitXSEVSRSByZWx0 YWJsZXNwYWNlPShTRUxFQ1Qgb2lkIEZST00gcGdfdGFibGVzcGFjZSBXSEVSRSBzcGNuYW1lPSdy ZWdyZXNzX3RibHNwYWNlJykKK09SREVSIEJZIHJlbG5hbWU7CisgICAgICAgICAgICByZWxuYW1l ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc190 YmxzcGFjZV90ZXN0X3RibF9pZHgKKygxIHJvdykKKworLS0gbW92ZSBpbmRleGVzIGJhY2sgdG8g cGdfZGVmYXVsdCB0YWJsZXNwYWNlCitSRUlOREVYIChUQUJMRVNQQUNFIHBnX2RlZmF1bHQpIFRB QkxFIENPTkNVUlJFTlRMWSByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsOyAtLSBvaworLS0gY2hl Y2sgdGhhdCBhbGwgcmVsYXRpb25zIG1vdmVkIGJhY2sgdG8gcGdfZGVmYXVsdAorU0VMRUNUIHJl bG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsdGFibGVzcGFjZT0oU0VMRUNUIG9pZCBGUk9N IHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZT0ncmVncmVzc190YmxzcGFjZScpOworIHJlbG5h bWUgCistLS0tLS0tLS0KKygwIHJvd3MpCisKIC0tIGNyZWF0ZSBhIHNjaGVtYSB3ZSBjYW4gdXNl CiBDUkVBVEUgU0NIRU1BIHRlc3RzY2hlbWE7CiAtLSB0cnkgYSB0YWJsZQpAQCAtMTk5LDYgKzI1 OCw0NyBAQCBQYXJ0aXRpb25zOiB0ZXN0c2NoZW1hLnBhcnQxX2FfaWR4LAogICAgICAgICAgICAg dGVzdHNjaGVtYS5wYXJ0Ml9hX2lkeAogVGFibGVzcGFjZTogInJlZ3Jlc3NfdGJsc3BhY2UiCiAK Ky0tIFJFSU5ERVggcGFydGl0aW9uZWQgaW5kZXhlcyB0byBuZXcgdGFibGVzcGFjZQorUkVJTkRF WCAoVEFCTEVTUEFDRSBwZ19kZWZhdWx0KSBUQUJMRSB0ZXN0c2NoZW1hLnBhcnQ7CitcZCB0ZXN0 c2NoZW1hLnBhcnQKKyAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInRlc3RzY2hlbWEucGFydCIK KyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBMSVNU IChhKQorSW5kZXhlczoKKyAgICAicGFydF9hX2lkeCIgYnRyZWUgKGEpCitOdW1iZXIgb2YgcGFy dGl0aW9uczogMiAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitcZCB0ZXN0c2NoZW1hLnBhcnQx CisgICAgICAgICAgICAgVGFibGUgInRlc3RzY2hlbWEucGFydDEiCisgQ29sdW1uIHwgIFR5cGUg ICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAgICAg ICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0ZXN0c2NoZW1hLnBhcnQgRk9SIFZB TFVFUyBJTiAoMSkKK0luZGV4ZXM6CisgICAgInBhcnQxX2FfaWR4IiBidHJlZSAoYSkKKworUkVJ TkRFWCAoQ09OQ1VSUkVOVExZLCBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2UpIElOREVYIHRl c3RzY2hlbWEucGFydF9hX2lkeDsKK1xkIHRlc3RzY2hlbWEucGFydAorICAgICAgICBQYXJ0aXRp b25lZCB0YWJsZSAidGVzdHNjaGVtYS5wYXJ0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IExJU1QgKGEpCitJbmRleGVzOgorICAgICJwYXJ0X2Ff aWR4IiBidHJlZSAoYSksIHRhYmxlc3BhY2UgInJlZ3Jlc3NfdGJsc3BhY2UiCitOdW1iZXIgb2Yg cGFydGl0aW9uczogMiAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitcZCB0ZXN0c2NoZW1hLnBh cnQxCisgICAgICAgICAgICAgVGFibGUgInRlc3RzY2hlbWEucGFydDEiCisgQ29sdW1uIHwgIFR5 cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGEgICAgICB8IGludGVnZXIgfCAg ICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0ZXN0c2NoZW1hLnBhcnQgRk9S IFZBTFVFUyBJTiAoMSkKK0luZGV4ZXM6CisgICAgInBhcnQxX2FfaWR4IiBidHJlZSAoYSksIHRh Ymxlc3BhY2UgInJlZ3Jlc3NfdGJsc3BhY2UiCisKIC0tIHBhcnRpdGlvbmVkIHJlbHMgY2Fubm90 IHNwZWNpZnkgdGhlIGRlZmF1bHQgdGFibGVzcGFjZS4gIFRoZXNlIGZhaWw6CiBDUkVBVEUgVEFC TEUgdGVzdHNjaGVtYS5kZmx0IChhIGludCBQUklNQVJZIEtFWSkgUEFSVElUSU9OIEJZIExJU1Qg KGEpIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdDsKIEVSUk9SOiAgY2Fubm90IHNwZWNpZnkgZGVmYXVs dCB0YWJsZXNwYWNlIGZvciBwYXJ0aXRpb25lZCByZWxhdGlvbnMKQEAgLTczNiw2ICs4MzYsOCBA QCBBTFRFUiBUQUJMRSBBTEwgSU4gVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQg U0VUIFRBQkxFU1BBQ0UgcGdfZGVmYXVsdAogTk9USUNFOiAgbm8gbWF0Y2hpbmcgcmVsYXRpb25z IGluIHRhYmxlc3BhY2UgInJlZ3Jlc3NfdGJsc3BhY2VfcmVuYW1lZCIgZm91bmQKIC0tIFNob3Vs ZCBzdWNjZWVkCiBEUk9QIFRBQkxFU1BBQ0UgcmVncmVzc190YmxzcGFjZV9yZW5hbWVkOworRFJP UCBJTkRFWCByZWdyZXNzX3RibHNwYWNlX3Rlc3RfdGJsX2lkeDsKK0RST1AgVEFCTEUgcmVncmVz c190YmxzcGFjZV90ZXN0X3RibDsKIERST1AgU0NIRU1BIHRlc3RzY2hlbWEgQ0FTQ0FERTsKIE5P VElDRTogIGRyb3AgY2FzY2FkZXMgdG8gNiBvdGhlciBvYmplY3RzCiBERVRBSUw6ICBkcm9wIGNh c2NhZGVzIHRvIHRhYmxlIHRlc3RzY2hlbWEuZm9vCi0tIAoyLjIwLjEKCg== --=_680b1b8a9b2a839baed301219b4ad717 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v31-0001-Change-REINDEX-CLUSTER-to-accept-an-option-list.patch Content-Disposition: attachment; filename=v31-0001-Change-REINDEX-CLUSTER-to-accept-an-option-list.patch; size=19472 RnJvbSA2NWZhMWVhMTQ2ZTYzNGZiNGM0NGI2MTVhMjUzNWE1MTkxYjNjYzQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlqQHRlbHNhc29mdC5jb20+ CkRhdGU6IEZyaSwgMjcgTWFyIDIwMjAgMTc6NTA6NDYgLTA1MDAKU3ViamVjdDogW1BBVENIIHYz MSAxLzVdIENoYW5nZSBSRUlOREVYL0NMVVNURVIgdG8gYWNjZXB0IGFuIG9wdGlvbiBsaXN0Li4K Ci4ubGlrZSBFWFBMQUlOICguLiksIFZBQ1VVTSAoLi4pLCBhbmQgQU5BTFlaRSAoLi4pLgoKQ2hh bmdlIGRvY3MgaW4gdGhlIHN0eWxlIG9mIFZBQ1VVTS4gIFNlZSBhbHNvOiA1MmRjZmRhNDg3Nzhk MTY2ODNjNjRjYTQzNzIyOTlhMDk5YTE1Yjk2Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVy LnNnbWwgIHwgMjcgKysrKysrKysrKysrKystLS0KIGRvYy9zcmMvc2dtbC9yZWYvcmVpbmRleC5z Z21sICB8IDQzICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvY2x1c3Rlci5jIHwgMjggKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYyAgfCAgNCArLS0KIHNyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyB8ICA0 ICstLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgIHwgNTQgKysrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgICAgIHwgNDQg KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMg ICAgfCAyMiArKysrKysrKysrLS0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oIHwg IDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCB8ICA0ICstLQogMTAgZmlsZXMg Y2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKyksIDY0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvY2x1c3Rlci5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVy LnNnbWwKaW5kZXggYjk0NTBlNzM2Ni4uZWZkODE2NWUzNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9jbHVzdGVyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jbHVzdGVyLnNnbWwK QEAgLTIxLDggKzIxLDEzIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZnN5bm9w c2lzZGl2PgogPHN5bm9wc2lzPgotQ0xVU1RFUiBbVkVSQk9TRV0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbIFVTSU5HIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9uYW1lPC9yZXBsYWNlYWJsZT4gXQotQ0xVU1RFUiBb VkVSQk9TRV0KK0NMVVNURVIgW1ZFUkJPU0VdIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbIFVTSU5HIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9uYW1lPC9yZXBsYWNlYWJsZT4gXQorQ0xVU1RFUiBb VkVSQk9TRV0gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxh Y2VhYmxlPiBbLCAuLi5dICkgXQorCis8cGhyYXNlPndoZXJlIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBjYW4gYmUgb25lIG9mOjwvcGhyYXNlPgor CisgICAgVkVSQk9TRSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9y ZXBsYWNlYWJsZT4gXQorCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTgx LDYgKzg2LDE1IEBAIENMVVNURVIgW1ZFUkJPU0VdCiAgIDx0aXRsZT5QYXJhbWV0ZXJzPC90aXRs ZT4KIAogICA8dmFyaWFibGVsaXN0PgorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0 ZXJhbD5WRVJCT1NFPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgUHJpbnRzIGEgcHJvZ3Jlc3MgcmVwb3J0IGFzIGVhY2ggdGFibGUgaXMgY2x1c3Rl cmVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAt MTAwLDEwICsxMTQsMTUgQEAgQ0xVU1RFUiBbVkVSQk9TRV0KICAgIDwvdmFybGlzdGVudHJ5Pgog CiAgICA8dmFybGlzdGVudHJ5PgotICAgIDx0ZXJtPjxsaXRlcmFsPlZFUkJPU0U8L2xpdGVyYWw+ PC90ZXJtPgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFu PC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KLSAgICAg IFByaW50cyBhIHByb2dyZXNzIHJlcG9ydCBhcyBlYWNoIHRhYmxlIGlzIGNsdXN0ZXJlZC4KKyAg ICAgIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBzZWxlY3RlZCBvcHRpb24gc2hvdWxkIGJlIHR1cm5l ZCBvbiBvciBvZmYuCisgICAgICBZb3UgY2FuIHdyaXRlIDxsaXRlcmFsPlRSVUU8L2xpdGVyYWw+ LCA8bGl0ZXJhbD5PTjwvbGl0ZXJhbD4sIG9yCisgICAgICA8bGl0ZXJhbD4xPC9saXRlcmFsPiB0 byBlbmFibGUgdGhlIG9wdGlvbiwgYW5kIDxsaXRlcmFsPkZBTFNFPC9saXRlcmFsPiwKKyAgICAg IDxsaXRlcmFsPk9GRjwvbGl0ZXJhbD4sIG9yIDxsaXRlcmFsPjA8L2xpdGVyYWw+IHRvIGRpc2Fi bGUgaXQuICBUaGUKKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFu PC9yZXBsYWNlYWJsZT4gdmFsdWUgY2FuIGFsc28KKyAgICAgIGJlIG9taXR0ZWQsIGluIHdoaWNo IGNhc2UgPGxpdGVyYWw+VFJVRTwvbGl0ZXJhbD4gaXMgYXNzdW1lZC4KICAgICAgPC9wYXJhPgog ICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvcmVpbmRleC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKaW5k ZXggZjZkNDI1YTY5MS4uYTM4NDNiZmE0ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9y ZWluZGV4LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9yZWluZGV4LnNnbWwKQEAgLTI1LDcg KzI1LDcgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlv bjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KIAogPHBocmFzZT53aGVyZSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3B0aW9uPC9yZXBsYWNlYWJsZT4gY2FuIGJlIG9uZSBv Zjo8L3BocmFzZT4KIAotICAgIFZFUkJPU0UKKyAgICBWRVJCT1NFIFsgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCiA8L3N5bm9wc2lzPgogIDwv cmVmc3lub3BzaXNkaXY+CiAKQEAgLTE1NCwxOSArMTU0LDYgQEAgUkVJTkRFWCBbICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBd IHsgSU4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKLSAgIDx2YXJsaXN0 ZW50cnk+Ci0gICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3Jl cGxhY2VhYmxlPjwvdGVybT4KLSAgICA8bGlzdGl0ZW0+Ci0gICAgIDxwYXJhPgotICAgICAgVGhl IG5hbWUgb2YgdGhlIHNwZWNpZmljIGluZGV4LCB0YWJsZSwgb3IgZGF0YWJhc2UgdG8gYmUKLSAg ICAgIHJlaW5kZXhlZC4gIEluZGV4IGFuZCB0YWJsZSBuYW1lcyBjYW4gYmUgc2NoZW1hLXF1YWxp ZmllZC4KLSAgICAgIFByZXNlbnRseSwgPGNvbW1hbmQ+UkVJTkRFWCBEQVRBQkFTRTwvY29tbWFu ZD4gYW5kIDxjb21tYW5kPlJFSU5ERVggU1lTVEVNPC9jb21tYW5kPgotICAgICAgY2FuIG9ubHkg cmVpbmRleCB0aGUgY3VycmVudCBkYXRhYmFzZSwgc28gdGhlaXIgcGFyYW1ldGVyIG11c3QgbWF0 Y2gKLSAgICAgIHRoZSBjdXJyZW50IGRhdGFiYXNlJ3MgbmFtZS4KLSAgICAgPC9wYXJhPgotICAg IDwvbGlzdGl0ZW0+Ci0gICA8L3Zhcmxpc3RlbnRyeT4KLQogICAgPHZhcmxpc3RlbnRyeT4KICAg ICA8dGVybT48bGl0ZXJhbD5DT05DVVJSRU5UTFk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0 aXRlbT4KQEAgLTE5NCw2ICsxODEsMzQgQEAgUkVJTkRFWCBbICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIHsgSU4KICAgICAg PC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxp c3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBU aGUgbmFtZSBvZiB0aGUgc3BlY2lmaWMgaW5kZXgsIHRhYmxlLCBvciBkYXRhYmFzZSB0byBiZQor ICAgICAgcmVpbmRleGVkLiAgSW5kZXggYW5kIHRhYmxlIG5hbWVzIGNhbiBiZSBzY2hlbWEtcXVh bGlmaWVkLgorICAgICAgUHJlc2VudGx5LCA8Y29tbWFuZD5SRUlOREVYIERBVEFCQVNFPC9jb21t YW5kPiBhbmQgPGNvbW1hbmQ+UkVJTkRFWCBTWVNURU08L2NvbW1hbmQ+CisgICAgICBjYW4gb25s eSByZWluZGV4IHRoZSBjdXJyZW50IGRhdGFiYXNlLCBzbyB0aGVpciBwYXJhbWV0ZXIgbXVzdCBt YXRjaAorICAgICAgdGhlIGN1cnJlbnQgZGF0YWJhc2UncyBuYW1lLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNl YWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNwZWNpZmll cyB3aGV0aGVyIHRoZSBzZWxlY3RlZCBvcHRpb24gc2hvdWxkIGJlIHR1cm5lZCBvbiBvciBvZmYu CisgICAgICBZb3UgY2FuIHdyaXRlIDxsaXRlcmFsPlRSVUU8L2xpdGVyYWw+LCA8bGl0ZXJhbD5P TjwvbGl0ZXJhbD4sIG9yCisgICAgICA8bGl0ZXJhbD4xPC9saXRlcmFsPiB0byBlbmFibGUgdGhl IG9wdGlvbiwgYW5kIDxsaXRlcmFsPkZBTFNFPC9saXRlcmFsPiwKKyAgICAgIDxsaXRlcmFsPk9G RjwvbGl0ZXJhbD4sIG9yIDxsaXRlcmFsPjA8L2xpdGVyYWw+IHRvIGRpc2FibGUgaXQuICBUaGUK KyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5ib29sZWFuPC9yZXBsYWNlYWJs ZT4gdmFsdWUgY2FuIGFsc28KKyAgICAgIGJlIG9taXR0ZWQsIGluIHdoaWNoIGNhc2UgPGxpdGVy YWw+VFJVRTwvbGl0ZXJhbD4gaXMgYXNzdW1lZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0 ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICA8L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNlY3Qx PgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jbHVzdGVyLmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jbHVzdGVyLmMKaW5kZXggMDRkMTJhN2VjZS4uNWU4NWZiYWNhZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY2x1c3Rlci5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NsdXN0ZXIuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfYW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL3RvYXN0aW5nLmgiCiAjaW5jbHVkZSAiY29tbWFu ZHMvY2x1c3Rlci5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3Byb2dyZXNzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVjbWRzLmgiCiAjaW5j bHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCkBAIC05OSw4ICsxMDAsMjkgQEAgc3RhdGljIExpc3Qg KmdldF90YWJsZXNfdG9fY2x1c3RlcihNZW1vcnlDb250ZXh0IGNsdXN0ZXJfY29udGV4dCk7CiAg Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiB2b2lkCi1jbHVzdGVyKENsdXN0ZXJTdG10ICpzdG10 LCBib29sIGlzVG9wTGV2ZWwpCitjbHVzdGVyKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ2x1c3RlclN0 bXQgKnN0bXQsIGJvb2wgaXNUb3BMZXZlbCkKIHsKKwlMaXN0Q2VsbAkqbGM7CisJaW50CQkJb3B0 aW9ucyA9IDA7CisKKwkvKiBQYXJzZSBsaXN0IG9mIGdlbmVyaWMgcGFyYW1ldGVycyBub3QgaGFu ZGxlZCBieSB0aGUgcGFyc2VyICovCisJZm9yZWFjaChsYywgc3RtdC0+cGFyYW1zKQorCXsKKwkJ RGVmRWxlbQkqb3B0ID0gKERlZkVsZW0gKikgbGZpcnN0KGxjKTsKKworCQlpZiAoc3RyY21wKG9w dC0+ZGVmbmFtZSwgInZlcmJvc2UiKSA9PSAwKQorCQkJaWYgKGRlZkdldEJvb2xlYW4ob3B0KSkK KwkJCQlvcHRpb25zIHw9IENMVU9QVF9WRVJCT1NFOworCQkJZWxzZQorCQkJCW9wdGlvbnMgJj0g fkNMVU9QVF9WRVJCT1NFOworCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBlcnJtc2coInVucmVjb2duaXplZCBDTFVT VEVSIG9wdGlvbiBcIiVzXCIiLAorCQkJCQkJIG9wdC0+ZGVmbmFtZSksCisJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBvcHQtPmxvY2F0aW9uKSkpOworCX0KKwogCWlmIChzdG10LT5y ZWxhdGlvbiAhPSBOVUxMKQogCXsKIAkJLyogVGhpcyBpcyB0aGUgc2luZ2xlLXJlbGF0aW9uIGNh c2UuICovCkBAIC0xNzAsNyArMTkyLDcgQEAgY2x1c3RlcihDbHVzdGVyU3RtdCAqc3RtdCwgYm9v bCBpc1RvcExldmVsKQogCQl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CiAKIAkJLyogRG8gdGhl IGpvYi4gKi8KLQkJY2x1c3Rlcl9yZWwodGFibGVPaWQsIGluZGV4T2lkLCBzdG10LT5vcHRpb25z KTsKKwkJY2x1c3Rlcl9yZWwodGFibGVPaWQsIGluZGV4T2lkLCBvcHRpb25zKTsKIAl9CiAJZWxz ZQogCXsKQEAgLTIxOSw3ICsyNDEsNyBAQCBjbHVzdGVyKENsdXN0ZXJTdG10ICpzdG10LCBib29s IGlzVG9wTGV2ZWwpCiAJCQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hv dCgpKTsKIAkJCS8qIERvIHRoZSBqb2IuICovCiAJCQljbHVzdGVyX3JlbChydnRjLT50YWJsZU9p ZCwgcnZ0Yy0+aW5kZXhPaWQsCi0JCQkJCQlzdG10LT5vcHRpb25zIHwgQ0xVT1BUX1JFQ0hFQ0sp OworCQkJCQkJb3B0aW9ucyB8IENMVU9QVF9SRUNIRUNLKTsKIAkJCVBvcEFjdGl2ZVNuYXBzaG90 KCk7CiAJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3Mu YwppbmRleCA0N2I5ZmZkNDAxLi45OTY2MzMwM2JkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9u b2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAt MzM0OSw3ICszMzQ5LDcgQEAgX2NvcHlDbHVzdGVyU3RtdChjb25zdCBDbHVzdGVyU3RtdCAqZnJv bSkKIAogCUNPUFlfTk9ERV9GSUVMRChyZWxhdGlvbik7CiAJQ09QWV9TVFJJTkdfRklFTEQoaW5k ZXhuYW1lKTsKLQlDT1BZX1NDQUxBUl9GSUVMRChvcHRpb25zKTsKKwlDT1BZX05PREVfRklFTEQo cGFyYW1zKTsKIAogCXJldHVybiBuZXdub2RlOwogfQpAQCAtNDQ0Miw3ICs0NDQyLDcgQEAgX2Nv cHlSZWluZGV4U3RtdChjb25zdCBSZWluZGV4U3RtdCAqZnJvbSkKIAlDT1BZX1NDQUxBUl9GSUVM RChraW5kKTsKIAlDT1BZX05PREVfRklFTEQocmVsYXRpb24pOwogCUNPUFlfU1RSSU5HX0ZJRUxE KG5hbWUpOwotCUNPUFlfU0NBTEFSX0ZJRUxEKG9wdGlvbnMpOworCUNPUFlfTk9ERV9GSUVMRChw YXJhbXMpOwogCiAJcmV0dXJuIG5ld25vZGU7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXgg NmNjY2FlYTEyNC4uOTI4MmNjZjZjYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1 YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtMTIxMCw3 ICsxMjEwLDcgQEAgX2VxdWFsQ2x1c3RlclN0bXQoY29uc3QgQ2x1c3RlclN0bXQgKmEsIGNvbnN0 IENsdXN0ZXJTdG10ICpiKQogewogCUNPTVBBUkVfTk9ERV9GSUVMRChyZWxhdGlvbik7CiAJQ09N UEFSRV9TVFJJTkdfRklFTEQoaW5kZXhuYW1lKTsKLQlDT01QQVJFX1NDQUxBUl9GSUVMRChvcHRp b25zKTsKKwlDT01QQVJFX05PREVfRklFTEQocGFyYW1zKTsKIAogCXJldHVybiB0cnVlOwogfQpA QCAtMjEyOSw3ICsyMTI5LDcgQEAgX2VxdWFsUmVpbmRleFN0bXQoY29uc3QgUmVpbmRleFN0bXQg KmEsIGNvbnN0IFJlaW5kZXhTdG10ICpiKQogCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGtpbmQpOwog CUNPTVBBUkVfTk9ERV9GSUVMRChyZWxhdGlvbik7CiAJQ09NUEFSRV9TVFJJTkdfRklFTEQobmFt ZSk7Ci0JQ09NUEFSRV9TQ0FMQVJfRklFTEQob3B0aW9ucyk7CisJQ09NUEFSRV9OT0RFX0ZJRUxE KHBhcmFtcyk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGYzYWI4NTJjMTMu LmJkY2VjMGYxNzcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIv c3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTE1LDcgKzUxNSw2IEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBO b2RlICpxdWVyeSk7CiAldHlwZSA8bGlzdD4JZ2VuZXJpY19vcHRpb25fbGlzdCBhbHRlcl9nZW5l cmljX29wdGlvbl9saXN0CiAKICV0eXBlIDxpdmFsPglyZWluZGV4X3RhcmdldF90eXBlIHJlaW5k ZXhfdGFyZ2V0X211bHRpdGFibGUKLSV0eXBlIDxpdmFsPglyZWluZGV4X29wdGlvbl9saXN0IHJl aW5kZXhfb3B0aW9uX2VsZW0KIAogJXR5cGUgPG5vZGU+CWNvcHlfZ2VuZXJpY19vcHRfYXJnIGNv cHlfZ2VuZXJpY19vcHRfYXJnX2xpc3RfaXRlbQogJXR5cGUgPGRlZmVsdD4JY29weV9nZW5lcmlj X29wdF9lbGVtCkBAIC04MjE2LDkgKzgyMTUsMTAgQEAgUmVpbmRleFN0bXQ6CiAJCQkJCW4tPmtp bmQgPSAkMjsKIAkJCQkJbi0+cmVsYXRpb24gPSAkNDsKIAkJCQkJbi0+bmFtZSA9IE5VTEw7Ci0J CQkJCW4tPm9wdGlvbnMgPSAwOworCQkJCQluLT5wYXJhbXMgPSBOSUw7CiAJCQkJCWlmICgkMykK LQkJCQkJCW4tPm9wdGlvbnMgfD0gUkVJTkRFWE9QVF9DT05DVVJSRU5UTFk7CisJCQkJCQluLT5w YXJhbXMgPSBsYXBwZW5kKG4tPnBhcmFtcywKKwkJCQkJCQkJbWFrZURlZkVsZW0oImNvbmN1cnJl bnRseSIsIE5VTEwsIEAzKSk7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KIAkJCXwgUkVJ TkRFWCByZWluZGV4X3RhcmdldF9tdWx0aXRhYmxlIG9wdF9jb25jdXJyZW50bHkgbmFtZQpAQCAt ODIyNywzMSArODIyNywzNCBAQCBSZWluZGV4U3RtdDoKIAkJCQkJbi0+a2luZCA9ICQyOwogCQkJ CQluLT5uYW1lID0gJDQ7CiAJCQkJCW4tPnJlbGF0aW9uID0gTlVMTDsKLQkJCQkJbi0+b3B0aW9u cyA9IDA7CisJCQkJCW4tPnBhcmFtcyA9IE5JTDsKIAkJCQkJaWYgKCQzKQotCQkJCQkJbi0+b3B0 aW9ucyB8PSBSRUlOREVYT1BUX0NPTkNVUlJFTlRMWTsKKwkJCQkJCW4tPnBhcmFtcyA9IGxhcHBl bmQobi0+cGFyYW1zLAorCQkJCQkJCQltYWtlRGVmRWxlbSgiY29uY3VycmVudGx5IiwgTlVMTCwg QDMpKTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBSRUlOREVYICcoJyByZWlu ZGV4X29wdGlvbl9saXN0ICcpJyByZWluZGV4X3RhcmdldF90eXBlIG9wdF9jb25jdXJyZW50bHkg cXVhbGlmaWVkX25hbWUKKwkJCXwgUkVJTkRFWCAnKCcgdXRpbGl0eV9vcHRpb25fbGlzdCAnKScg cmVpbmRleF90YXJnZXRfdHlwZSBvcHRfY29uY3VycmVudGx5IHF1YWxpZmllZF9uYW1lCiAJCQkJ ewogCQkJCQlSZWluZGV4U3RtdCAqbiA9IG1ha2VOb2RlKFJlaW5kZXhTdG10KTsKIAkJCQkJbi0+ a2luZCA9ICQ1OwogCQkJCQluLT5yZWxhdGlvbiA9ICQ3OwogCQkJCQluLT5uYW1lID0gTlVMTDsK LQkJCQkJbi0+b3B0aW9ucyA9ICQzOworCQkJCQluLT5wYXJhbXMgPSAkMzsKIAkJCQkJaWYgKCQ2 KQotCQkJCQkJbi0+b3B0aW9ucyB8PSBSRUlOREVYT1BUX0NPTkNVUlJFTlRMWTsKKwkJCQkJCW4t PnBhcmFtcyA9IGxhcHBlbmQobi0+cGFyYW1zLAorCQkJCQkJCQltYWtlRGVmRWxlbSgiY29uY3Vy cmVudGx5IiwgTlVMTCwgQDYpKTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQotCQkJfCBS RUlOREVYICcoJyByZWluZGV4X29wdGlvbl9saXN0ICcpJyByZWluZGV4X3RhcmdldF9tdWx0aXRh YmxlIG9wdF9jb25jdXJyZW50bHkgbmFtZQorCQkJfCBSRUlOREVYICcoJyB1dGlsaXR5X29wdGlv bl9saXN0ICcpJyByZWluZGV4X3RhcmdldF9tdWx0aXRhYmxlIG9wdF9jb25jdXJyZW50bHkgbmFt ZQogCQkJCXsKIAkJCQkJUmVpbmRleFN0bXQgKm4gPSBtYWtlTm9kZShSZWluZGV4U3RtdCk7CiAJ CQkJCW4tPmtpbmQgPSAkNTsKIAkJCQkJbi0+bmFtZSA9ICQ3OwogCQkJCQluLT5yZWxhdGlvbiA9 IE5VTEw7Ci0JCQkJCW4tPm9wdGlvbnMgPSAkMzsKKwkJCQkJbi0+cGFyYW1zID0gJDM7CiAJCQkJ CWlmICgkNikKLQkJCQkJCW4tPm9wdGlvbnMgfD0gUkVJTkRFWE9QVF9DT05DVVJSRU5UTFk7CisJ CQkJCQluLT5wYXJhbXMgPSBsYXBwZW5kKG4tPnBhcmFtcywKKwkJCQkJCQkJbWFrZURlZkVsZW0o ImNvbmN1cnJlbnRseSIsIE5VTEwsIEA2KSk7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0K IAkJOwpAQCAtODI2NCwxMyArODI2Nyw2IEBAIHJlaW5kZXhfdGFyZ2V0X211bHRpdGFibGU6CiAJ CQl8IFNZU1RFTV9QCQkJCXsgJCQgPSBSRUlOREVYX09CSkVDVF9TWVNURU07IH0KIAkJCXwgREFU QUJBU0UJCQkJeyAkJCA9IFJFSU5ERVhfT0JKRUNUX0RBVEFCQVNFOyB9CiAJCTsKLXJlaW5kZXhf b3B0aW9uX2xpc3Q6Ci0JCQlyZWluZGV4X29wdGlvbl9lbGVtCQkJCQkJCQl7ICQkID0gJDE7IH0K LQkJCXwgcmVpbmRleF9vcHRpb25fbGlzdCAnLCcgcmVpbmRleF9vcHRpb25fZWxlbQl7ICQkID0g JDEgfCAkMzsgfQotCQk7Ci1yZWluZGV4X29wdGlvbl9lbGVtOgotCQkJVkVSQk9TRQl7ICQkID0g UkVJTkRFWE9QVF9WRVJCT1NFOyB9Ci0JCTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpA QCAtMTA0MDYsNiArMTA0MDIsNyBAQCBDcmVhdGVDb252ZXJzaW9uU3RtdDoKICAqCiAgKgkJUVVF Ulk6CiAgKgkJCQlDTFVTVEVSIFtWRVJCT1NFXSA8cXVhbGlmaWVkX25hbWU+IFsgVVNJTkcgPGlu ZGV4X25hbWU+IF0KKyAqCQkJCUNMVVNURVIgW1ZFUkJPU0VdIFsob3B0aW9ucyldIDxxdWFsaWZp ZWRfbmFtZT4gWyBVU0lORyA8aW5kZXhfbmFtZT4gXQogICoJCQkJQ0xVU1RFUiBbVkVSQk9TRV0K ICAqCQkJCUNMVVNURVIgW1ZFUkJPU0VdIDxpbmRleF9uYW1lPiBPTiA8cXVhbGlmaWVkX25hbWU+ IChmb3IgcHJlLTguMykKICAqCkBAIC0xMDQxNyw5ICsxMDQxNCwxOCBAQCBDbHVzdGVyU3RtdDoK IAkJCQkJQ2x1c3RlclN0bXQgKm4gPSBtYWtlTm9kZShDbHVzdGVyU3RtdCk7CiAJCQkJCW4tPnJl bGF0aW9uID0gJDM7CiAJCQkJCW4tPmluZGV4bmFtZSA9ICQ0OwotCQkJCQluLT5vcHRpb25zID0g MDsKKwkJCQkJbi0+cGFyYW1zID0gTklMOwogCQkJCQlpZiAoJDIpCi0JCQkJCQluLT5vcHRpb25z IHw9IENMVU9QVF9WRVJCT1NFOworCQkJCQkJbi0+cGFyYW1zID0gbGFwcGVuZChuLT5wYXJhbXMs IG1ha2VEZWZFbGVtKCJ2ZXJib3NlIiwgTlVMTCwgQDIpKTsKKwkJCQkJJCQgPSAoTm9kZSopbjsK KwkJCQl9CisKKwkJCXwgQ0xVU1RFUiAnKCcgdXRpbGl0eV9vcHRpb25fbGlzdCAnKScgcXVhbGlm aWVkX25hbWUgY2x1c3Rlcl9pbmRleF9zcGVjaWZpY2F0aW9uCisJCQkJeworCQkJCQlDbHVzdGVy U3RtdCAqbiA9IG1ha2VOb2RlKENsdXN0ZXJTdG10KTsKKwkJCQkJbi0+cmVsYXRpb24gPSAkNTsK KwkJCQkJbi0+aW5kZXhuYW1lID0gJDY7CisJCQkJCW4tPnBhcmFtcyA9ICQzOwogCQkJCQkkJCA9 IChOb2RlKiluOwogCQkJCX0KIAkJCXwgQ0xVU1RFUiBvcHRfdmVyYm9zZQpAQCAtMTA0MjcsOSAr MTA0MzMsOSBAQCBDbHVzdGVyU3RtdDoKIAkJCQkJQ2x1c3RlclN0bXQgKm4gPSBtYWtlTm9kZShD bHVzdGVyU3RtdCk7CiAJCQkJCW4tPnJlbGF0aW9uID0gTlVMTDsKIAkJCQkJbi0+aW5kZXhuYW1l ID0gTlVMTDsKLQkJCQkJbi0+b3B0aW9ucyA9IDA7CisJCQkJCW4tPnBhcmFtcyA9IE5JTDsKIAkJ CQkJaWYgKCQyKQotCQkJCQkJbi0+b3B0aW9ucyB8PSBDTFVPUFRfVkVSQk9TRTsKKwkJCQkJCW4t PnBhcmFtcyA9IGxhcHBlbmQobi0+cGFyYW1zLCBtYWtlRGVmRWxlbSgidmVyYm9zZSIsIE5VTEws IEAyKSk7CiAJCQkJCSQkID0gKE5vZGUqKW47CiAJCQkJfQogCQkJLyoga2VwdCBmb3IgcHJlLTgu MyBjb21wYXRpYmlsaXR5ICovCkBAIC0xMDQzOCw5ICsxMDQ0NCw5IEBAIENsdXN0ZXJTdG10Ogog CQkJCQlDbHVzdGVyU3RtdCAqbiA9IG1ha2VOb2RlKENsdXN0ZXJTdG10KTsKIAkJCQkJbi0+cmVs YXRpb24gPSAkNTsKIAkJCQkJbi0+aW5kZXhuYW1lID0gJDM7Ci0JCQkJCW4tPm9wdGlvbnMgPSAw OworCQkJCQluLT5wYXJhbXMgPSBOSUw7CiAJCQkJCWlmICgkMikKLQkJCQkJCW4tPm9wdGlvbnMg fD0gQ0xVT1BUX1ZFUkJPU0U7CisJCQkJCQluLT5wYXJhbXMgPSBsYXBwZW5kKG4tPnBhcmFtcywg bWFrZURlZkVsZW0oInZlcmJvc2UiLCBOVUxMLCBAMikpOwogCQkJCQkkJCA9IChOb2RlKiluOwog CQkJCX0KIAkJOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMv YmFja2VuZC90Y29wL3V0aWxpdHkuYwppbmRleCA4MWFjOWIxY2IyLi43NjY3Y2E5NzEwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29w L3V0aWxpdHkuYwpAQCAtNTI2LDYgKzUyNiwzNiBAQCBQcm9jZXNzVXRpbGl0eShQbGFubmVkU3Rt dCAqcHN0bXQsCiAJCQkJCQkJCWRlc3QsIHFjKTsKIH0KIAorLyogUGFyc2UgcGFyYW1zIG5vdCBw YXJzZWQgYnkgdGhlIGdyYW1tYXIgKi8KK3N0YXRpYwordm9pZCBwYXJzZV9yZWluZGV4X3BhcmFt cyhQYXJzZVN0YXRlICpwc3RhdGUsIFJlaW5kZXhTdG10ICpzdG10LCBpbnQgKm9wdGlvbnMpCit7 CisJTGlzdENlbGwgKmxjOworCWZvcmVhY2gobGMsIHN0bXQtPnBhcmFtcykKKwl7CisJCURlZkVs ZW0gICAgKm9wdCA9IChEZWZFbGVtICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHN0cmNtcChvcHQt PmRlZm5hbWUsICJ2ZXJib3NlIikgPT0gMCkKKwkJeworCQkJaWYgKGRlZkdldEJvb2xlYW4ob3B0 KSkKKwkJCQkqb3B0aW9ucyB8PSBSRUlOREVYT1BUX1ZFUkJPU0U7CisJCQllbHNlCisJCQkJKm9w dGlvbnMgJj0gflJFSU5ERVhPUFRfVkVSQk9TRTsKKwkJfQorCQllbHNlIGlmIChzdHJjbXAob3B0 LT5kZWZuYW1lLCAiY29uY3VycmVudGx5IikgPT0gMCkKKwkJCWlmIChkZWZHZXRCb29sZWFuKG9w dCkpCisJCQkJKm9wdGlvbnMgfD0gUkVJTkRFWE9QVF9DT05DVVJSRU5UTFk7CisJCQllbHNlCisJ CQkJKm9wdGlvbnMgJj0gflJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZOworCQllbHNlCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCSBl cnJtc2coInVucmVjb2duaXplZCBSRUlOREVYIG9wdGlvbiBcIiVzXCIiLAorCQkJCQkJIG9wdC0+ ZGVmbmFtZSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcHQtPmxvY2F0aW9u KSkpOworCX0KK30KKwogLyoKICAqIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5IGl0c2VsZiBkZWFs cyBvbmx5IHdpdGggdXRpbGl0eSBjb21tYW5kcyBmb3IKICAqIHdoaWNoIHdlIGRvIG5vdCBwcm92 aWRlIGV2ZW50IHRyaWdnZXIgc3VwcG9ydC4gIENvbW1hbmRzIHRoYXQgZG8gaGF2ZQpAQCAtODE4 LDcgKzg0OCw3IEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwK IAkJCWJyZWFrOwogCiAJCWNhc2UgVF9DbHVzdGVyU3RtdDoKLQkJCWNsdXN0ZXIoKENsdXN0ZXJT dG10ICopIHBhcnNldHJlZSwgaXNUb3BMZXZlbCk7CisJCQljbHVzdGVyKHBzdGF0ZSwgKENsdXN0 ZXJTdG10ICopIHBhcnNldHJlZSwgaXNUb3BMZXZlbCk7CiAJCQlicmVhazsKIAogCQljYXNlIFRf VmFjdXVtU3RtdDoKQEAgLTkxOCwyMCArOTQ4LDIwIEBAIHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5 KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJY2FzZSBUX1JlaW5kZXhTdG10OgogCQkJewogCQkJCVJl aW5kZXhTdG10ICpzdG10ID0gKFJlaW5kZXhTdG10ICopIHBhcnNldHJlZTsKKwkJCQlpbnQgb3B0 aW9ucyA9IDA7CiAKLQkJCQlpZiAoKHN0bXQtPm9wdGlvbnMgJiBSRUlOREVYT1BUX0NPTkNVUlJF TlRMWSkgIT0gMCkKKwkJCQlwYXJzZV9yZWluZGV4X3BhcmFtcyhwc3RhdGUsIHN0bXQsICZvcHRp b25zKTsKKwkJCQlpZiAob3B0aW9ucyAmIFJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZKQogCQkJCQlQ cmV2ZW50SW5UcmFuc2FjdGlvbkJsb2NrKGlzVG9wTGV2ZWwsCiAJCQkJCQkJCQkJCSAgIlJFSU5E RVggQ09OQ1VSUkVOVExZIik7CiAKIAkJCQlzd2l0Y2ggKHN0bXQtPmtpbmQpCiAJCQkJewogCQkJ CQljYXNlIFJFSU5ERVhfT0JKRUNUX0lOREVYOgotCQkJCQkJUmVpbmRleEluZGV4KHN0bXQtPnJl bGF0aW9uLCBzdG10LT5vcHRpb25zLAotCQkJCQkJCQkJIGlzVG9wTGV2ZWwpOworCQkJCQkJUmVp bmRleEluZGV4KHN0bXQtPnJlbGF0aW9uLCBvcHRpb25zLCBpc1RvcExldmVsKTsKIAkJCQkJCWJy ZWFrOwogCQkJCQljYXNlIFJFSU5ERVhfT0JKRUNUX1RBQkxFOgotCQkJCQkJUmVpbmRleFRhYmxl KHN0bXQtPnJlbGF0aW9uLCBzdG10LT5vcHRpb25zLAotCQkJCQkJCQkJIGlzVG9wTGV2ZWwpOwor CQkJCQkJUmVpbmRleFRhYmxlKHN0bXQtPnJlbGF0aW9uLCBvcHRpb25zLCBpc1RvcExldmVsKTsK IAkJCQkJCWJyZWFrOwogCQkJCQljYXNlIFJFSU5ERVhfT0JKRUNUX1NDSEVNQToKIAkJCQkJY2Fz ZSBSRUlOREVYX09CSkVDVF9TWVNURU06CkBAIC05NDcsNyArOTc3LDcgQEAgc3RhbmRhcmRfUHJv Y2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10LAogCQkJCQkJCQkJCQkJICAoc3RtdC0+a2lu ZCA9PSBSRUlOREVYX09CSkVDVF9TQ0hFTUEpID8gIlJFSU5ERVggU0NIRU1BIiA6CiAJCQkJCQkJ CQkJCQkgIChzdG10LT5raW5kID09IFJFSU5ERVhfT0JKRUNUX1NZU1RFTSkgPyAiUkVJTkRFWCBT WVNURU0iIDoKIAkJCQkJCQkJCQkJCSAgIlJFSU5ERVggREFUQUJBU0UiKTsKLQkJCQkJCVJlaW5k ZXhNdWx0aXBsZVRhYmxlcyhzdG10LT5uYW1lLCBzdG10LT5raW5kLCBzdG10LT5vcHRpb25zKTsK KwkJCQkJCVJlaW5kZXhNdWx0aXBsZVRhYmxlcyhzdG10LT5uYW1lLCBzdG10LT5raW5kLCBvcHRp b25zKTsKIAkJCQkJCWJyZWFrOwogCQkJCQlkZWZhdWx0OgogCQkJCQkJZWxvZyhFUlJPUiwgInVu cmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4IDhhZmM3ODBh Y2MuLjNhNDNjMDliZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYwor KysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTIyODcsMjEgKzIyODcsMzMgQEAg cHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwgaW50IGVuZCkKIC8q IENMVVNURVIgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDTFVTVEVSIikpCiAJCUNPTVBMRVRFX1dJ VEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX2NsdXN0ZXJhYmxlcywgIlVOSU9OIFNF TEVDVCAnVkVSQk9TRSciKTsKLQllbHNlIGlmIChNYXRjaGVzKCJDTFVTVEVSIiwgIlZFUkJPU0Ui KSkKKwllbHNlIGlmIChNYXRjaGVzKCJDTFVTVEVSIiwgIlZFUkJPU0UiKSB8fAorCQkJIE1hdGNo ZXMoIkNMVVNURVIiLCAiKCopIikpCiAJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5 X2Zvcl9saXN0X29mX2NsdXN0ZXJhYmxlcywgTlVMTCk7CiAJLyogSWYgd2UgaGF2ZSBDTFVTVEVS IDxzdGg+LCB0aGVuIGFkZCAiVVNJTkciICovCi0JZWxzZSBpZiAoTWF0Y2hlcygiQ0xVU1RFUiIs IE1hdGNoQW55RXhjZXB0KCJWRVJCT1NFfE9OIikpKQorCWVsc2UgaWYgKE1hdGNoZXMoIkNMVVNU RVIiLCBNYXRjaEFueUV4Y2VwdCgiVkVSQk9TRXxPTnwofCgqKSIpKSkKIAkJQ09NUExFVEVfV0lU SCgiVVNJTkciKTsKIAkvKiBJZiB3ZSBoYXZlIENMVVNURVIgVkVSQk9TRSA8c3RoPiwgdGhlbiBh ZGQgIlVTSU5HIiAqLwotCWVsc2UgaWYgKE1hdGNoZXMoIkNMVVNURVIiLCAiVkVSQk9TRSIsIE1h dGNoQW55KSkKKwllbHNlIGlmIChNYXRjaGVzKCJDTFVTVEVSIiwgIlZFUkJPU0V8KCopIiwgTWF0 Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJVU0lORyIpOwogCS8qIElmIHdlIGhhdmUgQ0xVU1RF UiA8c3RoPiBVU0lORywgdGhlbiBhZGQgdGhlIGluZGV4IGFzIHdlbGwgKi8KIAllbHNlIGlmIChN YXRjaGVzKCJDTFVTVEVSIiwgTWF0Y2hBbnksICJVU0lORyIpIHx8Ci0JCQkgTWF0Y2hlcygiQ0xV U1RFUiIsICJWRVJCT1NFIiwgTWF0Y2hBbnksICJVU0lORyIpKQorCQkJIE1hdGNoZXMoIkNMVVNU RVIiLCAiVkVSQk9TRXwoKikiLCBNYXRjaEFueSwgIlVTSU5HIikpCiAJewogCQljb21wbGV0aW9u X2luZm9fY2hhcnAgPSBwcmV2Ml93ZDsKIAkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3Jf aW5kZXhfb2ZfdGFibGUpOwogCX0KKwllbHNlIGlmIChIZWFkTWF0Y2hlcygiQ0xVU1RFUiIsICIo KiIpICYmCisJCQkgIUhlYWRNYXRjaGVzKCJDTFVTVEVSIiwgIigqKSIpKQorCXsKKwkJLyoKKwkJ ICogVGhpcyBmaXJlcyBpZiB3ZSdyZSBpbiBhbiB1bmZpbmlzaGVkIHBhcmVudGhlc2l6ZWQgb3B0 aW9uIGxpc3QuCisJCSAqIGdldF9wcmV2aW91c193b3JkcyB0cmVhdHMgYSBjb21wbGV0ZWQgcGFy ZW50aGVzaXplZCBvcHRpb24gbGlzdCBhcworCQkgKiBvbmUgd29yZCwgc28gdGhlIGFib3ZlIHRl c3QgaXMgY29ycmVjdC4KKwkJICovCisJCWlmIChlbmRzX3dpdGgocHJldl93ZCwgJygnKSB8fCBl bmRzX3dpdGgocHJldl93ZCwgJywnKSkKKwkJCUNPTVBMRVRFX1dJVEgoIlZFUkJPU0UiKTsKKwl9 CiAKIC8qIENPTU1FTlQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDT01NRU5UIikpCkBAIC0zNTY1 LDcgKzM1NzcsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0 LCBpbnQgZW5kKQogCQkgKiBvbmUgd29yZCwgc28gdGhlIGFib3ZlIHRlc3QgaXMgY29ycmVjdC4K IAkJICovCiAJCWlmIChlbmRzX3dpdGgocHJldl93ZCwgJygnKSB8fCBlbmRzX3dpdGgocHJldl93 ZCwgJywnKSkKLQkJCUNPTVBMRVRFX1dJVEgoIlZFUkJPU0UiKTsKKwkJCUNPTVBMRVRFX1dJVEgo IkNPTkNVUlJFTlRMWSIsICJWRVJCT1NFIik7CiAJfQogCiAvKiBTRUNVUklUWSBMQUJFTCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY2x1c3Rlci5oIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY2x1c3Rlci5oCmluZGV4IGUwNTg4NDc4MWIuLjY3NGNkY2QwY2QgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NsdXN0ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9jbHVzdGVyLmgKQEAgLTE0LDExICsxNCwxMiBAQAogI2RlZmluZSBDTFVTVEVSX0gKIAog I2luY2x1ZGUgIm5vZGVzL3BhcnNlbm9kZXMuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9k ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgogI2luY2x1ZGUgInV0aWxzL3JlbGNhY2hl LmgiCiAKIAotZXh0ZXJuIHZvaWQgY2x1c3RlcihDbHVzdGVyU3RtdCAqc3RtdCwgYm9vbCBpc1Rv cExldmVsKTsKK2V4dGVybiB2b2lkIGNsdXN0ZXIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDbHVzdGVy U3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKTsKIGV4dGVybiB2b2lkIGNsdXN0ZXJfcmVsKE9p ZCB0YWJsZU9pZCwgT2lkIGluZGV4T2lkLCBpbnQgb3B0aW9ucyk7CiBleHRlcm4gdm9pZCBjaGVj a19pbmRleF9pc19jbHVzdGVyYWJsZShSZWxhdGlvbiBPbGRIZWFwLCBPaWQgaW5kZXhPaWQsCiAJ CQkJCQkJCQkgICBib29sIHJlY2hlY2ssIExPQ0tNT0RFIGxvY2ttb2RlKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAppbmRleCBkMWY5ZWYyOWNhLi5mOTQwYjc0ZjE1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCkBAIC0zMjA3LDcgKzMyMDcsNyBAQCB0eXBlZGVmIHN0cnVjdCBDbHVzdGVyU3RtdAogCU5v ZGVUYWcJCXR5cGU7CiAJUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiBiZWluZyBp bmRleGVkLCBvciBOVUxMIGlmIGFsbCAqLwogCWNoYXIJICAgKmluZGV4bmFtZTsJCS8qIG9yaWdp bmFsIGluZGV4IGRlZmluZWQgKi8KLQlpbnQJCQlvcHRpb25zOwkJLyogT1Igb2YgQ2x1c3Rlck9w dGlvbiBmbGFncyAqLworCUxpc3QJCSpwYXJhbXM7CQkvKiBsaXN0IG9mIERlZkVsZW0gbm9kZXMg Ki8KIH0gQ2x1c3RlclN0bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMzNjgs NyArMzM2OCw3IEBAIHR5cGVkZWYgc3RydWN0IFJlaW5kZXhTdG10CiAJCQkJCQkJCSAqIGV0Yy4g Ki8KIAlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIFRhYmxlIG9yIGluZGV4IHRvIHJlaW5kZXgg Ki8KIAljb25zdCBjaGFyICpuYW1lOwkJCS8qIG5hbWUgb2YgZGF0YWJhc2UgdG8gcmVpbmRleCAq LwotCWludAkJCW9wdGlvbnM7CQkvKiBSZWluZGV4IG9wdGlvbnMgZmxhZ3MgKi8KKwlMaXN0CQkq cGFyYW1zOwkJLyogbGlzdCBvZiBEZWZFbGVtIG5vZGVzICovCiB9IFJlaW5kZXhTdG10OwogCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpiYXNlLWNvbW1pdDogODczZWE5ZWU2OTJlNzgyOTYx NGY5MTM2ODVkYjU0MGIxNzk5OGJhNgotLSAKMi4yMC4xCgo= --=_680b1b8a9b2a839baed301219b4ad717--