From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH v2 2/3] x86/ioreq server: Rename p2m_mmio_write_dm to p2m_ioreq_server Date: Thu, 21 Apr 2016 15:09:28 +0100 Message-ID: <5718DF18.3010405@citrix.com> References: <1459421618-5991-1-git-send-email-yu.c.zhang@linux.intel.com> <1459421618-5991-3-git-send-email-yu.c.zhang@linux.intel.com> <5708353102000078000E6230@prv-mh.provo.novell.com> <23c213a00ea94cd79feb6cc10e8da74d@AMSPEX02CL03.citrite.net> <57151BF602000078000E6C07@prv-mh.provo.novell.com> <57151DB002000078000E6C1E@prv-mh.provo.novell.com> <08ff255731b84b07bd71e6090c0fa51d@AMSPEX02CL03.citrite.net> <57161058.7060000@linux.intel.com> <57179A01.2060004@citrix.com> <5717C1E102000078000E6F5C@prv-mh.provo.novell.com> <8397b530c70549e9a1a261ab6fb55b5f@AMSPEX02CL03.citrite.net> <5717B729.4080108@citrix.com> <4787cc47-3652-cb9a-bf60-f2a8b3fe9df9@linux.intel.com> <45e6108d-c374-e7fc-b266-b3a59ca9170e@linux.intel.com> <1ba79ba4e2df40b09c40d2f83e12d5c2@AMSPEX02CL03.citrite.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1ba79ba4e2df40b09c40d2f83e12d5c2@AMSPEX02CL03.citrite.net> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Paul Durrant , "Yu, Zhang" , Jan Beulich , Wei Liu Cc: Kevin Tian , "Keir (Xen.org)" , Andrew Cooper , "Tim (Xen.org)" , "xen-devel@lists.xen.org" , "zhiyuan.lv@intel.com" , "jun.nakajima@intel.com" List-Id: xen-devel@lists.xenproject.org T24gMjEvMDQvMTYgMTQ6NTYsIFBhdWwgRHVycmFudCB3cm90ZToKPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0KPj4gRnJvbTogWXUsIFpoYW5nIFttYWlsdG86eXUuYy56aGFuZ0BsaW51eC5p bnRlbC5jb21dCj4+IFNlbnQ6IDIxIEFwcmlsIDIwMTYgMTQ6NDkKPj4gVG86IFBhdWwgRHVycmFu dDsgR2VvcmdlIER1bmxhcDsgSmFuIEJldWxpY2g7IFdlaSBMaXUKPj4gQ2M6IEtldmluIFRpYW47 IEtlaXIgKFhlbi5vcmcpOyBBbmRyZXcgQ29vcGVyOyBUaW0gKFhlbi5vcmcpOyB4ZW4tCj4+IGRl dmVsQGxpc3RzLnhlbi5vcmc7IHpoaXl1YW4ubHZAaW50ZWwuY29tOyBqdW4ubmFrYWppbWFAaW50 ZWwuY29tCj4+IFN1YmplY3Q6IFJlOiBbWGVuLWRldmVsXSBbUEFUQ0ggdjIgMi8zXSB4ODYvaW9y ZXEgc2VydmVyOiBSZW5hbWUKPj4gcDJtX21taW9fd3JpdGVfZG0gdG8gcDJtX2lvcmVxX3NlcnZl cgo+Pgo+Pgo+Pgo+PiBPbiA0LzIxLzIwMTYgOTozMSBQTSwgUGF1bCBEdXJyYW50IHdyb3RlOgo+ Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+Pj4gRnJvbTogWXUsIFpoYW5nIFttYWls dG86eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb21dCj4+Pj4gU2VudDogMjEgQXByaWwgMjAxNiAx MzoyNQo+Pj4+IFRvOiBHZW9yZ2UgRHVubGFwOyBQYXVsIER1cnJhbnQ7IEphbiBCZXVsaWNoOyBX ZWkgTGl1Cj4+Pj4gQ2M6IEtldmluIFRpYW47IEtlaXIgKFhlbi5vcmcpOyBBbmRyZXcgQ29vcGVy OyBUaW0gKFhlbi5vcmcpOyB4ZW4tCj4+Pj4gZGV2ZWxAbGlzdHMueGVuLm9yZzsgemhpeXVhbi5s dkBpbnRlbC5jb207IGp1bi5uYWthamltYUBpbnRlbC5jb20KPj4+PiBTdWJqZWN0OiBSZTogW1hl bi1kZXZlbF0gW1BBVENIIHYyIDIvM10geDg2L2lvcmVxIHNlcnZlcjogUmVuYW1lCj4+Pj4gcDJt X21taW9fd3JpdGVfZG0gdG8gcDJtX2lvcmVxX3NlcnZlcgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+IE9u IDQvMjEvMjAxNiAxOjA2IEFNLCBHZW9yZ2UgRHVubGFwIHdyb3RlOgo+Pj4+PiBPbiAyMC8wNC8x NiAxNzo1OCwgUGF1bCBEdXJyYW50IHdyb3RlOgo+Pj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tCj4+Pj4+Pj4gRnJvbTogWGVuLWRldmVsIFttYWlsdG86eGVuLWRldmVsLWJvdW5jZXNA bGlzdHMueGVuLm9yZ10gT24gQmVoYWxmCj4+Pj4gT2YgSmFuCj4+Pj4+Pj4gQmV1bGljaAo+Pj4+ Pj4+IFNlbnQ6IDIwIEFwcmlsIDIwMTYgMTc6NTMKPj4+Pj4+PiBUbzogR2VvcmdlIER1bmxhcDsg UGF1bCBEdXJyYW50OyBXZWkgTGl1OyB5dS5jLnpoYW5nQGxpbnV4LmludGVsLmNvbQo+Pj4+Pj4+ IENjOiBLZXZpbiBUaWFuOyBLZWlyIChYZW4ub3JnKTsgQW5kcmV3IENvb3BlcjsgVGltIChYZW4u b3JnKTsgeGVuLQo+Pj4+Pj4+IGRldmVsQGxpc3RzLnhlbi5vcmc7IHpoaXl1YW4ubHZAaW50ZWwu Y29tOyBqdW4ubmFrYWppbWFAaW50ZWwuY29tCj4+Pj4+Pj4gU3ViamVjdDogUmU6IFtYZW4tZGV2 ZWxdIFtQQVRDSCB2MiAyLzNdIHg4Ni9pb3JlcSBzZXJ2ZXI6IFJlbmFtZQo+Pj4+Pj4+IHAybV9t bWlvX3dyaXRlX2RtIHRvIHAybV9pb3JlcV9zZXJ2ZXIKPj4+Pj4+Pgo+Pj4+Pj4+Pj4+IEdlb3Jn ZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4gMDQvMjAvMTYgNjozMCBQTQo+Pj4+ Pgo+Pj4+Pj4+PiBPbiBXZWQsIEFwciAyMCwgMjAxNiBhdCA0OjAyIFBNLCBHZW9yZ2UgRHVubGFw Cj4+Pj4+Pj4gPGdlb3JnZS5kdW5sYXBAY2l0cml4LmNvbT4gd3JvdGU6Cj4+Pj4+Pj4+PiBPbiAx OS8wNC8xNiAxMjowMiwgWXUsIFpoYW5nIHdyb3RlOgo+Pj4+Pj4+Pj4+IFNvIEkgc3VwcG9zZSB0 aGUgb25seSBwbGFjZSB3ZSBuZWVkIGNoYW5nZSBmb3IgdGhpcyBwYXRjaCBpcwo+Pj4+Pj4+Pj4+ IGZvciBodm1tZW1fdHlwZV90LCB3aGljaCBzaG91bGQgYmUgZGVmaW5lZCBsaWtlIHRoaXM/Cj4+ Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiB0eXBlZGVmIGVudW0gewo+Pj4+Pj4+Pj4+ICAgICBIVk1NRU1f cmFtX3J3LCAgICAgICAgICAgICAvKiBOb3JtYWwgcmVhZC93cml0ZSBndWVzdCBSQU0gKi8KPj4+ Pj4+Pj4+PiAgICAgSFZNTUVNX3JhbV9ybywgICAgICAgICAgICAgLyogUmVhZC1vbmx5OyB3cml0 ZXMgYXJlIGRpc2NhcmRlZCAqLwo+Pj4+Pj4+Pj4+ICAgICBIVk1NRU1fbW1pb19kbSwgICAgICAg ICAgICAvKiBSZWFkcyBhbmQgd3JpdGUgZ28gdG8gdGhlIGRldmljZQo+Pj4+Pj4+IG1vZGVsICov Cj4+Pj4+Pj4+Pj4gI2lmIF9fWEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPj0gMHgwMDA0MDcwMAo+ Pj4+Pj4+Pj4+ICAgICBIVk1NRU1faW9yZXFfc2VydmVyCj4+Pj4+Pj4+Pj4gI2Vsc2UKPj4+Pj4+ Pj4+PiAgICAgSFZNTUVNX21taW9fd3JpdGVfZG0KPj4+Pj4+Pj4+PiAjZW5kaWYKPj4+Pj4+Pj4+ PiB9IGh2bW1lbV90eXBlX3Q7Cj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+PiBCZXNpZGVzLCBkb2VzIDQu NyBzdGlsbCBhY2NlcHQgZnJlZXplIGV4Y2VwdGlvbj8gSXQgd291bGQgYmUgZ3JlYXQKPj4+Pj4+ Pj4+PiBpZiB3ZSBjYW4gZ2V0IGFuIGFwcHJvdmFsIGZvciB0aGlzLgo+Pj4+Pj4+Pj4KPj4+Pj4+ Pj4+IFdhaXQsIGRvIHdlICphY3R1YWxseSogbmVlZCB0aGlzPyAgSXMgYW55b25lIGFjdHVhbGx5 IHVzaW5nIHRoaXM/Cj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4gSSdkIHNheSByZW1vdmUgaXQsIGFuZCBp ZiBhbnlvbmUgY29tcGxhaW5zLCAqdGhlbiogZG8gdGhlCj4+ICNpZmRlZidlcnkKPj4+PiBhcwo+ Pj4+Pj4+Pj4gYSBidWctZml4LiAgSSdtIHByZXR0eSBzdXJlIHRoYXQncyBMaW51eCdzIHBvbGlj eSAtLSBZb3UgTXVzdCBLZWVwCj4+Pj4+Pj4+PiBVc2Vyc3BhY2UgV29ya2luZywgYnV0IHlvdSBj YW4gYnJlYWsgaXQgdG8gc2VlIGlmIGFueW9uZSBjb21wbGFpbnMKPj4+PiBmaXJzdC4KPj4+Pj4+ Pgo+Pj4+Pj4+IFdlIGRvbid0IG5vcm1hbGx5IGRvIGl0IGxpa2UgdGhhdCAtIHdlIGFpbSBhdCBr ZWVwaW5nIHRoaW5ncyBjb21wYXRpYmxlCj4+Pj4+Pj4gcmlnaHQgYXdheS4gSSBkb24ndCBrbm93 IG9mIGEgY2FzZSB3aGVyZSB3ZSB3b3VsZCBoYXZlIGtub3dpbmdseQo+Pj4+IGJyb2tlbgo+Pj4+ Pj4+IGNvbXBhdGliaWxpdHkgZm9yIHVzZXJzIG9mIHRoZSBwdWJsaWMgaGVhZGVycyAobGVhdmlu ZyBhc2lkZSB0b29sIHN0YWNrCj4+IG9ubHkKPj4+Pj4+PiBzdHVmZiBvZiBjb3Vyc2UpLgo+Pj4+ Pj4+Cj4+Pj4+Pj4+IEdvaW5nIGZ1cnRoZXIgdGhhbiB0aGlzOgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBU aGUgcHJvcG9zZWQgcGF0Y2ggc2VyaWVzIG5vdCBvbmx5IGNoYW5nZXMgdGhlIG5hbWUsIGl0IGNo YW5nZXMKPj4gdGhlCj4+Pj4+Pj4+IGZ1bmN0aW9uYWxpdHkuICBXZSBkbyBub3Qgd2FudCBjb2Rl IHRvICpjb21waWxlKiBhZ2FpbnN0IDQuNyBhbmQKPj4gdGhlbgo+Pj4+Pj4+PiBub3QgKndvcmsq IGFnYWluc3QgNC43OyBhbmQgdGhlIHdvcnN0IG9mIGFsbCBpcyB0byBjb21waWxlIGFuZCBzb3J0 IG9mCj4+Pj4+Pj4+IHdvcmsgYnV0IGRvIGl0IGluY29ycmVjdGx5Lgo+Pj4+Pj4+Cj4+Pj4+Pj4g SSBoYWQgdGhlIGltcHJlc3Npb24gdGhhdCB0aGUgcmVuYW1pbmcgcGF0Y2ggd2FzIHdoYXQgaXQg aXMgLSBhCj4+IHJlbmFtaW5nCj4+Pj4+Pj4gcGF0Y2gsIHdpdGhvdXQgYWx0ZXJpbmcgYmVoYXZp b3IuCj4+Pj4+Pj4KPj4+Pj4+Pj4gRG9lcyB0aGUgaW9yZXEgc2VydmVyIGhhdmUgYSB3YXkgb2Yg YXNraW5nIFhlbiB3aGF0IHZlcnNpb24gb2YgdGhlCj4+IEFCSQo+Pj4+Pj4+PiBpdCdzIHByb3Zp ZGluZz8gIEknbSBhc3N1bWluZyB0aGUgYW5zd2VyIGlzICJubyI7IGluIHdoaWNoIGNhc2UgY29k ZQo+Pj4+Pj4+PiB0aGF0IGlzIGNvbXBpbGVkIGFnYWluc3QgdGhlIDQuNiBpbnRlcmZhY2UgYnV0 IHJ1biBvbiBhIDQuOCBpbnRlcmZhY2UKPj4+Pj4+Pj4gdGhhdCBsb29rcyBsaWtlIHRoaXMgd2ls bCBmYWlsIGluIGEgc29tZXdoYXQgdW5wcmVkaWN0YWJsZSB3YXkuCj4+Pj4+Pj4KPj4+Pj4+PiBU aGUgb25seSB0aGluZyBpdCBjYW4gZG8gaXMgYXNrIGZvciB0aGUgWGVuIHZlcnNpb24uIFRoZSBB QkkgdmVyc2lvbiBpcwo+PiBub3QKPj4+Pj4+PiBiZWluZyByZXR1cm5lZCBieSBhbnl0aGluZyAo YnV0IHBlcmhhcHMgc2hvdWxkIGJlKS4KPj4+Pj4+Pgo+Pj4+Pj4+PiBHaXZlbiB0aGF0Ogo+Pj4+ Pj4+Pgo+Pj4+Pj4+PiAxLiBXaGVuIHdlIGRvIGNoZWNrIHRoZSBpb3JlcSBzZXJ2ZXIgZnVuY3Rp b25hbGl0eSBpbiwgd2hhdCdzIHRoZQo+Pj4+Pj4+PiBjb3JyZWN0IHdheSB0byBkZWFsIHdpdGgg Y29kZSB0aGF0IHdhbnRzIHRvIHVzZSB0aGUgb2xkIGludGVyZmFjZSwKPj4gYW5kCj4+Pj4+Pj4+ IHdoYXQgZG8gd2UgZG8gd2l0aCBjb2RlIGNvbXBpbGVkIGFnYWluc3QgdGhlIG9sZCBpbnRlcmZh Y2UgYnV0Cj4+Pj4gcnVubmluZwo+Pj4+Pj4+PiBvbiB0aGUgbmV3IG9uZT8KPj4+Pj4+Pgo+Pj4+ Pj4+IEZvciB0aGUgZnVsbCBzZXJpZXMgSSdtIG5vdCBzdXJlIEkgY2FuIHJlYWxseSB0ZWxsLkJ1 dCBhcyBzYWlkLCBmb3IgdGhlCj4+IHJlbmFtZQo+Pj4+Pj4+IHBhdGNoIGFsb25lIEkgdGhvdWdo dCBpdCBpcyBqdXN0IGEgcmVuYW1lLiBBbmQgdGhhdCdzIHdoYXQgd2Ugd2FudCB0bwo+PiBnZXQK Pj4+Pj4+PiBpbiAoc2VlIFBhdWwncyBlYXJsaWVyIHJlcGx5IC0gaGUgd2FudHMgdG8gc2VlIHRo ZSBvbGQgbmFtZSBnb25lLCBzbyBpdAo+Pj4+IHdvbid0Cj4+Pj4+Pj4gYmUgdXNlZCBhbnkgZnVy dGhlcikuCj4+Pj4+Pj4KPj4+Pj4+Pj4gMi4gV2hhdCdzIHRoZSBiZXN0IHRoaW5nIHRvIGRvIGZv ciB0aGlzIHJlbGVhc2U/Cj4+Pj4+Pj4KPj4+Pj4+PiBJZiB0aGUgZW50aXJlIHNlcmllcyAobm8g bWF0dGVyIHdoZXRoZXIgdG8gZ28gaW4gbm93IG9yIGxhdGVyKSBpcwo+PiBjaGFuZ2luZwo+Pj4+ Pj4+IGJlaGF2aW9yLCB0aGVuIHRoZSBvbmx5IGNob2ljZSBpcyB0byBjb25zaWRlciB0aGUgY3Vy cmVudGx5IHVzZWQgZW51bQo+Pj4+Pj4+IHZhbHVlIGJ1cm50LCBhbmQgdXNlIGEgZnJlc2ggb25l IGZvciB0aGUgbmV3IHNlbWFudGljcy4KPj4+Pj4+Cj4+Pj4+PiBJdCBzb3VuZHMgbGlrZSB0aGF0 IHdvdWxkIGJlIGJlc3Qgd2F5LiBJZiB3ZSBkb24ndCBzbyB0aGF0IHRoZW4gd2UgaGF2ZQo+PiB0 bwo+Pj4+IG1haW50YWluIHRoZSB3cml0ZS1kbSBzZW1hbnRpY3MgZm9yIHBhZ2VzIG9mIHRoYXQg dHlwZSB1bmxlc3MgdGhlIHR5cGUgaXMKPj4+PiBjbGFpbWVkIChieSB1c2luZyB0aGUgbmV3IGh5 cGVyY2FsbCkgYW5kIHRoYXQncyBiaXQgaWNreS4gSSBtdWNoIHByZWZlciB0aGF0Cj4+Pj4gcGFn ZXMgb2YgdGhlIG5ldyB0eXBlIGFyZSB0cmVhdGVkIGFzIFJBTSB1bnRpbCBjbGFpbWVkLgo+Pj4+ Pgo+Pj4+PiBJIHRoaW5rIHRoZSBvbmx5IHNlbnNpYmxlIHdheSB0byBrZWVwIHRoZSBlbnVtIGlz IHRvIGFsc28ga2VlcCB0aGUKPj4+Pj4gZnVuY3Rpb25hbGl0eSwgd2hpY2ggd291bGQgbWVhbiB1 c2luZyAqYW5vdGhlciogcDJtIHR5cGUgZm9yCj4+Pj4gaW9yZXFfc2VydmVyLgo+Pj4+Pgo+Pj4+ PiBHaXZlbiB0aGF0IHRoZSBmdW5jdGlvbmFsaXR5IGlzbid0IGdvaW5nIGF3YXkgZm9yIDQuNywg SSBkb24ndCBzZWUgYW4KPj4+Pj4gdXJnZW50IG5lZWQgdG8gcmVtb3ZlIHRoZSBlbnVtOyBidXQg aWYgUGF1bCBkb2VzLCB0aGVuIGEgcGF0Y2gKPj4gcmVuYW1pbmcKPj4+Pj4gaXQgdG8gSFZNTUVN X3VudXNlZCB3b3VsZCBiZSB0aGUgd2F5IGZvcndhcmQgdGhlbiBJIGd1ZXNzLiAgT25jZQo+PiB0 aGUKPj4+Pj4gdW5kZXJseWluZyBwMm0gdHlwZSBnb2VzIGF3YXksIHlvdSdsbCB3YW50IHRvIHJl dHVybiAtRUlOVkFMIGZvciB0aGlzCj4+Pj4+IGVudW0gdmFsdWUuCj4+Pj4+Cj4+Pj4KPj4+PiBT byB0aGUgZW51bSB3b3VsZCBiZSBzdGguIGxpa2UgdGhpcz8KPj4+Pgo+Pj4+IHR5cGVkZWYgZW51 bSB7Cj4+Pj4gICAgICBIVk1NRU1fcmFtX3J3LCAgICAgICAgLyogTm9ybWFsIHJlYWQvd3JpdGUg Z3Vlc3QgUkFNICovCj4+Pj4gICAgICBIVk1NRU1fcmFtX3JvLCAgICAgICAgLyogUmVhZC1vbmx5 OyB3cml0ZXMgYXJlIGRpc2NhcmRlZCAqLwo+Pj4+ICAgICAgSFZNTUVNX21taW9fZG0sICAgICAg IC8qIFJlYWRzIGFuZCB3cml0ZSBnbyB0byB0aGUgZGV2aWNlIG1vZGVsICovCj4+Pj4gI2lmIF9f WEVOX0lOVEVSRkFDRV9WRVJTSU9OX18gPCAweDAwMDQwNzAwCj4+Pj4gICAgICBIVk1NRU1fbW1p b193cml0ZV9kbSwgLyogUmVhZC1vbmx5OyB3cml0ZXMgZ28gdG8gdGhlIGRldmljZQo+PiBtb2Rl bAo+Pj4+ICovCj4+Pj4gI2Vsc2UKPj4+PiAgICAgIEhWTU1FTV91bnVzZWQsCj4+Pj4gI2VuZGlm Cj4+Pj4gICAgICBIVk1NRU1faW9yZXFfc2VydmVyCj4+Pj4gfSBodm1tZW1fdHlwZV90Owo+Pj4+ Cj4+Pgo+Pj4gSSBiZWxpZXZlIHRoYXQncyBjb3JyZWN0LCBidXQgcHJlc3VtYWJseSB0aGVyZSdz IG5lZWQgdG8gYmUgYSBjaGFuZ2UgdG8gdGhlCj4+IGh5cGVydmlzb3Igc2luY2UgYW55IHJlZmVy ZW5jZSB0aGVyZSB0byBIVk1NRU1fbW1pb193cml0ZV9kbSAod2hpY2ggSQo+PiB0aGluayBpcyBs aW1pdGVkIHRvIHRoZSBnZXQgYW5kIHNldCBtZW0gdHlwZSBjb2RlIGluIGh2bS5jKSB3aWxsIG5v dyBuZWVkIHRvCj4+IG1hcCBIVk1NRU1fdW51c2VkIHRvIHRoZSBvbGQgcDJtX21taW9fd3JpdGVf ZG0gdHlwZS4KPj4+Cj4+IFRoYW5rIHlvdSwgUGF1bC4KPj4KPj4gQnV0IHAybV9tbWlvX3dyaXRl X2RtIHdpbGwgbm90IGV4aXN0IGFueSBtb3JlLi4uCj4+IEUuZy4gaWYgaW4gaHZtb3BfZ2V0X21l bV90eXBlKCksIGlmIHR5cGUgMHhmKHAybV9pb3JlcV9zZXJ2ZXIpIGlzCj4+IHJldHVybmVkLCB3 ZSBjb3VsZCBqdXN0IHJldHVybiBIVk1NRU1faW9yZXFfc2VydmVyLiBObyBuZWVkIHRvCj4+IHdv cnJ5IGFib3V0IHRoZSBIVk1NRU1fbW1pb193cml0ZV9kbS4KPj4KPj4gTWF5YmUgd2Ugb25seSBu ZWVkIHRvIGNoYW5nZSB0aGUgYmVnaW5uaW5nIG9mIGh2bW9wX3NldF9tZW1fdHlwZSgpCj4+IHRv IHN0aC4gbGlrZSB0aGlzOgo+Pgo+PiAvKiBJbnRlcmZhY2UgdHlwZXMgdG8gaW50ZXJuYWwgcDJt IHR5cGVzICovCj4+IHN0YXRpYyBjb25zdCBwMm1fdHlwZV90IG1lbXR5cGVbXSA9IHsKPj4gICAg ICBbSFZNTUVNX3JhbV9yd10gID0gcDJtX3JhbV9ydywKPj4gICAgICBbSFZNTUVNX3JhbV9yb10g ID0gcDJtX3JhbV9ybywKPj4gICAgICBbSFZNTUVNX21taW9fZG1dID0gcDJtX21taW9fZG0sCj4+ ICAgICAgW0hWTU1FTV91bnVzZWRdID0gcDJtX2ludmFsaWQsICAvKiB0aGlzIHdpbGwgYmUgcmVq ZWN0ZWQgbGF0ZXIgKi8KPj4gICAgICBbSFZNTUVNX2lvcmVxX3NlcnZlcl0gPSBwMm1faW9yZXFf c2VydmVyCj4+IH07Cj4+IGFuZCBsYXRlciBpbiB0aGUgc2FtZSByb3V0aW5lLCBqdXN0IHJlamVj dCB0aGUgSFZNTUVNX3VudXNlZCB0eXBlLCBpbgo+PiBhbiBpZih3aXRoIHVubGlrZWx5KSBzdGF0 ZW1lbnQuCj4+Cj4gCj4gQXMgbG9uZyBhcyBldmVyeW9uZSBpcyBpbiBhZ3JlZW1lbnQgdGhlbiB3 ZSBjYW4gYnJlYWsgdGhlIGZ1bmN0aW9uYWxpdHkgdGhhdCBleGlzdHMgaW4gNC42LjEgKGFuZCBw cmVzdW1hYmx5IDQuNyBub3cpIHRoZW4gdGhhdOKAmXMgb2suCgpJIHRoaW5rIHdlJ3JlIGFsbCBp biBhZ3JlZW1lbnQgdGhhdCB3ZSBjYW4gKnJlbW92ZSogZnVuY3Rpb25hbGl0eSBhcwpsb25nIGFz IChmcm9tIFhlbidzIHBlcnNwZWN0aXZlKSBpdCBzaG91bGQgZmFpbCBncmFjZWZ1bGx5LiAgV2hp Y2ggbWVhbnMKdGhhdCBpZiBhbnlvbmUgdXNlcyB0aGUgaHZtX21lbV90eXBlIGVudW0gIHZhbHVl IHByZXZpb3VzbHkgYWxsb2NhdGVkIGRvCkhWTU1FTV9tbWlvX3dyaXRlX2RtLCByZXR1cm4gYW4g ZXJyb3IgKG9uZSB3YXkgb3IgYW5vdGhlcikuCgpUaGUgZXhhY3QgbWV0aG9kIGZvciBkb2luZyBz byBpcyB1cCBmb3IgcmV2aWV3LgoKIC1HZW9yZ2UKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=