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 1umwWr-0009yQ-SI for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Aug 2025 15:39:43 +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 1umwWq-000PVo-SF for pgsql-hackers@arkaria.postgresql.org; Fri, 15 Aug 2025 15:39:41 +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 1umwWq-000PVg-8S for pgsql-hackers@lists.postgresql.org; Fri, 15 Aug 2025 15:39:41 +0000 Received: from fhigh-b4-smtp.messagingengine.com ([202.12.124.155]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1umwWo-0001J3-0O for pgsql-hackers@lists.postgresql.org; Fri, 15 Aug 2025 15:39:40 +0000 Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfhigh.stl.internal (Postfix) with ESMTP id B43A67A015E for ; Fri, 15 Aug 2025 11:39:34 -0400 (EDT) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-03.internal (MEProxy); Fri, 15 Aug 2025 11:39:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=burd.me; h=cc :content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:subject:subject:to:to; s=fm3; t=1755272374; x=1755358774; bh=9ysdp4Aiwo4aUrPiqtOHq2gDButlgyQ0 yk1hlgcaeV8=; b=JAwkr9FmS394V66fsp7ygPvaGK8L6o1FEhlAN1ZZ37E1tt1P R62XgkEep2XcZaqrjqz/nIkkJK/ANuf2wVn0TYiM6Sm8GfDgyqe17vN1NV5rN8Kb 7ekFK0gaOETj9iWZq6zfNIl3FgAXSDKRvW8lXdep4i5XHsyYLYfxKFZm5+WMMnpr N4xifgCT+SmHC7r/f3ksYDo4AReVPnwB/cQTQNeuLu+VVQU5VuWbHsgmFP24cvnq eNnoXGiPWAdm6TvV8qv0DRUaZuvusakItdK311RXDYN2Tg1LIfZhYtQ8KtkqJtvN wlYKI6w28lI3LNk2LUqr1GUWZUOrb7IDkX2lDw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1755272374; x= 1755358774; bh=9ysdp4Aiwo4aUrPiqtOHq2gDButlgyQ0yk1hlgcaeV8=; b=O Tdyc5OYquzVeaUAV4+v649hYg28KrcPG+Z64q6w2zBcgKMtuEC35pYAFZwAidlA8 NDDpEunls3NzMw4p/Cnad/uZSTQtAQ7M2n+PVDdujbVUH4mFJPmyRE+nZqRl4vV6 5PSRwQrPT5aJ8B23H8YU96/uWzrLMGe0ckartc7UbuofWcT5qq0PkXiPTXw1ueFf BDrMTsysqV96A7oL04bZZ6keqj+2i0+eb9FQX4ygf7rEWuv8mIYo8joxTq05zCZF uF8maCWnvtnqTApPgRzCYaIjnPCHPHomR8AecuzSt3Y6uyUksv4yCtueqpfhN5N1 hmV5uurUsIAG0He07GdIg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdefgddugeegfeehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepfffhvffkuffogggtsehmtdhmreertdejnecuhfhrohhmpefirhgvghcuuehurhgu uceoghhrvghgsegsuhhrugdrmhgvqeenucggtffrrghtthgvrhhnpeeguefgveehveelue fgkeffgfffveefieeggedvgeefudfgvdeuudehffefveejveenucffohhmrghinhepphho shhtghhrvghsqhhlrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomhepghhrvghgsegsuhhrugdrmhgvpdhnsggprhgtphhtthhopedupdhm ohguvgepshhmthhpohhuthdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehlih hsthhsrdhpohhsthhgrhgvshhqlhdrohhrgh X-ME-Proxy: Feedback-ID: i675e48f3:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Fri, 15 Aug 2025 11:39:34 -0400 (EDT) Date: Fri, 15 Aug 2025 11:39:23 -0400 From: Greg Burd To: PostgreSQL Hackers Message-ID: <7BD1ABDB-B03A-464A-9BA9-A73B55AD8A1F@getmailspring.com> Subject: [PATCH] Add tests for Bitmapset X-Mailer: Mailspring MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="689f54ab_5d768276_f7d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --689f54ab_5d768276_f7d Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello, I noticed that there are no tests for Bitmapset in src/test/modules as is the case for other similar things like radixtree, rbtree, etc. so I created one. I realize that Bitmapset is already "tested" by all the other code that uses it, but I was able to find one minor oversight[1] in that code with these new tests. I hope I've covered all the bases, but if you have thoughts on other ways to test Bitmapset I'll happily add them to the patch. best. -greg [1] https://www.postgresql.org/message-id/2000A717-1FFE-4031-827B-9330FB2E9065%40getmailspring.com --689f54ab_5d768276_f7d Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0001-Add-a-module-that-tests-Bitmapset.patch" RnJvbSAzYTE0MjNiMjdmZGNjNWE5YWM4MTI0MThhYTM5YjIzOWZmOWQ4MGVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnIEJ1cmQgPGdyZWdAYnVyZC5tZT4KRGF0ZTogV2VkLCAx MyBBdWcgMjAyNSAxNTo0MDozMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjFdIEFkZCBhIG1vZHVs ZSB0aGF0IHRlc3RzIEJpdG1hcHNldAoKQmFzaWMgdGVzdHMgZm9yIEJpdG1hcHNldCB0byBlbnN1 cmUgZnVuY3Rpb25hbGl0eSBhbmQgaGVscCBwcmV2ZW50CnVuaW50ZW50aW9uYWwgYnJlYWtpbmcg Y2hhbmdlcyBpbiB0aGUgZnV0dXJlLgotLS0KIHNyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkICAg ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC8u Z2l0aWdub3JlICAgIHwgICA0ICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvTWFr ZWZpbGUgICAgICB8ICAyMyArCiAuLi4vZXhwZWN0ZWQvdGVzdF9iaXRtYXBzZXQub3V0ICAgICAg ICAgICAgICAgfCAgMTkgKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9tZXNvbi5i dWlsZCAgIHwgIDMzICsrCiAuLi4vdGVzdF9iaXRtYXBzZXQvc3FsL3Rlc3RfYml0bWFwc2V0LnNx bCAgICAgfCAgIDcgKwogLi4uL3Rlc3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LS0xLjAuc3Fs ICAgIHwgICA4ICsKIC4uLi9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LmMg ICB8IDQxOSArKysrKysrKysrKysrKysrKysKIC4uLi90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1h cHNldC5jb250cm9sICAgICB8ICAgNCArCiAxMCBmaWxlcyBjaGFuZ2VkLCA1MTkgaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQv LmdpdGlnbm9yZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRt YXBzZXQvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf Yml0bWFwc2V0L2V4cGVjdGVkL3Rlc3RfYml0bWFwc2V0Lm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvbWVzb24uYnVpbGQKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3NxbC90ZXN0X2JpdG1hcHNl dC5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0 L3Rlc3RfYml0bWFwc2V0LS0xLjAuc3FsCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jb250cm9sCgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVsZXMv TWFrZWZpbGUKaW5kZXggOTAzYThhYzE1MWEuLjk0MDcxZWMwZTE2IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKQEAg LTE2LDYgKzE2LDcgQEAgU1VCRElSUyA9IFwKIAkJICBzcGdpc3RfbmFtZV9vcHMgXAogCQkgIHRl c3RfYWlvIFwKIAkJICB0ZXN0X2JpbmFyeWhlYXAgXAorCQkgIHRlc3RfYml0bWFwc2V0IFwKIAkJ ICB0ZXN0X2Jsb29tZmlsdGVyIFwKIAkJICB0ZXN0X2NvcHlfY2FsbGJhY2tzIFwKIAkJICB0ZXN0 X2N1c3RvbV9ybWdycyBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxk IGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAppbmRleCA5M2JlMGY1NzI4OS4uZDhmNWM5 Yzc0OTQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZApAQCAtMTUsNiArMTUsNyBAQCBzdWJkaXIoJ3NwZ2lz dF9uYW1lX29wcycpCiBzdWJkaXIoJ3NzbF9wYXNzcGhyYXNlX2NhbGxiYWNrJykKIHN1YmRpcign dGVzdF9haW8nKQogc3ViZGlyKCd0ZXN0X2JpbmFyeWhlYXAnKQorc3ViZGlyKCd0ZXN0X2JpdG1h cHNldCcpCiBzdWJkaXIoJ3Rlc3RfYmxvb21maWx0ZXInKQogc3ViZGlyKCd0ZXN0X2NvcHlfY2Fs bGJhY2tzJykKIHN1YmRpcigndGVzdF9jdXN0b21fcm1ncnMnKQpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC8uZ2l0aWdub3JlIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2JpdG1hcHNldC8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi41ZGNiM2ZmOTcyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9iaXRtYXBzZXQvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDQgQEAKKyMgR2VuZXJhdGVkIHN1 YmRpcmVjdG9yaWVzCisvbG9nLworL3Jlc3VsdHMvCisvdG1wX2NoZWNrLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9NYWtlZmlsZSBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9iaXRtYXBzZXQvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjY3MTk5ZDQwZDczCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2JpdG1hcHNldC9NYWtlZmlsZQpAQCAtMCwwICsxLDIzIEBACisjIHNyYy90ZXN0L21v ZHVsZXMvdGVzdF9iaXRtYXBzZXQvTWFrZWZpbGUKKworTU9EVUxFX2JpZyA9IHRlc3RfYml0bWFw c2V0CitPQkpTID0gXAorCSQoV0lOMzJSRVMpIFwKKwl0ZXN0X2JpdG1hcHNldC5vCitQR0ZJTEVE RVNDID0gInRlc3RfYml0bWFwc2V0IC0gdGVzdCBjb2RlIGZvciBzcmMvaW5jbHVkZS9ub2Rlcy9i aXRtYXBzZXQuaCIKKworRVhURU5TSU9OID0gdGVzdF9iaXRtYXBzZXQKK0RBVEEgPSB0ZXN0X2Jp dG1hcHNldC0tMS4wLnNxbAorCitSRUdSRVNTID0gdGVzdF9iaXRtYXBzZXQKKworaWZkZWYgVVNF X1BHWFMKK1BHX0NPTkZJRyA9IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklH KSAtLXBneHMpCitpbmNsdWRlICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IHNyYy90ZXN0L21vZHVs ZXMvdGVzdF9iaXRtYXBzZXQKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uLy4uCitpbmNsdWRlICQo dG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCitpbmNsdWRlICQodG9wX3NyY2Rpcikv Y29udHJpYi9jb250cmliLWdsb2JhbC5taworZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9iaXRtYXBzZXQvZXhwZWN0ZWQvdGVzdF9iaXRtYXBzZXQub3V0IGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9leHBlY3RlZC90ZXN0X2JpdG1hcHNldC5vdXQKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjMyMDkzZDgxZjY3Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9leHBlY3RlZC90ZXN0 X2JpdG1hcHNldC5vdXQKQEAgLTAsMCArMSwxOSBAQAorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2Jp dG1hcHNldDsKKy0tCistLSBBbGwgdGhlIGxvZ2ljIGlzIGluIHRoZSB0ZXN0X2JpdG1hcHNldCgp IGZ1bmN0aW9uLiBJdCB3aWxsIHRocm93CistLSBhbiBlcnJvciBpZiBzb21ldGhpbmcgZmFpbHMu CistLQorU0VMRUNUIHRlc3RfYml0bWFwc2V0KCk7CitOT1RJQ0U6ICBzdGFydGluZyBiaXRtYXBz ZXQgdGVzdHMKK05PVElDRTogIHRlc3RpbmcgZW1wdHkgYml0bWFwc2V0IG9wZXJhdGlvbnMKK05P VElDRTogIHRlc3Rpbmcgc2luZ2xlIGVsZW1lbnQgYml0bWFwc2V0IG9wZXJhdGlvbnMKK05PVElD RTogIHRlc3RpbmcgbXVsdGlwbGUgZWxlbWVudHMgYW5kIHNldCBvcGVyYXRpb25zCitOT1RJQ0U6 ICB0ZXN0aW5nIGVkZ2UgY2FzZXMgYW5kIGJvdW5kYXJ5IGNvbmRpdGlvbnMKK05PVElDRTogIHRl c3RpbmcgaXRlcmF0aW9uIGZ1bmN0aW9ucworTk9USUNFOiAgdGVzdGluZyBjb21wcmVoZW5zaXZl IHNldCBvcGVyYXRpb25zCitOT1RJQ0U6ICBhbGwgYml0bWFwc2V0IHRlc3RzIHBhc3NlZAorIHRl c3RfYml0bWFwc2V0IAorLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2JpdG1hcHNldC9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uODQ4ZjdhNDRlYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMzMgQEAKKyMg Q29weXJpZ2h0IChjKSAyMDI0LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisKK3Rlc3RfYml0bWFwc2V0X3NvdXJjZXMgPSBmaWxlcygKKyAgJ3Rlc3RfYml0bWFwc2V0 LmMnLAorKQorCitpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycKKyAgdGVzdF9iaXRtYXBzZXRf c291cmNlcyArPSByY19saWJfZ2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsK KyAgICAnLS1OQU1FJywgJ3Rlc3RfYml0bWFwc2V0JywKKyAgICAnLS1GSUxFREVTQycsICd0ZXN0 X2JpdG1hcHNldCAtIHRlc3QgY29kZSBmb3Igc3JjL2luY2x1ZGUvbm9kZXMvYml0bWFwc2V0Lmgn LF0pCitlbmRpZgorCit0ZXN0X2JpdG1hcHNldCA9IHNoYXJlZF9tb2R1bGUoJ3Rlc3RfYml0bWFw c2V0JywKKyAgdGVzdF9iaXRtYXBzZXRfc291cmNlcywKKyAga3dhcmdzOiBwZ190ZXN0X21vZF9h cmdzLAorKQordGVzdF9pbnN0YWxsX2xpYnMgKz0gdGVzdF9iaXRtYXBzZXQKKwordGVzdF9pbnN0 YWxsX2RhdGEgKz0gZmlsZXMoCisgICd0ZXN0X2JpdG1hcHNldC5jb250cm9sJywKKyAgJ3Rlc3Rf Yml0bWFwc2V0LS0xLjAuc3FsJywKKykKKwordGVzdHMgKz0geworICAnbmFtZSc6ICd0ZXN0X2Jp dG1hcHNldCcsCisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQnOiBt ZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAorICAncmVncmVzcyc6IHsKKyAgICAnc3FsJzogWwor ICAgICAgJ3Rlc3RfYml0bWFwc2V0JywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9zcWwvdGVzdF9iaXRtYXBzZXQuc3FsIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC9zcWwvdGVzdF9iaXRtYXBzZXQuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZWI1MjRlZTUxYgotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvc3FsL3Rlc3RfYml0bWFw c2V0LnNxbApAQCAtMCwwICsxLDcgQEAKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9iaXRtYXBzZXQ7 CisKKy0tCistLSBBbGwgdGhlIGxvZ2ljIGlzIGluIHRoZSB0ZXN0X2JpdG1hcHNldCgpIGZ1bmN0 aW9uLiBJdCB3aWxsIHRocm93CistLSBhbiBlcnJvciBpZiBzb21ldGhpbmcgZmFpbHMuCistLQor U0VMRUNUIHRlc3RfYml0bWFwc2V0KCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC0tMS4wLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uYmE4YWY5OTcwNDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LS0xLjAuc3FsCkBAIC0w LDAgKzEsOCBAQAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1h cHNldC0tMS4wLnNxbCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBw c3FsLCByYXRoZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUg RVhURU5TSU9OIHRlc3RfYml0bWFwc2V0IiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworQ1JF QVRFIEZVTkNUSU9OIHRlc3RfYml0bWFwc2V0KCkKK1JFVFVSTlMgcGdfY2F0YWxvZy52b2lkIFNU UklDVAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuYyBiL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMzllMjg3ODE4OTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfYml0bWFwc2V0L3Rlc3RfYml0bWFwc2V0LmMKQEAgLTAsMCArMSw0 MTkgQEAKKy8qCisgKiB0ZXN0X2JpdG1hcHNldC5jCisgKiAgICAgIFRlc3QgbW9kdWxlIGZvciBi aXRtYXBzZXQgZGF0YSBzdHJ1Y3R1cmUKKyAqCisgKiBUaGlzIG1vZHVsZSB0ZXN0cyB0aGUgYml0 bWFwc2V0IGltcGxlbWVudGF0aW9uIGluIFBvc3RncmVTUUwsCisgKiBjb3ZlcmluZyBhbGwgcHVi bGljIEFQSSBmdW5jdGlvbnMsIGVkZ2UgY2FzZXMsIGFuZCBtZW1vcnkgdXNhZ2UuCisgKgorICog c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNldC90ZXN0X2JpdG1hcHNldC5jCisgKi8KKwor I2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJmbWdyLmgiCisjaW5jbHVkZSAibm9k ZXMvYml0bWFwc2V0LmgiCisKK1BHX01PRFVMRV9NQUdJQzsKKworUEdfRlVOQ1RJT05fSU5GT19W MSh0ZXN0X2JpdG1hcHNldCk7CisKKy8qIFRlc3QgYXNzZXJ0aW9uIG1hY3JvcyBmb2xsb3dpbmcg dGVzdF9iaXRtYXBzZXQgcGF0dGVybiAqLworI2RlZmluZSBFWFBFQ1RfVFJVRShleHByKSBcCisg ICAgZG8geyBcCisgICAgICAgIGlmICghKGV4cHIpKSBcCisgICAgICAgICAgICBlbG9nKEVSUk9S LCBcCisgICAgICAgICAgICAgICAgICIlcyB3YXMgdW5leHBlY3RlZGx5IGZhbHNlIGluIGZpbGUg XCIlc1wiIGxpbmUgJXUiLCBcCisgICAgICAgICAgICAgICAgICNleHByLCBfX0ZJTEVfXywgX19M SU5FX18pOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFWFBFQ1RfRkFMU0UoZXhwcikg XAorICAgIGRvIHsgXAorICAgICAgICBpZiAoZXhwcikgXAorICAgICAgICAgICAgZWxvZyhFUlJP UiwgXAorICAgICAgICAgICAgICAgICAiJXMgd2FzIHVuZXhwZWN0ZWRseSB0cnVlIGluIGZpbGUg XCIlc1wiIGxpbmUgJXUiLCBcCisgICAgICAgICAgICAgICAgICNleHByLCBfX0ZJTEVfXywgX19M SU5FX18pOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFWFBFQ1RfRVFfSU5UKHJlc3Vs dF9leHByLCBleHBlY3RlZF9leHByKSBcCisgICAgZG8geyBcCisgICAgICAgIGludCBfcmVzdWx0 ID0gKHJlc3VsdF9leHByKTsgXAorICAgICAgICBpbnQgX2V4cGVjdGVkID0gKGV4cGVjdGVkX2V4 cHIpOyBcCisgICAgICAgIGlmIChfcmVzdWx0ICE9IF9leHBlY3RlZCkgXAorICAgICAgICAgICAg ZWxvZyhFUlJPUiwgXAorICAgICAgICAgICAgICAgICAiJXMgeWllbGRlZCAlZCwgZXhwZWN0ZWQg JWQgKCVzKSBpbiBmaWxlIFwiJXNcIiBsaW5lICV1IiwgXAorICAgICAgICAgICAgICAgICAjcmVz dWx0X2V4cHIsIF9yZXN1bHQsIF9leHBlY3RlZCwgI2V4cGVjdGVkX2V4cHIsIF9fRklMRV9fLCBf X0xJTkVfXyk7IFwKKyAgICB9IHdoaWxlICgwKQorCisjZGVmaW5lIEVYUEVDVF9OVUxMKGV4cHIp IFwKKyAgICBkbyB7IFwKKyAgICAgICAgaWYgKChleHByKSAhPSBOVUxMKSBcCisgICAgICAgICAg ICBlbG9nKEVSUk9SLCBcCisgICAgICAgICAgICAgICAgICIlcyB3YXMgdW5leHBlY3RlZGx5IG5v bi1OVUxMIGluIGZpbGUgXCIlc1wiIGxpbmUgJXUiLCBcCisgICAgICAgICAgICAgICAgICNleHBy LCBfX0ZJTEVfXywgX19MSU5FX18pOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFWFBF Q1RfTk9UX05VTEwoZXhwcikgXAorICAgIGRvIHsgXAorICAgICAgICBpZiAoKGV4cHIpID09IE5V TEwpIFwKKyAgICAgICAgICAgIGVsb2coRVJST1IsIFwKKyAgICAgICAgICAgICAgICAgIiVzIHdh cyB1bmV4cGVjdGVkbHkgTlVMTCBpbiBmaWxlIFwiJXNcIiBsaW5lICV1IiwgXAorICAgICAgICAg ICAgICAgICAjZXhwciwgX19GSUxFX18sIF9fTElORV9fKTsgXAorICAgIH0gd2hpbGUgKDApCisK Ky8qIFRlc3QgZW1wdHkgYml0bWFwc2V0IG9wZXJhdGlvbnMgKi8KK3N0YXRpYyB2b2lkCit0ZXN0 X2VtcHR5X2JpdG1hcHNldCh2b2lkKQoreworCUJpdG1hcHNldCAgKnJlc3VsdCwKKwkJCSAgICpi bXMgPSBOVUxMOworCisJZWxvZyhOT1RJQ0UsICJ0ZXN0aW5nIGVtcHR5IGJpdG1hcHNldCBvcGVy YXRpb25zIik7CisKKwkvKiBUZXN0IG9wZXJhdGlvbnMgb24gTlVMTCBiaXRtYXBzZXQgKi8KKwlF WFBFQ1RfVFJVRShibXNfaXNfZW1wdHkoYm1zKSk7CisJRVhQRUNUX0VRX0lOVChibXNfbnVtX21l bWJlcnMoYm1zKSwgMCk7CisJRVhQRUNUX0ZBTFNFKGJtc19pc19tZW1iZXIoMCwgYm1zKSk7CisJ RVhQRUNUX0ZBTFNFKGJtc19pc19tZW1iZXIoMSwgYm1zKSk7CisJRVhQRUNUX0ZBTFNFKGJtc19p c19tZW1iZXIoMTAwLCBibXMpKTsKKwlFWFBFQ1RfRVFfSU5UKGJtc19uZXh0X21lbWJlcihibXMs IC0xKSwgLTIpOworCUVYUEVDVF9FUV9JTlQoYm1zX3ByZXZfbWVtYmVyKGJtcywgLTEpLCAtMik7 CisKKwkvKiBUZXN0IGNvcHkgb2YgZW1wdHkgc2V0ICovCisJcmVzdWx0ID0gYm1zX2NvcHkoYm1z KTsKKwlFWFBFQ1RfTlVMTChyZXN1bHQpOworCisJLyogVGVzdCB1bmlvbiB3aXRoIGVtcHR5IHNl dCAqLworCXJlc3VsdCA9IGJtc191bmlvbihibXMsIE5VTEwpOworCUVYUEVDVF9OVUxMKHJlc3Vs dCk7CisKKwkvKiBUZXN0IGludGVyc2VjdGlvbiB3aXRoIGVtcHR5IHNldCAqLworCXJlc3VsdCA9 IGJtc19pbnRlcnNlY3QoYm1zLCBOVUxMKTsKKwlFWFBFQ1RfTlVMTChyZXN1bHQpOworCisJLyog VGVzdCBkaWZmZXJlbmNlIHdpdGggZW1wdHkgc2V0ICovCisJcmVzdWx0ID0gYm1zX2RpZmZlcmVu Y2UoYm1zLCBOVUxMKTsKKwlFWFBFQ1RfTlVMTChyZXN1bHQpOworCisJLyogVGVzdCBlcXVhbCBj b21wYXJpc29uICovCisJRVhQRUNUX1RSVUUoYm1zX2VxdWFsKGJtcywgTlVMTCkpOworCUVYUEVD VF9UUlVFKGJtc19lcXVhbChOVUxMLCBibXMpKTsKKworCS8qIFRlc3Qgc3Vic2V0IG9wZXJhdGlv bnMgKi8KKwlFWFBFQ1RfVFJVRShibXNfaXNfc3Vic2V0KGJtcywgTlVMTCkpOworCUVYUEVDVF9U UlVFKGJtc19pc19zdWJzZXQoTlVMTCwgYm1zKSk7CisKKwkvKiBUZXN0IG92ZXJsYXAgKi8KKwlF WFBFQ1RfRkFMU0UoYm1zX292ZXJsYXAoYm1zLCBOVUxMKSk7CisJRVhQRUNUX0ZBTFNFKGJtc19v dmVybGFwKE5VTEwsIGJtcykpOworfQorCisvKiBUZXN0IHNpbmdsZSBlbGVtZW50IGJpdG1hcHNl dCBvcGVyYXRpb25zICovCitzdGF0aWMgdm9pZAordGVzdF9zaW5nbGVfZWxlbWVudCh2b2lkKQor eworCUJpdG1hcHNldCAgKnJlc3VsdCwKKwkJCSAgICpibXMgPSBOVUxMOworCWludAkJCXRlc3Rf bWVtYmVyID0gNDI7CisKKwllbG9nKE5PVElDRSwgInRlc3Rpbmcgc2luZ2xlIGVsZW1lbnQgYml0 bWFwc2V0IG9wZXJhdGlvbnMiKTsKKworCS8qIEFkZCBzaW5nbGUgZWxlbWVudCAqLworCWJtcyA9 IGJtc19hZGRfbWVtYmVyKGJtcywgdGVzdF9tZW1iZXIpOworCUVYUEVDVF9OT1RfTlVMTChibXMp OworCUVYUEVDVF9GQUxTRShibXNfaXNfZW1wdHkoYm1zKSk7CisJRVhQRUNUX0VRX0lOVChibXNf bnVtX21lbWJlcnMoYm1zKSwgMSk7CisJRVhQRUNUX1RSVUUoYm1zX2lzX21lbWJlcih0ZXN0X21l bWJlciwgYm1zKSk7CisJRVhQRUNUX0ZBTFNFKGJtc19pc19tZW1iZXIodGVzdF9tZW1iZXIgLSAx LCBibXMpKTsKKwlFWFBFQ1RfRkFMU0UoYm1zX2lzX21lbWJlcih0ZXN0X21lbWJlciArIDEsIGJt cykpOworCisJLyogVGVzdCBpdGVyYXRpb24gKi8KKwlFWFBFQ1RfRVFfSU5UKGJtc19uZXh0X21l bWJlcihibXMsIC0xKSwgdGVzdF9tZW1iZXIpOworCUVYUEVDVF9FUV9JTlQoYm1zX25leHRfbWVt YmVyKGJtcywgdGVzdF9tZW1iZXIpLCAtMik7CisJRVhQRUNUX0VRX0lOVChibXNfcHJldl9tZW1i ZXIoYm1zLCB0ZXN0X21lbWJlciArIDEpLCB0ZXN0X21lbWJlcik7CisJRVhQRUNUX0VRX0lOVChi bXNfcHJldl9tZW1iZXIoYm1zLCB0ZXN0X21lbWJlciksIC0yKTsKKworCS8qIFRlc3QgY29weSAq LworCXJlc3VsdCA9IGJtc19jb3B5KGJtcyk7CisJRVhQRUNUX05PVF9OVUxMKHJlc3VsdCk7CisJ RVhQRUNUX1RSVUUoYm1zX2VxdWFsKGJtcywgcmVzdWx0KSk7CisJRVhQRUNUX1RSVUUoYm1zX2lz X21lbWJlcih0ZXN0X21lbWJlciwgcmVzdWx0KSk7CisKKwkvKiBUZXN0IHJlbW92ZSBtZW1iZXIg Ki8KKwlyZXN1bHQgPSBibXNfZGVsX21lbWJlcihyZXN1bHQsIHRlc3RfbWVtYmVyKTsKKwlFWFBF Q1RfTlVMTChyZXN1bHQpOworCisJLyogVGVzdCByZW1vdmUgbm9uLWV4aXN0ZW50IG1lbWJlciAq LworCXJlc3VsdCA9IGJtc19jb3B5KGJtcyk7CisJRVhQRUNUX05PVF9OVUxMKHJlc3VsdCk7CisJ cmVzdWx0ID0gYm1zX2RlbF9tZW1iZXIocmVzdWx0LCB0ZXN0X21lbWJlciArIDEpOworCUVYUEVD VF9OT1RfTlVMTChyZXN1bHQpOworCUVYUEVDVF9UUlVFKGJtc19lcXVhbChibXMsIHJlc3VsdCkp OworCisJYm1zX2ZyZWUoYm1zKTsKKwlibXNfZnJlZShyZXN1bHQpOworfQorCisvKiBUZXN0IG11 bHRpcGxlIGVsZW1lbnRzIGFuZCBzZXQgb3BlcmF0aW9ucyAqLworc3RhdGljIHZvaWQKK3Rlc3Rf bXVsdGlwbGVfZWxlbWVudHModm9pZCkKK3sKKwlCaXRtYXBzZXQgICpibXMxID0gTlVMTDsKKwlC aXRtYXBzZXQgICpibXMyID0gTlVMTDsKKwlCaXRtYXBzZXQgICpyZXN1bHQgPSBOVUxMOworCWlu dAkJCWVsZW1lbnRzMVtdID0gezEsIDUsIDEwLCAxNSwgMjAsIDEwMH07CisJaW50CQkJZWxlbWVu dHMyW10gPSB7MywgNSwgMTIsIDE1LCAyNSwgMjAwfTsKKwlpbnQJCQludW1fZWxlbWVudHMxID0g c2l6ZW9mKGVsZW1lbnRzMSkgLyBzaXplb2YoZWxlbWVudHMxWzBdKTsKKwlpbnQJCQludW1fZWxl bWVudHMyID0gc2l6ZW9mKGVsZW1lbnRzMikgLyBzaXplb2YoZWxlbWVudHMyWzBdKTsKKworCWVs b2coTk9USUNFLCAidGVzdGluZyBtdWx0aXBsZSBlbGVtZW50cyBhbmQgc2V0IG9wZXJhdGlvbnMi KTsKKworCS8qIEJ1aWxkIGZpcnN0IHNldCAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2Vs ZW1lbnRzMTsgaSsrKQorCQlibXMxID0gYm1zX2FkZF9tZW1iZXIoYm1zMSwgZWxlbWVudHMxW2ld KTsKKworCUVYUEVDVF9FUV9JTlQoYm1zX251bV9tZW1iZXJzKGJtczEpLCBudW1fZWxlbWVudHMx KTsKKworCS8qIEJ1aWxkIHNlY29uZCBzZXQgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9l bGVtZW50czI7IGkrKykKKwkJYm1zMiA9IGJtc19hZGRfbWVtYmVyKGJtczIsIGVsZW1lbnRzMltp XSk7CisKKwlFWFBFQ1RfRVFfSU5UKGJtc19udW1fbWVtYmVycyhibXMyKSwgbnVtX2VsZW1lbnRz Mik7CisKKwkvKiBUZXN0IG1lbWJlcnNoaXAgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9l bGVtZW50czE7IGkrKykKKwkJRVhQRUNUX1RSVUUoYm1zX2lzX21lbWJlcihlbGVtZW50czFbaV0s IGJtczEpKTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtX2VsZW1lbnRzMjsgaSsrKQorCQlF WFBFQ1RfVFJVRShibXNfaXNfbWVtYmVyKGVsZW1lbnRzMltpXSwgYm1zMikpOworCisJLyogVGVz dCB1bmlvbiAqLworCXJlc3VsdCA9IGJtc191bmlvbihibXMxLCBibXMyKTsKKwlFWFBFQ1RfTk9U X05VTEwocmVzdWx0KTsKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9lbGVtZW50czE7IGkrKykK KwkJRVhQRUNUX1RSVUUoYm1zX2lzX21lbWJlcihlbGVtZW50czFbaV0sIHJlc3VsdCkpOworCWZv ciAoaW50IGkgPSAwOyBpIDwgbnVtX2VsZW1lbnRzMjsgaSsrKQorCQlFWFBFQ1RfVFJVRShibXNf aXNfbWVtYmVyKGVsZW1lbnRzMltpXSwgcmVzdWx0KSk7CisJRVhQRUNUX0VRX0lOVChibXNfbnVt X21lbWJlcnMocmVzdWx0KSwgMTApOyAvKiAxLDMsNSwxMCwxMiwxNSwyMCwyNSwxMDAsMjAwICov CisJYm1zX2ZyZWUocmVzdWx0KTsKKworCS8qIFRlc3QgaW50ZXJzZWN0aW9uICovCisJcmVzdWx0 ID0gYm1zX2ludGVyc2VjdChibXMxLCBibXMyKTsKKwlFWFBFQ1RfTk9UX05VTEwocmVzdWx0KTsK KwlFWFBFQ1RfVFJVRShibXNfaXNfbWVtYmVyKDUsIHJlc3VsdCkpOworCUVYUEVDVF9UUlVFKGJt c19pc19tZW1iZXIoMTUsIHJlc3VsdCkpOworCUVYUEVDVF9FUV9JTlQoYm1zX251bV9tZW1iZXJz KHJlc3VsdCksIDIpOwkvKiA1LCAxNSAqLworCWJtc19mcmVlKHJlc3VsdCk7CisKKwkvKiBUZXN0 IGRpZmZlcmVuY2UgKi8KKwlyZXN1bHQgPSBibXNfZGlmZmVyZW5jZShibXMxLCBibXMyKTsKKwlF WFBFQ1RfTk9UX05VTEwocmVzdWx0KTsKKwlFWFBFQ1RfVFJVRShibXNfaXNfbWVtYmVyKDEsIHJl c3VsdCkpOworCUVYUEVDVF9UUlVFKGJtc19pc19tZW1iZXIoMTAsIHJlc3VsdCkpOworCUVYUEVD VF9UUlVFKGJtc19pc19tZW1iZXIoMjAsIHJlc3VsdCkpOworCUVYUEVDVF9UUlVFKGJtc19pc19t ZW1iZXIoMTAwLCByZXN1bHQpKTsKKwlFWFBFQ1RfRkFMU0UoYm1zX2lzX21lbWJlcig1LCByZXN1 bHQpKTsKKwlFWFBFQ1RfRkFMU0UoYm1zX2lzX21lbWJlcigxNSwgcmVzdWx0KSk7CisJRVhQRUNU X0VRX0lOVChibXNfbnVtX21lbWJlcnMocmVzdWx0KSwgNCk7CS8qIDEsIDEwLCAyMCwgMTAwICov CisJYm1zX2ZyZWUocmVzdWx0KTsKKworCS8qIFRlc3Qgb3ZlcmxhcCAqLworCUVYUEVDVF9UUlVF KGJtc19vdmVybGFwKGJtczEsIGJtczIpKTsKKworCS8qIFRlc3Qgc3Vic2V0IG9wZXJhdGlvbnMg Ki8KKwlyZXN1bHQgPSBOVUxMOworCXJlc3VsdCA9IGJtc19hZGRfbWVtYmVyKHJlc3VsdCwgNSk7 CisJcmVzdWx0ID0gYm1zX2FkZF9tZW1iZXIocmVzdWx0LCAxNSk7CisJRVhQRUNUX1RSVUUoYm1z X2lzX3N1YnNldChyZXN1bHQsIGJtczEpKTsKKwlFWFBFQ1RfVFJVRShibXNfaXNfc3Vic2V0KHJl c3VsdCwgYm1zMikpOworCUVYUEVDVF9GQUxTRShibXNfaXNfc3Vic2V0KGJtczEsIHJlc3VsdCkp OworCWJtc19mcmVlKHJlc3VsdCk7CisKKwlibXNfZnJlZShibXMxKTsKKwlibXNfZnJlZShibXMy KTsKK30KKworLyogVGVzdCBlZGdlIGNhc2VzIGFuZCBib3VuZGFyeSBjb25kaXRpb25zICovCitz dGF0aWMgdm9pZAordGVzdF9lZGdlX2Nhc2VzKHZvaWQpCit7CisJaW50CQkJbGFyZ2VfZWxlbWVu dCA9IDEwMDAwOworCWludAkJCWNvdW50OworCWludAkJCW1lbWJlcjsKKwlCaXRtYXBzZXQgICpy ZXN1bHQ7CisJQml0bWFwc2V0ICAqYm1zID0gTlVMTDsKKworCWVsb2coTk9USUNFLCAidGVzdGlu ZyBlZGdlIGNhc2VzIGFuZCBib3VuZGFyeSBjb25kaXRpb25zIik7CisKKwkvKiBUZXN0IGVsZW1l bnQgMCAqLworCWJtcyA9IGJtc19hZGRfbWVtYmVyKGJtcywgMCk7CisJRVhQRUNUX1RSVUUoYm1z X2lzX21lbWJlcigwLCBibXMpKTsKKwlFWFBFQ1RfRVFfSU5UKGJtc19udW1fbWVtYmVycyhibXMp LCAxKTsKKwlFWFBFQ1RfRVFfSU5UKGJtc19uZXh0X21lbWJlcihibXMsIC0xKSwgMCk7CisJYm1z X2ZyZWUoYm1zKTsKKwlibXMgPSBOVUxMOworCisJLyogVGVzdCBsYXJnZSBlbGVtZW50IG51bWJl cnMgKi8KKwlibXMgPSBibXNfYWRkX21lbWJlcihibXMsIGxhcmdlX2VsZW1lbnQpOworCUVYUEVD VF9UUlVFKGJtc19pc19tZW1iZXIobGFyZ2VfZWxlbWVudCwgYm1zKSk7CisJRVhQRUNUX0VRX0lO VChibXNfbnVtX21lbWJlcnMoYm1zKSwgMSk7CisJYm1zX2ZyZWUoYm1zKTsKKwlibXMgPSBOVUxM OworCisJLyogVGVzdCBhZGRpbmcgc2FtZSBlbGVtZW50IG11bHRpcGxlIHRpbWVzICovCisJYm1z ID0gYm1zX2FkZF9tZW1iZXIoYm1zLCA0Mik7CisJYm1zID0gYm1zX2FkZF9tZW1iZXIoYm1zLCA0 Mik7CisJRVhQRUNUX0VRX0lOVChibXNfbnVtX21lbWJlcnMoYm1zKSwgMSk7CisJRVhQRUNUX1RS VUUoYm1zX2lzX21lbWJlcig0MiwgYm1zKSk7CisJYm1zX2ZyZWUoYm1zKTsKKwlibXMgPSBOVUxM OworCisJLyogVGVzdCByZW1vdmluZyBmcm9tIHNpbmdsZS1lbGVtZW50IHNldCAqLworCWJtcyA9 IGJtc19hZGRfbWVtYmVyKGJtcywgOTkpOworCXJlc3VsdCA9IGJtc19kZWxfbWVtYmVyKGJtcywg OTkpOworCUVYUEVDVF9OVUxMKHJlc3VsdCk7CisJYm1zX2ZyZWUoYm1zKTsKKwlibXMgPSBOVUxM OworCisJLyogVGVzdCBkZW5zZSByYW5nZSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgNjQ7IGkr KykKKwkJYm1zID0gYm1zX2FkZF9tZW1iZXIoYm1zLCBpKTsKKwlFWFBFQ1RfRVFfSU5UKGJtc19u dW1fbWVtYmVycyhibXMpLCA2NCk7CisKKwkvKiBUZXN0IGl0ZXJhdGlvbiBvdmVyIGRlbnNlIHJh bmdlICovCisJY291bnQgPSAwOworCW1lbWJlciA9IC0xOworCXdoaWxlICgobWVtYmVyID0gYm1z X25leHRfbWVtYmVyKGJtcywgbWVtYmVyKSkgPj0gMCkKKwl7CisJCUVYUEVDVF9FUV9JTlQobWVt YmVyLCBjb3VudCk7CisJCWNvdW50Kys7CisJfQorCUVYUEVDVF9FUV9JTlQoY291bnQsIDY0KTsK KworCWJtc19mcmVlKGJtcyk7Cit9CisKKy8qIFRlc3QgaXRlcmF0b3IgZnVuY3Rpb25zIHRob3Jv dWdobHkgKi8KK3N0YXRpYyB2b2lkCit0ZXN0X2l0ZXJhdGlvbih2b2lkKQoreworCUJpdG1hcHNl dCAgKmJtcyA9IE5VTEw7CisJaW50CQkJbWVtYmVyOworCWludAkJCWluZGV4OworCWludAkJCWVs ZW1lbnRzW10gPSB7MiwgNywgMTUsIDMxLCA2MywgMTI3LCAyNTUsIDUxMSwgMTAyM307CisJaW50 CQkJbnVtX2VsZW1lbnRzID0gc2l6ZW9mKGVsZW1lbnRzKSAvIHNpemVvZihlbGVtZW50c1swXSk7 CisKKwllbG9nKE5PVElDRSwgInRlc3RpbmcgaXRlcmF0aW9uIGZ1bmN0aW9ucyIpOworCisJLyog QnVpbGQgdGVzdCBzZXQgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8IG51bV9lbGVtZW50czsgaSsr KQorCQlibXMgPSBibXNfYWRkX21lbWJlcihibXMsIGVsZW1lbnRzW2ldKTsKKworCS8qIFRlc3Qg Zm9yd2FyZCBpdGVyYXRpb24gKi8KKwltZW1iZXIgPSAtMTsKKwlpbmRleCA9IDA7CisJd2hpbGUg KChtZW1iZXIgPSBibXNfbmV4dF9tZW1iZXIoYm1zLCBtZW1iZXIpKSA+PSAwKQorCXsKKwkJRVhQ RUNUX0VRX0lOVChtZW1iZXIsIGVsZW1lbnRzW2luZGV4XSk7CisJCWluZGV4Kys7CisJfQorCUVY UEVDVF9FUV9JTlQoaW5kZXgsIG51bV9lbGVtZW50cyk7CisKKwkvKiBUZXN0IGJhY2t3YXJkIGl0 ZXJhdGlvbiAqLworCW1lbWJlciA9IGJtcy0+bndvcmRzICogQklUU19QRVJfQklUTUFQV09SRDsK KwlpbmRleCA9IG51bV9lbGVtZW50cyAtIDE7CisJd2hpbGUgKChtZW1iZXIgPSBibXNfcHJldl9t ZW1iZXIoYm1zLCBtZW1iZXIpKSA+PSAwKQorCXsKKwkJRVhQRUNUX0VRX0lOVChtZW1iZXIsIGVs ZW1lbnRzW2luZGV4XSk7CisJCWluZGV4LS07CisJfQorCUVYUEVDVF9FUV9JTlQoaW5kZXgsIC0x KTsKKworCS8qIFRlc3QgaXRlcmF0aW9uIGJvdW5kcyAqLworCUVYUEVDVF9FUV9JTlQoYm1zX25l eHRfbWVtYmVyKGJtcywgMTAyMyksIC0yKTsKKwlFWFBFQ1RfRVFfSU5UKGJtc19wcmV2X21lbWJl cihibXMsIDIpLCAtMik7CisKKwlibXNfZnJlZShibXMpOworfQorCisvKiBUZXN0IHNldCBvcGVy YXRpb25zIHdpdGggdmFyaW91cyBjb21iaW5hdGlvbnMgKi8KK3N0YXRpYyB2b2lkCit0ZXN0X3Nl dF9vcGVyYXRpb25zKHZvaWQpCit7CisJQml0bWFwc2V0ICAqZW1wdHkgPSBOVUxMOworCUJpdG1h cHNldCAgKnNpbmdsZSA9IE5VTEw7CisJQml0bWFwc2V0ICAqbXVsdGkgPSBOVUxMOworCUJpdG1h cHNldCAgKnJlc3VsdCA9IE5VTEw7CisJQml0bWFwc2V0ICAqc2luZ2xlX2NvcHkgPSBOVUxMOwor CisJZWxvZyhOT1RJQ0UsICJ0ZXN0aW5nIGNvbXByZWhlbnNpdmUgc2V0IG9wZXJhdGlvbnMiKTsK KworCXNpbmdsZSA9IGJtc19hZGRfbWVtYmVyKHNpbmdsZSwgMTApOworCW11bHRpID0gYm1zX2Fk ZF9tZW1iZXIobXVsdGksIDUpOworCW11bHRpID0gYm1zX2FkZF9tZW1iZXIobXVsdGksIDEwKTsK KwltdWx0aSA9IGJtc19hZGRfbWVtYmVyKG11bHRpLCAxNSk7CisKKwkvKiBVbmlvbiBvcGVyYXRp b25zICovCisJcmVzdWx0ID0gYm1zX3VuaW9uKGVtcHR5LCBzaW5nbGUpOworCUVYUEVDVF9UUlVF KGJtc19lcXVhbChyZXN1bHQsIHNpbmdsZSkpOworCWJtc19mcmVlKHJlc3VsdCk7CisKKwlyZXN1 bHQgPSBibXNfdW5pb24oc2luZ2xlLCBlbXB0eSk7CisJRVhQRUNUX1RSVUUoYm1zX2VxdWFsKHJl c3VsdCwgc2luZ2xlKSk7CisJYm1zX2ZyZWUocmVzdWx0KTsKKworCXJlc3VsdCA9IGJtc191bmlv bihzaW5nbGUsIG11bHRpKTsKKwlFWFBFQ1RfRVFfSU5UKGJtc19udW1fbWVtYmVycyhyZXN1bHQp LCAzKTsKKwlFWFBFQ1RfVFJVRShibXNfaXNfbWVtYmVyKDUsIHJlc3VsdCkpOworCUVYUEVDVF9U UlVFKGJtc19pc19tZW1iZXIoMTAsIHJlc3VsdCkpOworCUVYUEVDVF9UUlVFKGJtc19pc19tZW1i ZXIoMTUsIHJlc3VsdCkpOworCWJtc19mcmVlKHJlc3VsdCk7CisKKwkvKiBJbnRlcnNlY3Rpb24g b3BlcmF0aW9ucyAqLworCXJlc3VsdCA9IGJtc19pbnRlcnNlY3QoZW1wdHksIHNpbmdsZSk7CisJ RVhQRUNUX05VTEwocmVzdWx0KTsKKworCXJlc3VsdCA9IGJtc19pbnRlcnNlY3Qoc2luZ2xlLCBt dWx0aSk7CisJRVhQRUNUX0VRX0lOVChibXNfbnVtX21lbWJlcnMocmVzdWx0KSwgMSk7CisJRVhQ RUNUX1RSVUUoYm1zX2lzX21lbWJlcigxMCwgcmVzdWx0KSk7CisJYm1zX2ZyZWUocmVzdWx0KTsK KworCS8qIERpZmZlcmVuY2Ugb3BlcmF0aW9ucyAqLworCXJlc3VsdCA9IGJtc19kaWZmZXJlbmNl KHNpbmdsZSwgbXVsdGkpOworCUVYUEVDVF9OVUxMKHJlc3VsdCk7CisKKwlyZXN1bHQgPSBibXNf ZGlmZmVyZW5jZShtdWx0aSwgc2luZ2xlKTsKKwlFWFBFQ1RfRVFfSU5UKGJtc19udW1fbWVtYmVy cyhyZXN1bHQpLCAyKTsKKwlFWFBFQ1RfVFJVRShibXNfaXNfbWVtYmVyKDUsIHJlc3VsdCkpOwor CUVYUEVDVF9UUlVFKGJtc19pc19tZW1iZXIoMTUsIHJlc3VsdCkpOworCUVYUEVDVF9GQUxTRShi bXNfaXNfbWVtYmVyKDEwLCByZXN1bHQpKTsKKwlibXNfZnJlZShyZXN1bHQpOworCisJLyogRXF1 YWxpdHkgdGVzdHMgKi8KKwlFWFBFQ1RfRkFMU0UoYm1zX2VxdWFsKHNpbmdsZSwgbXVsdGkpKTsK KwlFWFBFQ1RfVFJVRShibXNfZXF1YWwoZW1wdHksIE5VTEwpKTsKKworCXNpbmdsZV9jb3B5ID0g Ym1zX2NvcHkoc2luZ2xlKTsKKwlFWFBFQ1RfVFJVRShibXNfZXF1YWwoc2luZ2xlLCBzaW5nbGVf Y29weSkpOworCWJtc19mcmVlKHNpbmdsZV9jb3B5KTsKKworCWJtc19mcmVlKHNpbmdsZSk7CisJ Ym1zX2ZyZWUobXVsdGkpOworfQorCisvKiBNYWluIHRlc3QgZnVuY3Rpb24gKi8KK0RhdHVtCit0 ZXN0X2JpdG1hcHNldChQR19GVU5DVElPTl9BUkdTKQoreworCWVsb2coTk9USUNFLCAic3RhcnRp bmcgYml0bWFwc2V0IHRlc3RzIik7CisKKwl0ZXN0X2VtcHR5X2JpdG1hcHNldCgpOworCXRlc3Rf c2luZ2xlX2VsZW1lbnQoKTsKKwl0ZXN0X211bHRpcGxlX2VsZW1lbnRzKCk7CisJdGVzdF9lZGdl X2Nhc2VzKCk7CisJdGVzdF9pdGVyYXRpb24oKTsKKwl0ZXN0X3NldF9vcGVyYXRpb25zKCk7CisK KwllbG9nKE5PVElDRSwgImFsbCBiaXRtYXBzZXQgdGVzdHMgcGFzc2VkIik7CisKKwlQR19SRVRV Uk5fVk9JRCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNl dC90ZXN0X2JpdG1hcHNldC5jb250cm9sIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2JpdG1hcHNl dC90ZXN0X2JpdG1hcHNldC5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi44ZDAyZWM4YmYwYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9iaXRtYXBzZXQvdGVzdF9iaXRtYXBzZXQuY29udHJvbApAQCAtMCwwICsxLDQgQEAKK2Nv bW1lbnQgPSAnVGVzdCBjb2RlIGZvciBCaXRtYXBzZXQnCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4w JworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvdGVzdF9iaXRtYXBzZXQnCityZWxvY2F0YWJs ZSA9IHRydWUKLS0gCjIuNDkuMAoK --689f54ab_5d768276_f7d--