From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH 2/4] iommu: generalize iommu_inclusive_mapping Date: Tue, 31 Jul 2018 09:45:20 +0000 Message-ID: References: <20180727153149.25094-1-roger.pau@citrix.com> <20180727153149.25094-3-roger.pau@citrix.com> <49a6cf5a90074f56b4eb691c2bcf7a8a@AMSPEX02CL03.citrite.net> <20180731081623.mgklv2pfntyocr6h@mac.bytemobile.com> <20180731083351.qdg47ffpmc7ti4j7@mac.bytemobile.com> <94ea25857c9a495dbbe90d371ce51591@AMSPEX02CL03.citrite.net> <5B60228F02000078001D949B@prv1-mh.provo.novell.com> <20180731090556.teurystwsneq4ara@mac.bytemobile.com> <5B60288702000078001D94EB@prv1-mh.provo.novell.com> <20180731093448.pazxi52t3344f6zl@mac.bytemobile.com> <5B602ED702000078001D9560@prv1-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fkRDY-0003yN-SH for xen-devel@lists.xenproject.org; Tue, 31 Jul 2018 09:45:24 +0000 In-Reply-To: <5B602ED702000078001D9560@prv1-mh.provo.novell.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: 'Jan Beulich' , Roger Pau Monne Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Andrew Cooper , "Tim (Xen.org)" , George Dunlap , Julien Grall , xen-devel , Ian Jackson List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKYW4gQmV1bGljaCBbbWFpbHRv OkpCZXVsaWNoQHN1c2UuY29tXQ0KPiBTZW50OiAzMSBKdWx5IDIwMTggMTA6NDINCj4gVG86IFJv Z2VyIFBhdSBNb25uZSA8cm9nZXIucGF1QGNpdHJpeC5jb20+DQo+IENjOiBKdWxpZW4gR3JhbGwg PGp1bGllbi5ncmFsbEBhcm0uY29tPjsgQW5kcmV3IENvb3Blcg0KPiA8QW5kcmV3LkNvb3BlcjNA Y2l0cml4LmNvbT47IEdlb3JnZSBEdW5sYXANCj4gPEdlb3JnZS5EdW5sYXBAY2l0cml4LmNvbT47 IElhbiBKYWNrc29uIDxJYW4uSmFja3NvbkBjaXRyaXguY29tPjsgUGF1bA0KPiBEdXJyYW50IDxQ YXVsLkR1cnJhbnRAY2l0cml4LmNvbT47IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+OyBL ZXZpbg0KPiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT47IFN0ZWZhbm8gU3RhYmVsbGluaSA8 c3N0YWJlbGxpbmlAa2VybmVsLm9yZz47DQo+IHhlbi1kZXZlbCA8eGVuLWRldmVsQGxpc3RzLnhl bnByb2plY3Qub3JnPjsgVGltIChYZW4ub3JnKSA8dGltQHhlbi5vcmc+DQo+IFN1YmplY3Q6IFJl OiBbWGVuLWRldmVsXSBbUEFUQ0ggMi80XSBpb21tdTogZ2VuZXJhbGl6ZQ0KPiBpb21tdV9pbmNs dXNpdmVfbWFwcGluZw0KPiANCj4gPj4+IE9uIDMxLjA3LjE4IGF0IDExOjM0LCA8cm9nZXIucGF1 QGNpdHJpeC5jb20+IHdyb3RlOg0KPiA+IE9uIFR1ZSwgSnVsIDMxLCAyMDE4IGF0IDAzOjE0OjQ3 QU0gLTA2MDAsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiA+PiA+Pj4gT24gMzEuMDcuMTggYXQgMTE6 MDUsIDxyb2dlci5wYXVAY2l0cml4LmNvbT4gd3JvdGU6DQo+ID4+ID4gT24gVHVlLCBKdWwgMzEs IDIwMTggYXQgMDI6NDk6MTlBTSAtMDYwMCwgSmFuIEJldWxpY2ggd3JvdGU6DQo+ID4+ID4+ID4+ PiBPbiAzMS4wNy4xOCBhdCAxMDozNywgPFBhdWwuRHVycmFudEBjaXRyaXguY29tPiB3cm90ZToN Cj4gPj4gPj4gPj4gIC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ID4+ID4+IEZyb206 IFJvZ2VyIFBhdSBNb25uZQ0KPiA+PiA+PiA+PiBTZW50OiAzMSBKdWx5IDIwMTggMDk6MzQNCj4g Pj4gPj4gPj4gVG86IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+DQo+ID4+ ID4+ID4+IENjOiB4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmc7IEtldmluIFRpYW4NCj4g PGtldmluLnRpYW5AaW50ZWwuY29tPjsNCj4gPj4gPj4gPj4gU3RlZmFubyBTdGFiZWxsaW5pIDxz c3RhYmVsbGluaUBrZXJuZWwub3JnPjsgV2VpIExpdQ0KPiA8d2VpLmxpdTJAY2l0cml4LmNvbT47 DQo+ID4+ID4+ID4+IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAY2l0cml4LmNvbT47IEFu ZHJldyBDb29wZXINCj4gPj4gPj4gPj4gPEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+OyBJYW4g SmFja3Nvbg0KPiA8SWFuLkphY2tzb25AY2l0cml4LmNvbT47IFRpbQ0KPiA+PiA+PiA+PiAoWGVu Lm9yZykgPHRpbUB4ZW4ub3JnPjsgSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT47 IEphbg0KPiBCZXVsaWNoDQo+ID4+ID4+ID4+IDxqYmV1bGljaEBzdXNlLmNvbT4NCj4gPj4gPj4g Pj4gU3ViamVjdDogUmU6IFtYZW4tZGV2ZWxdIFtQQVRDSCAyLzRdIGlvbW11OiBnZW5lcmFsaXpl DQo+ID4+ID4+ID4+IGlvbW11X2luY2x1c2l2ZV9tYXBwaW5nDQo+ID4+ID4+ID4+DQo+ID4+ID4+ ID4+IE9uIFR1ZSwgSnVsIDMxLCAyMDE4IGF0IDA5OjI3OjAzQU0gKzAxMDAsIFBhdWwgRHVycmFu dCB3cm90ZToNCj4gPj4gPj4gPj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ ID4+ID4+ID4gPiBGcm9tOiBSb2dlciBQYXUgTW9ubmUNCj4gPj4gPj4gPj4gPiA+IFNlbnQ6IDMx IEp1bHkgMjAxOCAwOToxNg0KPiA+PiA+PiA+PiA+ID4gVG86IFBhdWwgRHVycmFudCA8UGF1bC5E dXJyYW50QGNpdHJpeC5jb20+DQo+ID4+ID4+ID4+ID4gPiBDYzogeGVuLWRldmVsQGxpc3RzLnhl bnByb2plY3Qub3JnOyBLZXZpbiBUaWFuDQo+IDxrZXZpbi50aWFuQGludGVsLmNvbT47DQo+ID4+ ID4+ID4+ID4gPiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+OyBX ZWkgTGl1DQo+ID4+ID4+ID4+IDx3ZWkubGl1MkBjaXRyaXguY29tPjsNCj4gPj4gPj4gPj4gPiA+ IEdlb3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAY2l0cml4LmNvbT47IEFuZHJldyBDb29wZXIN Cj4gPj4gPj4gPj4gPiA+IDxBbmRyZXcuQ29vcGVyM0BjaXRyaXguY29tPjsgSWFuIEphY2tzb24N Cj4gPElhbi5KYWNrc29uQGNpdHJpeC5jb20+Ow0KPiA+PiA+PiA+PiBUaW0NCj4gPj4gPj4gPj4g PiA+IChYZW4ub3JnKSA8dGltQHhlbi5vcmc+OyBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBh cm0uY29tPjsNCj4gSmFuDQo+ID4+ID4+ID4+IEJldWxpY2gNCj4gPj4gPj4gPj4gPiA+IDxqYmV1 bGljaEBzdXNlLmNvbT4NCj4gPj4gPj4gPj4gPiA+IFN1YmplY3Q6IFJlOiBbWGVuLWRldmVsXSBb UEFUQ0ggMi80XSBpb21tdTogZ2VuZXJhbGl6ZQ0KPiA+PiA+PiA+PiA+ID4gaW9tbXVfaW5jbHVz aXZlX21hcHBpbmcNCj4gPj4gPj4gPj4gPiA+DQo+ID4+ID4+ID4+ID4gPiBPbiBUdWUsIEp1bCAz MSwgMjAxOCBhdCAwODoxODozNkFNICswMTAwLCBQYXVsIER1cnJhbnQgd3JvdGU6DQo+ID4+ID4+ ID4+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gPj4gPj4gPiA+ID4g PiBGcm9tOiBYZW4tZGV2ZWwgW21haWx0bzp4ZW4tZGV2ZWwtDQo+IGJvdW5jZXNAbGlzdHMueGVu cHJvamVjdC5vcmddDQo+ID4+ID4+ID4+IE9uDQo+ID4+ID4+ID4+ID4gPiBCZWhhbGYNCj4gPj4g Pj4gPj4gPiA+ID4gPiBPZiBSb2dlciBQYXUgTW9ubmUNCj4gPj4gPj4gPj4gPiA+ID4gPiBTZW50 OiAyNyBKdWx5IDIwMTggMTY6MzINCj4gPj4gPj4gPj4gPiA+ID4gPiBUbzogeGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnDQo+ID4+ID4+ID4+ID4gPiA+ID4gQ2M6IEtldmluIFRpYW4gPGtl dmluLnRpYW5AaW50ZWwuY29tPjsgU3RlZmFubyBTdGFiZWxsaW5pDQo+ID4+ID4+ID4+ID4gPiA+ ID4gPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+OyBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29t PjsNCj4gR2VvcmdlDQo+ID4+ID4+ID4+IER1bmxhcA0KPiA+PiA+PiA+PiA+ID4gPiA+IDxHZW9y Z2UuRHVubGFwQGNpdHJpeC5jb20+OyBBbmRyZXcgQ29vcGVyDQo+ID4+ID4+ID4+ID4gPiA+ID4g PEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+OyBJYW4gSmFja3Nvbg0KPiA+PiA+PiA+PiA8SWFu LkphY2tzb25AY2l0cml4LmNvbT47DQo+ID4+ID4+ID4+ID4gPiBUaW0NCj4gPj4gPj4gPj4gPiA+ ID4gPiAoWGVuLm9yZykgPHRpbUB4ZW4ub3JnPjsgSnVsaWVuIEdyYWxsDQo+IDxqdWxpZW4uZ3Jh bGxAYXJtLmNvbT47IEphbg0KPiA+PiA+PiA+PiA+ID4gQmV1bGljaA0KPiA+PiA+PiA+PiA+ID4g PiA+IDxqYmV1bGljaEBzdXNlLmNvbT47IFJvZ2VyIFBhdSBNb25uZQ0KPiA8cm9nZXIucGF1QGNp dHJpeC5jb20+DQo+ID4+ID4+ID4+ID4gPiA+ID4gU3ViamVjdDogW1hlbi1kZXZlbF0gW1BBVENI IDIvNF0gaW9tbXU6IGdlbmVyYWxpemUNCj4gPj4gPj4gPj4gPiA+ID4gPiBpb21tdV9pbmNsdXNp dmVfbWFwcGluZw0KPiA+PiA+PiA+PiA+ID4gPiA+DQo+ID4+ID4+ID4+ID4gPiA+ID4gSW50cm9k dWNlIGEgbmV3IGlvbW11PWluY2x1c2l2ZSBnZW5lcmljIG9wdGlvbiB0aGF0DQo+IHN1cGVyc2Vk ZXMNCj4gPj4gPj4gPj4gPiA+ID4gPiBpb21tdV9pbmNsdXNpdmVfbWFwcGluZy4gVGhpcyBzaG91 bGQgYmUgYSBub24tZnVuY3Rpb25hbA0KPiBjaGFuZ2UNCj4gPj4gPj4gPj4gb24NCj4gPj4gPj4g Pj4gPiA+ID4gPiBJbnRlbCBoYXJkd2FyZSwgd2hpbGUgQU1EIGhhcmR3YXJlIHdpbGwgZ2FpbiB0 aGUgc2FtZQ0KPiBmdW5jdGlvbmFsaXR5DQo+ID4+ID4+ID4+IG9mDQo+ID4+ID4+ID4+ID4gPiA+ ID4gbWFwcGluZyBhbG1vc3QgZXZlcnl0aGluZyBiZWxvdyB0aGUgNEdCIGJvdW5kYXJ5Lg0KPiA+ PiA+PiA+PiA+ID4gPiA+DQo+ID4+ID4+ID4+ID4gPiA+ID4gTm90ZSB0aGF0IGlzIGEgbm9vcCBm b3IgQVJNIGhhcmR3YXJlLg0KPiA+PiA+PiA+PiA+ID4gPiA+DQo+ID4+ID4+ID4+ID4gPiA+ID4g U2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+DQo+ ID4+ID4+ID4+ID4gPiA+ID4gLS0tDQo+ID4+ID4+ID4+ID4gPiA+ID4gQ2M6IEFuZHJldyBDb29w ZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+DQo+ID4+ID4+ID4+ID4gPiA+ID4gQ2M6IEdl b3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUuY2l0cml4LmNvbT4NCj4gPj4gPj4gPj4gPiA+ ID4gPiBDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+DQo+ID4+ID4+ ID4+ID4gPiA+ID4gQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4NCj4gPj4gPj4g Pj4gPiA+ID4gPiBDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4NCj4gPj4g Pj4gPj4gPiA+ID4gPiBDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFj bGUuY29tPg0KPiA+PiA+PiA+PiA+ID4gPiA+IENjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFi ZWxsaW5pQGtlcm5lbC5vcmc+DQo+ID4+ID4+ID4+ID4gPiA+ID4gQ2M6IFRpbSBEZWVnYW4gPHRp bUB4ZW4ub3JnPg0KPiA+PiA+PiA+PiA+ID4gPiA+IENjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRy aXguY29tPg0KPiA+PiA+PiA+PiA+ID4gPiA+IENjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGlu dGVsLmNvbT4NCj4gPj4gPj4gPj4gPiA+ID4gPiAtLS0NCj4gPj4gPj4gPj4gPiA+ID4gPiAgZG9j cy9taXNjL3hlbi1jb21tYW5kLWxpbmUubWFya2Rvd24gICB8IDE0ICsrKysrKw0KPiA+PiA+PiA+ PiA+ID4gPiA+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaW9tbXUuYyAgIHwgIDQgKysN Cj4gPj4gPj4gPj4gPiA+ID4gPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyAgICAg ICB8ICA2ICsrKw0KPiA+PiA+PiA+PiA+ID4gPiA+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92 dGQvZXh0ZXJuLmggIHwgIDIgLQ0KPiA+PiA+PiA+PiA+ID4gPiA+ICB4ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQvaW9tbXUuYyAgIHwgIDYgLS0tDQo+ID4+ID4+ID4+ID4gPiA+ID4gIHhlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC94ODYvdnRkLmMgfCA2NiArLS0tLS0tLS0tLS0tLS0tLS0N Cj4gLS0tLS0tLQ0KPiA+PiA+PiA+PiA+ID4gPiA+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94 ODYvaW9tbXUuYyAgIHwgNzANCj4gPj4gPj4gPj4gPiA+ID4gPiArKysrKysrKysrKysrKysrKysr KysrKysrKysNCj4gPj4gPj4gPj4gPiA+ID4gPiAgeGVuL2luY2x1ZGUveGVuL2lvbW11LmggICAg ICAgICAgICAgICB8ICAyICsNCj4gPj4gPj4gPj4gPiA+ID4gPiAgOCBmaWxlcyBjaGFuZ2VkLCA5 NyBpbnNlcnRpb25zKCspLCA3MyBkZWxldGlvbnMoLSkNCj4gPj4gPj4gPj4gPiA+ID4gPg0KPiA+ PiA+PiA+PiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5t YXJrZG93bg0KPiA+PiA+PiA+PiBiL2RvY3MvbWlzYy94ZW4tDQo+ID4+ID4+ID4+ID4gPiA+ID4g Y29tbWFuZC1saW5lLm1hcmtkb3duDQo+ID4+ID4+ID4+ID4gPiA+ID4gaW5kZXggNjViNDc1NDQx OC4uOTFhOGJmYzlhNiAxMDA2NDQNCj4gPj4gPj4gPj4gPiA+ID4gPiAtLS0gYS9kb2NzL21pc2Mv eGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bg0KPiA+PiA+PiA+PiA+ID4gPiA+ICsrKyBiL2RvY3Mv bWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duDQo+ID4+ID4+ID4+ID4gPiA+ID4gQEAgLTEx OTgsNiArMTE5OCwxNyBAQCBkZXRlY3Rpb24gb2Ygc3lzdGVtcyBrbm93biB0bw0KPiBtaXNiZWhh dmUNCj4gPj4gPj4gPj4gPiA+IHVwb24NCj4gPj4gPj4gPj4gPiA+ID4gPiBhY2Nlc3NlcyB0byB0 aGF0IHBvcnQuDQo+ID4+ID4+ID4+ID4gPiA+ID4NCj4gPj4gPj4gPj4gPiA+ID4gPiAgPj4gRW5h YmxlIElPTU1VIGRlYnVnZ2luZyBjb2RlIChpbXBsaWVzIGB2ZXJib3NlYCkuDQo+ID4+ID4+ID4+ ID4gPiA+ID4NCj4gPj4gPj4gPj4gPiA+ID4gPiArPiBgaW5jbHVzaXZlYA0KPiA+PiA+PiA+PiA+ ID4gPg0KPiA+PiA+PiA+PiA+ID4gPiBUaGlzIGlzIGEgZG9tMCAob3IgaHdkb20pIHNwZWNpZmlj IHNldHRpbmcgc28gcGVyaGFwcyBkb20wLQ0KPiBpbmNsdXNpdmU/DQo+ID4+ID4+ID4+ID4gPiA+ DQo+ID4+ID4+ID4+ID4gPiA+IEFjdHVhbGx5IHRoZSBkb20wIGlvbW11IG9wdGlvbnMgYXJlIHN0 YXJ0aW5nIHRvIGdldCB1bndpZWxkeQ0KPiBhcyB0aGV5DQo+ID4+ID4+ID4+IGFyZQ0KPiA+PiA+ PiA+PiA+ID4gY29uZmxhdGVkIHdpdGggdGhlIGdlbmVyYWwgaG9zdCBpb21tdSBvcHRpb25zIHNv IEkgdGhpbmsgaXQgbWF5DQo+IGJlDQo+ID4+ID4+ID4+ID4gPiB3b3J0aHdoaWxlIHNwbGl0dGlu ZyB0aGluZ3Mgb3V0IGludG8gYSBzZXBhcmF0ZSAnZG9tMC1pb21tdT0nDQo+IHRvcCBsZXZlbA0K PiA+PiA+PiA+PiA+ID4gcGFyYW1ldGVyIGF0IHRoaXMgc3RhZ2UuIChNeSByZWFzb25zIGFyZSBz bGlnaHRseSBzZWxmaXNoIGFzIEkNCj4gaW50ZW5kIHRvDQo+ID4NCj4gPj4gPj4gPiBhZGQNCj4g Pj4gPj4gPj4gPiA+IGFub3RoZXIgZG9tMCBpb21tdSBvcHRpb24gdG8gZ2l2ZSBpdCBqdXN0IHJl c2VydmVkIHJlZ2lvbnMsIHRvDQo+IGF2b2lkDQo+ID4+ID4+ID4+ID4gPiB1bm5lY2Vzc2FyeSBz ZXQtdXAgaWYgd2Uga25vdyBpdCB3aWxsIGJlIHVzaW5nIFBWLUlPTU1VKS4NCj4gPj4gPj4gPj4g PiA+DQo+ID4+ID4+ID4+ID4gPiBNYXBwaW5nIGp1c3QgdGhlIHJlc2VydmVkIHJlZ2lvbnMgaXMg d2hhdCBJIGFjdHVhbGx5IGRvIGZvciBQVkgNCj4gd2l0aA0KPiA+PiA+PiA+PiA+ID4gaW9tbXU9 aW5jbHVzaXZlIChwYXRjaCA0LzQpLCBzbyBtYXliZSBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvDQo+ IHNwZWFrDQo+ID4+ID4+ID4+IGFib3V0DQo+ID4+ID4+ID4+ID4gPiB0aGUNCj4gPj4gPj4gPj4g PiA+IG5hbWluZyBoZXJlIGluIG9yZGVyIHRvIHVzZSB0aGUgc2FtZSBuYW1pbmcgZm9yIFBWIGFu ZCBQVkguDQo+ID4+ID4+ID4+ID4gPg0KPiA+PiA+PiA+PiA+ID4gVEJIIEkgZG9uJ3QgcmVhbGx5 IGxpa2UgdGhlIGRvbTAtIHByZWZpeCwgdGhlIGNvbW1hbmQgbGluZQ0KPiBpb21tdQ0KPiA+PiA+ PiA+PiA+ID4gb3B0aW9ucyBlaXRoZXIgYXBwbHkgdG8gYWxsIGRvbWFpbnMgb3IgRG9tMCBvbmx5 LCBoYXZpbmcNCj4gPj4gPj4gPj4gPiA+IGRvbXUtaW5jbHVzaXZlIGZvciBleGFtcGxlIG1ha2Vz IG5vIHNlbnNlIElNTy4NCj4gPj4gPj4gPj4gPg0KPiA+PiA+PiA+PiA+IE5vLCBJIHRoaW5rIHRo ZXJlIGFyZSBzb21lIG9wdGlvbnMgdGhhdCB5b3UgbWF5IHdhbnQgdG8gYXBwbHkgdG8NCj4gZG9t MA0KPiA+PiA+PiA+PiBvbmx5LCBidXQgdGhlc2UgYXJlIG1vcmUgbGlrZSB0aGUgZG9tMF9tZW0g b3IgZG9tMF9tYXhfdnB1cw0KPiBvcHRpb25zLg0KPiA+PiA+PiA+PiBQYXJ0aWN1bGFybHksIHRo ZSBpbmNsdXNpdmUgb3B0aW9uIGlzIHByb2JhYmx5IHNvbWV0aGluZyB0aGF0IGlzIG9ubHkNCj4g Pj4gPiBkZXNpcmFibGUNCj4gPj4gPj4gPj4gZm9yIGRvbTAuIENsZWFybHkgZG9tMC1wYXNzdGhy b3VnaCBhbmQgZG9tMC1zdHJpY3QgYXJlIGFscmVhZHkNCj4gZGVmaW5lZCB0bw0KPiA+PiA+PiA+ PiByZWxhdGUgdG8gZG9tMCBvbmx5LCBhbmQgb3B0aW9ucyBzdWNoIGFzICdyZXNlcnZlZCcgc2hv dWxkIG9ubHkgYmUNCj4gPiBzcGVjaWZpYw0KPiA+PiA+IG9uDQo+ID4+ID4+ID4+IHRoZSBjb21t YW5kIGxpbmUgaW4gcmVsYXRpb24gdG8gZG9tMCBJTU8uIEZvciBvdGhlciBkb21haW5zIHN1Y2gN Cj4gYW4gb3B0aW9uDQo+ID4+ID4+ID4+IHNob3VsZCBiZSBzcGVjaWZpZWQgdmlhIHhsLmNmZy4N Cj4gPj4gPj4gPj4NCj4gPj4gPj4gPj4gWWVzLCB3ZSBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiB0 aG9zZSwgc28gdGhlbiBJIHRoaW5rIGRvbTAtDQo+IGluY2x1c2l2ZQ0KPiA+PiA+PiA+PiBhbmQg ZG9tMC1yZXNlcnZlZCB3b3VsZCBiZSBhcHByb3ByaWF0ZT8NCj4gPj4gPj4gPj4NCj4gPj4gPj4g Pj4gZG9tMC1pbmNsdXNpdmUtbWFwcGluZyBvciBkb20wLXJlc2VydmVkLW1hcHBpbmcgc2VlbXMg dG9vDQo+IGxvbmcuDQo+ID4+ID4+ID4NCj4gPj4gPj4gPiBZZXMsIHRob3NlIG5hbWVzIGFyZSBv aywgYnV0IEkgc3RpbGwgdGhpbmsgaXQgYmV0dGVyIGluIHRoZSBsb25nIHJ1biBpZiB3ZQ0KPiA+ DQo+ID4+ID4+ID4gaGF2ZSBzb21ldGhpbmcgbGlrZToNCj4gPj4gPj4gPg0KPiA+PiA+PiA+IGRv bTBfaW9tbXU9W2luY2x1c2l2ZSxdW3Jlc2VydmVkLF1bc3RyaWN0LF1bbm9uZSxdW3JlbGF4ZWRd DQo+ID4+ID4+ID4NCj4gPj4gPj4gPiB3aGVyZSByZWxheGVkIGlzIHRoZSBkZWZhdWx0IGFuZCAn bm9uZScgKEkgdGhpbmspIGlzIGVxdWl2YWxlbnQgdG8gdGhlDQo+ID4+ID4+ID4gY3VycmVudCBp b21tdT1kb20wLXBhc3N0aHJvdWdoLg0KPiA+PiA+Pg0KPiA+PiA+PiBPciwgYWxvbmcgdGhlIGxp bmVzIG9mIHRoZSBvdGhlciByZXBseSBqdXN0IHNlbnQsIGUuZy4NCj4gPj4gPj4NCj4gPj4gPj4g ZG9tMD1wdmgsaW9tbXU6aW5jbHVzaXZlO3Jlc2VydmVkLHNoYWRvdw0KPiA+PiA+Pg0KPiA+PiA+ PiBCdXQgcGVyaGFwcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuICwgYW5kIDsgZ2V0cyB0b28gY29u ZnVzaW5nIHRoZW4uDQo+ID4+ID4NCj4gPj4gPiBTbyBJIHRoaW5rIHdlIGhhdmUgdGhlIGZvbGxv d2luZyBvcHRpb25zOg0KPiA+PiA+DQo+ID4+ID4gMS4gZG9tMF9pb21tdT1baW5jbHVzaXZlLF1b cmVzZXJ2ZWQsXVtzdHJpY3QsXVtub25lLF1bcmVsYXhlZF0NCj4gPj4NCj4gPj4gTml0OiBkb20w LWlvbW11PSAobm8gdW5kZXJzY29yZXMgaW4gbmV3IG9wdGlvbnMpDQo+ID4+DQo+ID4+ID4gMi4N Cj4gZG9tMD1bcHZoLF1bc2hhZG93LF1baW9tbXU9W2luY2x1c2l2ZTtdW3Jlc2VydmVkO11bc3Ry aWN0O11bbm9uZTtdW3JlbGF4ZQ0KPiBkXV0NCj4gPj4gPiAzLiBkb20wPVtwdmgsXVtzaGFkb3cs XVtpb21tdS1pbmNsdXNpdmUsXVtpb21tdS1yZXNlcnZlZCxdW2lvbW11LQ0KPiBzdHJpY3QsXVtp b21tdS1ub25lLF1baW9tbXUtcmVsYXhlZF0NCj4gPj4gPg0KPiA+PiA+IEkgZG9uJ3QgaGF2ZSBh IHN0cm9uZyBwcmVmZXJlbmNlIGJldHdlZW4gMSBhbmQgMywgYnV0IEkgd291bGQgcHJlZmVyDQo+ ID4+ID4gdG8gYXZvaWQgMiBiZWNhdXNlIEkgdGhpbmsgc3Vib3B0aW9ucyBpbnNpZGUgb2Ygb3B0 aW9ucyBpdCdzIHRvbw0KPiA+PiA+IGNvbXBsZXggSU1PLg0KPiA+Pg0KPiA+PiBXaGlsZSBnZW5l cmFsbHkgSSBwcmVmZXIgdG8gbGltaXQgdGhlIG51bWJlciBvZiB0b3AgbGV2ZWwgb3B0aW9ucywg aW4NCj4gPj4gdGhpcyBjYXNlIEkgdGhpbmsgSSdkIHByZWZlciAxIGFmdGVyIGFsbC4gT3Igd2Fp dCAtIGRvZXMgYW55IHBhaXIgb2YgdGhlDQo+ID4+IChzdWIpb3B0aW9ucyBhY3R1YWxseSBtYWtl IHNlbnNlIHRvIGJlIHNwZWNpZmllZD8NCj4gPg0KPiA+IFllcywgZm9yIGV4YW1wbGUgeW91IGNh biB1c2Ugc3RyaWN0IGFuZCBpbmNsdXNpdmUgYXQgdGhlIHNhbWUgdGltZSwgSQ0KPiA+IHRoaW5r IGl0J3Mgc29tZXRoaW5nIGxpa2U6DQo+ID4NCj4gPg0KPiBkb20wPVtwdmgsXVtzaGFkb3csXVtp b21tdT1baW5jbHVzaXZlfHJlc2VydmVkO11bc3RyaWN0fG5vbmV8cmVsYXhlZF1dDQo+ID4NCj4g Pj4gSXNuJ3QgaXQgcmF0aGVyIGENCj4gPj4gY2hvaWNlIG9mIGZpdmUgdGhhbiBhbiBlbnVtZXJh dGlvbiBvZiB1cCB0byA1PyBJbiB3aGljaCBjYXNlIEknZA0KPiA+PiBzdGlsbCBwcmVmZXIgMiAo YXMgdGhlbiB0aGVyZSdzIG5vIG5lZWQgZm9yIGEgc2Vjb25kIHNlcGFyYXRvcg0KPiA+PiBiZXNp ZGUgY29tbWEpLCB0aGUgbW9yZSB0aGF0IHdlIGhhdmUgYXQgbGVhc3Qgb25lIGV4YW1wbGUgd2l0 aA0KPiA+PiBzdWNoIHN1Yi1vcHRpb25zIChjcHVmcmVxKS4NCj4gPg0KPiA+IE9LLCBJIGNhbiBk byB0aGUgbmVzdGVkIGlvbW11IG9wdGlvbiBpbnNpZGUgb2YgZG9tMCBpZiB0aGF0J3MgdGhlDQo+ ID4gcHJlZmVyZW5jZS4NCj4gDQo+IFdlbGwsIG5vLCB0aGVuIGxldCdzIGdvIHdpdGggMSAod2l0 aCB0aGUgZGFzaCkgSSB3b3VsZCBzYXkuDQo+IA0KDQorMQ0KDQogIFBhdWwNCg0KPiBKYW4NCg0K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==