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.web12.230.1582755145497386887 for ; Wed, 26 Feb 2020 14:12:25 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=hopjvR4o; 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=1582755144; 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=tqYcndqlfPRofLXbO+CJqiGVyNMPnSfkx3WrUMJSgbY=; b=hopjvR4onX8NoxWKtT4/MkFqV/afK7piNe8/iZm0Y6DugKa6o6AXlkBlp6FfWvM9VWMgRD tMT8e1xVYya5W2BiSKmlFmKbLAxBJxf6exOYtfwlvNfmeUeCrrwaPLfgDYtL3H2/yNt7ZJ fnPxThuuZt3Vd6MkbUmPwJpGVL6xXZ4= 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-41-05awsdj3N_OrkE670A0_Qg-1; Wed, 26 Feb 2020 17:12:20 -0500 X-MC-Unique: 05awsdj3N_OrkE670A0_Qg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 52786DB61; Wed, 26 Feb 2020 22:12:19 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-185.ams2.redhat.com [10.36.116.185]) by smtp.corp.redhat.com (Postfix) with ESMTP id 93C63909E9; Wed, 26 Feb 2020 22:12:17 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: Ard Biesheuvel , Igor Mammedov , Jiewen Yao , Jordan Justen , Michael Kinney , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 07/16] OvmfPkg/CpuHotplugSmm: add hotplug register block helper functions Date: Wed, 26 Feb 2020 23:11:47 +0100 Message-Id: <20200226221156.29589-8-lersek@redhat.com> In-Reply-To: <20200226221156.29589-1-lersek@redhat.com> References: <20200226221156.29589-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 QWRkIGEgaGFuZGZ1bCBvZiBzaW1wbGUgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgUUVNVSdzIGhv dHBsdWcgcmVnaXN0ZXJzCm1vcmUgY29udmVuaWVudGx5LiBUaGVzZSBmdW5jdGlvbnMgdGhpbmx5 IHdyYXAgc29tZSBvZiB0aGUgcmVnaXN0ZXJzCmRlc2NyaWJlZCBpbiAiZG9jcy9zcGVjcy9hY3Bp X2NwdV9ob3RwbHVnLnR4dCIgaW4gdGhlIFFFTVUgdHJlZS4gVGhlCmZ1bmN0aW9ucyBoYW5nIChi eSBkZXNpZ24pIGlmIHRoZXkgZW5jb3VudGVyIGFuIGludGVybmFsIGZhaWx1cmUuCgpDYzogQXJk IEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+CkNjOiBJZ29yIE1hbW1lZG92 IDxpbWFtbWVkb0ByZWRoYXQuY29tPgpDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5j b20+CkNjOiBKb3JkYW4gSnVzdGVuIDxqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPgpDYzogTWlj aGFlbCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPgpDYzogUGhpbGlwcGUgTWF0 aGlldS1EYXVkw6kgPHBoaWxtZEByZWRoYXQuY29tPgpSZWY6IGh0dHBzOi8vYnVnemlsbGEudGlh bm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMgpTaWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJz ZWsgPGxlcnNla0ByZWRoYXQuY29tPgpBY2tlZC1ieTogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVz aGV1dmVsQGxpbmFyby5vcmc+Ci0tLQoKTm90ZXM6CiAgICB2MjoKICAgIAogICAgLSBQaWNrIHVw IEFyZCdzIEFja2VkLWJ5LCB3aGljaCBpcyBjb25kaXRpb25hbCBvbiBhcHByb3ZhbCBmcm9tIElu dGVsCiAgICAgIHJldmlld2VycyBvbiBDYy4gKEknZCBsaWtlIHRvIHNhdmUgQXJkIHRoZSBjaHVy biBvZiByZS1hY2tpbmcKICAgICAgdW5tb2RpZmllZCBwYXRjaGVzLikKCiBPdm1mUGtnL0NwdUhv dHBsdWdTbW0vQ3B1SG90cGx1Z1NtbS5pbmYgfCAgIDIgKwogT3ZtZlBrZy9DcHVIb3RwbHVnU21t L1FlbXVDcHVocC5oICAgICAgIHwgIDQ3ICsrKysrKysKIE92bWZQa2cvQ3B1SG90cGx1Z1NtbS9R ZW11Q3B1aHAuYyAgICAgICB8IDEzNiArKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFu Z2VkLCAxODUgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL092bWZQa2cvQ3B1SG90cGx1Z1Nt bS9DcHVIb3RwbHVnU21tLmluZiBiL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9DcHVIb3RwbHVnU21t LmluZgppbmRleCBmYTcwODU4YThkYWIuLmFjNGNhNGMxZjRmMiAxMDA2NDQKLS0tIGEvT3ZtZlBr Zy9DcHVIb3RwbHVnU21tL0NwdUhvdHBsdWdTbW0uaW5mCisrKyBiL092bWZQa2cvQ3B1SG90cGx1 Z1NtbS9DcHVIb3RwbHVnU21tLmluZgpAQCAtNCw0NCArNCw0NiBAQAogIyBDb3B5cmlnaHQgKGMp IDIwMjAsIFJlZCBIYXQsIEluYy4NCiAjDQogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNE LTItQ2xhdXNlLVBhdGVudA0KICMjDQogDQogW0RlZmluZXNdDQogICBJTkZfVkVSU0lPTiAgICAg ICAgICAgICAgICA9IDEuMjkNCiAgIFBJX1NQRUNJRklDQVRJT05fVkVSU0lPTiAgID0gMHgwMDAx MDA0NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBJLTEuNy4wDQogICBCQVNFX05BTUUg ICAgICAgICAgICAgICAgICA9IENwdUhvdHBsdWdTbW0NCiAgIEZJTEVfR1VJRCAgICAgICAgICAg ICAgICAgID0gODRFRUExMTQtQzZCRS00NDQ1LThGOTAtNTFEOTc4NjNFMzYzDQogICBNT0RVTEVf VFlQRSAgICAgICAgICAgICAgICA9IERYRV9TTU1fRFJJVkVSDQogICBFTlRSWV9QT0lOVCAgICAg ICAgICAgICAgICA9IENwdUhvdHBsdWdFbnRyeQ0KIA0KICMNCiAjIFRoZSBmb2xsb3dpbmcgaW5m b3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVxdWlyZWQgYnkgdGhlIGJ1 aWxkDQogIyB0b29scy4NCiAjDQogIyBWQUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICA9IElBMzIg WDY0DQogIw0KIA0KIFtTb3VyY2VzXQ0KICAgQ3B1SG90cGx1Zy5jDQorICBRZW11Q3B1aHAuYw0K KyAgUWVtdUNwdWhwLmgNCiANCiBbUGFja2FnZXNdDQogICBNZGVQa2cvTWRlUGtnLmRlYw0KICAg T3ZtZlBrZy9Pdm1mUGtnLmRlYw0KIA0KIFtMaWJyYXJ5Q2xhc3Nlc10NCiAgIEJhc2VMaWINCiAg IERlYnVnTGliDQogICBNbVNlcnZpY2VzVGFibGVMaWINCiAgIFBjZExpYg0KICAgVWVmaURyaXZl ckVudHJ5UG9pbnQNCiANCiBbUHJvdG9jb2xzXQ0KICAgZ0VmaU1tQ3B1SW9Qcm90b2NvbEd1aWQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCiAN CiBbUGNkXQ0KICAgZ1VlZmlPdm1mUGtnVG9rZW5TcGFjZUd1aWQuUGNkUTM1U21yYW1BdERlZmF1 bHRTbWJhc2UgICAgICAgICAgICAgIyMgQ09OU1VNRVMNCiANCiBbRmVhdHVyZVBjZF0NCiAgIGdV ZWZpT3ZtZlBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNtbVNtcmFtUmVxdWlyZSAgICAgICAgICAgICAg ICAgICAgICMjIENPTlNVTUVTDQogDQogW0RlcGV4XQ0KZGlmZiAtLWdpdCBhL092bWZQa2cvQ3B1 SG90cGx1Z1NtbS9RZW11Q3B1aHAuaCBiL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9RZW11Q3B1aHAu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgyZjg4ZjBiNzNiYgot LS0gL2Rldi9udWxsCisrKyBiL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9RZW11Q3B1aHAuaApAQCAt MCwwICsxLDQ3IEBACisvKiogQGZpbGUNCisgIFNpbXBsZSB3cmFwcGVyIGZ1bmN0aW9ucyB0aGF0 IGFjY2VzcyBRRU1VJ3MgbW9kZXJuIENQVSBob3RwbHVnIHJlZ2lzdGVyDQorICBibG9jay4NCisN CisgIFRoZXNlIGZ1bmN0aW9ucyB0aGlubHkgd3JhcCBzb21lIG9mIHRoZSByZWdpc3RlcnMgZGVz Y3JpYmVkIGluDQorICAiZG9jcy9zcGVjcy9hY3BpX2NwdV9ob3RwbHVnLnR4dCIgaW4gdGhlIFFF TVUgc291cmNlLiBJTyBQb3J0cyBhcmUgYWNjZXNzZWQNCisgIHZpYSBFRklfTU1fQ1BVX0lPX1BS T1RPQ09MLiBJZiBhIHByb3RvY29sIGNhbGwgZmFpbHMsIHRoZXNlIGZ1bmN0aW9ucyBkb24ndA0K KyAgcmV0dXJuLg0KKw0KKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBSZWQgSGF0LCBJbmMuDQorDQor ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KKyoqLw0KKw0K KyNpZm5kZWYgUUVNVV9DUFVIUF9IXw0KKyNkZWZpbmUgUUVNVV9DUFVIUF9IXw0KKw0KKyNpbmNs dWRlIDxQcm90b2NvbC9NbUNwdUlvLmg+ICAvLyBFRklfTU1fQ1BVX0lPX1BST1RPQ09MDQorDQor VUlOVDMyDQorUWVtdUNwdWhwUmVhZENvbW1hbmREYXRhMiAoDQorICBJTiBDT05TVCBFRklfTU1f Q1BVX0lPX1BST1RPQ09MICpNbUNwdUlvDQorICApOw0KKw0KK1VJTlQ4DQorUWVtdUNwdWhwUmVh ZENwdVN0YXR1cyAoDQorICBJTiBDT05TVCBFRklfTU1fQ1BVX0lPX1BST1RPQ09MICpNbUNwdUlv DQorICApOw0KKw0KK1VJTlQzMg0KK1FlbXVDcHVocFJlYWRDb21tYW5kRGF0YSAoDQorICBJTiBD T05TVCBFRklfTU1fQ1BVX0lPX1BST1RPQ09MICpNbUNwdUlvDQorICApOw0KKw0KK1ZPSUQNCitR ZW11Q3B1aHBXcml0ZUNwdVNlbGVjdG9yICgNCisgIElOIENPTlNUIEVGSV9NTV9DUFVfSU9fUFJP VE9DT0wgKk1tQ3B1SW8sDQorICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgIFNlbGVj dG9yDQorICApOw0KKw0KK1ZPSUQNCitRZW11Q3B1aHBXcml0ZUNvbW1hbmQgKA0KKyAgSU4gQ09O U1QgRUZJX01NX0NQVV9JT19QUk9UT0NPTCAqTW1DcHVJbywNCisgIElOIFVJTlQ4ICAgICAgICAg ICAgICAgICAgICAgICAgQ29tbWFuZA0KKyAgKTsNCisNCisjZW5kaWYgLy8gUUVNVV9DUFVIUF9I Xw0KZGlmZiAtLWdpdCBhL092bWZQa2cvQ3B1SG90cGx1Z1NtbS9RZW11Q3B1aHAuYyBiL092bWZQ a2cvQ3B1SG90cGx1Z1NtbS9RZW11Q3B1aHAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjMxZTQ2ZjUxOTM0YQotLS0gL2Rldi9udWxsCisrKyBiL092bWZQa2cvQ3B1 SG90cGx1Z1NtbS9RZW11Q3B1aHAuYwpAQCAtMCwwICsxLDEzNiBAQAorLyoqIEBmaWxlDQorICBT aW1wbGUgd3JhcHBlciBmdW5jdGlvbnMgdGhhdCBhY2Nlc3MgUUVNVSdzIG1vZGVybiBDUFUgaG90 cGx1ZyByZWdpc3Rlcg0KKyAgYmxvY2suDQorDQorICBUaGVzZSBmdW5jdGlvbnMgdGhpbmx5IHdy YXAgc29tZSBvZiB0aGUgcmVnaXN0ZXJzIGRlc2NyaWJlZCBpbg0KKyAgImRvY3Mvc3BlY3MvYWNw aV9jcHVfaG90cGx1Zy50eHQiIGluIHRoZSBRRU1VIHNvdXJjZS4gSU8gUG9ydHMgYXJlIGFjY2Vz c2VkDQorICB2aWEgRUZJX01NX0NQVV9JT19QUk9UT0NPTC4gSWYgYSBwcm90b2NvbCBjYWxsIGZh aWxzLCB0aGVzZSBmdW5jdGlvbnMgZG9uJ3QNCisgIHJldHVybi4NCisNCisgIENvcHlyaWdodCAo YykgMjAyMCwgUmVkIEhhdCwgSW5jLg0KKw0KKyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJT RC0yLUNsYXVzZS1QYXRlbnQNCisqKi8NCisNCisjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9R MzVNY2hJY2g5Lmg+ICAgICAvLyBJQ0g5X0NQVV9IT1RQTFVHX0JBU0UNCisjaW5jbHVkZSA8SW5k dXN0cnlTdGFuZGFyZC9RZW11Q3B1SG90cGx1Zy5oPiAvLyBRRU1VX0NQVUhQX1JfQ01EX0RBVEEy DQorI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPiAgICAgICAgICAgICAgICAgLy8gQ3B1RGVh ZExvb3AoKQ0KKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+ICAgICAgICAgICAgICAgIC8v IERFQlVHKCkNCisNCisjaW5jbHVkZSAiUWVtdUNwdWhwLmgiDQorDQorVUlOVDMyDQorUWVtdUNw dWhwUmVhZENvbW1hbmREYXRhMiAoDQorICBJTiBDT05TVCBFRklfTU1fQ1BVX0lPX1BST1RPQ09M ICpNbUNwdUlvDQorICApDQorew0KKyAgVUlOVDMyICAgICBDb21tYW5kRGF0YTI7DQorICBFRklf U1RBVFVTIFN0YXR1czsNCisNCisgIENvbW1hbmREYXRhMiA9IDA7DQorICBTdGF0dXMgPSBNbUNw dUlvLT5Jby5SZWFkICgNCisgICAgICAgICAgICAgICAgICAgICAgICAgTW1DcHVJbywNCisgICAg ICAgICAgICAgICAgICAgICAgICAgTU1fSU9fVUlOVDMyLA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICBJQ0g5X0NQVV9IT1RQTFVHX0JBU0UgKyBRRU1VX0NQVUhQX1JfQ01EX0RBVEEyLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAmQ29t bWFuZERhdGEyDQorICAgICAgICAgICAgICAgICAgICAgICAgICk7DQorICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQorICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogJXJcbiIsIF9fRlVO Q1RJT05fXywgU3RhdHVzKSk7DQorICAgIEFTU0VSVCAoRkFMU0UpOw0KKyAgICBDcHVEZWFkTG9v cCAoKTsNCisgIH0NCisgIHJldHVybiBDb21tYW5kRGF0YTI7DQorfQ0KKw0KK1VJTlQ4DQorUWVt dUNwdWhwUmVhZENwdVN0YXR1cyAoDQorICBJTiBDT05TVCBFRklfTU1fQ1BVX0lPX1BST1RPQ09M ICpNbUNwdUlvDQorICApDQorew0KKyAgVUlOVDggICAgICBDcHVTdGF0dXM7DQorICBFRklfU1RB VFVTIFN0YXR1czsNCisNCisgIENwdVN0YXR1cyA9IDA7DQorICBTdGF0dXMgPSBNbUNwdUlvLT5J by5SZWFkICgNCisgICAgICAgICAgICAgICAgICAgICAgICAgTW1DcHVJbywNCisgICAgICAgICAg ICAgICAgICAgICAgICAgTU1fSU9fVUlOVDgsDQorICAgICAgICAgICAgICAgICAgICAgICAgIElD SDlfQ1BVX0hPVFBMVUdfQkFTRSArIFFFTVVfQ1BVSFBfUl9DUFVfU1RBVCwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgMSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgJkNwdVN0YXR1cw0K KyAgICAgICAgICAgICAgICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KKyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6ICVyXG4iLCBfX0ZVTkNUSU9OX18sIFN0 YXR1cykpOw0KKyAgICBBU1NFUlQgKEZBTFNFKTsNCisgICAgQ3B1RGVhZExvb3AgKCk7DQorICB9 DQorICByZXR1cm4gQ3B1U3RhdHVzOw0KK30NCisNCitVSU5UMzINCitRZW11Q3B1aHBSZWFkQ29t bWFuZERhdGEgKA0KKyAgSU4gQ09OU1QgRUZJX01NX0NQVV9JT19QUk9UT0NPTCAqTW1DcHVJbw0K KyAgKQ0KK3sNCisgIFVJTlQzMiAgICAgQ29tbWFuZERhdGE7DQorICBFRklfU1RBVFVTIFN0YXR1 czsNCisNCisgIENvbW1hbmREYXRhID0gMDsNCisgIFN0YXR1cyA9IE1tQ3B1SW8tPklvLlJlYWQg KA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBNbUNwdUlvLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICBNTV9JT19VSU5UMzIsDQorICAgICAgICAgICAgICAgICAgICAgICAgIElDSDlfQ1BV X0hPVFBMVUdfQkFTRSArIFFFTVVfQ1BVSFBfUldfQ01EX0RBVEEsDQorICAgICAgICAgICAgICAg ICAgICAgICAgIDEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICZDb21tYW5kRGF0YQ0KKyAg ICAgICAgICAgICAgICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0K KyAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6ICVyXG4iLCBfX0ZVTkNUSU9OX18sIFN0YXR1 cykpOw0KKyAgICBBU1NFUlQgKEZBTFNFKTsNCisgICAgQ3B1RGVhZExvb3AgKCk7DQorICB9DQor ICByZXR1cm4gQ29tbWFuZERhdGE7DQorfQ0KKw0KK1ZPSUQNCitRZW11Q3B1aHBXcml0ZUNwdVNl bGVjdG9yICgNCisgIElOIENPTlNUIEVGSV9NTV9DUFVfSU9fUFJPVE9DT0wgKk1tQ3B1SW8sDQor ICBJTiBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdG9yDQorICApDQorew0KKyAg RUZJX1NUQVRVUyBTdGF0dXM7DQorDQorICBTdGF0dXMgPSBNbUNwdUlvLT5Jby5Xcml0ZSAoDQor ICAgICAgICAgICAgICAgICAgICAgICAgIE1tQ3B1SW8sDQorICAgICAgICAgICAgICAgICAgICAg ICAgIE1NX0lPX1VJTlQzMiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgSUNIOV9DUFVfSE9U UExVR19CQVNFICsgUUVNVV9DUFVIUF9XX0NQVV9TRUwsDQorICAgICAgICAgICAgICAgICAgICAg ICAgIDEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICZTZWxlY3Rvcg0KKyAgICAgICAgICAg ICAgICAgICAgICAgICApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBERUJV RyAoKERFQlVHX0VSUk9SLCAiJWE6ICVyXG4iLCBfX0ZVTkNUSU9OX18sIFN0YXR1cykpOw0KKyAg ICBBU1NFUlQgKEZBTFNFKTsNCisgICAgQ3B1RGVhZExvb3AgKCk7DQorICB9DQorfQ0KKw0KK1ZP SUQNCitRZW11Q3B1aHBXcml0ZUNvbW1hbmQgKA0KKyAgSU4gQ09OU1QgRUZJX01NX0NQVV9JT19Q Uk9UT0NPTCAqTW1DcHVJbywNCisgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgQ29t bWFuZA0KKyAgKQ0KK3sNCisgIEVGSV9TVEFUVVMgU3RhdHVzOw0KKw0KKyAgU3RhdHVzID0gTW1D cHVJby0+SW8uV3JpdGUgKA0KKyAgICAgICAgICAgICAgICAgICAgICAgICBNbUNwdUlvLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICBNTV9JT19VSU5UOCwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgSUNIOV9DUFVfSE9UUExVR19CQVNFICsgUUVNVV9DUFVIUF9XX0NNRCwNCisgICAgICAg ICAgICAgICAgICAgICAgICAgMSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgJkNvbW1hbmQN CisgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykp IHsNCisgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiAlclxuIiwgX19GVU5DVElPTl9fLCBT dGF0dXMpKTsNCisgICAgQVNTRVJUIChGQUxTRSk7DQorICAgIENwdURlYWRMb29wICgpOw0KKyAg fQ0KK30NCi0tIAoyLjE5LjEuMy5nMzAyNDdhYTVkMjAxCgoK