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 1vjFhp-00BtUc-0o for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Jan 2026 11:52:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vjFhm-00HKMn-0s for pgsql-hackers@arkaria.postgresql.org; Fri, 23 Jan 2026 11:51:58 +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 1vjFhl-00HKMb-1o for pgsql-hackers@lists.postgresql.org; Fri, 23 Jan 2026 11:51:58 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vjFhh-001uTb-1J for pgsql-hackers@lists.postgresql.org; Fri, 23 Jan 2026 11:51:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1769169110; bh=UEzqqwPVcNBcnYe/JAR8kP1xqZGDboetDIKrG88Ngzg=; h=Message-ID:Date:User-Agent:Subject:From:To:References:In-Reply-To: From; b=uzrFsCJ5y29yLfoN1xrlZqn97HywDE1ooJU27DB9mEFplWkAJoSUMI3iDhmz3MaN0 +XFuv4jvdaY/vb0T5cIq/ZrVbv5K6QOVrvsPJ2G0dOUQgC8TD4N9kffjGOIdB6opi+ KxqQIfMkylDtODxmDbWIdTh/jxuqH81hC83DoQQIxZt1lLEVkdDBVV+A0d9NB/kr0G dyuisNIIhWNTH1bEKqhP+D8Wve1I44uDrhmAeQxhXHD+HYw8AKhj9769LzuEqGUcUa VYzGXOYvHuu1WeFoDqGxicgnHH1YF1/4zRKksOVVLjppExZp7EqEHNakGo9vlQp+pL ObA+RiiXbQK5g== Received: from [172.30.49.70] (debian11-template.l.postgrespro.ru [192.168.2.254]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: v.davydov@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id 2C83060646 for ; Fri, 23 Jan 2026 14:51:50 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------OCJJhc7BmOkv4nAfRlXbK1u8" Message-ID: Date: Fri, 23 Jan 2026 14:51:49 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Deadlock detector fails to activate on a hot standby replica From: Vitaly Davydov To: pgsql-hackers@lists.postgresql.org References: <44c24dcf-5710-410f-b1b6-d10b315f3d51@postgrespro.ru> Content-Language: en-US In-Reply-To: <44c24dcf-5710-410f-b1b6-d10b315f3d51@postgrespro.ru> X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2026/01/23 07:34:00 #28144429 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------OCJJhc7BmOkv4nAfRlXbK1u8 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Dear Hackers, I would like to propose a patch that fixes the problem, which has the roots in the possibility of spontaneous SIGALRM signals when waiting for some timeouts. The idea of the patch - ignore spontaneous SIGALRM signals and continue waiting for expected timeouts or buffer unpinning by the conflicting backend. This patch is not a final version. I plan to add a tap-test for this case. I'm in doubt to put the calls of some page buffer specific functions into ResolveRecoveryConflictWithBufferPin (standby.c), but otherwise we have to do more changes in LockBufferForCleanup and ResolveRecoveryConflictWithBufferPin. I also think, we have to add some description of the found problem in timeout.c, because the implemented optimization of setitimer calls leads to some not evident consequences. The optimization seems to be implemented in the commit: 09cf1d52267644cdbdb734294012cf1228745aaa With best regards, Vitaly --------------OCJJhc7BmOkv4nAfRlXbK1u8 Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Fix-deadlock-detector-activation-in-a-recovery-confl.patch" Content-Disposition: attachment; filename*0="v1-0001-Fix-deadlock-detector-activation-in-a-recovery-confl"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSBmMzFhZTk3NWRmYmEwMjcxZDhkZDYxYjQ0MDA4ZmMyZGUxNGRmNjhiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBWaXRhbHkgRGF2eWRvdiA8di5kYXZ5ZG92QHBvc3Rn cmVzcHJvLnJ1PgpEYXRlOiBGcmksIDIzIEphbiAyMDI2IDE0OjIwOjA1ICswMzAwClN1Ympl Y3Q6IFtQQVRDSF0gRml4IGRlYWRsb2NrIGRldGVjdG9yIGFjdGl2YXRpb24gaW4gYSByZWNv dmVyeSBjb25mbGljdAoKV2hlbiB0aGUgc3RhcnR1cCBwcm9jZXNzIGluIGEgZGVhZGxvY2sg d2l0aCBhIGJhY2tlbmQsIGl0IHNlbmRzIHRoZQpzaWduYWwgdG8gdGhlIGJhY2tlbmQgdG8g dHJpZ2dlciB0aGUgZGVhZGxvY2sgZGV0ZWN0b3Igd2hlbgp0aGUgZGVhZGxvY2sgdGltZW91 dCBpcyBlbGFwc2VkIChkZWFkbG9ja190aW1lb3V0IGd1YykuIER1ZSB0byBzb21lCm9wdGlt aXphdGlvbiBpbiB0aW1lb3V0LmMsIHdoZW4gc3BvbnRhbmVvdXMgU0lHQUxSTSBzaWduYWxz IGFyZQpwb3NzaWJsZSwgd2hpY2ggZG9lc24ndCByZWxhdGUgdG8gYW55IGVuYWJsZWQgdGlt ZW91dCwgdGhlIGZ1bmN0aW9uClJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBp biBjYW4gbmV2ZXIgc2VuZCB0aGUgc2lnbmFsIHRvIHRoZQpjb25mbGljdGluZyBiYWNrZW5k LCBiZWNhc2UgdGhlIGRlYWRsb2NrIHRpbWVvdXQgd2lsbCBuZXZlciBiZQp0cmlnZ2VyZWQu CgpUaGUgcGF0Y2ggZml4ZXMgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGlu IGJ5IGlnbm9yaW5nCnNwb250YW5lb3VzIFNJR0FMUk0gc2lnbmFscywgdGhhdCBhcmUgcG9z c2libGUgaW4gdGhlIGN1cnJlbnQKaW1wbGVtZW50YXRpb24gb2YgdGltZW91dC5jIGZ1bmN0 aW9uYWxpdHkuCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgfCAg MiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jICAgfCA4MCArKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5Lmgg ICAgICAgfCAgMiArLQogMyBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCAzMCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9i dWZtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jCmluZGV4IDZm OTM1NjQ4YWU5Li4zYjlmYjc4ODQyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVm bWdyLmMKQEAgLTY2MjcsNyArNjYyNyw3IEBAIExvY2tCdWZmZXJGb3JDbGVhbnVwKEJ1ZmZl ciBidWZmZXIpCiAJCQkvKiBQdWJsaXNoIHRoZSBidWZpZCB0aGF0IFN0YXJ0dXAgcHJvY2Vz cyB3YWl0cyBvbiAqLwogCQkJU2V0U3RhcnR1cEJ1ZmZlclBpbldhaXRCdWZJZChidWZmZXIg LSAxKTsKIAkJCS8qIFNldCBhbGFybSBhbmQgdGhlbiB3YWl0IHRvIGJlIHNpZ25hbGVkIGJ5 IFVucGluQnVmZmVyKCkgKi8KLQkJCVJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZl clBpbigpOworCQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKGJ1ZmZl cik7CiAJCQkvKiBSZXNldCB0aGUgcHVibGlzaGVkIGJ1ZmlkICovCiAJCQlTZXRTdGFydHVw QnVmZmVyUGluV2FpdEJ1ZklkKC0xKTsKIAkJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc3RhbmRieS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jCmluZGV4IGFmZmZhYjc3MTA2Li5mZGU1ZjQ1NzgxZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3N0YW5kYnkuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJv Y2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaW52YWxhZHQuaCIKICNpbmNsdWRlICJz dG9yYWdlL3N0YW5kYnkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1Zl9pbnRlcm5hbHMuaCIK ICNpbmNsdWRlICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9u X3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCkBAIC03OTAsMTEgKzc5 MSwxMyBAQCBjbGVhbnVwOgogICogYXQgbGVhc3QgZGVhZGxvY2tfdGltZW91dC4KICAqLwog dm9pZAotUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoQnVmZmVyUGluKHZvaWQpCitSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQaW4oQnVmZmVyIGJ1ZmZlcikKIHsKIAlU aW1lc3RhbXBUeiBsdGltZTsKIAogCUFzc2VydChJbkhvdFN0YW5kYnkpOworCUFzc2VydChC dWZmZXJJc1ZhbGlkKGJ1ZmZlcikpOworCUFzc2VydCghQnVmZmVySXNMb2NhbChidWZmZXIp KTsKIAogCWx0aW1lID0gR2V0U3RhbmRieUxpbWl0VGltZSgpOwogCkBAIC04MzEsMzUgKzgz NCw1NiBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQaW4odm9pZCkKIAkJ ZW5hYmxlX3RpbWVvdXRzKHRpbWVvdXRzLCBjbnQpOwogCX0KIAotCS8qCi0JICogV2FpdCB0 byBiZSBzaWduYWxlZCBieSBVbnBpbkJ1ZmZlcigpIG9yIGZvciB0aGUgd2FpdCB0byBiZSBp bnRlcnJ1cHRlZAotCSAqIGJ5IG9uZSBvZiB0aGUgdGltZW91dHMgZXN0YWJsaXNoZWQgYWJv dmUuCi0JICoKLQkgKiBXZSBhc3N1bWUgdGhhdCBvbmx5IFVucGluQnVmZmVyKCkgYW5kIHRo ZSB0aW1lb3V0IHJlcXVlc3RzIGVzdGFibGlzaGVkCi0JICogYWJvdmUgY2FuIHdha2UgdXMg dXAgaGVyZS4gV2FrZXVwUmVjb3ZlcnkoKSBjYWxsZWQgYnkgd2FscmVjZWl2ZXIgb3IKLQkg KiBTSUdIVVAgc2lnbmFsIGhhbmRsZXIsIGV0YyBjYW5ub3QgZG8gdGhhdCBiZWNhdXNlIGl0 IHVzZXMgdGhlIGRpZmZlcmVudAotCSAqIGxhdGNoIGZyb20gdGhhdCBQcm9jV2FpdEZvclNp Z25hbCgpIHdhaXRzIG9uLgotCSAqLwotCVByb2NXYWl0Rm9yU2lnbmFsKFdBSVRfRVZFTlRf QlVGRkVSX0NMRUFOVVApOwotCi0JaWYgKGdvdF9zdGFuZGJ5X2RlbGF5X3RpbWVvdXQpCi0J CVNlbmRSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbihQUk9DU0lHX1JFQ09WRVJZX0NP TkZMSUNUX0JVRkZFUlBJTik7Ci0JZWxzZSBpZiAoZ290X3N0YW5kYnlfZGVhZGxvY2tfdGlt ZW91dCkKKwlmb3IgKDs7KQogCXsKIAkJLyoKLQkJICogU2VuZCBvdXQgYSByZXF1ZXN0IGZv ciBob3Qtc3RhbmRieSBiYWNrZW5kcyB0byBjaGVjayB0aGVtc2VsdmVzIGZvcgotCQkgKiBk ZWFkbG9ja3MuCi0JCSAqCi0JCSAqIFhYWCBUaGUgc3Vic2VxdWVudCBSZXNvbHZlUmVjb3Zl cnlDb25mbGljdFdpdGhCdWZmZXJQaW4oKSB3aWxsIHdhaXQKLQkJICogdG8gYmUgc2lnbmFs ZWQgYnkgVW5waW5CdWZmZXIoKSBhZ2FpbiBhbmQgc2VuZCBhIHJlcXVlc3QgZm9yCi0JCSAq IGRlYWRsb2NrcyBjaGVjayBpZiBkZWFkbG9ja190aW1lb3V0IGhhcHBlbnMuIFRoaXMgY2F1 c2VzIHRoZQotCQkgKiByZXF1ZXN0IHRvIGNvbnRpbnVlIHRvIGJlIHNlbnQgZXZlcnkgZGVh ZGxvY2tfdGltZW91dCB1bnRpbCB0aGUKLQkJICogYnVmZmVyIGlzIHVucGlubmVkIG9yIGx0 aW1lIGlzIHJlYWNoZWQuIFRoaXMgd291bGQgaW5jcmVhc2UgdGhlCi0JCSAqIHdvcmtsb2Fk IGluIHRoZSBzdGFydHVwIHByb2Nlc3MgYW5kIGJhY2tlbmRzLiBJbiBwcmFjdGljZSBpdCBt YXkKLQkJICogbm90IGJlIHNvIGhhcm1mdWwgYmVjYXVzZSB0aGUgcGVyaW9kIHRoYXQgdGhl IGJ1ZmZlciBpcyBrZXB0IHBpbm5lZAotCQkgKiBpcyBiYXNpY2FsbHkgbm8gc28gbG9uZy4g QnV0IHdlIHNob3VsZCBmaXggdGhpcz8KLQkJICovCi0JCVNlbmRSZWNvdmVyeUNvbmZsaWN0 V2l0aEJ1ZmZlclBpbihQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NUQVJUVVBfREVBRExP Q0spOworCQkqIFdhaXQgdG8gYmUgc2lnbmFsZWQgYnkgVW5waW5CdWZmZXIoKSBvciBmb3Ig dGhlIHdhaXQgdG8gYmUgaW50ZXJydXB0ZWQKKwkJKiBieSBvbmUgb2YgdGhlIHRpbWVvdXRz IGVzdGFibGlzaGVkIGFib3ZlLgorCQkqCisJCSogV2UgYXNzdW1lIHRoYXQgb25seSBVbnBp bkJ1ZmZlcigpIGFuZCB0aGUgdGltZW91dCByZXF1ZXN0cyBlc3RhYmxpc2hlZAorCQkqIGFi b3ZlIGNhbiB3YWtlIHVzIHVwIGhlcmUuIFdha2V1cFJlY292ZXJ5KCkgY2FsbGVkIGJ5IHdh bHJlY2VpdmVyIG9yCisJCSogU0lHSFVQIHNpZ25hbCBoYW5kbGVyLCBldGMgY2Fubm90IGRv IHRoYXQgYmVjYXVzZSBpdCB1c2VzIHRoZSBkaWZmZXJlbnQKKwkJKiBsYXRjaCBmcm9tIHRo YXQgUHJvY1dhaXRGb3JTaWduYWwoKSB3YWl0cyBvbi4KKwkJKi8KKwkJUHJvY1dhaXRGb3JT aWduYWwoV0FJVF9FVkVOVF9CVUZGRVJfQ0xFQU5VUCk7CisKKwkJaWYgKGdvdF9zdGFuZGJ5 X2RlbGF5X3RpbWVvdXQpCisJCQlTZW5kUmVjb3ZlcnlDb25mbGljdFdpdGhCdWZmZXJQaW4o UFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9CVUZGRVJQSU4pOworCQllbHNlIGlmIChnb3Rf c3RhbmRieV9kZWFkbG9ja190aW1lb3V0KQorCQl7CisJCQkvKgorCQkJKiBTZW5kIG91dCBh IHJlcXVlc3QgZm9yIGhvdC1zdGFuZGJ5IGJhY2tlbmRzIHRvIGNoZWNrIHRoZW1zZWx2ZXMg Zm9yCisJCQkqIGRlYWRsb2Nrcy4KKwkJCSoKKwkJCSogWFhYIFRoZSBzdWJzZXF1ZW50IFJl c29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbigpIHdpbGwgd2FpdAorCQkJKiB0 byBiZSBzaWduYWxlZCBieSBVbnBpbkJ1ZmZlcigpIGFnYWluIGFuZCBzZW5kIGEgcmVxdWVz dCBmb3IKKwkJCSogZGVhZGxvY2tzIGNoZWNrIGlmIGRlYWRsb2NrX3RpbWVvdXQgaGFwcGVu cy4gVGhpcyBjYXVzZXMgdGhlCisJCQkqIHJlcXVlc3QgdG8gY29udGludWUgdG8gYmUgc2Vu dCBldmVyeSBkZWFkbG9ja190aW1lb3V0IHVudGlsIHRoZQorCQkJKiBidWZmZXIgaXMgdW5w aW5uZWQgb3IgbHRpbWUgaXMgcmVhY2hlZC4gVGhpcyB3b3VsZCBpbmNyZWFzZSB0aGUKKwkJ CSogd29ya2xvYWQgaW4gdGhlIHN0YXJ0dXAgcHJvY2VzcyBhbmQgYmFja2VuZHMuIEluIHBy YWN0aWNlIGl0IG1heQorCQkJKiBub3QgYmUgc28gaGFybWZ1bCBiZWNhdXNlIHRoZSBwZXJp b2QgdGhhdCB0aGUgYnVmZmVyIGlzIGtlcHQgcGlubmVkCisJCQkqIGlzIGJhc2ljYWxseSBu byBzbyBsb25nLiBCdXQgd2Ugc2hvdWxkIGZpeCB0aGlzPworCQkJKi8KKwkJCVNlbmRSZWNv dmVyeUNvbmZsaWN0V2l0aEJ1ZmZlclBpbihQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX1NU QVJUVVBfREVBRExPQ0spOworCQl9CisJCWVsc2UKKwkJeworCQkJQnVmZmVyRGVzYyAqYnVm SGRyID0gR2V0QnVmZmVyRGVzY3JpcHRvcihidWZmZXIgLSAxKTsKKwkJCXVpbnQ2NAkJYnVm X3N0YXRlID0gTG9ja0J1ZkhkcihidWZIZHIpOworCQkJdWludDMyCQlidWZfcmVmY291bnQg PSBCVUZfU1RBVEVfR0VUX1JFRkNPVU5UKGJ1Zl9zdGF0ZSk7CisKKwkJCVVubG9ja0J1Zkhk cihidWZIZHIpOworCisJCQkvLyBXaGVuIHRoZSBidWZmZXLigJlzIHJlZmVyZW5jZSBjb3Vu dCBleGNlZWRzIDEsIHRoZSBleGNsdXNpdmUgbG9jaworCQkJLy8gcmVtYWlucyB1bmFjcXVp cmVkLiBBIFNJR0FMUk0gc2lnbmFsIGFwcGVhcnMgdG8gaGF2ZSBiZWVuIHJlY2VpdmVkCisJ CQkvLyB1bmV4cGVjdGVkbHksIGFuZCBpdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBh Y3RpdmUgdGltZW91dC4KKwkJCS8vIFRoZSBzeXN0ZW0gc2hvdWxkIHdhaXQgdW50aWwgZWl0 aGVyIHRoZSBidWZmZXIgYmVjb21lcyB1bmxvY2tlZAorCQkJLy8gb3IgdGhlIGFudGljaXBh dGVkIHRpbWVvdXQgcGVyaW9kIGVsYXBzZXMuCisJCQlpZiAoYnVmX3JlZmNvdW50ID4gMSkK KwkJCQljb250aW51ZTsKKwkJfQorCisJCWJyZWFrOwogCX0KIAogCS8qCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N0YW5kYnkuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c3RhbmRieS5oCmluZGV4IDdiMTA5MzI2MzVhLi5lMTVkY2QyMmU4ZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9zdGFuZGJ5LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFn ZS9zdGFuZGJ5LmgKQEAgLTM4LDcgKzM4LDcgQEAgZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292 ZXJ5Q29uZmxpY3RXaXRoVGFibGVzcGFjZShPaWQgdHNpZCk7CiBleHRlcm4gdm9pZCBSZXNv bHZlUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRhYmFzZShPaWQgZGJpZCk7CiAKIGV4dGVybiB2 b2lkIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvY2soTE9DS1RBRyBsb2NrdGFnLCBi b29sIGxvZ2dpbmdfY29uZmxpY3QpOwotZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoQnVmZmVyUGluKHZvaWQpOworZXh0ZXJuIHZvaWQgUmVzb2x2ZVJlY292ZXJ5 Q29uZmxpY3RXaXRoQnVmZmVyUGluKEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIHZvaWQgQ2hl Y2tSZWNvdmVyeUNvbmZsaWN0RGVhZGxvY2sodm9pZCk7CiBleHRlcm4gdm9pZCBTdGFuZGJ5 RGVhZExvY2tIYW5kbGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgU3RhbmRieVRpbWVvdXRIYW5k bGVyKHZvaWQpOwotLSAKMi40My4wCgo= --------------OCJJhc7BmOkv4nAfRlXbK1u8--