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=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 3A91CC07E9B for ; Wed, 7 Jul 2021 00:57:42 +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 D40B661CAA for ; Wed, 7 Jul 2021 00:57:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D40B661CAA 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 D51C66E81B; Wed, 7 Jul 2021 00:57:38 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0A3E96E7EF; Wed, 7 Jul 2021 00:57:37 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10037"; a="196386647" X-IronPort-AV: E=Sophos;i="5.83,330,1616482800"; d="scan'208";a="196386647" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jul 2021 17:57:36 -0700 X-IronPort-AV: E=Sophos;i="5.83,330,1616482800"; d="scan'208";a="457266543" Received: from johnharr-mobl1.amr.corp.intel.com (HELO [10.212.151.177]) ([10.212.151.177]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jul 2021 17:57:35 -0700 Subject: Re: [Intel-gfx] [PATCH 47/47] drm/i915/guc: Unblock GuC submission on Gen11+ To: Martin Peres , Michal Wajdeczko , Pekka Paalanen , Daniel Vetter References: <20210624070516.21893-1-matthew.brost@intel.com> <20210624070516.21893-48-matthew.brost@intel.com> <88cbe963-7188-f4ae-5acf-01a80bd2fe25@free.fr> <05e1d462-57ae-888a-888c-3ad486150821@intel.com> <20210701111410.3fc6551e@eldfell> <050296b9-8958-353a-9f76-699bfbafa1c1@free.fr> <20210702102944.3a8c4915@eldfell> <2d3b06c3-5f69-5045-191f-3fd705a3fb40@free.fr> <7889d935-65fb-5f11-ac5d-f9d757b9ee84@free.fr> From: John Harrison Message-ID: Date: Tue, 6 Jul 2021 17:57:35 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <7889d935-65fb-5f11-ac5d-f9d757b9ee84@free.fr> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-GB 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 , dri-devel Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" On 7/3/2021 01:21, Martin Peres wrote: > On 02/07/2021 18:07, Michal Wajdeczko wrote: >> On 02.07.2021 10:09, Martin Peres wrote: >>> On 02/07/2021 10:29, Pekka Paalanen wrote: >>>> On Thu, 1 Jul 2021 21:28:06 +0200 >>>> Daniel Vetter wrote: >>>> >>>>> On Thu, Jul 1, 2021 at 8:27 PM Martin Peres >>>>> wrote: >>>>>> >>>>>> On 01/07/2021 11:14, Pekka Paalanen wrote: >>>>>>> On Wed, 30 Jun 2021 11:58:25 -0700 >>>>>>> John Harrison wrote: >>>>>>>> On 6/30/2021 01:22, Martin Peres wrote: >>>>>>>>> On 24/06/2021 10:05, Matthew Brost wrote: >>>>>>>>>> From: Daniele Ceraolo Spurio >>>>>>>>>> >>>>>>>>>> Unblock GuC submission on Gen11+ platforms. >>>>>>>>>> >>>>>>>>>> Signed-off-by: Michal Wajdeczko >>>>>>>>>> Signed-off-by: Daniele Ceraolo Spurio >>>>>>>>>> >>>>>>>>>> Signed-off-by: Matthew Brost >>>>>>>>>> --- >>>>>>>>>> drivers/gpu/drm/i915/gt/uc/intel_guc.h |  1 + >>>>>>>>>> drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c |  8 ++++++++ >>>>>>>>>> drivers/gpu/drm/i915/gt/uc/intel_guc_submission.h |  3 +-- >>>>>>>>>> drivers/gpu/drm/i915/gt/uc/intel_uc.c | 14 >>>>>>>>>> +++++++++----- >>>>>>>>>>      4 files changed, 19 insertions(+), 7 deletions(-) >>>>>>> >>>>>>> ... >>>>>>>>>> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c >>>>>>>>>> b/drivers/gpu/drm/i915/gt/uc/intel_uc.c >>>>>>>>>> index 7a69c3c027e9..61be0aa81492 100644 >>>>>>>>>> --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c >>>>>>>>>> +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c >>>>>>>>>> @@ -34,8 +34,15 @@ static void uc_expand_default_options(struct >>>>>>>>>> intel_uc *uc) >>>>>>>>>>              return; >>>>>>>>>>          } >>>>>>>>>>      -    /* Default: enable HuC authentication only */ >>>>>>>>>> -    i915->params.enable_guc = ENABLE_GUC_LOAD_HUC; >>>>>>>>>> +    /* Intermediate platforms are HuC authentication only */ >>>>>>>>>> +    if (IS_DG1(i915) || IS_ALDERLAKE_S(i915)) { >>>>>>>>>> +        drm_dbg(&i915->drm, "Disabling GuC only due to old >>>>>>>>>> platform\n"); >>>>>>>>> >>>>>>>>> This comment does not seem accurate, given that DG1 is barely >>>>>>>>> out, and >>>>>>>>> ADL is not out yet. How about: >>>>>>>>> >>>>>>>>> "Disabling GuC on untested platforms"? >>>>>>>> Just because something is not in the shops yet does not mean it is >>>>>>>> new. >>>>>>>> Technology is always obsolete by the time it goes on sale. >>>>>>> >>>>>>> That is a very good reason to not use terminology like "new", >>>>>>> "old", >>>>>>> "current", "modern" etc. at all. >>>>>>> >>>>>>> End users like me definitely do not share your interpretation of >>>>>>> "old". >>>>>> >>>>>> Yep, old and new is relative. In the end, what matters is the >>>>>> validation >>>>>> effort, which is why I was proposing "untested platforms". >>>>>> >>>>>> Also, remember that you are not writing these messages for Intel >>>>>> engineers, but instead are writing for Linux *users*. >>>>> >>>>> It's drm_dbg. Users don't read this stuff, at least not users with no >>>>> clue what the driver does and stuff like that. >>>> >>>> If I had a problem, I would read it, and I have no clue what anything >>>> of that is. >>> >>> Exactly. I don't see how replacing 'old' for 'untested' helps anybody to understand anything. Untested just implies we can't be bothered to test stuff before publishing it. And as previously stated, this is purely a political decision not a technical one. Sure, change the message to be 'Disabling GuC submission but enabling HuC loading via GuC on platform XXX' if that makes it clearer what is going on. Or just drop the message completely. It's simply explaining what the default option is for the current platform which you can also get by reading the code. However, I disagree that 'untested' is the correct message. Quite a lot of testing has been happening on TGL+ with GuC submission enabled. >>> >>> This level of defense for what is clearly a bad *debug* message (at the >>> very least, the grammar) makes no sense at all! >>> >>> I don't want to hear arguments like "Not my patch" from a developer >>> literally sending the patch to the ML and who added his SoB to the >>> patch, playing with words, or minimizing the problem of having such a >>> message. >> >> Agree that 'not my patch' is never a good excuse, but equally we can't >> blame original patch author as patch was updated few times since then. > > I never wanted to blame the author here, I was only speaking about the > handling of feedback on the patch. > >> >> Maybe to avoid confusions and simplify reviews, we could split this >> patch into two smaller: first one that really unblocks GuC submission on >> all Gen11+ (see __guc_submission_supported) and second one that updates >> defaults for Gen12+ (see uc_expand_default_options), as original patch >> (from ~2019) evolved more than what title/commit message says. > > Both work for me, as long as it is a collaborative effort. I'm not seeing how splitting the patch up fixes the complaints about the debug message. And to be clear, no-one is actually arguing for a code change as such? The issue is just about the text of the debug message? Or did I miss something somewhere? John. > > Cheers, > Martin > >> >> Then we can fix all messaging and make sure it's clear and understood. >> >> Thanks, >> Michal >> >>> >>> All of the above are just clear signals for the community to get off >>> your playground, which is frankly unacceptable. Your email address does >>> not matter. >>> >>> In the spirit of collaboration, your response should have been "Good >>> catch, how about XXXX or YYYY?". This would not have wasted everyone's >>> time in an attempt to just have it your way. >>> >>> My level of confidence in this GuC transition was already low, but you >>> guys are working hard to shoot yourself in the foot. Trust should be >>> earned! >>> >>> Martin >>> >>>> >>>> >>>> Thanks, >>>> pq >>>> >>> _______________________________________________ >>> Intel-gfx mailing list >>> Intel-gfx@lists.freedesktop.org >>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx > _______________________________________________ > 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=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 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 5212DC07E96 for ; Wed, 7 Jul 2021 00:57:39 +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 DC68961CAA for ; Wed, 7 Jul 2021 00:57:38 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DC68961CAA 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 5B0EF6E802; Wed, 7 Jul 2021 00:57:38 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0A3E96E7EF; Wed, 7 Jul 2021 00:57:37 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10037"; a="196386647" X-IronPort-AV: E=Sophos;i="5.83,330,1616482800"; d="scan'208";a="196386647" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jul 2021 17:57:36 -0700 X-IronPort-AV: E=Sophos;i="5.83,330,1616482800"; d="scan'208";a="457266543" Received: from johnharr-mobl1.amr.corp.intel.com (HELO [10.212.151.177]) ([10.212.151.177]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jul 2021 17:57:35 -0700 To: Martin Peres , Michal Wajdeczko , Pekka Paalanen , Daniel Vetter References: <20210624070516.21893-1-matthew.brost@intel.com> <20210624070516.21893-48-matthew.brost@intel.com> <88cbe963-7188-f4ae-5acf-01a80bd2fe25@free.fr> <05e1d462-57ae-888a-888c-3ad486150821@intel.com> <20210701111410.3fc6551e@eldfell> <050296b9-8958-353a-9f76-699bfbafa1c1@free.fr> <20210702102944.3a8c4915@eldfell> <2d3b06c3-5f69-5045-191f-3fd705a3fb40@free.fr> <7889d935-65fb-5f11-ac5d-f9d757b9ee84@free.fr> From: John Harrison Message-ID: Date: Tue, 6 Jul 2021 17:57:35 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <7889d935-65fb-5f11-ac5d-f9d757b9ee84@free.fr> Content-Language: en-GB Subject: Re: [Intel-gfx] [PATCH 47/47] drm/i915/guc: Unblock GuC submission on Gen11+ 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 , dri-devel Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gNy8zLzIwMjEgMDE6MjEsIE1hcnRpbiBQZXJlcyB3cm90ZToKPiBPbiAwMi8wNy8yMDIxIDE4 OjA3LCBNaWNoYWwgV2FqZGVjemtvIHdyb3RlOgo+PiBPbiAwMi4wNy4yMDIxIDEwOjA5LCBNYXJ0 aW4gUGVyZXMgd3JvdGU6Cj4+PiBPbiAwMi8wNy8yMDIxIDEwOjI5LCBQZWtrYSBQYWFsYW5lbiB3 cm90ZToKPj4+PiBPbiBUaHUsIDEgSnVsIDIwMjEgMjE6Mjg6MDYgKzAyMDAKPj4+PiBEYW5pZWwg VmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+IHdyb3RlOgo+Pj4+Cj4+Pj4+IE9uIFRodSwgSnVsIDEs IDIwMjEgYXQgODoyNyBQTSBNYXJ0aW4gUGVyZXMgPG1hcnRpbi5wZXJlc0BmcmVlLmZyPgo+Pj4+ PiB3cm90ZToKPj4+Pj4+Cj4+Pj4+PiBPbiAwMS8wNy8yMDIxIDExOjE0LCBQZWtrYSBQYWFsYW5l biB3cm90ZToKPj4+Pj4+PiBPbiBXZWQsIDMwIEp1biAyMDIxIDExOjU4OjI1IC0wNzAwCj4+Pj4+ Pj4gSm9obiBIYXJyaXNvbiA8am9obi5jLmhhcnJpc29uQGludGVsLmNvbT4gd3JvdGU6Cj4+Pj4+ Pj4+IE9uIDYvMzAvMjAyMSAwMToyMiwgTWFydGluIFBlcmVzIHdyb3RlOgo+Pj4+Pj4+Pj4gT24g MjQvMDYvMjAyMSAxMDowNSwgTWF0dGhldyBCcm9zdCB3cm90ZToKPj4+Pj4+Pj4+PiBGcm9tOiBE YW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+ Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gVW5ibG9jayBHdUMgc3VibWlzc2lvbiBvbiBHZW4xMSsgcGxh dGZvcm1zLgo+Pj4+Pj4+Pj4+Cj4+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTWljaGFsIFdhamRl Y3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1i eTogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbwo+Pj4+Pj4+Pj4+IDxkYW5pZWxlLmNlcmFvbG9zcHVy aW9AaW50ZWwuY29tPgo+Pj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgQnJvc3QgPG1h dHRoZXcuYnJvc3RAaW50ZWwuY29tPgo+Pj4+Pj4+Pj4+IC0tLQo+Pj4+Pj4+Pj4+IGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oIHzCoCAxICsKPj4+Pj4+Pj4+PiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIHzCoCA4ICsrKysrKysr Cj4+Pj4+Pj4+Pj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Np b24uaCB8wqAgMyArLS0KPj4+Pj4+Pj4+PiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF91Yy5jIHwgMTQKPj4+Pj4+Pj4+PiArKysrKysrKystLS0tLQo+Pj4+Pj4+Pj4+IMKgwqDCoMKg IDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKPj4+Pj4+ Pgo+Pj4+Pj4+IC4uLgo+Pj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF91Yy5jCj4+Pj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF91Yy5jCj4+Pj4+Pj4+Pj4gaW5kZXggN2E2OWMzYzAyN2U5Li42MWJlMGFhODE0OTIg MTAwNjQ0Cj4+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf dWMuYwo+Pj4+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3Vj LmMKPj4+Pj4+Pj4+PiBAQCAtMzQsOCArMzQsMTUgQEAgc3RhdGljIHZvaWQgdWNfZXhwYW5kX2Rl ZmF1bHRfb3B0aW9ucyhzdHJ1Y3QKPj4+Pj4+Pj4+PiBpbnRlbF91YyAqdWMpCj4+Pj4+Pj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4+Pj4+Pj4+PiDCoMKgwqDCoMKgwqDC oMKgIH0KPj4+Pj4+Pj4+PiDCoMKgwqDCoCAtwqDCoMKgIC8qIERlZmF1bHQ6IGVuYWJsZSBIdUMg YXV0aGVudGljYXRpb24gb25seSAqLwo+Pj4+Pj4+Pj4+IC3CoMKgwqAgaTkxNS0+cGFyYW1zLmVu YWJsZV9ndWMgPSBFTkFCTEVfR1VDX0xPQURfSFVDOwo+Pj4+Pj4+Pj4+ICvCoMKgwqAgLyogSW50 ZXJtZWRpYXRlIHBsYXRmb3JtcyBhcmUgSHVDIGF1dGhlbnRpY2F0aW9uIG9ubHkgKi8KPj4+Pj4+ Pj4+PiArwqDCoMKgIGlmIChJU19ERzEoaTkxNSkgfHwgSVNfQUxERVJMQUtFX1MoaTkxNSkpIHsK Pj4+Pj4+Pj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2RiZygmaTkxNS0+ZHJtLCAiRGlzYWJsaW5n IEd1QyBvbmx5IGR1ZSB0byBvbGQKPj4+Pj4+Pj4+PiBwbGF0Zm9ybVxuIik7Cj4+Pj4+Pj4+Pgo+ Pj4+Pj4+Pj4gVGhpcyBjb21tZW50IGRvZXMgbm90IHNlZW0gYWNjdXJhdGUsIGdpdmVuIHRoYXQg REcxIGlzIGJhcmVseQo+Pj4+Pj4+Pj4gb3V0LCBhbmQKPj4+Pj4+Pj4+IEFETCBpcyBub3Qgb3V0 IHlldC4gSG93IGFib3V0Ogo+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+ICJEaXNhYmxpbmcgR3VDIG9uIHVu dGVzdGVkIHBsYXRmb3JtcyI/Cj4+Pj4+Pj4+IEp1c3QgYmVjYXVzZSBzb21ldGhpbmcgaXMgbm90 IGluIHRoZSBzaG9wcyB5ZXQgZG9lcyBub3QgbWVhbiBpdCBpcwo+Pj4+Pj4+PiBuZXcuCj4+Pj4+ Pj4+IFRlY2hub2xvZ3kgaXMgYWx3YXlzIG9ic29sZXRlIGJ5IHRoZSB0aW1lIGl0IGdvZXMgb24g c2FsZS4KPj4+Pj4+Pgo+Pj4+Pj4+IFRoYXQgaXMgYSB2ZXJ5IGdvb2QgcmVhc29uIHRvIG5vdCB1 c2UgdGVybWlub2xvZ3kgbGlrZSAibmV3IiwgCj4+Pj4+Pj4gIm9sZCIsCj4+Pj4+Pj4gImN1cnJl bnQiLCAibW9kZXJuIiBldGMuIGF0IGFsbC4KPj4+Pj4+Pgo+Pj4+Pj4+IEVuZCB1c2VycyBsaWtl IG1lIGRlZmluaXRlbHkgZG8gbm90IHNoYXJlIHlvdXIgaW50ZXJwcmV0YXRpb24gb2YKPj4+Pj4+ PiAib2xkIi4KPj4+Pj4+Cj4+Pj4+PiBZZXAsIG9sZCBhbmQgbmV3IGlzIHJlbGF0aXZlLiBJbiB0 aGUgZW5kLCB3aGF0IG1hdHRlcnMgaXMgdGhlCj4+Pj4+PiB2YWxpZGF0aW9uCj4+Pj4+PiBlZmZv cnQsIHdoaWNoIGlzIHdoeSBJIHdhcyBwcm9wb3NpbmcgInVudGVzdGVkIHBsYXRmb3JtcyIuCj4+ Pj4+Pgo+Pj4+Pj4gQWxzbywgcmVtZW1iZXIgdGhhdCB5b3UgYXJlIG5vdCB3cml0aW5nIHRoZXNl IG1lc3NhZ2VzIGZvciBJbnRlbAo+Pj4+Pj4gZW5naW5lZXJzLCBidXQgaW5zdGVhZCBhcmUgd3Jp dGluZyBmb3IgTGludXggKnVzZXJzKi4KPj4+Pj4KPj4+Pj4gSXQncyBkcm1fZGJnLiBVc2VycyBk b24ndCByZWFkIHRoaXMgc3R1ZmYsIGF0IGxlYXN0IG5vdCB1c2VycyB3aXRoIG5vCj4+Pj4+IGNs dWUgd2hhdCB0aGUgZHJpdmVyIGRvZXMgYW5kIHN0dWZmIGxpa2UgdGhhdC4KPj4+Pgo+Pj4+IElm IEkgaGFkIGEgcHJvYmxlbSwgSSB3b3VsZCByZWFkIGl0LCBhbmQgSSBoYXZlIG5vIGNsdWUgd2hh dCBhbnl0aGluZwo+Pj4+IG9mIHRoYXQgaXMuCj4+Pgo+Pj4gRXhhY3RseS4KSSBkb24ndCBzZWUg aG93IHJlcGxhY2luZyAnb2xkJyBmb3IgJ3VudGVzdGVkJyBoZWxwcyBhbnlib2R5IHRvIAp1bmRl cnN0YW5kIGFueXRoaW5nLiBVbnRlc3RlZCBqdXN0IGltcGxpZXMgd2UgY2FuJ3QgYmUgYm90aGVy ZWQgdG8gdGVzdCAKc3R1ZmYgYmVmb3JlIHB1Ymxpc2hpbmcgaXQuIEFuZCBhcyBwcmV2aW91c2x5 IHN0YXRlZCwgdGhpcyBpcyBwdXJlbHkgYSAKcG9saXRpY2FsIGRlY2lzaW9uIG5vdCBhIHRlY2hu aWNhbCBvbmUuIFN1cmUsIGNoYW5nZSB0aGUgbWVzc2FnZSB0byBiZSAKJ0Rpc2FibGluZyBHdUMg c3VibWlzc2lvbiBidXQgZW5hYmxpbmcgSHVDIGxvYWRpbmcgdmlhIEd1QyBvbiBwbGF0Zm9ybSAK WFhYJyBpZiB0aGF0IG1ha2VzIGl0IGNsZWFyZXIgd2hhdCBpcyBnb2luZyBvbi4gT3IganVzdCBk cm9wIHRoZSBtZXNzYWdlIApjb21wbGV0ZWx5LiBJdCdzIHNpbXBseSBleHBsYWluaW5nIHdoYXQg dGhlIGRlZmF1bHQgb3B0aW9uIGlzIGZvciB0aGUgCmN1cnJlbnQgcGxhdGZvcm0gd2hpY2ggeW91 IGNhbiBhbHNvIGdldCBieSByZWFkaW5nIHRoZSBjb2RlLiBIb3dldmVyLCBJIApkaXNhZ3JlZSB0 aGF0ICd1bnRlc3RlZCcgaXMgdGhlIGNvcnJlY3QgbWVzc2FnZS4gUXVpdGUgYSBsb3Qgb2YgdGVz dGluZyAKaGFzIGJlZW4gaGFwcGVuaW5nIG9uIFRHTCsgd2l0aCBHdUMgc3VibWlzc2lvbiBlbmFi bGVkLgoKPj4+Cj4+PiBUaGlzIGxldmVsIG9mIGRlZmVuc2UgZm9yIHdoYXQgaXMgY2xlYXJseSBh IGJhZCAqZGVidWcqIG1lc3NhZ2UgKGF0IHRoZQo+Pj4gdmVyeSBsZWFzdCwgdGhlIGdyYW1tYXIp IG1ha2VzIG5vIHNlbnNlIGF0IGFsbCEKPj4+Cj4+PiBJIGRvbid0IHdhbnQgdG8gaGVhciBhcmd1 bWVudHMgbGlrZSAiTm90IG15IHBhdGNoIiBmcm9tIGEgZGV2ZWxvcGVyCj4+PiBsaXRlcmFsbHkg c2VuZGluZyB0aGUgcGF0Y2ggdG8gdGhlIE1MIGFuZCB3aG8gYWRkZWQgaGlzIFNvQiB0byB0aGUK Pj4+IHBhdGNoLCBwbGF5aW5nIHdpdGggd29yZHMsIG9yIG1pbmltaXppbmcgdGhlIHByb2JsZW0g b2YgaGF2aW5nIHN1Y2ggYQo+Pj4gbWVzc2FnZS4KPj4KPj4gQWdyZWUgdGhhdCAnbm90IG15IHBh dGNoJyBpcyBuZXZlciBhIGdvb2QgZXhjdXNlLCBidXQgZXF1YWxseSB3ZSBjYW4ndAo+PiBibGFt ZSBvcmlnaW5hbCBwYXRjaCBhdXRob3IgYXMgcGF0Y2ggd2FzIHVwZGF0ZWQgZmV3IHRpbWVzIHNp bmNlIHRoZW4uCj4KPiBJIG5ldmVyIHdhbnRlZCB0byBibGFtZSB0aGUgYXV0aG9yIGhlcmUsIEkg d2FzIG9ubHkgc3BlYWtpbmcgYWJvdXQgdGhlIAo+IGhhbmRsaW5nIG9mIGZlZWRiYWNrIG9uIHRo ZSBwYXRjaC4KPgo+Pgo+PiBNYXliZSB0byBhdm9pZCBjb25mdXNpb25zIGFuZCBzaW1wbGlmeSBy ZXZpZXdzLCB3ZSBjb3VsZCBzcGxpdCB0aGlzCj4+IHBhdGNoIGludG8gdHdvIHNtYWxsZXI6IGZp cnN0IG9uZSB0aGF0IHJlYWxseSB1bmJsb2NrcyBHdUMgc3VibWlzc2lvbiBvbgo+PiBhbGwgR2Vu MTErIChzZWUgX19ndWNfc3VibWlzc2lvbl9zdXBwb3J0ZWQpIGFuZCBzZWNvbmQgb25lIHRoYXQg dXBkYXRlcwo+PiBkZWZhdWx0cyBmb3IgR2VuMTIrIChzZWUgdWNfZXhwYW5kX2RlZmF1bHRfb3B0 aW9ucyksIGFzIG9yaWdpbmFsIHBhdGNoCj4+IChmcm9tIH4yMDE5KSBldm9sdmVkIG1vcmUgdGhh biB3aGF0IHRpdGxlL2NvbW1pdCBtZXNzYWdlIHNheXMuCj4KPiBCb3RoIHdvcmsgZm9yIG1lLCBh cyBsb25nIGFzIGl0IGlzIGEgY29sbGFib3JhdGl2ZSBlZmZvcnQuCkknbSBub3Qgc2VlaW5nIGhv dyBzcGxpdHRpbmcgdGhlIHBhdGNoIHVwIGZpeGVzIHRoZSBjb21wbGFpbnRzIGFib3V0IHRoZSAK ZGVidWcgbWVzc2FnZS4KCkFuZCB0byBiZSBjbGVhciwgbm8tb25lIGlzIGFjdHVhbGx5IGFyZ3Vp bmcgZm9yIGEgY29kZSBjaGFuZ2UgYXMgc3VjaD8gClRoZSBpc3N1ZSBpcyBqdXN0IGFib3V0IHRo ZSB0ZXh0IG9mIHRoZSBkZWJ1ZyBtZXNzYWdlPyBPciBkaWQgSSBtaXNzIApzb21ldGhpbmcgc29t ZXdoZXJlPwoKSm9obi4KCgo+Cj4gQ2hlZXJzLAo+IE1hcnRpbgo+Cj4+Cj4+IFRoZW4gd2UgY2Fu IGZpeCBhbGwgbWVzc2FnaW5nIGFuZCBtYWtlIHN1cmUgaXQncyBjbGVhciBhbmQgdW5kZXJzdG9v ZC4KPj4KPj4gVGhhbmtzLAo+PiBNaWNoYWwKPj4KPj4+Cj4+PiBBbGwgb2YgdGhlIGFib3ZlIGFy ZSBqdXN0IGNsZWFyIHNpZ25hbHMgZm9yIHRoZSBjb21tdW5pdHkgdG8gZ2V0IG9mZgo+Pj4geW91 ciBwbGF5Z3JvdW5kLCB3aGljaCBpcyBmcmFua2x5IHVuYWNjZXB0YWJsZS4gWW91ciBlbWFpbCBh ZGRyZXNzIGRvZXMKPj4+IG5vdCBtYXR0ZXIuCj4+Pgo+Pj4gSW4gdGhlIHNwaXJpdCBvZiBjb2xs YWJvcmF0aW9uLCB5b3VyIHJlc3BvbnNlIHNob3VsZCBoYXZlIGJlZW4gIkdvb2QKPj4+IGNhdGNo LCBob3cgYWJvdXQgWFhYWCBvciBZWVlZPyIuIFRoaXMgd291bGQgbm90IGhhdmUgd2FzdGVkIGV2 ZXJ5b25lJ3MKPj4+IHRpbWUgaW4gYW4gYXR0ZW1wdCB0byBqdXN0IGhhdmUgaXQgeW91ciB3YXku Cj4+Pgo+Pj4gTXkgbGV2ZWwgb2YgY29uZmlkZW5jZSBpbiB0aGlzIEd1QyB0cmFuc2l0aW9uIHdh cyBhbHJlYWR5IGxvdywgYnV0IHlvdQo+Pj4gZ3V5cyBhcmUgd29ya2luZyBoYXJkIHRvIHNob290 IHlvdXJzZWxmIGluIHRoZSBmb290LiBUcnVzdCBzaG91bGQgYmUKPj4+IGVhcm5lZCEKPj4+Cj4+ PiBNYXJ0aW4KPj4+Cj4+Pj4KPj4+Pgo+Pj4+IFRoYW5rcywKPj4+PiBwcQo+Pj4+Cj4+PiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4gSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdAo+Pj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=