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 1nHlvS-0002kD-5Z for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Feb 2022 12:18:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nHlvQ-00024r-Rf for pgsql-hackers@arkaria.postgresql.org; Wed, 09 Feb 2022 12:18:20 +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 1nHlvQ-00024i-13 for pgsql-hackers@lists.postgresql.org; Wed, 09 Feb 2022 12:18:20 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nHlvK-0007g4-W8 for pgsql-hackers@postgresql.org; Wed, 09 Feb 2022 12:18:19 +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 AC2F821C2A33 for ; Wed, 9 Feb 2022 15:18:12 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1644409092; bh=1VvdT/hiTwRwgazRBw6OONXYUsVX0uDbFWTrl6fukMk=; h=Date:From:To:Subject; b=qLgqv+qITQ1dxyz5Cy6n6RW6ISieD6B5eVXo0whZ7m0VItxpVQ1IbUlZXzwQkW5wS 3/TEtUojb5Y9oEUZNa3xgZEKg7jMUwHHiKbRItZX1dGlYc8C8QWT5JkIs9hLFpLqiL 0FPtjQO2Fiz2pO28h726kw4i75JR0vm5gH2knNyE= MIME-Version: 1.0 Date: Wed, 09 Feb 2022 15:18:12 +0300 From: Alexander Pyhalov To: Pgsql Hackers Subject: Justin Pryzby User-Agent: Roundcube Webmail/1.4.11 Message-ID: X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_3a27ead28e5009f0ee3b7fd72cc24520" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_3a27ead28e5009f0ee3b7fd72cc24520 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hi. I've looked at patches, introducing CREATE INDEX CONCURRENTLY for partitioned tables - https://www.postgresql.org/message-id/flat/20210226182019.GU20769%40telsasoft.com#da169a0a518bf8121604437d9ab053b3 . The thread didn't have any activity for a year. I've rebased patches and tried to fix issues I've seen. I've fixed reference after table_close() in the first patch (can be seen while building with CPPFLAGS='-DRELCACHE_FORCE_RELEASE'). Also merged old 0002-f-progress-reporting.patch and 0003-WIP-Add-SKIPVALID-flag-for-more-integration.patch. It seems the first one didn't really fixed issue with progress report (as ReindexRelationConcurrently() uses pgstat_progress_start_command(), which seems to mess up the effect of this command in DefineIndex()). Also third patch completely removes attempts to report create index progress correctly (reindex reports about individual commands, not the whole CREATE INDEX). So I've added 0003-Try-to-fix-create-index-progress-report.patch, which tries to fix the mess with create index progress report. It introduces new flag REINDEXOPT_REPORT_PART to ReindexParams->options. Given this flag, ReindexRelationConcurrently() will not report about individual operations, but ReindexMultipleInternal() will report about reindexed partitions. To make the issue worse, some partitions can be handled in ReindexPartitions() and ReindexMultipleInternal() should know how many to correctly update PROGRESS_CREATEIDX_PARTITIONS_DONE counter, so we pass the number of handled partitions to it. I also have question if in src/backend/commands/indexcmds.c:1239 1240 oldcontext = MemoryContextSwitchTo(ind_context); 1239 childidxs = RelationGetIndexList(childrel); 1241 attmap = 1242 build_attrmap_by_name(RelationGetDescr(childrel), 1243 parentDesc); 1244 MemoryContextSwitchTo(oldcontext); should live in ind_context, given that we iterate over this list of oids and immediately free it, but at least it shouldn't do much harm. -- Best regards, Alexander Pyhalov, Postgres Professional --=_3a27ead28e5009f0ee3b7fd72cc24520 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0001-Allow-CREATE-INDEX-CONCURRENTLY-on-partitioned-table.patch Content-Disposition: attachment; filename=0001-Allow-CREATE-INDEX-CONCURRENTLY-on-partitioned-table.patch; size=14648 RnJvbSBhZGY0MjQyNzA4YzJkODYwOTJmN2M5NDJjN2JiYjZlZjEyZTY4OTFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlAdGVsc2Fzb2Z0LmNvbT4K RGF0ZTogTW9uLCA3IEZlYiAyMDIyIDEwOjI4OjQyICswMzAwClN1YmplY3Q6IFtQQVRDSCAxLzRd IEFsbG93IENSRUFURSBJTkRFWCBDT05DVVJSRU5UTFkgb24gcGFydGl0aW9uZWQgdGFibGUKCjAw MDEtQWxsb3ctQ1JFQVRFLUlOREVYLUNPTkNVUlJFTlRMWS1vbi1wYXJ0aXRpb25lZC10YWJsZS5w YXRjaCBmcm9tCmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvMjAyMTAyMjYx ODIwMTkuR1UyMDc2OUB0ZWxzYXNvZnQuY29tCgpBZGRlZCBmaXggLSByZWwgd2FzIHVzZWQgYWZ0 ZXIgdGFibGVfY2xvc2UoKQotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2luZGV4LnNnbWwg ICAgIHwgICA5IC0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgICB8IDE1 MCArKysrKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu ZGV4aW5nLm91dCB8ICA2MCArKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGlu Zy5zcWwgICAgICB8ICAxOCArKy0KIDQgZmlsZXMgY2hhbmdlZCwgMTgxIGluc2VydGlvbnMoKyks IDU2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX2lu ZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCmluZGV4IDkxZWFh YWJjOTBmLi4yMGM4YWYzZTk5NiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf aW5kZXguc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9pbmRleC5zZ21sCkBAIC02 ODgsMTUgKzY4OCw2IEBAIEluZGV4ZXM6CiAgICAgY2Fubm90LgogICAgPC9wYXJhPgogCi0gICA8 cGFyYT4KLSAgICBDb25jdXJyZW50IGJ1aWxkcyBmb3IgaW5kZXhlcyBvbiBwYXJ0aXRpb25lZCB0 YWJsZXMgYXJlIGN1cnJlbnRseSBub3QKLSAgICBzdXBwb3J0ZWQuICBIb3dldmVyLCB5b3UgbWF5 IGNvbmN1cnJlbnRseSBidWlsZCB0aGUgaW5kZXggb24gZWFjaAotICAgIHBhcnRpdGlvbiBpbmRp dmlkdWFsbHkgYW5kIHRoZW4gZmluYWxseSBjcmVhdGUgdGhlIHBhcnRpdGlvbmVkIGluZGV4Ci0g ICAgbm9uLWNvbmN1cnJlbnRseSBpbiBvcmRlciB0byByZWR1Y2UgdGhlIHRpbWUgd2hlcmUgd3Jp dGVzIHRvIHRoZQotICAgIHBhcnRpdGlvbmVkIHRhYmxlIHdpbGwgYmUgbG9ja2VkIG91dC4gIElu IHRoaXMgY2FzZSwgYnVpbGRpbmcgdGhlCi0gICAgcGFydGl0aW9uZWQgaW5kZXggaXMgYSBtZXRh ZGF0YSBvbmx5IG9wZXJhdGlvbi4KLSAgIDwvcGFyYT4KLQogICA8L3JlZnNlY3QyPgogIDwvcmVm c2VjdDE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggNTYwZGNjODdhMmMuLjM5YjEx YWViYzAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtNjgsNiArNjgsNyBAQAogCiAK IC8qIG5vbi1leHBvcnQgZnVuY3Rpb24gcHJvdG90eXBlcyAqLworc3RhdGljIHZvaWQgcmVpbmRl eF9pbnZhbGlkX2NoaWxkX2luZGV4ZXMoT2lkIGluZGV4UmVsYXRpb25JZCk7CiBzdGF0aWMgYm9v bCBDb21wYXJlT3BjbGFzc09wdGlvbnMoRGF0dW0gKm9wdHMxLCBEYXR1bSAqb3B0czIsIGludCBu YXR0cyk7CiBzdGF0aWMgdm9pZCBDaGVja1ByZWRpY2F0ZShFeHByICpwcmVkaWNhdGUpOwogc3Rh dGljIHZvaWQgQ29tcHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCkBAIC02NzAs MTcgKzY3MSw2IEBAIERlZmluZUluZGV4KE9pZCByZWxhdGlvbklkLAogCXBhcnRpdGlvbmVkID0g cmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRTsKIAlpZiAo cGFydGl0aW9uZWQpCiAJewotCQkvKgotCQkgKiBOb3RlOiB3ZSBjaGVjayAnc3RtdC0+Y29uY3Vy cmVudCcgcmF0aGVyIHRoYW4gJ2NvbmN1cnJlbnQnLCBzbyB0aGF0Ci0JCSAqIHRoZSBlcnJvciBp cyB0aHJvd24gYWxzbyBmb3IgdGVtcG9yYXJ5IHRhYmxlcy4gIFNlZW1zIGJldHRlciB0byBiZQot CQkgKiBjb25zaXN0ZW50LCBldmVuIHRob3VnaCB3ZSBjb3VsZCBkbyBpdCBvbiB0ZW1wb3Jhcnkg dGFibGUgYmVjYXVzZQotCQkgKiB3ZSdyZSBub3QgYWN0dWFsbHkgZG9pbmcgaXQgY29uY3VycmVu dGx5LgotCQkgKi8KLQkJaWYgKHN0bXQtPmNvbmN1cnJlbnQpCi0JCQllcmVwb3J0KEVSUk9SLAot CQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCSBlcnJt c2coImNhbm5vdCBjcmVhdGUgaW5kZXggb24gcGFydGl0aW9uZWQgdGFibGUgXCIlc1wiIGNvbmN1 cnJlbnRseSIsCi0JCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIAkJaWYg KHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUo RVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLApAQCAtMTExOSw2ICsxMTA5LDExIEBAIERl ZmluZUluZGV4KE9pZCByZWxhdGlvbklkLAogCQlpZiAocGQtPm5wYXJ0cyAhPSAwKQogCQkJZmxh Z3MgfD0gSU5ERVhfQ1JFQVRFX0lOVkFMSUQ7CiAJfQorCWVsc2UgaWYgKGNvbmN1cnJlbnQgJiYg T2lkSXNWYWxpZChwYXJlbnRJbmRleElkKSkKKwl7CisJCS8qIElmIGNvbmN1cnJlbnQsIGluaXRp YWxseSBidWlsZCBpbmRleCBwYXJ0aXRpb25zIGFzICJpbnZhbGlkIiAqLworCQlmbGFncyB8PSBJ TkRFWF9DUkVBVEVfSU5WQUxJRDsKKwl9CiAKIAlpZiAoc3RtdC0+ZGVmZXJyYWJsZSkKIAkJY29u c3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJMRTsKQEAgLTExNzQsMTgg KzExNjksMzAgQEAgRGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQsCiAJCXBhcnRkZXNjID0gUmVs YXRpb25HZXRQYXJ0aXRpb25EZXNjKHJlbCwgdHJ1ZSk7CiAJCWlmICgoIXN0bXQtPnJlbGF0aW9u IHx8IHN0bXQtPnJlbGF0aW9uLT5pbmgpICYmIHBhcnRkZXNjLT5ucGFydHMgPiAwKQogCQl7CisJ CQkvKgorCQkJICogTmVlZCB0byBjbG9zZSB0aGUgcmVsYXRpb24gYmVmb3JlIHJlY3Vyc2luZyBp bnRvIGNoaWxkcmVuLCBzbworCQkJICogY29weSBuZWVkZWQgZGF0YSBpbnRvIGEgbG9uZ2xpdmVk IGNvbnRleHQuCisJCQkgKi8KKworCQkJTWVtb3J5Q29udGV4dAlpbmRfY29udGV4dCA9IEFsbG9j U2V0Q29udGV4dENyZWF0ZShQb3J0YWxDb250ZXh0LCAiQ1JFQVRFIElOREVYIiwKKwkJCQkJQUxM T0NTRVRfREVGQVVMVF9TSVpFUyk7CisJCQlNZW1vcnlDb250ZXh0CW9sZGNvbnRleHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oaW5kX2NvbnRleHQpOwogCQkJaW50CQkJbnBhcnRzID0gcGFydGRl c2MtPm5wYXJ0czsKIAkJCU9pZAkJICAgKnBhcnRfb2lkcyA9IHBhbGxvYyhzaXplb2YoT2lkKSAq IG5wYXJ0cyk7CiAJCQlib29sCQlpbnZhbGlkYXRlX3BhcmVudCA9IGZhbHNlOwogCQkJVHVwbGVE ZXNjCXBhcmVudERlc2M7CiAJCQlPaWQJCSAgICpvcGZhbU9pZHM7CisJCQljaGFyCQkqcmVsbmFt ZTsKIAogCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhf UEFSVElUSU9OU19UT1RBTCwKIAkJCQkJCQkJCQkgbnBhcnRzKTsKIAogCQkJbWVtY3B5KHBhcnRf b2lkcywgcGFydGRlc2MtPm9pZHMsIHNpemVvZihPaWQpICogbnBhcnRzKTsKKwkJCXBhcmVudERl c2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5KFJlbGF0aW9uR2V0RGVzY3IocmVsKSk7CisJCQlyZWxu YW1lID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsKKwkJCXRhYmxlX2Ns b3NlKHJlbCwgTm9Mb2NrKTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsK IAotCQkJcGFyZW50RGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAkJCW9wZmFtT2lkcyA9 IHBhbGxvYyhzaXplb2YoT2lkKSAqIG51bWJlck9mS2V5QXR0cmlidXRlcyk7CiAJCQlmb3IgKGkg PSAwOyBpIDwgbnVtYmVyT2ZLZXlBdHRyaWJ1dGVzOyBpKyspCiAJCQkJb3BmYW1PaWRzW2ldID0g Z2V0X29wY2xhc3NfZmFtaWx5KGNsYXNzT2JqZWN0SWRbaV0pOwpAQCAtMTIyMCwxOCArMTIyNywy MCBAQCBEZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwKIAkJCQkJCWVyZXBvcnQoRVJST1IsCiAJ CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAogCQkJCQkJCQkgZXJy bXNnKCJjYW5ub3QgY3JlYXRlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRpb25lZCB0YWJsZSBcIiVz XCIiLAotCQkJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpLAorCQkJCQkJCQkJ CXJlbG5hbWUpLAogCQkJCQkJCQkgZXJyZGV0YWlsKCJUYWJsZSBcIiVzXCIgY29udGFpbnMgcGFy dGl0aW9ucyB0aGF0IGFyZSBmb3JlaWduIHRhYmxlcy4iLAotCQkJCQkJCQkJCSAgIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQkJCQkJCQkJICAgcmVsbmFtZSkpKTsKIAogCQkJ CQl0YWJsZV9jbG9zZShjaGlsZHJlbCwgbG9ja21vZGUpOwogCQkJCQljb250aW51ZTsKIAkJCQl9 CiAKKwkJCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGluZF9jb250ZXh0KTsK IAkJCQljaGlsZGlkeHMgPSBSZWxhdGlvbkdldEluZGV4TGlzdChjaGlsZHJlbCk7CiAJCQkJYXR0 bWFwID0KIAkJCQkJYnVpbGRfYXR0cm1hcF9ieV9uYW1lKFJlbGF0aW9uR2V0RGVzY3IoY2hpbGRy ZWwpLAogCQkJCQkJCQkJCSAgcGFyZW50RGVzYyk7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGNvbnRleHQpOwogCiAJCQkJZm9yZWFjaChjZWxsLCBjaGlsZGlkeHMpCiAJCQkJewpAQCAt MTMwMiwxMCArMTMxMSwxNCBAQCBEZWZpbmVJbmRleChPaWQgcmVsYXRpb25JZCwKIAkJCQkgKi8K IAkJCQlpZiAoIWZvdW5kKQogCQkJCXsKLQkJCQkJSW5kZXhTdG10ICAqY2hpbGRTdG10ID0gY29w eU9iamVjdChzdG10KTsKKwkJCQkJSW5kZXhTdG10ICAqY2hpbGRTdG10OwogCQkJCQlib29sCQlm b3VuZF93aG9sZV9yb3c7CiAJCQkJCUxpc3RDZWxsICAgKmxjOwogCisJCQkJCW9sZGNvbnRleHQg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5kX2NvbnRleHQpOworCQkJCQljaGlsZFN0bXQgPSBj b3B5T2JqZWN0KHN0bXQpOworCQkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CisKIAkJCQkJLyoKIAkJCQkJICogV2UgY2FuJ3QgdXNlIHRoZSBzYW1lIGluZGV4IG5hbWUgZm9y IHRoZSBjaGlsZCBpbmRleCwKIAkJCQkJICogc28gY2xlYXIgaWR4bmFtZSB0byBsZXQgdGhlIHJl Y3Vyc2l2ZSBpbnZvY2F0aW9uIGNob29zZQpAQCAtMTM1NywxMiArMTM3MCwyMSBAQCBEZWZpbmVJ bmRleChPaWQgcmVsYXRpb25JZCwKIAkJCQkJCQkJY3JlYXRlZENvbnN0cmFpbnRJZCwKIAkJCQkJ CQkJaXNfYWx0ZXJfdGFibGUsIGNoZWNrX3JpZ2h0cywgY2hlY2tfbm90X2luX3VzZSwKIAkJCQkJ CQkJc2tpcF9idWlsZCwgcXVpZXQpOworCQkJCQlpZiAoY29uY3VycmVudCkKKwkJCQkJeworCQkJ CQkJUG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCQkJCVB1c2hBY3RpdmVTbmFwc2hvdChHZXRUcmFu c2FjdGlvblNuYXBzaG90KCkpOworCQkJCQkJaW52YWxpZGF0ZV9wYXJlbnQgPSB0cnVlOworCQkJ CQl9CiAJCQkJfQogCi0JCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19D UkVBVEVJRFhfUEFSVElUSU9OU19ET05FLAotCQkJCQkJCQkJCQkgaSArIDEpOworCQkJCS8qIEZv ciBjb25jdXJyZW50IGJ1aWxkLCB0aGlzIGlzIGEgY2F0YWxvZy1vbmx5IHN0YWdlICovCisJCQkJ aWYgKCFjb25jdXJyZW50KQorCQkJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX0RPTkUsCisJCQkJCQkJCQkJCQkgaSArIDEpOwogCQkJ CWZyZWVfYXR0cm1hcChhdHRtYXApOwogCQkJfQorCQkJcGZyZWUocmVsbmFtZSk7CiAKIAkJCS8q CiAJCQkgKiBUaGUgcGdfaW5kZXggcm93IHdlIGluc2VydGVkIGZvciB0aGlzIGluZGV4IHdhcyBt YXJrZWQKQEAgLTEzNzAsNDEgKzEzOTIsMzMgQEAgRGVmaW5lSW5kZXgoT2lkIHJlbGF0aW9uSWQs CiAJCQkgKiBpbnZhbGlkLCB0aGlzIGlzIGluY29ycmVjdCwgc28gdXBkYXRlIG91ciByb3cgdG8g aW52YWxpZCB0b28uCiAJCQkgKi8KIAkJCWlmIChpbnZhbGlkYXRlX3BhcmVudCkKLQkJCXsKLQkJ CQlSZWxhdGlvbglwZ19pbmRleCA9IHRhYmxlX29wZW4oSW5kZXhSZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKLQkJCQlIZWFwVHVwbGUJdHVwLAotCQkJCQkJCW5ld3R1cDsKLQotCQkJCXR1 cCA9IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElELAotCQkJCQkJCQkJICBPYmplY3RJZEdldERh dHVtKGluZGV4UmVsYXRpb25JZCkpOwotCQkJCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQot CQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLAotCQkJ CQkJIGluZGV4UmVsYXRpb25JZCk7Ci0JCQkJbmV3dHVwID0gaGVhcF9jb3B5dHVwbGUodHVwKTsK LQkJCQkoKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVChuZXd0dXApKS0+aW5kaXN2YWxpZCA9IGZh bHNlOwotCQkJCUNhdGFsb2dUdXBsZVVwZGF0ZShwZ19pbmRleCwgJnR1cC0+dF9zZWxmLCBuZXd0 dXApOwotCQkJCVJlbGVhc2VTeXNDYWNoZSh0dXApOwotCQkJCXRhYmxlX2Nsb3NlKHBnX2luZGV4 LCBSb3dFeGNsdXNpdmVMb2NrKTsKLQkJCQloZWFwX2ZyZWV0dXBsZShuZXd0dXApOwotCQkJfQot CQl9CisJCQkJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVsYXRpb25JZCwgSU5ERVhfRFJP UF9DTEVBUl9WQUxJRCk7CisJCX0gZWxzZQorCQkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwog CiAJCS8qCiAJCSAqIEluZGV4ZXMgb24gcGFydGl0aW9uZWQgdGFibGVzIGFyZSBub3QgdGhlbXNl bHZlcyBidWlsdCwgc28gd2UncmUKIAkJICogZG9uZSBoZXJlLgogCQkgKi8KLQkJdGFibGVfY2xv c2UocmVsLCBOb0xvY2spOwogCQlpZiAoIU9pZElzVmFsaWQocGFyZW50SW5kZXhJZCkpCisJCXsK KwkJCWlmIChjb25jdXJyZW50KQorCQkJCXJlaW5kZXhfaW52YWxpZF9jaGlsZF9pbmRleGVzKGlu ZGV4UmVsYXRpb25JZCk7CisKIAkJCXBnc3RhdF9wcm9ncmVzc19lbmRfY29tbWFuZCgpOworCQl9 CisKIAkJcmV0dXJuIGFkZHJlc3M7CiAJfQogCi0JaWYgKCFjb25jdXJyZW50KQorCWlmICghY29u Y3VycmVudCB8fCBPaWRJc1ZhbGlkKHBhcmVudEluZGV4SWQpKQogCXsKLQkJLyogQ2xvc2UgdGhl IGhlYXAgYW5kIHdlJ3JlIGRvbmUsIGluIHRoZSBub24tY29uY3VycmVudCBjYXNlICovCi0JCXRh YmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKwkJLyoKKwkJICogV2UncmUgZG9uZSBpZiB0aGlzIGlz IHRoZSB0b3AtbGV2ZWwgaW5kZXgsCisJCSAqIG9yIHRoZSBjYXRhbG9nLW9ubHkgcGhhc2Ugb2Yg YSBwYXJ0aXRpb24gYnVpbHQgY29uY3VycmVudGx5CisJCSAqLwogCi0JCS8qIElmIHRoaXMgaXMg dGhlIHRvcC1sZXZlbCBpbmRleCwgd2UncmUgZG9uZS4gKi8KKwkJdGFibGVfY2xvc2UocmVsLCBO b0xvY2spOwogCQlpZiAoIU9pZElzVmFsaWQocGFyZW50SW5kZXhJZCkpCiAJCQlwZ3N0YXRfcHJv Z3Jlc3NfZW5kX2NvbW1hbmQoKTsKIApAQCAtMTYxNyw2ICsxNjMxLDYyIEBAIERlZmluZUluZGV4 KE9pZCByZWxhdGlvbklkLAogCXJldHVybiBhZGRyZXNzOwogfQogCisvKiBSZWluZGV4IGludmFs aWQgY2hpbGQgaW5kZXhlcyBjcmVhdGVkIGVhcmxpZXIgKi8KK3N0YXRpYyB2b2lkCityZWluZGV4 X2ludmFsaWRfY2hpbGRfaW5kZXhlcyhPaWQgaW5kZXhSZWxhdGlvbklkKQoreworCUxpc3RDZWxs ICpsYzsKKwlpbnQJCW5wYXJ0ID0gMDsKKwlSZWluZGV4UGFyYW1zIHBhcmFtcyA9IHsKKwkJLm9w dGlvbnMgPSBSRUlOREVYT1BUX0NPTkNVUlJFTlRMWQorCX07CisKKwlNZW1vcnlDb250ZXh0CWlu ZF9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFBvcnRhbENvbnRleHQsICJDUkVBVEUg SU5ERVgiLAorCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJTWVtb3J5Q29udGV4dAlvbGRj b250ZXh0OworCUxpc3QJCSpjaGlsZHMgPSBmaW5kX2luaGVyaXRhbmNlX2NoaWxkcmVuKGluZGV4 UmVsYXRpb25JZCwgU2hhcmVMb2NrKTsKKwlMaXN0CQkqcGFydGl0aW9ucyA9IE5JTDsKKworCVBy ZXZlbnRJblRyYW5zYWN0aW9uQmxvY2sodHJ1ZSwgIlJFSU5ERVggSU5ERVgiKTsKKworCWZvcmVh Y2ggKGxjLCBjaGlsZHMpCisJeworCQlPaWQJCQlwYXJ0b2lkID0gbGZpcnN0X29pZChsYyk7CisK KwkJLyogWFhYOiBuZWVkIHRvIHJldHJvZml0IHByb2dyZXNzIHJlcG9ydGluZyBpbnRvIGl0ICov CisJCS8vIHBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BB UlRJVElPTlNfRE9ORSwKKwkJCQkJCQkJCSAvLyBucGFydCsrKTsKKworCQlpZiAoZ2V0X2luZGV4 X2lzdmFsaWQocGFydG9pZCkgfHwKKwkJCQkhUkVMS0lORF9IQVNfU1RPUkFHRShnZXRfcmVsX3Jl bGtpbmQocGFydG9pZCkpKQorCQkJY29udGludWU7CisKKwkJLyogU2F2ZSBwYXJ0aXRpb24gT0lE ICovCisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaW5kX2NvbnRleHQpOwor CQlwYXJ0aXRpb25zID0gbGFwcGVuZF9vaWQocGFydGl0aW9ucywgcGFydG9pZCk7CisJCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisKKwkvKgorCSAqIFByb2Nlc3MgZWFj aCBwYXJ0aXRpb24gbGlzdGVkIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rpb24uICBOb3RlIHRoYXQK KwkgKiB0aGlzIGNvbW1pdHMgYW5kIHRoZW4gc3RhcnRzIGEgbmV3IHRyYW5zYWN0aW9uIGltbWVk aWF0ZWx5LgorCSAqIFhYWDogc2luY2UgdGhpcyBpcyBkb25lIGluIDIqTiB0cmFuc2FjdGlvbnMs IGl0IGNvdWxkIGp1c3QgYXMgd2VsbAorCSAqIGNhbGwgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVu dGx5IGRpcmVjdGx5CisJICovCisJUmVpbmRleE11bHRpcGxlSW50ZXJuYWwocGFydGl0aW9ucywg JnBhcmFtcyk7CisKKwkvKgorCSAqIENJQyBuZWVkcyB0byBtYXJrIGEgcGFydGl0aW9uZWQgaW5k ZXggYXMgVkFMSUQsIHdoaWNoIGl0c2VsZgorCSAqIHJlcXVpcmVzIHNldHRpbmcgUkVBRFksIHdo aWNoIGlzIHVuc2V0IGZvciBDSUMgKGV2ZW4gdGhvdWdoCisJICogaXQncyBtZWFuaW5nbGVzcyBm b3IgYW4gaW5kZXggd2l0aG91dCBzdG9yYWdlKS4KKwkgKiBUaGlzIG11c3QgYmUgZG9uZSBvbmx5 IHdoaWxlIGhvbGRpbmcgYSBsb2NrIHdoaWNoIHByZWNsdWRlcyBhZGRpbmcKKwkgKiBwYXJ0aXRp b25zLgorCSAqIFNlZSBhbHNvOiB2YWxpZGF0ZVBhcnRpdGlvbmVkSW5kZXgoKS4KKwkgKi8KKwlp bmRleF9zZXRfc3RhdGVfZmxhZ3MoaW5kZXhSZWxhdGlvbklkLCBJTkRFWF9DUkVBVEVfU0VUX1JF QURZKTsKKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCWluZGV4X3NldF9zdGF0ZV9mbGFn cyhpbmRleFJlbGF0aW9uSWQsIElOREVYX0NSRUFURV9TRVRfVkFMSUQpOworfQogCiAvKgogICog Q2hlY2tNdXRhYmlsaXR5CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2lu ZGV4aW5nLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CmluZGV4 IDE5M2Y3ODAxOTEyLi5hNGNjYWU1MGRlMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9pbmRleGluZy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRl eGluZy5vdXQKQEAgLTUwLDExICs1MCw2MyBAQCBzZWxlY3QgcmVsbmFtZSwgcmVsa2luZCwgcmVs aGFzc3ViY2xhc3MsIGluaHBhcmVudDo6cmVnY2xhc3MKICg4IHJvd3MpCiAKIGRyb3AgdGFibGUg aWR4cGFydDsKLS0tIFNvbWUgdW5zdXBwb3J0ZWQgZmVhdHVyZXMKKy0tIENJQyBvbiBwYXJ0aXRp b25lZCB0YWJsZQogY3JlYXRlIHRhYmxlIGlkeHBhcnQgKGEgaW50LCBiIGludCwgYyB0ZXh0KSBw YXJ0aXRpb24gYnkgcmFuZ2UgKGEpOwotY3JlYXRlIHRhYmxlIGlkeHBhcnQxIHBhcnRpdGlvbiBv ZiBpZHhwYXJ0IGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwKTsKLWNyZWF0ZSBpbmRleCBjb25j dXJyZW50bHkgb24gaWR4cGFydCAoYSk7Ci1FUlJPUjogIGNhbm5vdCBjcmVhdGUgaW5kZXggb24g cGFydGl0aW9uZWQgdGFibGUgImlkeHBhcnQiIGNvbmN1cnJlbnRseQorY3JlYXRlIHRhYmxlIGlk eHBhcnQxIHBhcnRpdGlvbiBvZiBpZHhwYXJ0IGZvciB2YWx1ZXMgZnJvbSAoMCkgdG8gKDEwKSBw YXJ0aXRpb24gYnkgcmFuZ2UoYSk7CitjcmVhdGUgdGFibGUgaWR4cGFydDExIHBhcnRpdGlvbiBv ZiBpZHhwYXJ0MSBmb3IgdmFsdWVzIGZyb20gKDApIHRvICgxMCkgcGFydGl0aW9uIGJ5IHJhbmdl KGEpOworY3JlYXRlIHRhYmxlIGlkeHBhcnQxMTEgcGFydGl0aW9uIG9mIGlkeHBhcnQxMSBkZWZh dWx0IHBhcnRpdGlvbiBieSByYW5nZShhKTsKK2NyZWF0ZSB0YWJsZSBpZHhwYXJ0MTExMSBwYXJ0 aXRpb24gb2YgaWR4cGFydDExMSBkZWZhdWx0IHBhcnRpdGlvbiBieSByYW5nZShhKTsKK2NyZWF0 ZSB0YWJsZSBpZHhwYXJ0MiBwYXJ0aXRpb24gb2YgaWR4cGFydCBmb3IgdmFsdWVzIGZyb20gKDEw KSB0byAoMjApOworaW5zZXJ0IGludG8gaWR4cGFydDIgdmFsdWVzKDEwKSwoMTApOyAtLSBub3Qg dW5pcXVlCitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBhcnQgKGEpOyAtLSBwYXJ0 aXRpb25lZAorY3JlYXRlIGluZGV4IGNvbmN1cnJlbnRseSBvbiBpZHhwYXJ0MSAoYSk7IC0tIHBh cnRpdGlvbmVkIGFuZCBwYXJ0aXRpb24KK2NyZWF0ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4 cGFydDExIChhKTsgLS0gcGFydGl0aW9uZWQgYW5kIHBhcnRpdGlvbiwgd2l0aCBubyBsZWF2ZXMK K2NyZWF0ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydDIgKGEpOyAtLSBsZWFmCitjcmVh dGUgdW5pcXVlIGluZGV4IGNvbmN1cnJlbnRseSBvbiBpZHhwYXJ0IChhKTsgLS0gcGFydGl0aW9u ZWQsIHVuaXF1ZSBmYWlsdXJlCitFUlJPUjogIGNvdWxkIG5vdCBjcmVhdGUgdW5pcXVlIGluZGV4 ICJpZHhwYXJ0Ml9hX2lkeDJfY2NuZXciCitERVRBSUw6ICBLZXkgKGEpPSgxMCkgaXMgZHVwbGlj YXRlZC4KK1xkIGlkeHBhcnQKKyAgICAgICAgUGFydGl0aW9uZWQgdGFibGUgInB1YmxpYy5pZHhw YXJ0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBh ICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBiICAgICAgfCBpbnRl Z2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBjICAgICAgfCB0ZXh0ICAgIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChhKQorSW5kZXhlczoKKyAg ICAiaWR4cGFydF9hX2lkeCIgYnRyZWUgKGEpCisgICAgImlkeHBhcnRfYV9pZHgxIiBVTklRVUUs IGJ0cmVlIChhKSBJTlZBTElECitOdW1iZXIgb2YgcGFydGl0aW9uczogMiAoVXNlIFxkKyB0byBs aXN0IHRoZW0uKQorCitcZCBpZHhwYXJ0MQorICAgICAgICBQYXJ0aXRpb25lZCB0YWJsZSAicHVi bGljLmlkeHBhcnQxIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8 IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBiICAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBjICAgICAgfCB0ZXh0ICAg IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1BhcnRpdGlvbiBvZjogaWR4cGFydCBGT1IgVkFM VUVTIEZST00gKDApIFRPICgxMCkKK1BhcnRpdGlvbiBrZXk6IFJBTkdFIChhKQorSW5kZXhlczoK KyAgICAiaWR4cGFydDFfYV9pZHgiIGJ0cmVlIChhKSBJTlZBTElECisgICAgImlkeHBhcnQxX2Ff aWR4MSIgYnRyZWUgKGEpCisgICAgImlkeHBhcnQxX2FfaWR4MiIgVU5JUVVFLCBidHJlZSAoYSkg SU5WQUxJRAorTnVtYmVyIG9mIHBhcnRpdGlvbnM6IDEgKFVzZSBcZCsgdG8gbGlzdCB0aGVtLikK KworXGQgaWR4cGFydDIKKyAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5pZHhwYXJ0MiIKKyBD b2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgYSAgICAgIHwg aW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgYiAgICAgIHwgaW50ZWdlciB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgYyAgICAgIHwgdGV4dCAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IGlkeHBhcnQgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8g KDIwKQorSW5kZXhlczoKKyAgICAiaWR4cGFydDJfYV9pZHgiIGJ0cmVlIChhKQorICAgICJpZHhw YXJ0Ml9hX2lkeDEiIGJ0cmVlIChhKQorICAgICJpZHhwYXJ0Ml9hX2lkeDIiIFVOSVFVRSwgYnRy ZWUgKGEpIElOVkFMSUQKKyAgICAiaWR4cGFydDJfYV9pZHgyX2NjbmV3IiBVTklRVUUsIGJ0cmVl IChhKSBJTlZBTElECisKIGRyb3AgdGFibGUgaWR4cGFydDsKIC0tIFZlcmlmeSBidWdmaXggd2l0 aCBxdWVyeSBvbiBpbmRleGVkIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggbm8gcGFydGl0aW9ucwog LS0gaHR0cHM6Ly9wb3N0Z3IuZXMvbS8yMDE4MDEyNDE2MjAwNi5wbWFwZml6bmhnbmd3dGpmQGFs dmhlcnJlLnBnc3FsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5zcWwKaW5kZXggNDJmMzk4YjY3YzIu LjNkNGI2ZTliYzk1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbmRleGluZy5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhpbmcuc3FsCkBAIC0yOSwxMCArMjks MjIgQEAgc2VsZWN0IHJlbG5hbWUsIHJlbGtpbmQsIHJlbGhhc3N1YmNsYXNzLCBpbmhwYXJlbnQ6 OnJlZ2NsYXNzCiAJd2hlcmUgcmVsbmFtZSBsaWtlICdpZHhwYXJ0JScgb3JkZXIgYnkgcmVsbmFt ZTsKIGRyb3AgdGFibGUgaWR4cGFydDsKIAotLS0gU29tZSB1bnN1cHBvcnRlZCBmZWF0dXJlcwor LS0gQ0lDIG9uIHBhcnRpdGlvbmVkIHRhYmxlCiBjcmVhdGUgdGFibGUgaWR4cGFydCAoYSBpbnQs IGIgaW50LCBjIHRleHQpIHBhcnRpdGlvbiBieSByYW5nZSAoYSk7Ci1jcmVhdGUgdGFibGUgaWR4 cGFydDEgcGFydGl0aW9uIG9mIGlkeHBhcnQgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApOwot Y3JlYXRlIGluZGV4IGNvbmN1cnJlbnRseSBvbiBpZHhwYXJ0IChhKTsKK2NyZWF0ZSB0YWJsZSBp ZHhwYXJ0MSBwYXJ0aXRpb24gb2YgaWR4cGFydCBmb3IgdmFsdWVzIGZyb20gKDApIHRvICgxMCkg cGFydGl0aW9uIGJ5IHJhbmdlKGEpOworY3JlYXRlIHRhYmxlIGlkeHBhcnQxMSBwYXJ0aXRpb24g b2YgaWR4cGFydDEgZm9yIHZhbHVlcyBmcm9tICgwKSB0byAoMTApIHBhcnRpdGlvbiBieSByYW5n ZShhKTsKK2NyZWF0ZSB0YWJsZSBpZHhwYXJ0MTExIHBhcnRpdGlvbiBvZiBpZHhwYXJ0MTEgZGVm YXVsdCBwYXJ0aXRpb24gYnkgcmFuZ2UoYSk7CitjcmVhdGUgdGFibGUgaWR4cGFydDExMTEgcGFy dGl0aW9uIG9mIGlkeHBhcnQxMTEgZGVmYXVsdCBwYXJ0aXRpb24gYnkgcmFuZ2UoYSk7CitjcmVh dGUgdGFibGUgaWR4cGFydDIgcGFydGl0aW9uIG9mIGlkeHBhcnQgZm9yIHZhbHVlcyBmcm9tICgx MCkgdG8gKDIwKTsKK2luc2VydCBpbnRvIGlkeHBhcnQyIHZhbHVlcygxMCksKDEwKTsgLS0gbm90 IHVuaXF1ZQorY3JlYXRlIGluZGV4IGNvbmN1cnJlbnRseSBvbiBpZHhwYXJ0IChhKTsgLS0gcGFy dGl0aW9uZWQKK2NyZWF0ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydDEgKGEpOyAtLSBw YXJ0aXRpb25lZCBhbmQgcGFydGl0aW9uCitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9uIGlk eHBhcnQxMSAoYSk7IC0tIHBhcnRpdGlvbmVkIGFuZCBwYXJ0aXRpb24sIHdpdGggbm8gbGVhdmVz CitjcmVhdGUgaW5kZXggY29uY3VycmVudGx5IG9uIGlkeHBhcnQyIChhKTsgLS0gbGVhZgorY3Jl YXRlIHVuaXF1ZSBpbmRleCBjb25jdXJyZW50bHkgb24gaWR4cGFydCAoYSk7IC0tIHBhcnRpdGlv bmVkLCB1bmlxdWUgZmFpbHVyZQorXGQgaWR4cGFydAorXGQgaWR4cGFydDEKK1xkIGlkeHBhcnQy CiBkcm9wIHRhYmxlIGlkeHBhcnQ7CiAKIC0tIFZlcmlmeSBidWdmaXggd2l0aCBxdWVyeSBvbiBp bmRleGVkIHBhcnRpdGlvbmVkIHRhYmxlIHdpdGggbm8gcGFydGl0aW9ucwotLSAKMi4yNS4xCgo= --=_3a27ead28e5009f0ee3b7fd72cc24520 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0002-Add-SKIPVALID-flag-for-more-integration.patch Content-Disposition: attachment; filename=0002-Add-SKIPVALID-flag-for-more-integration.patch; size=4021 RnJvbSBjM2MyYzE0ZTIyYTFkZmQ4MjQ5NWRhOTk4NDJhNWY5NzJkNjU4YTdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlAdGVsc2Fzb2Z0LmNvbT4K RGF0ZTogTW9uLCA3IEZlYiAyMDIyIDEwOjMxOjQwICswMzAwClN1YmplY3Q6IFtQQVRDSCAyLzRd IEFkZCBTS0lQVkFMSUQgZmxhZyBmb3IgbW9yZSBpbnRlZ3JhdGlvbgoKQ29tYmluZWQKMDAwMi1m LXByb2dyZXNzLXJlcG9ydGluZy5wYXRjaCBhbmQKMDAwMy1XSVAtQWRkLVNLSVBWQUxJRC1mbGFn LWZvci1tb3JlLWludGVncmF0aW9uLnBhdGNoIGZyb20KaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5v cmcvbWVzc2FnZS1pZC8yMDIxMDIyNjE4MjAxOS5HVTIwNzY5QHRlbHNhc29mdC5jb20KLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyB8IDU3ICsrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAgICB8ICAxICsKIDIg ZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9pbmRleGNtZHMuYwppbmRleCAzOWIxMWFlYmMwMy4uY2YzZTgwZDViZWQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jCkBAIC0xNjMxLDU5ICsxNjMxLDMzIEBAIERlZmluZUluZGV4KE9p ZCByZWxhdGlvbklkLAogCXJldHVybiBhZGRyZXNzOwogfQogCi0vKiBSZWluZGV4IGludmFsaWQg Y2hpbGQgaW5kZXhlcyBjcmVhdGVkIGVhcmxpZXIgKi8KKy8qCisgKiBSZWluZGV4IGludmFsaWQg Y2hpbGQgaW5kZXhlcyBjcmVhdGVkIGVhcmxpZXIgdGhlcmVieSB2YWxpZGF0aW5nCisgKiB0aGUg cGFyZW50IGluZGV4LgorICovCiBzdGF0aWMgdm9pZAogcmVpbmRleF9pbnZhbGlkX2NoaWxkX2lu ZGV4ZXMoT2lkIGluZGV4UmVsYXRpb25JZCkKIHsKLQlMaXN0Q2VsbCAqbGM7Ci0JaW50CQlucGFy dCA9IDA7CiAJUmVpbmRleFBhcmFtcyBwYXJhbXMgPSB7Ci0JCS5vcHRpb25zID0gUkVJTkRFWE9Q VF9DT05DVVJSRU5UTFkKKwkJLm9wdGlvbnMgPSBSRUlOREVYT1BUX0NPTkNVUlJFTlRMWSB8IFJF SU5ERVhPUFRfU0tJUFZBTElECiAJfTsKIAotCU1lbW9yeUNvbnRleHQJaW5kX2NvbnRleHQgPSBB bGxvY1NldENvbnRleHRDcmVhdGUoUG9ydGFsQ29udGV4dCwgIkNSRUFURSBJTkRFWCIsCi0JCQlB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKLQlNZW1vcnlDb250ZXh0CW9sZGNvbnRleHQ7Ci0JTGlz dAkJKmNoaWxkcyA9IGZpbmRfaW5oZXJpdGFuY2VfY2hpbGRyZW4oaW5kZXhSZWxhdGlvbklkLCBT aGFyZUxvY2spOwotCUxpc3QJCSpwYXJ0aXRpb25zID0gTklMOwotCi0JUHJldmVudEluVHJhbnNh Y3Rpb25CbG9jayh0cnVlLCAiUkVJTkRFWCBJTkRFWCIpOwotCi0JZm9yZWFjaCAobGMsIGNoaWxk cykKLQl7Ci0JCU9pZAkJCXBhcnRvaWQgPSBsZmlyc3Rfb2lkKGxjKTsKLQotCQkvKiBYWFg6IG5l ZWQgdG8gcmV0cm9maXQgcHJvZ3Jlc3MgcmVwb3J0aW5nIGludG8gaXQgKi8KLQkJLy8gcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEFSVElUSU9OU19ET05F LAotCQkJCQkJCQkJIC8vIG5wYXJ0KyspOwotCi0JCWlmIChnZXRfaW5kZXhfaXN2YWxpZChwYXJ0 b2lkKSB8fAotCQkJCSFSRUxLSU5EX0hBU19TVE9SQUdFKGdldF9yZWxfcmVsa2luZChwYXJ0b2lk KSkpCi0JCQljb250aW51ZTsKLQotCQkvKiBTYXZlIHBhcnRpdGlvbiBPSUQgKi8KLQkJb2xkY29u dGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhpbmRfY29udGV4dCk7Ci0JCXBhcnRpdGlvbnMg PSBsYXBwZW5kX29pZChwYXJ0aXRpb25zLCBwYXJ0b2lkKTsKLQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGNvbnRleHQpOwotCX0KLQotCS8qCi0JICogUHJvY2VzcyBlYWNoIHBhcnRpdGlvbiBs aXN0ZWQgaW4gYSBzZXBhcmF0ZSB0cmFuc2FjdGlvbi4gIE5vdGUgdGhhdAotCSAqIHRoaXMgY29t bWl0cyBhbmQgdGhlbiBzdGFydHMgYSBuZXcgdHJhbnNhY3Rpb24gaW1tZWRpYXRlbHkuCi0JICog WFhYOiBzaW5jZSB0aGlzIGlzIGRvbmUgaW4gMipOIHRyYW5zYWN0aW9ucywgaXQgY291bGQganVz dCBhcyB3ZWxsCi0JICogY2FsbCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkgZGlyZWN0bHkK LQkgKi8KLQlSZWluZGV4TXVsdGlwbGVJbnRlcm5hbChwYXJ0aXRpb25zLCAmcGFyYW1zKTsKLQog CS8qCiAJICogQ0lDIG5lZWRzIHRvIG1hcmsgYSBwYXJ0aXRpb25lZCBpbmRleCBhcyBWQUxJRCwg d2hpY2ggaXRzZWxmCiAJICogcmVxdWlyZXMgc2V0dGluZyBSRUFEWSwgd2hpY2ggaXMgdW5zZXQg Zm9yIENJQyAoZXZlbiB0aG91Z2gKIAkgKiBpdCdzIG1lYW5pbmdsZXNzIGZvciBhbiBpbmRleCB3 aXRob3V0IHN0b3JhZ2UpLgogCSAqIFRoaXMgbXVzdCBiZSBkb25lIG9ubHkgd2hpbGUgaG9sZGlu ZyBhIGxvY2sgd2hpY2ggcHJlY2x1ZGVzIGFkZGluZwogCSAqIHBhcnRpdGlvbnMuCi0JICogU2Vl IGFsc286IHZhbGlkYXRlUGFydGl0aW9uZWRJbmRleCgpLgogCSAqLworCUNvbW1hbmRDb3VudGVy SW5jcmVtZW50KCk7CiAJaW5kZXhfc2V0X3N0YXRlX2ZsYWdzKGluZGV4UmVsYXRpb25JZCwgSU5E RVhfQ1JFQVRFX1NFVF9SRUFEWSk7CisKKwkvKgorCSAqIFByb2Nlc3MgZWFjaCBwYXJ0aXRpb24g bGlzdGVkIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rpb24uICBOb3RlIHRoYXQKKwkgKiB0aGlzIGNv bW1pdHMgYW5kIHRoZW4gc3RhcnRzIGEgbmV3IHRyYW5zYWN0aW9uIGltbWVkaWF0ZWx5LgorCSAq LworCVJlaW5kZXhQYXJ0aXRpb25zKGluZGV4UmVsYXRpb25JZCwgJnBhcmFtcywgdHJ1ZSk7CisK IAlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwogCWluZGV4X3NldF9zdGF0ZV9mbGFncyhpbmRl eFJlbGF0aW9uSWQsIElOREVYX0NSRUFURV9TRVRfVkFMSUQpOwogfQpAQCAtMzEwNSw2ICszMDc5 LDExIEBAIFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1z LCBib29sIGlzVG9wTGV2ZWwpCiAJCWlmICghUkVMS0lORF9IQVNfU1RPUkFHRShwYXJ0a2luZCkp CiAJCQljb250aW51ZTsKIAorCQkvKiBTa2lwIHZhbGlkIGluZGV4ZXMsIGlmIHJlcXVlc3RlZCAq LworCQlpZiAoKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5ERVhPUFRfU0tJUFZBTElEKSAhPSAwICYm CisJCQkJZ2V0X2luZGV4X2lzdmFsaWQocGFydG9pZCkpCisJCQljb250aW51ZTsKKwogCQlBc3Nl cnQocGFydGtpbmQgPT0gUkVMS0lORF9JTkRFWCB8fAogCQkJICAgcGFydGtpbmQgPT0gUkVMS0lO RF9SRUxBVElPTik7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCBhMWQ2ZTNiNjQ1Zi4uYzMxYjY2YWQw YjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVp bmRleFBhcmFtcwogI2RlZmluZSBSRUlOREVYT1BUX1JFUE9SVF9QUk9HUkVTUyAweDAyIC8qIHJl cG9ydCBwZ3N0YXQgcHJvZ3Jlc3MgKi8KICNkZWZpbmUgUkVJTkRFWE9QVF9NSVNTSU5HX09LIAkw eDA0CS8qIHNraXAgbWlzc2luZyByZWxhdGlvbnMgKi8KICNkZWZpbmUgUkVJTkRFWE9QVF9DT05D VVJSRU5UTFkJMHgwOAkvKiBjb25jdXJyZW50IG1vZGUgKi8KKyNkZWZpbmUgUkVJTkRFWE9QVF9T S0lQVkFMSUQJMHgxMAkvKiBza2lwIHZhbGlkIGluZGV4ZXMgKi8KIAogLyogc3RhdGUgaW5mbyBm b3IgdmFsaWRhdGVfaW5kZXggYnVsa2RlbGV0ZSBjYWxsYmFjayAqLwogdHlwZWRlZiBzdHJ1Y3Qg VmFsaWRhdGVJbmRleFN0YXRlCi0tIAoyLjI1LjEKCg== --=_3a27ead28e5009f0ee3b7fd72cc24520 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0003-Try-to-fix-create-index-progress-report.patch Content-Disposition: attachment; filename=0003-Try-to-fix-create-index-progress-report.patch; size=10669 RnJvbSBmMGI3ZGI2YzQ1YTA3ZWEwYzJkYjExYzI4ZTYxYTIxNzVjOWQyZjVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUdWUsIDggRmViIDIwMjIgMjE6MTU6MDUgKzAzMDAKU3ViamVjdDogW1BB VENIIDMvNF0gVHJ5IHRvIGZpeCBjcmVhdGUgaW5kZXggcHJvZ3Jlc3MgcmVwb3J0CgotLS0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIHwgOTMgKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgIHwgIDEgKwogMiBm aWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2luZGV4Y21kcy5jCmluZGV4IGNmM2U4MGQ1YmVkLi45ODc4MWE3MTFlOCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQgcmVpbmRleF9l cnJvcl9jYWxsYmFjayh2b2lkICphcmdzKTsKIHN0YXRpYyB2b2lkIFJlaW5kZXhQYXJ0aXRpb25z KE9pZCByZWxpZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zLAogCQkJCQkJCSAgYm9vbCBpc1RvcExl dmVsKTsKIHN0YXRpYyB2b2lkIFJlaW5kZXhNdWx0aXBsZUludGVybmFsKExpc3QgKnJlbGlkcywK LQkJCQkJCQkJCVJlaW5kZXhQYXJhbXMgKnBhcmFtcyk7CisJCQkJCQkJCQlSZWluZGV4UGFyYW1z ICpwYXJhbXNtLCBpbnQgbnBhcnQpOwogc3RhdGljIGJvb2wgUmVpbmRleFJlbGF0aW9uQ29uY3Vy cmVudGx5KE9pZCByZWxhdGlvbk9pZCwKIAkJCQkJCQkJCQlSZWluZGV4UGFyYW1zICpwYXJhbXMp Owogc3RhdGljIHZvaWQgdXBkYXRlX3JlbGlzcGFydGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29s IG5ld3ZhbCk7CkBAIC0xMTg0LDYgKzExODQsNyBAQCBEZWZpbmVJbmRleChPaWQgcmVsYXRpb25J ZCwKIAkJCU9pZAkJICAgKm9wZmFtT2lkczsKIAkJCWNoYXIJCSpyZWxuYW1lOwogCisKIAkJCXBn c3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BBUlRJVElPTlNf VE9UQUwsCiAJCQkJCQkJCQkJIG5wYXJ0cyk7CiAKQEAgLTE2MzksNyArMTY0MCw3IEBAIHN0YXRp YyB2b2lkCiByZWluZGV4X2ludmFsaWRfY2hpbGRfaW5kZXhlcyhPaWQgaW5kZXhSZWxhdGlvbklk KQogewogCVJlaW5kZXhQYXJhbXMgcGFyYW1zID0gewotCQkub3B0aW9ucyA9IFJFSU5ERVhPUFRf Q09OQ1VSUkVOVExZIHwgUkVJTkRFWE9QVF9TS0lQVkFMSUQKKwkJLm9wdGlvbnMgPSBSRUlOREVY T1BUX0NPTkNVUlJFTlRMWSB8IFJFSU5ERVhPUFRfU0tJUFZBTElEIHwgUkVJTkRFWE9QVF9SRVBP UlRfUEFSVAogCX07CiAKIAkvKgpAQCAtMjk4Niw3ICsyOTg3LDcgQEAgUmVpbmRleE11bHRpcGxl VGFibGVzKGNvbnN0IGNoYXIgKm9iamVjdE5hbWUsIFJlaW5kZXhPYmplY3RUeXBlIG9iamVjdEtp bmQsCiAJICogUHJvY2VzcyBlYWNoIHJlbGF0aW9uIGxpc3RlZCBpbiBhIHNlcGFyYXRlIHRyYW5z YWN0aW9uLiAgTm90ZSB0aGF0IHRoaXMKIAkgKiBjb21taXRzIGFuZCB0aGVuIHN0YXJ0cyBhIG5l dyB0cmFuc2FjdGlvbiBpbW1lZGlhdGVseS4KIAkgKi8KLQlSZWluZGV4TXVsdGlwbGVJbnRlcm5h bChyZWxpZHMsIHBhcmFtcyk7CisJUmVpbmRleE11bHRpcGxlSW50ZXJuYWwocmVsaWRzLCBwYXJh bXMsIDApOwogCiAJTWVtb3J5Q29udGV4dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogfQpAQCAt MzAyMiw2ICszMDIzLDcgQEAgUmVpbmRleFBhcnRpdGlvbnMoT2lkIHJlbGlkLCBSZWluZGV4UGFy YW1zICpwYXJhbXMsIGJvb2wgaXNUb3BMZXZlbCkKIAljaGFyCQlyZWxraW5kID0gZ2V0X3JlbF9y ZWxraW5kKHJlbGlkKTsKIAljaGFyCSAgICpyZWxuYW1lID0gZ2V0X3JlbF9uYW1lKHJlbGlkKTsK IAljaGFyCSAgICpyZWxuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1l c3BhY2UocmVsaWQpKTsKKwlpbnQJCQlucGFydCA9IDE7CiAJTWVtb3J5Q29udGV4dCByZWluZGV4 X2NvbnRleHQ7CiAJTGlzdAkgICAqaW5ob2lkczsKIAlMaXN0Q2VsbCAgICpsYzsKQEAgLTMwODIs NyArMzA4NCwxMSBAQCBSZWluZGV4UGFydGl0aW9ucyhPaWQgcmVsaWQsIFJlaW5kZXhQYXJhbXMg KnBhcmFtcywgYm9vbCBpc1RvcExldmVsKQogCQkvKiBTa2lwIHZhbGlkIGluZGV4ZXMsIGlmIHJl cXVlc3RlZCAqLwogCQlpZiAoKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5ERVhPUFRfU0tJUFZBTElE KSAhPSAwICYmCiAJCQkJZ2V0X2luZGV4X2lzdmFsaWQocGFydG9pZCkpCisJCXsKKwkJCWlmIChw YXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9QQVJUKQorCQkJCXBnc3RhdF9wcm9n cmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BBUlRJVElPTlNfRE9ORSwgbnBh cnQrKyk7CiAJCQljb250aW51ZTsKKwkJfQogCiAJCUFzc2VydChwYXJ0a2luZCA9PSBSRUxLSU5E X0lOREVYIHx8CiAJCQkgICBwYXJ0a2luZCA9PSBSRUxLSU5EX1JFTEFUSU9OKTsKQEAgLTMwOTcs NyArMzEwMyw3IEBAIFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgUmVpbmRleFBhcmFtcyAq cGFyYW1zLCBib29sIGlzVG9wTGV2ZWwpCiAJICogUHJvY2VzcyBlYWNoIHBhcnRpdGlvbiBsaXN0 ZWQgaW4gYSBzZXBhcmF0ZSB0cmFuc2FjdGlvbi4gIE5vdGUgdGhhdAogCSAqIHRoaXMgY29tbWl0 cyBhbmQgdGhlbiBzdGFydHMgYSBuZXcgdHJhbnNhY3Rpb24gaW1tZWRpYXRlbHkuCiAJICovCi0J UmVpbmRleE11bHRpcGxlSW50ZXJuYWwocGFydGl0aW9ucywgcGFyYW1zKTsKKwlSZWluZGV4TXVs dGlwbGVJbnRlcm5hbChwYXJ0aXRpb25zLCBwYXJhbXMsIG5wYXJ0KTsKIAogCS8qCiAJICogQ2xl YW4gdXAgd29ya2luZyBzdG9yYWdlIC0tLSBub3RlIHdlIG11c3QgZG8gdGhpcyBhZnRlcgpAQCAt MzExNSw3ICszMTIxLDcgQEAgUmVpbmRleFBhcnRpdGlvbnMoT2lkIHJlbGlkLCBSZWluZGV4UGFy YW1zICpwYXJhbXMsIGJvb2wgaXNUb3BMZXZlbCkKICAqIGFuZCBzdGFydHMgYSBuZXcgdHJhbnNh Y3Rpb24gd2hlbiBmaW5pc2hlZC4KICAqLwogc3RhdGljIHZvaWQKLVJlaW5kZXhNdWx0aXBsZUlu dGVybmFsKExpc3QgKnJlbGlkcywgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQorUmVpbmRleE11bHRp cGxlSW50ZXJuYWwoTGlzdCAqcmVsaWRzLCBSZWluZGV4UGFyYW1zICpwYXJhbXMsIGludCBucGFy dCkKIHsKIAlMaXN0Q2VsbCAgICpsOwogCkBAIC0zMjA5LDYgKzMyMTUsOSBAQCBSZWluZGV4TXVs dGlwbGVJbnRlcm5hbChMaXN0ICpyZWxpZHMsIFJlaW5kZXhQYXJhbXMgKnBhcmFtcykKIAkJfQog CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCWlmIChwYXJhbXMtPm9wdGlvbnMg JiBSRUlOREVYT1BUX1JFUE9SVF9QQVJUKQorCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DUkVBVEVJRFhfUEFSVElUSU9OU19ET05FLCBucGFydCsrKTsKIAl9CiAKIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtMzU5MSwxNCArMzYwMCwxOCBAQCBSZWluZGV4 UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBSZWluZGV4UGFyYW1zICpwYXJh bXMpCiAJCWlmIChpbmRleFJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNU RU5DRV9URU1QKQogCQkJZWxvZyhFUlJPUiwgImNhbm5vdCByZWluZGV4IGEgdGVtcG9yYXJ5IHRh YmxlIGNvbmN1cnJlbnRseSIpOwogCi0JCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21tYW5kKFBS T0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLAorCQkvKiBEb24ndCBvdmVyd3JpdGUgQ1JFQVRF IElOREVYIHByb2dyZXNzICovCisJCWlmICghKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5ERVhPUFRf UkVQT1JUX1BBUlQpKQorCQl7CisJCQlwZ3N0YXRfcHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9H UkVTU19DT01NQU5EX0NSRUFURV9JTkRFWCwKIAkJCQkJCQkJCSAgaWR4LT50YWJsZUlkKTsKIAot CQlwcm9ncmVzc192YWxzWzBdID0gUFJPR1JFU1NfQ1JFQVRFSURYX0NPTU1BTkRfUkVJTkRFWF9D T05DVVJSRU5UTFk7Ci0JCXByb2dyZXNzX3ZhbHNbMV0gPSAwOwkvKiBpbml0aWFsaXppbmcgKi8K LQkJcHJvZ3Jlc3NfdmFsc1syXSA9IGlkeC0+aW5kZXhJZDsKLQkJcHJvZ3Jlc3NfdmFsc1szXSA9 IGlkeC0+YW1JZDsKLQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg0LCBwcm9n cmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CisJCQlwcm9ncmVzc192YWxzWzBdID0gUFJPR1JF U1NfQ1JFQVRFSURYX0NPTU1BTkRfUkVJTkRFWF9DT05DVVJSRU5UTFk7CisJCQlwcm9ncmVzc192 YWxzWzFdID0gMDsJLyogaW5pdGlhbGl6aW5nICovCisJCQlwcm9ncmVzc192YWxzWzJdID0gaWR4 LT5pbmRleElkOworCQkJcHJvZ3Jlc3NfdmFsc1szXSA9IGlkeC0+YW1JZDsKKwkJCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3Zh bHMpOworCQl9CiAKIAkJLyogQ2hvb3NlIGEgdGVtcG9yYXJ5IHJlbGF0aW9uIG5hbWUgZm9yIHRo ZSBuZXcgaW5kZXggKi8KIAkJY29uY3VycmVudE5hbWUgPSBDaG9vc2VSZWxhdGlvbk5hbWUoZ2V0 X3JlbF9uYW1lKGlkeC0+aW5kZXhJZCksCkBAIC0zNzE2LDcgKzM3MjksOSBAQCBSZWluZGV4UmVs YXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9uT2lkLCBSZWluZGV4UGFyYW1zICpwYXJhbXMp CiAJICogRGVmaW5lSW5kZXgoKSBmb3IgbW9yZSBkZXRhaWxzLgogCSAqLwogCi0JcGdzdGF0X3By b2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJLyogRG9uJ3Qg b3ZlcndyaXRlIENSRUFURSBJTkRFWCBwcm9ncmVzcyAqLworCWlmICghKHBhcmFtcy0+b3B0aW9u cyAmIFJFSU5ERVhPUFRfUkVQT1JUX1BBUlQpKQorCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJIFBST0dSRVNTX0NSRUFURUlE WF9QSEFTRV9XQUlUXzEpOwogCVdhaXRGb3JMb2NrZXJzTXVsdGlwbGUobG9ja1RhZ3MsIFNoYXJl TG9jaywgdHJ1ZSk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0zNzQ0LDE0ICsz NzU5LDE3IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIFJl aW5kZXhQYXJhbXMgKnBhcmFtcykKIAogCQkvKgogCQkgKiBVcGRhdGUgcHJvZ3Jlc3MgZm9yIHRo ZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKLQkJICogdGFibGUgaW52 b2x2ZWQuCisJCSAqIHRhYmxlIGludm9sdmVkLiAgRG9uJ3Qgb3ZlcndyaXRlIENSRUFURSBJTkRF WCBwcm9ncmVzcy4KIAkJICovCi0JCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21tYW5kKFBST0dS RVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLCBuZXdpZHgtPnRhYmxlSWQpOwotCQlwcm9ncmVzc192 YWxzWzBdID0gUFJPR1JFU1NfQ1JFQVRFSURYX0NPTU1BTkRfUkVJTkRFWF9DT05DVVJSRU5UTFk7 Ci0JCXByb2dyZXNzX3ZhbHNbMV0gPSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfQlVJTEQ7Ci0J CXByb2dyZXNzX3ZhbHNbMl0gPSBuZXdpZHgtPmluZGV4SWQ7Ci0JCXByb2dyZXNzX3ZhbHNbM10g PSBuZXdpZHgtPmFtSWQ7Ci0JCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNCwg cHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMpOworCQlpZiAoIShwYXJhbXMtPm9wdGlvbnMg JiBSRUlOREVYT1BUX1JFUE9SVF9QQVJUKSkKKwkJeworCQkJcGdzdGF0X3Byb2dyZXNzX3N0YXJ0 X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsIG5ld2lkeC0+dGFibGVJZCk7 CisJCQlwcm9ncmVzc192YWxzWzBdID0gUFJPR1JFU1NfQ1JFQVRFSURYX0NPTU1BTkRfUkVJTkRF WF9DT05DVVJSRU5UTFk7CisJCQlwcm9ncmVzc192YWxzWzFdID0gUFJPR1JFU1NfQ1JFQVRFSURY X1BIQVNFX0JVSUxEOworCQkJcHJvZ3Jlc3NfdmFsc1syXSA9IG5ld2lkeC0+aW5kZXhJZDsKKwkJ CXByb2dyZXNzX3ZhbHNbM10gPSBuZXdpZHgtPmFtSWQ7CisJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBk YXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsKKwkJfQog CiAJCS8qIFBlcmZvcm0gY29uY3VycmVudCBidWlsZCBvZiBuZXcgaW5kZXggKi8KIAkJaW5kZXhf Y29uY3VycmVudGx5X2J1aWxkKG5ld2lkeC0+dGFibGVJZCwgbmV3aWR4LT5pbmRleElkKTsKQEAg LTM3NzIsMTAgKzM3OTAsMTEgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KE9pZCByZWxh dGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCSAqCiAJICogRHVyaW5nIHRoaXMgcGhh c2UgdGhlIG9sZCBpbmRleGVzIGNhdGNoIHVwIHdpdGggYW55IG5ldyB0dXBsZXMgdGhhdAogCSAq IHdlcmUgY3JlYXRlZCBkdXJpbmcgdGhlIHByZXZpb3VzIHBoYXNlLiAgU2VlICJwaGFzZSAzIiBp biBEZWZpbmVJbmRleCgpCi0JICogZm9yIG1vcmUgZGV0YWlscy4KKwkgKiBmb3IgbW9yZSBkZXRh aWxzLiBEb24ndCBvdmVyd3JpdGUgQ1JFQVRFIElOREVYIHByb2dyZXNzLgogCSAqLwogCi0JcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJaWYg KCEocGFyYW1zLT5vcHRpb25zICYgUkVJTkRFWE9QVF9SRVBPUlRfUEFSVCkpCisJCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkg UFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dBSVRfMik7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBs ZShsb2NrVGFncywgU2hhcmVMb2NrLCB0cnVlKTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKQEAgLTM4MTAsMTMgKzM4MjksMTYgQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KE9p ZCByZWxhdGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCQkgKiBVcGRhdGUgcHJvZ3Jl c3MgZm9yIHRoZSBpbmRleCB0byBidWlsZCwgd2l0aCB0aGUgY29ycmVjdCBwYXJlbnQKIAkJICog dGFibGUgaW52b2x2ZWQuCiAJCSAqLwotCQlwZ3N0YXRfcHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQ Uk9HUkVTU19DT01NQU5EX0NSRUFURV9JTkRFWCwKKwkJaWYgKCEocGFyYW1zLT5vcHRpb25zICYg UkVJTkRFWE9QVF9SRVBPUlRfUEFSVCkpCisJCXsKKwkJCXBnc3RhdF9wcm9ncmVzc19zdGFydF9j b21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLAogCQkJCQkJCQkJICBuZXdpZHgt PnRhYmxlSWQpOwotCQlwcm9ncmVzc192YWxzWzBdID0gUFJPR1JFU1NfQ1JFQVRFSURYX0NPTU1B TkRfUkVJTkRFWF9DT05DVVJSRU5UTFk7Ci0JCXByb2dyZXNzX3ZhbHNbMV0gPSBQUk9HUkVTU19D UkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYU0NBTjsKLQkJcHJvZ3Jlc3NfdmFsc1syXSA9IG5l d2lkeC0+aW5kZXhJZDsKLQkJcHJvZ3Jlc3NfdmFsc1szXSA9IG5ld2lkeC0+YW1JZDsKLQkJcGdz dGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg0LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jl c3NfdmFscyk7CisJCQlwcm9ncmVzc192YWxzWzBdID0gUFJPR1JFU1NfQ1JFQVRFSURYX0NPTU1B TkRfUkVJTkRFWF9DT05DVVJSRU5UTFk7CisJCQlwcm9ncmVzc192YWxzWzFdID0gUFJPR1JFU1Nf Q1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWFNDQU47CisJCQlwcm9ncmVzc192YWxzWzJdID0g bmV3aWR4LT5pbmRleElkOworCQkJcHJvZ3Jlc3NfdmFsc1szXSA9IG5ld2lkeC0+YW1JZDsKKwkJ CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgsIHBy b2dyZXNzX3ZhbHMpOworCQl9CiAKIAkJdmFsaWRhdGVfaW5kZXgobmV3aWR4LT50YWJsZUlkLCBu ZXdpZHgtPmluZGV4SWQsIHNuYXBzaG90KTsKIApAQCAtMzg0NSw4ICszODY3LDEwIEBAIFJlaW5k ZXhSZWxhdGlvbkNvbmN1cnJlbnRseShPaWQgcmVsYXRpb25PaWQsIFJlaW5kZXhQYXJhbXMgKnBh cmFtcykKIAkJICoKIAkJICogQmVjYXVzZSB3ZSBkb24ndCB0YWtlIGEgc25hcHNob3Qgb3IgWGlk IGluIHRoaXMgdHJhbnNhY3Rpb24sCiAJCSAqIHRoZXJlJ3Mgbm8gbmVlZCB0byBzZXQgdGhlIFBS T0NfSU5fU0FGRV9JQyBmbGFnIGhlcmUuCisJCSAqIERvbid0IG92ZXJ3cml0ZSBDUkVBVEUgSU5E RVggcHJvZ3Jlc3MuCiAJCSAqLwotCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9QSEFTRSwKKwkJaWYgKCEocGFyYW1zLT5vcHRpb25zICYgUkVJTkRFWE9Q VF9SRVBPUlRfUEFSVCkpCisJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRSwKIAkJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfV0FJ VF8zKTsKIAkJV2FpdEZvck9sZGVyU25hcHNob3RzKGxpbWl0WG1pbiwgdHJ1ZSk7CiAKQEAgLTM5 MzIsOSArMzk1NiwxMSBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoT2lkIHJlbGF0aW9u T2lkLCBSZWluZGV4UGFyYW1zICpwYXJhbXMpCiAJICogTWFyayB0aGUgb2xkIGluZGV4ZXMgYXMg ZGVhZC4gIEZpcnN0IHdlIG11c3Qgd2FpdCB1bnRpbCBubyBydW5uaW5nCiAJICogdHJhbnNhY3Rp b24gY291bGQgYmUgdXNpbmcgdGhlIGluZGV4IGZvciBhIHF1ZXJ5LiAgU2VlIGFsc28KIAkgKiBp bmRleF9kcm9wKCkgZm9yIG1vcmUgZGV0YWlscy4KKwkgKiBEb24ndCBvdmVyd3JpdGUgQ1JFQVRF IElOREVYIHByb2dyZXNzLgogCSAqLwogCi0JcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCisJaWYgKCEocGFyYW1zLT5vcHRpb25zICYgUkVJTkRF WE9QVF9SRVBPUlRfUEFSVCkpCisJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ1JFQVRFSURYX1BIQVNFLAogCQkJCQkJCQkgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1dB SVRfNCk7CiAJV2FpdEZvckxvY2tlcnNNdWx0aXBsZShsb2NrVGFncywgQWNjZXNzRXhjbHVzaXZl TG9jaywgdHJ1ZSk7CiAKQEAgLTM5NjUsMTAgKzM5OTEsMTEgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCS8qCiAJ ICogUGhhc2UgNiBvZiBSRUlOREVYIENPTkNVUlJFTlRMWQogCSAqCi0JICogRHJvcCB0aGUgb2xk IGluZGV4ZXMuCisJICogRHJvcCB0aGUgb2xkIGluZGV4ZXMuIERvbid0IG92ZXJ3cml0ZSBDUkVB VEUgSU5ERVggcHJvZ3Jlc3MuCiAJICovCiAKLQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFt KFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRSwKKwlpZiAoIShwYXJhbXMtPm9wdGlvbnMgJiBSRUlO REVYT1BUX1JFUE9SVF9QQVJUKSkKKwkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9H UkVTU19DUkVBVEVJRFhfUEhBU0UsCiAJCQkJCQkJCSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0Vf V0FJVF81KTsKIAlXYWl0Rm9yTG9ja2Vyc011bHRpcGxlKGxvY2tUYWdzLCBBY2Nlc3NFeGNsdXNp dmVMb2NrLCB0cnVlKTsKIApAQCAtNDA0Niw3ICs0MDczLDkgQEAgUmVpbmRleFJlbGF0aW9uQ29u Y3VycmVudGx5KE9pZCByZWxhdGlvbk9pZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zKQogCiAJTWVt b3J5Q29udGV4dERlbGV0ZShwcml2YXRlX2NvbnRleHQpOwogCi0JcGdzdGF0X3Byb2dyZXNzX2Vu ZF9jb21tYW5kKCk7CisJLyogRG9uJ3Qgb3ZlcndyaXRlIENSRUFURSBJTkRFWCBwcm9ncmVzcy4g Ki8KKwlpZiAoIShwYXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1JFUE9SVF9QQVJUKSkKKwkJ cGdzdGF0X3Byb2dyZXNzX2VuZF9jb21tYW5kKCk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv aW5kZXguaAppbmRleCBjMzFiNjZhZDBiOS4uYWMzZTgxMzM2MTUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgK QEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleFBhcmFtcwogI2RlZmluZSBS RUlOREVYT1BUX01JU1NJTkdfT0sgCTB4MDQJLyogc2tpcCBtaXNzaW5nIHJlbGF0aW9ucyAqLwog I2RlZmluZSBSRUlOREVYT1BUX0NPTkNVUlJFTlRMWQkweDA4CS8qIGNvbmN1cnJlbnQgbW9kZSAq LwogI2RlZmluZSBSRUlOREVYT1BUX1NLSVBWQUxJRAkweDEwCS8qIHNraXAgdmFsaWQgaW5kZXhl cyAqLworI2RlZmluZSBSRUlOREVYT1BUX1JFUE9SVF9QQVJUCTB4MjAJLyogcmVwb3J0IHJlaW5k ZXhlZCBwYXJ0aXRpb24gKi8KIAogLyogc3RhdGUgaW5mbyBmb3IgdmFsaWRhdGVfaW5kZXggYnVs a2RlbGV0ZSBjYWxsYmFjayAqLwogdHlwZWRlZiBzdHJ1Y3QgVmFsaWRhdGVJbmRleFN0YXRlCi0t IAoyLjI1LjEKCg== --=_3a27ead28e5009f0ee3b7fd72cc24520 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=0004-ReindexPartitions-to-set-indisvalid.patch Content-Disposition: attachment; filename=0004-ReindexPartitions-to-set-indisvalid.patch; size=2433 RnJvbSBiNWI5ODc4Y2Y5ZTY5YmU4NDdmZDJmMWFlNjI1MTgwZDRhNmRjYzNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdXN0aW4gUHJ5emJ5IDxwcnl6YnlAdGVsc2Fzb2Z0LmNvbT4K RGF0ZTogTW9uLCA3IEZlYiAyMDIyIDEwOjM5OjU5ICswMzAwClN1YmplY3Q6IFtQQVRDSCA0LzRd IFJlaW5kZXhQYXJ0aXRpb25zKCkgdG8gc2V0IGluZGlzdmFsaWQKCjAwMDQtUmVpbmRleFBhcnRp dGlvbnMtdG8tc2V0LWluZGlzdmFsaWQucGF0Y2ggZnJvbQpodHRwczovL3d3dy5wb3N0Z3Jlc3Fs Lm9yZy9tZXNzYWdlLWlkLzIwMjEwMjI2MTgyMDE5LkdVMjA3NjlAdGVsc2Fzb2Z0LmNvbQotLS0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIHwgMjMgKysrKysrKysrKysrKysrKysr LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggOTg3ODFhNzExZTguLjc5OGUwZjdjYWFhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpAQCAtMTY0Nyw4ICsxNjQ3LDYgQEAgcmVpbmRleF9p bnZhbGlkX2NoaWxkX2luZGV4ZXMoT2lkIGluZGV4UmVsYXRpb25JZCkKIAkgKiBDSUMgbmVlZHMg dG8gbWFyayBhIHBhcnRpdGlvbmVkIGluZGV4IGFzIFZBTElELCB3aGljaCBpdHNlbGYKIAkgKiBy ZXF1aXJlcyBzZXR0aW5nIFJFQURZLCB3aGljaCBpcyB1bnNldCBmb3IgQ0lDIChldmVuIHRob3Vn aAogCSAqIGl0J3MgbWVhbmluZ2xlc3MgZm9yIGFuIGluZGV4IHdpdGhvdXQgc3RvcmFnZSkuCi0J ICogVGhpcyBtdXN0IGJlIGRvbmUgb25seSB3aGlsZSBob2xkaW5nIGEgbG9jayB3aGljaCBwcmVj bHVkZXMgYWRkaW5nCi0JICogcGFydGl0aW9ucy4KIAkgKi8KIAlDb21tYW5kQ291bnRlckluY3Jl bWVudCgpOwogCWluZGV4X3NldF9zdGF0ZV9mbGFncyhpbmRleFJlbGF0aW9uSWQsIElOREVYX0NS RUFURV9TRVRfUkVBRFkpOwpAQCAtMTY1OCw5ICsxNjU2LDYgQEAgcmVpbmRleF9pbnZhbGlkX2No aWxkX2luZGV4ZXMoT2lkIGluZGV4UmVsYXRpb25JZCkKIAkgKiB0aGlzIGNvbW1pdHMgYW5kIHRo ZW4gc3RhcnRzIGEgbmV3IHRyYW5zYWN0aW9uIGltbWVkaWF0ZWx5LgogCSAqLwogCVJlaW5kZXhQ YXJ0aXRpb25zKGluZGV4UmVsYXRpb25JZCwgJnBhcmFtcywgdHJ1ZSk7Ci0KLQlDb21tYW5kQ291 bnRlckluY3JlbWVudCgpOwotCWluZGV4X3NldF9zdGF0ZV9mbGFncyhpbmRleFJlbGF0aW9uSWQs IElOREVYX0NSRUFURV9TRVRfVkFMSUQpOwogfQogCiAvKgpAQCAtMzEwNSw2ICszMTAwLDI0IEBA IFJlaW5kZXhQYXJ0aXRpb25zKE9pZCByZWxpZCwgUmVpbmRleFBhcmFtcyAqcGFyYW1zLCBib29s IGlzVG9wTGV2ZWwpCiAJICovCiAJUmVpbmRleE11bHRpcGxlSW50ZXJuYWwocGFydGl0aW9ucywg cGFyYW1zLCBucGFydCk7CiAKKwkvKgorCSAqIElmIGluZGV4ZXMgZXhpc3Qgb24gYWxsIG9mIHRo ZSBwYXJ0aXRpb25lZCB0YWJsZSdzIGNoaWxkcmVuLCBhbmQgd2UKKwkgKiBqdXN0IHJlaW5kZXhl ZCB0aGVtLCB0aGVuIHdlIGtub3cgdGhleSdyZSB2YWxpZCwgYW5kIHNvIGNhbiBtYXJrIHRoZQor CSAqIHBhcmVudCBpbmRleCBhcyB2YWxpZC4KKwkgKiBUaGlzIGhhbmRsZXMgdGhlIGNhc2Ugb2Yg Q1JFQVRFIElOREVYIENPTkNVUlJFTlRMWS4KKwkgKiBTZWUgYWxzbzogdmFsaWRhdGVQYXJ0aXRp b25lZEluZGV4KCkuCisJICovCisJaWYgKGdldF9yZWxfcmVsa2luZChyZWxpZCkgPT0gUkVMS0lO RF9QQVJUSVRJT05FRF9JTkRFWAorCQkJJiYgIWdldF9pbmRleF9pc3ZhbGlkKHJlbGlkKSkKKwl7 CisJCU9pZAl0YWJsZW9pZCA9IEluZGV4R2V0UmVsYXRpb24ocmVsaWQsIGZhbHNlKTsKKwkJTGlz dAkqY2hpbGRfdGFibGVzID0gZmluZF9hbGxfaW5oZXJpdG9ycyh0YWJsZW9pZCwgU2hhcmVMb2Nr LCBOVUxMKTsKKworCQkvKiBCb3RoIGxpc3RzIGluY2x1ZGUgdGhlaXIgcGFyZW50IHJlbGF0aW9u IGFzIHdlbGwgYXMgYW55IGludGVybWVkaWF0ZSBwYXJ0aXRpb25lZCByZWxzICovCisJCWlmIChs aXN0X2xlbmd0aChpbmhvaWRzKSA9PSBsaXN0X2xlbmd0aChjaGlsZF90YWJsZXMpKQorCQkJaW5k ZXhfc2V0X3N0YXRlX2ZsYWdzKHJlbGlkLCBJTkRFWF9DUkVBVEVfU0VUX1ZBTElEKTsKKwl9CisK IAkvKgogCSAqIENsZWFuIHVwIHdvcmtpbmcgc3RvcmFnZSAtLS0gbm90ZSB3ZSBtdXN0IGRvIHRo aXMgYWZ0ZXIKIAkgKiBTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCwgZWxzZSB3ZSBtaWdodCBiZSB0 cnlpbmcgdG8gZGVsZXRlIHRoZSBhY3RpdmUKLS0gCjIuMjUuMQoK --=_3a27ead28e5009f0ee3b7fd72cc24520--