From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [RFC PATCH 00/42] Introduce memory region concept (including device local memory) Date: Tue, 26 Feb 2019 19:52:17 +0100 Message-ID: <0a9238ae-4412-a6cb-0da5-3287b4d5a4d6@gmail.com> References: <20190214145740.14521-1-matthew.auld@intel.com> <155058317682.14819.11536571701277398274@jlahtine-desk.ger.corp.intel.com> <155114852274.9592.12818040180881092356@jlahtine-mobl.jf.intel.com> <155118343986.3521.5413925239622136070@jlahtine-mobl.ger.corp.intel.com> Reply-To: christian.koenig@amd.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Alex Deucher , Joonas Lahtinen Cc: Intel Graphics Development , Matthew Auld , dri-devel List-Id: dri-devel@lists.freedesktop.org QW0gMjYuMDIuMTkgdW0gMTg6MjAgc2NocmllYiBBbGV4IERldWNoZXI6Cj4gT24gVHVlLCBGZWIg MjYsIDIwMTkgYXQgNzoxNyBBTSBKb29uYXMgTGFodGluZW4KPiA8am9vbmFzLmxhaHRpbmVuQGxp bnV4LmludGVsLmNvbT4gd3JvdGU6Cj4+IFF1b3RpbmcgQWxleCBEZXVjaGVyICgyMDE5LTAyLTI1 IDIxOjMxOjQzKQo+Pj4gT24gTW9uLCBGZWIgMjUsIDIwMTkgYXQgOTozNSBQTSBKb29uYXMgTGFo dGluZW4KPj4+IDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPiB3cm90ZToKPj4+PiBR dW90aW5nIERhdmUgQWlybGllICgyMDE5LTAyLTI1IDEyOjI0OjQ4KQo+Pj4+PiBPbiBUdWUsIDE5 IEZlYiAyMDE5IGF0IDIzOjMyLCBKb29uYXMgTGFodGluZW4KPj4+Pj4gPGpvb25hcy5sYWh0aW5l bkBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+Pj4+Pj4gKyBkcmktZGV2ZWwgbWFpbGluZyBsaXN0 LCBlc3BlY2lhbGx5IGZvciB0aGUgYnVkZHkgYWxsb2NhdG9yIHBhcnQKPj4+Pj4+Cj4+Pj4+PiBR dW90aW5nIERhdmUgQWlybGllICgyMDE5LTAyLTE1IDAyOjQ3OjA3KQo+Pj4+Pj4+IE9uIEZyaSwg MTUgRmViIDIwMTkgYXQgMDA6NTcsIE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNv bT4gd3JvdGU6Cj4+Pj4+Pj4+IEluIHByZXBhcmF0aW9uIGZvciB1cGNvbWluZyBkZXZpY2VzIHdp dGggZGV2aWNlIGxvY2FsIG1lbW9yeSwgaW50cm9kdWNlIHRoZQo+Pj4+Pj4+PiBjb25jZXB0IG9m IGRpZmZlcmVudCBtZW1vcnkgcmVnaW9ucywgYW5kIGEgc2ltcGxlIGJ1ZGR5IGFsbG9jYXRvciB0 byBtYW5hZ2UKPj4+Pj4+Pj4gdGhlbS4KPj4+Pj4+PiBUaGlzIGlzIG1pc3NpbmcgdGhlIGluZm9y bWF0aW9uIG9uIHdoeSBpdCdzIG5vdCBUVE0uCj4+Pj4+Pj4KPj4+Pj4+PiBOb3RoaW5nIGFnYWlu c3QgZXh0ZW5kaW5nIGk5MTUgZ2VtIG9mZiBpbnRvIGRvaW5nIHN0dWZmIHdlIGFscmVhZHkKPj4+ Pj4+PiBoYXZlIGV4YW1wbGVzIG9mZiBpbiB0cmVlLCBidXQgYmVmb3JlIHlvdSBkbyB0aGF0IGl0 IHdvdWxkIGJlIGdvb2QgdG8KPj4+Pj4+PiBoYXZlIGEgd2h5IHdlIGNhbid0IHVzZSBUVE0gZGlz Y3Vzc2lvbiBpbiBwdWJsaWMuCj4+Pj4+PiBHbGFkIHRoYXQgeW91IGFza2VkLiBJdCdzIG15IGZh dWx0IHRoYXQgaXQgd2FzIG5vdCBpbmNsdWRlZCBpbgo+Pj4+Pj4gdGhlIGNvdmVyIGxldHRlci4g SSBhbnRpY2lwYXRlZCB0aGUgcXVlc3Rpb24sIGJ1dCB3YXMgdHJhdmVsbGluZwo+Pj4+Pj4gZm9y IGEgY291cGxlIG9mIGRheXMgYXQgdGhlIHRpbWUgdGhpcyB3YXMgc2VudC4gSSBkaWRuJ3Qgd2Fu dAo+Pj4+Pj4gdG8gd3JpdGUgYSBoYXN0eSBleHBsYW5hdGlvbiBhbmQgdGhlbiBkaXNhcHBlYXIs IGxlYXZpbmcgb3RoZXJzIHRvCj4+Pj4+PiB0YWtlIHRoZSBoZWF0Lgo+Pj4+Pj4KPj4+Pj4+IFNv IGhlcmUgZ29lcyB0aGUgbGVzcy1oYXN0eSB2ZXJzaW9uOgo+Pj4+Pj4KPj4+Pj4+IFdlIGRpZCBh biBhbmFseXNpcyBvbiB0aGUgZWZmb3J0IG5lZWRlZCB2cyBiZW5lZml0IGdhaW5lZCBvZiB1c2lu Zwo+Pj4+Pj4gVFRNIHdoZW4gdGhpcyB3YXMgc3RhcnRlZCBpbml0aWFsbHkuIFRoZSBjb25jbHVz aW9uIHdhcyB0aGF0IHdlCj4+Pj4+PiBhbHJlYWR5IHNoYXJlIHRoZSBpbnRlcmVzdGluZyBiaXRz IG9mIGNvZGUgdGhyb3VnaCBjb3JlIERSTSwgcmVhbGx5Lgo+Pj4+Pj4KPj4+Pj4+IFJlLXdyaXRp bmcgdGhlIG1lbW9yeSBoYW5kbGluZyB0byBUVE0gd291bGQgYnV5IHVzIG1vcmUgZmluZS1ncmFp bmVkCj4+Pj4+PiBsb2NraW5nLiBCdXQgaXQncyBtb3JlIGEgdHJhaXQgb2YgcmV3cml0aW5nIHRo ZSBtZW1vcnkgaGFuZGxpbmcgd2l0aAo+Pj4+Pj4gdGhlIGluZm9ybWF0aW9uIHdlIGhhdmUgbGVh cm5lZCwgdGhhbiByZXdyaXRpbmcgaXQgdG8gdXNlIFRUTSA6KQo+Pj4+Pj4KPj4+Pj4+IEFuZCBm dXJ0aGVyLCB3ZSd2ZSBiZWVuIGdldHRpbmcgcmlkIG9mIHN0cnVjdF9tdXRleCBhdCBhIHN0ZWFk eSBwaGFzZQo+Pj4+Pj4gaW4gdGhlIHBhc3QgeWVhcnMsIHNvIHdlIGhhdmUgYSBjbGVhciBwYXRo IHRvIHRoZSBmaW5lLWdyYWluZWQgbG9ja2luZwo+Pj4+Pj4gYWxyZWFkeSBpbiB0aGUgbm90LXNv LWRpc3RhbnQgZnV0dXJlLiBXaXRoIGFsbCB0aGlzIHdlIGRpZCBub3Qgc2VlCj4+Pj4+PiBtdWNo IGdhaW5lZCBmcm9tIGNvbnZlcnRpbmcgb3ZlciwgYXMgdGhlIGNvZGUgc2hhcmluZyBpcyBhbHJl YWR5Cj4+Pj4+PiBzdWJzdGFudGlhbC4KPj4+Pj4+Cj4+Pj4+PiBXZSBhbHNvIHdhbnRlZCB0byBo YXZlIHRoZSBidWRkeSBhbGxvY2F0b3IgaW5zdGVhZCBvZiBhIGZvciBsb29wIG1ha2luZwo+Pj4+ Pj4gZHJtX21tIGFsbG9jYXRpb25zIHRvIG1ha2Ugc3VyZSB3ZSBjYW4ga2VlcCB0aGUgbWVtb3J5 IGZyYWdtZW50YXRpb24KPj4+Pj4+IGF0IGJheS4gVGhlIGludGVudCBpcyB0byBtb3ZlIHRoZSBi dWRkeSBhbGxvY2F0b3IgdG8gY29yZSBEUk0sIHRvIHRoZQo+Pj4+Pj4gYmVuZWZpdCBvZiBhbGwg dGhlIGRyaXZlcnMsIGlmIHRoZXJlIGlzIGludGVyZXN0IGZyb20gY29tbXVuaXR5LiBJdCBoYXMK Pj4+Pj4+IGJlZW4gd3JpdHRlbiBhcyBhIHN0cmljdGx5IHNlcGFyYXRlIGNvbXBvbmVudCB3aXRo IHRoYXQgaW4gbWluZC4KPj4+Pj4+Cj4+Pj4+PiBBbmQgaWYgeW91IHRha2UgdGhlIGJ1ZGR5IGFs bG9jYXRvciBvdXQgb2YgdGhlIHBhdGNoIHNldCwgdGhlIHJlc3QgaXMKPj4+Pj4+IG1vc3RseSBq dXN0IHZmdW5jaW5nIHRoaW5ncyB1cCB0byBiZSBhYmxlIHRvIGhhdmUgZGlmZmVyZW50IGJhY2tp bmcKPj4+Pj4+IHN0b3JhZ2VzIGZvciBvYmplY3RzLiBXZSB0b29rIHRoZSBvcHBvcnR1bml0eSB0 byBtb3ZlIG92ZXIgdG8gdGhlIG1vcmUKPj4+Pj4+IHZhbGdyaW5kIGZyaWVuZGx5IG1tYXAgd2hp bGUgdG91Y2hpbmcgdGhpbmdzLCBidXQgaXQncyBzb21ldGhpbmcgd2UKPj4+Pj4+IGhhdmUgYmVl biBjb250ZW1wbGF0aW5nIGFueXdheS4gQW5kIHllYWgsIGxvYWRzIG9mIHNlbGZ0ZXN0cy4KPj4+ Pj4+Cj4+Pj4+PiBUaGF0J3MgcmVhbGx5IGFsbCB0aGF0IG5lZWRlZCBhZGRpbmcsIGFuZCBtb3N0 IG9mIGl0IGlzIGludGVybmFsIHRvCj4+Pj4+PiBpOTE1IGFuZCBub3QgdG8gZG8gd2l0aCB1QVBJ LiBUaGlzIG1lYW5zIHBvcnRpbmcgb3ZlciBhbiB1c2Vyc3BhY2UKPj4+Pj4+IGRyaXZlciBkb2Vz bid0IHJlcXVpcmUgYSBzdWJzdGFudGlhbCByZXdyaXRlLCBidXQgYWRkaW5nIG5ldyBhIGZldwo+ Pj4+Pj4gbmV3IElPQ1RMcyB0byBzZXQgdGhlIHByZWZlcnJlZCBiYWNraW5nIHN0b3JhZ2UgcGxh Y2VtZW50cy4KPj4+Pj4+Cj4+Pj4+PiBBbGwgdGhlIHByZXZpb3VzIEdFTSBhYnN0cmFjdGlvbnMg a2VlcCBhcHBseWluZywgc28gd2UgZGlkIG5vdCBzZWUKPj4+Pj4+IGEganVzdGlmaWNhdGlvbiB0 byByZXdyaXRlIHRoZSBrZXJuZWwgZHJpdmVyIGFuZCB1c2Vyc3BhY2UgZHJpdmVycy4KPj4+Pj4+ IEl0IHdvdWxkIGhhdmUganVzdCB0byBtYWRlIHRoaW5ncyBsb29rIGxpa2UgVFRNLCB3aGVuIHdl IGFscmVhZHkKPj4+Pj4+IGhhdmUgdGhlIGltcG9ydGFudCBwYXJ0cyBvZiB0aGUgY29kZSBzaGFy ZWQgd2l0aCBUVE0gZHJpdmVycwo+Pj4+Pj4gYmVoaW5kIHRoZSBHRU0gaW50ZXJmYWNlcyB3aGlj aCBhbGwgb3VyIGRyaXZlcnMgc2l0IG9uIHRvcCBvZi4KPj4+Pj4gYSkgeW91IGd1eXMgc2hvdWxk IGJlIHRoZSBjb21tdW5pdHkgYXMgd2VsbCwgaWYgdGhlIGJ1ZGR5IGFsbG9jYXRvciBpcwo+Pj4+ PiB1c2VmdWwgaW4gdGhlIGNvcmUgRFJNIGdldCBvdXQgdGhlcmUgYW5kIHRyeSBhbmQgc2VlIGlm IGFueW9uZSBlbHNlCj4+Pj4+IGhhcyBhIHVzZSBjYXNlIGZvciBpdCwgbGlrZSB0aGUgR1BVIHNj aGVkdWxlciB3ZSBoYXZlIG5vdyAoY2FuIGk5MTUKPj4+Pj4gdXNlIHRoYXQgeWV0PyA6LSkKPj4+ PiBXZWxsLCB0aGUgYnVkZHkgYWxsb2NhdG9yIHNob3VsZCBiZSB1c2VmdWwgZm9yIGFueWJvZHkg d2lzaGluZyB0byBoYXZlCj4+Pj4gYXMgY29udGludW91cyBwaHlzaWNhbCBhbGxvY2F0aW9ucyBh cyBwb3NzaWJsZS4gSSBoYXZlIG5haXZlbHkgYXNzdW1lZAo+Pj4+IHRoYXQgd291bGQgYmUgYWxt b3N0IGV2ZXJ5b25lLiBTbyBpdCB3b3VsZCBiZSBvbmx5IGEgcXVlc3Rpb24gaWYgb3RoZXJzCj4+ Pj4gc2VlIHRoZSBhbW91bnQgb2Ygd29yayByZXF1aXJlZCB0byBjb252ZXJ0IG92ZXIgaXMganVz dGlmaWVkIGZvciB0aGVtLgo+Pj4+Cj4+Pj4gRm9yIHRoZSBjb21tb24gRFJNIHNjaGVkdWxlciwg SSB0aGluayBhIHNvbGlkIG1vdmUgZnJvbSB0aGUgYmVnaW5uaW5nCj4+Pj4gd291bGQgaGF2ZSBi ZWVuIHRvIGZhY3RvciBvdXQgdGhlIGk5MTUgc2NoZWR1bGVyIGFzIGl0IHdhcyBtb3N0IGFkdmFu Y2VkCj4+Pj4gaW4gZmVhdHVyZXMgOikgTm93IHRoZXJlIGlzIGEgd2F5IG1vcmUgdHJpdmlhbCBj b21tb24gc2NoZWR1bGVyIGNvcmUgd2l0aAo+Pj4+IG5vIGVhc3kgcGF0aCB0byB0cmFuc2l0aW9u IHdpdGhvdXQgYSBmZWF0dXJlIHJlZ3Jlc3Npb24uCj4+PiBDYW4geW91IGVsYWJvcmF0ZT8gIFdo YXQgZmVhdHVyZXMgYXJlIG1pc3NpbmcgZnJvbSB0aGUgZHJtIGdwdSBzY2hlZHVsZXI/Cj4+IFBy aW9yaXR5IGJhc2VkIHByZS1lbXB0aW9uIGlzIHRoZSBiaWcgdGhpbmcgY29taW5nIHRvIG1pbmQu IEJ1dCBtYXliZSB3ZQo+PiBzaG91bGQgbm90IGRlcmFpbCB0aGUgZGlzY3Vzc2lvbiBpbiB0aGlz IHRocmVhZC4gVGhlIGRpc2N1c3Npb24gc2hvdWxkCj4+IGJlIGluIHRoZSBhcmNoaXZlcywgb3Ig d2UgY2FuIHN0YXJ0IGEgbmV3IHRocmVhZC4KPiBQcm9iYWJseSBub3Qgd29ydGggY29udGludWlu ZyBoZXJlLCBidXQgSSB0aGluayB0aGVyZSBhcmUgcHJvYmFibHkKPiBmZWF0dXJlcyB0aGF0IHRo ZSBkcm0gc2NoZWR1bGVyIGhhcyB0aGF0IHRoZSBpOTE1IHNjaGVkdWxlciBkb2VzIG5vdC4KPiBG b3IgZXhhbXBsZSwgZW5naW5lIGxvYWQgYmFsYW5jaW5nLiAgU28gaSB3b3VsZG4ndCBuZWNlc3Nh cmlseSBzYXkKPiBpdCdzIG1vcmUgYWR2YW5jZWQsIGp1c3QgZGlmZmVyZW50IGZlYXR1cmUgc2V0 cy4gIFdlIGNvdWxkIGFsbCBiZQo+IGVuam95aW5nIGFsbCBvZiB0aGVzZSBmZWF0dXJlcyBpZiB3 ZSBhbGwgd29ya2VkIG9uIHRoZSBzYW1lCj4gaW5mcmFzdHJ1Y3R1cmUuCgpBY3R1YWxseSBpdCBp cyB3b3J0aCBjb250aW51aW5nLiBUbyBiZSBob25lc3QgdGhlIERSTSBzY2hlZHVsZXIgY2FtZSAK Zmlyc3QgYW5kIHRoZSBpOTE1IHNjaGVkdWxlciBzaG91bGQgaGF2ZSBiZWVuIHB1c2hlZCBiYWNr IGEgYml0IG1vcmUuCgpBZGRpdGlvbmFsIHRvIHRoYXQgaXQgZG9lcyBzdXBwb3J0IHByaW9yaXR5 IGJhc2VkIHByZS1lbXB0aW9uIGZyb20gdGhlIAp2ZXJ5IGJlZ2lubmluZywgeW91IGd1eXMganVz dCBkaWRuJ3QgY2FyZWQgdG8gdGFrZSBhIGxvb2sgOigKClJlZ2FyZHMsCkNocmlzdGlhbi4KCj4K Pj4+PiBXZSdkIGhhdmUgdG8gcmV3cml0ZSBtYW55IG9mIHRoZSBtb3JlIGFkdmFuY2VkIGZlYXR1 cmVzIGZvciB0aGF0IGNvZGViYXNlCj4+Pj4gYmVmb3JlIHdlIGNvdWxkIHRyYW5zaXRpb24gb3Zl ci4gSXQncyBoYXJkIHRvIGp1c3RpZnkgc3VjaCB3b3JrLCBmb3IKPj4+PiB0aGF0IGl0IHdvdWxk IGJ1eSB1cyB2ZXJ5IGxpdHRsZSBjb21wYXJlZCB0byBhbW91bnQgb2Ygd29yay4KPj4+Pgo+Pj4+ IFNpdHVhdGlvbiB3b3VsZCBiZSBkaWZmZXJlbnQgaWYgdGhlcmUgd2FzIHNvbWV0aGluZyBnYWlu ZWQgZnJvbQo+Pj4+IHN3aXRjaGluZyBvdmVyLiBUaGlzIHdvdWxkIGJlIHRoZSBzaXR1YXRpb24g aWYgdGhlIG1vcmUgYWR2YW5jZWQKPj4+PiBzY2hlZHVsZXIgd2FzIHBpY2tlZCBhcyB0aGUgc2hh cmVkIGNvZGViYXNlLgo+Pj4+Cj4+Pj4+IGIpIGhvd2V2ZXIgdGhpcyBsYXN0IHR3byBwYXJhZ3Jh cGhzIGZpbGwgbWUgd2l0aCBubyBjb25maWRlbmNlIHRoYXQKPj4+Pj4geW91J3ZlIGxvb2tlZCBh dCBUVE0gYXQgYWxsLiBJdCBzb3VuZHMgbGlrZSB5b3UgdG9vayBjb21tZW50cyBhYm91dAo+Pj4+ PiBUVE0gbWFkZSAxMCB5ZWFycyBhZ28sIGFuZCBkaWRuJ3QgdXBkYXRlIHRoZW0uIFRoZXJlIHNo b3VsZCBiZSBubwo+Pj4+PiBtYWpvciByZWFzb24gZm9yIGEgdWFwaSBjaGFuZ2UganVzdCBiZWNh dXNlIHlvdSBhZG9wdCBUVE0uIFRUTSBoYXNuJ3QKPj4+Pj4gZXZlciBoYWQgYSBjb21tb24gdWFw aSBhY3Jvc3MgZHJpdmVycyB1cHN0cmVhbSwgb25lIHdhcyBwcm9wb3NlZAo+Pj4+PiBpbml0aWFs bHkgPiAxMCB5ZWFycyBhZ28uCj4+Pj4gVGhpcyBpcyBvbmUgcGFydCBteSBjb25mdXNpb24gb24g d2hhdCB0aGUgcXVlc3Rpb24gd2FzIGZvciBhbmQgb3RoZXIKPj4+PiBwYXJ0IGJhZCB3b3JkaW5n IG9uIG15IGJlaGFsZi4KPj4+Pgo+Pj4+IFNvIGFuIGF0dGVtcHQgdG8gcmUtYW5zd2VyOiBXaGVu IHRoaXMgZWZmb3J0IHdhcyBzdGFydGVkIGl0IHdhcyBvYnZpb3VzCj4+Pj4gdGhhdCB0aGUgYW1v dW50IG9mIG5ldyBjb2RlIHJlcXVpcmVkIHdhcyBsb3cgKGFzIHlvdSBjYW4gc2VlKS4gRmVlZGJh Y2sKPj4+PiBhYm91dCB3aGF0IGNvbnZlcnRpbmcgdG8gVFRNIHdvdWxkIHJlcXVpcmUgdnMuIGdp dmUgdXMgd2FzIGdhdGhlcmVkIGZyb20KPj4+PiBmb2xrcyBpbmNsdWRpbmcgRGFuaWVsIGFuZCBD aHJpcyBhbmQgdGhlIHVuYW5pbW91cyBkZWNpc2lvbiB3YXMgdGhhdCBpdAo+Pj4+IHdvdWxkIG5v dCBiZSBqdXN0aWZpYWJsZS4KPj4+Pgo+Pj4+PiBBbGwgdGhlIGN1cnJlbnQgVFRNIHVzaW5nIGRy aXZlcnMgZXhjZXB0Cj4+Pj4+IHZtd2FyZSB1c2UgYSBHRU0gYmFzZWQgQVBJIGFzIHdlbGwuIFRU TSBpcyBhbiBpbnRlcm5hbCBkcml2ZXIgaGVscGVyCj4+Pj4+IGZvciBtYW5hZ2luZyBwb29scyBv ZiBSQU0uCj4+Pj4+Cj4+Pj4+IEknbSBqdXN0IG5vdCBzdXJlIHdoYXQgcmVidWlsZGluZyBhIGNo dW5rIG9mIHNoYXJlZCBjb2RlIGluc2lkZSB0aGUKPj4+Pj4gaTkxNSBkcml2ZXIgaXMgYnV5aW5n IHlvdSwgZXhjZXB0IGEgdHJhbnNpdGlvbiBwYXRoIGludG8gZGl2ZXJnZW5jZQo+Pj4+PiBmcm9t IGFsbCB0aGUgb3RoZXIgZGlzY3JldGUgUkFNIGRyaXZlcnMuCj4+Pj4gSSBndWVzcyB3aGF0IEkn bSB0cnlpbmcgdG8gc2F5LCB0aGVyZSBpc24ndCB0aGF0IG11Y2ggY29kZSBiZWluZyBhZGRlZAo+ Pj4+IHRoYXQgd291bGRuJ3QgYmUgdGhlcmUgYW55d2F5LiBUaGUgaTkxNSBHRU0gY29kZSBoYXMg YWxyZWFkeSBncm93biB0bwo+Pj4+IHdoYXQgaXQgaXMgYmVmb3JlIHRoaXMuCj4+Pj4KPj4+PiBB ZGRpbmcgdGhlIHN1Z2dlc3RlZCBzbWFsbGVyIGFtb3VudCBvZiBjb2RlIHZzLiBkb2luZyBhIG11 Y2ggYmlnZ2VyCj4+Pj4gcmV3cml0ZSBpcyBzb21ldGhpbmcgb2YgYSBzdHJhaWdodGZvcndhcmQg Y2hvaWNlIHdpdGggdGhlIGFtb3VudCBvZgo+Pj4+IHBsYXRmb3JtcyBhbmQgZmVhdHVyZXMgaW4g ZmxpZ2h0LCBlc3BlY2lhbGx5IHdoZW4gdGhlIGVuZCByZXN1bHQgaXMKPj4+PiB0aGUgc2FtZS4K Pj4+IEJlY2F1c2UgeW91IHdpbGwgcHJvYmFibHkgbmV2ZXIgZG8gaXQuICBJdCdzIGFsbW9zdCBh bHdheXMgZWFzaWVyIHRvCj4+PiBqdXN0IGluY3JlbWVudGFsbHkgYWRkIG9uIHRvIGV4aXN0aW5n IGNvZGUuICBPbmUgY291bGQgYXJndWUgdGhhdCBHRU0KPj4+IGV2b2x2ZWQgaW50byBtb3JlIG9y IGxlc3MgdGhlIGV4YWN0IHNhbWUgdGhpbmcgYXMgVFRNIGFueXdheSBzbyB3aHkKPj4+IG5vdCBi aXRlIHRoZSBidWxsZXQgYW5kIHN3aXRjaCBhdCBzb21lIHBvaW50PyAgVFRNIHdvcmtzIGZpbmUg ZXZlbiBmb3IKPj4+IFVNQSBoYXJkd2FyZS4KPj4gQnkgbXkgdW5kZXJzdGFuZGluZyB0aGVyZSBh cmUgcXVpdGUgYSBmZXcgZGlmZmVyZW5jZXMgaW4gbG93IG9uIG1lbW9yeQo+PiBoYW5kbGluZyBh bmQgb3RoZXIgbW9yZSBzdWJ0bGUgYXNwZWN0cyBiZXR3ZWVuIHRoZSB0d28uCj4+IENvbnZlcnRp bmcgb3ZlciB0byBUVE0gd291bGQgYmUgYSBwcmV0dHkgYmlnIHJld3JpdGUgb2YgaTkxNSwgYW5k IHRoZQo+PiBjb2RlIHNoYXJpbmcgaXMgYWxyZWFkeSBoYXBwZW5pbmcgZm9yIGltcG9ydGFudCBw YXJ0cy4KPj4KPj4+Pj4gTGlrZSB0aGUgZ2FsbGl1bSBhdmVyc2lvbiBpbgo+Pj4+PiB1c2Vyc3Bh Y2UsIGhhdmluZyBhIFRUTSBhdmVyc2lvbiBpbiBrZXJuZWwgc3BhY2UgaXMgZ29pbmcgdG8gYmUg dGhlCj4+Pj4+IHdyb25nIHBhdGgsIGFuZCBJJ2QgcmF0aGVyIG5vdCBoYXZlIHRvIGNsZWFuIGl0 IHVwIGluIDUgeWVhcnMgd2hlbiB5b3UKPj4+Pj4gZ3V5cyBldmVudHVhbGx5IHJlYWxpc2UgaXQu Cj4+Pj4+Cj4+Pj4+IFRoZSBpOTE1IEdFTSBjb2RlIGdldCByZXdyaXR0ZW4gYW5kIHJlZmFjdG9y ZWQgcXVpdGUgb2Z0ZW4KPj4+PiBXZWxsLCB3ZSBjb250aW51YWxseSB0cnkgdG8gaW1wcm92ZSB0 aGluZ3MgYW5kIGFjY29tbW9kYXRlIHVwY29taW5nCj4+Pj4gcHJvZHVjdCByZXF1aXJlbWVudHMg YW5kIGhhcmR3YXJlIGZlYXR1cmUuIFRoZSB0aGluZyBpcyB0aGF0IHdlIGRvIGl0Cj4+Pj4gdXBz dHJlYW0gZmlyc3QsIHNvIGhhcmQgdG8gYXZvaWQgdGhlIGNodXJuLgo+Pj4+Cj4+Pj4gV2hlbiBt b3ZpbmcgcmFwaWRseSwgaXQncyBoYXJkIHRvIHByb2plY3Qgd2hhdCB0aGUgc2hhcmVkIHBvcnRp b24gb2YKPj4+PiB0aGUgY29kZSBtaWdodCBiZSBvciBleGFjdGx5IGxvb2suIEknbSBteXNlbGYg bXVjaCBtb3JlIGJlbGlldmVyIGluCj4+Pj4gZXh0cmFjdGluZyB0aGUgZ2VuZXJpYyBwb3J0aW9u cyBvdXQgd2hlbiB0aGUgY29kZSBpcyB0aGVyZSBhbmQgd29ya2luZy4KPj4+Pgo+Pj4+IFRoZSBj aHVybiB3b3VsZCBiZSBldmVuIGJpZ2dlciBpZiB0aGVyZSBpcyBhIHN0cmljdCByZXF1aXJlbWVu dCB0bwo+Pj4+IHJlZmFjdG9yIHRoZSBjb21tb24gcGFydHMgb3V0IHN0cmFpZ2h0IGZyb20gdGhl IGJlZ2lubmluZywgYmVmb3JlCj4+Pj4gYW55dGhpbmcgaXMgZXZlbiBwcm92ZW4gaW4gcHJhY3Rp Y2UuCj4+Pj4KPj4+PiBUaGF0J2QganVzdCBtZWFuIGl0IGdldHMgbXVjaCBoYXJkZXIgdG8gc2Vs bCBkb2luZyB0aGluZ3MgdXBzdHJlYW0KPj4+PiBmaXJzdCB0byB0aGUgbWFuYWdlbWVudC4KPj4+ IFdoYXQgZG9lcyB1cHN0cmVhbSBmaXJzdCBoYXZlIHRvIGRvIHdpdGggY29udHJpYnV0aW5nIHRv IHNoYXJlZCBjb2RlPwo+Pj4gVGhlcmUgaXMgYSBjb21tb24gbWlzY29uY2VwdGlvbiBpbiBiaWcg Y29tcGFuaWVzIHRoYXQgaWYgeW91IHV0aWxpemUKPj4+IHNoYXJlZCBpbmZyYXN0cnVjdHVyZSBp dCB3aWxsIHNsb3cgeW91IGRvd24gb3IgeW91J2xsIGxvc2UgY29udHJvbCBvZgo+Pj4geW91ciBj b2RlIHdoaWNoIGlzIEkgdGhpbmsgd2hhdCB5b3UgYXJlIHJlZmVycmluZyB0by4KPj4gVGhhdCdk IGJlIHRoZSB3cm9uZyBpbXByZXNzaW9uLiBRdWl0ZSB0aGUgY29udHJhcnksIHRoZSBiaWdnZXN0 IGNodW5rCj4+IG9mIGNvZGUgaGVyZSwgYnVkZHkgYWxsb2NhdG9yLCB3YXMgd3JpdHRlbiBzcGVj aWZpY2FsbHkgd2l0aCB0aGUgZmFjdAo+PiBpbiBtaW5kIHRoYXQgd2UgY2FuIGVhc2lseSBtb3Zl IGl0IHRvIERSTSBjb3JlLgo+Pgo+PiBBbmQgSSB0aGluayB3ZSBoYXZlIGEgc29saWQgdHJhY2sg aGlzdG9yeSBvZiBjb250cmlidXRpbmcgdG8gdGhlIERSTQo+PiBjb3JlLCBzbyBJJ20gbm90IHN1 cmUgd2h5IHlvdSdkIHRoaW5rIHRoYXQuCj4gSSBkaWRuJ3Qgc2F5IHlvdSBkb24ndCBoYXZlIGEg dHJhY2sgcmVjb3JkIG9mIGNvbnRyaWJ1dGluZywgbXkgcG9pbnQKPiB3YXMgdGhhdCB5b3Ugb25s eSBzZWVtIHRvIHVzZSB3aGF0IHlvdSBjb250cmlidXRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuCj4g VGhpcyBpcyBhbm90aGVyIGV4YW1wbGUuICBJIGhhdmVuJ3Qgc2VlbiBJbnRlbCB1c2UgYW55IGlu ZnJhc3RydWN0dXJlCj4gdGhleSBkaWRuJ3Qgd3JpdGUgZGlyZWN0bHkuICBPZmYgdGhlIHRvcCBv ZiBteSBoZWFkOgo+IC0gZHJtIEdQVSBzY2hlZHVsZXIKPiAtIFRUTQo+IC0gR2FsbGl1bQo+IC0g TXVsdGktbWVkaWEgKGNyZWF0aW5nIFZBQVBJIHdoZW4gdGhlcmUgd2VyZSBhcmd1YWJseSBzdXBl cmlvcgo+IGFsdGVybmF0aXZlcywgVkRQQVUgYW5kIE9wZW5NQVgpCj4gLSBPcGVuQ0wKPgo+IElu IGFsbCB0aG9zZSBjYXNlcyBJbnRlbCBkaWQgc29tZXRoaW5nIGVxdWl2YWxlbnQgaW4gcGFyYWxs ZWwsIHB1c2hpbmcKPiBpdHMgcHJvamVjdHMgd2hpbGUgdHJ5aW5nIHRvIGRvd25wbGF5IHRoZSBl eGlzdGluZyBwcm9qZWN0cy4gIFRoaXMKPiBqdXN0IHNlZW1zIGxpa2UgbW9yZSBvZiB0aGF0Lgo+ Cj4+PiBVbHRpbWF0ZWx5LCBpdAo+Pj4gZG9lcyBzb21ldGltZXMgcmFpc2UgdGhlIGJhciwgYnV0 IGluIHRoZSBsb25nIHRlcm0gaXQgYmVuZWZpdHMKPj4+IGV2ZXJ5b25lIGFuZCB1c3VhbGx5IGl0 IGRvZXNuJ3QgcmVhbGx5IGFkZCB0aGF0IG11Y2ggb3ZlcmhlYWQuCj4+IFRoYXQgd2UgYm90aCBh Z3JlZSBvbi4gQnV0IGluIHRoZSBjYXNlIG9mIHRoaXMgc3BlY2lmaWMgcGF0Y2ggc2VyaWVzCj4+ IGl0IGlzIGFib3V0IHJld3JpdGluZyB0aGUgZHJpdmVyIHRvIFRUTSwgd2hpY2ggaXMgcXVpdGUg YW4gb3ZlcmhlYWQuCj4+Cj4+IEFuZCBpZiBtb3N0IG9mIHRoZSBpbXBvcnRhbnQgY29kZSBpcyBz aGFyZWQgYW55d2F5IHRocm91Z2ggRFJNIGNvcmUsCj4+IGRvaW5nIHRoZSByZXdyaXRlICsgY292 ZXJpbmcgYWxsIHRoZSBzdWJ0bGUgZGlmZmVyZW5jZXMsIGRvZXMgbm90Cj4+IHNvdW5kIHRvbyBj b21wZWxsaW5nLgo+IFNvbWV0aW1lcyBpdCBpcyBhIGxvdCBvZiBvdmVyaGVhZC4gIFRoYXQncyB0 aGUgcGFjdCB5b3UgbWFrZSB3aGVuIHlvdQo+IHB1dCBjb2RlIHVwc3RyZWFtLiAgVGhlIGNvbW11 bml0eSB3YW50cyB0aGUgYmVzdCBzb2x1dGlvbiBmb3IgZXZlcnlvbmUKPiBhbmQgdG8gYmUgYWJs ZSB0byBtYWludGFpbiBpdCBpZiB5b3UgZG9uJ3QuICBTb21ldGltZXMgdGhhdCBtZWFucwo+IGV4 dHJhIG92ZXJoZWFkLgo+Cj4gQXQgdGhlIGVuZCBvZiB0aGUgZGF5LCBJIGRvbid0IHJlYWxseSBj YXJlIHRoYXQgbXVjaC4gIEkgZ2V0IGl0LCB3ZQo+IGFsbCBoYXZlIGxhcmdlIHByb2plY3RzIHdp dGggc2NhcmNlIHJlc291cmNlcy4gIEkganVzdCB0aGluayBhIGZldwo+IHllYXJzIGRvd24gdGhl IHJvYWQgd2UnbGwgYWxsIHJlZ3JldCBpdCBhcyBhIGNvbW11bml0eS4KPgo+IEFsZXgKPiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==