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 1vmL1C-00AyvD-2e for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Feb 2026 00:08:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vmL19-009N1g-12 for pgsql-hackers@arkaria.postgresql.org; Sun, 01 Feb 2026 00:08:44 +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 1vmL18-009N1X-2K for pgsql-hackers@lists.postgresql.org; Sun, 01 Feb 2026 00:08:43 +0000 Received: from udcm-wwu2.uni-muenster.de ([128.176.118.28]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vmL13-000PAC-0X for pgsql-hackers@lists.postgresql.org; Sun, 01 Feb 2026 00:08:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=uni-muenster.de; i=@uni-muenster.de; q=dns/txt; s=uniout; t=1769904518; x=1801440518; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to; bh=JX3vbXU6Qf41WKX69g75OdJ2TEU7Zs9Be+NtgrKXkko=; b=mg0SPk/rg8NjX/SKAyjd0/TFxfIRY9SF8FhIqGzp4fRVz0n5zwRL5tZj CG6HIqYbbMaDKa86j9ZrRPHIPzvU7LqW6LHohaBbavEEKs3DDscTRA+AL dyvgPpHlpRRJHK13019AY8SzX81Dc8+u8lcwEfvkiG2+ufipFh+uiOTp6 dy7RGf2a1+6ZOSRZwK4sdoXrqLgh/6mc5YpsxtFJsEWgdDJo/Sac0cxJA eGsFQh3Rpz+8VEATcEwBjNAKMmZ2eDiMb8hO2FBFWSuqYjrNnRJLh014Y 3WTeorsoFspzCYNxBYr04KRTn2oEgaUq9JiuUw1YMdnJF1YVgXSecVqHi Q==; X-CSE-ConnectionGUID: ETHCBeY7ToOmUnjYpfksDg== X-CSE-MsgGUID: ADYM5KsPQp2j+Nq96cofYA== X-IronPort-AV: E=Sophos;i="6.21,265,1763420400"; d="scan'208,223";a="383199481" Received: from secmail.uni-muenster.de ([128.176.118.4]) by UDCM-RELAY2.UNI-MUENSTER.DE with ESMTP; 01 Feb 2026 01:08:34 +0100 Received: from [192.168.178.27] (dynamic-093-133-026-117.93.133.pool.telefonica.de [93.133.26.117]) by SECMAIL.UNI-MUENSTER.DE (Postfix) with ESMTPSA id 1B61920ADF00; Sun, 1 Feb 2026 01:08:32 +0100 (CET) Content-Type: multipart/mixed; boundary="------------ekKil8KOIWRHyxoOID0S0E5T" Message-ID: <99f3524c-6aee-4fe2-8f3f-fcf0b67642c2@uni-muenster.de> Date: Sun, 1 Feb 2026 01:08:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Additional message in pg_terminate_backend To: Kirill Reshke , Roman Khapov Cc: Daniel Gustafsson , pgsql-hackers@lists.postgresql.org References: <064E214D-D86F-4917-A0B6-67EAD6BCB24A@yandex-team.ru> Content-Language: de-DE, en-GB From: Jim Jones In-Reply-To: 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. --------------ekKil8KOIWRHyxoOID0S0E5T Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi Roman, As pointed out by Kirill, there is no reason to create pg_terminate_backend_msg or pg_cancel_backend_msg. You can simply use the existing functions and expand them to use one extra parameter, e.g. CREATE OR REPLACE FUNCTION pg_terminate_backend(pid integer, timeout int8 DEFAULT 0, msg text DEFAULT '') RETURNS boolean STRICT VOLATILE LANGUAGE INTERNAL AS 'pg_terminate_backend' PARALLEL SAFE; Here I don't think we need to check PG_NARGS, since the function calls will always have a default value. Something like this perhaps: Datum pg_terminate_backend(PG_FUNCTION_ARGS) { int pid; int timeout; /* milliseconds */ char *msg; pid = PG_GETARG_INT32(0); timeout = PG_GETARG_INT64(1); msg = text_to_cstring(PG_GETARG_TEXT_PP(2)); return pg_terminate_backend_internal(pid, timeout, msg); } stpncpy() -> strlcpy() Documentation is missing -- assuming the feature design is already solid. Add backend_msg.c to meson.build. I rebased the patch (it was failing for quite some time) with some suggestions. Feel free to remove them and revert to your v2 if you disagree. I'll review the rest of code in the next days. Best, Jim --------------ekKil8KOIWRHyxoOID0S0E5T Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-pg_terminate_backend_msg-and-pg_cancel_backend_ms.patch" Content-Disposition: attachment; filename*0="v3-0001-pg_terminate_backend_msg-and-pg_cancel_backend_ms.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzNzY3MmY2NDk2NDM2ZWE4ZWM2OGNiMTliMTUwZGYzMmM3YjAyMTdkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKaW0gSm9uZXMgPGppbS5qb25lc0B1bmktbXVlbnN0 ZXIuZGU+CkRhdGU6IFN1biwgMSBGZWIgMjAyNiAwMDoyNjoyMSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggdjNdIHBnX3Rlcm1pbmF0ZV9iYWNrZW5kX21zZyBhbmQgcGdfY2FuY2VsX2JhY2tl bmRfbXNnCgpTb21ldGltZXMgaXQgaXMgdXNlZnVsIHRvIHRlcm1pbmF0ZSBzb21lIGJhY2tl bmQKcHJvY2VzcyB3aXRoIGFkZGl0aW9uYWwgbWVzc2FnZSBmcm9tIGFkbWluLgoKVGhpcyBw YXRjaCBpbnRyb2R1Y2VzIHR3byBuZXcgZnVuY3Rpb25zOgogLSBwZ190ZXJtaW5hdGVfYmFj a2VuZF9tc2cocGlkLCB0aW1lb3V0LCBtc2cpCiAtIHBnX2NhbmNlbF9iYWNrZW5kX21zZyhw aWQsIG1zZykKClRoZSBmdW5jdGlvbnMgYXJlIHNpbWlsYXIgd2l0aCBwZ190ZXJtaW5hdGVf YmFja2VuZC9wZ19jYW5jZWxfYmFja2VuZCwKYnV0IGFkZHMgYWRkaXRpb25hbCBhcmd1bWVu dDogdGhlIG1lc3NhZ2UsIHRoYXQgd2lsbCBiZSBwYXNzZWQgaW50bwpGQVRBTC9FUlJPUiBw YWNrZXQgd2hlbiB0ZXJtaW5hdGluZy9jYW5jZWxpbmcgYmFja2VuZC4KClRvIGRvIHRoYXQs IHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBtb2R1bGU6IEJhY2tlbmRNc2cgLSBzaGFyZWQg bWVtb3J5CnJlZ2lvbiB0aGF0IGhvbGRzIHBhaXJzIG9mIChtZXNzYWdlLCBwaWQpIHdoaWNo IGFyZSBjaGVja2VkIGluIFByb2Nlc3NJbnRlcnJ1cHRzKCkKCkV4LiBvZiB1c2FnZToKcG9z dGdyZXM9IyBzZWxlY3QgcGdfdGVybWluYXRlX2JhY2tlbmRfbXNnKHBnX2JhY2tlbmRfcGlk KCksIDAsICdTb21lIG1lc3NhZ2UnKTsKRkFUQUw6ICB0ZXJtaW5hdGluZyBjb25uZWN0aW9u IGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1hbmQ6IFNvbWUgbWVzc2FnZQoKQXV0aG9yOiBE YW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpBdXRob3I6IFJvbWFuIEtoYXBv diA8ci5raGFwb3ZAeWEucnU+ClJldmlld2VkLWJ5OgpEaXNjdXNzaW9uOgotLS0KIHNyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgICAgICB8ICAgNyArLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jICAgICAgICAgICAgICAgIHwgICAzICsKIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1bmNzLmMgICAgICAgICB8ICA1NCArKysr LS0KIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgICAgICAgICB8ICAz MiArKystCiBzcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAgICAg fCAgIDIgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9NYWtlZmlsZSAgICAgICAgICAgICAg IHwgICAzICstCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2JhY2tlbmRfbXNnLmMgICAgICAg ICAgfCAxNTUgKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL21l c29uLmJ1aWxkICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w cm9jLmRhdCAgICAgICAgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS91dGlscy9iYWNr ZW5kX21zZy5oICAgICAgICAgICAgICAgfCAgMjggKysrKwogLi4uL21vZHVsZXMvdGVzdF9t aXNjL3QvMDEwX2JhY2tlbmRfbXNnLnBsICAgIHwgIDMxICsrKysKIDExIGZpbGVzIGNoYW5n ZWQsIDMwMiBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvYmFja2VuZC91dGlscy9taXNjL2JhY2tlbmRfbXNnLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX21zZy5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTBfYmFja2VuZF9tc2cucGwK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbAppbmRleCBlYjll MzFhZTFiLi41ZTJjMTM4NjE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV9mdW5jdGlvbnMuc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1 bmN0aW9ucy5zcWwKQEAgLTQwMCw3ICs0MDAsMTIgQEAgQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04KICAgUEFSQUxMRUwgU0FGRTsKIAogQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04K LSAgcGdfdGVybWluYXRlX2JhY2tlbmQocGlkIGludGVnZXIsIHRpbWVvdXQgaW50OCBERUZB VUxUIDApCisgIHBnX2NhbmNlbF9iYWNrZW5kKHBpZCBpbnRlZ2VyLCBtc2cgdGV4dCBERUZB VUxUICcnKQorICBSRVRVUk5TIGJvb2xlYW4gU1RSSUNUIFZPTEFUSUxFIExBTkdVQUdFIElO VEVSTkFMIEFTICdwZ19jYW5jZWxfYmFja2VuZCcKKyAgUEFSQUxMRUwgU0FGRTsKKworQ1JF QVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04KKyAgcGdfdGVybWluYXRlX2JhY2tlbmQocGlkIGlu dGVnZXIsIHRpbWVvdXQgaW50OCBERUZBVUxUIDAsIG1zZyB0ZXh0IERFRkFVTFQgJycpCiAg IFJFVFVSTlMgYm9vbGVhbiBTVFJJQ1QgVk9MQVRJTEUgTEFOR1VBR0UgSU5URVJOQUwgQVMg J3BnX3Rlcm1pbmF0ZV9iYWNrZW5kJwogICBQQVJBTExFTCBTQUZFOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9pcGNpLmMKaW5kZXggMWY3ZTkzM2Q1MC4uOWY1MGFkZjAzMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYwpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc2lu dmFsYWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5q ZWN0aW9uX3BvaW50LmgiCisjaW5jbHVkZSAidXRpbHMvYmFja2VuZF9tc2cuaCIKIAogLyog R1VDcyAqLwogaW50CQkJc2hhcmVkX21lbW9yeV90eXBlID0gREVGQVVMVF9TSEFSRURfTUVN T1JZX1RZUEU7CkBAIC0xNDAsNiArMTQxLDcgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZvaWQp CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNsb3RTeW5jU2htZW1TaXplKCkpOwogCXNpemUg PSBhZGRfc2l6ZShzaXplLCBBaW9TaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNp emUsIFdhaXRMU05TaG1lbVNpemUoKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEJhY2tl bmRTdGF0dXNTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIExvZ2ljYWxE ZWNvZGluZ0N0bFNobWVtU2l6ZSgpKTsKIAogCS8qIGluY2x1ZGUgYWRkaXRpb25hbCByZXF1 ZXN0ZWQgc2htZW0gZnJvbSBwcmVsb2FkIGxpYnJhcmllcyAqLwpAQCAtMzI3LDYgKzMyOSw3 IEBAIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJSW5qZWN0aW9uUG9pbnRT aG1lbUluaXQoKTsKIAlBaW9TaG1lbUluaXQoKTsKIAlXYWl0TFNOU2htZW1Jbml0KCk7CisJ QmFja2VuZE1zZ1NobWVtSW5pdCgpOwogCUxvZ2ljYWxEZWNvZGluZ0N0bFNobWVtSW5pdCgp OwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaWduYWxmdW5j cy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lnbmFsZnVuY3MuYwppbmRleCA2Zjc3 NTljZDcyLi5mMjQyY2ViZjQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaWduYWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpZ25hbGZ1 bmNzLmMKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5o IgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3Mu aCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2JhY2tl bmRfbXNnLmgiCiAKIAogLyoKQEAgLTQ4LDcgKzUwLDcgQEAKICNkZWZpbmUgU0lHTkFMX0JB Q0tFTkRfTk9TVVBFUlVTRVIgMwogI2RlZmluZSBTSUdOQUxfQkFDS0VORF9OT0FVVE9WQUMg NAogc3RhdGljIGludAotcGdfc2lnbmFsX2JhY2tlbmQoaW50IHBpZCwgaW50IHNpZykKK3Bn X3NpZ25hbF9iYWNrZW5kKGludCBwaWQsIGludCBzaWcsIGNvbnN0IGNoYXIgKm1zZykKIHsK IAlQR1BST0MJICAgKnByb2MgPSBCYWNrZW5kUGlkR2V0UHJvYyhwaWQpOwogCkBAIC0xMTEs NiArMTEzLDE1IEBAIHBnX3NpZ25hbF9iYWNrZW5kKGludCBwaWQsIGludCBzaWcpCiAJICog dG9vIHVubGlrZWx5IHRvIHdvcnJ5IGFib3V0LgogCSAqLwogCisJaWYgKG1zZyAhPSBOVUxM KQorCXsKKwkJaW50CQlyID0gQmFja2VuZE1zZ1NldChwaWQsIG1zZyk7CisKKwkJaWYgKHIg IT0gLTEgJiYgciAhPSBzdHJsZW4obXNnKSkKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQko ZXJybXNnKCJtZXNzYWdlIGlzIHRvbyBsb25nLCB0cnVuY2F0ZWQgdG8gJWQiLCByKSkpOwor CX0KKwogCS8qIElmIHdlIGhhdmUgc2V0c2lkKCksIHNpZ25hbCB0aGUgYmFja2VuZCdzIHdo b2xlIHByb2Nlc3MgZ3JvdXAgKi8KICNpZmRlZiBIQVZFX1NFVFNJRAogCWlmIChraWxsKC1w aWQsIHNpZykpCkBAIC0xMzIsMTAgKzE0MywxMCBAQCBwZ19zaWduYWxfYmFja2VuZChpbnQg cGlkLCBpbnQgc2lnKQogICoKICAqIE5vdGUgdGhhdCBvbmx5IHN1cGVydXNlcnMgY2FuIHNp Z25hbCBzdXBlcnVzZXItb3duZWQgcHJvY2Vzc2VzLgogICovCi1EYXR1bQotcGdfY2FuY2Vs X2JhY2tlbmQoUEdfRlVOQ1RJT05fQVJHUykKK3N0YXRpYyBEYXR1bQorcGdfY2FuY2VsX2Jh Y2tlbmRfaW50ZXJuYWwocGlkX3QgcGlkLCBjb25zdCBjaGFyICptc2cpCiB7Ci0JaW50CQkJ ciA9IHBnX3NpZ25hbF9iYWNrZW5kKFBHX0dFVEFSR19JTlQzMigwKSwgU0lHSU5UKTsKKwlp bnQJCQlyID0gcGdfc2lnbmFsX2JhY2tlbmQocGlkLCBTSUdJTlQsIG1zZyk7CiAKIAlpZiAo ciA9PSBTSUdOQUxfQkFDS0VORF9OT1NVUEVSVVNFUikKIAkJZXJlcG9ydChFUlJPUiwKQEAg LTE2MSw2ICsxNzIsMTcgQEAgcGdfY2FuY2VsX2JhY2tlbmQoUEdfRlVOQ1RJT05fQVJHUykK IAlQR19SRVRVUk5fQk9PTChyID09IFNJR05BTF9CQUNLRU5EX1NVQ0NFU1MpOwogfQogCitE YXR1bSBwZ19jYW5jZWxfYmFja2VuZChQR19GVU5DVElPTl9BUkdTKQoreworCWludAkJCXBp ZDsKKwljaGFyCSAgICptc2c7CisKKwlwaWQgPSBQR19HRVRBUkdfSU5UMzIoMCk7CisJbXNn ID0gdGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDEpKTsKKworCXJldHVybiBw Z19jYW5jZWxfYmFja2VuZF9pbnRlcm5hbChwaWQsIG1zZyk7Cit9CisKIC8qCiAgKiBXYWl0 IHVudGlsIHRoZXJlIGlzIG5vIGJhY2tlbmQgcHJvY2VzcyB3aXRoIHRoZSBnaXZlbiBQSUQg YW5kIHJldHVybiB0cnVlLgogICogT24gdGltZW91dCwgYSB3YXJuaW5nIGlzIGVtaXR0ZWQg YW5kIGZhbHNlIGlzIHJldHVybmVkLgpAQCAtMjMzLDIyICsyNTUsMTcgQEAgcGdfd2FpdF91 bnRpbF90ZXJtaW5hdGlvbihpbnQgcGlkLCBpbnQ2NCB0aW1lb3V0KQogICoKICAqIE5vdGUg dGhhdCBvbmx5IHN1cGVydXNlcnMgY2FuIHNpZ25hbCBzdXBlcnVzZXItb3duZWQgcHJvY2Vz c2VzLgogICovCi1EYXR1bQotcGdfdGVybWluYXRlX2JhY2tlbmQoUEdfRlVOQ1RJT05fQVJH UykKK3N0YXRpYyBEYXR1bQorcGdfdGVybWluYXRlX2JhY2tlbmRfaW50ZXJuYWwoaW50IHBp ZCwgaW50IHRpbWVvdXQsIGNvbnN0IGNoYXIgKm1zZykKIHsKLQlpbnQJCQlwaWQ7CiAJaW50 CQkJcjsKLQlpbnQJCQl0aW1lb3V0OwkJLyogbWlsbGlzZWNvbmRzICovCi0KLQlwaWQgPSBQ R19HRVRBUkdfSU5UMzIoMCk7Ci0JdGltZW91dCA9IFBHX0dFVEFSR19JTlQ2NCgxKTsKIAog CWlmICh0aW1lb3V0IDwgMCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKIAkJCQkgZXJybXNnKCJcInRpbWVv dXRcIiBtdXN0IG5vdCBiZSBuZWdhdGl2ZSIpKSk7CiAKLQlyID0gcGdfc2lnbmFsX2JhY2tl bmQocGlkLCBTSUdURVJNKTsKKwlyID0gcGdfc2lnbmFsX2JhY2tlbmQocGlkLCBTSUdURVJN LCBtc2cpOwogCiAJaWYgKHIgPT0gU0lHTkFMX0JBQ0tFTkRfTk9TVVBFUlVTRVIpCiAJCWVy ZXBvcnQoRVJST1IsCkBAIC0yNzgsNiArMjk1LDE5IEBAIHBnX3Rlcm1pbmF0ZV9iYWNrZW5k KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCVBHX1JFVFVSTl9CT09MKHIgPT0gU0lHTkFMX0JBQ0tF TkRfU1VDQ0VTUyk7CiB9CiAKK0RhdHVtIHBnX3Rlcm1pbmF0ZV9iYWNrZW5kKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJaW50IHBpZDsKKwlpbnQgdGltZW91dDsgLyogbWlsbGlzZWNvbmRz ICovCisJY2hhciAqbXNnOworCisJcGlkID0gUEdfR0VUQVJHX0lOVDMyKDApOworCXRpbWVv dXQgPSBQR19HRVRBUkdfSU5UNjQoMSk7CisJbXNnID0gdGV4dF90b19jc3RyaW5nKFBHX0dF VEFSR19URVhUX1BQKDIpKTsKKworCXJldHVybiBwZ190ZXJtaW5hdGVfYmFja2VuZF9pbnRl cm5hbChwaWQsIHRpbWVvdXQsIG1zZyk7Cit9CisKIC8qCiAgKiBTaWduYWwgdG8gcmVsb2Fk IHRoZSBkYXRhYmFzZSBjb25maWd1cmF0aW9uCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4 IGI0YThkMmYzYTEuLjNjNmQyODVhNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTgxLDYg KzgxLDcgQEAKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCiAjaW5jbHVkZSAidXRpbHMv dGltZXN0YW1wLmgiCiAjaW5jbHVkZSAidXRpbHMvdmFybGVuYS5oIgorI2luY2x1ZGUgInV0 aWxzL2JhY2tlbmRfbXNnLmgiCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlnbG9iYWwg dmFyaWFibGVzCkBAIC0zMzU2LDkgKzMzNTcsMjIgQEAgUHJvY2Vzc0ludGVycnVwdHModm9p ZCkKIAkJCXByb2NfZXhpdCgwKTsKIAkJfQogCQllbHNlCisJCXsKKwkJCWlmIChCYWNrZW5k TXNnSXNTZXQoKSkKKwkJCXsKKwkJCQljaGFyIG1zZ1tCQUNLRU5EX01TR19NQVhfTEVOXTsK KworCQkJCUJhY2tlbmRNc2dHZXQobXNnLCBzaXplb2YobXNnKSk7CisKKwkJCQllcmVwb3J0 KEZBVEFMLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9BRE1JTl9TSFVURE9XTiksCisJCQkJ CQllcnJtc2coInRlcm1pbmF0aW5nIGNvbm5lY3Rpb24gZHVlIHRvIGFkbWluaXN0cmF0b3Ig Y29tbWFuZDogJXMiLCBtc2cpKSk7CisJCQl9CisKIAkJCWVyZXBvcnQoRkFUQUwsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfQURNSU5fU0hVVERPV04pLAogCQkJCQkgZXJybXNnKCJ0ZXJt aW5hdGluZyBjb25uZWN0aW9uIGR1ZSB0byBhZG1pbmlzdHJhdG9yIGNvbW1hbmQiKSkpOwor CQl9CiAJfQogCiAJaWYgKENoZWNrQ2xpZW50Q29ubmVjdGlvblBlbmRpbmcpCkBAIC0zNDY2 LDkgKzM0ODAsMjEgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAkJaWYgKCFEb2luZ0Nv bW1hbmRSZWFkKQogCQl7CiAJCQlMb2NrRXJyb3JDbGVhbnVwKCk7Ci0JCQllcmVwb3J0KEVS Uk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX1FVRVJZX0NBTkNFTEVEKSwKLQkJCQkJIGVy cm1zZygiY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciByZXF1ZXN0IikpKTsKKwor CQkJaWYgKEJhY2tlbmRNc2dJc1NldCgpKQorCQkJeworCQkJCWNoYXIgbXNnW0JBQ0tFTkRf TVNHX01BWF9MRU5dOworCisJCQkJQmFja2VuZE1zZ0dldChtc2csIHNpemVvZihtc2cpKTsK KworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1FVRVJZX0NB TkNFTEVEKSwKKwkJCQkJCSBlcnJtc2coImNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHVz ZXIgcmVxdWVzdDogJXMiLCBtc2cpKSk7CisJCQl9CisJCQllbHNlCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfUVVFUllfQ0FOQ0VMRUQpLAorCQkJCQkJ IGVycm1zZygiY2FuY2VsaW5nIHN0YXRlbWVudCBkdWUgdG8gdXNlciByZXF1ZXN0IikpKTsK IAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5p dC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCmluZGV4IDNmNDAxZmFm M2QuLmRlYmY2ZGE0YTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9z dGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKQEAgLTY5 LDYgKzY5LDcgQEAKICNpbmNsdWRlICJ1dGlscy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAidXRp bHMvc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lb3V0LmgiCisjaW5jbHVkZSAi dXRpbHMvYmFja2VuZF9tc2cuaCIKIAogc3RhdGljIEhlYXBUdXBsZSBHZXREYXRhYmFzZVR1 cGxlKGNvbnN0IGNoYXIgKmRibmFtZSk7CiBzdGF0aWMgSGVhcFR1cGxlIEdldERhdGFiYXNl VHVwbGVCeU9pZChPaWQgZGJvaWQpOwpAQCAtOTAyLDYgKzkwMyw3IEBAIEluaXRQb3N0Z3Jl cyhjb25zdCBjaGFyICppbl9kYm5hbWUsIE9pZCBkYm9pZCwKIAkJCUluaXRpYWxpemVTeXN0 ZW1Vc2VyKE15Q2xpZW50Q29ubmVjdGlvbkluZm8uYXV0aG5faWQsCiAJCQkJCQkJCSBoYmFf YXV0aG5hbWUoTXlDbGllbnRDb25uZWN0aW9uSW5mby5hdXRoX21ldGhvZCkpOwogCQlhbV9z dXBlcnVzZXIgPSBzdXBlcnVzZXIoKTsKKwkJQmFja2VuZE1zZ0luaXQoTXlQcm9jTnVtYmVy KTsKIAl9CiAKIAkvKiBSZXBvcnQgYW55IFNTTC9HU1MgZGV0YWlscyBmb3IgdGhlIHNlc3Np b24uICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL01ha2VmaWxlIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9NYWtlZmlsZQppbmRleCBmMTQyZDE3MTc4Li41NDk0 OTk0NjY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL01ha2VmaWxlCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvTWFrZWZpbGUKQEAgLTMyLDcgKzMyLDggQEAg T0JKUyA9IFwKIAlzdGFja19kZXB0aC5vIFwKIAlzdXBlcnVzZXIubyBcCiAJdGltZW91dC5v IFwKLQl0enBhcnNlci5vCisJdHpwYXJzZXIubyBcCisJYmFja2VuZF9tc2cubwogCiAjIFRo aXMgbG9jYXRpb24gbWlnaHQgZGVwZW5kIG9uIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3Jp ZXMuIFRoZXJlZm9yZQogIyB3ZSBjYW4ndCBzdWJzdGl0dXRlIGl0IGludG8gcGdfY29uZmln LmguCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2JhY2tlbmRfbXNnLmMg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2JhY2tlbmRfbXNnLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZTM2YTZiYzljZQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvYmFja2VuZF9tc2cuYwpAQCAtMCwwICsxLDE1NSBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICogYmFja2VuZF9tc2cuaAorICoKKyAqIFV0aWxpdHkg dG8gcGFzcyBhZGRpdGlvbmFsIG1lc3NhZ2UgdG8gYmFja2VuZCBwcm9jZXNzZXMuCisgKiBF eDogY2FuY2VsIG9yIHRlcm1pbmF0ZSBtZXNzYWdlcworICoKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2 ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBzcmMvaW5jbHVkZS91dGlscy9taXNjL2Jh Y2tlbmRfbXNnLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBv c3RncmVzLmgiCisKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9pcGMuaCIKKyNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX21zZy5oIgorCit0eXBlZGVmIHN0 cnVjdCB7CisJcGlkX3QgcGlkOworCXNsb2NrX3QgbG9jazsKKwljaGFyIG1zZ1tCQUNLRU5E X01TR19NQVhfTEVOXTsKK30gQmFja2VuZE1zZ1Nsb3Q7CisKKworc3RhdGljIEJhY2tlbmRN c2dTbG90ICpCYWNrZW5kTXNnU2xvdHM7CitzdGF0aWMgQmFja2VuZE1zZ1Nsb3QgKk15QmFj a2VuZE1zZ1Nsb3Q7CisKK3N0YXRpYyB2b2lkCitiYWNrZW5kX21zZ19zbG90X2NsZWFuKGlu dCBjb2RlLCBEYXR1bSBhcmcpCit7CisJKHZvaWQpIGNvZGU7CisJKHZvaWQpIGFyZzsKKwor CUFzc2VydChNeUJhY2tlbmRNc2dTbG90ICE9IE5VTEwpOworCisJU3BpbkxvY2tBY3F1aXJl KCZNeUJhY2tlbmRNc2dTbG90LT5sb2NrKTsKKworCU15QmFja2VuZE1zZ1Nsb3QtPm1zZ1sw XSA9ICdcMCc7CisJTXlCYWNrZW5kTXNnU2xvdC0+cGlkID0gMDsKKworCVNwaW5Mb2NrUmVs ZWFzZSgmTXlCYWNrZW5kTXNnU2xvdC0+bG9jayk7CisKKwlNeUJhY2tlbmRNc2dTbG90ID0g TlVMTDsKK30KKworCit2b2lkIEJhY2tlbmRNc2dTaG1lbUluaXQodm9pZCkKK3sKKwlTaXpl CXNpemU7CisJYm9vbAlmb3VuZDsKKworCXNpemUgPSBCYWNrZW5kTXNnU2htZW1TaXplKCk7 CisJQmFja2VuZE1zZ1Nsb3RzID0gU2htZW1Jbml0U3RydWN0KCJCYWNrZW5kTXNnU2xvdHMi LCBzaXplLCAmZm91bmQpOworCisJaWYgKGZvdW5kKQorCQlyZXR1cm47CisJCisJbWVtc2V0 KEJhY2tlbmRNc2dTbG90cywgMCwgc2l6ZSk7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IE1h eEJhY2tlbmRzOyArK2kpCisJCVNwaW5Mb2NrSW5pdCgmQmFja2VuZE1zZ1Nsb3RzW2ldLmxv Y2spOworfQorCitTaXplCitCYWNrZW5kTXNnU2htZW1TaXplKHZvaWQpCit7CisJcmV0dXJu IG11bF9zaXplKE1heEJhY2tlbmRzLCBzaXplb2YoQmFja2VuZE1zZ1Nsb3QpKTsKK30KKwor dm9pZCBCYWNrZW5kTXNnSW5pdChpbnQgaWQpCit7CisJQmFja2VuZE1zZ1Nsb3QJCSpzbG90 OworCisJc2xvdCA9ICZCYWNrZW5kTXNnU2xvdHNbaWRdOworCisJc2xvdC0+bXNnWzBdID0g J1wwJzsKKwlzbG90LT5waWQgPSBNeVByb2NQaWQ7CisKKwlNeUJhY2tlbmRNc2dTbG90ID0g c2xvdDsKKworCW9uX3NobWVtX2V4aXQoYmFja2VuZF9tc2dfc2xvdF9jbGVhbiwgSW50MzJH ZXREYXR1bSgwKSAvKiBub3QgdXNlZCAqLyk7Cit9CisKK2ludCBCYWNrZW5kTXNnU2V0KHBp ZF90IHBpZCwgY29uc3QgY2hhciAqbXNnKQoreworCUJhY2tlbmRNc2dTbG90CQkqc2xvdDsK KwlpbnQJCQkJCWxlbjsKKworCWlmIChtc2cgPT0gTlVMTCB8fCBtc2dbMF0gPT0gJ1wwJykK KwkJcmV0dXJuIDA7CisKKwlmb3IgKGludCBpID0gMDsgaSA8IE1heEJhY2tlbmRzOyArK2kp CisJeworCQlzbG90ID0gJkJhY2tlbmRNc2dTbG90c1tpXTsKKworCQlpZiAoc2xvdC0+cGlk ID09IDAgfHwgc2xvdC0+cGlkICE9IHBpZCkKKwkJCWNvbnRpbnVlOworCisJCVNwaW5Mb2Nr QWNxdWlyZSgmc2xvdC0+bG9jayk7CisKKwkJaWYgKHNsb3QtPnBpZCAhPSBwaWQpCisJCXsK KwkJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bG9jayk7CisJCQlicmVhazsKKwkJfQorCisJ CWxlbiA9IHN0cmxjcHkoc2xvdC0+bXNnLCBtc2csIHNpemVvZihzbG90LT5tc2cpKTsKKwor CQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPmxvY2spOworCisJCXJldHVybiBsZW47CisJfQor CisJZXJlcG9ydChMT0csCisJCQkoZXJybXNnKCJDYW4ndCBzZXQgbWVzc2FnZSBmb3IgbWlz c2luZyBiYWNrZW5kICVsZCwgcmVxdWVzdGVkIGJ5ICVsZCIsCisJCQkJKGxvbmcpIHBpZCwg KGxvbmcpIE15UHJvY1BpZCkpKTsKKworCXJldHVybiAtMTsKK30KKworaW50IEJhY2tlbmRN c2dHZXQoY2hhciAqYnVmLCBpbnQgbWF4X2xlbikKK3sKKwlpbnQJCWxlbjsKKworCWlmIChN eUJhY2tlbmRNc2dTbG90ID09IE5VTEwpCisJCXJldHVybiAwOworCisJU3BpbkxvY2tBY3F1 aXJlKCZNeUJhY2tlbmRNc2dTbG90LT5sb2NrKTsKKworCWxlbiA9IHN0cmxjcHkoYnVmLCBN eUJhY2tlbmRNc2dTbG90LT5tc2csIG1heF9sZW4pOworCW1lbXNldChNeUJhY2tlbmRNc2dT bG90LT5tc2csICdcMCcsIHNpemVvZihNeUJhY2tlbmRNc2dTbG90LT5tc2cpKTsKKworCVNw aW5Mb2NrUmVsZWFzZSgmTXlCYWNrZW5kTXNnU2xvdC0+bG9jayk7CisKKwlyZXR1cm4gbGVu OworfQorCitib29sIEJhY2tlbmRNc2dJc1NldCh2b2lkKQoreworCWJvb2wgcmVzdWx0ID0g ZmFsc2U7CisKKwlpZiAoTXlCYWNrZW5kTXNnU2xvdCA9PSBOVUxMKQorCQlyZXR1cm4gZmFs c2U7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15QmFja2VuZE1zZ1Nsb3QtPmxvY2spOworCXJl c3VsdCA9IE15QmFja2VuZE1zZ1Nsb3QtPm1zZ1swXSAhPSAnXDAnOworCVNwaW5Mb2NrUmVs ZWFzZSgmTXlCYWNrZW5kTXNnU2xvdC0+bG9jayk7CisKKwlyZXR1cm4gcmVzdWx0OworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9tZXNvbi5idWlsZCBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvbWVzb24uYnVpbGQKaW5kZXggMjMyZTc0ZDBhZi4uODMxYmY2 YzZiYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9tZXNvbi5idWlsZAor KysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL21lc29uLmJ1aWxkCkBAIC0xLDYgKzEsNyBA QAogIyBDb3B5cmlnaHQgKGMpIDIwMjItMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKIAogYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorICAnYmFja2VuZF9t c2cuYycsCiAgICdjb25mZmlsZXMuYycsCiAgICdndWMuYycsCiAgICdndWNfZnVuY3MuYycs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA1ZTVlMzNmNjRmLi40N2FhMzBkNzE2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTY3MjQsMTAgKzY3MjQsMTEgQEAK IAogeyBvaWQgPT4gJzIxNzEnLCBkZXNjciA9PiAnY2FuY2VsIGEgc2VydmVyIHByb2Nlc3Nc JyBjdXJyZW50IHF1ZXJ5JywKICAgcHJvbmFtZSA9PiAncGdfY2FuY2VsX2JhY2tlbmQnLCBw cm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAotICBwcm9hcmd0eXBl cyA9PiAnaW50NCcsIHByb3NyYyA9PiAncGdfY2FuY2VsX2JhY2tlbmQnIH0sCisgIHByb2Fy Z3R5cGVzID0+ICdpbnQ0IHRleHQnLCBwcm9hcmduYW1lcyA9PiAne3BpZCxtc2d9JywKKyAg cHJvc3JjID0+ICdwZ19jYW5jZWxfYmFja2VuZCcgfSwKIHsgb2lkID0+ICcyMDk2JywgZGVz Y3IgPT4gJ3Rlcm1pbmF0ZSBhIHNlcnZlciBwcm9jZXNzJywKICAgcHJvbmFtZSA9PiAncGdf dGVybWluYXRlX2JhY2tlbmQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4g J2Jvb2wnLAotICBwcm9hcmd0eXBlcyA9PiAnaW50NCBpbnQ4JywgcHJvYXJnbmFtZXMgPT4g J3twaWQsdGltZW91dH0nLAorICBwcm9hcmd0eXBlcyA9PiAnaW50NCBpbnQ4IHRleHQnLCBw cm9hcmduYW1lcyA9PiAne3BpZCx0aW1lb3V0LG1zZ30nLAogICBwcm9zcmMgPT4gJ3BnX3Rl cm1pbmF0ZV9iYWNrZW5kJyB9LAogeyBvaWQgPT4gJzIxNzInLCBkZXNjciA9PiAncHJlcGFy ZSBmb3IgdGFraW5nIGFuIG9ubGluZSBiYWNrdXAnLAogICBwcm9uYW1lID0+ICdwZ19iYWNr dXBfc3RhcnQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3BhcmFsbGVsID0+ICdyJywKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfbXNnLmggYi9zcmMvaW5jbHVk ZS91dGlscy9iYWNrZW5kX21zZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAuLjgyNWJmNzEwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9iYWNrZW5kX21zZy5oCkBAIC0wLDAgKzEsMjggQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq IGJhY2tlbmRfbXNnLmgKKyAqCisgKiBVdGlsaXR5IHRvIHBhc3MgYWRkaXRpb25hbCBtZXNz YWdlIHRvIGJhY2tlbmQgcHJvY2Vzc2VzLgorICogRXg6IGNhbmNlbCBvciB0ZXJtaW5hdGUg bWVzc2FnZXMKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisg KgorICogc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9tc2cuaAorICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworCisjaWZuZGVmIEJBQ0tFTkRfTVNHX0gKKyNkZWZpbmUgQkFDS0VORF9N U0dfSAorCisjZGVmaW5lIEJBQ0tFTkRfTVNHX01BWF9MRU4gMTI4CisKK2V4dGVybiB2b2lk IEJhY2tlbmRNc2dTaG1lbUluaXQodm9pZCk7CitleHRlcm4gU2l6ZSBCYWNrZW5kTXNnU2ht ZW1TaXplKHZvaWQpOworZXh0ZXJuIHZvaWQgQmFja2VuZE1zZ0luaXQoaW50IGlkKTsKK2V4 dGVybiBpbnQgQmFja2VuZE1zZ1NldChwaWRfdCBwaWQsIGNvbnN0IGNoYXIgKm1zZyk7Citl eHRlcm4gaW50IEJhY2tlbmRNc2dHZXQoY2hhciAqYnVmLCBpbnQgbWF4X2xlbik7CitleHRl cm4gYm9vbCBCYWNrZW5kTXNnSXNTZXQodm9pZCk7CisKKworI2VuZGlmIC8qIEJBQ0tFTkRf TVNHX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3QvMDEw X2JhY2tlbmRfbXNnLnBsIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvdC8wMTBfYmFj a2VuZF9tc2cucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjlh ZWYyM2RlNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNj L3QvMDEwX2JhY2tlbmRfbXNnLnBsCkBAIC0wLDAgKzEsMzEgQEAKKyMgQ29weXJpZ2h0IChj KSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIENoZWNr IHRoYXQgbWVzc2FnZXMgYXJlIHBhc3NlZCB0byBiYWNrZW5kcyBieQorIyBwZ190ZXJtaW5h dGVfYmFja2VuZCwgcGdfY2FuY2VsX2JhY2tlbmQKKwordXNlIHN0cmljdDsKK3VzZSB3YXJu aW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwor dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRu b2RlID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7Ciskbm9k ZS0+aW5pdCgpOworJG5vZGUtPnN0YXJ0OworCitteSAoJHN0ZG91dCwgJHN0ZGVycik7Cisk bm9kZS0+cHNxbCgncG9zdGdyZXMnLAorCXFbc2VsZWN0IHBnX3Rlcm1pbmF0ZV9iYWNrZW5k KHBnX2JhY2tlbmRfcGlkKCksIDAsICdIYXZlIHlvdSBzZWVuIG15IGNvZmZlZSBjdXA/Jyk7 XSwKKwlzdGRvdXQgPT4gXCRzdGRvdXQsIHN0ZGVyciA9PiBcJHN0ZGVycik7CitsaWtlKCRz dGRlcnIsIHFyL0hhdmUgeW91IHNlZW4gbXkgY29mZmVlIGN1cFw/LywgImV4cGVjdGVkIG1l c3NhZ2UgdG8gYmUgcGFzc2VkIik7CisKKyRzdGRvdXQgPSAnJzsKKyRzdGRlcnIgPSAnJzsK KyRub2RlLT5wc3FsKCdwb3N0Z3JlcycsCisJcVtzZWxlY3QgcGdfY2FuY2VsX2JhY2tlbmQo cGdfYmFja2VuZF9waWQoKSwgJ1lvdSBoYXZlIHRvIHdlYXIgc29tZSByaWRpY3Vsb3VzIHRp ZScpO10sCisJc3Rkb3V0ID0+IFwkc3Rkb3V0LCBzdGRlcnIgPT4gXCRzdGRlcnIpOworbGlr ZSgkc3RkZXJyLCBxci9Zb3UgaGF2ZSB0byB3ZWFyIHNvbWUgcmlkaWN1bG91cyB0aWUvLCAi ZXhwZWN0ZWQgbWVzc2FnZSB0byBiZSBwYXNzZWQiKTsKKworJG5vZGUtPnN0b3A7CisKK2Rv bmVfdGVzdGluZygpOwotLSAKMi40My4wCgo= --------------ekKil8KOIWRHyxoOID0S0E5T--