[libre-riscv-dev] Some recent documenting of work performed for tape-out
[libre-riscv-dev.git] / 7d / 3fe9b10cf2d4c81929ec9f5f2ac47a30085040
1 Return-path: <libre-riscv-dev-bounces@lists.libre-riscv.org>
2 Envelope-to: publicinbox@libre-riscv.org
3 Delivery-date: Wed, 06 May 2020 01:24:13 +0100
4 Received: from localhost ([::1] helo=libre-riscv.org)
5 by libre-soc.org with esmtp (Exim 4.89)
6 (envelope-from <libre-riscv-dev-bounces@lists.libre-riscv.org>)
7 id 1jW7rA-0004C3-DF; Wed, 06 May 2020 01:24:12 +0100
8 Received: from mail-wm1-f44.google.com ([209.85.128.44])
9 by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
10 (Exim 4.89) (envelope-from <programmerjake@gmail.com>)
11 id 1jW7r8-0004Bx-Lu
12 for libre-riscv-dev@lists.libre-riscv.org; Wed, 06 May 2020 01:24:10 +0100
13 Received: by mail-wm1-f44.google.com with SMTP id 188so525603wmc.2
14 for <libre-riscv-dev@lists.libre-riscv.org>;
15 Tue, 05 May 2020 17:24:10 -0700 (PDT)
16 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
17 h=mime-version:references:in-reply-to:from:date:message-id:subject:to;
18 bh=tWuXAHmioQeWJ7f+ppKZOYrxKUAAla7N47WfxlIGJAM=;
19 b=aX1JI8WtUnX2uj1OIAC6GHp86qc8w1JGRKm7TlQ5cVfTB7nCrvxJkXPC9PRtDJtL58
20 zlQSDozcdGln+5APpIv6x9ceKliOGuCrAnNsm4MGSXgeTtd5sXfsMcnzsg9dRmquFODu
21 +PaD49gXyP6AgLIw2Kfst7FDa2aIzvdAy/ezzSGSsYh+Cdx+Ycr9I9OgVgRIpFoowV1m
22 4TWVJO8u1JD3XTpEhH1JtligYLBWJpjH42xhKi/Eyv5kZ21jIkFzG14ABWGUPjM+Zu3M
23 cfYn7e2T0CGUb/JeZ7aqFPybl50cUZSFiBCFoWYOyD9jIT81GuxEc8YvAsib6B5kwoG+
24 ttyA==
25 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
26 d=1e100.net; s=20161025;
27 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
28 :message-id:subject:to;
29 bh=tWuXAHmioQeWJ7f+ppKZOYrxKUAAla7N47WfxlIGJAM=;
30 b=MrIXaxI6YoBLFr/asT6s7hJtJDF8YaCyRNGDwdkIUXq63zyH+B+l5yVDOR4OjT6ALw
31 CezV6TK1XlYQ+dJwaJxzp+FNLYJYf31oyoRr+WF6h48fVrPoRCbXGdU+AxhgGkV1IdZp
32 H1GIvW74EazrPznMKNQdyARKstbzPCa+BeD+xWWuxdKEGh1AKJ/47wmeQ7dY/R9rX0tt
33 NrOvV0pUgYf7fZEX0z9ZZnqVunnFnWolUb7gpDoGEpG02o83FOz9uQ/WV314ulaKiLzo
34 QYIgA01n86HqymboK6F/tFRzycBQnB8h7jTiQW9o1fdtjlXmY3kwURvQ3zhxYUykj9NL
35 fAaA==
36 X-Gm-Message-State: AGi0PubvxSykgjJbfQOWoXNRia3ambKFKCchBjZrpgpZYyvj95mGKRV4
37 VdCKUwi6kXrk6rRjvP2dsvH2RSg2u6wcfiB1xlzoWBE/
38 X-Google-Smtp-Source: APiQypLBGNnI2OAHZ/nWbeYPUfsOyl4d77ku8pg8+roK0bg3kpRXpyT8Fqv0t6DuGfkiAekOkAg0Jwv7uVk88RZP8Vo=
39 X-Received: by 2002:a1c:5448:: with SMTP id p8mr1198564wmi.173.1588724650159;
40 Tue, 05 May 2020 17:24:10 -0700 (PDT)
41 MIME-Version: 1.0
42 References: <CAC2bXD7uY+dxiA1D5vSoNDVg=xtxgdHQk8DrDbB9nx5ZHbDHrg@mail.gmail.com>
43 <CAPweEDxCOYfpj6u0w8Nr+r6CWvz24ukQNUU5U1cXrPAVtWK46A@mail.gmail.com>
44 In-Reply-To: <CAPweEDxCOYfpj6u0w8Nr+r6CWvz24ukQNUU5U1cXrPAVtWK46A@mail.gmail.com>
45 From: Jacob Lifshay <programmerjake@gmail.com>
46 Date: Tue, 5 May 2020 17:23:59 -0700
47 Message-ID: <CAC2bXD4VSerJY3ry_HtouLOzn7gz7CSvQYhQ4L8k5OKN5LfHmQ@mail.gmail.com>
48 To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
49 Subject: Re: [libre-riscv-dev] load/store execution queue idea
50 X-BeenThere: libre-riscv-dev@lists.libre-riscv.org
51 X-Mailman-Version: 2.1.23
52 Precedence: list
53 List-Id: Libre-RISCV General Development
54 <libre-riscv-dev.lists.libre-riscv.org>
55 List-Unsubscribe: <http://lists.libre-riscv.org/mailman/options/libre-riscv-dev>,
56 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=unsubscribe>
57 List-Archive: <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/>
58 List-Post: <mailto:libre-riscv-dev@lists.libre-riscv.org>
59 List-Help: <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=help>
60 List-Subscribe: <http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev>,
61 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=subscribe>
62 Reply-To: Libre-RISCV General Development
63 <libre-riscv-dev@lists.libre-riscv.org>
64 Content-Type: text/plain; charset="utf-8"
65 Content-Transfer-Encoding: base64
66 Errors-To: libre-riscv-dev-bounces@lists.libre-riscv.org
67 Sender: "libre-riscv-dev" <libre-riscv-dev-bounces@lists.libre-riscv.org>
68
69 V2lsbCByZXNwb25kIHRvIGFsbCB0aGVzZSBjb25jZXJucyBsYXRlciwgb25jZSB0aGVyZSBpcyBt
70 b3JlIGZyZWUgdGltZS4KCk9uIEZyaSwgTWF5IDEsIDIwMjAgYXQgNDoyNSBBTSBMdWtlIEtlbm5l
71 dGggQ2Fzc29uIExlaWdodG9uCjxsa2NsQGxrY2wubmV0PiB3cm90ZToKPgo+IE9uIEZyaSwgTWF5
72 IDEsIDIwMjAgYXQgMzo1NCBBTSBKYWNvYiBMaWZzaGF5IDxwcm9ncmFtbWVyamFrZUBnbWFpbC5j
73 b20+IHdyb3RlOgo+Cj4gPiBJIGZpbGxlZCBvdXQgc29tZSBub3RlcyBvbiBteSBsb2FkL3N0b3Jl
74 IGV4ZWN1dGlvbiBxdWV1ZSBpZGVhIGhlcmU6Cj4gPiBodHRwczovL2xpYnJlLXNvYy5vcmcvM2Rf
75 Z3B1L2FyY2hpdGVjdHVyZS9hbHRlcm5hdGl2ZS1kZXNpZ24taWRlYS8KPgo+IGV4Y2VsbGVudC4K
76 Pgo+ID4gVGhlIGRlc2lnbiBzaG91bGQgYmUgc3VpdGFibGUgZm9yIHRoZSBmaW5hbCAyOG5tIFNv
77 QyBhbmQgc2hvdWxkIGJlCj4gPiBhYmxlIHRvIGV4ZWN1dGUgNCBsb2FkcyBvciA0IHN0b3JlcyBv
78 ciA0IEFNT3Mgb3IgNCBmZW5jZXMgcGVyIGN5Y2xlLAo+ID4gY29tcGxldGVseSBhZGp1c3RhYmxl
79 IHRvIHNvbWUgb3RoZXIgbnVtYmVyIGlmIHdlIGRlc2lyZS4gVGhpcyB0b3RhbGx5Cj4gPiByZXBs
80 YWNlcyB0aGUgbWVtb3J5IGRlcGVuZGVuY3kgbWF0cml4Lgo+Cj4gaG1tLiAgIHRoZSBNRE0gaXMg
81 c3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGlkZW50aWZ5IHNlcGFyYXRlIGFuZAo+IGRpc3RpbmN0
82 IExELWJhdGNoZXMgZnJvbSBTVC1iYXRjaGVzIGZyb20gQXRvbWljLWJhdGNoZXMsIGluIGFuCj4g
83 ZXh0cmVtZWx5IGdhdGUtZWZmaWNpZW50IGZhc2hpb24uICB3ZSBkb24ndCBuZWVkIFRTTywgd2Ug
84 anVzdCBuZWVkIHRvCj4gcHJlc2VydmUgdGhlIG9yZGVyIG9mIGJhdGNoZXMgKGFuZCBhbHNvIGlk
85 ZW50aWZ5IG92ZXJsYXBzKS4KPgo+Cj4gPiBPbmUgZG93bnNpZGUgaXMgaXQgZG9lc24ndAo+ID4g
86 c3VwcG9ydCBmb3J3YXJkaW5nIGZyb20gc3RvcmVzIHRvIGxhdGVyIGxvYWRzIHdpdGhvdXQgZ29p
87 bmcgdGhyb3VnaAo+ID4gdGhlIEwxIGNhY2hlLgo+Cj4gdGhhdCdzIG9rLgo+Cj4gb2ssIGEgY3Jp
88 dGljYWwgYXNwZWN0IHRvIHVuZGVyc3RhbmQgYWJvdXQgQ29tcHV0YXRpb25hbCBVbml0czogdGhl
89 eSBkbwo+ICpub3QqIHByb2NlZWQgdW50aWwgdGhlICJwdXJwb3NlIiB0aGF0IHRoZXkgbWFuYWdl
90 IGlzIGVudGlyZWx5IGZpbmlzaGVkLgo+IHRoZXkgdGhlbiAqbm90aWZ5KiB0aGUgRGVwZW5kZW5j
91 eSBNYXRyaWNlcyB0aGF0IHRoZSAicmVzdWx0IiBpcyBkb25lCj4gKGF2YWlsYWJsZSksIGFuZCAq
92 dGhlbiogdGhleSBkcm9wIHRoZWlyICJidXN5IiBmbGFnLCByZWFkeSBmb3IgcmUtdXNlIGZvcgo+
93 IGFub3RoZXIgb3BlcmF0aW9uLgo+Cj4gdGhpcyBpcyB0aGUgdG90YWwgb3Bwb3NpdGUgb2YgYSBw
94 aXBlbGluZSBvciBxdWV1ZSwgd2hlcmUgeW91IGNodWNrIGRhdGEKPiBhdCBpdCwgYWJkaWNhdGUg
95 cmVzcG9uc2liaWxpdHkgZm9yIGl0cyBtYW5hZ2VtZW50LCBhbmQgYXQgc29tZSBhcmJpdHJhcnkK
96 PiBwb2ludCBpbiB0aGUgZnV0dXJlLCB0aGUgcmVzdWx0IGNvbWVzIG91dCwgYnV0IGJ5IHRoYXQg
97 dGltZSBldmVyeXRoaW5nCj4gaGFzIG1vdmVkIG9uLgo+Cj4gYW4gb3V0LW9mLW9yZGVyIHNjaGVk
98 dWxpbmcgc3lzdGVtICpjYW5ub3QqIC0gaW4gYW55IHdheSAtIHBlcm1pdCB0aGF0Cj4gdG8gaGFw
99 cGVuLiAgdGhlIHJlc3VsdHMgd291bGQgYmUgY2F0YXN0cm9waGljLgo+Cj4gdGhlcmVmb3JlIGlu
100 IHRoZSBBTFUgQ29tcHV0YXRpb25hbCBVbml0cyB3aGljaCBtYW5hZ2UgYSBwaXBlbGluZQo+IChv
101 ciBwaXBlbGluZXMpLCB3ZSAqbXVzdCogaGF2ZSBlcXVhbCBvciBncmVhdGVkIENvbXBVbml0cyB0
102 aGFuCj4gdGhlcmUgaXMgcGlwZWxpbmUgZGVwdGguCj4KPiAqIGdyZWF0ZXIgdGhhbiB0aGF0IGlz
103 IG9rOiBpbnN0cnVjdGlvbnMgd2lsbCBiZSBhYmxlIHRvIHJ1biBhaGVhZC4KPiAgIHRoZSBERVNJ
104 UkUgdG8gcnVuIGluc3RydWN0aW9ucyAoYW5kIHRoZSBvcmRlciBhcyBhIERBRykgaXMKPiAgIHJl
105 Y29yZGVkLCBob3dldmVyIHRoZWlyIEFDVFVBTCBleGVjdXRpb24gbXVzdCB3YWl0IHVudGlsCj4g
106 ICB0aGVyZSBpcyBhIGZyZWUgcGlwZWxpbmUgc2xvdC4KPiAqIGxlc3MgdGhhbiB0aGF0IGlzIE5P
107 VCByZWFsbHkgb2sgKGEgd2FzdGUgb2Ygc2lsaWNvbikgYmVjYXVzZSB0aGVyZQo+ICAgaXMgbm90
108 IGVub3VnaCB0byB0cmFjayB0aGUgcHJvZ3Jlc3Mgb2YgZWFjaCBhbmQgZXZlcnkgb3BlcmF0aW9u
109 Cj4gICBnb2luZyB0aHJvdWdoIGVhY2ggYW5kIGV2ZXJ5IHBpcGVsaW5lIHN0YWdlLgo+Cj4gd2hl
110 biBpdCBjb21lcyB0byBtYW5hZ2luZyBNZW1vcnksIHRoZSBpbXBsaWNhdGlvbnMgYXJlIGFzIGZv
111 bGxvd3M6Cj4KPiAqIHRvIGhhdmUgbW9yZSBMRC9TVCBDb21wdXRhdGlvbiBVbml0cyB0aGFuIHRo
112 ZXJlIGFyZSAiQ2VsbHMiCj4gICBpcyBsaWtld2lzZSBvay4gIGluc3RydWN0aW9ucyB3aWxsIGJl
113 IGFibGUgdG8gcnVuIGFoZWFkLgo+ICogdG8gaGF2ZSBMRVNTIExEL1NUIENVcyB0aGFuIHRoZXJl
114 IGFyZSAiQ2VsbHMiIGlzICpOT1QqIG9rLAo+ICAgYmVjYXVzZSB0aGUgQ29tcHV0YXRpb25Vbml0
115 cyB3aWxsIE5FVkVSUlJSUiBpc3N1ZSBhCj4gICBMRCBvciBTVCB1bnRpbCBpdCBrbm93cyAtIGFi
116 c29sdXRlbHkgYW5kIHdpdGhvdXQgYW55IHNoYWRvdyBvZgo+ICAgZG91YnQgLSB0aGF0IHRoZSBv
117 cGVyYXRpb24gaXQgbW9uaXRvcnMgaGFzIDEwMCUgYWJzb2x1dGUgZ3VhcmFudGVlZAo+ICAgY29t
118 cGxldGVkLgo+Cj4gc28gdGhhdCdzIHJlYWxseSBjcnVjaWFsIGluZm9ybWF0aW9uIHRoYXQgaGFz
119 IGltcGxpY2F0aW9ucyBmb3IgdGhlCj4gZGVzaWduIG9mIHRoZSBMRC9TVCBCdWZmZXIsIGltcG9y
120 dGFudCBhcyBjb250ZXh0LCBiZWxvdy4KPgo+Cj4gbm90ZXM6Cj4KPiAxKSB0aGUgY2VsbCBhcnJh
121 bmdlbWVudCBzdGlsbCBuZWVkcyBhbiA4LWlucHV0ICg4IExEL1NUIENvbXB1dGF0aW9uIFVuaXRz
122 KQo+IHRvIDQtb3V0cHV0IChoZWFkIG9mIGVhY2ggImNvbHVtbiIgb2YgZWFjaCBxdWV1ZSkgbXVs
123 dGlwbGV4ZXIuCj4gdW5sZXNzIGkndmUgbWlzdW5kZXJzdG9vZCwgdGhhdCBhbG9uZSBpcyBhIGtp
124 bGxlci4KPgo+IGRyb3BwaW5nIGVhY2ggb2YgdGhlIDgtaW5wdXQgcXVldWUgZW50cmllcyBpbnRv
125 IHRoZSBmaXJzdCA4IGNlbGxzICp0aGVuKgo+IHBlcmZvcm1pbmcgc2hpZnRpbmcsICp0aGF0KiBp
126 cyBva2F5LiAgYnV0IGFsbG93aW5nIGVhY2ggYW5kIGV2ZXJ5IHNpbmdsZQo+IG9uZSBvZiB0aG9z
127 ZSA4IExEL1NUIENvbXBVbml0cyB0byB3cml0ZSB0byBjZWxscyAwLTQ/IHRoZSB3aXJpbmcgYWxv
128 bmUKPiBpcyBpbnNhbmUuCj4KPiBhc3N1bWUgMTI4IGJpdHMgcGVyIG9wZXJhdGlvbiAoNDggYWRk
129 cmVzcywgNjQgZGF0YSwgc29tZSBjb250cm9sIGxpbmVzCj4gbGV0J3Mgcm91bmQgaXQgdXAgdG8g
130 MTI4IGJpdHMpOiB3aXRoIDEyOC13aWRlIGRhdGEgcGF0aHMgdGltZXMgOCBMRC9TVAo+IENvbXAg
131 VW5pdHMgdGltZXMgKjQqIHRvIGJlIGFibGUgdG8gYXJiaXRyYXJpbHkgd3JpdGUgdG8gYW55IG9u
132 ZSBvZgo+IDQgInRvcCByb3ciIGNlbGxzPyAgdGhhdCdzIGEgTUFTU0lWRSA0MDk2IHdpcmVzIQo+
133 Cj4gd2UgY2FuJ3QgcG9zc2libHkgaGF2ZSB0aGF0IG1hbnkgd2lyZXMuCj4KPiBpZiB5b3UgbWVh
134 bnQgdGhhdCB0aGUgcXVldWUgd2lkdGggc2hvdWxkIG1hdGNoIHRoZSBudW1iZXIgb2YgTEQvU1QK
135 PiBVbml0cyAtIDgtd2lkZSBiZWNhdXNlIHdlIG5lZWQgOCBMRC9TVCBDb21wVW5pdHMgKHdlIG1p
136 Z2h0IGJlCj4gYWJsZSB0byBnZXQgYXdheSB3aXRoIG9ubHkgNikgLSB0aGVuIHRoZSByZW1haW5p
137 bmcgZW50cmllcyB3aWxsIGFjdHVhbGx5Cj4gcmVtYWluIHBlcm1hbmVudGx5IGVtcHR5LCBiZWNh
138 dXNlIHRoZXJlICpoYXMqIHRvIGJlIGEgZGlyZWN0Cj4gb25lLXRvLW9uZSBtYXRjaCBiZXR3ZWVu
139 IExEL1NUIENvbXBVbml0cyBhbmQgdGhlIExEL1NUIHRoYXQKPiBpdCAibWFuYWdlcyIuCj4KPiBz
140 byB0aGVyZSB3b3VsZCBvbmx5IGJlIDggTEQvU1RzLCBhbmQgYSByb3cgZGVwdGggb2YgMS4KPgo+
141 IGlmIGhvd2V2ZXIgd2UgZG8gMi1wb3J0cyBwZXIgQ29tcFVuaXQgKHRvIGNvdmVyIG1pc2FsaWdu
142 ZWQpLCB0aGVuIHRoZXJlCj4gd291bGQgYmUgYW4gOC13aWRlIGJ5IDItcm93IGFycmFuZ2VtZW50
143 IG9mIENlbGxzLgo+Cj4gd2l0aCBvbmx5IGEgQ2VsbCBEZXB0aCBvZiAxIG9yIDIsIHRoZSBwdXJw
144 b3NlICpvZiogdGhlIENlbGxzIGlzIGRlZmVhdGVkCj4gZW50aXJlbHkuICB0aGVyZSdzIG5vIG5l
145 ZWQgZm9yIHNoaWZ0aW5nOiB0aGUgZW50cmllcyBtaWdodCBhcyB3ZWxsIHN0YXkKPiB3aGVyZSB0
146 aGV5IGFyZS4KPgo+IHRoaXMgcGFydGljdWxhcmx5IGJlY2F1c2UgZXZlbiBmb3IgdGhlICJtaXNh
147 bGlnbm1lbnQiIGNhc2UsIHRoZSBMRC9TVAo+IENvbXBVbml0IGlzICpORVZFUlJSKiBnb2luZyB0
148 byBwbGFjZSBhbnl0aGluZyBvdGhlciB0aGFuIHRoZQo+IDIgcmVxdWVzdHMgaXQgaXMgcmVzcG9u
149 c2libGUgZm9yIGludG8gdGhlIHF1ZXVlOgo+Cj4gKiBmaXJzdCBvbmUgY292ZXJpbmcgdGhlIGxv
150 d2VyIHBhcnQgb2YgdGhlIG1pc2FsaWduZWQgcmVxdWVzdAo+ICogc2Vjb25kIG9uZSBjb3Zlcmlu
151 ZyB0aGUgdXBwZXIgcGFydC4KPgo+IG5vIG1hdHRlciBob3cgbWFueSBjb2x1bW5zIChhc3N1bWlu
152 ZyB0aGF0IHRoZXJlIGlzIG9uZQo+IHBlciBMRFNUQ1UpIGFsbCBvdGhlciByb3dzICp3aWxsKiBy
153 ZW1haW4gZW1wdHkuCj4KPiBhbmQgaWYgdGhlIGNvbHVtbnMgYXJlIGhhbHZlZCAoNCB3aWRlIHRv
154 IGNvdmVyIDggTEQvU1QgQ1VzKQo+IG5vdyB3ZSBoYXZlIGEgbXVjaCBtb3JlIHNlcmlvdXMgcHJv
155 YmxlbTogdGhlIHRvdGFsIGRhdGEgYmFuZHdpZHRoCj4gaXMgc2hydW5rIHRvIG9ubHkgNHggNjQt
156 Yml0IG9wZXJhdGlvbnMgKmFuZCogdGhlcmUgaXMgYSBtdWx0aXBsZXhpbmcKPiBwcm9ibGVtIGFj
157 dHVhbGx5IGdldHRpbmcgZGF0YSBpbnRvIHRoZSBmaXJzdCAyIHJvd3MgKGFjdHVhbGx5LCBub3cs
158 Cj4gNCByb3dzIGlmIHRoZXJlIGFyZSAyIHBvcnRzIHBlciBMRC9TVCBDVSwgb25lIGZvciBsb3dl
159 ci1taXNhbGlnbmVkCj4gb25lIGZvciB1cHBlci1taXNhbGlnbmVkKS4KPgo+IGRvIHdlIHN0YWxs
160 IHRoZSByZXF1ZXN0cyBpZiB0aGV5IGRvIG5vdCBoYXZlIGFjY2Vzcz8gIHRoYXQgbWVhbnMKPiB0
161 aGF0IG9wcG9ydHVuaXRpZXMgdG8ga2VlcCB0aGUgTDEgY2FjaGUtbGluZSByZXF1ZXN0cyAxMDAl
162 IGZ1bGwKPiBhcmUgbWlzc2VkLCB3aGVyZSB0aGUgY3VycmVudCBkZXNpZ24gY2FuICpldmVuIGNh
163 dGNoIG1pc2FsaWduZWQKPiBlbGVtZW50LXN0cmlkZWQgZGF0YSByZXF1ZXN0cyogYW5kIGNhbiAx
164 MDAlIG1lcmdlIHRoZW0gaW50bwo+IGEgZnVsbCBjYWNoZS1saW5lIHJlcXVlc3QuCj4KPgo+Cj4g
165 ImFuZCB0aGUgTDEgY2FjaGUgbGluZSBhZGRyZXNzIGl0IHdvdWxkIHVzZSBpcyBicm9hZGNhc3Qg
166 dG8gYWxsIGNlbGxzLiIKPgo+IHRoaXMgaXMgYSBmdWxsIFhPUi1jb21wYXJpc29uIG9mIHRoZSBl
167 bnRpcmUgYWRkcmVzcywgYWdhaW5zdCBldmVyeSBzaW5nbGUgY2VsbC4KPgo+IGlmIHRoZSBhZGRy
168 ZXNzIGlzIDQ4IGJpdHMgYW5kIHRoZXJlIGFyZSAxMiBjZWxscywgdXNpbmcgYml0cyAzIGFuZCBh
169 Ym92ZSBvZgo+IHRoZSBhZGRyZXNzIHdpbGwgcmVxdWlyZSA1MjggWE9SIGdhdGVzLgo+Cj4gaWYg
170 d2Ugd2FudCAqdHdvKiBMMSBjYWNoZSBsaW5lIGFkZHJlc3NlcyBzaW11bHRhbmVvdXNseSAocmF0
171 aGVyIHRoYW4KPiBnb2luZyB0byAyNTYtYml0LXdpZGUgTDEgY2FjaGUgbGluZXMpLCB0aGF0J3Mg
172 KnR3byogYnJvYWRjYXN0cywgZWFjaCA1MjgKPiBYT1IgZ2F0ZXMuCj4KPgo+IDIpIGhvdyBhcmUg
173 b3ZlcmxhcHBpbmcgYWRkcmVzc2VzIGRldGVjdGVkPyAgb3IsIG1vcmUgdG8gdGhlIHBvaW50LAo+
174 IGhvdyBhcmUgbm9uLW92ZXJsYXBwaW5nIGFkZHJlc3NlcyBkZXRlY3RlZCBzdWNoIHRoYXQgdGhl
175 eSBjYW4gYmUKPiBwYXNzZWQgdGhyb3VnaCBhcyBhIGdyb3VwLCBhbmQgZ2l2ZW4gdGhlIG9wcG9y
176 dHVuaXR5IHRvIGJlIGRvbmUgaW4KPiBwYXJhbGxlbD8KPgo+IDMpIGhvdyB3b3VsZCBtaXNhbGln
177 bmVkIGFkZHJlc3NlcyBoYW5kbGVkPwo+Cj4gNCkgaSdtIG5vdCBzZWVpbmcgaG93IHJlcXVlc3Rz
178 IGNvdWxkIGJlIG1lcmdlZCBpbnRvICIxMDAlIGZ1bGwgY2FjaGUKPiBsaW5lIiByZXF1ZXN0cywg
179 d2hpY2ggdGhlIGN1cnJlbnQgZGVzaWduIGlzIGNhcGFibGUgb2YgZG9pbmcsIGJ5IHVzaW5nCj4g
180 c2ltcGxlIGJpdC13aXNlIEFORGluZyBhbmQgT1JpbmcuICB0aGUgQWJzdHJhY3QgUHJlZml4IFN1
181 bSBjbGFzcwo+IGRvZXNuJ3QgbG9vayBvYnZpb3VzIGFzIHRvIGhvdyB0aGF0IGhhcHBlbnMsIGFu
182 ZCBpcyBsaWtlbHkgdG8gYmUKPiBtdWNoIG1vcmUgY29zdGx5IHRoYW4gYSBzaW1wbGUgQU5EIGFu
183 ZCBPUiBuZXR3b3JrLgo+Cj4gNSkgaG93IGFyZSBjbGFzaGVzIG9mIGFkZHJlc3NlcyAqaW50ZXIt
184 cm93KiBkZXRlY3RlZD8gIGlmIENlbGwgMCBoYXMgYSBTVAo+IG9mIDgtYml0cyB0byBhZGRyZXNz
185 IDB4MDAwMSBhbmQgQ2VsbCAxIGhhcyBhIFNUIG9mIDggYml0cyB0byBhZGRyZXNzCj4gMHgwMDAy
186 IChhIDcgYnl0ZSBvdmVybGFwKSwgaG93IGlzIHRoaXMgZGV0ZWN0ZWQgKmluIHRoZSByb3cqPwo+
187 Cj4gaW4gdGhlIGNvbHVtbiBpdCBpcyBmaW5lLCBiZWNhdXNlIG9ubHkgb25lIHJvdyBpcyBldmVy
188 IGRvbmUgYXQgb25jZQo+ICh3aGljaCBoYXMgaW1wbGljYXRpb25zIGZvciBtaXMtYWxpZ25lZCBk
189 YXRhIHJlcXVlc3RzLCB0aGVyZSB3aWxsIG5ldmVyCj4gYmUgYSAxMDAlIG1lcmdlIG9wcG9ydHVu
190 aXR5KQo+Cj4KPiBhbGwgb2YgdGhlc2UgdGhpbmdzIHRvb2sgc2V2ZXJhbCAqbW9udGhzKiB0byBm
191 YWN0b3IgaW4gdG8gdGhlIGRlc2lnbiwgaW4KPiBzZXZlcmFsIHN0YWdlcy4gIGl0J3MgbWFzc2l2
192 ZWx5IGNvbXBsZXggYW5kIGludGVyLWRlcGVuZGVudC4KPgo+IGwuCj4KPiBfX19fX19fX19fX19f
193 X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGxpYnJlLXJpc2N2LWRldiBtYWls
194 aW5nIGxpc3QKPiBsaWJyZS1yaXNjdi1kZXZAbGlzdHMubGlicmUtcmlzY3Yub3JnCj4gaHR0cDov
195 L2xpc3RzLmxpYnJlLXJpc2N2Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpYnJlLXJpc2N2LWRldgoK
196 X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlicmUtcmlz
197 Y3YtZGV2IG1haWxpbmcgbGlzdApsaWJyZS1yaXNjdi1kZXZAbGlzdHMubGlicmUtcmlzY3Yub3Jn
198 Cmh0dHA6Ly9saXN0cy5saWJyZS1yaXNjdi5vcmcvbWFpbG1hbi9saXN0aW5mby9saWJyZS1yaXNj
199 di1kZXYK
200