From: Luke Kenneth Casson Leighton Date: Fri, 1 May 2020 11:24:24 +0000 (+0100) Subject: Re: [libre-riscv-dev] load/store execution queue idea X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cdac871ef82e2c893c06be7690a0bf84c14ba3b5;p=libre-riscv-dev.git Re: [libre-riscv-dev] load/store execution queue idea --- diff --git a/9b/f2bfafa293fb360290f4250cd3b2d9ee63d457 b/9b/f2bfafa293fb360290f4250cd3b2d9ee63d457 new file mode 100644 index 0000000..a346955 --- /dev/null +++ b/9b/f2bfafa293fb360290f4250cd3b2d9ee63d457 @@ -0,0 +1,177 @@ +Return-path: +Envelope-to: publicinbox@libre-riscv.org +Delivery-date: Fri, 01 May 2020 12:24:59 +0100 +Received: from localhost ([::1] helo=libre-riscv.org) + by libre-soc.org with esmtp (Exim 4.89) + (envelope-from ) + id 1jUTms-0003pb-HP; Fri, 01 May 2020 12:24:58 +0100 +Received: from lkcl.net ([217.147.94.29]) + by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) + (Exim 4.89) (envelope-from ) id 1jUTmr-0003pV-B3 + for libre-riscv-dev@lists.libre-riscv.org; Fri, 01 May 2020 12:24:57 +0100 +DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lkcl.net; + s=201607131; + h=Content-Type:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version; + bh=AAeNLbzxN4sYlopgZKRPDvjFYKgU4fqmIobb+D5lWS4=; + b=Jx3XC488aOuTIHKdLqpxbfJ8bhEW4RFWkC1dllHs5tr7RgJouG/sOimxoNuxIna/yOR7Ubdko76c7kseK9WR58YYd4czRCPfklOuv8+pxBXGbEYgZtBSM4C47Mia+8CtMV28I/I7TfshfLCRbN1mO72WaLpkXi/eKnpcyuLFxwI=; +Received: from mail-lf1-f53.google.com ([209.85.167.53]) + by lkcl.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) + (Exim 4.84_2) (envelope-from ) id 1jUTmr-0000Sv-0Z + for libre-riscv-dev@lists.libre-riscv.org; Fri, 01 May 2020 11:24:57 +0000 +Received: by mail-lf1-f53.google.com with SMTP id f8so3637619lfe.12 + for ; + Fri, 01 May 2020 04:24:41 -0700 (PDT) +X-Gm-Message-State: AGi0PuaQFF1+CsT8QpGRIhOPata0jZ1Yj3N2/wKpRlfQFos+zedfn2Ka + l11OAPJCOB2G8dCxMn1ekEWOLO2b+hVXoFForh0= +X-Google-Smtp-Source: APiQypLWZsNWAj/v8kUQTb2Hy4mFF00EsKYKALioR7TU4L6xo1vNGqn2dLO7Uphb+UQpHBdt3TVc80VuB02Q16dNbFc= +X-Received: by 2002:ac2:5e26:: with SMTP id o6mr2222262lfg.49.1588332275646; + Fri, 01 May 2020 04:24:35 -0700 (PDT) +MIME-Version: 1.0 +References: +In-Reply-To: +From: Luke Kenneth Casson Leighton +Date: Fri, 1 May 2020 12:24:24 +0100 +X-Gmail-Original-Message-ID: +Message-ID: +To: Libre-RISCV General Development +Subject: Re: [libre-riscv-dev] load/store execution queue idea +X-BeenThere: libre-riscv-dev@lists.libre-riscv.org +X-Mailman-Version: 2.1.23 +Precedence: list +List-Id: Libre-RISCV General Development + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Reply-To: Libre-RISCV General Development + +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 +Errors-To: libre-riscv-dev-bounces@lists.libre-riscv.org +Sender: "libre-riscv-dev" + +T24gRnJpLCBNYXkgMSwgMjAyMCBhdCAzOjU0IEFNIEphY29iIExpZnNoYXkgPHByb2dyYW1tZXJq +YWtlQGdtYWlsLmNvbT4gd3JvdGU6Cgo+IEkgZmlsbGVkIG91dCBzb21lIG5vdGVzIG9uIG15IGxv +YWQvc3RvcmUgZXhlY3V0aW9uIHF1ZXVlIGlkZWEgaGVyZToKPiBodHRwczovL2xpYnJlLXNvYy5v +cmcvM2RfZ3B1L2FyY2hpdGVjdHVyZS9hbHRlcm5hdGl2ZS1kZXNpZ24taWRlYS8KCmV4Y2VsbGVu +dC4KCj4gVGhlIGRlc2lnbiBzaG91bGQgYmUgc3VpdGFibGUgZm9yIHRoZSBmaW5hbCAyOG5tIFNv +QyBhbmQgc2hvdWxkIGJlCj4gYWJsZSB0byBleGVjdXRlIDQgbG9hZHMgb3IgNCBzdG9yZXMgb3Ig +NCBBTU9zIG9yIDQgZmVuY2VzIHBlciBjeWNsZSwKPiBjb21wbGV0ZWx5IGFkanVzdGFibGUgdG8g +c29tZSBvdGhlciBudW1iZXIgaWYgd2UgZGVzaXJlLiBUaGlzIHRvdGFsbHkKPiByZXBsYWNlcyB0 +aGUgbWVtb3J5IGRlcGVuZGVuY3kgbWF0cml4LgoKaG1tLiAgIHRoZSBNRE0gaXMgc3BlY2lmaWNh +bGx5IGRlc2lnbmVkIHRvIGlkZW50aWZ5IHNlcGFyYXRlIGFuZApkaXN0aW5jdCBMRC1iYXRjaGVz +IGZyb20gU1QtYmF0Y2hlcyBmcm9tIEF0b21pYy1iYXRjaGVzLCBpbiBhbgpleHRyZW1lbHkgZ2F0 +ZS1lZmZpY2llbnQgZmFzaGlvbi4gIHdlIGRvbid0IG5lZWQgVFNPLCB3ZSBqdXN0IG5lZWQgdG8K +cHJlc2VydmUgdGhlIG9yZGVyIG9mIGJhdGNoZXMgKGFuZCBhbHNvIGlkZW50aWZ5IG92ZXJsYXBz +KS4KCgo+IE9uZSBkb3duc2lkZSBpcyBpdCBkb2Vzbid0Cj4gc3VwcG9ydCBmb3J3YXJkaW5nIGZy +b20gc3RvcmVzIHRvIGxhdGVyIGxvYWRzIHdpdGhvdXQgZ29pbmcgdGhyb3VnaAo+IHRoZSBMMSBj +YWNoZS4KCnRoYXQncyBvay4KCm9rLCBhIGNyaXRpY2FsIGFzcGVjdCB0byB1bmRlcnN0YW5kIGFi +b3V0IENvbXB1dGF0aW9uYWwgVW5pdHM6IHRoZXkgZG8KKm5vdCogcHJvY2VlZCB1bnRpbCB0aGUg +InB1cnBvc2UiIHRoYXQgdGhleSBtYW5hZ2UgaXMgZW50aXJlbHkgZmluaXNoZWQuCnRoZXkgdGhl +biAqbm90aWZ5KiB0aGUgRGVwZW5kZW5jeSBNYXRyaWNlcyB0aGF0IHRoZSAicmVzdWx0IiBpcyBk +b25lCihhdmFpbGFibGUpLCBhbmQgKnRoZW4qIHRoZXkgZHJvcCB0aGVpciAiYnVzeSIgZmxhZywg +cmVhZHkgZm9yIHJlLXVzZSBmb3IKYW5vdGhlciBvcGVyYXRpb24uCgp0aGlzIGlzIHRoZSB0b3Rh +bCBvcHBvc2l0ZSBvZiBhIHBpcGVsaW5lIG9yIHF1ZXVlLCB3aGVyZSB5b3UgY2h1Y2sgZGF0YQph +dCBpdCwgYWJkaWNhdGUgcmVzcG9uc2liaWxpdHkgZm9yIGl0cyBtYW5hZ2VtZW50LCBhbmQgYXQg +c29tZSBhcmJpdHJhcnkKcG9pbnQgaW4gdGhlIGZ1dHVyZSwgdGhlIHJlc3VsdCBjb21lcyBvdXQs +IGJ1dCBieSB0aGF0IHRpbWUgZXZlcnl0aGluZwpoYXMgbW92ZWQgb24uCgphbiBvdXQtb2Ytb3Jk +ZXIgc2NoZWR1bGluZyBzeXN0ZW0gKmNhbm5vdCogLSBpbiBhbnkgd2F5IC0gcGVybWl0IHRoYXQK +dG8gaGFwcGVuLiAgdGhlIHJlc3VsdHMgd291bGQgYmUgY2F0YXN0cm9waGljLgoKdGhlcmVmb3Jl +IGluIHRoZSBBTFUgQ29tcHV0YXRpb25hbCBVbml0cyB3aGljaCBtYW5hZ2UgYSBwaXBlbGluZQoo +b3IgcGlwZWxpbmVzKSwgd2UgKm11c3QqIGhhdmUgZXF1YWwgb3IgZ3JlYXRlZCBDb21wVW5pdHMg +dGhhbgp0aGVyZSBpcyBwaXBlbGluZSBkZXB0aC4KCiogZ3JlYXRlciB0aGFuIHRoYXQgaXMgb2s6 +IGluc3RydWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gcnVuIGFoZWFkLgogIHRoZSBERVNJUkUgdG8g +cnVuIGluc3RydWN0aW9ucyAoYW5kIHRoZSBvcmRlciBhcyBhIERBRykgaXMKICByZWNvcmRlZCwg +aG93ZXZlciB0aGVpciBBQ1RVQUwgZXhlY3V0aW9uIG11c3Qgd2FpdCB1bnRpbAogIHRoZXJlIGlz +IGEgZnJlZSBwaXBlbGluZSBzbG90LgoqIGxlc3MgdGhhbiB0aGF0IGlzIE5PVCByZWFsbHkgb2sg +KGEgd2FzdGUgb2Ygc2lsaWNvbikgYmVjYXVzZSB0aGVyZQogIGlzIG5vdCBlbm91Z2ggdG8gdHJh +Y2sgdGhlIHByb2dyZXNzIG9mIGVhY2ggYW5kIGV2ZXJ5IG9wZXJhdGlvbgogIGdvaW5nIHRocm91 +Z2ggZWFjaCBhbmQgZXZlcnkgcGlwZWxpbmUgc3RhZ2UuCgp3aGVuIGl0IGNvbWVzIHRvIG1hbmFn +aW5nIE1lbW9yeSwgdGhlIGltcGxpY2F0aW9ucyBhcmUgYXMgZm9sbG93czoKCiogdG8gaGF2ZSBt +b3JlIExEL1NUIENvbXB1dGF0aW9uIFVuaXRzIHRoYW4gdGhlcmUgYXJlICJDZWxscyIKICBpcyBs +aWtld2lzZSBvay4gIGluc3RydWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gcnVuIGFoZWFkLgoqIHRv +IGhhdmUgTEVTUyBMRC9TVCBDVXMgdGhhbiB0aGVyZSBhcmUgIkNlbGxzIiBpcyAqTk9UKiBvaywK +ICBiZWNhdXNlIHRoZSBDb21wdXRhdGlvblVuaXRzIHdpbGwgTkVWRVJSUlJSIGlzc3VlIGEKICBM +RCBvciBTVCB1bnRpbCBpdCBrbm93cyAtIGFic29sdXRlbHkgYW5kIHdpdGhvdXQgYW55IHNoYWRv +dyBvZgogIGRvdWJ0IC0gdGhhdCB0aGUgb3BlcmF0aW9uIGl0IG1vbml0b3JzIGhhcyAxMDAlIGFi +c29sdXRlIGd1YXJhbnRlZWQKICBjb21wbGV0ZWQuCgpzbyB0aGF0J3MgcmVhbGx5IGNydWNpYWwg +aW5mb3JtYXRpb24gdGhhdCBoYXMgaW1wbGljYXRpb25zIGZvciB0aGUKZGVzaWduIG9mIHRoZSBM +RC9TVCBCdWZmZXIsIGltcG9ydGFudCBhcyBjb250ZXh0LCBiZWxvdy4KCgpub3RlczoKCjEpIHRo +ZSBjZWxsIGFycmFuZ2VtZW50IHN0aWxsIG5lZWRzIGFuIDgtaW5wdXQgKDggTEQvU1QgQ29tcHV0 +YXRpb24gVW5pdHMpCnRvIDQtb3V0cHV0IChoZWFkIG9mIGVhY2ggImNvbHVtbiIgb2YgZWFjaCBx +dWV1ZSkgbXVsdGlwbGV4ZXIuCnVubGVzcyBpJ3ZlIG1pc3VuZGVyc3Rvb2QsIHRoYXQgYWxvbmUg +aXMgYSBraWxsZXIuCgpkcm9wcGluZyBlYWNoIG9mIHRoZSA4LWlucHV0IHF1ZXVlIGVudHJpZXMg +aW50byB0aGUgZmlyc3QgOCBjZWxscyAqdGhlbioKcGVyZm9ybWluZyBzaGlmdGluZywgKnRoYXQq +IGlzIG9rYXkuICBidXQgYWxsb3dpbmcgZWFjaCBhbmQgZXZlcnkgc2luZ2xlCm9uZSBvZiB0aG9z +ZSA4IExEL1NUIENvbXBVbml0cyB0byB3cml0ZSB0byBjZWxscyAwLTQ/IHRoZSB3aXJpbmcgYWxv +bmUKaXMgaW5zYW5lLgoKYXNzdW1lIDEyOCBiaXRzIHBlciBvcGVyYXRpb24gKDQ4IGFkZHJlc3Ms +IDY0IGRhdGEsIHNvbWUgY29udHJvbCBsaW5lcwpsZXQncyByb3VuZCBpdCB1cCB0byAxMjggYml0 +cyk6IHdpdGggMTI4LXdpZGUgZGF0YSBwYXRocyB0aW1lcyA4IExEL1NUCkNvbXAgVW5pdHMgdGlt +ZXMgKjQqIHRvIGJlIGFibGUgdG8gYXJiaXRyYXJpbHkgd3JpdGUgdG8gYW55IG9uZSBvZgo0ICJ0 +b3Agcm93IiBjZWxscz8gIHRoYXQncyBhIE1BU1NJVkUgNDA5NiB3aXJlcyEKCndlIGNhbid0IHBv +c3NpYmx5IGhhdmUgdGhhdCBtYW55IHdpcmVzLgoKaWYgeW91IG1lYW50IHRoYXQgdGhlIHF1ZXVl +IHdpZHRoIHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mIExEL1NUClVuaXRzIC0gOC13aWRlIGJl +Y2F1c2Ugd2UgbmVlZCA4IExEL1NUIENvbXBVbml0cyAod2UgbWlnaHQgYmUKYWJsZSB0byBnZXQg +YXdheSB3aXRoIG9ubHkgNikgLSB0aGVuIHRoZSByZW1haW5pbmcgZW50cmllcyB3aWxsIGFjdHVh +bGx5CnJlbWFpbiBwZXJtYW5lbnRseSBlbXB0eSwgYmVjYXVzZSB0aGVyZSAqaGFzKiB0byBiZSBh +IGRpcmVjdApvbmUtdG8tb25lIG1hdGNoIGJldHdlZW4gTEQvU1QgQ29tcFVuaXRzIGFuZCB0aGUg +TEQvU1QgdGhhdAppdCAibWFuYWdlcyIuCgpzbyB0aGVyZSB3b3VsZCBvbmx5IGJlIDggTEQvU1Rz +LCBhbmQgYSByb3cgZGVwdGggb2YgMS4KCmlmIGhvd2V2ZXIgd2UgZG8gMi1wb3J0cyBwZXIgQ29t +cFVuaXQgKHRvIGNvdmVyIG1pc2FsaWduZWQpLCB0aGVuIHRoZXJlCndvdWxkIGJlIGFuIDgtd2lk +ZSBieSAyLXJvdyBhcnJhbmdlbWVudCBvZiBDZWxscy4KCndpdGggb25seSBhIENlbGwgRGVwdGgg +b2YgMSBvciAyLCB0aGUgcHVycG9zZSAqb2YqIHRoZSBDZWxscyBpcyBkZWZlYXRlZAplbnRpcmVs +eS4gIHRoZXJlJ3Mgbm8gbmVlZCBmb3Igc2hpZnRpbmc6IHRoZSBlbnRyaWVzIG1pZ2h0IGFzIHdl +bGwgc3RheQp3aGVyZSB0aGV5IGFyZS4KCnRoaXMgcGFydGljdWxhcmx5IGJlY2F1c2UgZXZlbiBm +b3IgdGhlICJtaXNhbGlnbm1lbnQiIGNhc2UsIHRoZSBMRC9TVApDb21wVW5pdCBpcyAqTkVWRVJS +UiogZ29pbmcgdG8gcGxhY2UgYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUKMiByZXF1ZXN0cyBpdCBp +cyByZXNwb25zaWJsZSBmb3IgaW50byB0aGUgcXVldWU6CgoqIGZpcnN0IG9uZSBjb3ZlcmluZyB0 +aGUgbG93ZXIgcGFydCBvZiB0aGUgbWlzYWxpZ25lZCByZXF1ZXN0Ciogc2Vjb25kIG9uZSBjb3Zl +cmluZyB0aGUgdXBwZXIgcGFydC4KCm5vIG1hdHRlciBob3cgbWFueSBjb2x1bW5zIChhc3N1bWlu +ZyB0aGF0IHRoZXJlIGlzIG9uZQpwZXIgTERTVENVKSBhbGwgb3RoZXIgcm93cyAqd2lsbCogcmVt +YWluIGVtcHR5LgoKYW5kIGlmIHRoZSBjb2x1bW5zIGFyZSBoYWx2ZWQgKDQgd2lkZSB0byBjb3Zl +ciA4IExEL1NUIENVcykKbm93IHdlIGhhdmUgYSBtdWNoIG1vcmUgc2VyaW91cyBwcm9ibGVtOiB0 +aGUgdG90YWwgZGF0YSBiYW5kd2lkdGgKaXMgc2hydW5rIHRvIG9ubHkgNHggNjQtYml0IG9wZXJh +dGlvbnMgKmFuZCogdGhlcmUgaXMgYSBtdWx0aXBsZXhpbmcKcHJvYmxlbSBhY3R1YWxseSBnZXR0 +aW5nIGRhdGEgaW50byB0aGUgZmlyc3QgMiByb3dzIChhY3R1YWxseSwgbm93LAo0IHJvd3MgaWYg +dGhlcmUgYXJlIDIgcG9ydHMgcGVyIExEL1NUIENVLCBvbmUgZm9yIGxvd2VyLW1pc2FsaWduZWQK +b25lIGZvciB1cHBlci1taXNhbGlnbmVkKS4KCmRvIHdlIHN0YWxsIHRoZSByZXF1ZXN0cyBpZiB0 +aGV5IGRvIG5vdCBoYXZlIGFjY2Vzcz8gIHRoYXQgbWVhbnMKdGhhdCBvcHBvcnR1bml0aWVzIHRv +IGtlZXAgdGhlIEwxIGNhY2hlLWxpbmUgcmVxdWVzdHMgMTAwJSBmdWxsCmFyZSBtaXNzZWQsIHdo +ZXJlIHRoZSBjdXJyZW50IGRlc2lnbiBjYW4gKmV2ZW4gY2F0Y2ggbWlzYWxpZ25lZAplbGVtZW50 +LXN0cmlkZWQgZGF0YSByZXF1ZXN0cyogYW5kIGNhbiAxMDAlIG1lcmdlIHRoZW0gaW50bwphIGZ1 +bGwgY2FjaGUtbGluZSByZXF1ZXN0LgoKCgoiYW5kIHRoZSBMMSBjYWNoZSBsaW5lIGFkZHJlc3Mg +aXQgd291bGQgdXNlIGlzIGJyb2FkY2FzdCB0byBhbGwgY2VsbHMuIgoKdGhpcyBpcyBhIGZ1bGwg +WE9SLWNvbXBhcmlzb24gb2YgdGhlIGVudGlyZSBhZGRyZXNzLCBhZ2FpbnN0IGV2ZXJ5IHNpbmds +ZSBjZWxsLgoKaWYgdGhlIGFkZHJlc3MgaXMgNDggYml0cyBhbmQgdGhlcmUgYXJlIDEyIGNlbGxz +LCB1c2luZyBiaXRzIDMgYW5kIGFib3ZlIG9mCnRoZSBhZGRyZXNzIHdpbGwgcmVxdWlyZSA1Mjgg +WE9SIGdhdGVzLgoKaWYgd2Ugd2FudCAqdHdvKiBMMSBjYWNoZSBsaW5lIGFkZHJlc3NlcyBzaW11 +bHRhbmVvdXNseSAocmF0aGVyIHRoYW4KZ29pbmcgdG8gMjU2LWJpdC13aWRlIEwxIGNhY2hlIGxp +bmVzKSwgdGhhdCdzICp0d28qIGJyb2FkY2FzdHMsIGVhY2ggNTI4ClhPUiBnYXRlcy4KCgoyKSBo +b3cgYXJlIG92ZXJsYXBwaW5nIGFkZHJlc3NlcyBkZXRlY3RlZD8gIG9yLCBtb3JlIHRvIHRoZSBw +b2ludCwKaG93IGFyZSBub24tb3ZlcmxhcHBpbmcgYWRkcmVzc2VzIGRldGVjdGVkIHN1Y2ggdGhh +dCB0aGV5IGNhbiBiZQpwYXNzZWQgdGhyb3VnaCBhcyBhIGdyb3VwLCBhbmQgZ2l2ZW4gdGhlIG9w +cG9ydHVuaXR5IHRvIGJlIGRvbmUgaW4KcGFyYWxsZWw/CgozKSBob3cgd291bGQgbWlzYWxpZ25l +ZCBhZGRyZXNzZXMgaGFuZGxlZD8KCjQpIGknbSBub3Qgc2VlaW5nIGhvdyByZXF1ZXN0cyBjb3Vs +ZCBiZSBtZXJnZWQgaW50byAiMTAwJSBmdWxsIGNhY2hlCmxpbmUiIHJlcXVlc3RzLCB3aGljaCB0 +aGUgY3VycmVudCBkZXNpZ24gaXMgY2FwYWJsZSBvZiBkb2luZywgYnkgdXNpbmcKc2ltcGxlIGJp +dC13aXNlIEFORGluZyBhbmQgT1JpbmcuICB0aGUgQWJzdHJhY3QgUHJlZml4IFN1bSBjbGFzcwpk +b2Vzbid0IGxvb2sgb2J2aW91cyBhcyB0byBob3cgdGhhdCBoYXBwZW5zLCBhbmQgaXMgbGlrZWx5 +IHRvIGJlCm11Y2ggbW9yZSBjb3N0bHkgdGhhbiBhIHNpbXBsZSBBTkQgYW5kIE9SIG5ldHdvcmsu +Cgo1KSBob3cgYXJlIGNsYXNoZXMgb2YgYWRkcmVzc2VzICppbnRlci1yb3cqIGRldGVjdGVkPyAg +aWYgQ2VsbCAwIGhhcyBhIFNUCm9mIDgtYml0cyB0byBhZGRyZXNzIDB4MDAwMSBhbmQgQ2VsbCAx +IGhhcyBhIFNUIG9mIDggYml0cyB0byBhZGRyZXNzCjB4MDAwMiAoYSA3IGJ5dGUgb3ZlcmxhcCks +IGhvdyBpcyB0aGlzIGRldGVjdGVkICppbiB0aGUgcm93Kj8KCmluIHRoZSBjb2x1bW4gaXQgaXMg +ZmluZSwgYmVjYXVzZSBvbmx5IG9uZSByb3cgaXMgZXZlciBkb25lIGF0IG9uY2UKKHdoaWNoIGhh +cyBpbXBsaWNhdGlvbnMgZm9yIG1pcy1hbGlnbmVkIGRhdGEgcmVxdWVzdHMsIHRoZXJlIHdpbGwg +bmV2ZXIKYmUgYSAxMDAlIG1lcmdlIG9wcG9ydHVuaXR5KQoKCmFsbCBvZiB0aGVzZSB0aGluZ3Mg +dG9vayBzZXZlcmFsICptb250aHMqIHRvIGZhY3RvciBpbiB0byB0aGUgZGVzaWduLCBpbgpzZXZl +cmFsIHN0YWdlcy4gIGl0J3MgbWFzc2l2ZWx5IGNvbXBsZXggYW5kIGludGVyLWRlcGVuZGVudC4K +CmwuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaWJy +ZS1yaXNjdi1kZXYgbWFpbGluZyBsaXN0CmxpYnJlLXJpc2N2LWRldkBsaXN0cy5saWJyZS1yaXNj +di5vcmcKaHR0cDovL2xpc3RzLmxpYnJlLXJpc2N2Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpYnJl +LXJpc2N2LWRldgo= +