From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH v3 09/12] fuzz/x86_emulate: Make input more compact Date: Tue, 10 Oct 2017 17:20:08 +0100 Message-ID: <20171010162011.9629-9-george.dunlap@citrix.com> References: <20171010162011.9629-1-george.dunlap@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e22ZK-00036W-W7 for xen-devel@lists.xenproject.org; Tue, 10 Oct 2017 22:00:07 +0000 In-Reply-To: <20171010162011.9629-1-george.dunlap@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Ian Jackson , Wei Liu , George Dunlap , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org QXQgdGhlIG1vbWVudCwgQUZMIHJlY2tvbnMgdGhhdCBmb3IgYW55IGdpdmVuIGlucHV0LCA4NyUg b2YgaXQgaXMKY29tcGxldGVseSBpcnJlbGV2YW50OiB0aGF0IGlzLCBpdCBjYW4gY2hhbmdlIGl0 IGFzIG11Y2ggYXMgaXQgd2FudHMKYnV0IGhhdmUgbm8gaW1wYWN0IG9uIHRoZSByZXN1bHQgb2Yg dGhlIHRlc3Q7IGFuZCB5ZXQgaXQgY2FuJ3QgcmVtb3ZlCml0LgoKVGhpcyBpcyBsYXJnZWx5IGJl Y2F1c2Ugd2UgaW50ZXJwcmV0IHRoZSBibG9iIGhhbmRlZCB0byB1cyBhcyBhIGxhcmdlCnN0cnVj dCwgaW5jbHVkaW5nIENSIHZhbHVlcywgTVNSIHZhbHVlcywgc2VnbWVudCByZWdpc3RlcnMsIGFu ZCBhIGZ1bGwKY3B1X3VzZXJfcmVncy4KCkluc3RlYWQsIG1vZGlmeSBvdXIgaW50ZXJwcmV0YXRp b24gdG8gaGF2ZSBhICJzZXQgc3RhdGUiIHN0YW56YSBhdCB0aGUKZnJvbnQuICBCZWdpbiBieSBy ZWFkaW5nIGEgMTYtYml0IHZhbHVlOyBpZiBpdCBpcyBsb3dlciB0aGFuIGEgY2VydGFpbgp0aHJl c2hvbGQsIHNldCBzb21lIHN0YXRlIGFjY29yZGluZyB0byB3aGF0IGJ5dGUgaXQgaXMsIGFuZCBy ZXBlYXQuCkNvbnRpbnVlIHVudGlsIHRoZSBieXRlIGlzIGFib3ZlIGEgY2VydGFpbiB0aHJlc2hv bGQuCgpUaGlzIGFsbG93cyBBRkwgdG8gY29tcGFjdCBhbnkgZ2l2ZW4gdGVzdCBjYXNlIG11Y2gg c21hbGxlcjsgdG8gdGhlCnBvaW50IHdoZXJlIG5vdyBpdCByZWNrb25zIHRoZXJlIGlzIG5vdCBh IHNpbmdsZSBieXRlIG9mIHRoZSB0ZXN0IGZpbGUKd2hpY2ggYmVjb21lcyBpcnJlbGV2YW50LiAg VGVzdGluZyBoYXZlIHNob3duIHRoYXQgdGhpcyBvcHRpb24gYm90aAphbGxvd3MgQUZMIHRvIHJl YWNoIGNvdmVyYWdlIG11Y2ggZmFzdGVyLCBhbmQgdG8gaGF2ZSBhIHRvdGFsIGNvdmVyYWdlCmhp Z2hlciB0aGFuIHdpdGggdGhlIG9sZCBmb3JtYXQuCgpNYWtlIHRoaXMgYW4gb3B0aW9uIChyYXRo ZXIgdGhhbiBhIHVuaWxhdGVyYWwgY2hhbmdlKSB0byBlbmFibGUKc2lkZS1ieS1zaWRlIHBlcmZv cm1hbmNlIGNvbXBhcmlzb24gb2YgdGhlIG9sZCBhbmQgbmV3IGZvcm1hdHMuCgpTaWduZWQtb2Zm LWJ5OiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNpdHJpeC5jb20+Ci0tLQp2MzoKIC0g U2V0IGRlZmF1bHQgZm9yIG9wdF9jb21wYWN0IHN0YXRpY2FsbHkgaW4gZnV6ei1lbXVsLmMgcmF0 aGVyIHRoYW4gYWZsLWhhcm5lc3MKIC0gTWFrZSBpbnB1dCBzaXplIC8gdW5jb25kaXRpb25hbCBp bnB1dCByZWFkaW5nIG1vcmUgY29uc2lzdGVudAogLSBSZXF1aXJlIG9ubHkgbWluaW11bSBpbnB1 dCByZWFkLCBub3QgZmlyc3QgaW5zdHJ1Y3Rpb24gYnl0ZQogLSBVc2UgQVJSQVlfU0laRSgpIGZv ciBoYXJkY29kZWQgdmFsdWVzCiAtIFVzZSBgZm9yICggOyA7IClgIHJhdGhlciB0aGFuIGB3aGls ZSgxKWAKIC0gU29tZSBzdHlsZSBpc3N1ZXMKIC0gTW92ZSBvcHRfY29tcGFjdCBkZWNsYXJhdGlv biBpbnRvIGZ1enotZW11bC5oCnYyOiBQb3J0IG92ZXIgcHJldmlvdXMgY2hhbmdlcwoKQ0M6IElh biBKYWNrc29uIDxpYW4uamFja3NvbkBjaXRyaXguY29tPgpDQzogV2VpIExpdSA8d2VpLmxpdTJA Y2l0cml4LmNvbT4KQ0M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ CkNDOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQogdG9vbHMvZnV6ei94ODZf aW5zdHJ1Y3Rpb25fZW11bGF0b3IvYWZsLWhhcm5lc3MuYyB8ICA5ICsrLQogdG9vbHMvZnV6ei94 ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvZnV6ei1lbXVsLmMgICB8IDk2ICsrKysrKysrKysrKysr KysrKysrLS0tCiB0b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwu aCAgIHwgIDIgKwogMyBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9h ZmwtaGFybmVzcy5jIGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvYWZsLWhh cm5lc3MuYwppbmRleCA4OTFlNTZmNDQ4Li4wNTIyMzljZWE0IDEwMDY0NAotLS0gYS90b29scy9m dXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9hZmwtaGFybmVzcy5jCisrKyBiL3Rvb2xzL2Z1 enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2FmbC1oYXJuZXNzLmMKQEAgLTQsNiArNCw3IEBA CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8Z2V0 b3B0Lmg+CisjaW5jbHVkZSA8c3RkYm9vbC5oPgogI2luY2x1ZGUgImZ1enotZW11bC5oIgogCiBz dGF0aWMgdWludDhfdCBpbnB1dFtJTlBVVF9TSVpFXTsKQEAgLTIxLDkgKzIyLDExIEBAIGludCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICB7CiAgICAgICAgIGVudW0gewogICAgICAg ICAgICAgT1BUX01JTl9TSVpFLAorICAgICAgICAgICAgT1BUX0NPTVBBQ1QsCiAgICAgICAgIH07 CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIGxvcHRzW10gPSB7CiAgICAgICAg ICAgICB7ICJtaW4taW5wdXQtc2l6ZSIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRfTUlOX1NJWkUg fSwKKyAgICAgICAgICAgIHsgImNvbXBhY3QiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BU X0NPTVBBQ1QgfSwKICAgICAgICAgICAgIHsgMCwgMCwgMCwgMCB9CiAgICAgICAgIH07CiAgICAg ICAgIGludCBjID0gZ2V0b3B0X2xvbmdfb25seShhcmdjLCBhcmd2LCAiIiwgbG9wdHMsIE5VTEwp OwpAQCAtMzgsOCArNDEsMTIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogICAg ICAgICAgICAgZXhpdCgwKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgT1BU X0NPTVBBQ1Q6CisgICAgICAgICAgICBvcHRfY29tcGFjdCA9IGF0b2kob3B0YXJnKTsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgJz8nOgotICAgICAgICAg ICAgcHJpbnRmKCJVc2FnZTogJXMgJEZJTEUgWyRGSUxFLi4uXSB8IFstLW1pbi1pbnB1dC1zaXpl XVxuIiwgYXJndlswXSk7CisgICAgICAgICAgICBwcmludGYoIlVzYWdlOiAlcyBbLS1jb21wYWN0 PTB8MV0gJEZJTEUgWyRGSUxFLi4uXSB8IFstLW1pbi1pbnB1dC1zaXplXVxuIiwgYXJndlswXSk7 CiAgICAgICAgICAgICBleGl0KC0xKTsKICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQg YS90b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYyBiL3Rvb2xz L2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jCmluZGV4IDliYmU5NzNm ZDAuLmI2ZWJjZWJjMTkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2Vt dWxhdG9yL2Z1enotZW11bC5jCisrKyBiL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxh dG9yL2Z1enotZW11bC5jCkBAIC0zNSwxMyArMzUsMTQgQEAgc3RydWN0IGZ1enpfY29ycHVzCiBz dHJ1Y3QgZnV6el9zdGF0ZQogewogICAgIHVuc2lnbmVkIGxvbmcgb3B0aW9uczsKKyNkZWZpbmUg REFUQV9TSVpFX0NPTVBBQ1Qgb2Zmc2V0b2Yoc3RydWN0IGZ1enpfc3RhdGUsIGNyKQogICAgIHVu c2lnbmVkIGxvbmcgY3JbNV07CiAgICAgdWludDY0X3QgbXNyW01TUl9JTkRFWF9NQVhdOwogICAg IHN0cnVjdCBzZWdtZW50X3JlZ2lzdGVyIHNlZ21lbnRzW1NFR19OVU1dOwogICAgIHN0cnVjdCBj cHVfdXNlcl9yZWdzIHJlZ3M7CiAKICAgICAvKiBGdXp6ZXIncyBpbnB1dCBkYXRhLiAqLwotI2Rl ZmluZSBEQVRBX09GRlNFVCBvZmZzZXRvZihzdHJ1Y3QgZnV6el9zdGF0ZSwgY29ycHVzKQorI2Rl ZmluZSBEQVRBX1NJWkVfRlVMTCBvZmZzZXRvZihzdHJ1Y3QgZnV6el9zdGF0ZSwgY29ycHVzKQog ICAgIHN0cnVjdCBmdXp6X2NvcnB1cyAqY29ycHVzOwogCiAgICAgLyogUmVhbCBhbW91bnQgb2Yg ZGF0YSBiYWNraW5nIGNvcnB1cy0+ZGF0YVtdLiAqLwpAQCAtNTQsNiArNTUsMTMgQEAgc3RydWN0 IGZ1enpfc3RhdGUKICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVfb3BzIG9wczsKIH07CiAKK2Jvb2wg b3B0X2NvbXBhY3QgPSB0cnVlOworCit1bnNpZ25lZCBpbnQgZnV6el9taW5pbWFsX2lucHV0X3Np emUodm9pZCkKK3sKKyAgICByZXR1cm4gb3B0X2NvbXBhY3QgPyBEQVRBX1NJWkVfQ09NUEFDVCA6 IERBVEFfU0laRV9GVUxMOworfQorCiBzdGF0aWMgaW5saW5lIGJvb2wgaW5wdXRfYXZhaWwoY29u c3Qgc3RydWN0IGZ1enpfc3RhdGUgKnMsIHNpemVfdCBzaXplKQogewogICAgIHJldHVybiBzLT5k YXRhX2luZGV4ICsgc2l6ZSA8PSBzLT5kYXRhX251bTsKQEAgLTY0Nyw5ICs2NTUsODIgQEAgc3Rh dGljIHZvaWQgc2V0dXBfc3RhdGUoc3RydWN0IHg4Nl9lbXVsYXRlX2N0eHQgKmN0eHQpCiB7CiAg ICAgc3RydWN0IGZ1enpfc3RhdGUgKnMgPSBjdHh0LT5kYXRhOwogCi0gICAgLyogRnV6eiBhbGwg b2YgdGhlIHN0YXRlIGluIG9uZSBnbyAqLwotICAgIGlmICghaW5wdXRfcmVhZChzLCBzLCBEQVRB X09GRlNFVCkpCi0gICAgICAgIGV4aXQoLTEpOworICAgIGlmICggIW9wdF9jb21wYWN0ICkKKyAg ICB7CisgICAgICAgIC8qIEZ1enogYWxsIG9mIHRoZSBzdGF0ZSBpbiBvbmUgZ28gKi8KKyAgICAg ICAgaWYgKCAhaW5wdXRfcmVhZChzLCBzLCBEQVRBX1NJWkVfRlVMTCkgKQorICAgICAgICAgICAg ZXhpdCgtMSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBNb2RpZnkgb25seSBz ZWxlY3QgYml0cyBvZiBzdGF0ZSAqLworCisgICAgLyogQWx3YXlzIHJlYWQgJ29wdGlvbnMnICov CisgICAgaWYgKCAhaW5wdXRfcmVhZChzLCBzLCBEQVRBX1NJWkVfQ09NUEFDVCkgKQorICAgICAg ICByZXR1cm47CisgICAgCisgICAgZm9yICggOyA7ICkKKyAgICB7CisgICAgICAgIHVpbnQxNl90 IG9mZnNldDsKKworICAgICAgICAvKiBSZWFkIDE2IGJpdHMgdG8gZGVjaWRlIHdoYXQgYml0IG9m IHN0YXRlIHRvIG1vZGlmeSAqLworICAgICAgICBpZiAoICFpbnB1dF9yZWFkKHMsICZvZmZzZXQs IHNpemVvZihvZmZzZXQpKSApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLyogCisg ICAgICAgICAqIFRoZW4gZGVjaWRlIGlmIGl0J3MgInBvaW50aW5nIHRvIiBkaWZmZXJlbnQgYml0 cyBvZiB0aGUKKyAgICAgICAgICogc3RhdGUgCisgICAgICAgICAqLworCisgICAgICAgIC8qIGNy W10/ICovCisgICAgICAgIGlmICggb2Zmc2V0IDwgQVJSQVlfU0laRShzLT5jcikgKQorICAgICAg ICB7CisgICAgICAgICAgICBpZiAoICFpbnB1dF9yZWFkKHMsIHMtPmNyICsgb2Zmc2V0LCBzaXpl b2YoKnMtPmNyKSkgKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHByaW50 ZigiU2V0dGluZyBDUiAlZCB0byAlbHhcbiIsIG9mZnNldCwgcy0+Y3Jbb2Zmc2V0XSk7CisgICAg ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgb2Zmc2V0IC09 IEFSUkFZX1NJWkUocy0+Y3IpOworCisgICAgICAgIC8qIG1zcltdPyAqLworICAgICAgICBpZiAo IG9mZnNldCA8IEFSUkFZX1NJWkUocy0+bXNyKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm ICggIWlucHV0X3JlYWQocywgcy0+bXNyICsgb2Zmc2V0LCBzaXplb2YoKnMtPm1zcikpICkKKyAg ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBwcmludGYoIlNldHRpbmcgTVNSIGkl ZCAoJXgpIHRvICVseFxuIiwgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgIG1zcl9pbmRleFtv ZmZzZXRdLCBzLT5tc3Jbb2Zmc2V0XSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg fQorCisgICAgICAgIG9mZnNldCAtPSBBUlJBWV9TSVpFKHMtPm1zcik7CisKKyAgICAgICAgLyog c2VnbWVudHNbXT8gKi8KKyAgICAgICAgaWYgKCBvZmZzZXQgPCBBUlJBWV9TSVpFKHMtPnNlZ21l bnRzKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggIWlucHV0X3JlYWQocywgcy0+c2Vn bWVudHMgKyBvZmZzZXQsIHNpemVvZigqcy0+c2VnbWVudHMpKSApCisgICAgICAgICAgICAgICAg cmV0dXJuOworICAgICAgICAgICAgcHJpbnRmKCJTZXR0aW5nIFNlZ21lbnQgJWRcbiIsIG9mZnNl dCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICB9CisKKyAg ICAgICAgb2Zmc2V0IC09IEFSUkFZX1NJWkUocy0+c2VnbWVudHMpOworCisgICAgICAgIC8qIHJl Z3M/ICovCisgICAgICAgIGlmICggb2Zmc2V0IDwgc2l6ZW9mKHN0cnVjdCBjcHVfdXNlcl9yZWdz KQorICAgICAgICAgICAgICYmIG9mZnNldCArIHNpemVvZih1aW50NjRfdCkgPD0gc2l6ZW9mKHN0 cnVjdCBjcHVfdXNlcl9yZWdzKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggIWlucHV0 X3JlYWQocywgKChjaGFyICopY3R4dC0+cmVncykgKyBvZmZzZXQsIHNpemVvZih1aW50NjRfdCkp ICkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBwcmludGYoIlNldHRpbmcg Y3B1X3VzZXJfcmVncyBvZmZzZXQgJXhcbiIsIG9mZnNldCk7CisgICAgICAgICAgICBjb250aW51 ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIE5vbmUgb2YgdGhlIGFib3ZlIC0tIHRha2UgdGhh dCBhcyAic3RhcnQgZW11bGF0aW5nIiAqLworICAgICAgICAKKyAgICAgICAgcmV0dXJuOworICAg IH0KIH0KIAogI2RlZmluZSBDQU5PTklDQUxJWkUoeCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKQEAgLTgyMSw3ICs5MDIsNyBAQCBpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1 dChjb25zdCB1aW50OF90ICpkYXRhX3AsIHNpemVfdCBzaXplKQogICAgIC8qIFJlc2V0IGFsbCBn bG9iYWwgc3RhdGUgdmFyaWFibGVzICovCiAgICAgbWVtc2V0KCZpbnB1dCwgMCwgc2l6ZW9mKGlu cHV0KSk7CiAKLSAgICBpZiAoIHNpemUgPD0gREFUQV9PRkZTRVQgKQorICAgIGlmICggc2l6ZSA8 IGZ1enpfbWluaW1hbF9pbnB1dF9zaXplKCkgKQogICAgIHsKICAgICAgICAgcHJpbnRmKCJJbnB1 dCB0b28gc21hbGxcbiIpOwogICAgICAgICByZXR1cm4gMTsKQEAgLTg1OCwxMSArOTM5LDYgQEAg aW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YV9wLCBzaXplX3Qg c2l6ZSkKICAgICByZXR1cm4gMDsKIH0KIAotdW5zaWduZWQgaW50IGZ1enpfbWluaW1hbF9pbnB1 dF9zaXplKHZvaWQpCi17Ci0gICAgcmV0dXJuIERBVEFfT0ZGU0VUICsgMTsKLX0KLQogLyoKICAq IExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3Rvb2xzL2Z1enoveDg2 X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5oIGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1 Y3Rpb25fZW11bGF0b3IvZnV6ei1lbXVsLmgKaW5kZXggMzBkZDhkZTIxZS4uODVkMjFjYmYwZiAx MDA2NDQKLS0tIGEvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvZnV6ei1lbXVs LmgKKysrIGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvZnV6ei1lbXVsLmgK QEAgLTUsNiArNSw4IEBAIGV4dGVybiBpbnQgTExWTUZ1enplckluaXRpYWxpemUoaW50ICphcmdj LCBjaGFyICoqKmFyZ3YpOwogZXh0ZXJuIGludCBMTFZNRnV6emVyVGVzdE9uZUlucHV0KGNvbnN0 IHVpbnQ4X3QgKmRhdGFfcCwgc2l6ZV90IHNpemUpOwogZXh0ZXJuIHVuc2lnbmVkIGludCBmdXp6 X21pbmltYWxfaW5wdXRfc2l6ZSh2b2lkKTsKIAorZXh0ZXJuIGJvb2wgb3B0X2NvbXBhY3Q7CisK ICNkZWZpbmUgSU5QVVRfU0laRSAgNDA5NgogCiAjZW5kaWYgLyogaWZkZWYgRlVaWl9FTVVMX0gg Ki8KLS0gCjIuMTQuMgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=