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=-5.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=no 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 E4029C48BCF for ; Wed, 9 Jun 2021 12:21:00 +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 B034661287 for ; Wed, 9 Jun 2021 12:21:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B034661287 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E82736E243; Wed, 9 Jun 2021 12:20:59 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 709466E2C7; Wed, 9 Jun 2021 12:20:58 +0000 (UTC) IronPort-SDR: d7C19KG0B5Y1ToAZOUl5tCnqG8TFdwG0W6iUWn6i/+F8tdw+ZY+si64VlNcK6YA3vQHXQjJS43 Rosqh+0sxE1Q== X-IronPort-AV: E=McAfee;i="6200,9189,10009"; a="204873215" X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="204873215" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 05:20:57 -0700 IronPort-SDR: 9W2lNE1DGkmylqlo1zkI5ksJCbEzMg8kS4YOXJNPtOGNycrn/fea7+s4IavCGha9+tNBf65S/V TsZ+25ffddKw== X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="419261382" Received: from gbwalsh-mobl6.ger.corp.intel.com (HELO [10.252.10.147]) ([10.252.10.147]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 05:20:55 -0700 Subject: Re: [Intel-gfx] [PATCH v2 0/9] Prereqs for TTM accelerated migration To: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= , Daniel Vetter References: <20210609063436.284332-1-thomas.hellstrom@linux.intel.com> <9f38fc28-15fb-2736-ba01-503821fdbe54@linux.intel.com> From: Matthew Auld Message-ID: <4d570a5b-0ea7-71ab-5082-e67f0cd668a7@intel.com> Date: Wed, 9 Jun 2021 13:20:53 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <9f38fc28-15fb-2736-ba01-503821fdbe54@linux.intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On 09/06/2021 13:16, Thomas Hellström wrote: > > On 6/9/21 1:48 PM, Daniel Vetter wrote: >> On Wed, Jun 09, 2021 at 08:34:27AM +0200, Thomas Hellström wrote: >>> A couple of patches from Chris which implement pipelined migration and >>> clears by atomically writing the PTEs in place before performing the >>> actual blit. >>> >>> Some ww utilities mainly for the accompanying selftests added by Thomas, >>> as well as modified the above patches for ww locking- and lmem support. >>> >>> The actual hook up to the i915 ttm backend is being worked on and not >>> included yet, so this is considered to be an early review opportunity. >>> >>> v2: >>> - A couple of minor style fixes pointed out by Matthew Auld >>> - Export and use intel_engine_destroy_pinned_context() to address a >>> ls   CI warning / failure. >> Just to check my understanding of the plan: These are the new windowed >> clear/blt functions which we plan to use everywhere, because less nasty >> locking implications? And the clear/blt we currently have in upstream >> will >> be replaced? > > Yes. These are for LMEM clearing and migration. It looks to me like the > other ones we have in upstream are actually unused except for selftests. > We're actually using CPU clearing for now. > >> >> If so would be nice if this patch set includes that replacement work (I >> think right now all we have is the clear for lmem), including updating of >> selftests and stuff like that. Just to avoid having two ways to do the >> same thing in the driver. > > OK, I'll have a look at stripping the existing code. If we need it > moving forward, we can always re-add. Some low hanging fruit would be all the client_blt stuff which can for sure be deleted now. > > /Thomas > > >> -Daniel >> >>> Chris Wilson (6): >>>    drm/i915/gt: Add an insert_entry for gen8_ppgtt >>>    drm/i915/gt: Add a routine to iterate over the pagetables of a GTT >>>    drm/i915/gt: Export the pinned context constructor and destructor >>>    drm/i915/gt: Pipelined page migration >>>    drm/i915/gt: Pipelined clear >>>    drm/i915/gt: Setup a default migration context on the GT >>> >>> Thomas Hellström (3): >>>    drm/i915: Reference objects on the ww object list >>>    drm/i915: Break out dma_resv ww locking utilities to separate files >>>    drm/i915: Introduce a ww transaction helper >>> >>>   drivers/gpu/drm/i915/Makefile                 |   2 + >>>   drivers/gpu/drm/i915/gem/i915_gem_object.h    |   9 +- >>>   drivers/gpu/drm/i915/gt/gen8_ppgtt.c          |  68 ++ >>>   drivers/gpu/drm/i915/gt/intel_engine.h        |  12 + >>>   drivers/gpu/drm/i915/gt/intel_engine_cs.c     |  27 +- >>>   drivers/gpu/drm/i915/gt/intel_gpu_commands.h  |   2 + >>>   drivers/gpu/drm/i915/gt/intel_gt.c            |   4 + >>>   drivers/gpu/drm/i915/gt/intel_gt_types.h      |   3 + >>>   drivers/gpu/drm/i915/gt/intel_gtt.h           |   7 + >>>   drivers/gpu/drm/i915/gt/intel_migrate.c       | 685 ++++++++++++++++++ >>>   drivers/gpu/drm/i915/gt/intel_migrate.h       |  65 ++ >>>   drivers/gpu/drm/i915/gt/intel_migrate_types.h |  15 + >>>   drivers/gpu/drm/i915/gt/intel_renderstate.h   |   1 + >>>   drivers/gpu/drm/i915/gt/intel_ring.h          |   1 + >>>   drivers/gpu/drm/i915/gt/selftest_migrate.c    | 671 +++++++++++++++++ >>>   drivers/gpu/drm/i915/i915_gem.c               |  52 -- >>>   drivers/gpu/drm/i915/i915_gem.h               |  12 - >>>   drivers/gpu/drm/i915/i915_gem_ww.c            |  63 ++ >>>   drivers/gpu/drm/i915/i915_gem_ww.h            |  50 ++ >>>   .../drm/i915/selftests/i915_live_selftests.h  |   1 + >>>   .../drm/i915/selftests/i915_perf_selftests.h  |   1 + >>>   21 files changed, 1675 insertions(+), 76 deletions(-) >>>   create mode 100644 drivers/gpu/drm/i915/gt/intel_migrate.c >>>   create mode 100644 drivers/gpu/drm/i915/gt/intel_migrate.h >>>   create mode 100644 drivers/gpu/drm/i915/gt/intel_migrate_types.h >>>   create mode 100644 drivers/gpu/drm/i915/gt/selftest_migrate.c >>>   create mode 100644 drivers/gpu/drm/i915/i915_gem_ww.c >>>   create mode 100644 drivers/gpu/drm/i915/i915_gem_ww.h >>> >>> -- >>> 2.31.1 >>> >>> _______________________________________________ >>> Intel-gfx mailing list >>> Intel-gfx@lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx 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=-5.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=no 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 5AAE4C48BD1 for ; Wed, 9 Jun 2021 12:21:05 +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 2642861287 for ; Wed, 9 Jun 2021 12:21:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2642861287 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 2BAB488E3F; Wed, 9 Jun 2021 12:21:00 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 709466E2C7; Wed, 9 Jun 2021 12:20:58 +0000 (UTC) IronPort-SDR: d7C19KG0B5Y1ToAZOUl5tCnqG8TFdwG0W6iUWn6i/+F8tdw+ZY+si64VlNcK6YA3vQHXQjJS43 Rosqh+0sxE1Q== X-IronPort-AV: E=McAfee;i="6200,9189,10009"; a="204873215" X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="204873215" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 05:20:57 -0700 IronPort-SDR: 9W2lNE1DGkmylqlo1zkI5ksJCbEzMg8kS4YOXJNPtOGNycrn/fea7+s4IavCGha9+tNBf65S/V TsZ+25ffddKw== X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="419261382" Received: from gbwalsh-mobl6.ger.corp.intel.com (HELO [10.252.10.147]) ([10.252.10.147]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 05:20:55 -0700 To: =?UTF-8?Q?Thomas_Hellstr=c3=b6m?= , Daniel Vetter References: <20210609063436.284332-1-thomas.hellstrom@linux.intel.com> <9f38fc28-15fb-2736-ba01-503821fdbe54@linux.intel.com> From: Matthew Auld Message-ID: <4d570a5b-0ea7-71ab-5082-e67f0cd668a7@intel.com> Date: Wed, 9 Jun 2021 13:20:53 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: <9f38fc28-15fb-2736-ba01-503821fdbe54@linux.intel.com> Content-Language: en-GB Subject: Re: [Intel-gfx] [PATCH v2 0/9] Prereqs for TTM accelerated migration 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: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gMDkvMDYvMjAyMSAxMzoxNiwgVGhvbWFzIEhlbGxzdHLDtm0gd3JvdGU6Cj4gCj4gT24gNi85 LzIxIDE6NDggUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+IE9uIFdlZCwgSnVuIDA5LCAyMDIx IGF0IDA4OjM0OjI3QU0gKzAyMDAsIFRob21hcyBIZWxsc3Ryw7ZtIHdyb3RlOgo+Pj4gQSBjb3Vw bGUgb2YgcGF0Y2hlcyBmcm9tIENocmlzIHdoaWNoIGltcGxlbWVudCBwaXBlbGluZWQgbWlncmF0 aW9uIGFuZAo+Pj4gY2xlYXJzIGJ5IGF0b21pY2FsbHkgd3JpdGluZyB0aGUgUFRFcyBpbiBwbGFj ZSBiZWZvcmUgcGVyZm9ybWluZyB0aGUKPj4+IGFjdHVhbCBibGl0Lgo+Pj4KPj4+IFNvbWUgd3cg dXRpbGl0aWVzIG1haW5seSBmb3IgdGhlIGFjY29tcGFueWluZyBzZWxmdGVzdHMgYWRkZWQgYnkg VGhvbWFzLAo+Pj4gYXMgd2VsbCBhcyBtb2RpZmllZCB0aGUgYWJvdmUgcGF0Y2hlcyBmb3Igd3cg bG9ja2luZy0gYW5kIGxtZW0gc3VwcG9ydC4KPj4+Cj4+PiBUaGUgYWN0dWFsIGhvb2sgdXAgdG8g dGhlIGk5MTUgdHRtIGJhY2tlbmQgaXMgYmVpbmcgd29ya2VkIG9uIGFuZCBub3QKPj4+IGluY2x1 ZGVkIHlldCwgc28gdGhpcyBpcyBjb25zaWRlcmVkIHRvIGJlIGFuIGVhcmx5IHJldmlldyBvcHBv cnR1bml0eS4KPj4+Cj4+PiB2MjoKPj4+IC0gQSBjb3VwbGUgb2YgbWlub3Igc3R5bGUgZml4ZXMg cG9pbnRlZCBvdXQgYnkgTWF0dGhldyBBdWxkCj4+PiAtIEV4cG9ydCBhbmQgdXNlIGludGVsX2Vu Z2luZV9kZXN0cm95X3Bpbm5lZF9jb250ZXh0KCkgdG8gYWRkcmVzcyBhCj4+PiBsc8KgwqAgQ0kg d2FybmluZyAvIGZhaWx1cmUuCj4+IEp1c3QgdG8gY2hlY2sgbXkgdW5kZXJzdGFuZGluZyBvZiB0 aGUgcGxhbjogVGhlc2UgYXJlIHRoZSBuZXcgd2luZG93ZWQKPj4gY2xlYXIvYmx0IGZ1bmN0aW9u cyB3aGljaCB3ZSBwbGFuIHRvIHVzZSBldmVyeXdoZXJlLCBiZWNhdXNlIGxlc3MgbmFzdHkKPj4g bG9ja2luZyBpbXBsaWNhdGlvbnM/IEFuZCB0aGUgY2xlYXIvYmx0IHdlIGN1cnJlbnRseSBoYXZl IGluIHVwc3RyZWFtIAo+PiB3aWxsCj4+IGJlIHJlcGxhY2VkPwo+IAo+IFllcy4gVGhlc2UgYXJl IGZvciBMTUVNIGNsZWFyaW5nIGFuZCBtaWdyYXRpb24uIEl0IGxvb2tzIHRvIG1lIGxpa2UgdGhl IAo+IG90aGVyIG9uZXMgd2UgaGF2ZSBpbiB1cHN0cmVhbSBhcmUgYWN0dWFsbHkgdW51c2VkIGV4 Y2VwdCBmb3Igc2VsZnRlc3RzLiAKPiBXZSdyZSBhY3R1YWxseSB1c2luZyBDUFUgY2xlYXJpbmcg Zm9yIG5vdy4KPiAKPj4KPj4gSWYgc28gd291bGQgYmUgbmljZSBpZiB0aGlzIHBhdGNoIHNldCBp bmNsdWRlcyB0aGF0IHJlcGxhY2VtZW50IHdvcmsgKEkKPj4gdGhpbmsgcmlnaHQgbm93IGFsbCB3 ZSBoYXZlIGlzIHRoZSBjbGVhciBmb3IgbG1lbSksIGluY2x1ZGluZyB1cGRhdGluZyBvZgo+PiBz ZWxmdGVzdHMgYW5kIHN0dWZmIGxpa2UgdGhhdC4gSnVzdCB0byBhdm9pZCBoYXZpbmcgdHdvIHdh eXMgdG8gZG8gdGhlCj4+IHNhbWUgdGhpbmcgaW4gdGhlIGRyaXZlci4KPiAKPiBPSywgSSdsbCBo YXZlIGEgbG9vayBhdCBzdHJpcHBpbmcgdGhlIGV4aXN0aW5nIGNvZGUuIElmIHdlIG5lZWQgaXQg Cj4gbW92aW5nIGZvcndhcmQsIHdlIGNhbiBhbHdheXMgcmUtYWRkLgoKU29tZSBsb3cgaGFuZ2lu ZyBmcnVpdCB3b3VsZCBiZSBhbGwgdGhlIGNsaWVudF9ibHQgc3R1ZmYgd2hpY2ggY2FuIGZvciAK c3VyZSBiZSBkZWxldGVkIG5vdy4KCj4gCj4gL1Rob21hcwo+IAo+IAo+PiAtRGFuaWVsCj4+Cj4+ PiBDaHJpcyBXaWxzb24gKDYpOgo+Pj4gwqDCoCBkcm0vaTkxNS9ndDogQWRkIGFuIGluc2VydF9l bnRyeSBmb3IgZ2VuOF9wcGd0dAo+Pj4gwqDCoCBkcm0vaTkxNS9ndDogQWRkIGEgcm91dGluZSB0 byBpdGVyYXRlIG92ZXIgdGhlIHBhZ2V0YWJsZXMgb2YgYSBHVFQKPj4+IMKgwqAgZHJtL2k5MTUv Z3Q6IEV4cG9ydCB0aGUgcGlubmVkIGNvbnRleHQgY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IK Pj4+IMKgwqAgZHJtL2k5MTUvZ3Q6IFBpcGVsaW5lZCBwYWdlIG1pZ3JhdGlvbgo+Pj4gwqDCoCBk cm0vaTkxNS9ndDogUGlwZWxpbmVkIGNsZWFyCj4+PiDCoMKgIGRybS9pOTE1L2d0OiBTZXR1cCBh IGRlZmF1bHQgbWlncmF0aW9uIGNvbnRleHQgb24gdGhlIEdUCj4+Pgo+Pj4gVGhvbWFzIEhlbGxz dHLDtm0gKDMpOgo+Pj4gwqDCoCBkcm0vaTkxNTogUmVmZXJlbmNlIG9iamVjdHMgb24gdGhlIHd3 IG9iamVjdCBsaXN0Cj4+PiDCoMKgIGRybS9pOTE1OiBCcmVhayBvdXQgZG1hX3Jlc3Ygd3cgbG9j a2luZyB1dGlsaXRpZXMgdG8gc2VwYXJhdGUgZmlsZXMKPj4+IMKgwqAgZHJtL2k5MTU6IEludHJv ZHVjZSBhIHd3IHRyYW5zYWN0aW9uIGhlbHBlcgo+Pj4KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4+ PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmjCoMKgwqAgfMKg wqAgOSArLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9wcGd0dC5jwqDCoMKg wqDCoMKgwqDCoMKgIHzCoCA2OCArKwo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZW5naW5lLmjCoMKgwqDCoMKgwqDCoCB8wqAgMTIgKwo+Pj4gwqAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmPCoMKgwqDCoCB8wqAgMjcgKy0KPj4+IMKgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9jb21tYW5kcy5owqAgfMKgwqAgMiArCj4+PiDC oCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB8wqDCoCA0ICsKPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVz LmjCoMKgwqDCoMKgIHzCoMKgIDMgKwo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3R0LmjCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA3ICsKPj4+IMKgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX21pZ3JhdGUuY8KgwqDCoMKgwqDCoCB8IDY4NSArKysrKysrKysr KysrKysrKysKPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX21pZ3JhdGUuaMKg wqDCoMKgwqDCoCB8wqAgNjUgKysKPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X21pZ3JhdGVfdHlwZXMuaCB8wqAgMTUgKwo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfcmVuZGVyc3RhdGUuaMKgwqAgfMKgwqAgMSArCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9yaW5nLmjCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4+PiDCoCBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9taWdyYXRlLmPCoMKgwqAgfCA2NzEgKysr KysrKysrKysrKysrKysKPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA1MiAtLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDEyIC0KPj4+ IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3d3LmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHzCoCA2MyArKwo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fd3cuaMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDUwICsrCj4+PiDCoCAuLi4vZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaMKgIHzCoMKgIDEgKwo+Pj4gwqAgLi4uL2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X3BlcmZfc2VsZnRlc3RzLmjCoCB8wqDCoCAxICsKPj4+IMKgIDIxIGZp bGVzIGNoYW5nZWQsIDE2NzUgaW5zZXJ0aW9ucygrKSwgNzYgZGVsZXRpb25zKC0pCj4+PiDCoCBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0ZS5j Cj4+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf bWlncmF0ZS5oCj4+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbWlncmF0ZV90eXBlcy5oCj4+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbWlncmF0ZS5jCj4+PiDCoCBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fd3cuYwo+Pj4gwqAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3d3LmgKPj4+Cj4+PiAtLSAK Pj4+IDIuMzEuMQo+Pj4KPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+PiBJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK