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 1tivZH-003sWJ-9w for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Feb 2025 13:17:19 +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 1tivZF-009ar7-BJ for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Feb 2025 13:17:18 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tivZE-009aqz-UZ for pgsql-hackers@lists.postgresql.org; Fri, 14 Feb 2025 13:17:17 +0000 Received: from forward101d.mail.yandex.net ([178.154.239.212]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tivZC-000ntA-2Z for pgsql-hackers@postgresql.org; Fri, 14 Feb 2025 13:17:17 +0000 Received: from mail-nwsmtp-smtp-production-main-42.klg.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-42.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:55a0:0:640:1286:0]) by forward101d.mail.yandex.net (Yandex) with ESMTPS id 0A01F60BB5; Fri, 14 Feb 2025 16:17:13 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-42.klg.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id 9HRevmDOiiE0-piffVsPp; Fri, 14 Feb 2025 16:17:12 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1739539032; bh=AEQZyPA7435ToUYAGy38etJID9yXE7oyz3pMTEji6Gg=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=2dcnx8SXu0wErFR246bVcdK9imxajIFO4ADwjAqWVuAkL1I/FnO4HWJ8oUjVwhzFM Ca9UodYsjyJ0iFgyxWwlhQnvovFmu4gLztwmYL0EOJUGnRmr7MphemCyXo5OUEhyYW q1a5zQOmR7Ko1C/a0cOMyarysg2bpZEn1nydxbuA= Authentication-Results: mail-nwsmtp-smtp-production-main-42.klg.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------ChNnL6udu8RyMUpBJGbiD0J7" Message-ID: <6bf3059f-7ebe-4640-8870-1220f83b88ed@tantorlabs.com> Date: Fri, 14 Feb 2025 16:17:09 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Sample rate added to pg_stat_statements From: Ilia Evdokimov To: Sami Imseih , Alexander Korotkov , Michael Paquier , Greg Sabino Mullane , Andrey Borodin , Alena Rybakina Cc: pgsql-hackers References: <6cf6270b-e8fa-4d99-b74a-17e781cdf309@tantorlabs.com> <3a27c830-b81f-4560-9774-a87d9b922fbd@tantorlabs.com> <7AD765EF-14DE-4B3E-8282-E82A9B44DBAA@yandex-team.ru> <0c7770bd-9750-4200-a472-bdb262583c2f@tantorlabs.com> <18631d46-1741-4edc-b116-8d9631cdf919@tantorlabs.com> <4f98ec33-c627-4eb4-84f3-9994a0982277@tantorlabs.com> <623db69f-b40a-4d50-b1bd-bb073fcc4336@tantorlabs.com> <3546e2a7-5831-4c0a-996b-358d4ec483a6@tantorlabs.com> Content-Language: en-US In-Reply-To: <3546e2a7-5831-4c0a-996b-358d4ec483a6@tantorlabs.com> 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. --------------ChNnL6udu8RyMUpBJGbiD0J7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi hackers, I've decided to explore a slightly different approach to reducing spinlock contention—by introducing a simple execution time threshold. If a query’s execution time exceeds this threshold, it is recorded in pg_stat_statements; otherwise, it is ignored. As Alexander [0] pointed out, this helps retain valuable queries for further analysis. A similar mechanism is already present in auto_explain and pg_store_plans. When pg_stat_statements.track_min_duration = -1, disable tracking. If pg_stat_statements.track_min_duration = -1, all statements are tracked. I benchmarked this approach using -M prepared -S on my machine with 48 CPUs. However, I couldn’t reproduce spinlock contention because the machine isn’t large enough to create sufficient concurrency. Nevertheless, I’m sharing my results for reference and checking correct results of threshold. Here’s the benchmarking procedure I followed:     createdb pgbench     pgbench -i -s 3000 pgbench     psql -c 'SELECT pg_stat_statements_reset()'     pgbench -c 46 -j 46 -T 120 -M prepared -S --progress=10 pgbench select query, calls, min_exec_time, max_exec_time, mean_exec_time, stddev_exec_time from pg_stat_statements where query = 'SELECT abalance FROM pgbench_accounts WHERE aid = $1'; track_min_duration |     calls | min_exec_time | max_exec_time |       mean_exec_time | stddev_exec_time                  0 | 111282955 |       0.00365 |      15.56946 | 0.015042374707317802 | 0.06067634978916631                  5 |       458 |       5.00627 |      15.699129 |    5.962879746724887 | 1.1432124887616204                 10 |        14 |      10.538461 |      16.113204 |   12.415218999999999 | 1.5598854455354354                 20 |         - |              - |              - |                    - | -                 -1 |         - |              - |              - |                    - | - I’d greatly appreciate any feedback on this alternative approach, as well as benchmarking on a pretty large machine to see its impact at scale. [0]: https://www.postgresql.org/message-id/CAPpHfdsTKAQqC3A48-MGQhrhfEamXZPb64w%3Dutk7thQcOMNr7Q%40mail.gmail.com -- Best regards, Ilia Evdokimov, Tantor Labs LLC. --------------ChNnL6udu8RyMUpBJGbiD0J7 Content-Type: text/x-patch; charset=UTF-8; name="v16-0001-Allow-setting-execution-time-threshold-for-pgss.patch" Content-Disposition: attachment; filename*0="v16-0001-Allow-setting-execution-time-threshold-for-pgss.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBhYWY4MmQ0ODFhZWI0MDQ1OGRmZDdkZWJmYjNiY2QyNTRmMzNjZGVlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbGlhIEV2ZG9raW1vdiA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5ydT4KRGF0ZTogRnJpLCAxNCBGZWIgMjAyNSAxNTo0MDozNiArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjE2XSBBbGxvdyBzZXR0aW5nIGV4ZWN1dGlvbiB0aW1lIHRocmVz aG9sZCBmb3IKIHBnX3N0YXRfc3RhdGVtZW50cwoKTmV3IGNvbmZpZ3VyYXRpb24gcGFyYW1l dGVyIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja19taW5fZHVyYXRpb24gbWFrZXMgaXQKcG9z c2libGUgdG8gdHJhY2sgc3RhdGVtZW50cyB3aG9zZSBleGVjdXRpb24gdGltZSBpcyBncmVh dGVyIHRoYW4gdGhyZXNob2xkLAp0byByZWR1Y2UgdGhlIGFtb3VudCBvZiB0cmFja2luZy4K LS0tCiBjb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9NYWtlZmlsZSAgICAgICAgICAgfCAg IDIgKy0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvZHVyYXRpb24ub3V0ICB8 IDIwMSArKysrKysrKysrKysrKysrKysKIGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL21l c29uLmJ1aWxkICAgICAgICB8ICAgMSArCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0 YXRfc3RhdGVtZW50cy5jICAgfCAgNzkgKysrKy0tLQogY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvc3FsL2R1cmF0aW9uLnNxbCAgIHwgIDU4ICsrKysrCiBkb2Mvc3JjL3NnbWwvcGdz dGF0c3RhdGVtZW50cy5zZ21sICAgICAgICAgICAgfCAgMjEgKysKIDYgZmlsZXMgY2hhbmdl ZCwgMzMyIGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL2R1cmF0aW9uLm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9kdXJh dGlvbi5zcWwKCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9NYWtl ZmlsZSBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL01ha2VmaWxlCmluZGV4IDI0MWMw MjU4N2IuLjRiMmE1OWQ3YzMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL01ha2VmaWxlCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL01ha2VmaWxl CkBAIC0yMCw3ICsyMCw3IEBAIExERkxBR1NfU0wgKz0gJChmaWx0ZXIgLWxtLCAkKExJQlMp KQogUkVHUkVTU19PUFRTID0gLS10ZW1wLWNvbmZpZyAkKHRvcF9zcmNkaXIpL2NvbnRyaWIv cGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jb25mCiBSRUdSRVNTID0g c2VsZWN0IGRtbCBjdXJzb3JzIHV0aWxpdHkgbGV2ZWxfdHJhY2tpbmcgcGxhbm5pbmcgXAog CXVzZXJfYWN0aXZpdHkgd2FsIGVudHJ5X3RpbWVzdGFtcCBwcml2aWxlZ2VzIGV4dGVuZGVk IFwKLQlwYXJhbGxlbCBjbGVhbnVwIG9sZGV4dHZlcnNpb25zCisJcGFyYWxsZWwgZHVyYXRp b24gY2xlYW51cCBvbGRleHR2ZXJzaW9ucwogIyBEaXNhYmxlZCBiZWNhdXNlIHRoZXNlIHRl c3RzIHJlcXVpcmUgInNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcz1wZ19zdGF0X3N0YXRlbWVu dHMiLAogIyB3aGljaCB0eXBpY2FsIGluc3RhbGxjaGVjayB1c2VycyBkbyBub3QgaGF2ZSAo ZS5nLiBidWlsZGZhcm0gY2xpZW50cykuCiBOT19JTlNUQUxMQ0hFQ0sgPSAxCmRpZmYgLS1n aXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9kdXJhdGlvbi5vdXQg Yi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9leHBlY3RlZC9kdXJhdGlvbi5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOGJiZDRiMDE4MwotLS0gL2Rl di9udWxsCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL2R1cmF0 aW9uLm91dApAQCAtMCwwICsxLDIwMSBAQAorLS0KKy0tIHRyYWNrX21pbl9kdXJhdGlvbgor LS0KKy0tIHRvcC1sZXZlbCB0cmFja2luZyAtIHNpbXBsZSBxdWVyeSBwcm90b2NvbAorU0hP VyBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2s7CisgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNr IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0b3AKKygxIHJvdykKKworU0VUIHBn X3N0YXRfc3RhdGVtZW50cy50cmFja19taW5fZHVyYXRpb24gPSAtMTsKK1NFTEVDVCBwZ19z dGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0 CisoMSByb3cpCisKK1NFTEVDVCAxIEFTICJpbnQiOworIGludCAKKy0tLS0tCisgICAxCiso MSByb3cpCisKK1NFTEVDVCBxdWVyeSwgY2FsbHMgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMg T1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgcXVlcnkgfCBjYWxscyAKKy0tLS0tLS0r LS0tLS0tLQorKDAgcm93cykKKworU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja19taW5f ZHVyYXRpb24gPSAwOworU0VMRUNUIDEgQVMgImludCI7CisgaW50IAorLS0tLS0KKyAgIDEK KygxIHJvdykKKworU0VMRUNUIHF1ZXJ5LCBjYWxscyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50 cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyAgICAgICBxdWVyeSAgICAgICAgfCBj YWxscyAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBTRUxFQ1QgJDEgQVMgImlu dCIgfCAgICAgMQorKDEgcm93KQorCistLSB0b3AtbGV2ZWwgdHJhY2tpbmcgLSBleHRlbmRl ZCBxdWVyeSBwcm90b2NvbAorU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja19taW5fZHVy YXRpb24gPSAtMTsKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1Qg TlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCAxIFxwYXJzZSBz dG10CitcYmluZF9uYW1lZCBzdG10IFxnCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgICAg ICAgIDEKKygxIHJvdykKKworU0VMRUNUIHF1ZXJ5LCBjYWxscyBGUk9NIHBnX3N0YXRfc3Rh dGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKyBxdWVyeSB8IGNhbGxzIAor LS0tLS0tLSstLS0tLS0tCisoMCByb3dzKQorCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRy YWNrX21pbl9kdXJhdGlvbiA9IDA7CitcYmluZF9uYW1lZCBzdG10IFxnCisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgICAgICAgIDEKKygxIHJvdykKKworU0VMRUNUIHF1ZXJ5LCBjYWxs cyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsK KyAgIHF1ZXJ5ICAgfCBjYWxscyAKKy0tLS0tLS0tLS0tKy0tLS0tLS0KKyBTRUxFQ1QgJDEg fCAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkg SVMgTk9UIE5VTEwgQVMgdDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCitERUFMTE9DQVRF IHN0bXQ7CistLSBuZXN0ZWQgdHJhY2tpbmcgLSBzaW1wbGUgcXVlcnkgcHJvdG9jb2wKK1NF VCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAiYWxsIjsKK1NFTEVDVCBwZ19zdGF0X3N0 YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCistLS0KKyB0CisoMSBy b3cpCisKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfbWluX2R1cmF0aW9uID0gMDsK K0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIDE7CisgUVVFUlkgUExBTiAKKy0tLS0tLS0t LS0tLQorIFJlc3VsdAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAx OworIFFVRVJZIFBMQU4gCistLS0tLS0tLS0tLS0KKyBSZXN1bHQKKygxIHJvdykKKworU0VU IHBnX3N0YXRfc3RhdGVtZW50cy50cmFja19taW5fZHVyYXRpb24gPSAtMTsKK0VYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUIDE7CisgUVVFUlkgUExBTiAKKy0tLS0tLS0tLS0tLQorIFJl c3VsdAorKDEgcm93KQorCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAxOworIFFVRVJZ IFBMQU4gCistLS0tLS0tLS0tLS0KKyBSZXN1bHQKKygxIHJvdykKKworU0VMRUNUIHRvcGxl dmVsLCBjYWxscywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMKKyAgT1JERVIgQlkg cXVlcnkgQ09MTEFURSAiQyI7CisgdG9wbGV2ZWwgfCBjYWxscyB8ICAgICAgICAgICAgICAg ICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyB0ICAgICAgICB8ICAgICAyIHwgRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgJDEK KyBmICAgICAgICB8ICAgICAyIHwgU0VMRUNUICQxCisgdCAgICAgICAgfCAgICAgMSB8IFNF TEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0CisgdCAg ICAgICAgfCAgICAgMiB8IFNFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfbWluX2R1cmF0 aW9uID0gJDEKKyg0IHJvd3MpCisKKy0tIG5lc3RlZCB0cmFja2luZyAtIGV4dGVuZGVkIHF1 ZXJ5IHByb3RvY29sCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrID0gImFsbCI7CitT RUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKKyB0 IAorLS0tCisgdAorKDEgcm93KQorCitTRVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX21p bl9kdXJhdGlvbiA9IDA7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAxOyBccGFyc2Ug c3RtdAorIFFVRVJZIFBMQU4gCistLS0tLS0tLS0tLS0KKyBSZXN1bHQKKygxIHJvdykKKwor XGJpbmRfbmFtZWQgc3RtdCBcZworIFFVRVJZIFBMQU4gCistLS0tLS0tLS0tLS0KKyBSZXN1 bHQKKygxIHJvdykKKworXGJpbmRfbmFtZWQgc3RtdCBcZworIFFVRVJZIFBMQU4gCistLS0t LS0tLS0tLS0KKyBSZXN1bHQKKygxIHJvdykKKworU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50 cmFja19taW5fZHVyYXRpb24gPSAtMTsKK1xiaW5kX25hbWVkIHN0bXQgXGcKKyBRVUVSWSBQ TEFOIAorLS0tLS0tLS0tLS0tCisgUmVzdWx0CisoMSByb3cpCisKK1xiaW5kX25hbWVkIHN0 bXQgXGcKKyBRVUVSWSBQTEFOIAorLS0tLS0tLS0tLS0tCisgUmVzdWx0CisoMSByb3cpCisK K1NFTEVDVCB0b3BsZXZlbCwgY2FsbHMsIHF1ZXJ5IEZST00gcGdfc3RhdF9zdGF0ZW1lbnRz CisgIE9SREVSIEJZIHF1ZXJ5IENPTExBVEUgIkMiOworIHRvcGxldmVsIHwgY2FsbHMgfCAg ICAgICAgICAgICAgICAgICAgIHF1ZXJ5ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIHQgICAgICAgIHwgICAgIDIgfCBFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVD VCAkMQorIGYgICAgICAgIHwgICAgIDMgfCBTRUxFQ1QgJDEKKyB0ICAgICAgICB8ICAgICAx IHwgU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja19taW5fZHVyYXRpb24gPSAkMQorKDMg cm93cykKKworLS0gdGhyZXNob2xkIGNoZWNrCitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRz X3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKKyB0IAorLS0tCisgdAorKDEgcm93KQorCitT RVQgcGdfc3RhdF9zdGF0ZW1lbnRzLnRyYWNrX21pbl9kdXJhdGlvbiA9IDEwMDsKK1NFTEVD VCBwZ19zbGVlcCgwLjAwMSk7CS0tIDEgICBtcyA8IHBnX3N0YXRfc3RhdGVtZW50cy50cmFj a19taW5fZHVyYXRpb24KKyBwZ19zbGVlcCAKKy0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwor U0VMRUNUIHBnX3NsZWVwKDAuNSk7CS0tIDUwMCBtcyA+IHBnX3N0YXRfc3RhdGVtZW50cy50 cmFja19taW5fZHVyYXRpb24KKyBwZ19zbGVlcCAKKy0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworU0VMRUNUIHRvcGxldmVsLCBjYWxscywgcXVlcnkgRlJPTSBwZ19zdGF0X3N0YXRlbWVu dHMKKyAgT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgdG9wbGV2ZWwgfCBjYWxscyB8 ICAgICAgICBxdWVyeSAgICAgICAgCistLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgdCAgICAgICAgfCAgICAgMSB8IFNFTEVDVCBwZ19zbGVlcCgkMSkKKygx IHJvdykKKwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvbWVzb24u YnVpbGQgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9tZXNvbi5idWlsZAppbmRleCA0 NDQ2YWY1OGM1Li4yYmM5MThiY2QzIDEwMDY0NAotLS0gYS9jb250cmliL3BnX3N0YXRfc3Rh dGVtZW50cy9tZXNvbi5idWlsZAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9t ZXNvbi5idWlsZApAQCAtNTQsNiArNTQsNyBAQCB0ZXN0cyArPSB7CiAgICAgICAncHJpdmls ZWdlcycsCiAgICAgICAnZXh0ZW5kZWQnLAogICAgICAgJ3BhcmFsbGVsJywKKyAgICAgICdk dXJhdGlvbicsCiAgICAgICAnY2xlYW51cCcsCiAgICAgICAnb2xkZXh0dmVyc2lvbnMnLAog ICAgIF0sCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0 X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3Rh dGVtZW50cy5jCmluZGV4IGJlYmY4MTM0ZWIuLjBlYjUwOWQ3Y2EgMTAwNjQ0Ci0tLSBhL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC0yOTAs NiArMjkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSB0cmFj a19vcHRpb25zW10gPQogCiBzdGF0aWMgaW50CXBnc3NfbWF4ID0gNTAwMDsJLyogbWF4ICMg c3RhdGVtZW50cyB0byB0cmFjayAqLwogc3RhdGljIGludAlwZ3NzX3RyYWNrID0gUEdTU19U UkFDS19UT1A7CS8qIHRyYWNraW5nIGxldmVsICovCitzdGF0aWMgaW50CXBnc3NfdHJhY2tf bWluX2R1cmF0aW9uID0gMDsgLyogbXNlYyBvciAtMSAqLwogc3RhdGljIGJvb2wgcGdzc190 cmFja191dGlsaXR5ID0gdHJ1ZTsJLyogd2hldGhlciB0byB0cmFjayB1dGlsaXR5IGNvbW1h bmRzICovCiBzdGF0aWMgYm9vbCBwZ3NzX3RyYWNrX3BsYW5uaW5nID0gZmFsc2U7CS8qIHdo ZXRoZXIgdG8gdHJhY2sgcGxhbm5pbmcKIAkJCQkJCQkJCQkJICogZHVyYXRpb24gKi8KQEAg LTQxNCw2ICs0MTUsMTggQEAgX1BHX2luaXQodm9pZCkKIAkJCQkJCQlOVUxMLAogCQkJCQkJ CU5VTEwpOwogCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoInBnX3N0YXRfc3RhdGVtZW50 cy50cmFja19taW5fZHVyYXRpb24iLAorCQkJCQkJCSJTZXRzIHRoZSBtaW5pbXVtIGV4ZWN1 dGlvbiB0aW1lIGFib3ZlIHdoaWNoIHBsYW5zIHdpbGwgYmUgdHJhY2tlZC4iLAorCQkJCQkJ CSJaZXJvIHRyYWNrcyBhbGwgcGxhbnMuIC0xIHR1cm5zIHRoaXMgZmVhdHVyZSBvZmYuIiwK KwkJCQkJCQkmcGdzc190cmFja19taW5fZHVyYXRpb24sCisJCQkJCQkJMCwKKwkJCQkJCQkt MSwgSU5UX01BWCwKKwkJCQkJCQlQR0NfU1VTRVQsCisJCQkJCQkJR1VDX1VOSVRfTVMsCisJ CQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCU5VTEwpOworCiAJRGVmaW5lQ3Vz dG9tRW51bVZhcmlhYmxlKCJwZ19zdGF0X3N0YXRlbWVudHMudHJhY2siLAogCQkJCQkJCSAi U2VsZWN0cyB3aGljaCBzdGF0ZW1lbnRzIGFyZSB0cmFja2VkIGJ5IHBnX3N0YXRfc3RhdGVt ZW50cy4iLAogCQkJCQkJCSBOVUxMLApAQCAtOTk5LDcgKzEwMTIsOCBAQCBwZ3NzX0V4ZWN1 dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJICogY291bnRp bmcgb2Ygb3B0aW1pemFibGUgc3RhdGVtZW50cyB0aGF0IGFyZSBkaXJlY3RseSBjb250YWlu ZWQgaW4KIAkgKiB1dGlsaXR5IHN0YXRlbWVudHMuCiAJICovCi0JaWYgKHBnc3NfZW5hYmxl ZChuZXN0aW5nX2xldmVsKSAmJiBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5xdWVyeUlkICE9 IFVJTlQ2NENPTlNUKDApKQorCWlmIChwZ3NzX2VuYWJsZWQobmVzdGluZ19sZXZlbCkgJiYg cGdzc190cmFja19taW5fZHVyYXRpb24gPj0gMCAmJgorCQlxdWVyeURlc2MtPnBsYW5uZWRz dG10LT5xdWVyeUlkICE9IFVJTlQ2NENPTlNUKDApKQogCXsKIAkJLyoKIAkJICogU2V0IHVw IHRvIHRyYWNrIHRvdGFsIGVsYXBzZWQgdGltZSBpbiBFeGVjdXRvclJ1bi4gIE1ha2Ugc3Vy ZSB0aGUKQEAgLTEwNjgsMjcgKzEwODIsMzAgQEAgcGdzc19FeGVjdXRvckVuZChRdWVyeURl c2MgKnF1ZXJ5RGVzYykKIAl1aW50NjQJCXF1ZXJ5SWQgPSBxdWVyeURlc2MtPnBsYW5uZWRz dG10LT5xdWVyeUlkOwogCiAJaWYgKHF1ZXJ5SWQgIT0gVUlOVDY0Q09OU1QoMCkgJiYgcXVl cnlEZXNjLT50b3RhbHRpbWUgJiYKLQkJcGdzc19lbmFibGVkKG5lc3RpbmdfbGV2ZWwpKQor CQlwZ3NzX2VuYWJsZWQobmVzdGluZ19sZXZlbCkgJiYgcGdzc190cmFja19taW5fZHVyYXRp b24gPj0gMCkKIAl7CisJCWRvdWJsZQkJbXNlYzsKIAkJLyoKIAkJICogTWFrZSBzdXJlIHN0 YXRzIGFjY3VtdWxhdGlvbiBpcyBkb25lLiAgKE5vdGU6IGl0J3Mgb2theSBpZiBzZXZlcmFs CiAJCSAqIGxldmVscyBvZiBob29rIGFsbCBkbyB0aGlzLikKIAkJICovCiAJCUluc3RyRW5k TG9vcChxdWVyeURlc2MtPnRvdGFsdGltZSk7CiAKLQkJcGdzc19zdG9yZShxdWVyeURlc2Mt PnNvdXJjZVRleHQsCi0JCQkJICAgcXVlcnlJZCwKLQkJCQkgICBxdWVyeURlc2MtPnBsYW5u ZWRzdG10LT5zdG10X2xvY2F0aW9uLAotCQkJCSAgIHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQt PnN0bXRfbGVuLAotCQkJCSAgIFBHU1NfRVhFQywKLQkJCQkgICBxdWVyeURlc2MtPnRvdGFs dGltZS0+dG90YWwgKiAxMDAwLjAsCS8qIGNvbnZlcnQgdG8gbXNlYyAqLwotCQkJCSAgIHF1 ZXJ5RGVzYy0+ZXN0YXRlLT5lc190b3RhbF9wcm9jZXNzZWQsCi0JCQkJICAgJnF1ZXJ5RGVz Yy0+dG90YWx0aW1lLT5idWZ1c2FnZSwKLQkJCQkgICAmcXVlcnlEZXNjLT50b3RhbHRpbWUt PndhbHVzYWdlLAotCQkJCSAgIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19qaXQgPyAmcXVlcnlE ZXNjLT5lc3RhdGUtPmVzX2ppdC0+aW5zdHIgOiBOVUxMLAotCQkJCSAgIE5VTEwsCi0JCQkJ ICAgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3BhcmFsbGVsX3dvcmtlcnNfdG9fbGF1bmNoLAot CQkJCSAgIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wYXJhbGxlbF93b3JrZXJzX2xhdW5jaGVk KTsKKwkJbXNlYyA9IHF1ZXJ5RGVzYy0+dG90YWx0aW1lLT50b3RhbCAqIDEwMDAuMDsKKwkJ aWYgKG1zZWMgPj0gcGdzc190cmFja19taW5fZHVyYXRpb24pCisJCQlwZ3NzX3N0b3JlKHF1 ZXJ5RGVzYy0+c291cmNlVGV4dCwKKwkJCQkJCXF1ZXJ5SWQsCisJCQkJCQlxdWVyeURlc2Mt PnBsYW5uZWRzdG10LT5zdG10X2xvY2F0aW9uLAorCQkJCQkJcXVlcnlEZXNjLT5wbGFubmVk c3RtdC0+c3RtdF9sZW4sCisJCQkJCQlQR1NTX0VYRUMsCisJCQkJCQltc2VjLAorCQkJCQkJ cXVlcnlEZXNjLT5lc3RhdGUtPmVzX3RvdGFsX3Byb2Nlc3NlZCwKKwkJCQkJCSZxdWVyeURl c2MtPnRvdGFsdGltZS0+YnVmdXNhZ2UsCisJCQkJCQkmcXVlcnlEZXNjLT50b3RhbHRpbWUt PndhbHVzYWdlLAorCQkJCQkJcXVlcnlEZXNjLT5lc3RhdGUtPmVzX2ppdCA/ICZxdWVyeURl c2MtPmVzdGF0ZS0+ZXNfaml0LT5pbnN0ciA6IE5VTEwsCisJCQkJCQlOVUxMLAorCQkJCQkJ cXVlcnlEZXNjLT5lc3RhdGUtPmVzX3BhcmFsbGVsX3dvcmtlcnNfdG9fbGF1bmNoLAorCQkJ CQkJcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3BhcmFsbGVsX3dvcmtlcnNfbGF1bmNoZWQpOwog CX0KIAogCWlmIChwcmV2X0V4ZWN1dG9yRW5kKQpAQCAtMTExMSw3ICsxMTI4LDggQEAgcGdz c19Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5 U3RyaW5nLAogCXVpbnQ2NAkJc2F2ZWRfcXVlcnlJZCA9IHBzdG10LT5xdWVyeUlkOwogCWlu dAkJCXNhdmVkX3N0bXRfbG9jYXRpb24gPSBwc3RtdC0+c3RtdF9sb2NhdGlvbjsKIAlpbnQJ CQlzYXZlZF9zdG10X2xlbiA9IHBzdG10LT5zdG10X2xlbjsKLQlib29sCQllbmFibGVkID0g cGdzc190cmFja191dGlsaXR5ICYmIHBnc3NfZW5hYmxlZChuZXN0aW5nX2xldmVsKTsKKwli b29sCQllbmFibGVkID0gcGdzc190cmFja191dGlsaXR5ICYmIHBnc3NfZW5hYmxlZChuZXN0 aW5nX2xldmVsKSAmJgorCQkJCQkJICBwZ3NzX3RyYWNrX21pbl9kdXJhdGlvbiA+PSAwOwog CiAJLyoKIAkgKiBGb3JjZSB1dGlsaXR5IHN0YXRlbWVudHMgdG8gZ2V0IHF1ZXJ5SWQgemVy by4gIFdlIGRvIHRoaXMgZXZlbiBpbiBjYXNlcwpAQCAtMTE1NCw2ICsxMTcyLDcgQEAgcGdz c19Qcm9jZXNzVXRpbGl0eShQbGFubmVkU3RtdCAqcHN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5 U3RyaW5nLAogCQkJCQlidWZ1c2FnZTsKIAkJV2FsVXNhZ2UJd2FsdXNhZ2Vfc3RhcnQsCiAJ CQkJCXdhbHVzYWdlOworCQlkb3VibGUJCW1zZWM7CiAKIAkJYnVmdXNhZ2Vfc3RhcnQgPSBw Z0J1ZmZlclVzYWdlOwogCQl3YWx1c2FnZV9zdGFydCA9IHBnV2FsVXNhZ2U7CkBAIC0xMjA5 LDE5ICsxMjI4LDIxIEBAIHBnc3NfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBzdG10 LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJbWVtc2V0KCZ3YWx1c2FnZSwgMCwgc2l6 ZW9mKFdhbFVzYWdlKSk7CiAJCVdhbFVzYWdlQWNjdW1EaWZmKCZ3YWx1c2FnZSwgJnBnV2Fs VXNhZ2UsICZ3YWx1c2FnZV9zdGFydCk7CiAKLQkJcGdzc19zdG9yZShxdWVyeVN0cmluZywK LQkJCQkgICBzYXZlZF9xdWVyeUlkLAotCQkJCSAgIHNhdmVkX3N0bXRfbG9jYXRpb24sCi0J CQkJICAgc2F2ZWRfc3RtdF9sZW4sCi0JCQkJICAgUEdTU19FWEVDLAotCQkJCSAgIElOU1RS X1RJTUVfR0VUX01JTExJU0VDKGR1cmF0aW9uKSwKLQkJCQkgICByb3dzLAotCQkJCSAgICZi dWZ1c2FnZSwKLQkJCQkgICAmd2FsdXNhZ2UsCi0JCQkJICAgTlVMTCwKLQkJCQkgICBOVUxM LAotCQkJCSAgIDAsCi0JCQkJICAgMCk7CisJCW1zZWMgPSBJTlNUUl9USU1FX0dFVF9NSUxM SVNFQyhkdXJhdGlvbik7CisJCWlmIChtc2VjID49IHBnc3NfdHJhY2tfbWluX2R1cmF0aW9u KQorCQkJcGdzc19zdG9yZShxdWVyeVN0cmluZywKKwkJCQkJCXNhdmVkX3F1ZXJ5SWQsCisJ CQkJCQlzYXZlZF9zdG10X2xvY2F0aW9uLAorCQkJCQkJc2F2ZWRfc3RtdF9sZW4sCisJCQkJ CQlQR1NTX0VYRUMsCisJCQkJCQltc2VjLAorCQkJCQkJcm93cywKKwkJCQkJCSZidWZ1c2Fn ZSwKKwkJCQkJCSZ3YWx1c2FnZSwKKwkJCQkJCU5VTEwsCisJCQkJCQlOVUxMLAorCQkJCQkJ MCwKKwkJCQkJCTApOwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19z dGF0X3N0YXRlbWVudHMvc3FsL2R1cmF0aW9uLnNxbCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0 ZW1lbnRzL3NxbC9kdXJhdGlvbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uYjk5YzgyODhiYgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvcGdfc3Rh dF9zdGF0ZW1lbnRzL3NxbC9kdXJhdGlvbi5zcWwKQEAgLTAsMCArMSw1OCBAQAorLS0KKy0t IHRyYWNrX21pbl9kdXJhdGlvbgorLS0KKworLS0gdG9wLWxldmVsIHRyYWNraW5nIC0gc2lt cGxlIHF1ZXJ5IHByb3RvY29sCitTSE9XIHBnX3N0YXRfc3RhdGVtZW50cy50cmFjazsKK1NF VCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfbWluX2R1cmF0aW9uID0gLTE7CitTRUxFQ1Qg cGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKK1NFTEVDVCAx IEFTICJpbnQiOworU0VMRUNUIHF1ZXJ5LCBjYWxscyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50 cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMu dHJhY2tfbWluX2R1cmF0aW9uID0gMDsKK1NFTEVDVCAxIEFTICJpbnQiOworU0VMRUNUIHF1 ZXJ5LCBjYWxscyBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xM QVRFICJDIjsKKworLS0gdG9wLWxldmVsIHRyYWNraW5nIC0gZXh0ZW5kZWQgcXVlcnkgcHJv dG9jb2wKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfbWluX2R1cmF0aW9uID0gLTE7 CitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsK K1NFTEVDVCAxIFxwYXJzZSBzdG10CitcYmluZF9uYW1lZCBzdG10IFxnCitTRUxFQ1QgcXVl cnksIGNhbGxzIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzIE9SREVSIEJZIHF1ZXJ5IENPTExB VEUgIkMiOworU0VUIHBnX3N0YXRfc3RhdGVtZW50cy50cmFja19taW5fZHVyYXRpb24gPSAw OworXGJpbmRfbmFtZWQgc3RtdCBcZworU0VMRUNUIHF1ZXJ5LCBjYWxscyBGUk9NIHBnX3N0 YXRfc3RhdGVtZW50cyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKK1NFTEVDVCBwZ19z dGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworREVBTExPQ0FURSBz dG10OworCistLSBuZXN0ZWQgdHJhY2tpbmcgLSBzaW1wbGUgcXVlcnkgcHJvdG9jb2wKK1NF VCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAiYWxsIjsKK1NFTEVDVCBwZ19zdGF0X3N0 YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworU0VUIHBnX3N0YXRfc3RhdGVt ZW50cy50cmFja19taW5fZHVyYXRpb24gPSAwOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgMTsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIDE7CitTRVQgcGdfc3RhdF9zdGF0 ZW1lbnRzLnRyYWNrX21pbl9kdXJhdGlvbiA9IC0xOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgMTsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIDE7CitTRUxFQ1QgdG9wbGV2 ZWwsIGNhbGxzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworICBPUkRFUiBCWSBx dWVyeSBDT0xMQVRFICJDIjsKKworLS0gbmVzdGVkIHRyYWNraW5nIC0gZXh0ZW5kZWQgcXVl cnkgcHJvdG9jb2wKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2sgPSAiYWxsIjsKK1NF TEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworU0VU IHBnX3N0YXRfc3RhdGVtZW50cy50cmFja19taW5fZHVyYXRpb24gPSAwOworRVhQTEFJTiAo Q09TVFMgT0ZGKSBTRUxFQ1QgMTsgXHBhcnNlIHN0bXQKK1xiaW5kX25hbWVkIHN0bXQgXGcK K1xiaW5kX25hbWVkIHN0bXQgXGcKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfbWlu X2R1cmF0aW9uID0gLTE7CitcYmluZF9uYW1lZCBzdG10IFxnCitcYmluZF9uYW1lZCBzdG10 IFxnCitTRUxFQ1QgdG9wbGV2ZWwsIGNhbGxzLCBxdWVyeSBGUk9NIHBnX3N0YXRfc3RhdGVt ZW50cworICBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworLS0gdGhyZXNob2xkIGNo ZWNrCitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMg dDsKK1NFVCBwZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfbWluX2R1cmF0aW9uID0gMTAwOwor U0VMRUNUIHBnX3NsZWVwKDAuMDAxKTsJLS0gMSAgIG1zIDwgcGdfc3RhdF9zdGF0ZW1lbnRz LnRyYWNrX21pbl9kdXJhdGlvbgorU0VMRUNUIHBnX3NsZWVwKDAuNSk7CS0tIDUwMCBtcyA+ IHBnX3N0YXRfc3RhdGVtZW50cy50cmFja19taW5fZHVyYXRpb24KK1NFTEVDVCB0b3BsZXZl bCwgY2FsbHMsIHF1ZXJ5IEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzCisgIE9SREVSIEJZIHF1 ZXJ5IENPTExBVEUgIkMiOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Bnc3RhdHN0YXRl bWVudHMuc2dtbCBiL2RvYy9zcmMvc2dtbC9wZ3N0YXRzdGF0ZW1lbnRzLnNnbWwKaW5kZXgg NTAxYjQ2OGU5YS4uMjEwNDdmNmE3ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Bnc3Rh dHN0YXRlbWVudHMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGdzdGF0c3RhdGVtZW50cy5z Z21sCkBAIC05MzYsNiArOTM2LDI3IEBACiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlz dGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPgorICAgICA8dmFybmFt ZT5wZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfbWluX2R1cmF0aW9uPC92YXJuYW1lPiAoPHR5 cGU+cmVhbDwvdHlwZT4pCisgICAgIDxpbmRleHRlcm0+CisgICAgICA8cHJpbWFyeT48dmFy bmFtZT5wZ19zdGF0X3N0YXRlbWVudHMudHJhY2tfbWluX2R1cmF0aW9uPC92YXJuYW1lPiBj b25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgPC9pbmRleHRlcm0+Cisg ICAgPC90ZXJtPgorCisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIDx2YXJu YW1lPnBnX3N0YXRfc3RhdGVtZW50cy50cmFja19taW5fZHVyYXRpb248L3Zhcm5hbWU+IGlz IHRoZSBtaW5pbXVtIHN0YXRlbWVudAorICAgICAgZXhlY3V0aW9uIHRpbWUsIGluIG1pbGxp c2Vjb25kcywgdGhhdCB3aWxsIGNhdXNlIHRoZSBzdGF0ZW1lbnQgdG8KKyAgICAgIGJlIHRy YWNrZWQuIFNldHRpbmcgdGhpcyB0byA8bGl0ZXJhbD4wPC9saXRlcmFsPiB0cmFja3MgYWxs IHN0YXRlbWVudHMuCisgICAgICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4gKHRoZSBkZWZhdWx0 KSBkaXNhYmxlcyB0cmFja2luZyBvZiBzdGF0ZW1lbnRzLiBGb3IKKyAgICAgIGV4YW1wbGUs IGlmIHlvdSBzZXQgaXQgdG8gPGxpdGVyYWw+MjUwbXM8L2xpdGVyYWw+IHRoZW4gYWxsIHN0 YXRlbWVudHMKKyAgICAgIHRoYXQgcnVuIDI1MG1zIG9yIGxvbmdlciB3aWxsIGJlIHRyYWNr ZWQuIE9ubHkgc3VwZXJ1c2VycyBjYW4gY2hhbmdlIHRoaXMKKyAgICAgIHNldHRpbmcuCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAg IDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+CiAgICAgIDx2YXJuYW1lPnBnX3N0YXRfc3Rh dGVtZW50cy5zYXZlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCi0tIAoyLjM0 LjEKCg== --------------ChNnL6udu8RyMUpBJGbiD0J7--