From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C1804C433E0 for ; Thu, 4 Feb 2021 17:40:18 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4C81B64F65 for ; Thu, 4 Feb 2021 17:40:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4C81B64F65 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C8F9A6E10F; Thu, 4 Feb 2021 17:40:17 +0000 (UTC) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2DC336E10F for ; Thu, 4 Feb 2021 17:40:16 +0000 (UTC) IronPort-SDR: milt+Jk1Ns3PlqXyqn/94omY6L8fQ0lmWz3Uz60R/V2Gk3oPpd3xBxChNmeHXI/L1kK8D7kD/w XYaun9WFF6ig== X-IronPort-AV: E=McAfee;i="6000,8403,9885"; a="168970382" X-IronPort-AV: E=Sophos;i="5.81,401,1610438400"; d="scan'208";a="168970382" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2021 09:40:13 -0800 IronPort-SDR: o0f9k0K3Qd+kxsJ2kWp9as07Ni9KFZ1QQRPuZfrQlCfi0ISv7djBLR/DOAM9+zsx1lmm/hkbIK JBu9bApmG9Cw== X-IronPort-AV: E=Sophos;i="5.81,401,1610438400"; d="scan'208";a="372895623" Received: from ppiorkow-desk.igk.intel.com (HELO localhost) ([172.28.172.35]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Feb 2021 09:40:11 -0800 Date: Thu, 4 Feb 2021 18:43:05 +0100 From: Piotr =?utf-8?Q?Pi=C3=B3rkowski?= To: Matthew Auld , "Tang, CQ" Message-ID: <20210204174305.aq326ah4wxhgyvwf@intel.com> References: <20210203152333.511453-1-matthew.auld@intel.com> <20210203152333.511453-3-matthew.auld@intel.com> <9a947b5a0cea4072b2e8371c3c17249b@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Subject: Re: [Intel-gfx] [PATCH v3 3/3] drm/i915/gtt/dg1: add PTE_LM plumbing for GGTT X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chris Wilson , "intel-gfx@lists.freedesktop.org" , "Auld, Matthew" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" TWF0dGhldyBBdWxkIDxtYXR0aGV3LndpbGxpYW0uYXVsZEBnbWFpbC5jb20+IHdyb3RlIG9uIMWb cm8gWzIwMjEtbHV0LTAzIDE4OjMyOjM0ICswMDAwXToKPiBPbiBXZWQsIDMgRmViIDIwMjEgYXQg MTg6MDEsIFRhbmcsIENRIDxjcS50YW5nQGludGVsLmNvbT4gd3JvdGU6Cj4gPgo+ID4KPiA+Cj4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+IEZyb206IE1hdHRoZXcgQXVsZCA8 bWF0dGhldy53aWxsaWFtLmF1bGRAZ21haWwuY29tPgo+ID4gPiBTZW50OiBXZWRuZXNkYXksIEZl YnJ1YXJ5IDMsIDIwMjEgOTowMyBBTQo+ID4gPiBUbzogVGFuZywgQ1EgPGNxLnRhbmdAaW50ZWwu Y29tPgo+ID4gPiBDYzogQXVsZCwgTWF0dGhldyA8bWF0dGhldy5hdWxkQGludGVsLmNvbT47IGlu dGVsLQo+ID4gPiBnZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KPiA+ID4gU3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFtQQVRD SCB2MyAzLzNdIGRybS9pOTE1L2d0dC9kZzE6IGFkZCBQVEVfTE0KPiA+ID4gcGx1bWJpbmcgZm9y IEdHVFQKPiA+ID4KPiA+ID4gT24gV2VkLCAzIEZlYiAyMDIxIGF0IDE2OjUxLCBUYW5nLCBDUSA8 Y3EudGFuZ0BpbnRlbC5jb20+IHdyb3RlOgo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4gPiA+IEZyb206IEludGVsLWdmeCA8 aW50ZWwtZ2Z4LWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPiBPbiBCZWhhbGYKPiA+ID4g PiA+IE9mIE1hdHRoZXcgQXVsZAo+ID4gPiA+ID4gU2VudDogV2VkbmVzZGF5LCBGZWJydWFyeSAz LCAyMDIxIDc6MjQgQU0KPiA+ID4gPiA+IFRvOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gPiA+ID4gPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Cj4gPiA+ID4gPiBTdWJqZWN0OiBbSW50ZWwtZ2Z4XSBbUEFUQ0ggdjMgMy8zXSBkcm0vaTkxNS9n dHQvZGcxOiBhZGQgUFRFX0xNCj4gPiA+ID4gPiBwbHVtYmluZyBmb3IgR0dUVAo+ID4gPiA+ID4K PiA+ID4gPiA+IEZvciB0aGUgUFRFcyB3ZSBnZXQgYW4gTE0gYml0LCB0byBzaWduYWwgd2hldGhl ciB0aGUgcGFnZSByZXNpZGVzIGluCj4gPiA+ID4gPiBTTUVNIG9yIExNRU0uCj4gPiA+ID4gPgo+ ID4gPiA+ID4gQmFzZWQgb24gYSBwYXRjaCBmcm9tIE1pY2hlbCBUaGllcnJ5Lgo+ID4gPiA+ID4K PiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVs LmNvbT4KPiA+ID4gPiA+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51 eC5pbnRlbC5jb20+Cj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1 cmlvCj4gPiA+ID4gPiA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KPiA+ID4gPiA+ IFJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiA+ ID4gPiA+IC0tLQo+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dndHQu YyB8IDI0ICsrKysrKysrKysrKysrKysrKystLS0tLQo+ID4gPiA+ID4gZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZ3R0LmggIHwgIDQgKysrLQo+ID4gPiA+ID4gIDIgZmlsZXMgY2hhbmdl ZCwgMjIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPiA+ID4gPiA+Cj4gPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ2d0dC5jCj4gPiA+ID4g PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dndHQuYwo+ID4gPiA+ID4gaW5kZXgg ZmMzOTlhYzE2ZWRhLi5iMGI4ZGVkODM0ZjAgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9nZ3R0LmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2dndHQuYwo+ID4gPiA+ID4gQEAgLTEwLDYgKzEwLDggQEAKPiA+ ID4gPiA+Cj4gPiA+ID4gPiAgI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+ID4gPiA+ID4KPiA+ ID4gPiA+ICsjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX2xtZW0uaCIKPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICAjaW5jbHVkZSAiaW50ZWxfZ3QuaCIKPiA+ID4gPiA+ICAjaW5jbHVkZSAiaTkxNV9kcnYu aCIKPiA+ID4gPiA+ICAjaW5jbHVkZSAiaTkxNV9zY2F0dGVybGlzdC5oIgo+ID4gPiA+ID4gQEAg LTE4OSw3ICsxOTEsMTIgQEAgc3RhdGljIHU2NCBnZW44X2dndHRfcHRlX2VuY29kZShkbWFfYWRk cl90Cj4gPiA+IGFkZHIsCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWwsCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1MzIgZmxhZ3MpICB7Cj4gPiA+ID4gPiAtICAgICByZXR1cm4gYWRkciB8IF9Q QUdFX1BSRVNFTlQ7Cj4gPiA+ID4gPiArICAgICBnZW44X3B0ZV90IHB0ZSA9IGFkZHIgfCBfUEFH RV9QUkVTRU5UOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICAgaWYgKGZsYWdzICYgUFRFX0xN KQo+ID4gPiA+ID4gKyAgICAgICAgICAgICBwdGUgfD0gR0VOMTJfR0dUVF9QVEVfTE07Cj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArICAgICByZXR1cm4gcHRlOwo+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ Cj4gPiA+ID4gPiAgc3RhdGljIHZvaWQgZ2VuOF9zZXRfcHRlKHZvaWQgX19pb21lbSAqYWRkciwg Z2VuOF9wdGVfdCBwdGUpIEBACj4gPiA+ID4gPiAtMjAxLDEzCj4gPiA+ID4gPiArMjA4LDEzIEBA IHN0YXRpYyB2b2lkIGdlbjhfZ2d0dF9pbnNlcnRfcGFnZShzdHJ1Y3QKPiA+ID4gPiA+ICtpOTE1 X2FkZHJlc3Nfc3BhY2UKPiA+ID4gPiA+ICp2bSwKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZG1hX2FkZHJfdCBhZGRyLAo+ID4gPiA+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1NjQgb2Zmc2V0LAo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWwsCj4gPiA+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiB1bnVzZWQpCj4gPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBmbGFncykKPiA+ID4gPiA+ICB7Cj4gPiA+ID4g PiAgICAgICBzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gaTkxNV92bV90b19nZ3R0KHZtKTsKPiA+ ID4gPiA+ICAgICAgIGdlbjhfcHRlX3QgX19pb21lbSAqcHRlID0KPiA+ID4gPiA+ICAgICAgICAg ICAgICAgKGdlbjhfcHRlX3QgX19pb21lbSAqKWdndHQtPmdzbSArIG9mZnNldCAvCj4gPiA+ID4g PiBJOTE1X0dUVF9QQUdFX1NJWkU7Cj4gPiA+ID4gPgo+ID4gPiA+ID4gLSAgICAgZ2VuOF9zZXRf cHRlKHB0ZSwgZ2VuOF9nZ3R0X3B0ZV9lbmNvZGUoYWRkciwgbGV2ZWwsIDApKTsKPiA+ID4gPiA+ ICsgICAgIGdlbjhfc2V0X3B0ZShwdGUsIGdlbjhfZ2d0dF9wdGVfZW5jb2RlKGFkZHIsIGxldmVs LCBmbGFncykpOwo+ID4gPiA+ID4KPiA+ID4gPiA+ICAgICAgIGdndHQtPmludmFsaWRhdGUoZ2d0 dCk7Cj4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gQEAgLTIxNyw3ICsyMjQsNyBAQCBzdGF0aWMgdm9p ZCBnZW44X2dndHRfaW5zZXJ0X2VudHJpZXMoc3RydWN0Cj4gPiA+ID4gPiBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtLAo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIGk5MTVfY2FjaGVfbGV2ZWwgbGV2ZWwsCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHUzMiBmbGFncykgIHsKPiA+ID4gPiA+IC0gICAgIGNvbnN0IGdlbjhf cHRlX3QgcHRlX2VuY29kZSA9IGdlbjhfZ2d0dF9wdGVfZW5jb2RlKDAsIGxldmVsLCAwKTsKPiA+ ID4gPiA+ICsgICAgIGNvbnN0IGdlbjhfcHRlX3QgcHRlX2VuY29kZSA9IGdlbjhfZ2d0dF9wdGVf ZW5jb2RlKDAsIGxldmVsLAo+ID4gPiA+ID4gZmxhZ3MpOwo+ID4gPiA+ID4gICAgICAgc3RydWN0 IGk5MTVfZ2d0dCAqZ2d0dCA9IGk5MTVfdm1fdG9fZ2d0dCh2bSk7Cj4gPiA+ID4gPiAgICAgICBn ZW44X3B0ZV90IF9faW9tZW0gKmd0ZTsKPiA+ID4gPiA+ICAgICAgIGdlbjhfcHRlX3QgX19pb21l bSAqZW5kOwo+ID4gPiA+ID4gQEAgLTQ1OSw2ICs0NjYsOCBAQCBzdGF0aWMgdm9pZCBnZ3R0X2Jp bmRfdm1hKHN0cnVjdAo+ID4gPiA+ID4gaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiA+ID4gPiA+ ICAgICAgIHB0ZV9mbGFncyA9IDA7Cj4gPiA+ID4gPiAgICAgICBpZiAoaTkxNV9nZW1fb2JqZWN0 X2lzX3JlYWRvbmx5KG9iaikpCj4gPiA+ID4gPiAgICAgICAgICAgICAgIHB0ZV9mbGFncyB8PSBQ VEVfUkVBRF9PTkxZOwo+ID4gPiA+ID4gKyAgICAgaWYgKGk5MTVfZ2VtX29iamVjdF9pc19sbWVt KG9iaikpCj4gPiA+ID4gPiArICAgICAgICAgICAgIHB0ZV9mbGFncyB8PSBQVEVfTE07Cj4gPiA+ ID4gPgo+ID4gPiA+ID4gICAgICAgdm0tPmluc2VydF9lbnRyaWVzKHZtLCB2bWEsIGNhY2hlX2xl dmVsLCBwdGVfZmxhZ3MpOwo+ID4gPiA+ID4gICAgICAgdm1hLT5wYWdlX3NpemVzLmd0dCA9IEk5 MTVfR1RUX1BBR0VfU0laRTsgQEAgLTc5NCw2ICs4MDMsNyBAQAo+ID4gPiA+ID4gc3RhdGljIGlu dCBnZ3R0X3Byb2JlX2NvbW1vbihzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0LCB1NjQgc2l6ZSkKPiA+ ID4gPiA+ICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ2d0dC0+dm0uaTkx NTsKPiA+ID4gPiA+ICAgICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihpOTE1 LT5kcm0uZGV2KTsKPiA+ID4gPiA+ICAgICAgIHBoeXNfYWRkcl90IHBoeXNfYWRkcjsKPiA+ID4g PiA+ICsgICAgIHUzMiBwdGVfZmxhZ3M7Cj4gPiA+ID4gPiAgICAgICBpbnQgcmV0Owo+ID4gPiA+ ID4KPiA+ID4gPiA+ICAgICAgIC8qIEZvciBNb2Rlcm4gR0VOcyB0aGUgUFRFcyBhbmQgcmVnaXN0 ZXIgc3BhY2UgYXJlIHNwbGl0IGluCj4gPiA+ID4gPiB0aGUgQkFSICovIEBAIC04MjMsOSArODMz LDEzIEBAIHN0YXRpYyBpbnQgZ2d0dF9wcm9iZV9jb21tb24oc3RydWN0Cj4gPiA+ID4gPiBpOTE1 X2dndHQgKmdndHQsIHU2NCBzaXplKQo+ID4gPiA+ID4gICAgICAgICAgICAgICByZXR1cm4gcmV0 Owo+ID4gPiA+ID4gICAgICAgfQo+ID4gPiA+ID4KPiA+ID4gPiA+ICsgICAgIHB0ZV9mbGFncyA9 IDA7Cj4gPiA+ID4gPiArICAgICBpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX2xtZW0oZ2d0dC0+dm0u c2NyYXRjaFswXSkpCj4gPiA+ID4gPiArICAgICAgICAgICAgIHB0ZV9mbGFncyB8PSBQVEVfTE07 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgICAgICBnZ3R0LT52bS5zY3JhdGNoWzBdLT5lbmNvZGUg PQo+ID4gPiA+ID4gICAgICAgICAgICAgICBnZ3R0LT52bS5wdGVfZW5jb2RlKHB4X2RtYShnZ3R0 LT52bS5zY3JhdGNoWzBdKSwKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJOTE1X0NBQ0hFX05PTkUsIDApOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEk5MTVfQ0FDSEVfTk9ORSwgcHRlX2ZsYWdzKTsKPiA+ID4gPiA+Cj4gPiA+ ID4gPiAgICAgICByZXR1cm4gMDsKPiA+ID4gPiA+ICB9Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmgKPiA+ID4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3R0LmgKPiA+ID4gPiA+IGluZGV4IDBlZWY2MjVkZDc4Ny4u MjRiNTgwOGRmMTZkIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZ3R0LmgKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2d0dC5oCj4gPiA+ID4gPiBAQCAtODUsNyArODUsOSBAQCB0eXBlZGVmIHU2NCBnZW44X3B0 ZV90Owo+ID4gPiA+ID4gICNkZWZpbmUgQllUX1BURV9TTk9PUEVEX0JZX0NQVV9DQUNIRVMgICAg ICAgIFJFR19CSVQoMikKPiA+ID4gPiA+ICAjZGVmaW5lIEJZVF9QVEVfV1JJVEVBQkxFICAgICAg ICAgICAgUkVHX0JJVCgxKQo+ID4gPiA+ID4KPiA+ID4gPiA+IC0jZGVmaW5lIEdFTjEyX1BQR1RU X1BURV9MTSBCSVRfVUxMKDExKQo+ID4gPiA+ID4gKyNkZWZpbmUgR0VOMTJfUFBHVFRfUFRFX0xN ICAgQklUX1VMTCgxMSkKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsjZGVmaW5lIEdFTjEyX0dHVFRf UFRFX0xNICAgIEJJVF9VTEwoMSkKPiA+ID4gPgo+ID4gPiA+IFdoZXJlIGRvZXMgdGhlIEJzcGVj IHNheSBiaXQtMSBpcyBmb3IgTE1FTT8KPiA+ID4KPiA+ID4gQnNwZWM6IDQ1MDE1IDwtIEdHVFQK PiA+ID4gQnNwZWM6IDQ1MDQwIDwtIHBwR1RUCj4gPgo+ID4gSSBsb29rZWQgYm90aCBkb2N1bWVu dCwgSSBkb24ndCBzZWUgYml0LTEgaXMgdXNlZCBhcyBETSBpbmRpY2F0b3IsIGl0IGlzIFIvVyBi aXQuIEkgYWxzbyBzZWUgYml0LTExIGlzIGlnbm9yZWQuCj4gPiBUaGUgb25seSBwbGFjZSBJIHNl ZSBiaXQtMTEgYXMgRE0gaXMgQnNwZWMgNTM1MjEKPiAKPiBJIHNlZSBiaXQtMSBhcyAiTG9jYWwg TWVtb3J5IiBpbiA0NTAxNSwgYW5kIGJpdC0xMSBhcyAiTG9jYWwgTWVtb3J5Igo+IGluIDQ1MDQw LiBBbHNvIHRoZXJlIGlzIG5vIFIvVyBiaXQgZm9yIHRoZSBHR1RUIG9uIERHMSwgc28gbm90IHN1 cmUKPiB3aGF0IHZlcnNpb24gb2YgdGhlIHNwZWMgeW91IGFyZSBsb29raW5nIGF0LiBKdXN0IHRv IGJlIGNsZWFyIHRoZXJlCj4gYXJlIHR3byBkaWZmZXJlbnQgYml0cyBoZXJlLCBvbmUgZm9yIHRo ZSBwcEdUVCBhbmQgb25lIGZvciB0aGUgR0dUVCwKPiB0aGV5IGJvdGggaGF2ZSBkaWZmZXJlbnQg bGF5b3V0cyBmb3IgdGhlaXIgcmVzcGVjdGl2ZSBQVEVzLgo+IAo+IEJzcGVjOiA1MzUyMSBpcyBu b3QgYXBwbGljYWJsZSB0byBERzEuCgpNYXR0aGV3IGhhcyByaWdodC4gQnNwZWMgNDUwMTUgaXMg YXBwbGljYWJsZSBoZXJlIGZvciBHR1RULgpJJ20gY3VycmVudGx5IHdvcmtpbmcgb24gYW4gaW50 ZXJuYWwgc2VyaWVzIHdoZXJlIEknbSBjbGVhbmluZyB0aGlzIGFyZWEgb2YgY29kZS4KCkJhc2Vk IG9uIDQ1MDE1IEkgcHJlcGFyZWQgdGhpcyB0YWJsZToKCi8qCiAqIEdFTjEyIEdHVFQgVGFibGUg RW50cnkgZm9ybWF0OgogKiAgIDYzOjU0IHwgNTM6NTIgfCAgIDUxOjQ2IHwgICA0NToxMiB8ICAg IDExOjIgfCAgMSB8ICAgICAgIDAKICogaWdub3JlZCB8ICAgUEFUIHwgaWdub3JlZCB8IGFkZHJl c3MgfCBpZ25vcmVkIHwgTE0gfCBwcmVzZW50CiAqLwoKClBpb3RyCgo+IAo+ID4KPiA+IC0tQ1EK PiA+Cj4gPgo+ID4gPgo+ID4gPiBJJ2xsIHVwZGF0ZSB0aGUgY29tbWl0IG1lc3NhZ2VzLgo+ID4g Pgo+ID4gPiA+Cj4gPiA+ID4gLS1DUQo+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gIC8qCj4g PiA+ID4gPiAgICogQ2FjaGVhYmlsaXR5IENvbnRyb2wgaXMgYSA0LWJpdCB2YWx1ZS4gVGhlIGxv dyB0aHJlZSBiaXRzIGFyZQo+ID4gPiA+ID4gc3RvcmVkIGluIGJpdHMKPiA+ID4gPiA+IC0tCj4g PiA+ID4gPiAyLjI2LjIKPiA+ID4gPiA+Cj4gPiA+ID4gPiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gPiA+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dAo+ID4gPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiA+ID4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+ ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4g PiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gPiA+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKCi0tIApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK