From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [ARM] SMC (and HVC) handling in hypervisor Date: Tue, 14 Feb 2017 18:06:05 +0000 Message-ID: References: <83c79e43-b102-83af-b3c4-ffb7f4b3162d@arm.com> <11406611-54a2-e477-f3c0-dbebf19c15a1@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini , Tamas K Lengyel Cc: "Edgar E. Iglesias" , nd@arm.com, Volodymyr Babchuk , Andrii Anisov , Oleksandr Tyshchenko , "Andrushchenko, Oleksandr" , Xen-devel , Artem Mygaiev List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAwMi8xMy8yMDE3IDEwOjE0IFBNLCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6Cj4g T24gTW9uLCAxMyBGZWIgMjAxNywgVGFtYXMgSyBMZW5neWVsIHdyb3RlOgo+PiBPbiBNb24sIEZl YiAxMywgMjAxNyBhdCAyOjU0IFBNLCBTdGVmYW5vIFN0YWJlbGxpbmkKPj4gPHNzdGFiZWxsaW5p QGtlcm5lbC5vcmc+IHdyb3RlOgo+Pj4gT24gTW9uLCAxMyBGZWIgMjAxNywgVGFtYXMgSyBMZW5n eWVsIHdyb3RlOgo+Pj4+IE9uIE1vbiwgRmViIDEzLCAyMDE3IGF0IDI6MTMgUE0sIFN0ZWZhbm8g U3RhYmVsbGluaQo+Pj4+IDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPiB3cm90ZToKPj4+Pj4gT24g TW9uLCAxMyBGZWIgMjAxNywgVGFtYXMgSyBMZW5neWVsIHdyb3RlOgo+Pj4+Pj4gT24gTW9uLCBG ZWIgMTMsIDIwMTcgYXQgMTE6MDYgQU0sIEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5j b20+IHdyb3RlOgo+Pj4+Pj4+Cj4+Pj4+Pj4KPj4+Pj4+PiBPbiAxMy8wMi8xNyAxNjo1OSwgVGFt YXMgSyBMZW5neWVsIHdyb3RlOgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBPbiBNb24sIEZlYiAxMywgMjAx NyBhdCA5OjM3IEFNLCBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgo+Pj4+Pj4+ PiB3cm90ZToKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBIaSBUYW1hcywKPj4+Pj4+Pj4+Cj4+Pj4+Pj4+ Pgo+Pj4+Pj4+Pj4gT24gMTMvMDIvMTcgMTY6MjAsIFRhbWFzIEsgTGVuZ3llbCB3cm90ZToKPj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gT24gRnJpLCBGZWIgMTAsIDIwMTcgYXQgNTox NCBQTSwgVm9sb2R5bXlyIEJhYmNodWsKPj4+Pj4+Pj4+PiA8dmxhZC5iYWJjaHVrQGdtYWlsLmNv bT4gd3JvdGU6Cj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4+IEhlbGxvLAo+Pj4+ Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBUaGlzIGUtbWFpbCBpcyBzb3J0IG9mIGZvbGxvdy11cCB0byB0 aGUgdHdvIHRocmVhZHM6IFsxXSAobXkgdGhyZWFkCj4+Pj4+Pj4+Pj4+IGFib3V0IFRFRSBpbnRl cmFjdGlvbikgYW5kIFsyXSAoRWRnYXIncyB0aHJlYWQgcmVnYXJkaW5nIGhhbmRsaW5nIFNNQwo+ Pj4+Pj4+Pj4+PiBjYWxscyBpbiBwbGF0Zm9ybV9odmMpLiBJIHdhbnQgdG8gZGlzY3VzcyBtb3Jl IGJyb2FkIHRvcGljIHRoZXJlLgo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBPYnZpb3VzbHksIHRo ZXJlIGFyZSBncm93aW5nIG51bWJlciBvZiBTTUMgdXNlcnMgYW5kIGN1cnJlbnQgc3RhdGUgb2YK Pj4+Pj4+Pj4+Pj4gU01DIGhhbmRsaW5nIGluIFhlbiBzYXRpc2ZpZXMgbm9ib2R5LiBNeSB0ZWFt IHdhbnRzIHRvIGhhbmRsZSBTTUNzIGluCj4+Pj4+Pj4+Pj4+IHNlY3VyZSB3YXksIFhpbGlueCB3 YW50cyB0byBmb3J3YXJkIHNvbWUgY2FsbHMgZGlyZWN0bHkgdG8gU2VjdXJlCj4+Pj4+Pj4+Pj4+ IE1vbml0b3IsIHdoaWxlIGFsbG93aW5nIHRvIGhhbmRsZSBvdGhlciBpbiB1c2Vyc3BhY2UsIGV0 Yy4KPj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gTXkgcHJvcG9zaXRpb24gaXMgdG8gZ2F0aGVyIGFs bCByZXF1aXJlbWVudHMgdG8gU01DIChhbmQgSFZDKSBoYW5kbGluZwo+Pj4+Pj4+Pj4+PiBpbiBv bmUgcGxhY2UgKGUuZy4gaW4gdGhpcyBtYWlsIHRocmVhZCkuIEFmdGVyIHdlJyB3aWxsIGhhdmUg Y2xlYXIKPj4+Pj4+Pj4+Pj4gcGljdHVyZSBvZiB3aGF0IHdlIHdhbnQsIHdlIHdpbGwgYmUgYWJs ZSB0byBkZXZlbG9wIHNvbWUgc29sdXRpb24sCj4+Pj4+Pj4+Pj4+IHRoYXQgd2lsbCBzYXRpc2Z5 IHVzIGFsbC4gQXQgbGVhc3QsIEkgaG9wZSBzbyA6KQo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBB bHNvIEkgd2FudCB0byByZW1pbmQsIHRoYXQgdGhlcmUgYXJlIEFSTSBkb2N1bWVudCBjYWxsZWQg IlNNQyBDYWxsaW5nCj4+Pj4+Pj4+Pj4+IENvbnZlbnRpb24iIFszXS4gQWNjb3JkaW5nIHRvIGl0 LCBhbnkgYWFyY2g2NCBoeXBlcnZpc29yICJtdXN0Cj4+Pj4+Pj4+Pj4+IGltcGxlbWVudCB0aGUg U3RhbmRhcmQgU2VjdXJlIGFuZCBIeXBlcnZpc29yIFNlcnZpY2UgY2FsbHMiLiBBdCB0aGlzCj4+ Pj4+Pj4+Pj4+IG1vbWVudCBYRU4gZG9lcyBub3QgY29uZm9ybSB0byB0aGlzLgo+Pj4+Pj4+Pj4+ Pgo+Pj4+Pj4+Pj4+PiBTbywgbGV0cyBnZXQgc3RhcnRlZCB3aXRoIHRoZSByZXF1aXJlbWVudHM6 Cj4+Pj4+Pj4+Pj4+IDAuIFRoZXJlIGFyZSBubyBtdWNoIGRpZmZlcmVuY2UgYmV0d2VlbiBTTUMg YW5kIEhWQyBoYW5kbGluZyAoYXQgbGVhc3QKPj4+Pj4+Pj4+Pj4gYWNjb3JkaW5nIHRvIFNNQ0ND KS4KPj4+Pj4+Pj4+Pj4gMS4gSHlwZXJ2aXNvciBzaG91bGQgYXQgbGVhc3QgcHJvdmlkZSBvd24g VVVJRCBhbmQgdmVyc2lvbiB3aGlsZQo+Pj4+Pj4+Pj4+PiBjYWxsZWQgYnkgU01DL0hWQwo+Pj4+ Pj4+Pj4+PiAyLiBIeXBlcnZpc29yIHNob3VsZCBmb3J3YXJkIHNvbWUgY2FsbHMgZnJvbSBkb20w IGRpcmVjdGx5IHRvIFNlY3VyZQo+Pj4+Pj4+Pj4+PiBNb25pdG9yIChYaWxpbnggdXNlIGNhc2Up Cj4+Pj4+Pj4+Pj4+IDMuIEh5cGVydmlzb3Igc2hvdWxkIHZpcnR1YWxpemUgUFNDSSBjYWxscywg Q1BVIHNlcnZpY2UgY2FsbHMsIEFSTQo+Pj4+Pj4+Pj4+PiBhcmNoaXRlY3R1cmUgc2VydmljZSBj YWxscywgZXRjLgo+Pj4+Pj4+Pj4+PiA0LiBIeXBlcnZpc29yIHNob3VsZCBoYW5kbGUgVEVFIGNh bGxzIGluIGEgc2VjdXJlIHdheSAoZS5nLiBubwo+Pj4+Pj4+Pj4+PiB1bnRydXN0ZWQgaGFuZGxl cnMgaW4gRG9tMCB1c2Vyc3BhY2UpLgo+Pj4+Pj4+Pj4+PiA1LiBIeXBlcnZpc29yIHNob3VsZCBz dXBwb3J0IG11bHRpcGxlIFRFRXMgKGF0IGxlYXN0IGF0IGNvbXBpbGF0aW9uCj4+Pj4+Pj4+Pj4+ IHRpbWUpLgo+Pj4+Pj4+Pj4+PiA2LiBIeXBlcnZpc29yIHNob3VsZCBkbyB0aGlzIGFzIGZhc3Qg YXMgcG9zc2libGUgKERSTSBwbGF5YmFjayB1c2UKPj4+Pj4+Pj4+Pj4gY2FzZSkuCj4+Pj4+Pj4+ Pj4+IDcuIEFsbCBkb21haW5zIChpbmNsdWRpbmcgZG9tMCkgc2hvdWxkIGJlIGhhbmRsZWQgaW4g dGhlIHNhbWUgd2F5Lgo+Pj4+Pj4+Pj4+PiA4LiBOb3QgYWxsIGRvbWFpbnMgd2lsbCBoYXZlIHJp Z2h0IHRvIGlzc3VlIGNlcnRhaW4gU01Dcy4KPj4+Pj4+Pj4+Pj4gOS4gSHlwZXJ2aXNvciB3aWxs IGlzc3VlIG93biBTTUNzIGluIHNvbWUgY2FzZXMuCj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pgo+Pj4+ Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gMTAuIERvbWFpbnMgb24gd2hpY2ggdGhlIG1vbml0b3IgcHJpdmls ZWdlZCBjYWxsIGZlYXR1cmUgaXMgZW5hYmxlZAo+Pj4+Pj4+Pj4+ICh3aGljaCBpcyBieSBkZWZh dWx0IGRpc2FibGVkIGZvciBhbGwgZG9tYWlucykgc2hvdWxkIG5vdCBiZSBhYmxlIHRvCj4+Pj4+ Pj4+Pj4gaXNzdWUgU01DcyBzdWNoIHRoYXQgaXQgcmVhY2hlcyB0aGUgZmlybXdhcmUgZGlyZWN0 bHkuIFhlbiBzaG91bGQgbm90Cj4+Pj4+Pj4+Pj4gYm91bmNlIHN1Y2ggY2FsbHMgdG8gdGhlIGZp cm13YXJlIG9uIGJlaGFsZiBvZiB0aGUgZG9tYWluLiBYZW4gc2hvdWxkCj4+Pj4+Pj4+Pj4gbm90 IGFsdGVyIHRoZSBzdGF0ZSBvZiB0aGUgZG9tYWluIGF1dG9tYXRpY2FsbHkgKGllLiBpbmNyZW1l bnRpbmcgUEMpLgo+Pj4+Pj4+Pj4+IFRoZXNlIGNhbGxzIHNob3VsZCBiZSBleGNsdXNpdmVseSB0 cmFuc2ZlcmVkIHRvIHRoZSBtb25pdG9yIHN1YnNjcmliZXIKPj4+Pj4+Pj4+PiBmb3IgZnVydGhl ciBwcm9jZXNzaW5nLiBIVkMgY2FsbHMgbmVlZCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIG1vbml0 b3IKPj4+Pj4+Pj4+PiBmb3J3YXJkaW5nIGFzIGxvbmcgYXMgdGhlIEhWQyBjYWxsIGNhbiBiZSBn b3Zlcm5lZCBieSBYU00uCj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Cj4+Pj4+Pj4+PiBU aGlzIHNob3VsZCBub3QgYmUgYSBzdHJvbmcgcmVxdWlyZW1lbnQuIFdoaWxzdCBpbiB5b3VyIHVz ZSBjYXNlIHlvdSB3YW50Cj4+Pj4+Pj4+PiB0bwo+Pj4+Pj4+Pj4gZm9yd2FyZCBhbGwgdGhlIFNN Q3MgdG8gdGhlIG1vbml0b3IgYXBwLCB0aGVyZSBhcmUgdXNlIGNhc2Ugd2hlcmUgWGVuCj4+Pj4+ Pj4+PiB3b3VsZAo+Pj4+Pj4+Pj4gbmVlZCB0byBlbXVsYXRlIFNNQ3Mgb24gdGhlIGJlaGFsZiBv ZiB0aGUgZ3Vlc3QuIEZvciBpbnN0YW5jZSBzZWUgUFNDSQo+Pj4+Pj4+Pj4gKGFyY2gvYXJtL3Zw c2NpLmMpLgo+Pj4+Pj4+Pgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBJbiBteSB1c2VjYXNlcyBpdCBpcyBh IHN0cm9uZyByZXF1aXJlbWVudC4gV2hhdCBoYXBwZW5zIHdoZW4gdGhlCj4+Pj4+Pj4+IG1vbml0 b3Igc3lzdGVtIGlzIGRpc2FibGVkIGlzIGJleW9uZCBteSBjb25jZXJucyAtIFhlbiBjYW4gZW11 bGF0ZSBvcgo+Pj4+Pj4+PiBmb3J3YXJkIHRoZSBjYWxsIGFzIGl0IHdpc2hlcy4gQnV0IHdoZW4g dGhlIG1vbml0b3IgYXBwbGljYXRpb24gaXMgaW4KPj4+Pj4+Pj4gdXNlIC0gaW4gbXkgdXNlY2Fz ZSAtIGl0IG5lZWRzIHRvIGJlIGluIGV4Y2x1c2l2ZSBjb250cm9sLiBJZiB0aGF0Cj4+Pj4+Pj4+ IGJyZWFrcyBhbiBpbi1ndWVzdCBhcHBsaWNhdGlvbiwgdGhhdCBpcyBhY2NlcHRhYmxlIGluIG15 IHVzZWNhc2UuIEFzCj4+Pj4+Pj4+IHNvb24gYXMgdGhlcmUgaXMgYW5vdGhlciB1c2VjYXNlIHRo YXQgd291bGQgbmVlZCB0byBzdXBwb3J0IHN1Y2ggYW4KPj4+Pj4+Pj4gYXBwbGljYXRpb24gd2hp bGUgdGhlIG1vbml0b3Igc3lzdGVtIGlzIGVuYWJsZWQsIHRoZSBtb25pdG9yIHN5c3RlbQo+Pj4+ Pj4+PiBjYW4gYmUgZmluZS10dW5lZCBmb3IgdGhvc2UgbmVlZHMgdG8gYWxsb3cgWGVuIHRvIGVt dWxhdGUuIEkndmUgc2FpZAo+Pj4+Pj4+PiBpdCBtYW55IHRpbWVzLCBJIGhhdmUgbm90aGluZyBh Z2FpbnN0IGRvaW5nIHRoYXQsIGJ1dCBhcyBJIGRvbid0IG5lZWQKPj4+Pj4+Pj4gaXQgSSB3b24n dCBiZSBhYmxlIHRvIHNwZW5kIHRpbWUgaW1wbGVtZW50aW5nIGl0Lgo+Pj4+Pgo+Pj4+PiBSaWdo dCwgYXMgSSB3cm90ZSBpbiB0aGUgb3RoZXIgdGhyZWFkLCBJIHRoaW5rIHdlIHNob3VsZCBiZSBh YmxlIHRvIGZpbmQKPj4+Pj4gYSB3YXkgdG8gc2F0aXNmeSBUYW1hcycgcmVxdWlyZW1lbnQgYXMg d2VsbCBhcyBhbGwgdGhlIG90aGVycy4gT2YKPj4+Pj4gY291cnNlLCBvbmNlIHlvdSBlbmFibGUg dGhlICJmb3J3YXJkIGFsbCBTTUNzIHRvIG1vbml0b3IiIG1vZGUsIHNvbWUgb2YKPj4+Pj4gdGhl IG90aGVyIHJlcXVpcmVtZW50cyBtaWdodCBub3QgYmUgbWV0IGFueW1vcmUsIGJ1dCB0aGF0J3Mg YWNjZXB0YWJsZQo+Pj4+PiBiZWNhdXNlIHRoZXkgYXJlIGZvciBkaWZmZXJlbnQgdXNlLWNhc2Vz Lgo+Pj4+Pgo+Pj4+Pgo+Pj4+Pj4+IExldCBtZSByZW1pbmQgeW91IHRoYXQgdGhpcyBkaXNjdXNz aW9uIGlzIG5vdCBhYm91dCB3aGF0IHlvdSBpbXBsZW1lbnRlZCBidXQKPj4+Pj4+PiB3aGF0IGlz IGEgc2Vuc2libGUgZGVzaWduIHRvIGZpdCBldmVyeW9uZS4gSSBhbHNvIG5ldmVyIGFzayB5b3Ug dG8gaW1wbGVtZW50Cj4+Pj4+Pj4gYW55dGhpbmcuCj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+ Pj4gQW5vdGhlciB2YWxpZCB1c2UgY2FzZSBpcyBYZW4gaGFuZGxpbmcgcG93ZXIgbWFuYWdlbWVu dCBmb3IgZGV2aWNlCj4+Pj4+Pj4+PiBhc3NpZ25lZAo+Pj4+Pj4+Pj4gdG8gdGhlIGd1ZXN0IGFu ZCBoYXZpbmcgdGhlIG1vbml0b3IgYXBwIGFjdGluZyBhcyBhICJUcnVzdGVkIEFwcCIuCj4+Pj4+ Pj4+Pgo+Pj4+Pj4+Pj4gUmVnYXJkaW5nIHRoZSBIVkMgY2FsbCBnb3Zlcm5lZCBieSBYU00uIEkg dGhpbmsgdGhpcyBpcyB0aGUgd3Jvbmcgd2F5IHRvCj4+Pj4+Pj4+PiBnLgo+Pj4+Pj4+Pj4gQXMg aXQgd2FzIG1lbnRpb25lZCBhIGNvdXBsZSBvZiB0aW1lIEhWQyBpcyBhIHZhbGlkIGNvbmR1aXQg Zm9yIFNlY3VyZQo+Pj4+Pj4+Pj4gbW9uaXRvciBjYWxsLiBZb3Ugc2hvdWxkIG5vdCBkZW55IHRo ZW0gb24gdGhlIGJhc2lzIHRoYXQgeW91ciBtb25pdG9yIGFwcAo+Pj4+Pj4+Pj4gaXMKPj4+Pj4+ Pj4+IG5vdCBhYmxlIHRvIGhhbmRsZSBpdCBwcm9wZXJseS4gQSBiZXR0ZXIgd2F5IHdvdWxkIGJl IHRvIGhhdmUgYSBsaXN0IG9mCj4+Pj4+Pj4+PiBTZWN1cmUgTW9uaXRvciBDYWxsIChIVkMvU01D KSB0aGF0IHNob3VsZCBiZSBmb3J3YXJkZWQgdG8gdGhlIG1vbml0b3IKPj4+Pj4+Pj4+IGFwcC4K Pj4+Pj4+Pj4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gSSBkaXNhZ3JlZS4gWFNNIG5lZWRzIHRvIGJlIGlu IGNvbXBsZXRlIGNvbnRyb2wgb2YgYWxsIGh5cGVyY2FsbHMuCj4+Pj4+Pj4+IFdoZXRoZXIgZGVu eWluZyBzb21lIG9mIHRoZW0gd2lsbCBicmVhayBhbiBhcHBsaWNhdGlvbiBvciBub3QgaXMgbm90 Cj4+Pj4+Pj4+IFhlbidzIGNvbmNlcm4uIFRoYXQgaXMgdXAgdG8gbWUgYXMgYSB1c2VyIG9mIFhl biBhbmQgWFNNLiBJZiBYZW4KPj4+Pj4+Pj4gb3ZlcnJpZGVzIGEgWFNNIHBvbGljeSBiZWNhdXNl IHdlIGhhcmQtY29kZWQgSFZDcyB0aGF0IHBhc3MtdGhyb3VnaCwKPj4+Pj4+Pj4gdGhhdCBpcyBh IGh1Z2Ugc2VjdXJpdHkgcG9saWN5IHZpb2xhdGlvbi4gU28gZXZlbiBpZiB3ZSBtYWtlIGEgbGlz dCBvZgo+Pj4+Pj4+PiBIVkNzIHRoYXQgc2hvdWxkIGFsc28gZmFsbCB1bmRlciB0aGUgbW9uaXRv ciBwcml2aWxlZ2VkIGNhbGwgdW1icmVsbGEsCj4+Pj4+Pj4+IGl0IHNob3VsZCBzdGlsbCBub3Qg b3ZlcnJpZGUgWFNNLgo+Pj4+Pgo+Pj4+PiBJIGFncmVlIHdpdGggeW91IG9uIHRoaXMuCj4+Pj4+ Cj4+Pj4+Cj4+Pj4+Pj4+IFNvIHNpbmNlIEkgd291bGQgbm90IGJlIGxvb2tpbmcgdG8KPj4+Pj4+ Pj4gZW11bGF0ZSBhbnl0aGluZyB0aGF0IGdldHMgZm9yd2FyZGVkIGFzIGEgcmVzdWx0IG9mIGFu IEhWQyBjYWxsLCBYU00KPj4+Pj4+Pj4gd29ya3MgZm9yIG1lIGp1c3QgZmluZSBhcyB0aGUgb25s eSB0aGluZyBJIHdvdWxkIGRvIGFueXdheSBpcyBkZW55Cj4+Pj4+Pj4+IHRoZW0uIFNvIHdoeSB3 b3VsZCB0aGF0IGxpc3QgaGVscCB3aGVuIEkgbWlnaHQgYXMgd2VsbCBqdXN0IG1ha2UgbXkKPj4+ Pj4+Pj4gbGlzdCBtb3JlIGVmZmljaWVudGx5IHVzaW5nIFhTTT8KPj4+Pj4+Pgo+Pj4+Pj4+Cj4+ Pj4+Pj4gQWdhaW4sIHdoeSBkbyB5b3Ugd2FudCB0byBoYW5kbGUgU01DIGFuZCBIVkMgZGlmZmVy ZW50bHkgZ2l2ZW4gdGhleSBhcmUgYm90aAo+Pj4+Pj4+IGEgY29uZHVpdCBmb3IgU2VjdXJlIENh bGw/Cj4+Pj4+Pgo+Pj4+Pj4gQUZBSVUgSFZDcyBhcmUgdXNlZCBmb3IgaHlwZXJjYWxscy4gSWYg c29tZSBIVkNzIHdpbGwgYmUgdXNlZCB0byBnbwo+Pj4+Pj4gYW5kIGlzc3VlIGEgZmlybXdhcmUg Y2FsbCBmcm9tIFhlbiwgaXQgc3RpbGwgZG9lc24ndCBjaGFuZ2UgdGhlIGZhY3QKPj4+Pj4+IHRo YXQgaXQgd2FzIGEgaHlwZXJjYWxsIGluIHRoZSBmaXJzdCBwbGFjZS4gU28gaXQgc2hvdWxkIGJl IGdvdmVybmVkCj4+Pj4+PiBieSBYU00uIEFtIEkgbWlzc2luZyBzb21ldGhpbmc/Cj4+Pj4+Cj4+ Pj4+IFRoZSBwcm9ibGVtIGlzIHRoZSBmb2xsb3dpbmc6IG9uIHNvbWUgcGxhdGZvcm1zIGFuIG9w ZXJhdGluZyBzeXN0ZW0KPj4+Pj4gbWlnaHQgaXNzdWUgYSBmaXJtd2FyZSBjYWxsIHZpYSBIVkMg aW5zdGVhZCBvZiBTTUMuIEl0J3Mgb3V0c2lkZSBvZiBvdXIKPj4+Pj4gY29udHJvbC4gVGhlIG1v bml0b3Igd29uJ3QgYmUgYWJsZSB0byByZWNlaXZlIHRoYXQgZXZlbnQsIGJlY2F1c2UgdGhlCj4+ Pj4+IGluZnJhc3RydWN0dXJlIGRvZXNuJ3QgYWxsb3cgdG8gZm9yd2FyZCBIVkMgY2FsbHMgdG8g dGhlIG1vbml0b3IuIEl0Cj4+Pj4+IG1pZ2h0IGJyZWFrIHlvdXIgdXNlLWNhc2UuCj4+Pj4KPj4+ PiBUaGF0J3MgcmlnaHQuIEJ1dCBIVkNzIHNob3VsZCBzdGlsbCBmYWxsIHVuZGVyIFhTTSBjb250 cm9sLCB3aGlsZSBTTUNzCj4+Pj4gYXJlbid0IChhbmQgc2hvdWxkbid0KS4gSSBtZWFuLCB0aGUg b3BlcmF0aW5nIHN5c3RlbSBuZWVkcyB0byBoYXZlCj4+Pj4gc29tZSB1bmRlcnN0YW5kaW5nIG9m IHRoZSBoeXBlcnZpc29yIGl0IGlzIHJ1bm5pbmcgb24gaW4gb3JkZXIgdG8gdXNlCj4+Pj4gSFZD cyBmb3IgZG8gZmlybXdhcmUgY2FsbHMgdGhyb3VnaCB0aGUgVk1NLiBTbyBpdCdzIG5vdCBsaWtl IHRoZSBPUwo+Pj4+IGNhbiBqdXN0IHVzZSBhcmJpdHJhcnkgSFZDIGNhbGxzIHRvIGdldCBib3Vu Y2VkIHRvIHRoZSBmaXJtd2FyZSBieQo+Pj4+IFhlbiwgY29ycmVjdD8KPj4+Cj4+PiBBcyBzdHJh bmdlIGFzIGl0IHNvdW5kcywgSSBkb24ndCB0aGluayB3ZSBjYW4gbWFrZSB0aGF0IGFzc3VtcHRp b24sCj4+PiB1bmZvcnR1bmF0ZWx5Lgo+Pgo+PiBUaGF0IGNlcnRhaW5seSBkb2VzIHNvdW5kIHZl cnkgc3RyYW5nZSB0byBtZS4KCkl0IGlzIG5vdCBzdHJhbmdlLCBhIGd1ZXN0IGtub3dpbmcgdGhh dCBpdCB3aWxsIHJ1biBvbiBhIGh5cGVydmlzb3IgCmNvdWxkIHBvdGVudGlhbGx5IG9ubHkgdXNl IEhWQy4gRnVydGhlcm1vcmUgdGhlcmUgYXJlIHNvbWUgcGxhdGZvcm0gd2l0aCAKbm8gRUwzIHN1 cHBvcnQsIHNvIFNNQyBpbnN0cnVjdGlvbiB3aWxsIGJlY29tZSB1bmRlZmluZWQuIEEgZ3Vlc3Qg bWlnaHQgCndhbnQgdG8gdXNlIEhWQyBhbmQgZXhwZWN0IHRoZSBoeXBlcnZpc29yIHRvIGVtdWxh dGUgaXQuCgo+Pgo+Pj4KPj4+Pj4gVG8gcHJvcGVybHkgc3VwcG9ydCBmaXJtd2FyZSBjYWxscyBt b25pdG9yaW5nLCB3ZSBzaG91bGQgbWFrZSBubwo+Pj4+PiBkaXN0aW5jdGlvbnMgYmV0d2VlbiBT TUMgYW5kIEhWQywgYXMgc3BlY2lmaWVkIGJ5IHRoZSBTTUMgY2FsbGluZwo+Pj4+PiBjb252ZW50 aW9uLgo+Pj4+Cj4+Pj4gV2VsbCwgaWYgaW4gdGhlIGZ1dHVyZSBpZiB3ZSBleHRlbmQgdGhlIG1v bml0b3Jpbmcgc3lzdGVtIHRvIGFsc28KPj4+PiByZWNvcmQgdGhlc2UgSFZDcyB0aGF0IHdvdWxk IGJlIHNvbWV0aGluZyB0byByZWNvcmQgaW4gdGhlIG1vbml0b3IKPj4+PiBldmVudC4gVGhhdCBz aG91bGQgYmUgZmFpcmx5IHN0cmFpZ2h0IGZvcndhcmQgdGhvdWdoLgo+Pj4+Cj4+Pj4+Cj4+Pj4+ IFRvIGRvIHRoaXMgcmlnaHQsIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBzcGVjaWZ5IHdoaWNoIFNN Q3MvSFZDcyBnZXQKPj4+Pj4gZm9yd2FyZGVkIHRvIHRoZSBtb25pdG9yLiBGb3J3YXJkaW5nIGFs bCBTTUNzLCBidXQgbm8gSFZDcywgaXMgbm90IGEKPj4+Pj4gY29tcGxldGUgc29sdXRpb24sIGFs dGhvdWdoIGl0IHNob3VsZCB3b3JrIGluIHRoZSB2YXN0IG1ham9yaXR5IG9mCj4+Pj4+IGNhc2Vz Lgo+Pj4+Pgo+Pj4+PiBJIHdvdWxkIHB1dCBkb3duIGFzIGEgcmVxdWlyZW1lbnQgdGhhdCB3ZSB3 YW50IHRvIGJlIGFibGUgdG8gbW9uaXRvciBhbnkKPj4+Pj4gSFZDL1NNQyBjYWxscywgd2hpbGUg YWNjZXB0aW5nIHRoZSBjb21wcm9taXNlIHRoYXQgYXMgYW4gaW5pdGlhbAo+Pj4+PiBpbXBsZW1l bnRhdGlvbiBvbmx5IFNNQ3MgY2FuIGFjdHVhbGx5IGJlIG1vbml0b3JlZC4KPj4+Pgo+Pj4+IEkg YWdyZWUuIFdoaWxlIEkgdW5kZXJzdGFuZCB0aGF0IGluIHRob3NlIGNhc2VzIEhWQ3Mgc2hvdWxk IGdldAo+Pj4+IHRyZWF0ZWQgZXF1aXZhbGVudCB0byBTTUNzLCBpZS4gZ2V0IGZvcndhcmRlZCB2 aWEgdGhlIG1vbml0b3IKPj4+PiBpbnRlcmZhY2UsIGJ1dCBpZiBJIGNhbiBjaG9vc2UgdG8ganVz dCBkZW55IHRob3NlIHdpdGggWFNNIHdoaWxlCj4+Pj4gbW9uaXRvcmluZyByZWd1bGFyIFNNQ3Ms IHRoYXQgd291bGQgYmUgYW4gT0sgc29sdXRpb24gZm9yIG1lIGZvciBub3cuCj4+Pj4gQnV0IGlm IHdlIHJlYWxseSBuZWVkIHRvIG1ha2UgYSBsaXN0LCBteSBsaXN0IGlzIGZhaXJseSBzdHJhaWdo dAo+Pj4+IGZvcndhcmQ6IGFsbCBIVkNzIHRoYXQgd291bGQgYmUgdXNlZCB0byB0cmlnZ2VyIGEg ZmlybXdhcmUgY2FsbCBuZWVkCj4+Pj4gdG8gYmUgcm91dGVkIHRocm91Z2ggdGhlIG1vbml0b3Ig c3lzdGVtIHRvIGVuc3VyZSB0aGVyZSBpcyBubyBiYWNrCj4+Pj4gY2hhbm5lbCBhbnl3aGVyZSBm cm9tIGFuIHVudHJ1c3RlZCBndWVzdCB0byB0aGUgZmlybXdhcmUgYnlwYXNzaW5nCj4+Pj4gWGVu Lgo+Pj4KPj4+IFJpZ2h0LCBtYWtlcyBzZW5zZSwgc28gdGhlIHJlcXVpcmVtZW50IHNob3VsZCBi ZToKPj4+Cj4+PiAgIDEwLiBEb21haW5zIG9uIHdoaWNoIHRoZSBtb25pdG9yIHByaXZpbGVnZWQg Y2FsbCBmZWF0dXJlIGlzIGVuYWJsZWQKPj4+ICAgKHdoaWNoIGlzIGJ5IGRlZmF1bHQgZGlzYWJs ZWQgZm9yIGFsbCBkb21haW5zKSBzaG91bGQgbm90IGJlIGFibGUgdG8KPj4+ICAgaXNzdWUgZmly bXdhcmUgY2FsbHMgdmlhIFNNQ3MvSFZDcyBzbyB0aGF0IHN1Y2ggY2FsbHMgcmVhY2ggdGhlCj4+ PiAgIGZpcm13YXJlIGRpcmVjdGx5LiBYZW4gc2hvdWxkIG5vdCBib3VuY2Ugc3VjaCBjYWxscyB0 byB0aGUgZmlybXdhcmUgb24KPj4+ICAgYmVoYWxmIG9mIHRoZSBkb21haW4uIFhlbiBzaG91bGQg bm90IGFsdGVyIHRoZSBzdGF0ZSBvZiB0aGUgZG9tYWluCj4+PiAgIGF1dG9tYXRpY2FsbHkgKGll LiBpbmNyZW1lbnRpbmcgUEMpLiBUaGVzZSBjYWxscyBzaG91bGQgYmUgZXhjbHVzaXZlbHkKPj4+ ICAgdHJhbnNmZXJlZCB0byB0aGUgbW9uaXRvciBzdWJzY3JpYmVyIGZvciBmdXJ0aGVyIHByb2Nl c3NpbmcuCj4+PiAgIEh5cGVyY2FsbHMsIHZpcnR1YWwgUFNDSSBjYWxscywgdmlydHVhbCBDUFUg c2VydmljZXMgY2FsbHMgYW5kIHZpcnR1YWwKPj4+ICAgQVJNIGFyY2hpdGVjdHVyZSBzZXJ2aWNl IGNhbGxzIHJlbWFpbiB1bmFmZmVjdGVkLgo+Pj4KPj4+IERvZXMgdGhhdCB3b3JrIGZvciB5b3U/ Cj4+Cj4+IEl0IHdvcmtzIGlmZiBoeXBlcmNhbGxzLCB2aXJ0dWFsIHBzY2kgY2FsbHMgYW5kIHZp cnR1YWwgQ1BVIHNlcnZpY2VzCj4+IGNhbiBiZSBkZW5pZWQgd2l0aCBYU00uIElmIHRoYXQncyBu b3QgdGhlIGNhc2UsIHRoZW4gbm8sIGluIHRoYXQgY2FzZQo+PiBhbGwgdGhvc2UgSFZDIGNhbGxz IHRoYXQgd291bGQgYmUgYm91bmNlZCB0byB0aGUgZmlybXdhcmUgbmVlZCB0byBiZQo+PiBob29r ZWQgaW50byB0aGUgbW9uaXRvciBzeXN0ZW0gYXMgd2VsbC4gSWRlYWxseSBhcyBzb29uIGFzIHRo ZXkgYXJlCj4+IGJlaW5nIGludHJvZHVjZWQgdG8gdGhlIFhlbiBjb2RlYmFzZS4KPgo+IEkgZG9u J3QgdGhpbmsgd2UgaGF2ZSBYU00gaG9va3MgZm9yIGFsbCBvZiB0aG9zZSB0b2RheSwgYnV0IEkg dGhpbmsKPiBldmVyeWJvZHkgd291bGQgYWdyZWUgdGhhdCBpdCBpcyBiZSBhIGdvb2QgaWRlYSB0 byBoYXZlIHRoZW0uCgpJIGRpc2FncmVlIGhlcmUuIElmIHlvdSBhZGQgWFNNIGhvb2sgaW4gdlBT Q0ksIGl0IG1lYW5zIHlvdSB3aWxsIGFsbG93IAp0aGUgdXNlciB0byBkZW55IENQVSBicmluZyB1 cC4gSW4gdGhpcyBjYXNlLCB3aGF0IGlzIHRoZSBwb2ludCB0byBoYXZlIGEgCmd1ZXN0IHdpdGgg bXVsdGlwbGUgQ1BVcz8KClJlZ2FyZGluZyBmb3J3YXJkaW5nIHRvIHRoZSBtb25pdG9yIGFwcCwg dGhpcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gTU1JTyAKcmVnaW9uIGVtdWxhdGVkIGJ5IGVpdGhlciBY ZW4gb3IgUUVNVSAoaW4geDg2IGNhc2UpIHRoZXkgY2Fubm90IGJlIApmb3J3YXJkZWQuIEFyZSB5 b3UgZ29pbmcgdG8gYWRkIFhTTSBpbiB0aGUgTU1JTyBlbXVsYXRpb24gdG9vPyBBcmUgeW91IApn b2luZyB0byBlbXVsYXRlIHRoZSB2SVRTL3ZHSUMvdlVBUlQvcGwwMTEgaW4gdGhlIG1vbml0b3Ig YXBwPwoKQ2hlZXJzLAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==