[libre-riscv-dev] Tomasulo and Scoreboards
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 19 May 2020 13:47:36 +0000 (14:47 +0100)
committerlibre-riscv-dev <libre-riscv-dev@lists.libre-riscv.org>
Tue, 19 May 2020 13:48:00 +0000 (14:48 +0100)
17/1721715cc7968aa3c25d43c1999f8c2b317560 [new file with mode: 0644]

diff --git a/17/1721715cc7968aa3c25d43c1999f8c2b317560 b/17/1721715cc7968aa3c25d43c1999f8c2b317560
new file mode 100644 (file)
index 0000000..c1e117e
--- /dev/null
@@ -0,0 +1,196 @@
+Return-path: <libre-riscv-dev-bounces@lists.libre-riscv.org>
+Envelope-to: publicinbox@libre-riscv.org
+Delivery-date: Tue, 19 May 2020 14:48:02 +0100
+Received: from localhost ([::1] helo=libre-riscv.org)
+       by libre-soc.org with esmtp (Exim 4.89)
+       (envelope-from <libre-riscv-dev-bounces@lists.libre-riscv.org>)
+       id 1jb2bA-0001BH-Up; Tue, 19 May 2020 14:48:00 +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 <lkcl@lkcl.net>) id 1jb2b9-0001BB-F6
+ for libre-riscv-dev@lists.libre-riscv.org; Tue, 19 May 2020 14:47:59 +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:MIME-Version;
+ bh=xsRbixC+5Oi5SDUDIMWSxVdm+u/cRB+WeGpcMG0osuM=; 
+ b=KMvQY4YnFpEWrqLHFAVbMDm5PqW6JuaT/CnA1ZYIfCEfFj1QtsUkjL8oeGTm7ws+cm3y2Oesvs4ctKXaVZokSPmlXhzvhkhSakgpZjjCJyXJmyyzqqfpdHvEBaid9ILaxc0WJi1L7UyMX+ptUMYCDgwD+IEsZWmeZh9yzTF/PjE=;
+Received: from mail-lf1-f46.google.com ([209.85.167.46])
+ by lkcl.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
+ (Exim 4.84_2) (envelope-from <lkcl@lkcl.net>) id 1jb2b9-0006JA-1O
+ for libre-riscv-dev@lists.libre-riscv.org; Tue, 19 May 2020 13:47:59 +0000
+Received: by mail-lf1-f46.google.com with SMTP id c12so7832558lfc.10
+ for <libre-riscv-dev@lists.libre-riscv.org>;
+ Tue, 19 May 2020 06:47:43 -0700 (PDT)
+X-Gm-Message-State: AOAM530VBOt84j4MOlNJlpZ3gSpBOJaq8xExQCILPyq3LYcVMSealsCZ
+ Wv5hlSCyceHpHXnv1VBbyD+PcA9OgyDM42mj57A=
+X-Google-Smtp-Source: ABdhPJwth8ABBjwEJ9pkVS5hoy7sgpRfIjIYnJM7pRUkWvzFxEmEyFOZ+gYpGIzfaaNncS2sr3wAO+8duy163igjlto=
+X-Received: by 2002:a19:4f46:: with SMTP id a6mr7525572lfk.107.1589896057800; 
+ Tue, 19 May 2020 06:47:37 -0700 (PDT)
+MIME-Version: 1.0
+Received: by 2002:a05:6504:31aa:0:0:0:0 with HTTP; Tue, 19 May 2020 06:47:36
+ -0700 (PDT)
+From: Luke Kenneth Casson Leighton <lkcl@lkcl.net>
+Date: Tue, 19 May 2020 14:47:36 +0100
+X-Gmail-Original-Message-ID: <CAPweEDx6dn2i1YcUYX3DqH1Z29BmGOSt15-LEGEMykrwZipziw@mail.gmail.com>
+Message-ID: <CAPweEDx6dn2i1YcUYX3DqH1Z29BmGOSt15-LEGEMykrwZipziw@mail.gmail.com>
+To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
+X-Content-Filtered-By: Mailman/MimeDel 2.1.23
+Subject: [libre-riscv-dev] Tomasulo and Scoreboards
+X-BeenThere: libre-riscv-dev@lists.libre-riscv.org
+X-Mailman-Version: 2.1.23
+Precedence: list
+List-Id: Libre-RISCV General Development
+ <libre-riscv-dev.lists.libre-riscv.org>
+List-Unsubscribe: <http://lists.libre-riscv.org/mailman/options/libre-riscv-dev>, 
+ <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=unsubscribe>
+List-Archive: <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/>
+List-Post: <mailto:libre-riscv-dev@lists.libre-riscv.org>
+List-Help: <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=help>
+List-Subscribe: <http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev>, 
+ <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=subscribe>
+Reply-To: Libre-RISCV General Development
+ <libre-riscv-dev@lists.libre-riscv.org>
+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" <libre-riscv-dev-bounces@lists.libre-riscv.org>
+
+T24gVHVlc2RheSwgTWF5IDE5LCAyMDIwLCBTdGFmIFZlcmhhZWdlbiA8c3RhZkBmaWJyYXNlcnZp
+LmV1PiB3cm90ZToKCj4gTHVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiBzY2hyZWVmIG9wIG1h
+IDE4LTA1LTIwMjAgb20gMTI6NDUgWyswMTAwXToKPiA+ICogYW5kIGhhZCBhIGZhc2NpbmF0aW5n
+IGNvbnZlcnNhdGlvbiB0aGFua3MgdG8geWVob3dzaHVhIGFuZCBqZXJlbXkoYWxzbwo+IHdlbGNv
+bWUhKSwgd2hpY2ggcmVzdWx0ZWQgaW4gdGhpcyhodHRwczovL2xpYnJlLXNvYy5vcmcvM2RfCj4g
+Z3B1L2FyY2hpdGVjdHVyZS90b21hc3Vsb190cmFuc2Zvcm1hdGlvbi8pLgo+Cj4gSWYgSSB1bmRl
+cnN0YW5kIHRoaXMgY29ycmVjdCB0aGUgYmlnIGFyY2hpdGVjdHVyYWwgZGlmZmVyZW5jZSBiZXR3
+ZWVuCj4gZXh0ZW5kZWQgc2NvcmVib2FyZGluZyBhbmQgVG9tYXN1bG8gaXMgdGhhdCBpbiB0aGUg
+Zm9ybWVyIHRoZSByZWdpc3Rlcgo+IGNvbnRlbnQgaXMgc3RvcmVkIGluIGEgY2VudHJhbCByZWdp
+c3RlciBmaWxlIGFuZCBmb3IgdGhlIGxhdHRlciBpdCBpcwo+IGRpc3RyaWJ1dGVkIG92ZXIgc2V2
+ZXJhbCAncmVzZXJ2YXRpb24gc3RhdGlvbnMnLgoKCm5vdCBxdWl0ZS4gdGhpcyBpcyB0aGUgbnVt
+YmVyIG9uZSBtaXN1bmRlcnN0YW5kaW5nIGFib3V0IFNjb3JlYm9hcmRzLCBkdWUKdG8gdGhlIEFj
+YWRlbWljIGV4Y2x1c2l2ZSBmb2N1cyBvbiB0aGUgUSBUYWJsZXMuICBpdCBpcyBzaW1pbGFyIHRv
+CmZvY3Vzc2luZyBvbiB0aGUgUk9CIGFuZCBjb25jbHVkaW5nIHRoYXQgVG9tYXN1bG8gZXF1YWxz
+IFJPQiB0aGVyZWZvcmUKVG9tYXN1bG8gaXMgaW5jb21wZXRlbnQgYW5kIGluY29tcGxldGUsIGlu
+Y2FwYWJsZSBvZiBPdXQgb2YgT3JkZXIgZXhlY3V0aW9uLgoKIHRoZSByZWFsaXR5IGlzIHZlcnkg
+ZGlmZmVyZW50OiB0aGVyZSBpcyBhY3R1YWxseSBubyBmdW5jdGlvbmFsIGRpZmZlcmVuY2UuCgoq
+IGJvdGggaGF2ZSBjZW50cmFsIHJlZ2lzdGVyIGZpbGVzCiogYm90aCBoYXZlICJpbiBmbGlnaHQi
+IGRpc3RyaWJ1dGVkICJzdG9yYWdlIiB0aGF0IGhvbGQgcmVzdWx0cyBub3QgeWV0CmNvbW1pdHRl
+ZCB0byB0aGUgcmVnZmlsZS4KCnRoZSBkaWZmZXJlbmNlIGlzOgoKKiBUb21hc3VsbyBpZGVudGlm
+aWVkIGluLWZsaWdodCBhcyAiYmVpbmcgYSBwcm9ibGVtIiwgZ2F2ZSBhIG5hbWUgdG8gdGhlCmNv
+bmNlcHQgKCJyZWdpc3RlciByZW5hbWluZyIpIGFuZCB1c2VkIENBTXMgaW4gdGhlIGZvcm0gb2Yg
+UmVzZXJ2YXRpb24KU3RhdGlvbnMgdG8gZXhwbGljaXRseSAiaG91c2UiIHRoaXMgZGlzdHJpYnV0
+ZWQgaW4tZmxpZ2h0IGRhdGEuCgoqIFNleW1vdXIgQ3JheSBhbmQgSmFtZXMgVGhvcm50b24gc2lt
+cGx5IGdvdCBvbiB3aXRoIGl0LCBjb21pbmcgdXAgd2l0aCBhbgppbi1mbGlnaHQgc29sdXRpb24g
+d2hlcmUgdGhlcmUgKndhcyogbm8gbmVlZCB0byBnaXZlIHRoZSBpbi1mbGlnaHQgZGF0YQoibmFt
+ZXMiLiAgdGhleSB3ZXJlIGp1c3QgIkNvbXB1dGF0aW9uIFVuaXQgb3BlcmFuZCBsYXRjaC9yZWdp
+c3RlcnMiLgoKYmVjYXVzZSB0aGV5IGRpZCBub3Qgc2VlIGl0IGFzIGFuIGFjdHVhbCAicHJvYmxl
+bSIsIHRoZXJlIHdhcyBub3RoaW5nIHRvCiJ0YWxrIGFib3V0Ii4gIGl0IGlzIG9ubHkgdGhyb3Vn
+aCByZXRyb3NwZWN0aXZlIGFuc2x5c2lzIHRoYXQgd2UgZmluZCB0aGF0CnRoZXkgc29sdmVkIHRo
+ZSAicHJvYmxlbSIuCgp3aGF0IGkgY2FuIHRlbGwgeW91IGlzOgoKKiB0aG9zZSBsYXRjaGVzIGlu
+IHRoZSBDb21wdXRhdGlvbiBVbml0ICphcmUqIFJlc2VydmF0aW9uIFN0YXRpb24gbGF0Y2hlcwoq
+IGEgQ0FNIGlzICpOT1QqIG5lZWRlZAoqIHRoZXkgKmFyZSogMVIxVyBhbmQgREZGcyBhcmUgcGVy
+ZmVjdGx5IGFkZXF1YXRlIHRvIGNvdmVyIHRoZW0KKiBjZW50cmFsaXNpbmcgdGhlbSBpcyBOT1Qg
+bmVlZGVkIGFuZCBpdCB3b3VsZCBiZSBzZXZlcmVseSBkZXRyaW1lbnRhbCB0bwp0cnkgdG8gZG8g
+c28uCgoKCj4gSW4gb3JkZXIgdG8gc2NhbGUgdG8gZm9yIGV4YW1wbGUgbXVsdGktaXNzdWUgeW91
+IG5lZWQgdG8gZ28gdG8gaGlnaGVyCj4gb3JkZXIgblJtVyByZWdpc3RlciBmaWxlcyBmb3Igc2Nv
+cmVib2FyZGluZwoKCnRoaXMgaXMgbmVjZXNzYXJ5IGZvciBUb21hc3VsbyBhcyB3ZWxsLiAgaSBh
+bSByZWZlcnJpbmcgdG8gdGhlIElOVCBSZWdmaWxlLApub3QgdG8gdGhlIChtaXN1bmRlcnN0b29k
+KSBpbmZsaWdodCBkYXRhIGxhdGNoZXMgbG9jYWwgdG8gUlNlcyAvCkNvbXB1dGF0aW9uIFVuaXRz
+LgoKCj4KPiBhbmQgZm9yIFRvbWFzdWxvIHlvdSBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIHJlc2Vy
+dmF0aW9uIHN0YXRpb25zCgoKbGlrZXdpc2UgeW91IGluY3JlYXNlIHRoZSBudW1iZXIgb2YgQ29t
+cHV0YXRpb24gVW5pdHMgYmVjYXVzZSBkb2luZyBzbwppbmNyZWFzZXMgaW5mbGlnaHQgb3Bwb3J0
+dW5pdHkuCgoKPgo+ICB0b2dldGhlciB3aXRoIGEgbW9yZSBjb21wbGV4IHRyYWNrZXIgb2YgdGhl
+IHJlZ2lzdGVyIHRhZ2dpbmcvYWxpYXNpbmcuCgoKaW4gVG9tYXN1bG8sIHllcy4gIGl0IHF1aWNr
+bHkgYmVjb21lcyBhIG5pZ2h0bWFyZSwgYXQgdGhlIFJTIENBTXMsIHRoZSBDREIsCnRoZSBST0Ig
+LSBpbiBmYWN0IGV2ZXJ5dGhpbmcgdG8gZG8gd2l0aCB0aGUgZW50aXJlIFRvbWFzdWxvIGFsZ29y
+aXRobS4KCmZvciBTY29yZWJvYXJkcywgbm8uICB0aGUgZXhhY3Qgc2FtZSBsb2dpYywgYnkgZW5j
+b2RpbmcgYWxsIEZ1bmN0aW9uIFVuaXQKYW5kIFJlZ2lzdGVyIE51bWJlcnMgaW4gVU5BUlkgbm90
+IGJpYmFyeSwgaXMgYXV0b25hdGljYWxseSBhbmQgaW5oZXJlbnRseQptdWx0aS1pc3N1ZSBjYXBh
+YmxlIEJZIERFU0lHTi4KCmFsbW9zdCB6ZXJvIGV4dHJhIGxvZ2ljIGlzIHJlcXVpcmVkIHRvIG1h
+a2UgVW5hcnkgKGJpdHZlY3RvcikgU2NvcmVib2FyZHMKbXVsdGkgaXNzdWUuCgoKCj4gU28gc29t
+ZSAyIGNlbnRzIGZyb20gbWUuCj4gRnJvbSBwaHlzaWNhbCBpbXBsZW1lbnRhdGlvbiBwb2ludCBv
+ZiB2aWV3IHRoZSBjZW50cmFsIGhpZ2ggb3JkZXIgblJtVwo+IHJlZ2lzdGVyIGZpbGUgYW5kIHNj
+b3JlYm9hcmQgZG9lcyB3b3JyeSBtZS4KCgpkdWUgdG8gdGhlICh2ZXJ5IGNvbW1vbikgbWlzdW5k
+ZXJzdGFuZGluZywgZ2l2ZW4gdGhhdCB0aGVyZSBpcyBubwpjZW50cmFsaXNlZCBzY29yZWJvYXJk
+IHJlZ2ZpbGUsIGdpdmVuIHRoYXQgdGhlIGluZmxpZ2h0IGRhdGEgeW91IChhbmQgYWxsCkFjYWRl
+bWljIGxpdGVyYXR1cmUgbWlzbGVhZGluZ2x5IHN0YXRlcykgaXMgZGlzdHJpYnV0ZWQgbm90IGNl
+bnRyYWxpc2VkLAp0aGlzIGNvbmNlcm4gaXMgbW9vdC4KCndlIHdpbGwgdXNlIHN0YW5kYXJkIERG
+RnMgdG8gc3RvcmUgdGhlIGluLWZsaWdodCBkYXRhLCBhcyBhbiBhYnNvbHV0ZWx5CnN0YW5kYXJk
+ICJsYXRjaC9yZWdpc3RlciIsIGF0IHRoZSBDb21wVW5pdC4gdGhpcyBoYXMgYmVlbiBpbXBsZW1l
+bnRlZCBvdmVyCmEgeWVhciBhZ28gYW5kIGhhcyBiZWVuIHdvcmtpbmcgZm9yIG92ZXIgYSB5ZWFy
+LgoKCj4gSGlnaGVyIG9yZGVyIG5SbVcgcmVnaXN0ZXIgZmlsZXMgd2lsbCBiZWNvbWUgcG93ZXIg
+YW5kIGFyZWEgaHVuZ3J5Cj4gY29tcGFyZWQgdG8gbXVsdGlwbGUgbG93ZXIgb3JkZXIgcmVzZXJ2
+YXRpb24gc3RhdGlvbnMuCj4gSSBoYXZlIHNlZW4gbnVtYmVycyBvZiBhIGZldyB0ZW5zIG9mIGZ1
+bmN0aW9uYWwgdW5pdHMgaW4geW91ciBkZXNpZ24uIEkKPiB0aGluayBpdCB3aWxsIGJlY29tZSBh
+bHNvIGEgbmlnaHRtYXJlIHRvIGNvbm5lY3QgYW5kIHJvdXRlIGFsbCB0aGUgaW5wdXQKPiBhbmQg
+b3V0cHV0cyBvZiBhbGwgdGhlIGZ1bmN0aW9uYWwgdW5pdHMgdG8gdGhlIGNlbnRyYWwgcmVnaXN0
+ZXIgZmlsZSBhbmQKPiBzY29yZWJvYXJkLgoKCmkgYW0gZ29pbmcgb3ZlciB0aGlzIG5vdy4gIHRo
+ZSBkaWZmZXJlbnQgcmVnZmlsZXMgKENvbmRpdGlvbiwgSU5ULCBTUFIsClhFUikgYXJlIHNlcGFy
+YXRlIGFuZCBzbyBmcm9tIGEgU1JBTSBwb3J0aW5nIHBlcnNwZWN0aXZlIGFsbCBuZWVkIDFXICh3
+aXRoCnRoZSBleGNlcHRpb24gb2YgTERTVCBVcGRhdGUgd2hpY2ggY2FuIGJlIHRpbWVzbGljZWQp
+Cgp0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVhZCBwb3J0cyBmb3IgYW55IG9uZSBSZWdmaWxlIFNS
+QU0gaXMgMy4gIDQgd291bGQgYmUKbmljZS4KCnNvIHdlIG9ubHkgbmVlZCA0UjFXIHdoaWNoIGlz
+IGRvYWJsZS4KCndoZW4gaXQgY29tZXMgdG8gbXVsdGkgaXNzdWUgdGhpcyBpcyB3aGVyZSB0aGUg
+c3RyYXRpZmljYXRpb24gT0RELUVWRU4KUmVnZmlsZSBudW1iZXJpbmcgY29tZXMgaW50byBwbGF5
+LCBhbmQgd2UgKnN0aWxsKiBvbmx5IG5lZWQgNFIxVy4KCgo+ICBTbyBhdCBmaXJzdCBzaWdodCwg
+ZnJvbSBwaHlzaWNhbCBpbXBsZW1lbnRhdGlvbiBwb2ludCBmb3Igc21hbGxlciBub2RlcywKPiB0
+aGUgVG9tYXN1bG8gYWxnb3JpdGhtIHNlZW1zIG1vcmUgc2NhbGFibGUgdGhhbiBleHRlbmRlZCBz
+Y29yZWJvYXJkaW5nLgoKCml0IGRlZmluaXRlbHkgaXNuJ3QuCgp0byBnZXQgbXVsdGkgaXNzdWUg
+aW4gVG9tYXN1bG8geW91IG5lZWQgbXVsdGlwbGUgQ29tbW9uIERhdGEgQnVzZXMsCm90aGVyd2lz
+ZSBpdCBiZWNvbWVzIGV2ZW4gbW9yZSBhIGJvdHRsZW5lY2sgdGhhbiBpdCBhbHJlYWR5IGlzLiBh
+c3N1bWluZyA0Cmlzc3VlLCB0byBhY2hpZXZlIHRoaXMgdGhlIFJPQiBuZWVkcyB0byBiZSBtYWRl
+IGEgbXVsdGkgcG9ydGVkICg0UjRXKSBTUkFNLAphbmQsIHdvcnNlLCB0aGUgUmVzZXJ2YXRpb25T
+dGF0aW9uIENBTXMgbm93IGFsc28gbmVlZCB0byBiZSA0UjRXLgoKcGx1cyBzb21lIG90aGVyIG5p
+Z2h0bWFyZSBhc3BlY3RzLgoKCj4gIEkgaW5kaWNhdGVkIGJlZm9yZSB0aGF0IGluIHNtYWxsZXIg
+bm9kZXMgcG93ZXIgY29uc3VtcHRpb24gYW5kIGRlbGF5IGlzCj4gbWFpbmx5IGRldGVybWluZWQg
+YnkgdGhlIGxlbmd0aCBvZiB0aGUgaW50ZXJjb25uZWN0cyBhbmQgbm90IGJ5IHRoZSBpbnB1dAo+
+IGxvYWQgb2YgdGhlIGxvZ2ljIGdhdGVzIGl0c2VsZjsgaW4gMTgwbm0gaXQgd2lsbCBiZSBtb3Jl
+IGZpZnR5L2ZpZnR5LgoKCmFoLCBhcHByZWNpYXRlZCB0aGUgaW5zaWdodAoKd2l0aCB0aGUgQ29t
+cHV0YXRpb24gVW5pdHMgbGF0Y2hlcyBiZWluZyBkaXN0cmlidXRlZCwgbm90IGNlbnRyYWxpc2Vk
+LAp0aGVzZSBsYXRjaGVzIGNhcHR1cmUgdGhlIG9wZXJhbmRzIGNsb3NlIHRvIHRoZSBwb2ludCB3
+aGVyZSB0aGV5IHdpbGwgYmUKZmVkIGludG8gdGhlIHBpcGVsaW5lcy4KCmkgcGxhbiB0byBoYXZl
+IHRoZSBwaXBlbGluZXMgImRvdWJsZSBiYWNrIiBvbiB0aGVtc2VsdmVzLCBwbGFjaW5nIHRoZQpy
+ZXN1bHQgKmJhY2sqIHdoZXJlIHRoZSBDb21wdXRhdGlvbiBVbml0IG1heSBsYXRjaCB0aGUgcmVz
+dWx0LCBlYXNpbHksIHRoZW4Kd2FpdCBmb3IgdGhlIFJlZ2ZpbGUgQ29tbW9uIERhdGEgQnVzIGRl
+ZGljYXRlZCB0byB3cml0aW5nIHRvIHRoZSByZWdmaWxlLgoKdGhlc2UgQnJvYWRjYXN0IEJ1c2Vz
+IGFyZSBhbiB1bmF2b2lkYWJsZSBuZWNlc3NpdHkgYW5kIHdpbGwgbmVlZCBjYXJlZnVsCmRlc2ln
+biBhbmQgbGF5b3V0LCBhbmQgYnVmZmVycyB0byBlbnN1cmUgdGhleSBjYW4gYmUgZHJpdmVuIGF0
+IHNwZWVkLgoKYm90aCBUb21hc3VsbyBhbmQgU2NvcmVib2FyZHMgcmVxdWlyZSB0aGVzZSBsYXJn
+ZSBmYW5vdXQgLyBmYW5pbiBCcm9hZGNhc3QKUmVnZmlsZSBCdXNlcy4KCmV4Y2VwdCB0aGF0IGlu
+IFNjb3JlYm9hcmRzLCBSRUFEIGlzIGNvbXBsZXRlbHkgc2VwYXJhdGUgZnJvbSBXUklURS4KdGhl
+cmVmb3JlLCBSRUFEIGlzIGZhbm91dCBPTkxZIGFuZCBXUklURSBpcyBmYW5pbiBPTkxZLgoKdGhp
+cyBtYWtlcyBhIGNydWNpYWwgZGlmZmVyZW5jZSBiZWNhdXNlIHRoZSBUb21hc3VsbyBDREIgaXMg
+YSBzaW5nbGUgcGF0aApSRUFEICpBTkQqIFdSSVRFIGNvbnRlbmRlZCBnbG9iYWwgcmVzb3VyY2Uu
+CgpzaW5nbGUgZm9yIGRlbGl2ZXJ5IG9mICpBTEwqIGluZmxpZ2h0IGRhdGEuCgogQXMgSmVyZW15
+IGluZGljYXRlZCB0aGlzIGlzIG5leHQgdG8gdGhlIHBvd2VyIGNvbnN1bXB0aW9uIGluIHRoZSBy
+ZWdpc3Rlcgo+IGZpbGVzIGFuZCBjYWNoZSB3aGljaCBzY2FsZXMgd2l0aCB0aGUgdG90YWwgYml0
+IGNvdW50IG9mIHRoZSBibG9jayBhbmQgdGhlCj4gblJtVyBvcmRlciBvZiB0aGUgYmxvY2suCgoK
+NFIxVy4KCgo+IEFsc28gdGhlIHRyYXZpYWxuZXNzIG9mIGEgYmlnIGZhbi1pbiBOT1Igb3IgTkFO
+RCBnYXRlIG1heSBiZSBkZWNlcHRpdmUsCj4gdGhlc2UgZ2F0ZXMgYXJlIG5vdCBmZWFzaWJsZSBh
+bmQgd2lsbCBiZSBzeW50aGVzaXplZCB0byB0cmVlcyBvZiBOQU5EL05PUgo+IGdhdGVzLgoKCnBl
+cmZlY3QuICBhcyBleHBlY3RlZC4gIGRpYWdyYW1zIGluIE1pdGNoJ3MgYm9vayBjaGFwdGVycyBz
+aG93IHRoaXMgYmVpbmcKZG9uZSwgZXNwZWNpYWxseSBvbiB0aGUgMzIgcmVnIHZlY3RvcnMuCgoK
+Cj4KPiAgSW4gdGhhdCByZXNwZWN0IGEgaGlnaCBmYW4taW4gTk9SL05BTkQgY2FuIGhhdmUgc2lt
+aWxhciB0aW1lL3Bvd2VyCj4gY29uc3VtcHRpb24gdGhhbiBhIHNlZW1pbmdseSBtb3JlIGNvbXBs
+ZXggY2FzZSBvZiBpZiBzdGF0ZW1lbnQuIEluIHplcm8KPiBvcmRlciwgZm9yIHNpbmdsZSBvdXRw
+dXQgYmxvY2ssIGRlbGF5IGFuZCBwb3dlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBudW1iZXIKPiBv
+ZiBpbnB1dHMgaW5kZXBlbmRlbnQgb2YgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIFJUTC9IREwgY29k
+ZS4gSW4gZmlyc3Qgb3JkZXIKPiBvbmUgaGFzIHRvIGFjY291bnQgdGhhdCBOQU5EL05PUiBsb2dp
+YyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIFhPUi9YTk9SCj4gbG9naWMgYnV0IGZvciBiaWdnZXIg
+dHJlZXMgdGhpcyBkaWZmZXJlbmNlIGlzIGxlc3MgcHJvbm91bmNlZCBhcyBYT1IvWE5PUgo+IHRy
+ZWVzIHdpbGwgYmUgc3ludGhlc2l6ZWQgdG8gbW9yZSBlZmZpY2llbnQgdHJlZXMgdXNpbmcgQU9J
+IChhbmQtb3ItaW52ZXJ0KQo+IGNlbGxzLgoKCmFwcHJlY2lhdGUgdGhlIGluc2lnaHRzLCBTdGFm
+LgoKdG8gc3VtbWFyaXNlLCB0aGVuOgoKKiB3ZSBoYXZlIHNvbWUgY29udGludW91cyBtaXN1bmRl
+cnN0YW5kaW5ncyBmcm9tIHRoZSBBY2FkZW1pYyBsaXRlcmF0dXJlCndoaWNoIHBlb3BsZSBjb250
+aW51ZSB0byBiZWxpZXZlLCBhbmQgbmVlZCB0byBiZSBzdG9tcGVkIG9uIHdoZW5ldmVyIHRoZXkK
+b2NjdXIuICBuaWNlbHkuCiogd2UgaGF2ZSBzb21lIGJpZyBOT1IvTkFORCBnYXRlcyAoMzIgaW4p
+IHdoaWNoIGNyZWF0ZSBhIGNhc2NhZGUuICB0aGVzZQphcmUgZXhwZWN0ZWQuCiogREZGcyBhcmUg
+dXNlZCBhdCB0aGUgZGVjZW50cmFsaXNlZCBDb21wdXRhdGlvbiBVbml0cyB0byBzdG9yZQpkZWNl
+bnRyYWxpc2VkIGluZmxpZ2h0IGRhdGEKKiBDZW50cmFsaXNlZCA0UjFXIFJlZ2ZpbGVzIHN0b3Jl
+IGNlbnRyYWxpc2VkIHJlZ2lzdGVyIGRhdGEuCiogVW5pZGlyZWN0aW9uYWwgQnJvYWRjYXN0IEJ1
+c2VzIHRyYW5zZmVyIGRhdGEgYmV0d2VlbiBDb21wIFVuaXRzIGFuZApSZWdmaWxlcy4KCmwuCgoK
+Ci0tIAotLS0KY3Jvd2QtZnVuZGVkIGVjby1jb25zY2lvdXMgaGFyZHdhcmU6IGh0dHBzOi8vd3d3
+LmNyb3dkc3VwcGx5LmNvbS9lb21hNjgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
+X19fX19fX19fX19fX18KbGlicmUtcmlzY3YtZGV2IG1haWxpbmcgbGlzdApsaWJyZS1yaXNjdi1k
+ZXZAbGlzdHMubGlicmUtcmlzY3Yub3JnCmh0dHA6Ly9saXN0cy5saWJyZS1yaXNjdi5vcmcvbWFp
+bG1hbi9saXN0aW5mby9saWJyZS1yaXNjdi1kZXYK
+