From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: Re: [RFC Design Doc v2] Add vNVDIMM support for Xen Date: Fri, 5 Aug 2016 14:25:11 +0800 Message-ID: <20160805062511.fftpsk7x527thecc@hz-desktop> References: <20160718002912.rva5n5jbrezdchwx@hz-desktop> <20160803212548.GA16869@char.us.oracle.com> <20160804085257.gztzkil5j4csqtxc@hz-desktop> <20160804145129.GB8847@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20160804145129.GB8847@char.us.oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Konrad Rzeszutek Wilk Cc: Juergen Gross , "Tian, Kevin" , Stefano Stabellini , Wei Liu , "Nakajima, Jun" , George Dunlap , Andrew Cooper , Ian Jackson , "xen-devel@lists.xen.org" , Jan Beulich , Xiao Guangrong List-Id: xen-devel@lists.xenproject.org T24gMDgvMDQvMTYgMTA6NTEsIEtvbnJhZCBSemVzenV0ZWsgV2lsayB3cm90ZToKPiA+ID4gPiAg U3VjaCBhIHBtZW0gbmFtZXNwYWNlIGNhbiBiZSBjcmVhdGVkIHZpYSBhIHVzZXJzcGFjZSB0b29s IG5kY3RsIGFuZAo+ID4gPiA+ICB0aGVuIHJlY29nbml6ZWQgYnkgTGludXggTlZESU1NIGRyaXZl ci4gSG93ZXZlciwgdGhleSBjdXJyZW50bHkgb25seQo+ID4gPiA+ICByZXNlcnZlIHNwYWNlIGZv ciBMaW51eCBrZXJuZWwncyBwYWdlIHN0cnVjdHMuIFRoZXJlZm9yZSwgb3VyIGRlc2lnbgo+ID4g PiA+ICBuZWVkIHRvIGV4dGVuZCBib3RoIExpbnV4IE5WRElNTSBkcml2ZXIgYW5kIG5kY3RsIHRv IHJlc2VydmUKPiA+ID4gPiAgYXJiaXRyYXJ5IHNpemUuCj4gPiA+IAo+ID4gPiBUaGF0IHNlZW1z IC4uIGZyYWdpbGU/IFdoYXQgaWYgV2luZG93cyBvciBGcmVlQlNEIHdhbnQgdG8gdXNlIGl0Cj4g PiA+IHRvbz8KPiA+IAo+ID4gQUZBSUssIHRoZSB3YXkgdXNlZCBieSBjdXJyZW50IExpbnV4IE5W RElNTSBkcml2ZXIgZm9yIHJlc2VydmF0aW9uIGhhcwo+ID4gbm90IGJlZW4gZG9jdW1lbnRlZCBp biBhbnkgcHVibGljIHNwZWNpZmljYXRpb25zIHlldC4gSSdsbCBjb25zdWx0Cj4gPiBkcml2ZXIg ZGV2ZWxvcGVycyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KPiA+IAo+ID4gPiBXb3VsZCB0aGlzICdz dHJ1Y3QgcGFnZScgb24gb24gTlZESU1NIGJlIGdlbmVyYWxpemVkIGVub3VnaAo+ID4gPiB0byB3 b3JrIHdpdGggTGludXgsWGVuLCBGcmVlQlNEIGFuZCB3aGF0IG5vdD8KPiA+ID4KPiA+IAo+ID4g Tm8uIERpZmZlcmVudCBvcGVyYXRpbmcgc3lzdGVtcyBtYXkgY2hvb3NlIGRpZmZlcmVudCBkYXRh IHN0cnVjdHVyZXMKPiA+IHRvIG1hbmFnZSBOVkRJTU0gYWNjb3JkaW5nIHRvIHRoZWlyIG93biBy ZXF1aXJlbWVudHMgYW5kCj4gPiBjb25zaWRlcmF0aW9uLCBzbyBpdCB3b3VsZCBiZSBoYXJkIHRv IHJlYWNoIGFuIGFncmVlbWVudCBvbiB3aGF0IHRvCj4gPiBwdXQgaW4gYSBnZW5lcmljIGRhdGEg c3RydWN0dXJlIChhbmQgbWFrZSBpdCBhcyBwYXJ0IG9mIEFCST8pLgo+IAo+IFllcy4gQXMgSSBj YW4gc2VlIGRpZmZlcmVudCBPU2VzIGhhdmluZyBkaWZmZXJlbnQgc2l6ZXMuIEFuZCB0aGVuCj4g dGhpcyBzaXplIG9mICdyZXNlcnZlZCByZWdpb24nIGVuZHMgdXAgYmVpbmcgdG9vIHNtYWxsIGFu ZCBvbmx5Cj4gc29tZSBwYXJ0IG9mIHRoZSBOVkRJTU0gY2FuIGJlIHVzZWQuCj4KCklmIHRoZSBy ZXNlcnZlZCBhcmVhIGlzIHRvbyBzbWFsbCBmb3Igc29tZSBPUywgdGhvc2UgT1MgbWF5IGNob29z ZSB0bwpwdXQgbWFuYWdlbWVudCBkYXRhIHN0cnVjdHVyZXMgaW4gdGhlIG5vcm1hbCBSQU0gaW4g b3JkZXIgdG8gbWFwIGFsbApOVkRJTU0uCgpQb3NzaWJseSwgYSB0b29sIGNhbiBiZSBkZXZlbG9w ZWQgdG8gYWRqdXN0IHRoZSByZXNlcnZlZCBzaXplIHcvbwpicmVha2luZyBleGlzdGluZyBkYXRh IChlLmcuIGJ5IG1vdmluZyBkYXRhIHRvd2FyZHMgdGhlIGVuZCB0byBsZWF2ZQpyb29tIGZvciBy ZXNlcnZlZCBhcmVhKS4KCj4gPiAKPiA+ID4gQW5kIHRoaXMgbmRjdGwgaXMgaHR0cHM6Ly9naXRo dWIuY29tL3BtZW0vbmRjdGwgSSBwcmVzdW1lPwo+ID4gCj4gPiBZZXMuIFNvcnJ5IHRoYXQgSSBm b3Jnb3QgdG8gYXR0YWNoIHRoZSBVUkwuCj4gPiAKPiA+ID4KPiA+ID4gQW5kIGhvdyBpcyB0aGlz IHN0cnVjdHVyZSByZXNlcnZlZD8gSXMgaXQgYSBzZXBlcmF0ZSBuYW1lc3BhY2UgZW50cnk/Cj4g PiAKPiA+IE5vLCBpdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGV4dHJhIG5hbWVzcGFjZSBlbnRy eS4gVGhlIGN1cnJlbnQKPiA+IE5WRElNTSBkcml2ZXIgaW4gTGludXggZG9lcyB0aGUgcmVzZXJ2 YXRpb24gaW4gdGhlIHdheSBzaG93biBieSB0aGUKPiA+IGZvbGxvd2luZyBkaWFncmFtIChJIG9t aXQgZGV0YWlscyBhYm91dCBhbGlnbm1lbnQgYW5kIHBhZGRpbmcgZm9yCj4gPiBzaW1wbGljaXR5 KToKPiA+IAo+ID4gIFNQQSAgU1BBKzRLCj4gPiAgIHwgICAgICB8Cj4gPiAgIFYgICAgICBWCj4g PiAgICstLS0tLS0rLS0tLS0tLS0tLS0rLS0gLi4uIC0tLSstLS0tLS4uLi0tLS0tKwo+ID4gICB8 ICAgICAgfCBuZF9wZm5fc2IgfCByZXNlcnZlZCB8IGZyZWUgdG8gdXNlIHwKPiA+ICAgKy0tLS0t LSstLS0tLS0tLS0tLSstLSAuLi4gLS0tKy0tLS0tLi4uLS0tLS0rCj4gPiAgIHw8LS0gICBuZF9w Zm5fc2IuZGF0YW9mZiAgIC0tPnwgICAgICAgICAgICAgfAo+ID4gICB8ICAgICgrIG5lY2Vzc2Fy eSBwYWRkaW5nKSAgICAgICAgICAgICAgICAgIHwKPiA+ICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8Cj4gPiAgIHw8LS0tLS0tLS0tLS0tLSBwbWVtIG5hbWVz cGFjZSAtLS0tLS0tLS0tLS0+fAo+ID4gCj4gPiBHaXZlbiBhIHBtZW0gbmFtZXNwYWNlIHdoaWNo IHN0YXJ0cyBmcm9tIFNQQSwKPiAKPiBBQUFBaCwgc28gaXQgaXMgYXQgc3RhcnQgb2YgdGhlIG5h bWVzcGFjZSEgVGhhbmtzCj4gCj4gPiAgMSkgdGhlIGRyaXZlciBzdG9yZXMgYSBzdHJ1Y3QgbmRf cGZuX3NiIGF0IFNQQSs0Swo+ID4gIDIpIHRoZSByZXNlcnZlZCBhcmVhIGlzIGFmdGVyIG5kX3Bm bl9zYgo+ID4gIDMpIHRoZSBmcmVlLXRvLXVzZSBhcmVhIGlzIGFmdGVyIHRoZSByZXNlcnZlZCBh cmVhLCBhbmQgaXRzIGxvY2F0aW9uCj4gPiAgICAgcmVsYXRpdmUgdG8gU1BBIGNhbiBiZSBkZXJp dmVkIGZyb20gbmRfcGZuX3NiLmRhdGFvZmYKPiA+ICA0KSBvbmx5IHRoZSBmcmVlLXRvLXVzZSBh cmVhIGlzIGV4cG9zZWQgdG8gYSBibG9jayBkZXZpY2UgL2Rldi9wbWVtWC4KPiA+ICAgICBBY2Nl c3MgdG8gc2VjdG9yIE4gb2YgL2Rldi9wbWVtWCBhY3R1YWxseSBnb2VzIHRvIChTUEEgKwo+ID4g ICAgIG5kX3Bmbl9zYi5kYXRhb2ZmICsgTiAqIFNFQ1RfU0laRSkKPiA+ICA1KSBuZF9wZm5fc2Ig YWxzbyBjb250YWlucyBhIHNpZ25hdHVyZSAiTlZESU1NX1BGTl9JTkZPIiBhbmQgYQo+ID4gICAg IGNoZWNrc3VtLiBJZiB0aGUgZHJpdmVyIGZpbmRzIHN1Y2ggc2lnbmF0dXJlIGFuZCB0aGUgY2hl Y2tzdW0KPiA+ICAgICBtYXRjaGVzLCB0aGVuIGl0IGtub3dzIHRoaXMgZGV2aWNlIGNvbnRhaW5z IHJlc2VydmVkIGFyZWEuCj4gCj4gL21lIG5vZHMuCj4gCj4gQW5kIG9mIGNvdXJzZSB0aGlzIG5p Y2UgZGlhZ3JhbSBhbmQgc3VjaCBpcyBnb2luZyB0byBiZSBpbgo+IGEgcHVibGljIEFCSSBkb2N1 bWVudCA6LSkKPiA+IAo+ID4gPiBBbmQgUUVNVSBrbm93cyBub3QgdG8gYWNjZXNzIGl0Pwo+ID4g Cj4gPiBRRU1VIGFzIGEgdXNlcnNwYWNlIHByb2dyYW0gY2FuIG9ubHkgYWNjZXNzIC9kZXYvcG1l bVggYW5kIGhlbmNlIGhhcwo+ID4gbm8gd2F5IHRvIHRvdWNoIHRoZSByZXNlcnZlZCBhcmVhLgo+ IAo+IFJpZ2h0dG8uCj4gPiAKPiA+ID4gT3IgWGVuIG5lZWRzIHRvIG1ha2Ugc3VyZSBfbm9ib2R5 Xwo+ID4gPiBleGNlcHQgaXQgY2FuIGFjY2VzcyBpdD8gV2hpY2ggbWVhbnMgWGVuIG1heSBuZWVk IHRvIGtub3cgdGhlIGZvcm1hdAo+ID4gPiBvZiB0aGUgbmRjdGwgc3RydWN0dXJlcyB0aGF0IGFy ZSBsYWlkIG91dCBpbiB0aGUgTlZESU1NIHJlZ2lvbj8KPiA+ID4KPiA+IAo+ID4gWGVuIGh5cGVy dmlzb3IgcmVsaWVzIG9uIGRvbTAgZHJpdmVyIHRvIHBhcnNlIHRoZSBsYXlvdXQuICBBdCBEb20w Cj4gPiBib290LCBEb20wIE5WRElNTSBkcml2ZXIgcmVwb3J0cyBhZGRyZXNzL3NpemUgb2YgYXJl YSByZXNlcnZlZCBmb3IgWGVuCj4gPiB0byBYZW4gaHlwZXJ2aXNvciwgd2hpY2ggdGhlbiB1bm1h cHMgdGhlIHJlc2VydmVkIGFyZWEgZnJvbSBEb20wLgo+IAo+IE9LLCBzbyB0aGUgL2Rldi9wbWVt IGRyaXZlciB3b3VsZCBjb25zdWx0IHRoaXMgd2hlbiBzb21lYm9keSBpcyBtbWFwaW5nCj4gdGhl IGFyZWEuIEJ1dCBzaW5jZSB0aGlzIHdvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgZHJpdmVyICh1 bnJlZ2lzdGVyZWQpCj4gaXQgd291bGQgcmVwb3J0IGFuIHplcm8gc2l6ZT8KPgoKVGhlIGN1cnJl bnQgcG1lbSBkcml2ZXIgaW4gTGludXggbmVlZCBiZSBtb2RpZmllZCAod2hpY2ggSSdtIGRvaW5n KSB0bwp1bmRlcnN0YW5kIHRoZSByZXNlcnZlZCBhcmVhIGlzIHVubWFwcGVkIGFuZCBzaG91bGQg bmV2ZXIgYmUgYWNjZXNzZWQuCgo+IE9yIHdvdWxkIGl0ICJPdGhlcndpc2UsIGl0IHdpbGwgdHJl YXQgdGhlIHBtZW0gbmFtZXNwYWNlIGFzIGEgcmF3IGRldmljZSBhbmQKPiBzdG9yZSBwYWdlIHN0 cnVjdCdzIGluIHRoZSBub3JtYWwgUkFNLiIgLSB3aGljaCBtZWFucyBkb20wIGNhbiBzdGlsbAo+ IGFjY2VzcyB0aGUgU1BBIChleGNlcHQgb2J2aW91c2x5IHRoZSBhcmVhIHRoYXQgaXMgZm9yIHRo aXMgcmVzZXJ2ZWQgcmVnaW9uKT8KPgoKWWVzLCBhIHJhdyBkZXZpY2UgbWVhbnMgdGhlcmUgaXMg bm8gcmVzZXJ2ZWQgYXJlYSBhbmQgdGhlIGVudGlyZSBwbWVtCm5hbWVzcGFjZSBjYW4gYmUgdXNl ZCBmb3IgZnJlZSAoaS5lLiB0aGUgZnJlZS10by11c2UgYXJlIGluIGFib3ZlCmRpYWdyYW0gY292 ZXJzIHRoZSBlbnRpcmUgcG1lbSBuYW1lc3BhY2UpLgoKPiAuLnNuaXAuLgo+ID4gPiA+ICAgICAg Z3Vlc3RzLiBPdGhlcndpc2UsIFhlbiBoeXBlcnZpc29yIHdpbGwgcmVjb3JkZWQgdGhlIHJlcG9y dGVkCj4gPiA+IHMvcmVjb3JkZWQvcmVjb3JkLwo+ID4gPiA+ICAgICAgcGFyYW1ldGVycyBhbmQg Y3JlYXRlIHBhZ2VfaW5mbyBzdHJ1Y3RzIGluIHRoZSByZXNlcnZlZCBhcmVhLgo+ID4gPiAKPiA+ ID4gT2hoLiBZb3UganVzdCBibGFzdCBpdCBhd2F5PyBJIGd1ZXNzIGl0IG1ha2VzIHNlbnNlLiBU aGVuIHdoYXQgaXMgdGhlCj4gPiA+IHB1cnBvc2Ugb2YgdGhlIG5kY3RsPyBKdXN0IHRvIGNhcnZl IG91dCBhbiBuYW1lc3BhY2UgcmVnaW9uIGZvciB0aGlzPwo+ID4gPgo+ID4gCj4gPiBuZGN0bCBp cyB1c2VkIGJ5LCBmb3IgZXhhbXBsZSwgYSBzeXN0ZW0gYWRtaW4gdG8gcmVzZXJ2ZSBzcGFjZSBv biBhCj4gPiBob3N0IHBtZW0gbmFtZXNwYWNlLiBJZiB0aGVyZSBpcyBhbHJlYWR5IGRhdGEgaW4g dGhlIG5hbWVzcGFjZSwgbmRjdGwKPiA+IHdpbGwgZ2l2ZSBhIHdhcm5pbmcgbWVzc2FnZSBhbmQg ZXhpdCBhcyBsb25nIGFzIC0tZm9yY2Ugb3B0aW9uIGlzIG5vdAo+ID4gZ2l2ZW4uIEhvd2V2ZXIs IGlmIC0tZm9yY2UgaXMgcHJlc2VudCwgbmRjdGwgd2lsbCBicmVhayB0aGUgZXhpc3RpbmcKPiA+ IGRhdGEuCj4gPiAKPiA+ID4gQW5kIHdoYXQgaWYgdGhlcmUgaXMgc29tZXRoaW5nIHRoZXJlIGZy b20gcHJldmlvdXMgT1MgKHNheSBMaW51eCk/Cj4gPiA+IEp1c3QgYmxhc3QgaXQgYXdheT8gQnV0 IGNvdWxkIExpbnV4IGRlcGVuZCBvbiB0aGlzIGNvbnRhaW5pbmcgc29tZQo+ID4gPiBwZXJzaXN0 ZW50IGluZm9ybWF0aW9uPyBPciBkb2VzIGl0IGFsc28gYmxhc3QgaXQgYXdheT8KPiA+ID4KPiA+ IAo+ID4gQXMgYWJvdmUsIGlmIGxpbnV4IGRyaXZlciBkZXRlY3RzIHRoZSBzaWduYXR1cmUgIk5W RElNTV9QRk5fSU5GTyIgYW5kCj4gPiBhIG1hdGNoZWQgY2hlY2tzdW0sIGl0IHdpbGwga25vdyBp dCdzIHNhZmUgdG8gd3JpdGUgdG8gdGhlIHJlc2VydmVkCj4gPiBhcmVhLiBPdGhlcndpc2UsIGl0 IHdpbGwgdHJlYXQgdGhlIHBtZW0gbmFtZXNwYWNlIGFzIGEgcmF3IGRldmljZSBhbmQKPiA+IHN0 b3JlIHBhZ2Ugc3RydWN0J3MgaW4gdGhlIG5vcm1hbCBSQU0uCj4gCj4gT0ssIHNvIG15IHdvcnJ5 IGlzIHRoYXQgd2Ugd2lsbCBoYXZlIGEgZGl2ZXJnZW5jZS4gV2hpY2ggaXMgdGhhdAo+IHRoZSBz eXN0ZW0gYWRtaW4gY3JlYXRlcyB0aGlzIHVuZGVyIG5kY3RsIHYwLCBib290cyBYZW4gdXNlcyBp dC4KPiBUaGVuIG1vdmVzIHRoZSBOVkRJTU0gdG8gYW5vdGhlciBtYWNoaW5lIHdoaWNoIGhhcyBu ZGN0bCB2MSBhbmQKPiBoZS9zaGUgYm9vdHMgaW4gTGludXguCj4gCj4gTGludXggZ2V0cyBhbGwg Y29uZnVzZWQgYi9jIHRoZSByZWdpb24gaGFzIHNvbWV0aGluZyBpdCBjYW4ndCB1bmRlcnN0YW5k Cj4gYW5kIHRoZSB1c2VyIGlzIHZlcnkgYW5ncnkuCj4gCj4gU28gaXQgc291bmRzIGxpa2UgdGhl IHNpemUgdGhlIG5kY3RsIHJlc2VydmVzIE1VU1QgYmUgYmFrZWQgaW4gYW4gQUJJCj4gYW5kIG1h ZGUgc3VyZSB0byBleHBhbmQgaWYgbmVlZGVkLgo+CgpuZGN0bCBpcyBhIG1hbmFnZW1lbnQgdG9v bCB3aGljaCBwYXNzZXMgYWxsIGl0cyByZXF1ZXN0cyB0byB0aGUgZHJpdmVyCnZpYSBzeXNmcywg c28gdGhlIGNvbXBhdGliaWxpdHkgYWNyb3NzIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBMaW51eAp3 b3VsZCBhY3R1YWwgYmUgaW50cm9kdWNlZCBieSB0aGUgZGlmZmVyZW50IHZlcnNpb25zIG9mIGRy aXZlcnMuCgpBbGwgbmV3ZXIgdmVyc2lvbnMgb2YgZHJpdmVycyBzaG91bGQgcHJvdmlkZSBiYWNr d2FyZHMgY29tcGF0aWJpbGl0eQp0byBwcmV2aW91cyB2ZXJzaW9ucyAod2hpY2ggaXMgdGhlIGN1 cnJlbnQgZHJpdmVycycKYmVoYXZpb3IpLiBIb3dldmVyLCB0aGUgZm9yd2FyZHMgY29tcGF0aWJp bGl0eSBpcyBoYXJkIHRvIHByZXNlcnZlZCwKZS5nLgogLSBhbiBvbGQgdmVyc2lvbiB3L28gcmVz ZXJ2ZWQgYXJlYSBzdXBwb3J0IChlLmcuIHRoZSBvbmUgaW4gbGludXgKICAga2VybmVsIDQuMikg cmVjb2duaXplcyBhIHBtZW0gbmFtZXNwYWNlIHcvIHJlc2VydmVkIGFyZWEgYXMgYSByYXcKICAg ZGV2aWNlIGFuZCBtYXkgd3JpdGUgdG8gdGhlIHJlc2VydmVkIGFyZWEuIElmIGl0J3MgYSB4ZW4g cmVzZXJ2ZWQKICAgYXJlYSBhbmQgdGhlIGRyaXZlciBpcyBpbiBkb20wLCB0aGUgZG9tMCBrZXJu ZWwgd2lsbCBjcmFzaC4KICAgCiAtIHRoZSBzYW1lIGNyYXNoIHdvdWxkIGhhcHBlbiBpZiBhbiBv bGQgdmVyc2lvbiBkcml2ZXIgdy8gcmVzZXJ2ZWQKICAgYXJlYSBzdXBwb3J0IGJ1dCB4ZW4gcmVz ZXJ2ZWQgYXJlYSBzdXBwb3J0IChlLmcuIHRoZSBvbmUgaW4gbGludXgKICAga2VybmVsIDQuNykg aXMgdXNlZCBmb3IgYSBwbWVtIG5hbWVzcGFjZSB3LyB4ZW4gcmVzZXJ2ZWQgYXJlYS4KCkZvciB0 aGUgY3Jvc3MtT1MgY29tcGF0aWJpbGl0eSwgdGhlcmUgaXMgYW4gZWZmb3J0IHRvIHN0YW5kYXJk aXplIHRoZQpyZXNlcnZhdGlvbi4gSW4gdGhlIG1lYW50aW1lLCBvbmx5IGxpbnV4IGlzIGNhcGFi bGUgdG8gaGFuZGxlIHN1Y2gKcG1lbSBuYW1lc3BhY2VzIHdpdGggcmVzZXJ2ZWQgYXJlYS4KCj4g Li5zbmlwLi4KPiA+ID4gVGhpcyAiYmFsbG9vbiBvdXQiIGlzIGludGVyZXN0aW5nLiBZb3UgYXJl IGVmZmVjdGl2ZWx5IHRlbGxpbmcgTGludXgKPiA+ID4gdG8gaWdub3JlIGEgY2VydGFpbiByYW5n ZSBvZiAnc3RydWN0IHBhZ2VfaW5mbycsIHNvIHRoYXQgaWYgc29tZWJvZHkKPiA+ID4gdXNlcyAv c3lzL2RlYnVnL2tlcm5lbC9wYWdlX3dhbGsgaXQgd29uJ3QgYmxvdyB1cD8gKEFzIHRoZSBrZXJu ZQo+ID4gPiBjYW4ndCByZWFkIHRoZSBzdHJ1Y3QgcGFnZV9pbmZvIGFueW1vcmUpLgo+ID4gPgo+ ID4gPiBIb3cgd291bGQgeW91IGRvIHRoaXM/IFNpbXVsYXRlIGFuIE5WRElNTSB1bnBsdWc/Cj4g PiAKPiA+IHMvcGFnZV9pbmZvL3BhZ2UvIChzdHJ1Y3QgcGFnZSBmb3IgbGludXgsIHN0cnVjdCBw YWdlX2luZm8gZm9yIHhlbikKPiA+IAo+ID4gQXMgaW4gSmFuJ3MgY29tbWVudCwgImJhbGxvb24g b3V0IiBpcyBhIGNvbmZ1c2luZyBuYW1lIGhlcmUuCj4gPiBCYXNpY2FsbHksIGl0J3MgdG8gcmVt b3ZlIHRoZSByZXNlcnZlZCBhcmVhIGZyb20gc29tZSByZXNvdXJjZSBzdHJ1Y3QKPiA+IGluIG52 ZGltbSBkcml2ZXIgdG8gYXZvaWQgaXQncyBhY2Nlc3NlZCBvdXQgb2YgdGhlIGRyaXZlciB2aWEg dGhlCj4gPiByZXNvdXJjZSBzdHJ1Y3QuIEFuZCB0aGUgbnZkaW1tIGRyaXZlciBkb2VzIG5vdCBt YXAgdGhlIHJlc2VydmVkIGFyZWEsCj4gPiBzbyBJIHRoaW5rIGl0IGNhbm5vdCBiZSB0b3VjaGVk IHZpYSBwYWdlX3dhbGsuCj4gCj4gT0ssIEkgbmVlZCB0byByZWFkIHRoZSBMaW51eCBjb2RlIG1v cmUgdG8gbWFrZSBzdXJlIEkgYW0KPiBub3QgbWlzc2luZyBzb21ldGhpbmcuCj4gCj4gQmFzaWNh bGx5IHRoZSBxdWVzdGlvbiB0aGF0IGtlZXBzIHJldm9sdmluZyBpbiBteSBoZWFkIGlzOgo+IAo+ IFdoeSBpcyB0aGlzIGV2ZW4gbmVjY2Vzc2FyeT8KPiAKPiBMZXQgbWUgZXhwYW5kIC0gaXQgZmVl bHMgbGlrZSAoYW5kIEkgdGhpbmsgSSBhbSBtaXNzaW5nIHNvbWV0aGluZwo+IGhlcmUpIHRoYXQg d2UgYXJlIGNyaXBwbGluZyB0aGUgTGludXggZHJpdmVyIHNvIHRoYXQgaXQgd29uJ3QKPiBicmVh ayAtIGIvYyBpZiBpdCB0cmllZCB0byBhY2Nlc3MgdGhlICdzdHJ1dCBwYWdlX2luZm8nIGluIHRo aXMKPiByZXNlcnZlZCByZWdpb24gaXQgd291bGQgY3Jhc2guIFNvIHdlIGVsaW1pbmF0ZSB0aGF0 LCBhbmQgbWFrZQo+IHRoZSBkcml2ZXIgYmVsaWV2ZSB0aGUgcmVnaW9uIGV4aXN0cyAoaXMgcmVz ZXJ2ZWQpLCBidXQgaXQgY2FuJ3QKPiB1c2UgaXQuIEFuZCBpbnN0ZWFkIHVzZSB0aGUgbm9ybWFs IFJBTSBwYWdlcyB0byBrZWVwIHRyYWNrCj4gb2YgdGhlIE5WRElNTSBTUEFzLgo+IAo+IE9yIHBl cmhhcHMgbm90IGtlZXAgdHJhY2sgYXQgYWxsIGFuZCBqdXN0IHRyZWF0IHRoZSB3aG9sZQo+IE5W RElNTSBhcyBvcGFxdWUgTU1JTyB0aGF0IGlzIGluYWNjZXNzaWJsZT8KPgoKSWYgd2UgdHJ1c3Qg dGhlIGRyaXZlciBpbiBkb20wIGtlcm5lbCBhbHdheXMgZG9lcyBjb3JyZWN0IHRoaW5ncyAoYW5k CndlIGNhbiB0cnVzdCBpdCwgcmlnaHQ/KSwgbm8gY3Jhc2ggd2lsbCBoYXBwZW4uIEhvd2V2ZXIs IGFzIEphbgpjb21tZW50IChodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0 bWwveGVuLWRldmVsLzIwMTYtMDgvbXNnMDA0MzMuaHRtbCk6Cgp8IFJpZ2h0IG5vdyBEb20wIGlz bid0IGFsbG93ZWQgdG8gYWNjZXNzIGFueSBtZW1vcnkgaW4gdXNlIGJ5IFhlbgp8IChhbmQgbm90 IGV4cGxpY2l0bHkgc2hhcmVkKSwgYW5kIEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIGRldmlhdGUK fCBmcm9tIHRoYXQgbW9kZWwgZm9yIHBtZW0uCgp4ZW4gaHlwZXJ2aXNvciBtdXN0IGV4cGxpY2l0 bHkgZGlzYWxsb3cgZG9tMCBmcm9tIGFjY2Vzc2luZyB0aGUKcmVzZXJ2ZWQgYXJlYS4KCj4gQnV0 IGhvdyB3aWxsIHRoYXQgd29yayBpZiB0aGVyZSBpcyBhIERBWCBmaWxlc3lzdGVtIG9uIGl0Pwo+ IFRoZSBleHQ0IG5lZWRzIHNvbWUgbWVjaGFuaXNtIHRvIGFjY2VzcyB0aGUgZmlsZXMgdGhhdCBh cmUgdGhlcmUuCj4gKE90aGVyd2lzZSB5b3UgY291bGRuJ3QgdXNlIHRoZSBmaWVtYXAgaW9jdGwg dG8gZmluZCB0aGUgU1BBcykuCj4KCk5vLCB0aGUgZmlsZSBzeXN0ZW0gZG9lcyBub3QgdG91Y2gg dGhlIHJlc2VydmVkIGFyZWEuIElmIGEgcmVzZXJ2ZWQKYXJlYSBleGlzdHMsIHRoZSBzdGFydCBT UEEgb2YgL2Rldi9wbWVtMCByZXBvcnRlZCB2aWEgc3lzZnMgaXMgdGhlCnN0YXJ0IFNQQSBvZiB0 aGUgcmVzZXJ2ZWQgYXJlYSwgc28gZmllbWFwIGNhbiBzdGlsbCB3b3JrLgoKPiBbc2VlIGJlbG93 XQo+ID4gCj4gPiA+IAo+ID4gPiBCdXQgaWYgeW91IGRvIHRoYXQgaG93IHdpbGwgU01BUlQgdG9v bHMgd29yayBhbnltb3JlPyBBbmQKPiA+ID4gd2hvIHdvdWxkIGRvIHRoZSBfRFNNIGNoZWNrcyBv biB0aGUgaGVhbHRoIG9mIHRoZSBOVkRJTU0/Cj4gPiA+Cj4gPiAKPiA+IEEgdXNlcnNwYWNlIFNN QVJUIHRvb2wgY2Fubm90IGFjY2VzcyB0aGUgcmVzZXJ2ZWQgYXJlYSwgc28gSSB0aGluayBpdAo+ ID4gY2FuIHN0aWxsIHdvcmsuIEkgaGF2ZW4ndCBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBv ZiBhbnkgU01BUlQKPiA+IHRvb2xzIGZvciBOVkRJTU0sIGJ1dCBJIGd1ZXNzIHRoZXkgd291bGQg ZmluYWxseSBjYWxsIHRoZSBkcml2ZXIgdG8KPiA+IGV2YWx1YXRlIHRoZSBBUlMgX0RTTSB3aGlj aCByZXBvcnRzIHRoZSBiYWQgYmxvY2tzLiBBcyBsb25nIGFzIHRoZQo+ID4gZHJpdmVyIGRvZXMg bm90IHJldHVybiB0aGUgYmFkIGJsb2NrcyBpbiB0aGUgcmVzZXJ2ZWQgYXJlYSB0byBTTUFSVAo+ ID4gdG9vbHMgKHdoaWNoIEkgc3VwcG9zZSB0byBiZSBoYW5kbGVkIGJ5IGRyaXZlciBpdHNlbGYp LCBTTUFSVCB0b29scwo+ID4gc2hvdWxkIHdvcmsgZmluZS4KPiA+IAo+ID4gPiAvbWUgc2NyYXRj aGVzIGhpcyBoZWFkLiBQZXJoYXBzIHRoZSBhbnN3ZXJzIGFyZSBsYXRlciBpbiB0aGlzCj4gPiA+ IGRlc2lnbi4uCj4gCj4gU28gSSB0aGluayBJIGZpZ3VyZWQgb3V0IHRoZSBpc3N1ZSBoZXJlISEK PiAKPiBZb3UganVzdCB3YW50IHRvIGhhdmUgdGhlIExpbnV4IGtlcm5lbCBkcml2ZXIgdG8gdXNl IG5vcm1hbCBSQU0KPiBwYWdlcyB0byBrZWVwIHRyYWNrIG9mIHRoZSBOVkRJTU0gU1BBIHJhbmdl cy4KClllcywgdGhpcyBpcyB3aGF0IHRoZSBjdXJyZW50IGRyaXZlciBkb2VzIGZvciBhIHJhdyBk ZXZpY2UuCgo+IEFzIGluIHRyZWF0IHRoZSBOVkRJTU0gYXMgaWYgaXQgaXMgbm9ybWFsIFJBTT8K CklmIHlvdSBhcmUgdGFsa2luZyBhYm91dCB0aGUgbG9jYXRpb24gb2YgcGFnZSBzdHJ1Y3QsIHRo ZW4geWVzLiAgVGhlCnBhZ2Ugc3RydWN0J3MgZm9yIE5WRElNTSBpcyBwdXQgaW4gdGhlIG5vcm1h bCBSQU0ganVzdCBsaWtlIHRoZSBwYWdlCnN0cnVjdCdzIGZvciB0aGUgbm9ybWFsIFJBTS4gQnV0 IE5WRElNTSBjYW4gbmV2ZXIsIGZvciBleGFtcGxlLCBiZQphbGxvY2F0ZWQgdmlhIHRoZSBrZXJu ZWwgbWVtb3J5IGFsbG9jYXRvciAoYnVkZHkvc2xhYi9ldGMuKS4KCj4gCj4gW09yIGlzIExpbnV4 IHRyZWF0aW5nIHRoaXMgYXJlYSBhcyBNTUlPIHJlZ2lvbiAoaW4gd2loY2ggY2FzZSBpdCBkb2Vz IG5vdAo+IG5lZWQgc3RydWN0IHBhZ2VfaW5mbyk/P10KPgo+IEFuZCB0aGVuIFhlbiBjYW4gdXNl IHRoaXMgcmVzZXJ2ZWQgcmVnaW9uIGZvciBpdHMgb3duCj4gcHVycG9zZSEKPiAKPiBQZXJoYXBz IHRoZW4gdGhlIHNlY3Rpb24gdGhhdCBleHBsYWlucyB0aGlzICdyZXNlcnZlZCByZWdpb24nIGNv dWxkCj4gc2F5IHNvbWV0aGluZyBhbG9uZzoKPiAKPiAiV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9m IHRoZSBTUEFzLiBUaGUgZ3Vlc3QgTlZESU1NICdmaWxlJwo+IG9uIHRoZSBOVkRJTU0gbWF5IGJl IGluIHRoZSB3b3JzdCBjYXNlIGJlIHJhbmRvbWx5IGFuZCBpbiBkZXNjZW5kaW5nCj4gZGlzY29u dGluZ291cyBvcmRlciAoc2F5IGZyb20gdGhlIGVuZCBvZiB0aGUgTlZESU1NKSwgd2UgbmVlZAo+ IHRvIGtlZXAgdHJhY2sgb2YgZWFjaCBvZiB0aGUgU1BBcy4gVGhlIHJlYXNvbiBpcyB0aGF0IHdl IG5lZWQKPiB0aGUgU1BBcyB3aGVuIHdlIHBvcHVsYXRlIHRoZSBndWVzdCBFUFQuCj4gCj4gQXMg c3VjaCB3ZSBjYW4gc3RvcmUgdGhlIGd1ZXN0IFNQQSBpbiBtZW1vcnkgKGxpbmVhciBhcnJheT8p Cj4gb3IgcmVkLWJsYWNrIHRyZWUsIG9yIGFueSBvdGhlciAtIGJ1dCBhbGwgb2YgdGhlbSB3aWxs IGNvbnN1bWUKPiAibm9ybWFsIFJBTSIuIEFuZCB3aXRoIHN1ZmZpY2llbnQgbGFyZ2UgZW5vdWdo IE5WRElNTSB3ZSBtYXkKPiBub3QgaGF2ZSBlbm91Z2ggJ25vcm1hbCBSQU0nIHRvIHN0b3JlIHRo aXMuCj4gCj4gQWxzbyB3ZSBvbmx5IG5lZWQgdG8ga25vdyB0aGVzZSBTUEFzIGR1cmluZyBndWVz dCBjcmVhdGlvbiwKPiBkZXN0cnVjdGlvbiwgYmFsbG9vbmluZywgZXRjIC0gaGVuY2Ugd2UgbWF5 IHN0b3JlIHRoZW0gb24gdGhlCj4gTlZESU1NIGl0c2VsZi4gRm9ydHVuYXRseSBmb3IgdXMgdGhl IG5kY3RsIGFuZCBMaW51eCBhcmUKPiBhdmFpbGFibGUgd2hpY2ggY2FydmUgb3V0IHJpZ2h0IGFm dGVyIHRoZSBuYW1lc3BhY2UgcmVnaW9uICgxMjhrYikKPiBhbmQgJ3Jlc2VydmVkIHJlZ2lvbicg d2hpY2ggdGhlIE9TIGNhbiB1c2UgdG8gc3RvcmUgaXRzCj4gc3RydWN0IHBhZ2VfaW5mbyB0byBj b3ZlciB0aGUgZnVsbCByYW5nZSBvZiB0aGUgTlZESU1NLgo+IAo+IFRoZSBjb21wbGV4aXR5IGlu IHRoaXMgaXMgdGhhdDoKPiAgLSBXZSBNVVNUIG1ha2Ugc3VyZSBMaW51eCBkb2VzIG5vdCB0cnkg dG8gdXNlIGl0IHdoaWxlCj4gICAgd2UgdXNlIGl0Lgo+ICAtIFRoYXQgdGhlIHNpemUgb2YgdGhp cyAncmVzZXJ2ZWQgcmVnaW9uJyBpcyBzdWZmaWNpZW50bHkKPiAgICBsYXJnZSBmb3Igb3VyICdz dHJ1Y3QgcGFnZV9pbmZvJyBzdHJ1Y3R1cmUuCj4gIC0gVGhlIGxheW91dCBoYXMgYW4gQUJJIGJh a2VkLgo+ICAtIExpbnV4IGZzJ2VzIHdpdGggREFYIHN1cHBvcnQgTVVTVCBiZSBhYmxlIG1sb2Nr IHRoZXNlIFNQQQo+ICAgIHJlZ2lvbnMgKHNvIHRoYXQgbm9ib2R5IHRyaWVzIHRvIHJlbW92ZSB0 aGUgJ2ZpbGUnIHdoaWxlCj4gICAgYSBndWVzdCBpcyB1c2luZyBpdCkuCgpJIG5lZWQgdG8gY2hl Y2sgd2hldGhlciBsaW51eCBjdXJyZW50bHkgZG9lcyB0aGlzLgoKPiAgLSBMaW51cyBmcydlcyB3 aXRoIERBWCBzdXBwb3J0IE1VU1QgYmUgYWJsZSB0byByZXNpemUgdGhlCj4gICAgJ2ZpbGUnLCBo ZXJlYnkgdXNpbmcgbW9yZSBvZiB0aGUgU1BBcyBhbmQgcmV3cml0dGluZyB0aGUKPiAgICBwcm9w ZXJ0aWVzIG9mIHRoZSBmaWxlIG9uIERBWCAod2hpY2ggc2hvdWxkIHRoZW4gY2F1c2UgYW4KPiAg ICBtZW1vcnkgaG90cGx1ZyBBQ1BJIGluIHRoZSBndWVzdCB0cmVhdGluZyB0aGUgbmV3IHNpemUg b2YKPiAgICB0aGUgZmlsZSBhcyBuZXcgTkZJVCByZWdpb24/KQo+CgpDdXJyZW50bHkgbXkgcGxh biBpcyB0byBkaXNhbGxvdyBzdWNoIHJlc2l6aW5nIGFuZCBwb3NzaWJseSBvdGhlcgpjaGFuZ2Vz IG91dCBvZiBndWVzdCBpZiBpdCdzIGJlaW5nIHVzZWQgYnkgZ3Vlc3QgKGFraW4gdG8gZGlzaykg aW4gdGhlCmZpcnN0IGltcGxlbWVudGF0aW9uLiBJdCdzIG1vc3RseSBmb3Igc2ltcGxpY2l0eSBh bmQgd2UgY2FuIGFkZCBpdCBpbgpmdXR1cmUuIEZvciBob3RwbHVnLCB3ZSBjYW4gcGFzcyBhbm90 aGVyIGZpbGUgYXMgYSBuZXcgcG1lbSBuYW1lc3BhY2UKdG8gZ3Vlc3QuCgo+ICIKPiAKPiBJIHRo aW5rIHRoYXQgY292ZXJzIGl0Pwo+IC4uc25pcC4uCj4gPiA+ID4gIE91ciBkZXNpZ24gdGFrZXMg dGhlIGZvbGxvd2luZyBtZXRob2QgdG8gYXZvaWQgYW5kIGRldGVjdCBjb2xsaXNpb25zLgo+ID4g PiA+ICAxKSBUaGUgZGF0YSBsYXlvdXQgb2YgYXJlYSB3aGVyZSBRRU1VIGNvcGllcyBpdHMgTkZJ VCBhbmQgQUNQSQo+ID4gPiA+ICAgICBuYW1lc3BhY2UgZGV2aWNlcyBpcyBvcmdhbml6ZWQgYXMg YmVsb3c6Cj4gPiA+IAo+ID4gPiBXaHkgY2FuJ3QgdGhpcyBiZSBleHByZXNzZWQgaW4gWGVuU3Rv cmU/Cj4gPiA+IAo+ID4gPiBZb3UgY291bGQgaGF2ZSAvbG9jYWwvZG9tYWluL2RvbWlkL2h2bWxv YWRlci9kbS1hY3BpLzxuYW1lPi97YWRkcmVzcyxsZW5ndGgsIHR5cGV9Cj4gPiA+ID8KPiA+ID4K PiA+IAo+ID4gSWYgWGVuU3RvcmUgY2FuIGJlIHVzZWQsIHRoZW4gaXQgY291bGQgc2F2ZSBzb21l IGd1ZXN0IG1lbW9yeS4KPiAKPiBJdCBpcyBhbHNvIGVhc2llciB0aGFuIHJlbGF5aW5nIG9uIHRo ZSBmb3JtYXQgb2YgYSBibG9iIGluIG1lbW9yeS4KPiA+IAo+ID4gVGhpcyBpcyBhIGdlbmVyYWwg bWVjaGFuaXNtIHRvIHBhc3MgQUNQSSB3aGljaCBhbmQgaXMgbm90IGxpbWl0ZWQgdG8KPiA+IE5W RElNTSwgc28gaXQgbWVhbnMgUUVNVSBtYXkgcGFzcyBhIGxvdCBvZiBlbnRyaWVzLiBJJ20gbm90 IHN1cmUgaWYKPiA+IFhlblN0b3JlIGlzIHN0aWxsIGEgcHJvcGVyIHBsYWNlIHdoZW4gdGhlIG51 bWJlciBpcyBsYXJnZS4gTWF5YmUgd2UKPiA+IHNob3VsZCBwdXQgYW4gdXBwZXIgbGltaXQgZm9y IHRoZSBudW1iZXIgb2YgZW50cmllcy4KPiAKPiBXaHkgcHV0IGEgbGltaXQgb24gaXQ/IEl0IHNo b3VsZCBlYXNpbHkgaGFuZGxlIHRob3VzYW5kcyBvZiA8bmFtZT4uCj4gQW5kIHRoZSBvbmx5IGF0 dHJpYnV0ZXMgeW91IGhhdmUgdW5kZXIgPG5hbWU+IGFyZSBqdXN0IGFkZHJlc3MsCj4gbGVuZ3Ro IGFuZCB0eXBlLgo+CgpPSywgaWYgaXQncyBub3QgYSBwcm9ibGVtLCBJIHdpbGwgdXNlIHhlbnN0 b3JlIHRvIHBhc3MgdGhvc2UKaW5mb3JtYXRpb24uCgo+IC4uIHNuaXAuLgo+ID4gPiA+IDQuMy4y IEVtdWxhdGluZyBHdWVzdCBfRFNNCj4gPiA+ID4gCj4gPiA+ID4gIE91ciBkZXNpZ24gbGVhdmVz IHRoZSBlbXVsYXRpb24gb2YgZ3Vlc3QgX0RTTSB0byBRRU1VLiBKdXN0IGFzIHdoYXQKPiA+ID4g PiAgaXQgZG9lcyB3aXRoIEtWTSwgUUVNVSByZWdpc3RlcnMgdGhlIF9EU00gYnVmZmVyIGFzIE1N SU8gcmVnaW9uIHdpdGgKPiA+ID4gPiAgWGVuIGFuZCB0aGVuIGFsbCBndWVzdCBldmFsdWF0aW9u cyBvZiBfRFNNIGFyZSB0cmFwcGVkIGFuZCBlbXVsYXRlZAo+ID4gPiA+ICBieSBRRU1VLgo+ID4g PiAKPiA+ID4gU3dlZXQhCj4gPiA+IAo+ID4gPiBTbyBvbmUgcXVlc3Rpb24gdGhhdCBJIGFtIG5v dCBpZiBpdCBoYXMgYmVlbiBhbnN3ZXJlZCwgd2l0aCB0aGUKPiA+ID4gJ3N0cnVjdCBwYWdlX2lu Zm8nIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgZG9tMCBob3cgd2lsbCBPRU0gX0RTTSBtZXRob2QK PiA+ID4gb3BlcmF0aW9uPyBGb3IgZXhhbXBsZSBzb21lIG9mIHRoZSBBTUwgY29kZSBtYXkgYXNr aW5nIHRvIHBva2UKPiA+ID4gYXQgc3BlY2lmaWMgU1BBcywgYnV0IGhvdyB3aWxsIExpbnV4IGRv IHRoaXMgcHJvcGVybHkgd2l0aG91dAo+ID4gPiAnc3RydWN0IHBhZ2VfaW5mbycgYmUgYXZhaWxh YmxlPwo+ID4gPgo+ID4gCj4gPiAocy9wYWdlX2luZm8vcGFnZS8pCj4gPiAKPiA+IFRoZSBjdXJy ZW50IEludGVsIE5WRElNTSBkcml2ZXIgaW4gTGludXggZG9lcyBub3QgZXZhbHVhdGUgYW55IE9F TQo+ID4gX0RTTSBtZXRob2QsIHNvIEknbSBub3Qgc3VyZSB3aGV0aGVyIHRoZSBrZXJuZWwgaGFz IHRvIGFjY2VzcyBhIE5WRElNTQo+ID4gcGFnZSBkdXJpbmcgZXZhbHVhdGluZyBfRFNNLgo+ID4g Cj4gPiBUaGUgbW9zdCBjbG9zZSBvbmUgaW4gbXkgbWluZCwgdGhvdWdoIG5vdCBhbiBPRU0gX0RT TSwgaXMgZnVuY3Rpb24gMQo+ID4gb2YgQVJTIF9EU00sIHdoaWNoIHJlcXVpcmVzIGlucHV0cyBv ZiBhIHN0YXJ0IFNQQSBhbmQgYSBsZW5ndGggaW4KPiA+IGJ5dGVzLiBBZnRlciBrZXJuZWwgZ2l2 ZXMgdGhlIGlucHV0cywgdGhlIHNjcnViYmluZyBvZiB0aGUgc3BlY2lmaWVkCj4gPiBhcmVhIGlz IGRvbmUgYnkgdGhlIGhhcmR3YXJlIGFuZCBkb2VzIG5vdCByZXF1aXJlcyBhbnkgbWFwcGluZ3Mg aW4gT1MuCj4gCj4gPG5vZHM+Cj4gPiAKPiA+IEFueSBleGFtcGxlIG9mIHN1Y2ggT0VNIF9EU00g bWV0aG9kcz8KPiAKPiBJIGNhbid0IHRoaW5rIG9mIGFueSByaWdodCBub3cgLSBidXQgdGhhdCBp cyB0aGUgZGFuZ2VyIG9mIE9FTXMgLSB0aGV5Cj4gbWF5IGRlY2lkZSB0byBkbyBzb21ldGhpbmcg Li4gaWxsIGFkdmlzYWJsZS4gSGVuY2UgaGF2aW5nIGl0IHdvcmsKPiB0aGUgc2FtZSB3YXkgYXMg TGludXggaXMgd2hhdCB3ZSBzaG91bGQgc3RyaXZlIGZvci4KPiAKCkkgc2VlOiB0aG91Z2ggdGhl IGV2YWx1YXRpb24gaXRzZWxmIGRvZXMgbm90IHVzZSBhbnkgc29mdHdhcmUKbWFpbnRhaW5lZCBt YXBwaW5ncywgdGhlIGRyaXZlciBtYXkgdXNlIHdoZW4gaGFuZGxpbmcgdGhlIHJlc3VsdCBvZgpl dmFsdWF0aW9uLCBlLmcuIEFSUyBfRFNNIHJlcG9ydHMgYmFkIGJsb2NrcyBpbiB0aGUgcmVzZXJ2 ZWQgYXJlYSBhbmQKdGhlIGRyaXZlciBtYXkgdGhlbiBoYXZlIHRvIGFjY2VzcyB0aGUgcmVzZXJ2 ZWQgYXJlYSAodGhvdWdoIHRoaXMKY291bGQgbmV2ZXIgaGFwcGVuIGluIHRoZSBjdXJyZW50IGtl cm5lbCBiZWNhdXNlIHRoZSBkcml2ZXIgZG9lcyBBUlMKYmVmb3JlIHJlc2VydmF0aW9uKS4KCkN1 cnJlbnRseSB0aGVyZSBpcyBubyBPRU0gX0RTTSBzdXBwb3J0IGluIGxpbnV4IGtlcm5lbCwgc28g SSBjYW5ub3QKdGhpbmsgb2YgYW55IHNvbHV0aW9uLiBIb3dldmVyLCBpZiBzdWNoIGFuIE9FTSBf RFNNIGNvbWVzLCB3ZSBtYXkgYWRkCnhlbiBzcGVjaWZpYyBoYW5kbGluZyB0byB0aGUgZHJpdmVy IG9yIGludHJvZHVjZSBhIHdheSBpbiBudmRpbW0KZHJpdmVyIGZyYW1ld29yayB0byBhdm9pZCBh Y2Nlc3NpbmcgdGhlIHJlc2VydmVkIGFyZWEgaW4gY2VydGFpbgpjaXJjdW1zdGFuY2VzIChlLmcu IHdoZW4gdXNlZCBpbiB4ZW4gZG9tMCkuCgpUaGFua3MsCkhhb3pob25nCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK