From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Huang, Kai" Subject: Re: [RFC PATCH 00/15] RFC: SGX virtualization design and draft patches Date: Tue, 18 Jul 2017 20:22:55 +1200 Message-ID: <9db78ec7-a7d1-3b78-02e2-99a1a468a835@linux.intel.com> References: <20170717091635.fkcgc4e5of6m5axj@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170717091635.fkcgc4e5of6m5axj@citrix.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Wei Liu , Kai Huang Cc: kevin.tian@intel.com, sstabellini@kernel.org, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, tim@xen.org, xen-devel@lists.xen.org, jbeulich@suse.com, ian.jackson@eu.citrix.com List-Id: xen-devel@lists.xenproject.org SGkgV2VpLAoKVGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgY29tbWVudHMuIFBsZWFzZSBzZWUgbXkg cmVwbHkgYmVsb3cuCgpPbiA3LzE3LzIwMTcgOToxNiBQTSwgV2VpIExpdSB3cm90ZToKPiBIaSBL YWkKPiAKPiBUaGFua3MgZm9yIHRoaXMgbmljZSB3cml0ZS11cC4KPiAKPiBTb21lIGNvbW1lbnRz IGFuZCBxdWVzdGlvbnMgYmVsb3cuCj4gCj4gT24gU3VuLCBKdWwgMDksIDIwMTcgYXQgMDg6MDM6 MTBQTSArMTIwMCwgS2FpIEh1YW5nIHdyb3RlOgo+PiBIaSBhbGwsCj4+Cj4gWy4uLl0KPj4gMi4g U0dYIFZpcnR1YWxpemF0aW9uIERlc2lnbgo+Pgo+PiAyLjEgSGlnaCBMZXZlbCBUb29sc3RhY2sg Q2hhbmdlczoKPj4KPj4gMi4xLjEgTmV3ICdlcGMnIHBhcmFtZXRlcgo+Pgo+PiBFUEMgaXMgbGlt aXRlZCByZXNvdXJjZS4gSW4gb3JkZXIgdG8gdXNlIEVQQyBlZmZpY2llbnRseSBhbW9uZyBhbGwg ZG9tYWlucywKPj4gd2hlbiBjcmVhdGluZyBndWVzdCwgYWRtaW5pc3RyYXRvciBzaG91bGQgYmUg YWJsZSB0byBzcGVjaWZ5IGRvbWFpbidzIHZpcnR1YWwKPj4gRVBDIHNpemUuIEFuZCBhZG1pbgo+ PiBhbGFvIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhbGwgZG9tYWluJ3MgdmlydHVhbCBFUEMgc2l6 ZS4KPj4KPj4gRm9yIHRoaXMgcHVycG9zZSwgYSBuZXcgJ2VwYyA9IDxzaXplPicgcGFyYW1ldGVy IGlzIGFkZGVkIHRvIFhMIGNvbmZpZ3VyYXRpb24KPj4gZmlsZS4gVGhpcyBwYXJhbWV0ZXIgc3Bl Y2lmaWVzIGd1ZXN0J3MgdmlydHVhbCBFUEMgc2l6ZS4gVGhlIEVQQyBiYXNlIGFkZHJlc3MKPj4g d2lsbCBiZSBjYWxjdWxhdGVkIGJ5IHRvb2xzdGFjayBpbnRlcm5hbGx5LCBhY2NvcmRpbmcgdG8g Z3Vlc3QncyBtZW1vcnkgc2l6ZSwKPj4gTU1JTyBzaXplLCBldGMuICdlcGMnIGlzIE1CIGluIHVu aXQgYW5kIGFueSAxTUIgYWxpZ25lZCB2YWx1ZSB3aWxsIGJlIGFjY2VwdGVkLgo+Pgo+PiAyLjEu MiBOZXcgWEwgY29tbWFuZHMgKD8pCj4+Cj4+IEFkbWluaXN0cmF0b3Igc2hvdWxkIGJlIGFibGUg dG8gZ2V0IHBoeXNpY2FsIEVQQyBzaXplLCBhbmQgYWxsIGRvbWFpbidzIHZpcnR1YWwKPj4gRVBD IHNpemUuIEZvciB0aGlzIHB1cnBvc2UsIHdlIGNhbiBpbnRyb2R1Y2UgMiBhZGRpdGlvbmFsIGNv bW1hbmRzOgo+Pgo+PiAgICAgICMgeGwgc2d4aW5mbwo+Pgo+PiBXaGljaCB3aWxsIHByaW50IG91 dCBwaHlzaWNhbCBFUEMgc2l6ZSwgYW5kIG90aGVyIFNHWCBpbmZvIChzdWNoIGFzIFNHWDEsIFNH WDIsCj4+IGV0YykgaWYgbmVjZXNzYXJ5Lgo+Pgo+PiAgICAgICMgeGwgc2d4bGlzdCA8ZGlkPgo+ Pgo+PiBXaGljaCB3aWxsIHByaW50IG91dCBwYXJ0aWN1bGFyIGRvbWFpbidzIHZpcnR1YWwgRVBD IHNpemUsIG9yIGxpc3QgYWxsIHZpcnR1YWwKPj4gRVBDIHNpemVzIGZvciBhbGwgc3VwcG9ydGVk IGRvbWFpbnMuCj4+Cj4+IEFsdGVybmF0aXZlbHksIHdlIGNhbiBhbHNvIGV4dGVuZCBleGlzdGlu ZyBYTCBjb21tYW5kcyBieSBhZGRpbmcgbmV3IG9wdGlvbgo+Pgo+PiAgICAgICMgeGwgaW5mbyAt c2d4Cj4+Cj4+IFdoaWNoIHdpbGwgcHJpbnQgb3V0IHBoeXNpY2FsIEVQQyBzaXplIGFsb25nIHdp dGggb3RoZXIgcGh5c2luZm8uIEFuZAo+Pgo+PiAgICAgICMgeGwgbGlzdCA8ZGlkPiAtc2d4Cj4+ Cj4+IFdoaWNoIHdpbGwgcHJpbnQgb3V0IGRvbWFpbidzIHZpcnR1YWwgRVBDIHNpemUuCj4+Cj4+ IENvbW1lbnRzPwo+Pgo+IAo+IENhbiBhIGd1ZXN0IGhhdmUgbXVsdGlwbGUgRVBDPyBJZiBzbywg dGhlIHByb3Bvc2VkIHBhcmFtZXRlciBpcyBub3QgZ29vZAo+IGVub3VnaC4KCkFjY29yZGluZyB0 byBTRE0gYSBtYWNoaW5lIG1heSBoYXZlIG11bHRpcGxlIEVQQywgYnV0IGl0IG1heSBoYXZlIApk b2Vzbid0IG1lYW4gaXQgbXVzdCBoYXZlLiBFUEMgaXMgdHlwaWNhbGx5IHJlc2VydmVkIGJ5IEJJ T1MgYXMgClByb2Nlc3NvciBSZXNlcnZlZCBNZW1vcnkgKFBSTSksIGFuZCBpbiBteSB1bmRlcnN0 YW5kaW5nLCBjbGllbnQgbWFjaGluZSAKICBkb2Vzbid0IG5lZWQgdG8gaGF2ZSBtdWx0aXBsZSBF UEMuIEN1cnJlbnRseSwgSSBkb24ndCBzZWUgd2h5IHdlIG5lZWQgCnRvIGV4cG9zZSBtdWx0aXBs ZSBFUEMgdG8gZ3Vlc3QuIEV2ZW4gcGh5c2ljYWwgbWFjaGluZSByZXBvcnRzIG11bHRpcGxlIApF UEMsIGV4cG9zaW5nIG9uZSBFUEMgdG8gZ3Vlc3QgaXMgZW5vdWdoLiBDdXJyZW50bHkgU0dYIHNo b3VsZCBub3QgYmUgCnN1cHBvcnRlZCB3aXRoIHZpcnR1YWwgTlVNQSBzaW11bHRhbmVvdXNseSBm b3IgYSBzaW5nbGUgZG9tYWluLgoKPiAKPiBDYW4gYSBndWVzdCB3aXRoIEVQQyBlbmFibGVkIGJl IG1pZ3JhdGVkPyBUaGUgYW5zd2VyIHRvIHRoaXMgcXVlc3Rpb24KPiBjYW4gbGVhZCB0byBtdWx0 aXBsZSBvdGhlciBxdWVzdGlvbnMuCgpTZWUgdGhlIGxhc3Qgc2VjdGlvbiBvZiBteSBkZXNpZ24u IEkgc2F3IHlvdSd2ZSBhbHJlYWR5IHNlZW4gaXQuIDopCgo+IAo+IEFub3RoZXIgcXVlc3Rpb24s IGlzIEVQQyBnb2luZyB0byBiZSBiYWNrZWQgYnkgbm9ybWFsIG1lbW9yeT8gVGhpcyBpcwo+IHJl bGF0ZWQgdG8gbWVtb3J5IGFjY291bnRpbmcgb2YgdGhlIGd1ZXN0LgoKQWx0aG91Z2ggU0RNIHNh eXMgdHlwaWNhbGx5IEVQQyBpcyBhbGxvY2F0ZWQgYnkgQklPUyBhcyBQUk0sIGJ1dCBJIHRoaW5r IAp3ZSBjYW4ganVzdCB0cmVhdCBFUEMgYXMgUFJNLCBzbyBJIGJlbGlldmUgeWVzLCBwaHlzaWNh bGx5IEVQQyBpcyBiYWNrZWQgCmJ5IG5vcm1hbCBtZW1vcnkuIEJ1dCBFUEMgaXMgcmVwb3J0ZWQg YXMgcmVzZXJ2ZWQgbWVtb3J5IGluIGU4MjAgdGFibGUuCgo+IAo+IElzIEVQQyBnb2luZyB0byBi ZSBtb2RlbGVkIGFzIGEgZGV2aWNlIG9yIGFub3RoZXIgdHlwZSBvZiBtZW1vcnk/IFRoaXMKPiBp cyByZWxhdGVkIHRvIGhvdyB3ZSBtYW5hZ2UgaXQgaW4gdGhlIHRvb2xzdGFjay4KCkkgdGhpbmsg d2UnZCBiZXR0ZXIgdG8gdHJlYXQgRVBDIGFzIGFub3RoZXIgdHlwZSBvZiBtZW1vcnkuIEkgYW0g bm90IApzdXJlIHdoZXRoZXIgaXQgc2hvdWxkIGJlIG1vZGVsZWQgYXMgZGV2aWNlLCBhcyBvbiBy ZWFsIG1hY2hpbmUsIEVQQyBpcyAKYWxzbyBleHBvc2VkIGluIEFDUEkgdGFibGUgdmlhICJJTlQw RTBDIiBkZXZpY2UgdW5kZXIgXF9TQiAoaG93ZXZlciBpdCAKaXMgbm90IG1vZGVsZWQgYXMgUENJ RSBkZXZpY2UgZm9yIHN1cmUpLgoKPiAKPiBGaW5hbGx5IHdoeSBkbyB5b3Ugbm90IGFsbG93IHRo ZSB1c2VycyB0byBzcGVjaWZ5IHRoZSBiYXNlIGFkZHJlc3M/CgpJIGRvbid0IHNlZSBhbnkgcmVh c29uIHdoeSB1c2VyIG5lZWRzIHRvIHNwZWNpZnkgYmFzZSBhZGRyZXNzLiBJZiB3ZSBkbywgCnRo ZW4gc3BlY2lmeSB3aGF0IGFkZHJlc3M/IE9uIHJlYWwgbWFjaGluZSwgQklPUyBzZXQgdGhlIGJh c2UgYWRkcmVzcywgCmFuZCBmb3IgVk0sIEkgdGhpbmsgdG9vbHN0YWNrL1hlbiBzaG91bGQgZG8g dGhpcy4KCj4gCj4+IEluIG15IFJGQyBwYXRjaGVzIEkgZGlkbid0IGltcGxlbWVudCB0aGUgY29t bWFuZHMgYXMgSSBkb24ndCBrbm93IHdoaWNoCj4+IGlzIGJldHRlci4gSW4gdGhlIGdpdGh1YiBy ZXBvIEkgbWVudGlvbmVkIGF0IHRoZSBiZWdpbm5pbmcsIHRoZXJlJ3MgYW4gb2xkCj4+IGJyYW5j aCBpbiB3aGljaCBJIGltcGxlbWVudGVkICd4bCBzZ3hpbmZvJyBhbmQgJ3hsIHNneGxpc3QnLCBi dXQgdGhleSBhcmUKPj4gaW1wbGVtZW50ZWQgdmlhIGRlZGljYXRlZCBoeXBlcmNhbGwgZm9yIFNH WCwgd2hpY2ggSSBhbSBub3Qgc3VyZSB3aGV0aGVyIGlzIGEKPj4gZ29vZCBvcHRpb24gc28gSSBk aWRuJ3QgaW5jbHVkZSBpdCBpbiBteSBSRkMgcGF0Y2hlcy4KPj4KPj4gMi4xLjMgTm90aWZ5IGRv bWFpbidzIHZpcnR1YWwgRVBDIGJhc2UgYW5kIHNpemUgdG8gWGVuCj4+Cj4+IFhlbiBuZWVkcyB0 byBrbm93IGd1ZXN0J3MgRVBDIGJhc2UgYW5kIHNpemUgaW4gb3JkZXIgdG8gcG9wdWxhdGUgRVBD IHBhZ2VzIGZvcgo+PiBpdC4gVG9vbHN0YWNrIG5vdGlmaWVzIEVQQyBiYXNlIGFuZCBzaXplIHRv IFhlbiB2aWEgWEVOX0RPTUNUTF9zZXRfY3B1aWQuCj4+Cj4+IDIuMS40IExhdW5jaCBDb250cm9s IFN1cHBvcnQgKD8pCj4gWy4uLl0KPj4KPj4gQnV0IG1heWJlIGludGVncmF0aW5nIEVQQyB0byBN TSBmcmFtZXdvcmsgaXMgbW9yZSByZWFzb25hYmxlLiBDb21tZW50cz8KPj4KPj4gMi4yLjIgRVBD IFZpcnR1YWxpemF0aW9uICg/KQo+Pgo+PiBUaGlzIHBhcnQgaXMgaG93IHRvIHBvcHVsYXRlIEVQ QyBmb3IgZ3Vlc3RzLiBXZSBoYXZlIDMgY2hvaWNlczoKPj4gICAgICAtIFN0YXRpYyBQYXJ0aXRp b25pbmcKPj4gICAgICAtIE92ZXJzdWJzY3JpcHRpb24KPj4gICAgICAtIEJhbGxvb25pbmcKPj4K PiAKPiBJTUhPIHN0YXRpYyBwYXJ0aXRpb25pbmcgaXMgZ29vZCBlbm91Z2ggYXMgYSBzdGFydGlu ZyBwb2ludC4KPiAKPiBCYWxsb29uaW5nIGlzIG5pY2UgdG8gaGF2ZSBidXQgcGxlYXNlIGRvbid0 IG1ha2UgaXQgbWFuZGF0b3J5LiBOb3QgYWxsCj4gZ3Vlc3RzIGhhdmUgYmFsbG9vbiBkcml2ZXIg LS0gaW1hZ2luZSBhIHVuaWtlcm5lbCBzdHlsZSBzZWN1cmUgZG9tYWluCj4gcnVubmluZyB3aXRo IEVQQy4KClRoYXQncyBnb29kIHBvaW50LiBUaGFua3MuCj4gCj4gCj4+Cj4+IDIuMyBBZGRpdGlv bmFsIFBvaW50OiBMaXZlIE1pZ3JhdGlvbiwgU25hcHNob3QgU3VwcG9ydCAoPykKPj4KPiAKPiBP aCwgaGVyZSBpdCBpcy4gTmljZS4KPiAKPj4gQWN0dWFsbHkgZnJvbSBoYXJkd2FyZSdzIHBvaW50 IG9mIHZpZXcsIFNHWCBpcyBub3QgbWlncmF0YWJsZS4gVGhlcmUgYXJlIHR3bwo+PiByZWFzb25z Ogo+Pgo+PiAgICAgIC0gU0dYIGtleSBhcmNoaXRlY3R1cmUgY2Fubm90IGJlIHZpcnR1YWxpemVk Lgo+Pgo+PiAgICAgIEZvciBleGFtcGxlLCBzb21lIGtleXMgYXJlIGJvdW5kIHRvIENQVS4gRm9y IGV4YW1wbGUsIFNlYWxpbmcga2V5LCBFUkVQT1JUCj4+ICAgICAga2V5LCBldGMuIElmIFZNIGlz IG1pZ3JhdGVkIHRvIGFub3RoZXIgbWFjaGluZSwgdGhlIHNhbWUgZW5jbGF2ZSB3aWxsIGRlcml2 ZQo+PiAgICAgIHRoZSBkaWZmZXJlbnQga2V5cy4gVGFraW5nIFNlYWxpbmcga2V5IGFzIGFuIGV4 YW1wbGUsIFNlYWxpbmcga2V5IGlzCj4+ICAgICAgdHlwaWNhbGx5IHVzZWQgYnkgZW5jbGF2ZSAo ZW5jbGF2ZSBjYW4gZ2V0IHNlYWxpbmcga2V5IGJ5IEVHRVRLRVkpIHRvICpzZWFsKgo+PiAgICAg IGl0cyBzZWNyZXRzIHRvIG91dHNpZGUgKGV4LCBwZXJzaXN0ZW50IHN0b3JhZ2UpIGZvciBmdXJ0 aGVyIHVzZS4gSWYgU2VhbGluZwo+PiAgICAgIGtleSBjaGFuZ2VzIGFmdGVyIFZNIG1pZ3JhdGlv biwgdGhlbiB0aGUgZW5jbGF2ZSBjYW4gbmV2ZXIgZ2V0IHRoZSBzZWFsZWQKPj4gICAgICBzZWNy ZXRzIGJhY2sgYnkgdXNpbmcgc2VhbGluZyBrZXksIGFzIGl0IGhhcyBjaGFuZ2VkLCBhbmQgb2xk IHNlYWxpbmcga2V5Cj4+ICAgICAgY2Fubm90IGJlIGdvdCBiYWNrLgo+Pgo+PiAgICAgIC0gVGhl cmUncyBubyBFTkNMUyB0byBldmljdCBFUEMgcGFnZSB0byBub3JtYWwgbWVtb3J5LCBidXQgYXQg dGhlIG1lYW5pbmcKPj4gICAgICB0aW1lLCBzdGlsbCBrZWVwIGNvbnRlbnQgaW4gRVBDLiBDdXJy ZW50bHkgb25jZSBFUEMgcGFnZSBpcyBldmljdGVkLCB0aGUgRVBDCj4+ICAgICAgcGFnZSBiZWNv bWVzIGludmFsaWQuIFNvIHRlY2huaWNhbGx5LCB3ZSBhcmUgdW5hYmxlIHRvIGltcGxlbWVudCBs aXZlCj4+ICAgICAgbWlncmF0aW9uIChvciBjaGVjayBwb2ludGluZywgb3Igc25hcHNob3QpIGZv ciBlbmNsYXZlLgo+Pgo+PiBCdXQsIHdpdGggc29tZSB3b3JrYXJvdW5kLCBhbmQgc29tZSBmYWN0 cyBvZiBleGlzdGluZyBTR1ggZHJpdmVyLCB0ZWNobmljYWxseQo+PiB3ZSBhcmUgYWJsZSB0byBz dXBwb3J0IExpdmUgbWlncmF0aW9uIChvciBldmVuIGNoZWNrIHBvaW50aW5nLCBzbmFwc2hvdCku IFRoaXMKPj4gaXMgYmVjYXVzZToKPj4KPj4gICAgICAtIENoYW5naW5nIGtleSAod2hpY2ggaXMg Ym91bmQgdG8gQ1BVKSBpcyBub3QgYSBwcm9ibGVtIGluIHJlYWxpdHkKPj4KPj4gICAgICBUYWtl IFNlYWxpbmcga2V5IGFzIGFuIGV4YW1wbGUuIExvc2luZyBzZWFsZWQgZGF0YSBpcyBub3QgYSBw cm9ibGVtLCBiZWNhdXNlCj4+ICAgICAgc2VhbGluZyBrZXkgaXMgb25seSBzdXBwb3NlZCB0byBl bmNyeXB0IHNlY3JldHMgdGhhdCBjYW4gYmUgcHJvdmlzaW9uZWQKPj4gICAgICBhZ2Fpbi4gVGhl IHR5cGljYWwgd29yayBtb2RlbCBpcywgZW5jbGF2ZSBnZXRzIHNlY3JldHMgcHJvdmlzaW9uZWQg ZnJvbQo+PiAgICAgIHJlbW90ZSAoc2VydmljZSBwcm92aWRlciksIGFuZCB1c2Ugc2VhbGluZyBr ZXkgdG8gc3RvcmUgaXQgZm9yIGZ1cnRoZXIgdXNlLgo+PiAgICAgIFdoZW4gZW5jbGF2ZSB0cmll cyB0byAqdW5zZWFsKiB1c2Ugc2VhbGluZyBrZXksIGlmIHRoZSBzZWFsaW5nIGtleSBpcwo+PiAg ICAgIGNoYW5nZWQsIGVuY2xhdmUgd2lsbCBmaW5kIHRoZSBkYXRhIGlzIHNvbWUga2luZCBvZiBj b3JydXB0ZWQgKGludGVncml0eQo+PiAgICAgIGNoZWNrIGZhaWx1cmUpLCBzbyBpdCB3aWxsIGFz ayBzZWNyZXRzIHRvIGJlIHByb3Zpc2lvbmVkIGFnYWluIGZyb20gcmVtb3RlLgo+PiAgICAgIEFu b3RoZXIgcmVhc29uIGlzLCBpbiBkYXRhIGNlbnRlciwgVk0ncyB0eXBpY2FsbHkgc2hhcmUgbG90 cyBvZiBkYXRhLCBhbmQgYXMKPj4gICAgICBzZWFsaW5nIGtleSBpcyBib3VuZCB0byBDUFUsIGl0 IG1lYW5zIHRoZSBkYXRhIGVuY3J5cHRlZCBieSBvbmUgZW5jbGF2ZSBvbgo+PiAgICAgIG9uZSBt YWNoaW5lIGNhbm5vdCBiZSBzaGFyZWQgYnkgYW5vdGhlciBlbmNsYXZlIG9uIGFub3RoZXIgbWFo Y2luZS4gU28gZnJvbQo+PiAgICAgIFNHWCBhcHAgd3JpdGVyJ3MgcG9pbnQgb2YgdmlldywgZGV2 ZWxvcGVyIHNob3VsZCB0cmVhdCBTZWFsaW5nIGtleSBhcyBhCj4+ICAgICAgY2hhbmdlYWJsZSBr ZXksIGFuZCBzaG91bGQgaGFuZGxlIGxvc2Ugb2Ygc2VhbGluZyBkYXRhIGFueXdheS4gU2VhbGlu ZyBrZXkKPj4gICAgICBzaG91bGQgb25seSBiZSB1c2VkIHRvIHNlYWwgc2VjcmV0cyB0aGF0IGNh biBiZSBlYXNpbHkgcHJvdmlzaW9uZWQgYWdhaW4uCj4+Cj4+ICAgICAgRm9yIG90aGVyIGtleXMg c3VjaCBhcyBFUkVQT1JUIGtleSBhbmQgcHJvdmlzaW9uaW5nIGtleSwgd2hpY2ggYXJlIHVzZWQg Zm9yCj4+ICAgICAgbG9jYWwgYXR0ZXN0YXRpb24gYW5kIHJlbW90ZSBhdHRlc3RhdGlvbiwgZHVl IHRvIHRoZSBzZWNvbmQgcmVhc29uIGJlbG93LAo+PiAgICAgIGxvc2luZyB0aGVtIGlzIG5vdCBh IHByb2JsZW0gZWl0aGVyLgo+Pgo+PiAgICAgIC0gU3VkZGVuIGxvc2Ugb2YgRVBDIGlzIG5vdCBh IHByb2JsZW0uCj4+Cj4+ICAgICAgT24gaGFyZHdhcmUsIEVQQyB3aWxsIGJlIGxvc3QgaWYgc3lz dGVtIGdvZXMgdG8gUzMtUzUsIG9yIHJlc2V0LCBvcgo+PiAgICAgIHNodXRkb3duLCBhbmQgU0dY IGRyaXZlciBuZWVkIHRvIGhhbmRsZSBsb3NlIG9mIEVQQyBkdWUgdG8gcG93ZXIgdHJhbnNpdGlv bi4KPj4gICAgICBUaGlzIGlzIGRvbmUgYnkgY29vcGVyYXRpb24gYmV0d2VlbiBTR1ggZHJpdmVy IGFuZCB1c2Vyc3BhY2UgU0dYIFNESy9hcHBzLgo+PiAgICAgIEhvd2V2ZXIgZHVyaW5nIGxpdmUg bWlncmF0aW9uLCB0aGVyZSBtYXkgbm90IGJlIHBvd2VyIHRyYW5zaXRpb24gaW4gZ3Vlc3QsCj4+ ICAgICAgc28gdGhlcmUgbWF5IG5vdCBiZSBFUEMgbG9zZSBkdXJpbmcgbGl2ZSBtaWdyYXRpb24u IEFuZCB0ZWNobmljYWxseSB3ZQo+PiAgICAgIGNhbm5vdCAqcmVhbGx5KiBsaXZlIG1pZ3JhdGUg ZW5jbGF2ZSAoZXhwbGFpbmVkIGFib3ZlKSwgc28gbG9va3MgaXQncyBub3QKPj4gICAgICBmZWFz aWJsZS4gQnV0IHRoZSBmYWN0IGlzIHRoYXQgYm90aCBMaW51eCBTR1ggZHJpdmVyIGFuZCBXaW5k b3dzIFNHWCBkcml2ZXIKPj4gICAgICBoYXZlIGFscmVhZHkgc3VwcG9ydGVkICpzdWRkZW4qIGxv c2Ugb2YgRVBDIChub3QgRVBDIGxvc2UgZHVyaW5nIHBvd2VyCj4+ICAgICAgdHJhbnNpdGlvbiks IHdoaWNoIG1lYW5zIGJvdGggZHJpdmVyIGFyZSBhYmxlIHRvIHJlY292ZXIgaW4gY2FzZSBFUEMg aXMgbG9zdAo+PiAgICAgIGF0IGFueSBydW50aW1lLiBXaXRoIHRoaXMsIHRlY2huaWNhbGx5IHdl IGFyZSBhYmxlIHRvIHN1cHBvcnQgbGl2ZSBtaWdyYXRpb24KPj4gICAgICBieSBzaW1wbHkgaWdu b3JpbmcgRVBDLiBBZnRlciBWTSBpcyBtaWdyYXRlZCwgdGhlIGRlc3RpbmF0aW9uIFZNIHdpbGwg b25seQo+PiAgICAgIHN1ZmZlciAqc3VkZGVuKiBsb3NlIG9mIEVQQywgd2hpY2ggYm90aCBXaW5k b3dzIFNHWCBkcml2ZXIgYW5kIExpbnV4IFNHWAo+PiAgICAgIGRyaXZlciBhcmUgYWxyZWFkeSBh YmxlIHRvIGhhbmRsZS4KPj4KPj4gICAgICBCdXQgd2UgbXVzdCBwb2ludCBvdXQgc3VjaCAqc3Vk ZGVuKiBsb3NlIG9mIEVQQyBpcyBub3QgaGFyZHdhcmUgYmVoYXZpb3IsCj4+ICAgICAgYW5kIG90 aGVyIFNHWCBkcml2ZXIgZm9yIG90aGVyIE9TZXMgKHN1Y2ggYXMgRnJlZUJTRCkgbWF5IG5vdCBp bXBsZW1lbnQKPj4gICAgICB0aGlzLCBzbyBmb3IgdGhvc2UgZ3Vlc3RzLCBkZXN0aW5hdGlvbiBW TSB3aWxsIGJlaGF2aW9yIGluIHVuZXhwZWN0ZWQKPj4gICAgICBtYW5uZXIuIEJ1dCBJIGFtIG5v dCBzdXJlIHdlIG5lZWQgdG8gY2FyZSBhYm91dCBvdGhlciBPU2VzLgo+IAo+IFByZXN1bWFibHkg aXQgd291bGRuJ3QgYmUgdG9vIGhhcmQgZm9yIEZyZWVCU0QgdG8gcmVwbGljYXRlIHRoZQo+IGJl aGF2aW91ciBvZiBMaW51eCBhbmQgV2luZG93cy4KClRoZSBwcm9ibGVtIGlzIHRoaXMgaXMgbm90 IGhhcmR3YXJlIGJlaGF2aW9yLiBJZiBGcmVlQlNEIGd1eXMganVzdCBsb29rIAphdCB0aGUgU0RN IHRoZW4gdGhleSBtYXkgbm90IGV4cGVjdCBzdWNoIHN1ZGRlbiBsb3NlIG9mIEVQQy4gQnV0IEkg Z3Vlc3MgCm1heWJlIHRoZXkgd2lsbCBqdXN0IHBvcnQgZXhpc3RpbmcgZHJpdmVyLiA6KQoKPiAK Pj4KPj4gRm9yIHRoZSBzYW1lIHJlYXNvbiwgd2UgYXJlIGFibGUgdG8gc3VwcG9ydCBjaGVjayBw b2ludGluZyBmb3IgU0dYIGd1ZXN0IChvbmx5Cj4+IExpbnV4IGFuZCBXaW5kb3dzKTsKPj4KPj4g Rm9yIHNuYXBzaG90LCB3ZSBjYW4gc3VwcG9ydCBzbmFwc2hvdCBTR1ggZ3Vlc3QgYnkgZWl0aGVy Ogo+Pgo+PiAgICAgIC0gU3VzcGVuZCBndWVzdCBiZWZvcmUgc25hcHNob3QgKHMzLXM1KS4gVGhp cyB3b3JrcyBmb3IgYWxsIGd1ZXN0cyBidXQKPj4gICAgICAgIHJlcXVpcmVzIHVzZXIgdG8gbWFu dWFsbHkgc3VzcHBlbmQgZ3Vlc3QuCj4+ICAgICAgLSBJc3N1ZSBhbiBoeXBlcmNhbGwgdG8gZGVz dHJveSBndWVzdCdzIEVQQyBpbiBzYXZlX3ZtLiBUaGlzIG9ubHkgd29ya3MgZm9yCj4+ICAgICAg ICBMaW51eCBhbmQgV2luZG93cyBidXQgZG9lc24ndCByZXF1aXJlIHVzZXIgaW50ZXJ2ZW50aW9u Lgo+Pgo+PiBXaGF0J3MgeW91ciBjb21tZW50cz8KPj4KPiAKPiBJTUhPIGl0IGlzIG9mIGNvdXJz ZSBnb29kIHRvIGhhdmUgbWlncmF0aW9uIGFuZCBzbmFwc2hvdCBzdXBwb3J0IGZvcgo+IHN1Y2gg Z3Vlc3RzLgoKVGhhbmtzLiBJIGhhdmUgbm8gcHJvYmxlbSBzdXBwb3J0aW5nIG1pZ3JhdGlvbiBh bmQgc25hcHNob3QgaWYgbm8gb25lIApvcHBvc2VzLgoKVGhhbmtzLAotS2FpCgo+IAo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gWGVuLWRldmVsIG1h aWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==