From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.81]) by mx.groups.io with SMTP id smtpd.web10.196.1590015538783076622 for ; Wed, 20 May 2020 15:58:59 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=gEFjgTo2; spf=pass (domain: redhat.com, ip: 207.211.31.81, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1590015537; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cvTKbUh9sj0fSJujVnCasR8gA+73yYILzf7nBNNnOuA=; b=gEFjgTo2lFyd2YeHFHbMTvmbGP/bB5lUcUPO5/cBjUe0EPwB1Ru2Q1voQ7Bfi0DZ36fsaX Lz2tj2+gvi4NTr234TKlQdoa0/YrauP3Jl2yNaULSYnsllOYzW16WIO6FjuPvNrr4Be22R sTquarl7oEnmTTsDcwowtO557DaucUg= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-111-LKuJ03uOPo-9bxVd1d6ERw-1; Wed, 20 May 2020 18:58:56 -0400 X-MC-Unique: LKuJ03uOPo-9bxVd1d6ERw-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CC7771800D42; Wed, 20 May 2020 22:58:54 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-115-121.ams2.redhat.com [10.36.115.121]) by smtp.corp.redhat.com (Postfix) with ESMTP id 086EE48D7E; Wed, 20 May 2020 22:58:52 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: Ard Biesheuvel , Eric Auger , Jordan Justen , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Simon Hardy , Stefan Berger Subject: [PATCH 2/3] OvmfPkg/Tcg2ConfigPei: factor out InternalTpm12Detect() Date: Thu, 21 May 2020 00:58:40 +0200 Message-Id: <20200520225841.17793-3-lersek@redhat.com> In-Reply-To: <20200520225841.17793-1-lersek@redhat.com> References: <20200520225841.17793-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 TW92ZSB0aGUgY2FsbHMgdG8gdGhlIFRwbTEyUmVxdWVzdFVzZVRwbSgpIGFuZCBUcG0xMlN1Ym1p dENvbW1hbmQoKQpUcG0xMkRldmljZUxpYiBmdW5jdGlvbnMgdG8gYSBzZXBhcmF0ZSBDIGZpbGUs IHNvIHRoYXQgd2UgY2FuIG92ZXJyaWRlCnRoZXNlIGFjdGlvbnMgaW4gYSBzdWJzZXF1ZW50IHBh dGNoLgoKVGhpcyBjb2RlIG1vdmVtZW50IHJlcXVpcmVzIG1vdmluZyB0aGUgVFBNX1JTUF9HRVRf VElDS1MgLyBUZXN0VHBtMTIoKQpoZWxwZXIgc3RydWN0dXJlIC8gZnVuY3Rpb24gdG9vLgoKV2hp bGUgYXQgaXQsIGdpdmUgdGhlIFRlc3RUcG0xMigpIGZ1bmN0aW9uIEByZXR2YWwgLyBAcmV0dXJu CmRvY3VtZW50YXRpb24sIHBsdXMgd3JhcCBhbiBvdmVybG9uZyBsaW5lIGluIGl0LgoKRnVuY3Rp b25hbGx5LCB0aGlzIHBhdGNoIGlzIGEgbm8tb3AuCgpDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5i aWVzaGV1dmVsQGFybS5jb20+CkNjOiBFcmljIEF1Z2VyIDxlcmljLmF1Z2VyQHJlZGhhdC5jb20+ CkNjOiBKb3JkYW4gSnVzdGVuIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPgpDYzogTWFyYy1B bmRyw6kgTHVyZWF1IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+CkNjOiBQaGlsaXBwZSBN YXRoaWV1LURhdWTDqSA8cGhpbG1kQHJlZGhhdC5jb20+CkNjOiBTaW1vbiBIYXJkeSA8c2ltb24u aGFyZHlAaXRkZXYuY28udWs+CkNjOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LmlibS5j b20+ClJlZjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0y NzI4ClNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+Ci0tLQog T3ZtZlBrZy9UY2cvVGNnMkNvbmZpZy9UY2cyQ29uZmlnUGVpLmluZiB8ICAyICsKIE92bWZQa2cv VGNnL1RjZzJDb25maWcvVHBtMTJTdXBwb3J0LmggICAgfCAzMCArKysrKysrKwogT3ZtZlBrZy9U Y2cvVGNnMkNvbmZpZy9UY2cyQ29uZmlnUGVpbS5jICB8IDQ2ICstLS0tLS0tLS0tLQogT3ZtZlBr Zy9UY2cvVGNnMkNvbmZpZy9UcG0xMlN1cHBvcnQuYyAgICB8IDc5ICsrKysrKysrKysrKysrKysr KysrCiA0IGZpbGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9Pdm1mUGtnL1RjZy9UY2cyQ29uZmlnL1RjZzJDb25maWdQZWkuaW5mIGIv T3ZtZlBrZy9UY2cvVGNnMkNvbmZpZy9UY2cyQ29uZmlnUGVpLmluZgppbmRleCBiNzlkMGEzZmI5 MTIuLmFhOTk2YjdkYTc3OCAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9UY2cvVGNnMkNvbmZpZy9UY2cy Q29uZmlnUGVpLmluZgorKysgYi9Pdm1mUGtnL1RjZy9UY2cyQ29uZmlnL1RjZzJDb25maWdQZWku aW5mCkBAIC0yMSw2ICsyMSw4IEBAIFtEZWZpbmVzXQogDQogW1NvdXJjZXNdDQogICBUY2cyQ29u ZmlnUGVpbS5jDQorICBUcG0xMlN1cHBvcnQuYw0KKyAgVHBtMTJTdXBwb3J0LmgNCiANCiBbUGFj a2FnZXNdDQogICBNZGVQa2cvTWRlUGtnLmRlYw0KZGlmZiAtLWdpdCBhL092bWZQa2cvVGNnL1Rj ZzJDb25maWcvVHBtMTJTdXBwb3J0LmggYi9Pdm1mUGtnL1RjZy9UY2cyQ29uZmlnL1RwbTEyU3Vw cG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzczOTc3NWQy MzUzCi0tLSAvZGV2L251bGwKKysrIGIvT3ZtZlBrZy9UY2cvVGNnMkNvbmZpZy9UcG0xMlN1cHBv cnQuaApAQCAtMCwwICsxLDMwIEBACisvKiogQGZpbGUNCisgIERlY2xhcmUgdGhlIEludGVybmFs VHBtMTJEZXRlY3QoKSBmdW5jdGlvbiwgaGlkaW5nIHRoZSBUUE0tMS4yIGRldGVjdGlvbg0KKyAg aW50ZXJuYWxzLg0KKw0KKyAgQ29weXJpZ2h0IChDKSAyMDIwLCBSZWQgSGF0LCBJbmMuDQorDQor ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyoqLw0KKw0K KyNpZm5kZWYgVFBNMTJfU1VQUE9SVF9IXw0KKyNkZWZpbmUgVFBNMTJfU1VQUE9SVF9IXw0KKw0K KyNpbmNsdWRlIDxVZWZpL1VlZmlCYXNlVHlwZS5oPg0KKw0KKy8qKg0KKyAgRGV0ZWN0IHRoZSBw cmVzZW5jZSBvZiBhIFRQTSB3aXRoIGludGVyZmFjZSB2ZXJzaW9uIDEuMi4NCisNCisgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICBUUE0tMS4yIGF2YWlsYWJsZS4gVGhlIFRwbTEyUmVxdWVzdFVz ZVRwbSgpIGFuZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRwbTEyU3VibWl0Q29tbWFu ZChUUE1fT1JEX0dldFRpY2tzKSBvcGVyYXRpb25zDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGZyb20gdGhlIFRwbTEyRGV2aWNlTGliIGNsYXNzKSBoYXZlIHN1Y2NlZWRlZC4NCisNCisg IEByZXR1cm4gICAgICAgICAgICAgICAgICBFcnJvciBjb2RlcyBwcm9wYWdhdGVkIGZyb20gVHBt MTJSZXF1ZXN0VXNlVHBtKCkgYW5kDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVHBtMTJT dWJtaXRDb21tYW5kKCkuDQorKiovDQorRUZJX1NUQVRVUw0KK0ludGVybmFsVHBtMTJEZXRlY3Qg KA0KKyAgVk9JRA0KKyAgKTsNCisNCisjZW5kaWYgLy8gVFBNMTJfU1VQUE9SVF9IXw0KZGlmZiAt LWdpdCBhL092bWZQa2cvVGNnL1RjZzJDb25maWcvVGNnMkNvbmZpZ1BlaW0uYyBiL092bWZQa2cv VGNnL1RjZzJDb25maWcvVGNnMkNvbmZpZ1BlaW0uYwppbmRleCA0NGFiZDZjNTQxZjkuLmNjNTRk OTVjYWQxOSAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9UY2cvVGNnMkNvbmZpZy9UY2cyQ29uZmlnUGVp bS5jCisrKyBiL092bWZQa2cvVGNnL1RjZzJDb25maWcvVGNnMkNvbmZpZ1BlaW0uYwpAQCAtMTUs MTMgKzE1LDEzIEBACiAjaW5jbHVkZSA8UGlQZWkuaD4NCiANCiAjaW5jbHVkZSA8R3VpZC9UcG1J bnN0YW5jZS5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCiAjaW5jbHVkZSA8TGli cmFyeS9EZWJ1Z0xpYi5oPg0KICNpbmNsdWRlIDxMaWJyYXJ5L1BlaVNlcnZpY2VzTGliLmg+DQog I2luY2x1ZGUgPExpYnJhcnkvVHBtMkRldmljZUxpYi5oPg0KLSNpbmNsdWRlIDxMaWJyYXJ5L1Rw bTEyRGV2aWNlTGliLmg+DQogI2luY2x1ZGUgPFBwaS9UcG1Jbml0aWFsaXplZC5oPg0KIA0KKyNp bmNsdWRlICJUcG0xMlN1cHBvcnQuaCINCisNCiBTVEFUSUMgQ09OU1QgRUZJX1BFSV9QUElfREVT Q1JJUFRPUiBtVHBtU2VsZWN0ZWRQcGkgPSB7DQogICAoRUZJX1BFSV9QUElfREVTQ1JJUFRPUl9Q UEkgfCBFRklfUEVJX1BQSV9ERVNDUklQVE9SX1RFUk1JTkFURV9MSVNUKSwNCiAgICZnRWZpVHBt RGV2aWNlU2VsZWN0ZWRHdWlkLA0KQEAgLTM0LDQ0ICszNCw2IEBAIFNUQVRJQyBDT05TVCBFRklf UEVJX1BQSV9ERVNDUklQVE9SICBtVHBtSW5pdGlhbGl6YXRpb25Eb25lUHBpTGlzdCA9IHsKICAg TlVMTA0KIH07DQogDQotI3ByYWdtYSBwYWNrICgxKQ0KLQ0KLXR5cGVkZWYgc3RydWN0IHsNCi0g IFRQTV9SU1BfQ09NTUFORF9IRFIgICBIZHI7DQotICBUUE1fQ1VSUkVOVF9USUNLUyAgICAgQ3Vy cmVudFRpY2tzOw0KLX0gVFBNX1JTUF9HRVRfVElDS1M7DQotDQotI3ByYWdtYSBwYWNrICgpDQot DQotLyoqDQotICBQcm9iZSBmb3IgdGhlIFRQTSBmb3IgMS4yIHZlcnNpb24sIGJ5IHNlbmRpbmcg VFBNMS4yIEdldFRpY2tzDQotDQotICBTZW5kaW5nIGEgVFBNMS4yIGNvbW1hbmQgdG8gYSBUUE0y IHNob3VsZCByZXR1cm4gYSBUUE0xLjINCi0gIGhlYWRlciAodGFnID0gMHhjNCkgYW5kIGVycm9y IGNvZGUgKFRQTV9CQURUQUcgPSAweDFlKQ0KLSoqLw0KLXN0YXRpYw0KLUVGSV9TVEFUVVMNCi1U ZXN0VHBtMTIgKA0KLSAgKQ0KLXsNCi0gIEVGSV9TVEFUVVMgICAgICAgICAgIFN0YXR1czsNCi0g IFRQTV9SUVVfQ09NTUFORF9IRFIgIENvbW1hbmQ7DQotICBUUE1fUlNQX0dFVF9USUNLUyAgICBS ZXNwb25zZTsNCi0gIFVJTlQzMiAgICAgICAgICAgICAgIExlbmd0aDsNCi0NCi0gIENvbW1hbmQu dGFnICAgICAgID0gU3dhcEJ5dGVzMTYgKFRQTV9UQUdfUlFVX0NPTU1BTkQpOw0KLSAgQ29tbWFu ZC5wYXJhbVNpemUgPSBTd2FwQnl0ZXMzMiAoc2l6ZW9mIChDb21tYW5kKSk7DQotICBDb21tYW5k Lm9yZGluYWwgICA9IFN3YXBCeXRlczMyIChUUE1fT1JEX0dldFRpY2tzKTsNCi0NCi0gIExlbmd0 aCA9IHNpemVvZiAoUmVzcG9uc2UpOw0KLSAgU3RhdHVzID0gVHBtMTJTdWJtaXRDb21tYW5kIChz aXplb2YgKENvbW1hbmQpLCAoVUlOVDggKikmQ29tbWFuZCwgJkxlbmd0aCwgKFVJTlQ4ICopJlJl c3BvbnNlKTsNCi0gIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCi0gICAgcmV0dXJuIFN0YXR1 czsNCi0gIH0NCi0NCi0gIHJldHVybiBFRklfU1VDQ0VTUzsNCi19DQotDQogLyoqDQogICBUaGUg ZW50cnkgcG9pbnQgZm9yIFRjZzIgY29uZmlndXJhdGlvbiBkcml2ZXIuDQogDQpAQCAtOTAsOCAr NTIsOCBAQCBUY2cyQ29uZmlnUGVpbUVudHJ5UG9pbnQgKAogDQogICBERUJVRyAoKERFQlVHX0lO Rk8sICIlYVxuIiwgX19GVU5DVElPTl9fKSk7DQogDQotICBTdGF0dXMgPSBUcG0xMlJlcXVlc3RV c2VUcG0gKCk7DQotICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSAmJiAhRUZJX0VSUk9SIChUZXN0 VHBtMTIgKCkpKSB7DQorICBTdGF0dXMgPSBJbnRlcm5hbFRwbTEyRGV0ZWN0ICgpOw0KKyAgaWYg KCFFRklfRVJST1IgKFN0YXR1cykpIHsNCiAgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IFRQ TTEuMiBkZXRlY3RlZFxuIiwgX19GVU5DVElPTl9fKSk7DQogICAgIFNpemUgPSBzaXplb2YgKGdF ZmlUcG1EZXZpY2VJbnN0YW5jZVRwbTEyR3VpZCk7DQogICAgIFN0YXR1cyA9IFBjZFNldFB0clMg KA0KZGlmZiAtLWdpdCBhL092bWZQa2cvVGNnL1RjZzJDb25maWcvVHBtMTJTdXBwb3J0LmMgYi9P dm1mUGtnL1RjZy9UY2cyQ29uZmlnL1RwbTEyU3VwcG9ydC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uNGY1YTc3NWM3YTAzCi0tLSAvZGV2L251bGwKKysrIGIvT3Zt ZlBrZy9UY2cvVGNnMkNvbmZpZy9UcG0xMlN1cHBvcnQuYwpAQCAtMCwwICsxLDc5IEBACisvKiog QGZpbGUNCisgIEltcGxlbWVudCB0aGUgSW50ZXJuYWxUcG0xMkRldGVjdCgpIGZ1bmN0aW9uIG9u IHRvcCBvZiB0aGUgVHBtMTJEZXZpY2VMaWINCisgIGNsYXNzLg0KKw0KKyAgQ29weXJpZ2h0IChD KSAyMDIwLCBSZWQgSGF0LCBJbmMuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4N CisjaW5jbHVkZSA8TGlicmFyeS9UcG0xMkRldmljZUxpYi5oPg0KKw0KKyNpbmNsdWRlICJUcG0x MlN1cHBvcnQuaCINCisNCisjcHJhZ21hIHBhY2sgKDEpDQordHlwZWRlZiBzdHJ1Y3Qgew0KKyAg VFBNX1JTUF9DT01NQU5EX0hEUiAgIEhkcjsNCisgIFRQTV9DVVJSRU5UX1RJQ0tTICAgICBDdXJy ZW50VGlja3M7DQorfSBUUE1fUlNQX0dFVF9USUNLUzsNCisjcHJhZ21hIHBhY2sgKCkNCisNCisv KioNCisgIFByb2JlIGZvciB0aGUgVFBNIGZvciAxLjIgdmVyc2lvbiwgYnkgc2VuZGluZyBUUE0x LjIgR2V0VGlja3MNCisNCisgIFNlbmRpbmcgYSBUUE0xLjIgY29tbWFuZCB0byBhIFRQTTIgc2hv dWxkIHJldHVybiBhIFRQTTEuMg0KKyAgaGVhZGVyICh0YWcgPSAweGM0KSBhbmQgZXJyb3IgY29k ZSAoVFBNX0JBRFRBRyA9IDB4MWUpDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICBUUE0gdmVy c2lvbiAxLjIgcHJvYmluZyBzdWNjZXNzZnVsLg0KKw0KKyAgQHJldHVybiAgICAgICAgICAgICAg RXJyb3IgY29kZXMgcHJvcGFnYXRlZCBmcm9tIFRwbTEyU3VibWl0Q29tbWFuZCgpLg0KKyoqLw0K K1NUQVRJQw0KK0VGSV9TVEFUVVMNCitUZXN0VHBtMTIgKA0KKyAgKQ0KK3sNCisgIEVGSV9TVEFU VVMgICAgICAgICAgIFN0YXR1czsNCisgIFRQTV9SUVVfQ09NTUFORF9IRFIgIENvbW1hbmQ7DQor ICBUUE1fUlNQX0dFVF9USUNLUyAgICBSZXNwb25zZTsNCisgIFVJTlQzMiAgICAgICAgICAgICAg IExlbmd0aDsNCisNCisgIENvbW1hbmQudGFnICAgICAgID0gU3dhcEJ5dGVzMTYgKFRQTV9UQUdf UlFVX0NPTU1BTkQpOw0KKyAgQ29tbWFuZC5wYXJhbVNpemUgPSBTd2FwQnl0ZXMzMiAoc2l6ZW9m IChDb21tYW5kKSk7DQorICBDb21tYW5kLm9yZGluYWwgICA9IFN3YXBCeXRlczMyIChUUE1fT1JE X0dldFRpY2tzKTsNCisNCisgIExlbmd0aCA9IHNpemVvZiAoUmVzcG9uc2UpOw0KKyAgU3RhdHVz ID0gVHBtMTJTdWJtaXRDb21tYW5kIChzaXplb2YgKENvbW1hbmQpLCAoVUlOVDggKikmQ29tbWFu ZCwgJkxlbmd0aCwNCisgICAgICAgICAgICAgKFVJTlQ4ICopJlJlc3BvbnNlKTsNCisgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIHJl dHVybiBFRklfU1VDQ0VTUzsNCit9DQorDQorLyoqDQorICBEZXRlY3QgdGhlIHByZXNlbmNlIG9m IGEgVFBNIHdpdGggaW50ZXJmYWNlIHZlcnNpb24gMS4yLg0KKw0KKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgIFRQTS0xLjIgYXZhaWxhYmxlLiBUaGUgVHBtMTJSZXF1ZXN0VXNlVHBtKCkgYW5k DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVHBtMTJTdWJtaXRDb21tYW5kKFRQTV9PUkRf R2V0VGlja3MpIG9wZXJhdGlvbnMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJvbSB0 aGUgVHBtMTJEZXZpY2VMaWIgY2xhc3MpIGhhdmUgc3VjY2VlZGVkLg0KKw0KKyAgQHJldHVybiAg ICAgICAgICAgICAgICAgIEVycm9yIGNvZGVzIHByb3BhZ2F0ZWQgZnJvbSBUcG0xMlJlcXVlc3RV c2VUcG0oKSBhbmQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUcG0xMlN1Ym1pdENvbW1h bmQoKS4NCisqKi8NCitFRklfU1RBVFVTDQorSW50ZXJuYWxUcG0xMkRldGVjdCAoDQorICBWT0lE DQorICApDQorew0KKyAgRUZJX1NUQVRVUyBTdGF0dXM7DQorDQorICBTdGF0dXMgPSBUcG0xMlJl cXVlc3RVc2VUcG0gKCk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVy biBTdGF0dXM7DQorICB9DQorDQorICByZXR1cm4gVGVzdFRwbTEyICgpOw0KK30NCi0tIAoyLjE5 LjEuMy5nMzAyNDdhYTVkMjAxCgoK