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.96) (envelope-from ) id 1w11xX-002Qmu-0U for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Mar 2026 12:49:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w11xV-003z6Y-0p for pgsql-hackers@arkaria.postgresql.org; Fri, 13 Mar 2026 12:49:41 +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.96) (envelope-from ) id 1w11xU-003z6Q-2L for pgsql-hackers@lists.postgresql.org; Fri, 13 Mar 2026 12:49:41 +0000 Received: from forward102b.mail.yandex.net ([178.154.239.149]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w11xP-00000001wH3-3GVg for pgsql-hackers@postgresql.org; Fri, 13 Mar 2026 12:49:40 +0000 Received: from mail-nwsmtp-smtp-production-main-67.sas.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-67.sas.yp-c.yandex.net [IPv6:2a02:6b8:c23:143b:0:640:90e9:0]) by forward102b.mail.yandex.net (Yandex) with ESMTPS id E78B2C0080; Fri, 13 Mar 2026 15:49:31 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-67.sas.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id QnHkUkRGha60-4XKMY9xi; Fri, 13 Mar 2026 15:49:30 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1773406171; bh=Z0KiPHh0P+7RPQMVN157my+s5dfhEg7yODLQ+FjDoe8=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=SQiLrLfMJ6J1Ml1BbxpbpSGkPEV1NGXqw7RnCGq+aESRnQ8IHWHW21UFoYeVoL4oH 5cK9rXwhMGpRb1Bk3FrRCDV4Qsae3xKMS4L7mrDca1PPb2sgu8X9cSlDKl8KKHDz9D Ox492xPPzIhQCLV4zkxRHCKPAjTlz/3CsL2/iJ1E= Authentication-Results: mail-nwsmtp-smtp-production-main-67.sas.yp-c.yandex.net; dkim=pass header.i=@yandex.ru Content-Type: multipart/mixed; boundary="------------xK3aHQQ7cmwBQ1eA1QG1n9yL" Message-ID: <8bd78e04-6efa-4fcf-b157-8ac3b92375c8@yandex.ru> Date: Fri, 13 Mar 2026 16:04:24 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Vacuum statistics From: Alena Rybakina To: Andrei Lepikhov , pgsql-hackers Cc: Alexander Korotkov , Amit Kapila , Jim Nasby , Bertrand Drouvot , Kirill Reshke , Andrei Zubkov , Masahiko Sawada , Melanie Plageman , jian he , Sami Imseih , vignesh C , Ilia Evdokimov References: <86f76aa5-1ab5-4e2e-9b15-405051852a2a@postgrespro.ru> <2f48399f-2959-4483-938f-64edb863ca76@postgrespro.ru> <18169b68-5b10-40fd-9657-be04f2bd0161@postgrespro.ru> <612819ad-beca-41fb-bb7f-d5a7c11f0045@yandex.ru> <277ce149-4333-463d-bad6-ccd785606c7f@yandex.ru> <3f9c57bc-dc1f-4ad8-a2e1-5be15ac79264@yandex.ru> <77f1b8bc-b365-4e88-b87b-ced37fabbbf0@yandex.ru> <7a74d6af-85e2-4b48-9133-61309a965954@yandex.ru> <1885f257-46cc-4b90-8d90-41833eb62ea9@gmail.com> <0e84acdc-ba65-44fa-be1f-4d6a86bca2ac@yandex.ru> Content-Language: en-US In-Reply-To: <0e84acdc-ba65-44fa-be1f-4d6a86bca2ac@yandex.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. --------------xK3aHQQ7cmwBQ1eA1QG1n9yL Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 13.03.2026 15:51, Alena Rybakina wrote: >>> >>> In addition, it makes sense to discuss how these parameters are >>> supposed to be used. I see the following use cases: >>> >>> 1. Which tables have the most VM churn? - monitoring >>> rev_all_visible_pages normalised on the table size and its average >>> tuple width might expose the most suspicious tables (in terms of >>> table statistics). >>> 2. DML Skew. Dividing rev_all_visible_pages by the number of tuple >>> updates/deletes, normalised by the average table and tuple sizes, >>> might indicate whether changes are localised within the table. >>> 3. IndexOnlyScan effectiveness. Considering the speed of >>> rev_all_visible_pages change, normalised to the value of the >>> relallvisible statistic, we may detect tables where Index-Only Scan >>> might be inefficiently used. >> >> With the parameter that was included before (pg_class_relallfrozen >> and relallvisible >> https://github.com/MasaoFujii/postgresql/commit/99f8f3fbbc8f743290844e8c676d39dad11c5d5d) >> in the pg_stat_tables, I think I can provide isolation test to prove >> it - I can use my isolation test >> vacuum-extending-in-repetable-read.spec that I have added in the >> extension (ext_vacuum_statistics). What do you think? > > I've prepared the test. Do you think it would make sense to include it > in 0001? > I have added it in the 31th version for now and nothing else has been changed (if you don't mind, exclude it). --------------xK3aHQQ7cmwBQ1eA1QG1n9yL Content-Type: text/plain; charset=UTF-8; name="v31-0001-Track-table-VM-stability.patch" Content-Disposition: attachment; filename="v31-0001-Track-table-VM-stability.patch" Content-Transfer-Encoding: base64 RnJvbSA0ODZhMjllNmEyMmQ0M2UyOTExZWI4NDliZGIzYjNiMzllZWZhYjkxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVuYSBSeWJha2luYSA8YS5yeWJha2luYUBwb3N0 Z3Jlc3Byby5ydT4KRGF0ZTogRnJpLCAxMyBNYXIgMjAyNiAxNjowMDozOSArMDMwMApTdWJq ZWN0OiBbUEFUQ0hdIFRyYWNrIHRhYmxlIFZNIHN0YWJpbGl0eS4KCkFkZCByZXZfYWxsX3Zp c2libGVfcGFnZXMgYW5kIHJldl9hbGxfZnJvemVuX3BhZ2VzIGNvdW50ZXJzIHRvCnBnX3N0 YXRfYWxsX3RhYmxlcyB0cmFja2luZyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBhbGwtdmlz aWJsZSBhbmQKYWxsLWZyb3plbiBiaXRzIGFyZSBjbGVhcmVkIGluIHRoZSB2aXNpYmlsaXR5 IG1hcC4gVGhlc2UgYml0cyBhcmUgY2xlYXJlZCBieQpiYWNrZW5kIHByb2Nlc3NlcyBkdXJp bmcgcmVndWxhciBETUwgb3BlcmF0aW9ucy4gSGVuY2UsIHRoZSBjb3VudGVycyBhcmUgcGxh Y2VkCmluIHRhYmxlIHN0YXRpc3RpYyBlbnRyeS4KCkEgaGlnaCByZXZfYWxsX3Zpc2libGVf cGFnZXMgcmF0ZSByZWxhdGl2ZSB0byBETUwgdm9sdW1lIGluZGljYXRlcwp0aGF0IG1vZGlm aWNhdGlvbnMgYXJlIHNjYXR0ZXJlZCBhY3Jvc3MgcHJldmlvdXNseS1jbGVhbiBwYWdlcyBy YXRoZXIKdGhhbiBjb25jZW50cmF0ZWQgb24gYWxyZWFkeS1kaXJ0eSBvbmVzLCBjYXVzaW5n IGluZGV4LW9ubHkgc2NhbnMgdG8KZmFsbCBiYWNrIHRvIGhlYXAgZmV0Y2hlcy4gIEEgaGln aCByZXZfYWxsX2Zyb3plbl9wYWdlcyByYXRlIGluZGljYXRlcwp0aGF0IHZhY3V1bSdzIGZy ZWV6aW5nIHdvcmsgaXMgYmVpbmcgZnJlcXVlbnRseSB1bmRvbmUgYnkgY29uY3VycmVudApE TUwuCgpBdXRob3JzOiBBbGVuYSBSeWJha2luYSA8bGVuYS5yaWJhY2tpbmFAeWFuZGV4LnJ1 PiwKICAgICAgICAgQW5kcmVpIExlcGlraG92IDxsZXBpaG92QGdtYWlsLmNvbT4sCiAgICAg ICAgIEFuZHJlaSBadWJrb3YgPGEuenVia292QHBvc3RncmVzcHJvLnJ1PgpSZXZpZXdlZC1i eTogRGlsaXAgS3VtYXIgPGRpbGlwYmFsYXV0QGdtYWlsLmNvbT4sCiAgICAgICAgIE1hc2Fo aWtvIFNhd2FkYSA8c2F3YWRhLm1zaGtAZ21haWwuY29tPiwKICAgICAgICAgSWxpYSBFdmRv a2ltb3YgPGlseWEuZXZkb2tpbW92QHRhbnRvcmxhYnMuY29tPiwKICAgICAgICAgSmlhbiBI ZSA8amlhbi51bml2ZXJzYWxpdHlAZ21haWwuY29tPiwKICAgICAgICAgS2lyaWxsIFJlc2hr ZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4sCiAgICAgICAgIEFsZXhhbmRlciBLb3JvdGtv diA8YWVrb3JvdGtvdkBnbWFpbC5jb20+LAogICAgICAgICBKaW0gTmFzYnkgPGpuYXNieUB1 cGdyYWRlLmNvbT4sCiAgICAgICAgIFNhbWkgSW1zZWloIDxzYW1pbXNlaWhAZ21haWwuY29t PiwKICAgICAgICAgS2FyaW5hIExpdHNrZXZpY2ggPGxpdHNrZXZpY2hrYXJpbmFAZ21haWwu Y29tPgotLS0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICAg ICB8ICAzMiArKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyAg ICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAg ICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0 aW9uLmMgIHwgICAyICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jICAg ICAgICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAg ICAgICAgICAgfCAgMTIgKy0KIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAxNyArLQogLi4uL3QvMDUyX3ZhY3V1bV9leHRlbmRpbmdfZnJlZXpl X3Rlc3QucGwgICAgIHwgMjE1ICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgICA2ICsKIDkgZmlsZXMgY2hhbmdl ZCwgMzAwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTJfdmFjdXVtX2V4dGVuZGluZ19mcmVlemVfdGVz dC5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IGI3N2QxODlhNTAwLi5mYjY1Njk3N2Iy ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC00MDkwLDYgKzQwOTAsMzggQEAgZGVzY3Jp cHRpb24gfCBXYWl0aW5nIGZvciBhIG5ld2x5IGluaXRpYWxpemVkIFdBTCBmaWxlIHRvIHJl YWNoIGR1cmFibGUgc3RvcmFnZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93 PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVs ZD5yZXZfYWxsX3Zpc2libGVfcGFnZXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgdGlt ZXMgdGhlIGFsbC12aXNpYmxlIGJpdCBpbiB0aGUKKyAgICAgICA8bGluayBsaW5rZW5kPSJz dG9yYWdlLXZtIj52aXNpYmlsaXR5IG1hcDwvbGluaz4gd2FzIGNsZWFyZWQgZm9yIGEKKyAg ICAgICBwYWdlIG9mIHRoaXMgdGFibGUuICBUaGUgYWxsLXZpc2libGUgYml0IGlzIGNsZWFy ZWQgYnkgYmFja2VuZAorICAgICAgIHByb2Nlc3NlcyB3aGVuIHRoZXkgbW9kaWZ5IGEgaGVh cCBwYWdlIHRoYXQgd2FzIHByZXZpb3VzbHkgbWFya2VkCisgICAgICAgYWxsLXZpc2libGUs IGZvciBleGFtcGxlIGR1cmluZyBhbiA8Y29tbWFuZD5JTlNFUlQ8L2NvbW1hbmQ+LAorICAg ICAgIDxjb21tYW5kPlVQREFURTwvY29tbWFuZD4sIG9yIDxjb21tYW5kPkRFTEVURTwvY29t bWFuZD4uCisgICAgICAgQSBoaWdoIHJhdGUgb2YgY2hhbmdlIGluIHRoaXMgY291bnRlciBt ZWFucyB0aGF0IGluZGV4LW9ubHkgc2NhbnMKKyAgICAgICBvbiB0aGlzIHRhYmxlIG1heSBm cmVxdWVudGx5IG5lZWQgdG8gZmFsbCBiYWNrIHRvIGhlYXAgZmV0Y2hlcywKKyAgICAgICBh bmQgdGhhdCB2YWN1dW0gbXVzdCByZS1kbyB2aXNpYmlsaXR5IG1hcCB3b3JrIG9uIHRob3Nl IHBhZ2VzLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5yZXZfYWxsX2Zy b3plbl9wYWdlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE51bWJlciBvZiB0aW1lcyB0aGUgYWxsLWZy b3plbiBiaXQgaW4gdGhlCisgICAgICAgPGxpbmsgbGlua2VuZD0ic3RvcmFnZS12bSI+dmlz aWJpbGl0eSBtYXA8L2xpbms+IHdhcyBjbGVhcmVkIGZvciBhCisgICAgICAgcGFnZSBvZiB0 aGlzIHRhYmxlLiAgVGhlIGFsbC1mcm96ZW4gYml0IGlzIGNsZWFyZWQgYnkgYmFja2VuZAor ICAgICAgIHByb2Nlc3NlcyB3aGVuIHRoZXkgbW9kaWZ5IGEgaGVhcCBwYWdlIHRoYXQgd2Fz IHByZXZpb3VzbHkgbWFya2VkCisgICAgICAgYWxsLWZyb3plbi4gIEEgaGlnaCB2YWx1ZSBj b21wYXJlZCB0byB0aGUgbnVtYmVyIG9mIHZhY3V1bSBjeWNsZXMKKyAgICAgICBpbmRpY2F0 ZXMgdGhhdCBETUwgYWN0aXZpdHkgaXMgZnJlcXVlbnRseSB1bmRvaW5nIHRoZSBmcmVlemlu ZyB3b3JrCisgICAgICAgcGVyZm9ybWVkIGJ5IHZhY3V1bS4KKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAg ICAgICA8c3RydWN0ZmllbGQ+bGFzdF92YWN1dW08L3N0cnVjdGZpZWxkPiA8dHlwZT50aW1l c3RhbXAgd2l0aCB0aW1lIHpvbmU8L3R5cGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 aXNpYmlsaXR5bWFwLmMKaW5kZXggMzA0N2JkNDZkZWYuLjJlN2MyOGVhMzA3IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC05Miw2ICs5Miw3IEBA CiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxv Z3V0aWxzLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicGdzdGF0Lmgi CiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVm bWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCkBAIC0xNjEsNiArMTYyLDE1IEBA IHZpc2liaWxpdHltYXBfY2xlYXIoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxr LCBCdWZmZXIgdm1idWYsIHVpbnQ4IGZsYWdzCiAKIAlpZiAobWFwW21hcEJ5dGVdICYgbWFz aykKIAl7CisJCS8qCisJCSAqIFRyYWNrIGhvdyBvZnRlbiBhbGwtdmlzaWJsZSBvciBhbGwt ZnJvemVuIGJpdHMgYXJlIGNsZWFyZWQgaW4gdGhlCisJCSAqIHZpc2liaWxpdHkgbWFwLgor CQkgKi8KKwkJaWYgKG1hcFttYXBCeXRlXSA+PiBtYXBPZmZzZXQgJiBmbGFncyAmIFZJU0lC SUxJVFlNQVBfQUxMX1ZJU0lCTEUpCisJCQlwZ3N0YXRfY291bnRfdm1fcmV2X2FsbF92aXNp YmxlKHJlbCk7CisJCWlmIChtYXBbbWFwQnl0ZV0gPj4gbWFwT2Zmc2V0ICYgZmxhZ3MgJiBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pCisJCQlwZ3N0YXRfY291bnRfdm1fcmV2X2FsbF9m cm96ZW4ocmVsKTsKKwogCQltYXBbbWFwQnl0ZV0gJj0gfm1hc2s7CiAKIAkJTWFya0J1ZmZl ckRpcnR5KHZtYnVmKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRl eCA3NTUzZjMxZmVmMC4uZmE0Yzc0YmNkNWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKQEAgLTcxNSw2ICs3MTUsOCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X2Fs bF90YWJsZXMgQVMKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2RlYWRfdHVwbGVzKEMub2lk KSBBUyBuX2RlYWRfdHVwLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfbW9kX3NpbmNlX2Fu YWx5emUoQy5vaWQpIEFTIG5fbW9kX3NpbmNlX2FuYWx5emUsCiAgICAgICAgICAgICBwZ19z dGF0X2dldF9pbnNfc2luY2VfdmFjdXVtKEMub2lkKSBBUyBuX2luc19zaW5jZV92YWN1dW0s CisgICAgICAgICAgICBwZ19zdGF0X2dldF9yZXZfYWxsX3Zpc2libGVfcGFnZXMoQy5vaWQp IEFTIHJldl9hbGxfdmlzaWJsZV9wYWdlcywKKyAgICAgICAgICAgIHBnX3N0YXRfZ2V0X3Jl dl9hbGxfZnJvemVuX3BhZ2VzKEMub2lkKSBBUyByZXZfYWxsX2Zyb3plbl9wYWdlcywKICAg ICAgICAgICAgIHBnX3N0YXRfZ2V0X2xhc3RfdmFjdXVtX3RpbWUoQy5vaWQpIGFzIGxhc3Rf dmFjdXVtLAogICAgICAgICAgICAgcGdfc3RhdF9nZXRfbGFzdF9hdXRvdmFjdXVtX3RpbWUo Qy5vaWQpIGFzIGxhc3RfYXV0b3ZhY3V1bSwKICAgICAgICAgICAgIHBnX3N0YXRfZ2V0X2xh c3RfYW5hbHl6ZV90aW1lKEMub2lkKSBhcyBsYXN0X2FuYWx5emUsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfcmVsYXRpb24uYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCmluZGV4IGJjOGM0M2I5NmFh Li5iYjI2ZTk3ODk4ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv cGdzdGF0X3JlbGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X3JlbGF0aW9uLmMKQEAgLTg3OSw2ICs4NzksOCBAQCBwZ3N0YXRfcmVsYXRpb25fZmx1 c2hfY2IoUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQogCiAJdGFi ZW50cnktPmJsb2Nrc19mZXRjaGVkICs9IGxzdGF0cy0+Y291bnRzLmJsb2Nrc19mZXRjaGVk OwogCXRhYmVudHJ5LT5ibG9ja3NfaGl0ICs9IGxzdGF0cy0+Y291bnRzLmJsb2Nrc19oaXQ7 CisJdGFiZW50cnktPnJldl9hbGxfdmlzaWJsZV9wYWdlcyArPSBsc3RhdHMtPmNvdW50cy5y ZXZfYWxsX3Zpc2libGVfcGFnZXM7CisJdGFiZW50cnktPnJldl9hbGxfZnJvemVuX3BhZ2Vz ICs9IGxzdGF0cy0+Y291bnRzLnJldl9hbGxfZnJvemVuX3BhZ2VzOwogCiAJLyogQ2xhbXAg bGl2ZV90dXBsZXMgaW4gY2FzZSBvZiBuZWdhdGl2ZSBkZWx0YV9saXZlX3R1cGxlcyAqLwog CXRhYmVudHJ5LT5saXZlX3R1cGxlcyA9IE1heCh0YWJlbnRyeS0+bGl2ZV90dXBsZXMsIDAp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRleCA3M2NhMGJiMGI3Zi4u OTAxZjNkZDU1YTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC0x MDYsNiArMTA2LDEyIEBAIFBHX1NUQVRfR0VUX1JFTEVOVFJZX0lOVDY0KHR1cGxlc191cGRh dGVkKQogLyogcGdfc3RhdF9nZXRfdmFjdXVtX2NvdW50ICovCiBQR19TVEFUX0dFVF9SRUxF TlRSWV9JTlQ2NCh2YWN1dW1fY291bnQpCiAKKy8qIHBnX3N0YXRfZ2V0X3Jldl9hbGxfZnJv emVuX3BhZ2VzICovCitQR19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NChyZXZfYWxsX2Zyb3pl bl9wYWdlcykKKworLyogcGdfc3RhdF9nZXRfcmV2X2FsbF92aXNpYmxlX3BhZ2VzICovCitQ R19TVEFUX0dFVF9SRUxFTlRSWV9JTlQ2NChyZXZfYWxsX3Zpc2libGVfcGFnZXMpCisKICNk ZWZpbmUgUEdfU1RBVF9HRVRfUkVMRU5UUllfRkxPQVQ4KHN0YXQpCQkJCQkJXAogRGF0dW0J CQkJCQkJCQkJCQkJCQlcCiBDcHBDb25jYXQocGdfc3RhdF9nZXRfLHN0YXQpKFBHX0ZVTkNU SU9OX0FSR1MpCQkJCQlcCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA1ZTVlMzNm NjRmYy4uOTYxMzM3Y2UyODIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTI2 OTMsNiArMTI2OTMsMTYgQEAKICAgcHJvc3JjID0+ICdoYXNob2lkOCcgfSwKIHsgb2lkID0+ ICc4MjgxJywgZGVzY3IgPT4gJ2hhc2gnLAogICBwcm9uYW1lID0+ICdoYXNob2lkOGV4dGVu ZGVkJywgcHJvcmV0dHlwZSA9PiAnaW50OCcsCi0gIHByb2FyZ3R5cGVzID0+ICdvaWQ4IGlu dDgnLCBwcm9zcmMgPT4gJ2hhc2hvaWQ4ZXh0ZW5kZWQnIH0sCisgIHByb2FyZ3R5cGVzID0+ ICdvaWQ4IGludDgnLCAgIHByb3NyYyA9PiAnaGFzaG9pZDhleHRlbmRlZCcgfSwKIAoreyBv aWQgPT4gJzgwMDInLAorICBkZXNjciA9PiAnc3RhdGlzdGljczogbnVtYmVyIG9mIHRpbWVz IHRoZSBhbGwtdmlzaWJsZSBwYWdlcyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgd2FzIHJlbW92 ZWQgZm9yIHBhZ2VzIG9mIHRhYmxlJywKKyAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfcmV2 X2FsbF92aXNpYmxlX3BhZ2VzJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxl bCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywK KyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9yZXZfYWxsX3Zpc2libGVfcGFnZXMnIH0sCit7 IG9pZCA9PiAnODAwMycsCisgIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBudW1iZXIgb2YgdGlt ZXMgdGhlIGFsbC1mcm96ZW4gcGFnZXMgaW4gdGhlIHZpc2liaWxpdHkgbWFwIHdhcyByZW1v dmVkIGZvciBwYWdlcyBvZiB0YWJsZScsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3Jl dl9hbGxfZnJvemVuX3BhZ2VzJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAorICBwcm9wYXJhbGxl bCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywK KyAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9yZXZfYWxsX2Zyb3plbl9wYWdlcycgfSwKIF0K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0 LmgKaW5kZXggZmZmN2VjYzI1MzMuLjA0Y2NiM2MwNmMyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaApAQCAtMTU2LDYgKzE1 Niw4IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9UYWJsZUNvdW50cwogCiAJUGdTdGF0X0Nv dW50ZXIgYmxvY2tzX2ZldGNoZWQ7CiAJUGdTdGF0X0NvdW50ZXIgYmxvY2tzX2hpdDsKKwlQ Z1N0YXRfQ291bnRlciByZXZfYWxsX3Zpc2libGVfcGFnZXM7CisJUGdTdGF0X0NvdW50ZXIg cmV2X2FsbF9mcm96ZW5fcGFnZXM7CiB9IFBnU3RhdF9UYWJsZUNvdW50czsKIAogLyogLS0t LS0tLS0tLQpAQCAtMjE0LDcgKzIxNiw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9UYWJs ZVhhY3RTdGF0dXMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKLSNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9S TUFUX0lECTB4MDFBNUJDQkIKKyNkZWZpbmUgUEdTVEFUX0ZJTEVfRk9STUFUX0lECTB4MDFB NUJDQkMKIAogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X0FyY2hpdmVyU3RhdHMKIHsKQEAgLTQ0 Nyw2ICs0NDksOCBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdFRhYkVudHJ5CiAKIAlQ Z1N0YXRfQ291bnRlciBibG9ja3NfZmV0Y2hlZDsKIAlQZ1N0YXRfQ291bnRlciBibG9ja3Nf aGl0OworCVBnU3RhdF9Db3VudGVyIHJldl9hbGxfdmlzaWJsZV9wYWdlczsKKwlQZ1N0YXRf Q291bnRlciByZXZfYWxsX2Zyb3plbl9wYWdlczsKIAogCVRpbWVzdGFtcFR6IGxhc3RfdmFj dXVtX3RpbWU7CS8qIHVzZXIgaW5pdGlhdGVkIHZhY3V1bSAqLwogCVBnU3RhdF9Db3VudGVy IHZhY3V1bV9jb3VudDsKQEAgLTcyMiw2ICs3MjYsMTcgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0 X3JlcG9ydF9hbmFseXplKFJlbGF0aW9uIHJlbCwKIAkJaWYgKHBnc3RhdF9zaG91bGRfY291 bnRfcmVsYXRpb24ocmVsKSkJCQkJCQlcCiAJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNvdW50 cy5ibG9ja3NfaGl0Kys7CQkJCVwKIAl9IHdoaWxlICgwKQorLyogY291bnQgcmV2b2NhdGlv bnMgb2YgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB2aXNpYmlsaXR5IG1h cCAqLworI2RlZmluZSBwZ3N0YXRfY291bnRfdm1fcmV2X2FsbF92aXNpYmxlKHJlbCkJCQkJ CQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRf cmVsYXRpb24ocmVsKSkJCQkJCQlcCisJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNvdW50cy5y ZXZfYWxsX3Zpc2libGVfcGFnZXMrKzsJXAorCX0gd2hpbGUgKDApCisjZGVmaW5lIHBnc3Rh dF9jb3VudF92bV9yZXZfYWxsX2Zyb3plbihyZWwpCQkJCQkJXAorCWRvIHsJCQkJCQkJCQkJ CQkJCQlcCisJCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkpCQkJCQkJ XAorCQkJKHJlbCktPnBnc3RhdF9pbmZvLT5jb3VudHMucmV2X2FsbF9mcm96ZW5fcGFnZXMr KzsJXAorCX0gd2hpbGUgKDApCiAKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3VudF9oZWFwX2lu c2VydChSZWxhdGlvbiByZWwsIFBnU3RhdF9Db3VudGVyIG4pOwogZXh0ZXJuIHZvaWQgcGdz dGF0X2NvdW50X2hlYXBfdXBkYXRlKFJlbGF0aW9uIHJlbCwgYm9vbCBob3QsIGJvb2wgbmV3 cGFnZSk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA1Ml92YWN1dW1fZXh0 ZW5kaW5nX2ZyZWV6ZV90ZXN0LnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTJfdmFjdXVt X2V4dGVuZGluZ19mcmVlemVfdGVzdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uMzg0ZTEyMzM4MWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzA1Ml92YWN1dW1fZXh0ZW5kaW5nX2ZyZWV6ZV90ZXN0LnBsCkBAIC0wLDAg KzEsMjE1IEBACisjIENvcHlyaWdodCAoYykgMjAyNSBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorIworIyBUZXN0IGN1bXVsYXRpdmUgdmFjdXVtIHN0YXRzIHN5c3Rl bSB1c2luZyBUQVAKKyMKKyMgSW4gc2hvcnQsIHRoaXMgdGVzdCB2YWxpZGF0ZXMgdGhlIGNv cnJlY3RuZXNzIGFuZCBzdGFiaWxpdHkgb2YgY3VtdWxhdGl2ZQorIyB2YWN1dW0gc3RhdGlz dGljcyBhY2NvdW50aW5nIGFyb3VuZCBmcmVlemluZywgdmlzaWJpbGl0eSwgYW5kIHJldmlz aW9uCisjIHRyYWNraW5nIGFjcm9zcyBWQUNVVU0gYW5kIGJhY2tlbmQgb3BlcmF0aW9ucy4K KwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7 CisKK3BsYW4gdGVzdHMgPT4gMTA7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg VGVzdCBjbHVzdGVyIHNldHVwCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK215ICRu b2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCd2YWN1dW1fZXh0ZW5kaW5n X2ZyZWV6ZV90ZXN0Jyk7Ciskbm9kZS0+aW5pdDsKKworIyBDb25maWd1cmUgdGhlIHNlcnZl ciBmb3IgYWdncmVzc2l2ZSBmcmVlemluZyBiZWhhdmlvciB1c2VkIGJ5IHRoZSB0ZXN0Cisk bm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHF7CisJbG9nX21pbl9tZXNz YWdlcyA9IG5vdGljZQorICAgIHZhY3V1bV9mcmVlemVfbWluX2FnZSA9IDAKKyAgICB2YWN1 dW1fZnJlZXplX3RhYmxlX2FnZSA9IDAKK30pOworCiskbm9kZS0+c3RhcnQoKTsKKworIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEYXRhYmFzZSBjcmVhdGlvbiBhbmQgaW5pdGlh bGl6YXRpb24KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCBxeworCUNSRUFURSBEQVRBQkFTRSBzdGF0aXN0aWNfdmFjdXVtX2Rh dGFiYXNlX3JlZ3Jlc3Npb247Cit9KTsKKworIyBNYWluIHRlc3QgZGF0YWJhc2UgbmFtZQor bXkgJGRibmFtZSA9ICdzdGF0aXN0aWNfdmFjdXVtX2RhdGFiYXNlX3JlZ3Jlc3Npb24nOwor CisjIEVuYWJsZSBuZWNlc3Nhcnkgc2V0dGluZ3MgYW5kIGZvcmNlIHRoZSBzdGF0cyBjb2xs ZWN0b3IgdG8gZmx1c2ggbmV4dAorJG5vZGUtPnNhZmVfcHNxbCgkZGJuYW1lLCBxeworICAg IFNFVCB0cmFja19mdW5jdGlvbnMgPSAnYWxsJzsKKyAgICBTRUxFQ1QgcGdfc3RhdF9mb3Jj ZV9uZXh0X2ZsdXNoKCk7Cit9KTsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBU aW1pbmcgcGFyYW1ldGVycyBmb3IgcG9sbGluZyBsb29wcworIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorCitteSAkdGltZW91dCAgICA9IDMwOyAgICAgIyBvdmVyYWxsIHdhaXQgdGlt ZW91dCBpbiBzZWNvbmRzCitteSAkaW50ZXJ2YWwgICA9IDAuMDE1OyAgIyBwb2xsIGludGVy dmFsIGluIHNlY29uZHMgKDE1IG1zKQorbXkgJHN0YXJ0X3RpbWUgPSB0aW1lKCk7CitteSAk dXBkYXRlZCAgICA9IDA7CisKKyMgUG9sbHMgc3RhdGlzdGljcyB1bnRpbCB0aGUgbmFtZWQg Y29sdW1ucyBleGNlZWQgdGhlIHByb3ZpZGVkCisjIGJhc2VsaW5lIHZhbHVlcyBvciB1bnRp bCB0aW1lb3V0LgorIworIyBydW5fdmFjdXVtIGlzIGEgYm9vbGVhbiAoMCBvciAxKSBtZWFu cyB3ZSBuZWVkIHRvIGZldGNoIGZyb3plbiBhbmQgdmlzaWJsZSBwYWdlcworIyBmcm9tIHBn X2NsYXNzIHRhYmxlLCBvdGhlcndpc2Ugd2UgbmVlZCB0byBmZXRjaCBmcm96ZW4gYW5kIHZp c2libGUgcGFnZXMgZnJvbSBwZ19zdGF0X2FsbF90YWJsZXMgdGFibGUuCisjIFJldHVybnM6 IDEgaWYgdGhlIGNvbmRpdGlvbiBpcyBtZXQgYmVmb3JlIHRpbWVvdXQsIDAgb3RoZXJ3aXNl Lgorc3ViIHdhaXRfZm9yX3ZhY3V1bV9zdGF0cyB7CisgICAgbXkgKCVhcmdzKSA9IEBfOwor ICAgIG15ICRydW5fdmFjdXVtID0gKCRhcmdze3J1bl92YWN1dW19IG9yIDApOworICAgIG15 ICRyZXN1bHRfcXVlcnk7CisgICAgbXkgJHNxbDsKKworICAgIG15ICRzdGFydCA9IHRpbWUo KTsKKyAgICB3aGlsZSAoKHRpbWUoKSAtICRzdGFydCkgPCAkdGltZW91dCkgeworCisgICAg ICAgIGlmICgkcnVuX3ZhY3V1bSkgeworICAgICAgICAgICAgJG5vZGUtPnNhZmVfcHNxbCgk ZGJuYW1lLCAnVkFDVVVNIHZlc3RhdCcpOworCisgICAgICAgICAgICAkc3FsID0gIgorICAg ICAgICAgICAgU0VMRUNUIHJlbGFsbGZyb3plbiA+IDAKKyAgICAgICAgICAgICAgICBBTkQg cmVsYWxsdmlzaWJsZSA+IDAKKyAgICAgICAgICAgICAgICBGUk9NIHBnX2NsYXNzIGMKKyAg ICAgICAgICAgICAgICBXSEVSRSBjLnJlbG5hbWUgPSAndmVzdGF0JyI7CisgICAgICAgIH0K KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAkc3FsID0gIgorICAgICAgICAgICAgU0VM RUNUIHJldl9hbGxfZnJvemVuX3BhZ2VzID4gMAorICAgICAgICAgICAgICAgIEFORCByZXZf YWxsX3Zpc2libGVfcGFnZXMgPiAwCisgICAgICAgICAgICAgICAgRlJPTSBwZ19zdGF0X2Fs bF90YWJsZXMKKyAgICAgICAgICAgICAgICBXSEVSRSByZWxuYW1lID0gJ3Zlc3RhdCciOwor ICAgICAgICB9CisKKyAgICAgICAgJHJlc3VsdF9xdWVyeSA9ICRub2RlLT5zYWZlX3BzcWwo JGRibmFtZSwgJHNxbCk7CisKKyAgICAgICAgcmV0dXJuIDEgaWYgKGRlZmluZWQgJHJlc3Vs dF9xdWVyeSAmJiAkcmVzdWx0X3F1ZXJ5IGVxICd0Jyk7CisKKyAgICAgICAgIyBzdWItc2Vj b25kIHNsZWVwCisgICAgICAgIHNsZWVwKCRpbnRlcnZhbCk7CisgICAgfQorCisgICAgcmV0 dXJuIDA7Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVmFyaWFibGVzIHRv IGhvbGQgdmFjdXVtIHN0YXRpc3RpY3Mgc25hcHNob3RzIGZvciBjb21wYXJpc29ucworIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitteSAkcmVsYWxsdmlzaWJsZSA9IDA7CitteSAk cmVsYWxsZnJvemVuID0gMDsKKworbXkgJHJlbGFsbHZpc2libGVfcHJldiA9IDA7CitteSAk cmVsYWxsZnJvemVuX3ByZXYgPSAwOworCitteSAkcmV2X2FsbF9mcm96ZW5fcGFnZXMgPSAw OworbXkgJHJldl9hbGxfdmlzaWJsZV9wYWdlcyA9IDA7CisKK215ICRyZXM7CisKKyMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgZmV0Y2hfdmFjdXVtX3N0YXRzCisjCisjIExvYWRz IGN1cnJlbnQgdmFsdWVzIG9mIHRoZSByZWxldmFudCB2YWN1dW0gY291bnRlcnMgZm9yIHRo ZSB0ZXN0IHRhYmxlCisjIGludG8gdGhlIHBhY2thZ2UtbGV2ZWwgdmFyaWFibGVzIGFib3Zl IHNvIHRlc3RzIGNhbiBjb21wYXJlIGxhdGVyLgorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorCitzdWIgZmV0Y2hfdmFjdXVtX3N0YXRzIHsKKyAgICBteSAkYmFzZV9zdGF0aXN0aWNz ID0gJG5vZGUtPnNhZmVfcHNxbCgKKyAgICAgICAgJGRibmFtZSwKKyAgICAgICAgIlNFTEVD VCBjLnJlbGFsbHZpc2libGUsIGMucmVsYWxsZnJvemVuLAorICAgICAgICAgICAgICAgIHJl dl9hbGxfdmlzaWJsZV9wYWdlcywgcmV2X2FsbF9mcm96ZW5fcGFnZXMKKyAgICAgICAgICAg RlJPTSBwZ19jbGFzcyBjCisgICAgICAgICAgIExFRlQgSk9JTiBwZ19zdGF0X2FsbF90YWJs ZXMgcyBPTiBzLnJlbGlkID0gYy5vaWQKKyAgICAgICAgICBXSEVSRSBjLnJlbG5hbWUgPSAn dmVzdGF0JzsiCisgICAgKTsKKworICAgICRiYXNlX3N0YXRpc3RpY3MgPX4gcy9ccypcfFxz Ki8gL2c7ICAgIyB0cmFuc2Zvcm0gIiB8ICIgaW50byBzcGFjZQorICAgICgkcmVsYWxsdmlz aWJsZSwgJHJlbGFsbGZyb3plbiwgJHJldl9hbGxfdmlzaWJsZV9wYWdlcywgJHJldl9hbGxf ZnJvemVuX3BhZ2VzKQorICAgICAgICA9IHNwbGl0IC9ccysvLCAkYmFzZV9zdGF0aXN0aWNz OworfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3QgMTogQ3JlYXRlIHRl c3QgdGFibGUsIHBvcHVsYXRlIGl0IGFuZCBydW4gYW4gaW5pdGlhbCB2YWN1dW0gdG8gZm9y Y2UgZnJlZXppbmcKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworJG5vZGUtPnNhZmVf cHNxbCgkZGJuYW1lLCBxeworCVNFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsK KwlDUkVBVEUgVEFCTEUgdmVzdGF0ICh4IGludCkKKwkJV0lUSCAoYXV0b3ZhY3V1bV9lbmFi bGVkID0gb2ZmLCBmaWxsZmFjdG9yID0gNzApOworCUlOU0VSVCBJTlRPIHZlc3RhdCBTRUxF Q1QgeCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBBUyBnKHgpOworCUFOQUxZWkUg dmVzdGF0OworfSk7CisKKyMgUG9sbCB0aGUgc3RhdHMgdmlldyB1bnRpbCB0aGUgZXhwZWN0 ZWQgZGVsdGFzIGFwcGVhciBvciB0aW1lb3V0LgorJHVwZGF0ZWQgPSB3YWl0X2Zvcl92YWN1 dW1fc3RhdHMocnVuX3ZhY3V1bSA9PiAxKTsKKworb2soJHVwZGF0ZWQsCisgICAndmFjdXVt IHN0YXRzIHVwZGF0ZWQgYWZ0ZXIgdmFjdXVtaW5nIHRoZSB0YWJsZSAocmVsYWxsZnJvemVu IGFuZCByZWxhbGx2aXNpYmxlIGFkdmFuY2VkKScpCisgIG9yIGRpYWcgIlRpbWVvdXQgd2Fp dGluZyBmb3IgcGdfc3RhdHNfdmFjdXVtX3RhYmxlcyB0byB1cGRhdGUgYWZ0ZXIgJHRpbWVv dXQgc2Vjb25kcyBkdXJpbmcgdmFjdXVtIjsKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIyBTbmFwc2hvdCBjdXJyZW50IHN0YXRpc3RpY3MgZm9yIGxhdGVyIGNvbXBhcmlzb24K KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZmV0Y2hfdmFjdXVtX3N0YXRzKCk7CisK KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVmVyaWZ5IGluaXRpYWwgc3RhdGlzdGlj cyBhZnRlciB2YWN1dW0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK29rKCRyZWxhbGxm cm96ZW4gPiAkcmVsYWxsZnJvemVuX3ByZXYsICdyZWxhbGxmcm96ZW4gaGFzIGluY3JlYXNl ZCcpOworb2soJHJlbGFsbHZpc2libGUgPiAkcmVsYWxsdmlzaWJsZV9wcmV2LCAncmVsYWxs dmlzaWJsZSBoYXMgaW5jcmVhc2VkJyk7CitvaygkcmV2X2FsbF9mcm96ZW5fcGFnZXMgPT0g MCwgJ3Jldl9hbGxfZnJvemVuX3BhZ2VzIHN0YXkgdGhlIHNhbWUnKTsKK29rKCRyZXZfYWxs X3Zpc2libGVfcGFnZXMgPT0gMCwgJ3Jldl9hbGxfdmlzaWJsZV9wYWdlcyBzdGF5IHRoZSBz YW1lJyk7CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCAyOiBUcmlnZ2Vy IGJhY2tlbmQgdXBkYXRlcworIyBCYWNrZW5kIGFjdGl2aXR5IHNob3VsZCByZXNldCBwZXIt cGFnZSB2aXNpYmlsaXR5L2ZyZWV6ZSBtYXJrcyBhbmQgaW5jcmVtZW50IHJldmlzaW9uIGNv dW50ZXJzCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiskcmVsYWxsZnJvemVuX3ByZXYg PSAkcmVsYWxsZnJvemVuOworJHJlbGFsbHZpc2libGVfcHJldiA9ICRyZWxhbGx2aXNpYmxl OworCiskbm9kZS0+c2FmZV9wc3FsKCRkYm5hbWUsIHF7CisgICAgVVBEQVRFIHZlc3RhdCBT RVQgeCA9IHggKyAxMDAxOworfSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJGRibmFtZSwgJ1NF TEVDVCBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKScpOworCisjIFBvbGwgdW50aWwgc3Rh dHMgdXBkYXRlIG9yIHRpbWVvdXQuCiskdXBkYXRlZCA9IHdhaXRfZm9yX3ZhY3V1bV9zdGF0 cyhydW5fdmFjdXVtID0+IDApOworb2soJHVwZGF0ZWQsCisgICAndmFjdXVtIHN0YXRzIHVw ZGF0ZWQgYWZ0ZXIgYmFja2VuZCB0dXBsZSB1cGRhdGVzIChyZXZfYWxsX2Zyb3plbl9wYWdl cyBhbmQgcmV2X2FsbF92aXNpYmxlX3BhZ2VzIGFkdmFuY2VkKScpCisgIG9yIGRpYWcgIlRp bWVvdXQgd2FpdGluZyBmb3IgcGdfc3RhdHNfdmFjdXVtXyogdXBkYXRlIGFmdGVyICR0aW1l b3V0IHNlY29uZHMiOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNuYXBzaG90 IGN1cnJlbnQgc3RhdGlzdGljcyBmb3IgbGF0ZXIgY29tcGFyaXNvbgorIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorCitmZXRjaF92YWN1dW1fc3RhdHMoKTsKKworIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIyBDaGVjayB1cGRhdGVkIHN0YXRpc3RpY3MgYWZ0ZXIgYmFja2Vu ZCBhY3Rpdml0eQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitvaygkcmVsYWxsZnJv emVuID09ICRyZWxhbGxmcm96ZW5fcHJldiwgJ3JlbGFsbGZyb3plbiBzdGF5IHRoZSBzYW1l Jyk7CitvaygkcmVsYWxsdmlzaWJsZSA9PSAkcmVsYWxsdmlzaWJsZV9wcmV2LCAncmVsYWxs dmlzaWJsZSBzdGF5IHRoZSBzYW1lJyk7CitvaygkcmV2X2FsbF9mcm96ZW5fcGFnZXMgPiAw LCAncmV2X2FsbF9mcm96ZW5fcGFnZXMgaGFzIGluY3JlYXNlZCcpOworb2soJHJldl9hbGxf dmlzaWJsZV9wYWdlcyA+IDAsICdyZXZfYWxsX3Zpc2libGVfcGFnZXMgaGFzIGluY3JlYXNl ZCcpOworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENsZWFudXAKKyMtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxewor CURST1AgREFUQUJBU0Ugc3RhdGlzdGljX3ZhY3V1bV9kYXRhYmFzZV9yZWdyZXNzaW9uOwor fSk7CisKKyRub2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnVsZXMub3V0CmluZGV4IGY0ZWUyYmQ3NDU5Li44ZGJmNWNlMzRiYiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE4MzQsNiArMTgzNCw4IEBAIHBn X3N0YXRfYWxsX3RhYmxlc3wgU0VMRUNUIGMub2lkIEFTIHJlbGlkLAogICAgIHBnX3N0YXRf Z2V0X2RlYWRfdHVwbGVzKGMub2lkKSBBUyBuX2RlYWRfdHVwLAogICAgIHBnX3N0YXRfZ2V0 X21vZF9zaW5jZV9hbmFseXplKGMub2lkKSBBUyBuX21vZF9zaW5jZV9hbmFseXplLAogICAg IHBnX3N0YXRfZ2V0X2luc19zaW5jZV92YWN1dW0oYy5vaWQpIEFTIG5faW5zX3NpbmNlX3Zh Y3V1bSwKKyAgICBwZ19zdGF0X2dldF9yZXZfYWxsX3Zpc2libGVfcGFnZXMoYy5vaWQpIEFT IHJldl9hbGxfdmlzaWJsZV9wYWdlcywKKyAgICBwZ19zdGF0X2dldF9yZXZfYWxsX2Zyb3pl bl9wYWdlcyhjLm9pZCkgQVMgcmV2X2FsbF9mcm96ZW5fcGFnZXMsCiAgICAgcGdfc3RhdF9n ZXRfbGFzdF92YWN1dW1fdGltZShjLm9pZCkgQVMgbGFzdF92YWN1dW0sCiAgICAgcGdfc3Rh dF9nZXRfbGFzdF9hdXRvdmFjdXVtX3RpbWUoYy5vaWQpIEFTIGxhc3RfYXV0b3ZhY3V1bSwK ICAgICBwZ19zdGF0X2dldF9sYXN0X2FuYWx5emVfdGltZShjLm9pZCkgQVMgbGFzdF9hbmFs eXplLApAQCAtMjI1Niw2ICsyMjU4LDggQEAgcGdfc3RhdF9zeXNfdGFibGVzfCBTRUxFQ1Qg cmVsaWQsCiAgICAgbl9kZWFkX3R1cCwKICAgICBuX21vZF9zaW5jZV9hbmFseXplLAogICAg IG5faW5zX3NpbmNlX3ZhY3V1bSwKKyAgICByZXZfYWxsX3Zpc2libGVfcGFnZXMsCisgICAg cmV2X2FsbF9mcm96ZW5fcGFnZXMsCiAgICAgbGFzdF92YWN1dW0sCiAgICAgbGFzdF9hdXRv dmFjdXVtLAogICAgIGxhc3RfYW5hbHl6ZSwKQEAgLTIzMTEsNiArMjMxNSw4IEBAIHBnX3N0 YXRfdXNlcl90YWJsZXN8IFNFTEVDVCByZWxpZCwKICAgICBuX2RlYWRfdHVwLAogICAgIG5f bW9kX3NpbmNlX2FuYWx5emUsCiAgICAgbl9pbnNfc2luY2VfdmFjdXVtLAorICAgIHJldl9h bGxfdmlzaWJsZV9wYWdlcywKKyAgICByZXZfYWxsX2Zyb3plbl9wYWdlcywKICAgICBsYXN0 X3ZhY3V1bSwKICAgICBsYXN0X2F1dG92YWN1dW0sCiAgICAgbGFzdF9hbmFseXplLAotLSAK Mi4zOS41IChBcHBsZSBHaXQtMTU0KQoK --------------xK3aHQQ7cmwBQ1eA1QG1n9yL--