From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau =?utf-8?B?TW9ubsOp?= Subject: Re: [PATCH v1] x86/hvm: Generic instruction re-execution mechanism for execute faults Date: Thu, 22 Nov 2018 16:37:56 +0100 Message-ID: <20181122153756.au3ntxgfqjjhd6sb@mac> References: <20181116100624.21977-1-aisaila@bitdefender.com> <20181116170412.xrwuun3cqxll22l3@mac> <20181122100554.pyqqa5iw6g27erkv@mac> <7efdfb5e-044b-f2a3-6562-d3468997096a@bitdefender.com> <20181122105821.6ihjcq5dy2lqjj6j@mac> <98f57a8a-288d-45ec-ef01-889fce63eeff@bitdefender.com> <20181122144924.ffy6xxwqugoj24nj@mac> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gPr3O-0006yT-Pr for xen-devel@lists.xenproject.org; Thu, 22 Nov 2018 15:38:06 +0000 Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Razvan Cojocaru Cc: "kevin.tian@intel.com" , "tamas@tklengyel.com" , "wei.liu2@citrix.com" , "jun.nakajima@intel.com" , "george.dunlap@eu.citrix.com" , "andrew.cooper3@citrix.com" , Mihai =?utf-8?B?RG9uyJt1?= , Andrei Vlad LUTAS , "jbeulich@suse.com" , Alexandru Stefan ISAILA , "xen-devel@lists.xenproject.org" , Anshul Makkar List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBOb3YgMjIsIDIwMTggYXQgMDU6MjU6MDJQTSArMDIwMCwgUmF6dmFuIENvam9jYXJ1 IHdyb3RlOgo+IE9uIDExLzIyLzE4IDQ6NDkgUE0sIFJvZ2VyIFBhdSBNb25uw6kgd3JvdGU6Cj4g PiBPbiBUaHUsIE5vdiAyMiwgMjAxOCBhdCAwMjo0ODowN1BNICswMjAwLCBSYXp2YW4gQ29qb2Nh cnUgd3JvdGU6Cj4gPj4gT24gMTEvMjIvMTggMTI6NTggUE0sIFJvZ2VyIFBhdSBNb25uw6kgd3Jv dGU6Cj4gPj4+IE9uIFRodSwgTm92IDIyLCAyMDE4IGF0IDEyOjE0OjU5UE0gKzAyMDAsIFJhenZh biBDb2pvY2FydSB3cm90ZToKPiA+Pj4+IE9uIDExLzIyLzE4IDEyOjA1IFBNLCBSb2dlciBQYXUg TW9ubsOpIHdyb3RlOgo+ID4+Pj4+IE9uIFdlZCwgTm92IDIxLCAyMDE4IGF0IDA4OjU1OjQ4UE0g KzAyMDAsIFJhenZhbiBDb2pvY2FydSB3cm90ZToKPiA+Pj4+Pj4gT24gMTEvMTYvMTggNzowNCBQ TSwgUm9nZXIgUGF1IE1vbm7DqSB3cm90ZToKPiA+Pj4+Pj4+PiArICAgICAgICAgICAgaWYgKCBh ID09IHYgKQo+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgY29udGludWU7Cj4gPj4+Pj4+Pj4g Kwo+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAvKiBQYXVzZSwgc3luY2VkLiAqLwo+ID4+Pj4+Pj4+ ICsgICAgICAgICAgICB3aGlsZSAoICFhLT5hcmNoLmluX2hvc3QgKQo+ID4+Pj4+Pj4gV2h5IG5v dCB1c2UgYS0+aXNfcnVubmluZyBhcyBhIHdheSB0byBrbm93IHdoZXRoZXIgdGhlIHZDUFUgaXMK PiA+Pj4+Pj4+IHJ1bm5pbmc/Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gSSB0aGluayB0aGUgbG9naWMg b2YgdXNpbmcgdmNwdV9wYXVzZSBhbmQgZXhwZWN0aW5nIHRoZSBydW5uaW5nIHZjcHUKPiA+Pj4+ Pj4+IHRvIHRha2UgYSB2bWV4aXQgYW5kIHRodXMgc2V0IGluX2hvc3QgaXMgd3JvbmcgYmVjYXVz ZSBhIHZjcHUgdGhhdAo+ID4+Pj4+Pj4gd2Fzbid0IHJ1bm5pbmcgd2hlbiB2Y3B1X3BhdXNlX25v c3luYyBpcyBjYWxsZWQgd29uJ3QgZ2V0IHNjaGVkdWxlZAo+ID4+Pj4+Pj4gYW55bW9yZSwgdGh1 cyBub3QgdGFraW5nIGEgdm1leGl0IGFuZCB0aGlzIGZ1bmN0aW9uIHdpbGwgbG9ja3VwLgo+ID4+ Pj4+Pj4KPiA+Pj4+Pj4+IEkgZG9uJ3QgdGhpbmsgeW91IG5lZWQgdGhlIGluX2hvc3QgYm9vbGVh biBhdCBhbGwuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgY3B1X3JlbGF4 KCk7Cj4gPj4+Pj4+PiBJcyB0aGlzIHJlYWxseSBiZXR0ZXIgdGhhbiB1c2luZyB2Y3B1X3BhdXNl Pwo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+IEkgYXNzdW1lIHRoaXMgaXMgZG9uZSB0byBhdm9pZCB3YWl0 aW5nIG9uIGVhY2ggdmNwdSwgYW5kIGluc3RlYWQgZG9pbmcKPiA+Pj4+Pj4+IGl0IGhlcmUgbGlr ZWx5IG1lYW5zIGxlc3Mgd2FpdCB0aW1lPwo+ID4+Pj4+Pgo+ID4+Pj4+PiBUaGUgcHJvYmxlbSB3 aXRoIHBsYWluIHZjcHVfcGF1c2UoKSBpcyB0aGF0IHdlIHdlcmVuJ3QgYWJsZSB0byB1c2UgaXQs Cj4gPj4+Pj4+IGZvciB0aGUgc2FtZSByZWFzb24gKHdoaWNoIHJlbWFpbnMgdW5jbGVhciBhcyBv ZiB5ZXQpIHRoYXQgd2UgY291bGRuJ3QKPiA+Pj4+Pj4gdXNlIGEtPmlzX3J1bm5pbmc6IHdlIGdl dCBDUFUgc3R1Y2sgaHlwZXJ2aXNvciBjcmFzaGVzIHRoYXQgd2F5LiBIZXJlJ3MKPiA+Pj4+Pj4g b25lIHRoYXQgdXNlcyB0aGUgc2FtZSBsb2dpYywgYnV0IGxvb3BzIG9uIGEtPmlzX3J1bm5pbmcg aW5zdGVhZCBvZgo+ID4+Pj4+PiAhYS0+YXJjaC5pbl9ob3N0Ogo+ID4+Pgo+ID4+PiBbLi4uXQo+ ID4+Pgo+ID4+Pj4+PiBTb21lIHNjaGVkdWxlciBtYWdpYyBhcHBlYXJzIHRvIGhhcHBlbiBoZXJl IHdoZXJlIGl0IGlzIHVuY2xlYXIgd2h5Cj4gPj4+Pj4+IGlzX3J1bm5pbmcgZG9lc24ndCBzZWVt IHRvIGVuZCB1cCBiZWluZyAwIGFzIGV4cGVjdGVkIGluIG91ciBjYXNlLiBXZSdsbAo+ID4+Pj4+ PiBrZWVwIGRpZ2dpbmcuCj4gPj4+Pj4KPiA+Pj4+PiBUaGVyZSBzZWVtcyB0byBiZSBzb21lIGtp bmQgb2YgZGVhZGxvY2sgYmV0d2Vlbgo+ID4+Pj4+IHZteF9zdGFydF9yZWV4ZWN1dGVfaW5zdHJ1 Y3Rpb24gYW5kIGhhcF90cmFja19kaXJ0eV92cmFtL2hhbmRsZV9tbWlvLgo+ID4+Pj4+IEFyZSB5 b3UgaG9sZGluZyBhIGxvY2sgd2hpbGUgdHJ5aW5nIHRvIHB1dCB0aGUgb3RoZXIgdmNwdXMgdG8g c2xlZXA/Cj4gPj4+Pgo+ID4+Pj4gZC0+YXJjaC5yZXhlY19sb2NrLCBidXQgSSBkb24ndCBzZWUg aG93IHRoYXQgd291bGQgbWF0dGVyIGluIHRoaXMgY2FzZS4KPiA+Pj4KPiA+Pj4gVGhlIHRyYWNl IGZyb20gcENQVSMwOgo+ID4+Pgo+ID4+PiAoWEVOKSBbIDM2NjguMDE2OTg5XSBSRkxBR1M6IDAw MDAwMDAwMDAwMDAyMDIgICBDT05URVhUOiBoeXBlcnZpc29yIChkMHYwKQo+ID4+PiBbLi4uXQo+ ID4+PiAoWEVOKSBbIDM2NjguMjc1NDE3XSBYZW4gY2FsbCB0cmFjZToKPiA+Pj4gKFhFTikgWyAz NjY4LjI3ODcxNF0gICAgWzxmZmZmODJkMDgwMTMyN2QyPl0gdmNwdV9zbGVlcF9zeW5jKzB4NDAv MHg3MQo+ID4+PiAoWEVOKSBbIDM2NjguMjg0OTUyXSAgICBbPGZmZmY4MmQwODAxMDczNWI+XSBk b21haW4uYyNkb19kb21haW5fcGF1c2UrMHgzMy8weDRmCj4gPj4+IChYRU4pIFsgMzY2OC4yOTE5 NzNdICAgIFs8ZmZmZjgyZDA4MDEwODc5YT5dIGRvbWFpbl9wYXVzZSsweDI1LzB4MjcKPiA+Pj4g KFhFTikgWyAzNjY4LjI5Nzk1Ml0gICAgWzxmZmZmODJkMDgwMjQ1ZTY5Pl0gaGFwX3RyYWNrX2Rp cnR5X3ZyYW0rMHgyYzEvMHg0YTcKPiA+Pj4gKFhFTikgWyAzNjY4LjMwNDc5N10gICAgWzxmZmZm ODJkMDgwMWRkOGY1Pl0gZG9faHZtX29wKzB4MThiZS8weDJiNTgKPiA+Pj4gKFhFTikgWyAzNjY4 LjMxMDg2NF0gICAgWzxmZmZmODJkMDgwMTcyYWNhPl0gcHZfaHlwZXJjYWxsKzB4MWU1LzB4NDAy Cj4gPj4+IChYRU4pIFsgMzY2OC4zMTcwMTddICAgIFs8ZmZmZjgyZDA4MDI1MDg5OT5dIGVudHJ5 Lm8jdGVzdF9hbGxfZXZlbnRzKzAvMHgzZAo+ID4+Pgo+ID4+PiBTaG93cyB0aGVyZSdzIGFuIGh5 cGVyY2FsbCBleGVjdXRlZCBmcm9tIERvbTAgdGhhdCdzIHRyeWluZyB0byBwYXVzZQo+ID4+PiB0 aGUgZG9tYWluLCB0aHVzIHBhdXNpbmcgYWxsIHRoZSB2Q1BVcy4KPiA+Pj4KPiA+Pj4gVGhlbiBw Q1BVIzM6Cj4gPj4+Cj4gPj4+IChYRU4pIFsgMzY2OS4wNjI4NDFdIFJGTEFHUzogMDAwMDAwMDAw MDAwMDIwMiAgIENPTlRFWFQ6IGh5cGVydmlzb3IgKGQxdjApCj4gPj4+IFsuLi5dCj4gPj4+IChY RU4pIFsgMzY2OS4zMjI4MzJdIFhlbiBjYWxsIHRyYWNlOgo+ID4+PiAoWEVOKSBbIDM2NjkuMzI2 MTI4XSAgICBbPGZmZmY4MmQwODAyMTAwNmE+XSB2bXhfc3RhcnRfcmVleGVjdXRlX2luc3RydWN0 aW9uKzB4MTA3LzB4NjhhCj4gPj4+IChYRU4pIFsgMzY2OS4zMzM5MjVdICAgIFs8ZmZmZjgyZDA4 MDIxMGIzZT5dIHAybV9tZW1fYWNjZXNzX2NoZWNrKzB4NTUxLzB4NjRkCj4gPj4+IChYRU4pIFsg MzY2OS4zNDA3NzRdICAgIFs8ZmZmZjgyZDA4MDFkZWU5ZT5dIGh2bV9oYXBfbmVzdGVkX3BhZ2Vf ZmF1bHQrMHgyZjIvMHg2MzEKPiA+Pj4gKFhFTikgWyAzNjY5LjM0ODA1MV0gICAgWzxmZmZmODJk MDgwMjAyYzAwPl0gdm14X3ZtZXhpdF9oYW5kbGVyKzB4MTU2Yy8weDFlNDUKPiA+Pj4gKFhFTikg WyAzNjY5LjM1NDg5OV0gICAgWzxmZmZmODJkMDgwMjA4MjBjPl0gdm14X2FzbV92bWV4aXRfaGFu ZGxlcisweGVjLzB4MjUwCj4gPj4+Cj4gPj4+IFNlZW1zIHRvIGJlIGJsb2NrZWQgaW4gdm14X3N0 YXJ0X3JlZXhlY3V0ZV9pbnN0cnVjdGlvbiwgYW5kIHRodXMgbm90Cj4gPj4+IGdldHRpbmcgcGF1 c2VkIGFuZCB0cmlnZ2VyaW5nIHRoZSB3YXRjaGRvZyBvbiBwQ1BVIzA/Cj4gPj4+Cj4gPj4+IFlv dSBzaG91bGQgY2hlY2sgb24gd2hpY2ggdkNQVSBpcyB0aGUgdHJhY2UgZnJvbSBwQ1BVIzAgd2Fp dGluZywgaWYKPiA+Pj4gdGhhdCdzIHRoZSB2Q1BVIHJ1bm5pbmcgb24gcENQVSMzIChkMXYwKSB5 b3Ugd2lsbCBoYXZlIHRvIGNoZWNrIHdoYXQncwo+ID4+PiB0YWtpbmcgc3VjaCBhIGxvbmcgdGlt ZSBpbiB2bXhfc3RhcnRfcmVleGVjdXRlX2luc3RydWN0aW9uLgo+ID4+Cj4gPj4gUmlnaHQsIHNv IHRoaXMgaXMgd2hhdCBhcHBlYXJzIHRvIGJlIGhhcHBlbmluZywgaWYgdGhlIG91dHB1dCBvZiBt eSB0ZXN0Cj4gPj4gaXMgdG8gYmUgdHJ1c3RlZDogaHR0cHM6Ly9wYXN0ZWJpbi5jb20vWUVEcU51 d2gKPiA+Pgo+ID4+IDEuIHZteF9zdGFydF9yZWV4ZWN1dGVfaW5zdHJ1Y3Rpb24oKSBwYXVzZXMg YWxsIFZDUFVzIGJ1dCBzZWxmICh3aGljaAo+ID4+IGFwcGVhcnMgdG8gYmUgVkNQVSAxKToKPiA+ Pgo+ID4+IChYRU4pIFsgIDE5NS40MjcxNDFdIDAgcGF1c2VfY291bnQgMAo+ID4+IChYRU4pIFsg IDE5NS40MjcxNDJdIDIgcGF1c2VfY291bnQgMAo+ID4+IChYRU4pIFsgIDE5NS40MjcxNDNdIDMg cGF1c2VfY291bnQgMAo+ID4+IChYRU4pIFsgIDE5NS40MjcxNDRdIDQgcGF1c2VfY291bnQgMAo+ ID4+IChYRU4pIFsgIDE5NS40MjcxNDZdIDUgcGF1c2VfY291bnQgMAo+ID4+IChYRU4pIFsgIDE5 NS40MjcxNDddIDYgcGF1c2VfY291bnQgMAo+ID4+IChYRU4pIFsgIDE5NS40MjcxNDhdIDcgcGF1 c2VfY291bnQgMAo+ID4gCj4gPiBUaGUgZGlmZiBiZWxvdyBkb2Vzbid0IHNob3cgd2hlcmUgeW91 IGFkZCB0aGlzIG1lc3NhZ2UsIG5laXRoZXIKPiA+IHdoYXQncyBhY3R1YWxseSBwcmludGluZy4g SSBndWVzcyB0aGUgZmlyc3QgbnVtYmVyIGlzIHRoZSB2Q1BVIElELCBhbmQKPiA+IHRoZSBzZWNv bmQgdGhlIHZhbHVlIG9mIHBhdXNlX2NvdW50IGF0IHNvbWUgcG9pbnQ/Cj4gCj4gWWVzLCBleGFj dGx5LiBTbyB0aGUgYWJvdmUgdGVsbHMgdXMgdGhhdCBWQ1BVcyAwIGFuZCAyLTcgaGF2ZSBiZWVu Cj4gcGF1c2VkIChub3N5bmMpIGJ5IHZteF9zdGFydF9yZWV4ZWN1dGVfaW5zdHJ1Y3Rpb24oKSwg d2hpY2ggaXMgbm93IGRvaW5nCj4gYSB3aGlsZSAoIGEtPmlzX3J1bm5pbmcgKSBjcHVfcmVsYXgo KS4KPiAKPiA+PiAyLiBUaGUgaHlwZXJjYWxsIGhhcHBlbnMsIHdoaWNoIGNhbGxzIGRvbWFpbl9w YXVzZSgpLCB3aGljaCBJJ3ZlCj4gPj4gbW9kaWZpZWQgdGh1czoKPiA+Pgo+ID4+IEBAIC05NTks NyArOTYxLDEwIEBAIHN0YXRpYyB2b2lkIGRvX2RvbWFpbl9wYXVzZShzdHJ1Y3QgZG9tYWluICpk LAo+ID4+ICAgICAgYXRvbWljX2luYygmZC0+cGF1c2VfY291bnQpOwo+ID4+Cj4gPj4gICAgICBm b3JfZWFjaF92Y3B1KCBkLCB2ICkKPiA+PiArICAgIHsKPiA+PiArICAgICAgICBwcmludGsoImRv bWFpbl9wYXVzZSAlZFxuIiwgdi0+dmNwdV9pZCk7Cj4gPiAKPiA+IENvdWxkIHlvdSBwcmludCBi b3RoIHRoZSBkb21haW4gYW5kIHRoZSB2Y3B1IGlkcz8KPiAKPiBPZiBjb3Vyc2UsIGJ1dCBJIHRo aW5rIEkndmUgZm91bmQgdGhlIGlzc3VlIChwbGVhc2Ugc2VlIGJlbG93KS4KPiAKPiA+PiAgICAg ICAgICBzbGVlcF9mbih2KTsKPiA+PiArICAgIH0KPiA+Pgo+ID4+ICAgICAgYXJjaF9kb21haW5f cGF1c2UoZCk7Cj4gPj4gIH0KPiA+Pgo+ID4+IGFuZCB3aGljaCBzYXlzOgo+ID4+Cj4gPj4gKFhF TikgWyAgMTk1LjQ5MjA2NF0gZG9tYWluX3BhdXNlIDAKPiA+IAo+ID4gVGhpcyBpcyB0aGUgaHlw ZXJjYWxsIGNvZGUgd2FpdGluZyBmb3IgZG9tYWluIDEgdkNQVSAwIHRvIHBhdXNlPwo+IAo+IFll cy4KPiAKPiA+PiAzLiBBdCB0aGlzIHBvaW50LCBhY2NvcmRpbmcgdG8gYWRkcjJsaW5lLAo+ID4+ IHZteF9zdGFydF9yZWV4ZWN1dGVfaW5zdHJ1Y3Rpb24oKSBkb2VzICJ3aGlsZSAoIGEtPmlzX3J1 bm5pbmcgKQo+ID4+IGNwdV9yZWxheCgpOyIgZm9yIGFsbCBWQ1BVcyBidXQgaXRzZWxmLgo+ID4g Cj4gPiBXaHkgZG9uJ3QgeW91IGp1c3Qgc3RhcnQgYnkgdXNpbmc6Cj4gPiAKPiA+IGZvcl9lYWNo X3ZjcHUoIGQsIHYgKQo+ID4gICAgIGlmICggdiAhPSBjdXJyZW50ICkKPiA+ICAgICAgICAgdmNw dV9wYXVzZSh2KTsKPiA+IAo+ID4gSW5zdGVhZCBvZiBvcGVuLWNvZGluZyBpdCBpbiB2bXhfc3Rh cnRfcmVleGVjdXRlX2luc3RydWN0aW9uLgo+IAo+IFRoYXQncyB0aGUgaW50ZW50aW9uIGlmIHdl IGNhbiBnZXQgaXQgdG8gd29yay4KPiAKPiA+PiBOb3csIGQxdjAsIHdoaWNoLCBpZiBJJ20gcmVh ZGluZyB0aGlzIGNvcnJlY3RseSwgaXMgdGhlIFZDUFUgdGhhdAo+ID4+IGRvbWFpbl9wYXVzZSgp IGlzIHN0dWNrIHdhaXRpbmcgZm9yLCBkb2VzOgo+ID4+Cj4gPj4gKFhFTikgWyAgMjAwLjgyOTg3 NF0gWGVuIGNhbGwgdHJhY2U6Cj4gPj4gKFhFTikgWyAgMjAwLjgzMzE2Nl0gICAgWzxmZmZmODJk MDgwMTI3OGM2Pl0KPiA+PiBxdWV1ZV9yZWFkX2xvY2tfc2xvd3BhdGgrMHgyNS8weDRkCj4gPj4g KFhFTikgWyAgMjAwLjg0MDE4Nl0gICAgWzxmZmZmODJkMDgwMjBjMWY2Pl0KPiA+PiBnZXRfcGFn ZV9mcm9tX2dmbl9wMm0rMHgxNGUvMHgzYjAKPiA+PiAoWEVOKSBbICAyMDAuODQ3MTIxXSAgICBb PGZmZmY4MmQwODAyNDcyMTM+XQo+ID4+IGhhcF9wMm1fZ2FfdG9fZ2ZuXzRfbGV2ZWxzKzB4NDgv MHgyOTkKPiA+PiAoWEVOKSBbICAyMDAuODU0NDAwXSAgICBbPGZmZmY4MmQwODAyNDc0ODA+XQo+ ID4+IGhhcF9ndmFfdG9fZ2ZuXzRfbGV2ZWxzKzB4MWMvMHgxZQo+ID4+IChYRU4pIFsgIDIwMC44 NjEzMzFdICAgIFs8ZmZmZjgyZDA4MDIxMjc1Yz5dIHBhZ2luZ19ndmFfdG9fZ2ZuKzB4MTBlLzB4 MTFkCj4gPj4gKFhFTikgWyAgMjAwLjg2NzkxOF0gICAgWzxmZmZmODJkMDgwMWQ2NmUwPl0gaHZt LmMjX19odm1fY29weSsweDk4LzB4MzdmCj4gPj4gKFhFTikgWyAgMjAwLjg3NDMyOV0gICAgWzxm ZmZmODJkMDgwMWQ4NDhkPl0KPiA+PiBodm1fZmV0Y2hfZnJvbV9ndWVzdF92aXJ0X25vZmF1bHQr MHgxNC8weDE2Cj4gPj4gKFhFTikgWyAgMjAwLjg4MjEzMF0gICAgWzxmZmZmODJkMDgwMWQxNDFh Pl0KPiA+PiBlbXVsYXRlLmMjX2h2bV9lbXVsYXRlX29uZSsweDExOC8weDJiYwo+ID4+IChYRU4p IFsgIDIwMC44ODk0OTZdICAgIFs8ZmZmZjgyZDA4MDFkMTZiND5dIGh2bV9lbXVsYXRlX29uZSsw eDEwLzB4MTIKPiA+PiAoWEVOKSBbICAyMDAuODk1NzM1XSAgICBbPGZmZmY4MmQwODAxZTA5MDI+ XSBoYW5kbGVfbW1pbysweDUyLzB4YzkKPiA+PiAoWEVOKSBbICAyMDAuOTAxNjI2XSAgICBbPGZm ZmY4MmQwODAxZTA5YmE+XQo+ID4+IGhhbmRsZV9tbWlvX3dpdGhfdHJhbnNsYXRpb24rMHg0MS8w eDQzCj4gPj4gKFhFTikgWyAgMjAwLjkwODk5NF0gICAgWzxmZmZmODJkMDgwMWRlZDFmPl0KPiA+ PiBodm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KzB4MTMzLzB4NjMxCj4gPj4gKFhFTikgWyAgMjAw LjkxNjI3MV0gICAgWzxmZmZmODJkMDgwMjAyYzQwPl0KPiA+PiB2bXhfdm1leGl0X2hhbmRsZXIr MHgxNTZjLzB4MWU0NQo+ID4+IChYRU4pIFsgIDIwMC45MjMxMTddICAgIFs8ZmZmZjgyZDA4MDIw ODI0Yz5dCj4gPj4gdm14X2FzbV92bWV4aXRfaGFuZGxlcisweGVjLzB4MjUwCj4gPiAKPiA+IFdo YXQgbG9jayBpcyBpdCB3YWl0aW5nIG9uPyBJcyB0aGlzIHRoZSBwYWdpbmcgbG9jaz8gSWYgc28g eW91IHdpbGwKPiA+IGhhdmUgdG8gZmlndXJlIG91dCB3aG8gaXMgaG9sZGluZyB0aGlzIGxvY2su Cj4gCj4gSXQgdHVybnMgb3V0IHRoYXQgaXQncyB0aGUgcDJtIGxvY2suIEkndmUgbG9va2VkIGF0 IHRoZSBjb2RlIG1vcmUKPiBjbG9zZWx5LCBhbmQgaHZtX2hhcF9uZXN0ZWRfcGFnZV9mYXVsdCgp IHRha2VzIGEgcDJtIGxvY2s6Cj4gCj4gMTkyMyAgICAgLyoKPiAxOTI0ICAgICAgKiBUYWtlIGEg bG9jayBvbiB0aGUgaG9zdCBwMm0gc3BlY3VsYXRpdmVseSwgdG8gYXZvaWQgcG90ZW50aWFsCj4g MTkyNSAgICAgICogbG9ja2luZyBvcmRlciBwcm9ibGVtcyBsYXRlciBhbmQgdG8gaGFuZGxlIHVu c2hhcmUgZXRjLgo+IDE5MjYgICAgICAqLwo+IDE5MjcgICAgIGhvc3RwMm0gPSBwMm1fZ2V0X2hv c3RwMm0oY3VycmQpOwo+IAo+IHRoZW4gZW5kcyB1cCBjYWxsaW5nIHAybV9tZW1fYWNjZXNzX2No ZWNrKCkgd2l0aCBzYWlkIGxvY2sgdGFrZW4uCj4gCj4gVGhlbiBwMm1fbWVtX2FjY2Vzc19jaGVj aygpIGFsc28gZG9lcyBhIGJpdCBvZiBnZm5fbG9jayhwMm0sIGdmbiwgMCkKPiAoYWx0aG91Z2gg aXQgYWxzbyB1bmxvY2tzIHRob3NlIGJ5IHRoZSB0aW1lCj4gdm14X3N0YXJ0X3JlZXhlY3V0ZV9p bnN0cnVjdGlvbigpIGdldHMgY2FsbGVkKS4KPiAKPiBBbmQgdGhlbiwgb2YgY291cnNlLCB2bXhf c3RhcnRfcmVleGVjdXRlKCkgcnVucywgZ2V0cyBzdHVjayBpbiB0aGF0IGxvb3AKPiAoaXQgZG9l c24ndCBtYXR0ZXIgaWYgd2UgbWFudWFsbHkgbG9vayBhdCBpc19ydW5uaW5nIG9yIGNhbGwKPiB2 Y3B1X3BhdXNlKCksIHRoZSBlZmZlY3QgaXMgdGhlIHNhbWUpLCB3aGlsZSB0aGUgb3RoZXIgVkNQ VSBlbmRzIHVwCj4gcnVubmluZyBnZXRfcGFnZV9mcm9tX2dmbl9wMm0oKSwgd2hpY2ggdHJpZXMg dG8gYWxzbyBsb2NrIHRoZSBwMm0gYW5kCj4gZGVhZGxvY2tzLgoKSSBkb24ndCB0aGluayB5b3Ug YXJlIHN1cHBvc2VkIHRvIHRyeSB0byBwYXVzZSBvdGhlciB2Y3B1cyB3aGlsZQpob2xkaW5nIGEg bG9jaywgYXMgeW91IGNhbiBzZWUgaXQncyBxdWl0ZSBsaWtlbHkgdGhhdCB5b3Ugd2lsbCBlbmQg dXAKZGVhZGxvY2tpbmcgYmVjYXVzZSB0aGUgdkNQVSB5b3UgYXJlIHRyeWluZyB0byBwYXVzZSBp cyBzdHVjayB3YWl0aW5nCm9uIHRoZSBsb2NrIHRoYXQgeW91IGFyZSBob2xkaW5nLgoKWW91IHNo b3VsZCBmaWd1cmUgb3V0IHdoZXRoZXIgeW91IGNhbiBnZXQgaW50byB2bXhfc3RhcnRfcmVleGVj dXRlCndpdGhvdXQgaG9sZGluZyBhbnkgbG9ja3MsIG9yIGFsdGVybmF0aXZlbHkgZHJvcCB0aGUg bG9jaywgcGF1c2UgdGhlCnZDUFVzIGFuZCBwaWNrIHRoZSBsb2NrIGFnYWluLgoKU2VlIGZvciBl eGFtcGxlIGhvdyBoYXBfdHJhY2tfZGlydHlfdnJhbSByZWxlYXNlcyB0aGUgbG9jayBiZWZvcmUK YXR0ZW1wdGluZyB0byBwYXVzZSB0aGUgZG9tYWluIGZvciB0aGlzIHNhbWUgcmVhc29uLgoKUm9n ZXIuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczov L2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs