Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r7TU1-005Wzf-HJ for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Nov 2023 04:44:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1r7TTx-00Ab5u-Eu for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Nov 2023 04:44:29 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r7TTw-00Ab5k-OQ for pgsql-hackers@lists.postgresql.org; Mon, 27 Nov 2023 04:44:29 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r7TTo-007XpJ-Cp for pgsql-hackers@lists.postgresql.org; Mon, 27 Nov 2023 04:44:27 +0000 Received: from [10.10.20.72] (node-6v5.pool-101-109.dynamic.totinternet.net [101.109.34.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: a.lepikhov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 27F60E20E92 for ; Mon, 27 Nov 2023 07:44:15 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1701060256; bh=iXiRoc4YY6OGjsNFzHGZT/Qnygn19yhjC3Gt8nTdOmA=; h=Message-ID:Date:User-Agent:Subject:From:To:References:In-Reply-To: From; b=Ztyhp011Sw7MS/7RooipfrcZ6FlQ8Y+Fbux3PbbnTTzKZH1JSoCCme6qQvm7Nz0PU N35tL+NC2UJ6vLecM2ywaEB6Wft9f23MwjJAqehA4kDXKROMMozlwGZOHRmaeCaaum Xtu8cBOzs/4T8XMVnxM/JY+01AnfVNKv8b53iKMP5l3G+TCLxAYRARYiXnEvVvqeJH 6p9VcCQvpzrD48LU8ifcgyNdqwnDCYUNT+hzjlQGeHb37Dmchlp0YYt0NkCbcx6kh3 CchtaOqvVMmKGjBV5b1g3UjQvqUGSyO/WySjeAiZw39ka4sbUFOxZv5/P0zl86RovT 6p8qfidHkyB3g== Content-Type: multipart/mixed; boundary="------------QFR0JJBcdJc1szrA1ofDNYBM" Message-ID: <154f786a-06a0-4fb1-b8a4-16c66149731b@postgrespro.ru> Date: Mon, 27 Nov 2023 11:44:13 +0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Postgres picks suboptimal index after building of an extended statistics Content-Language: en-US From: Andrei Lepikhov To: PostgreSQL Hackers References: <0ca4553c-1f34-12ba-9122-44199d1ced41@postgrespro.ru> <6dc348eb-91dd-4163-98fc-af9a9358302a@postgrespro.ru> <6fb43191-2df3-4791-b307-be754e648276@postgrespro.ru> Organization: Postgres Professional In-Reply-To: <6fb43191-2df3-4791-b307-be754e648276@postgrespro.ru> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------QFR0JJBcdJc1szrA1ofDNYBM Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Second version of the patch - resolve non-symmetrical decision, thanks to Teodor Sigaev's review. -- regards, Andrei Lepikhov Postgres Professional --------------QFR0JJBcdJc1szrA1ofDNYBM Content-Type: text/plain; charset=UTF-8; name="v2-0001-Choose-an-index-path-with-the-best-selectivity-estim.patch" Content-Disposition: attachment; filename*0="v2-0001-Choose-an-index-path-with-the-best-selectivity-estim"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSA2MDQ4OTliNmFmZTcwZWNjYmJkYmY2OWNlMjU0ZjM3ODA4YzU5OGRiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IFYuIExlcGlraG92IiA8YS5sZXBpa2hv dkBwb3N0Z3Jlc3Byby5ydT4KRGF0ZTogTW9uLCAyNyBOb3YgMjAyMyAxMToyMzo0OCArMDcw MApTdWJqZWN0OiBbUEFUQ0hdIENob29zZSBhbiBpbmRleCBwYXRoIHdpdGggdGhlIGJlc3Qg c2VsZWN0aXZpdHkgZXN0aW1hdGlvbi4KCkluIHRoZSBjYXNlIHdoZW4gb3B0aW1pemVyIHBy ZWRpY3RzIG9ubHkgb25lIHJvdyBwcmVmZXIgY2hvb3NpbmcgVU5JUVVFIGluZGV4ZXMKSW4g b3RoZXIgY2FzZXMsIGlmIG9wdGltaXplciB0cmVhdHMgaW5kZXhlcyBhcyBlcXVhbCwgbWFr ZSBhIGxhc3QgYXR0ZW1wdApzZWxlY3RpbmcgdGhlIGluZGV4IHdpdGggbGVzcyBzZWxlY3Rp dml0eSAtIHRoaXMgZGVjaXNpb24gdGFrZXMgYXdheSBkZXBlbmRlbmN5Cm9uIHRoZSBvcmRl ciBvZiBpbmRleGVzIGluIGFuIGluZGV4IGxpc3QgKGdvb2QgZm9yIHJlcHJvZHVjdGlvbiBv ZiBzb21lIGlzc3VlcykKYW5kIHByb3Bvc2VzIG9uZSBtb3JlIG9iamVjdGl2ZSBhcmd1bWVu dCB0byBjaG9vc2Ugc3BlY2lmaWMgaW5kZXguCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvcGF0aG5vZGUuYyAgICAgICAgIHwgNDIgKysrKysrKysrKysrKysrKysrCiAuLi4v ZXhwZWN0ZWQvZHJvcC1pbmRleC1jb25jdXJyZW50bHktMS5vdXQgICAgfCAxNiArKysrLS0t CiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Z1bmN0aW9uYWxfZGVwcy5vdXQgfCA0MyAr KysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0 ICAgICAgICAgICAgfCA0MCArKysrKysrKystLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9z cWwvZnVuY3Rpb25hbF9kZXBzLnNxbCAgICAgIHwgMzYgKysrKysrKysrKysrKysrKwogNSBm aWxlcyBjaGFuZ2VkLCAxNTEgaW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXggMGIxZDE3YjlkMy4uNGI1 YWVkZDU3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5v ZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCkBAIC00 NTQsNiArNDU0LDQ4IEBAIGFkZF9wYXRoKFJlbE9wdEluZm8gKnBhcmVudF9yZWwsIFBhdGgg Km5ld19wYXRoKQogCQljb3N0Y21wID0gY29tcGFyZV9wYXRoX2Nvc3RzX2Z1enppbHkobmV3 X3BhdGgsIG9sZF9wYXRoLAogCQkJCQkJCQkJCQkgU1REX0ZVWlpfRkFDVE9SKTsKIAorCQkv KgorCQkgKiBBcHBseSBzb21lIGhldXJpc3RpY3Mgb24gaW5kZXggcGF0aHMuCisJCSAqLwor CQlpZiAoSXNBKG5ld19wYXRoLCBJbmRleFBhdGgpICYmIElzQShvbGRfcGF0aCwgSW5kZXhQ YXRoKSkKKwkJeworCQkJSW5kZXhQYXRoICppbnAgPSAoSW5kZXhQYXRoICopIG5ld19wYXRo OworCQkJSW5kZXhQYXRoICppb3AgPSAoSW5kZXhQYXRoICopIG9sZF9wYXRoOworCisJCQlp ZiAobmV3X3BhdGgtPnJvd3MgPD0gMS4wICYmIG9sZF9wYXRoLT5yb3dzIDw9IDEuMCkKKwkJ CXsKKwkJCQkvKgorCQkJCSAqIFdoZW4gYm90aCBwYXRocyBhcmUgcHJlZGljdGVkIHRvIHBy b2R1Y2Ugb25seSBvbmUgdHVwbGUsCisJCQkJICogdGhlIG9wdGltaXNlciBzaG91bGQgcHJl ZmVyIGNob29zaW5nIGEgdW5pcXVlIGluZGV4IHNjYW4KKwkJCQkgKiBpbiBhbGwgY2FzZXMu CisJCQkJICovCisJCQkJaWYgKGlucC0+aW5kZXhpbmZvLT51bmlxdWUgJiYgIWlvcC0+aW5k ZXhpbmZvLT51bmlxdWUpCisJCQkJCWNvc3RjbXAgPSBDT1NUU19CRVRURVIxOworCQkJCWVs c2UgaWYgKCFpbnAtPmluZGV4aW5mby0+dW5pcXVlICYmIGlvcC0+aW5kZXhpbmZvLT51bmlx dWUpCisJCQkJCWNvc3RjbXAgPSBDT1NUU19CRVRURVIyOworCQkJCWVsc2UgaWYgKGNvc3Rj bXAgIT0gQ09TVFNfRElGRkVSRU5UKQorCQkJCQkvKgorCQkJCQkgKiBJZiB0aGUgb3B0aW1p c2VyIGRvZXNuJ3QgaGF2ZSBhbiBvYnZpb3VzbHkgc3RhYmxlIGNob2ljZQorCQkJCQkgKiBv ZiB1bmlxdWUgaW5kZXgsIGluY3JlYXNlIHRoZSBjaGFuY2Ugb2YgYXZvaWRpbmcgbWlzdGFr ZXMKKwkJCQkJICogYnkgY2hvb3NpbmcgYW4gaW5kZXggd2l0aCBzbWFsbGVyIHNlbGVjdGl2 aXR5LgorCQkJCQkgKiBUaGlzIG9wdGlvbiBtYWtlcyBkZWNpc2lvbiBtb3JlIGNvbnNlcnZh dGl2ZSBhbmQgbG9va3MKKwkJCQkJICogZGViYXRhYmxlLgorCQkJCQkgKi8KKwkJCQkJY29z dGNtcCA9IChpbnAtPmluZGV4c2VsZWN0aXZpdHkgPCBpb3AtPmluZGV4c2VsZWN0aXZpdHkp ID8KKwkJCQkJCQkJCQkJCUNPU1RTX0JFVFRFUjEgOiBDT1NUU19CRVRURVIyOworCQkJfQor CQkJZWxzZSBpZiAoY29zdGNtcCA9PSBDT1NUU19FUVVBTCkKKwkJCQkvKgorCQkJCSAqIFRo ZSBvcHRpbWl6ZXIgY2FuJ3QgZGlmZmVyIHRoZSB2YWx1ZSBvZiB0d28gaW5kZXggcGF0aHMu CisJCQkJICogVG8gYXZvaWQgbWFraW5nIGEgZGVjaXNpb24gdGhhdCBpcyBiYXNlZCBvbiBv bmx5IGFuIGluZGV4CisJCQkJICogb3JkZXIgaW4gdGhlIGxpc3QsIHVzZSBzb21lIHJhdGlv bmFsIHN0cmF0ZWd5IGJhc2VkIG9uCisJCQkJICogc2VsZWN0aXZpdHk6IHByZWZlciB0b3Vj aGluZyBmZXdlciB0dXBsZXMgb24gdGhlIGRpc2sgdG8KKwkJCQkgKiBmaWx0ZXJpbmcgdGhl bSBhZnRlci4KKwkJCQkgKi8KKwkJCQljb3N0Y21wID0gKGlucC0+aW5kZXhzZWxlY3Rpdml0 eSA8IGlvcC0+aW5kZXhzZWxlY3Rpdml0eSkgPworCQkJCQkJCQkJCQkJQ09TVFNfQkVUVEVS MSA6IENPU1RTX0JFVFRFUjI7CisJCX0KKwogCQkvKgogCQkgKiBJZiB0aGUgdHdvIHBhdGhz IGNvbXBhcmUgZGlmZmVyZW50bHkgZm9yIHN0YXJ0dXAgYW5kIHRvdGFsIGNvc3QsCiAJCSAq IHRoZW4gd2Ugd2FudCB0byBrZWVwIGJvdGgsIGFuZCB3ZSBjYW4gc2tpcCBjb21wYXJpbmcg cGF0aGtleXMgYW5kCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQv ZHJvcC1pbmRleC1jb25jdXJyZW50bHktMS5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvZHJvcC1pbmRleC1jb25jdXJyZW50bHktMS5vdXQKaW5kZXggMWNiMjI1MDg5MS4u MjM5MmNkYjAzMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2Ry b3AtaW5kZXgtY29uY3VycmVudGx5LTEub3V0CisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9l eHBlY3RlZC9kcm9wLWluZGV4LWNvbmN1cnJlbnRseS0xLm91dApAQCAtMTIsMTMgKzEyLDE1 IEBAIHN0ZXAgcHJlcHM6IFBSRVBBUkUgZ2V0cm93X3NlcXNjYW4gQVMgU0VMRUNUICogRlJP TSB0ZXN0X2RjIFdIRVJFIGRhdGEgPSAzNCBPUkRFCiBzdGVwIGJlZ2luOiBCRUdJTjsKIHN0 ZXAgZGlzYWJsZXNlcTogU0VUIGVuYWJsZV9zZXFzY2FuID0gZmFsc2U7CiBzdGVwIGV4cGxh aW5pOiBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgZ2V0cm93X2lkeHNjYW47Ci1RVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Tb3J0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gIFNvcnQgS2V5OiBpZCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCi0gIC0+ICBJbmRleCBTY2FuIHVzaW5nIHRlc3Rf ZGNfZGF0YSBvbiB0ZXN0X2RjCi0gICAgICAgIEluZGV4IENvbmQ6IChkYXRhID0gMzQpICAg ICAgICAgICAgICAgCi0oNCByb3dzKQorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK1NvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICBTb3J0IEtleTogaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIHRlc3RfZGMgICAgICAgICAgICAKKyAgICAgICAgUmVj aGVjayBDb25kOiAoZGF0YSA9IDM0KSAgICAgICAgICAgIAorICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gdGVzdF9kY19kYXRhCisgICAgICAgICAgICAgIEluZGV4IENvbmQ6 IChkYXRhID0gMzQpICAgICAgICAKKyg2IHJvd3MpCiAKIHN0ZXAgZW5hYmxlc2VxOiBTRVQg ZW5hYmxlX3NlcXNjYW4gPSB0cnVlOwogc3RlcCBleHBsYWluczogRVhQTEFJTiAoQ09TVFMg T0ZGKSBFWEVDVVRFIGdldHJvd19zZXFzY2FuOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9mdW5jdGlvbmFsX2RlcHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9mdW5jdGlvbmFsX2RlcHMub3V0CmluZGV4IDMyMzgxYjhhZTcuLjYxYWY5OWEw NDEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZnVuY3Rpb25hbF9k ZXBzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Z1bmN0aW9uYWxfZGVw cy5vdXQKQEAgLTIzMCwzICsyMzAsNDYgQEAgRVhFQ1VURSBmb287CiBBTFRFUiBUQUJMRSBh cnRpY2xlcyBEUk9QIENPTlNUUkFJTlQgYXJ0aWNsZXNfcGtleSBSRVNUUklDVDsKIEVYRUNV VEUgZm9vOyAgLS0gZmFpbAogRVJST1I6ICBjb2x1bW4gImFydGljbGVzLmtleXdvcmRzIiBt dXN0IGFwcGVhciBpbiB0aGUgR1JPVVAgQlkgY2xhdXNlIG9yIGJlIHVzZWQgaW4gYW4gYWdn cmVnYXRlIGZ1bmN0aW9uCisvKgorICogQ29ybmVyIGNhc2VzIG9mIFBvc3RncmVTUUwgb3B0 aW1pemVyOgorICoKKyAqIENvcnJlbGF0aW9ucyBiZXR3ZWVuIGNvbHVtbnMgYXJlbid0IGZv dW5kIGJ5IERCTVMuCisgKiBTZWxlY3Rpdml0aWVzIG11bHRpcGxpY2F0aW9uIG9mIG1hbnkg Y29sdW1ucyBpbmNyZWFzZXMgdG90YWwgc2VsZWN0aXZpdHkKKyAqIGVycm9yLiBJZiBzdWNo IG5vbi10cnVlIHNlbGVjdGl2aXR5IGlzIHNvIHNtYWxsLCB0aGF0IHJvd3MgZXN0aW1hdGlv bgorICogZ2l2ZSB1cyBhYnNvbHV0ZSBtaW5pbXVtICgxKSB0aGVuIHRoZSBvcHRpbWl6ZXIg Y2FuJ3QgY2hvb3NlIGJldHdlZW4gZGlmZmVyZW50CisgKiBpbmRleGVzIGFuZCB1c2VzIGZp cnN0IGZyb20gdGhlIGluZGV4IGxpc3QgKGxhc3QgY3JlYXRlZCkuCisgKi8KK1xzZXQgc2Nh bGUgMTAwMDAwCitDUkVBVEUgVEFCTEUgdCBBUyAoCisgICAgU0VMRUNUICBjMSBBUyBjMSwg LS0gc2VsZWN0aXZpdHkoYzEpKnNlbGVjdGl2aXR5KGMyKSpucm93cyA8PSAxCisgICAgICAg ICAgICBjMSBBUyBjMiwKKwkJCS0tIENyZWF0ZSB0d28gY29sdW1ucyB3aXRoIGRpZmZlcmVu dCBzZWxlY3Rpdml0eS4KKyAgICAgICAgICAgIChjMSAlIDIpIEFTIGMzLCAtLSBtaXNzaW5n IGZyb20gYSBnb29kIGluZGV4LgorICAgICAgICAgICAgKGMxICUgNCkgQVMgYzQgLS0gbWlz c2luZyBmcm9tIGEgYmFkIGluZGV4LgorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsOnNj YWxlKSBBUyBjMQorKTsKK1VQREFURSB0IFNFVCBjMT0xLGMyPTEsYzM9MSxjND0yIFdIRVJF IGMxPDpzY2FsZS8xMDAwOworQ1JFQVRFIElOREVYIGJhZCBPTiB0IChjMSxjMixjMyk7CitD UkVBVEUgSU5ERVggZ29vZCBPTiB0IChjMSxjMixjNCk7CitBTkFMWVpFIHQ7IC0tIHVwZGF0 ZSBzdGF0IG9uIHRoZSBpbmRleGVzLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHQgV0hFUkUgYzE9MSBBTkQgYzI9MSBBTkQgYzM9MSBBTkQgYzQ9MTsKKyAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBT Y2FuIHVzaW5nIGdvb2Qgb24gdAorICAgSW5kZXggQ29uZDogKChjMSA9IDEpIEFORCAoYzIg PSAxKSBBTkQgKGM0ID0gMSkpCisgICBGaWx0ZXI6IChjMyA9IDEpCisoMyByb3dzKQorCist LSBTZXQgdGhlIGJhZCBpbmRleCB0byB0aGUgZmlyc3QgcG9zaXRpb24gaW4gdGhlIGluZGV4 IGxpc3QuCitEUk9QIElOREVYIGJhZDsKK0NSRUFURSBJTkRFWCBiYWQgT04gdCAoYzEsYzIs YzMpOworQU5BTFlaRSB0OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHQg V0hFUkUgYzE9MSBBTkQgYzI9MSBBTkQgYzM9MSBBTkQgYzQ9MTsKKyAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBJbmRleCBTY2FuIHVz aW5nIGdvb2Qgb24gdAorICAgSW5kZXggQ29uZDogKChjMSA9IDEpIEFORCAoYzIgPSAxKSBB TkQgKGM0ID0gMSkpCisgICBGaWx0ZXI6IChjMyA9IDEpCisoMyByb3dzKQorCitEUk9QIFRB QkxFIHQgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv am9pbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4ub3V0CmluZGV4IDJj NzMyNzAxNDMuLjMyYjMzZmFiZDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvam9pbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91 dApAQCAtODYyOSwxNCArODYyOSwxNSBAQCBhbmFseXplIGoyOwogZXhwbGFpbiAoY29zdHMg b2ZmKSBzZWxlY3QgKiBmcm9tIGoxCiBpbm5lciBqb2luIGoyIG9uIGoxLmlkMSA9IGoyLmlk MSBhbmQgajEuaWQyID0gajIuaWQyCiB3aGVyZSBqMS5pZDEgJSAxMDAwID0gMSBhbmQgajIu aWQxICUgMTAwMCA9IDE7Ci0gICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgTWVyZ2UgSm9pbgotICAgTWVyZ2UgQ29uZDogKGoxLmlkMSA9IGoyLmlkMSkKLSAg IEpvaW4gRmlsdGVyOiAoajIuaWQyID0gajEuaWQyKQotICAgLT4gIEluZGV4IFNjYW4gdXNp bmcgajFfaWQxX2lkeCBvbiBqMQotICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgajJfaWQxX2lk eCBvbiBqMgotKDUgcm93cykKKyAgIE1lcmdlIENvbmQ6ICgoajEuaWQxID0gajIuaWQxKSBB TkQgKGoxLmlkMiA9IGoyLmlkMikpCisgICAtPiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGox X3BrZXkgb24gajEKKyAgICAgICAgIEZpbHRlcjogKChpZDEgJSAxMDAwKSA9IDEpCisgICAt PiAgSW5kZXggT25seSBTY2FuIHVzaW5nIGoyX3BrZXkgb24gajIKKyAgICAgICAgIEZpbHRl cjogKChpZDEgJSAxMDAwKSA9IDEpCisoNiByb3dzKQogCiBzZWxlY3QgKiBmcm9tIGoxCiBp bm5lciBqb2luIGoyIG9uIGoxLmlkMSA9IGoyLmlkMSBhbmQgajEuaWQyID0gajIuaWQyCkBA IC04NjUxLDE1ICs4NjUyLDE2IEBAIHdoZXJlIGoxLmlkMSAlIDEwMDAgPSAxIGFuZCBqMi5p ZDEgJSAxMDAwID0gMTsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBqMQog aW5uZXIgam9pbiBqMiBvbiBqMS5pZDEgPSBqMi5pZDEgYW5kIGoxLmlkMiA9IGoyLmlkMgog d2hlcmUgajEuaWQxICUgMTAwMCA9IDEgYW5kIGoyLmlkMSAlIDEwMDAgPSAxIGFuZCBqMi5p ZDEgPSBhbnkgKGFycmF5WzFdKTsKLSAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTWVyZ2UgSm9pbgotICAgTWVyZ2Ug Q29uZDogKGoxLmlkMSA9IGoyLmlkMSkKLSAgIEpvaW4gRmlsdGVyOiAoajIuaWQyID0gajEu aWQyKQotICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgajFfaWQxX2lkeCBvbiBqMQotICAgLT4g IEluZGV4IFNjYW4gdXNpbmcgajJfaWQxX2lkeCBvbiBqMgorICAgTWVyZ2UgQ29uZDogKChq MS5pZDEgPSBqMi5pZDEpIEFORCAoajEuaWQyID0gajIuaWQyKSkKKyAgIC0+ICBJbmRleCBP bmx5IFNjYW4gdXNpbmcgajFfcGtleSBvbiBqMQorICAgICAgICAgRmlsdGVyOiAoKGlkMSAl IDEwMDApID0gMSkKKyAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgajJfcGtleSBvbiBq MgogICAgICAgICAgSW5kZXggQ29uZDogKGlkMSA9IEFOWSAoJ3sxfSc6OmludGVnZXJbXSkp Ci0oNiByb3dzKQorICAgICAgICAgRmlsdGVyOiAoKGlkMSAlIDEwMDApID0gMSkKKyg3IHJv d3MpCiAKIHNlbGVjdCAqIGZyb20gajEKIGlubmVyIGpvaW4gajIgb24gajEuaWQxID0gajIu aWQxIGFuZCBqMS5pZDIgPSBqMi5pZDIKQEAgLTg2NzQsMTIgKzg2NzYsMTIgQEAgd2hlcmUg ajEuaWQxICUgMTAwMCA9IDEgYW5kIGoyLmlkMSAlIDEwMDAgPSAxIGFuZCBqMi5pZDEgPSBh bnkgKGFycmF5WzFdKTsKIGV4cGxhaW4gKGNvc3RzIG9mZikgc2VsZWN0ICogZnJvbSBqMQog aW5uZXIgam9pbiBqMiBvbiBqMS5pZDEgPSBqMi5pZDEgYW5kIGoxLmlkMiA9IGoyLmlkMgog d2hlcmUgajEuaWQxICUgMTAwMCA9IDEgYW5kIGoyLmlkMSAlIDEwMDAgPSAxIGFuZCBqMi5p ZDEgPj0gYW55IChhcnJheVsxLDVdKTsKLSAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgTWVyZ2UgSm9pbgot ICAgTWVyZ2UgQ29uZDogKGoxLmlkMSA9IGoyLmlkMSkKLSAgIEpvaW4gRmlsdGVyOiAoajIu aWQyID0gajEuaWQyKQotICAgLT4gIEluZGV4IFNjYW4gdXNpbmcgajFfaWQxX2lkeCBvbiBq MQorICAgTWVyZ2UgQ29uZDogKChqMS5pZDEgPSBqMi5pZDEpIEFORCAoajEuaWQyID0gajIu aWQyKSkKKyAgIC0+ICBJbmRleCBPbmx5IFNjYW4gdXNpbmcgajFfcGtleSBvbiBqMQorICAg ICAgICAgRmlsdGVyOiAoKGlkMSAlIDEwMDApID0gMSkKICAgIC0+ICBJbmRleCBPbmx5IFNj YW4gdXNpbmcgajJfcGtleSBvbiBqMgogICAgICAgICAgSW5kZXggQ29uZDogKGlkMSA+PSBB TlkgKCd7MSw1fSc6OmludGVnZXJbXSkpCiAgICAgICAgICBGaWx0ZXI6ICgoaWQxICUgMTAw MCkgPSAxKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZnVuY3Rpb25hbF9k ZXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Z1bmN0aW9uYWxfZGVwcy5zcWwKaW5k ZXggNDA2NDkwYjk5NS4uZjYxN2VlOTI2OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZnVuY3Rpb25hbF9kZXBzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9m dW5jdGlvbmFsX2RlcHMuc3FsCkBAIC0yMDgsMyArMjA4LDM5IEBAIEVYRUNVVEUgZm9vOwog QUxURVIgVEFCTEUgYXJ0aWNsZXMgRFJPUCBDT05TVFJBSU5UIGFydGljbGVzX3BrZXkgUkVT VFJJQ1Q7CiAKIEVYRUNVVEUgZm9vOyAgLS0gZmFpbAorCisvKgorICogQ29ybmVyIGNhc2Vz IG9mIFBvc3RncmVTUUwgb3B0aW1pemVyOgorICoKKyAqIENvcnJlbGF0aW9ucyBiZXR3ZWVu IGNvbHVtbnMgYXJlbid0IGZvdW5kIGJ5IERCTVMuCisgKiBTZWxlY3Rpdml0aWVzIG11bHRp cGxpY2F0aW9uIG9mIG1hbnkgY29sdW1ucyBpbmNyZWFzZXMgdG90YWwgc2VsZWN0aXZpdHkK KyAqIGVycm9yLiBJZiBzdWNoIG5vbi10cnVlIHNlbGVjdGl2aXR5IGlzIHNvIHNtYWxsLCB0 aGF0IHJvd3MgZXN0aW1hdGlvbgorICogZ2l2ZSB1cyBhYnNvbHV0ZSBtaW5pbXVtICgxKSB0 aGVuIHRoZSBvcHRpbWl6ZXIgY2FuJ3QgY2hvb3NlIGJldHdlZW4gZGlmZmVyZW50CisgKiBp bmRleGVzIGFuZCB1c2VzIGZpcnN0IGZyb20gdGhlIGluZGV4IGxpc3QgKGxhc3QgY3JlYXRl ZCkuCisgKi8KK1xzZXQgc2NhbGUgMTAwMDAwCisKK0NSRUFURSBUQUJMRSB0IEFTICgKKyAg ICBTRUxFQ1QgIGMxIEFTIGMxLCAtLSBzZWxlY3Rpdml0eShjMSkqc2VsZWN0aXZpdHkoYzIp Km5yb3dzIDw9IDEKKyAgICAgICAgICAgIGMxIEFTIGMyLAorCQkJLS0gQ3JlYXRlIHR3byBj b2x1bW5zIHdpdGggZGlmZmVyZW50IHNlbGVjdGl2aXR5LgorICAgICAgICAgICAgKGMxICUg MikgQVMgYzMsIC0tIG1pc3NpbmcgZnJvbSBhIGdvb2QgaW5kZXguCisgICAgICAgICAgICAo YzEgJSA0KSBBUyBjNCAtLSBtaXNzaW5nIGZyb20gYSBiYWQgaW5kZXguCisgICAgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSw6c2NhbGUpIEFTIGMxCispOworVVBEQVRFIHQgU0VUIGMxPTEs YzI9MSxjMz0xLGM0PTIgV0hFUkUgYzE8OnNjYWxlLzEwMDA7CisKK0NSRUFURSBJTkRFWCBi YWQgT04gdCAoYzEsYzIsYzMpOworQ1JFQVRFIElOREVYIGdvb2QgT04gdCAoYzEsYzIsYzQp OworQU5BTFlaRSB0OyAtLSB1cGRhdGUgc3RhdCBvbiB0aGUgaW5kZXhlcy4KKworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHQgV0hFUkUgYzE9MSBBTkQgYzI9MSBBTkQg YzM9MSBBTkQgYzQ9MTsKKworLS0gU2V0IHRoZSBiYWQgaW5kZXggdG8gdGhlIGZpcnN0IHBv c2l0aW9uIGluIHRoZSBpbmRleCBsaXN0LgorRFJPUCBJTkRFWCBiYWQ7CitDUkVBVEUgSU5E RVggYmFkIE9OIHQgKGMxLGMyLGMzKTsKK0FOQUxZWkUgdDsKKworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgKiBGUk9NIHQgV0hFUkUgYzE9MSBBTkQgYzI9MSBBTkQgYzM9MSBBTkQg YzQ9MTsKKworRFJPUCBUQUJMRSB0IENBU0NBREU7Ci0tIAoyLjQzLjAKCg== --------------QFR0JJBcdJc1szrA1ofDNYBM--