[libre-riscv-dev] [Bug 305] Create Pipelined ALU similar to alu_hier.py
[libre-riscv-dev.git] / 8d / 3d78ba60d49b798223f28cc65bd03c682cde14
1 Return-path: <libre-riscv-dev-bounces@lists.libre-riscv.org>
2 Envelope-to: publicinbox@libre-riscv.org
3 Delivery-date: Sun, 03 May 2020 12:02:47 +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 1jVCOU-0000Ao-4L; Sun, 03 May 2020 12:02:46 +0100
8 Received: from lkcl.net ([217.147.94.29])
9 by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
10 (Exim 4.89) (envelope-from <lkcl@lkcl.net>) id 1jVCOS-0000Af-47
11 for libre-riscv-dev@lists.libre-riscv.org; Sun, 03 May 2020 12:02:44 +0100
12 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lkcl.net;
13 s=201607131;
14 h=Content-Type:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version;
15 bh=1pF9hyqep+icuZV5I7Hz3RwnoPdtARG6yHfYG0KgBp0=;
16 b=JAXc0xBtMeSaZWtbF2KlRKS22o9oA3YoluVXUr45tQfl2LiQ6MRAB0K/oykBznXMwCC1OTzWJg+QdWF5wfSUgl+oQlPHfeCpqQrdDSyfxk14nnAGPJc+7ND6N0Kaj8xnznS3uS+X/BYoxN7L/dwE5Sp6ptdNcJ1vM2icAIvxBM0=;
17 Received: from mail-lf1-f47.google.com ([209.85.167.47])
18 by lkcl.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
19 (Exim 4.84_2) (envelope-from <lkcl@lkcl.net>) id 1jVCOR-0003AB-QG
20 for libre-riscv-dev@lists.libre-riscv.org; Sun, 03 May 2020 11:02:43 +0000
21 Received: by mail-lf1-f47.google.com with SMTP id a9so1849210lfb.8
22 for <libre-riscv-dev@lists.libre-riscv.org>;
23 Sun, 03 May 2020 04:02:28 -0700 (PDT)
24 X-Gm-Message-State: AGi0Pubk1rSz2kkGsXhtmVHtJXHidXyDTg/mkQZ14tS2MePsUU9ahvcC
25 VFOz0x3es8zg5NvpoADLTpjCJCaK/eWNx2G6yhs=
26 X-Google-Smtp-Source: APiQypImO4qSE/HYXF7nGMtZ76fVqdS/zofZp6S665ej2U6uB4ix0zn8WnJGPyBRPElIJ/rGIKtNZHTctx65e/HQ3b0=
27 X-Received: by 2002:ac2:5684:: with SMTP id 4mr7986719lfr.88.1588503742670;
28 Sun, 03 May 2020 04:02:22 -0700 (PDT)
29 MIME-Version: 1.0
30 References: <A834A1B9-5B29-411C-8EFF-75562B46B596@gatech.edu>
31 <9458BF50-C9A6-44E5-AC7B-4A3891DE6CC1@gatech.edu>
32 <CAC2bXD7fw-mX9F_cNwfZg_dBpoRP-YHBB9vWqHzPLqC--WkUvQ@mail.gmail.com>
33 In-Reply-To: <CAC2bXD7fw-mX9F_cNwfZg_dBpoRP-YHBB9vWqHzPLqC--WkUvQ@mail.gmail.com>
34 From: Luke Kenneth Casson Leighton <lkcl@lkcl.net>
35 Date: Sun, 3 May 2020 12:02:11 +0100
36 X-Gmail-Original-Message-ID: <CAPweEDyvYgO0SUAQMuwuFPEpi7u4snbUJ1NxrKMuocBqmQeJEQ@mail.gmail.com>
37 Message-ID: <CAPweEDyvYgO0SUAQMuwuFPEpi7u4snbUJ1NxrKMuocBqmQeJEQ@mail.gmail.com>
38 To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
39 Subject: Re: [libre-riscv-dev] experimental code & monorepo
40 X-BeenThere: libre-riscv-dev@lists.libre-riscv.org
41 X-Mailman-Version: 2.1.23
42 Precedence: list
43 List-Id: Libre-RISCV General Development
44 <libre-riscv-dev.lists.libre-riscv.org>
45 List-Unsubscribe: <http://lists.libre-riscv.org/mailman/options/libre-riscv-dev>,
46 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=unsubscribe>
47 List-Archive: <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/>
48 List-Post: <mailto:libre-riscv-dev@lists.libre-riscv.org>
49 List-Help: <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=help>
50 List-Subscribe: <http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev>,
51 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=subscribe>
52 Reply-To: Libre-RISCV General Development
53 <libre-riscv-dev@lists.libre-riscv.org>
54 Content-Type: text/plain; charset="utf-8"
55 Content-Transfer-Encoding: base64
56 Errors-To: libre-riscv-dev-bounces@lists.libre-riscv.org
57 Sender: "libre-riscv-dev" <libre-riscv-dev-bounces@lists.libre-riscv.org>
58
59 LS0tCmNyb3dkLWZ1bmRlZCBlY28tY29uc2Npb3VzIGhhcmR3YXJlOiBodHRwczovL3d3dy5jcm93
60 ZHN1cHBseS5jb20vZW9tYTY4CgpPbiBTdW4sIE1heSAzLCAyMDIwIGF0IDU6NDkgQU0gSmFjb2Ig
61 TGlmc2hheSA8cHJvZ3JhbW1lcmpha2VAZ21haWwuY29tPiB3cm90ZToKPgo+IE9uIFNhdCwgTWF5
62 IDIsIDIwMjAsIDExOjQ3IFllaG93c2h1YSA8eWltbWFudWVsM0BnYXRlY2guZWR1PiB3cm90ZToK
63 Pgo+ID4gQWxzbyAtIHdlIGhhdmUgc29tZSBleHBlcmltZW50YWwgZmlsZXMgaW4gdGhlIFNPQyBy
64 ZXBvLgo+ID4gSSB0aGluayBpdCBpcyBhIGdvb2QgcHJhY3RpY2UgdG8gbWFrZSBhbiBleHBlcmlt
65 ZW50YWwgYnJhbmNoIGluc3RlYWQuCj4KPgo+ID4gVGhvdWdodHM/Cj4gPgo+Cj4gV2UgcmVhbGx5
66 IHNob3VsZCBtb3ZlIGFsbCBjb2RlIHRoYXQncyBub3QgYWN0dWFsbHkgdXNlZCBpbiB0aGUgZmlu
67 YWwgc29jIHRvCj4gaXRzIG93biBmb2xkZXIgb3IgYnJhbmNoIC0tIGN1cnJlbnRseSwgdGhlcmUg
68 aXMgbG90cyBvZiB1bnVzZWQgY29kZSB0aGF0Cj4gZWl0aGVyIHdhcyB1c2VkIGluIHRoZSBwYXN0
69 IG9yIHdlIGludGVuZCB0byBldmVudHVhbGx5IHVzZSBvciBldmVuIG5ldmVyCj4gaW50ZW5kZWQg
70 dG8gdXNlCgpzaWdoIHRoaXMgaXMgYmVjYXVzZSB3ZSB3ZXJlIHBsYW5uaW5nIHRvIHVzZSBSSVND
71 LVYgYW5kIGNvbnNlcXVlbnRseSwKcGxhbm5pbmcgYWhlYWQsIGRldmVsb3BlZCBhbmQgZHJvcHBl
72 ZGluIGEgdG9uIG9mIGNvZGUgKnNwZWNpZmljYWxseSoKaW50ZW5kZWQgdG8gbWVldCBSSVNDLVYg
73 TU1VIHJlcXVpcmVtZW50cyBmb3IgU01QIGNhY2hlLWNvaGVyZW50CnN5c3RlbXMuCgppJ3ZlIG1v
74 dmVkIHR3byBkaXJlY3RvcmllcyBpbnRvICJ1bnVzZWQiLiAgYSBiZXR0ZXIgbmFtZSBjYW4gYmUg
75 Y2hvc2VuIGxhdGVyCgo+IChsb3RzIG9mIG1pbmVydmEKCmFsbCBvZiBtaW5lcnZhCgo+IGFuZCBz
76 b21lIG9mIHRoZSBGUCBjb2RlKQoKdGhlcmUgZGVmaW5pdGVseSBzaG91bGQgbm90IGJlICphbnkq
77 IEZQLXJlbGF0ZWQgY29kZSBpbiB0aGUgc29jIHJlcG8uCnRoaXMgaXMgZGVsaWJlcmF0ZSBhdCB0
78 aGUgbW9tZW50CgoKPiBhbmQgd2FzIG9ubHkgZXZlciByZWZlcmVuY2UgY29kZSB0byBiYXNlIG91
79 ciBuZXcgY29kZSBvbi4KCm5vLCB0aGUgcmVhc29uIGkgZHJvcHBlZCBtaW5lcnZhIGludG8gdGhl
80 IHRyZWUgd2FzIHRvICp1c2UqIHRoYXQgY29kZSwKbm90IHRvICJiYXNlIiBvdXIgbmV3IGNvZGUg
81 b24uICBkZWZpbml0ZWx5IG5vdCBhcyAicmVmZXJlbmNlIGNvZGUgdG8KbG9vayBhdCIuICBhY3R1
82 YWxseSBtb3ZlIG9yIGNvcHkgdGhhdCBjb2RlICpvdXQqIG9mIHRoZSBtaW5lcnZhCnN1YmRpcmVj
83 dG9yeSBhbmQgKmFkYXB0KiBpdC4KCnRvIHNhdmUgYSBodWdlIGFtb3VudCBvZiB0aW1lICh3aGlj
84 aCB3ZSBkbyBub3QgaGF2ZSBzcGFyZSB0byB3cml0ZSBvdXIKb3duIGNvZGUpLCB0aGlzIGlzIHN0
85 aWxsIHRoZSBwbGFuIGZvciB0aGUgZW50aXJlIEwxIGNhY2hlCmluZnJhc3RydWN0dXJlIGRvd24g
86 dG8gdGhlIHdpc2hib25lIGludGVyZmFjZXMsIGFzIG91dGxpbmVkIGluIHRoZQpib3R0b20gaGFs
87 ZiBvZiB0aGlzIGRpYWdyYW06CgpodHRwczovL2xpYnJlLXNvYy5vcmcvM2RfZ3B1LzE4MG5tX3Np
88 bmdsZV9jb3JlX3Rlc3Rhc2ljX21lbWxheW91dC5qcGcKCgoqIG1vZGlmeWluZyB0aGUgTDEgY2Fj
89 aGUgd2lkdGggdG8gMTI4IGJpdHMsCiogZG91YmxpbmcgdGhlbSB1cCAob2RkL2V2ZW4sIGFkZHJl
90 c3NhYmxlIGJ5IGFkZHJbNF0pLAoqIHNwbGl0dGluZyB0byBkdWFsIDY0LWJpdCBpbnRlcmZhY2Vz
91 IG9uIHRoZSBvdXRwdXQgKHRvIG1lZXQgV2lzaGJvbmUKcmVxdWlyZW1lbnRzKQoqIGFuZCBsb2Nh
92 dGluZyBhIHN1aXRhYmxlIFdpc2hib25lIEFyYml0ZXIgZm9yIHRoZSBwdXJwb3NlIG9mIG1lcmdp
93 bmcKdGhlICpmb3VyKiByZXN1bHRhbnQgNjQtYml0IGludGVyZmFjZXMgb250byB0aGUgb25lIDY0
94 LWJpdCBXaXNoYm9uZQpCdXMuCgp0aGUgcmVhc29uIGZvciBkb2luZyB0aGlzIGlzIGFzIGkgc2Fp
95 ZCBpIHRoaW5rIHllc3RlcmRheSwgaXMgdG8gc2F2ZSBhCmh1Z2UgYW1vdW50IG9mIHRpbWUgKHdo
96 aWNoIHdlICpkbyBub3QgaGF2ZSBzcGFyZSopIGFuZCB0byBtYWtlIHVzZSBvZgp0aGUgTWluZXJ2
97 YSBMMSBDYWNoZSBGb3JtYWwgQ29ycmVjdG5lc3MgUHJvb2YgKHdoaWNoIHdlIGxpa2V3aXNlIGRv
98 Cm5vdCBoYXZlIHRoZSB0aW1lIHRvIHJlcGxpY2F0ZSkKCndpdGggbm8gdGltZSBsZWZ0IHRvIGFk
99 ZCBkdWFsIFJJU0MtViBzdXBwb3J0LCBvdGhlciB0aGFuIHN1cHBvcnQKbW9kdWxlcyBmb3IgdGhl
100 IEwxIGNhY2hlIGNvZGUgKHdpc2hib25lIHV0aWxzKSB0aGUgcmVzdCBvZiB0aGUgbWluZXJ2YQpj
101 b2RlIGNhbiBiZSBkaXNjYXJkZWQuCgoKPiBBbGwgb2YgdGhhdCBtYWtlcyBpdCB2ZXJ5IGNvbmZ1
102 c2luZwo+IHRvIG5ld2NvbWVycyBhbmQgcGFydGlhbGx5IGNvbmZ1c2luZyBmb3IgcGVvcGxlIHdo
103 byBhcmVuJ3QgbmV3Y29tZXJzCj4gYW55bW9yZSAtLSBJIG15c2VsZiBjb3VsZG4ndCBwb2ludCBv
104 dXQgd2l0aCBhbnkgZGVncmVlIG9mIGNlcnRhaW50eSBhbGwgdGhlCj4gY29kZSB0aGF0IHdlIGFj
105 dHVhbGx5IGludGVuZCB0byB1c2UgZXZlbiB0aG91Z2ggSSd2ZSBiZWVuIGhlcmUgbG9uZ2VyIHRo
106 YW4KPiBuZWFybHkgZXZlcnlvbmUgZWxzZS4KCnlvdSd2ZSBiZWVuIGZvY3Vzc2luZyBvbiBLYXph
107 biwgd2hpY2ggaXMgZ3JlYXQuCgppIF9oYXZlXyBiZWVuIHNlbmRpbmcgbWVzc2FnZXMgdG8gdGhl
108 IGxpc3QgKGFuZCBhbHNvIHRocm91Z2ggdGhlCmJ1Z3RyYWNrZXIpLCBkZXNjcmliaW5nIHdoYXQg
109 aSdtIGRvaW5nIChhbmQgd2h5KSAtIGdlbmVyYWxseSBpIGRvIG5vdApyZWNlaXZlIGEgcmVzcG9u
110 c2UuCgp0aGUgcmVhc29uIGZvciBzZW5kaW5nIHRob3NlIG1lc3NhZ2VzIHdhcyB0byBnaXZlIHBl
111 b3BsZSBhbgpvcHBvcnR1bml0eSB0byByZXZpZXcgYW5kIGZvbGxvdyB0aGUgY29kZS4gIGlmIHBl
112 b3BsZSBoYWQgcmVzcG9uZGVkCndpdGggcXVlc3Rpb25zLCB0aGVyZSB3b3VsZCBiZSBsZXNzIGNv
113 bmZ1c2lvbiByaWdodCBub3cgYmVjYXVzZSBhbnkKaXNzdWVzIHdvdWxkIGhhdmUgYmVlbiBjbGVh
114 cmVkIHVwIGF0IHRoZSB0aW1lLgoKdGhhdCBzYWlkLCBpIGFwcHJlY2lhdGUgdGhhdCBpdCdzIGNv
115 bXBsZXggY29kZS4KCmluIGVmZmVjdCwgd2hhdCB3ZSBoYXZlIGhlcmUgaXM6IHdlJ3JlIG5vdCBy
116 ZWFsbHkgd29ya2luZyB0b2dldGhlciBhcwphIHRlYW0uICB3ZSdyZSBub3QgY29sbGFib3JhdGlu
117 Zzogd2UncmUgd29ya2luZyBpbiBpc29sYXRpb24gb24Kc2VwYXJhdGUgY29tcG9uZW50cywgdmVy
118 eSByYXJlbHkgaW50ZXJhY3RpbmcuCgp3ZSdyZSBub3cgc2VyaW91c2x5IHVuZGVyIHRpbWUgcHJl
119 c3N1cmU6IGkgY291bnQgYXBwcm94aW1hdGVseSAxNQp3ZWVrcyBiZWZvcmUgd2UgaGF2ZSB0byBi
120 ZWdpbiB0aGUgY29yaW9saXMyIGxheW91dC4KCnRoYXQncyAxNSB3ZWVrcy4uLiAqaW4gd2hpY2gg
121 dG8gY29tcGxldGUgdGhlIGVudGlyZSBkZXNpZ24qLCBieQphcHByb3hpbWF0ZWx5IG1pZC1hdWd1
122 c3QuCgpzbyB3ZSAqaGF2ZSogdG8gc3RhcnQgd29ya2luZyB0b2dldGhlciwgbWFrZSBhcyBtdWNo
123 IHVzZSBvZgpwcmUtZXhpc3RpbmcgY29kZSBhcyBwb3NzaWJsZSwgYW5kIGN1dCBzb21lIHNlcmlv
124 dXMgZHJhY29uaWFuIGNvcm5lcnMKb24gd2hhdCBhY3R1YWxseSBnb2VzIGludG8gdGhlIHRlc3Qg
125 Y2hpcC4KCmknZCB3ZWxjb21lIHNvbWUgZGlzY3Vzc2lvbiBvbiBob3cgdG8gcHJvY2VlZCBoZXJl
126 LgoKCj4gQWRkaXRpb25hbGx5LCBJJ2QgYWR2b2NhdGUgZm9yIGFsbCBIREwgY29kZSAoYXQgbGVh
127 c3Qgc29jLCBpZWVlNzU0ZnB1LCBhbmQKPiBubXV0aWwpIHRvIGJlIG1vdmVkIHRvIG9uZSByZXBv
128 CgpzZWUgYmVsb3cKCj4gKGVzcGVjaWFsbHkgaW5jbHVkaW5nIHRoZSBkYXRhIGZpbGVzCj4gY3Vy
129 cmVudGx5IGhvc3RlZCBvbiB0aGUgd2lraSAtLSBsaWJyZS1zb2Mub3JnIHNob3VsZG4ndCBuZWVk
130 IHRvIGJlCj4gb25saW5lL2FjY2Vzc2libGUgdG8gYnVpbGQgaWYgc29tZW9uZSBnZXRzIHRoZSBn
131 aXQgcmVwb3Mgc29tZSBvdGhlciB3YXkpCgp0aGF0J3MgYmVlbiBjaGFuZ2VkIChhcyBpbnRlbmRl
132 ZCwgdGhhbmsgeW91IG1pY2hhZWwpIHRvIHVzZSB0aGUgZ2l0CnN1Ym1vZHVsZSB2ZXJzaW9uIHJh
133 dGhlciB0aGFuIGh0dHAgZ2V0LiAgc3VibW9kdWxlcyBoYXMgYmVlbiBhCm51aXNhbmNlIChhbHJl
134 YWR5KSBzbyBpJ20gaW5jbGluZWQgdG8gYWdyZWUgdGhhdCBub3QgdXNpbmcgdGhlbSBmb3IKdGhl
135 IC5jc3YgKGFuZCBldmVuIHRoZSBwc2V1ZG9jb2RlIC5tZHduKSBpcyBhIGdvb2QgaWRlYS4KCndo
136 YXQgdG8gcmVwbGFjZSBpdCB3aXRoOiB0aGVyZSdzIG5vIGdvb2Qgb3B0aW9ucyBoZXJlLgoKCj4g
137 YW5kIHVzaW5nIHN1Ym1vZHVsZXMgZm9yIG9mdGVuIHVwZGF0ZWQgZXh0ZXJuYWwgZGVwZW5kZW5j
138 aWVzIChubWlnZW4gYXQKPiBsZWFzdCksCgp0aGUgZXhwZXJpZW5jZSB3ZSd2ZSBoYWQgLSBhbHJl
139 YWR5IC0gb2YgdXNpbmcgc3VibW9kdWxlcyBpcyBhIHJveWFsCnBhaW4gaW4gdGhlIG5lY2suICBj
140 b21taXRzIHdoaWNoIGludm9sdmUgY2hhbmdpbmcgb2YgZmlsZXMgKmFuZCoKY2hhbmdpbmcgc3Vi
141 bW9kdWxlcyBkbyAqbm90KiBtZXJnZSBwcm9wZXJseSwgYW5kIGkgYWN0dWFsbHkgaGFkIHRvIHVz
142 ZQpyZWJhc2UgLS1za2lwIGZvciB0aGUgZmlyc3QgdGltZSAtIGV2ZXIgLSBpbiBvcmRlciB0byBy
143 ZWNvdmVyIHRoZQpyZXBvc2l0b3J5LiAgdGhpcyBsb3N0IHNvbWUgd29yayBieSBtaWNoYWVsLgoK
144 aSdtIGluY2xpbmVkIHRvIHN1Z2dlc3QgKGFzIHdlIGRpc2N1c3NlZCBvbiB0aGUgY29yaW9saXMy
145 IGJ1ZywKYnJpZWZseSkgdGhhdCBhbiAqaW5kZXBlbmRlbnQqIHRvcC1sZXZlbCByZXBvIGJlIGNy
146 ZWF0ZWQgdGhhdCAiam9pbnMiCiphbGwqIHNvdXJjZSBjb2RlIC0gYW5kIHRvb2xzIC0gdG9nZXRo
147 ZXIuICB0aGlzIHRvICpuZXZlciosIHVuZGVyIGFueQpjaXJjdW1zdGFuY2VzLCBoYXZlIGFjdHVh
148 bCBmaWxlcyBhZGRlZCB0byBpdCAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIGEKUkVBRE1FLCBzYXlp
149 bmcgInBsZWFzZSByZWFkIGRvY3VtZW50YXRpb24gYXQgbG9jYXRpb24gWCBhbmQgcGxlYXNlIGRv
150 Cm5vdCBlZGl0IHRoaXMgZmlsZSBmdXJ0aGVyIikuCgo+IHNpbmNlIHRoYXQgaGVscHMgdGllIGFs
151 bCB0aGUgY29kZSB0b2dldGhlciBzbyBvbmUgY29tbWl0IGlkIGlzCj4gc3VmZmljaWVudCB0byBk
152 ZXNjcmliZSB0aGUgc3RhdGUgb2YgYWxsIHRoZSBjb2RlIHRoYXQncyB0aWdodGx5Cj4gaW50ZXJj
153 b25uZWN0ZWQuIFNlZSBMTFZNIHN3aXRjaGluZyB0byBhIG1vbm9yZXBvIGZvciBhbiBleGFtcGxl
154 IG9mIGhvdyB0aGlzCj4gaXMgYSBnb29kIGlkZWEuCgppZiB0aGUgSUVFRTc1NCBGUCBjb2RlIGhh
155 ZCBub3QgYmVlbiBkZXNpZ25lZCAtIGZyb20gdGhlIHN0YXJ0IC0gdG8gYmUKYSBnZW5lcmFsLXB1
156 cnBvc2UgaW5kZXBlbmRlbnQgbGlicmFyeSBhbmQgdG9vbGtpdCwgaSB3b3VsZCBhZ3JlZQppbW1l
157 ZGlhdGVseSB3aXRoIHRoYXQuCgpob3dldmVyIGl0IHdhcyBuZXZlciBpbnRlbmRlZCAtIGV2ZXIg
158 LSByaWdodCBmcm9tIHRoZSBzdGFydCAtIHRvIGJlIGEKc3BlY2lmaWMgaGFyZC1jb2RlZCBpc29s
159 YXRlZCBvdXItdXNlLW9ubHkgRlAgbGlicmFyeS4gIGxpa2V3aXNlCm5tdXRpbCwgYnkgdmlydHVl
160 IG9mIGl0IG1pcnJvcmluZyB0aGUgQ2hpc2VsIGxpYnJhcnkgZnJvbSB3aGljaCB3ZSBnb3QKdGhl
161 IFF1ZXVlIGNsYXNzLgoKdGhpcyBoZWxwZWQgdXMgdG8gZ2V0IGFkZGl0aW9uYWwgZnVuZGluZyBh
162 bmQgbWFrZSB0aGUgY2FzZSBmb3IgdGhlCnByb2plY3QgYmVpbmcgdmFsdWFibGUgKm91dHNpZGUq
163 IG9mIHRoZSBzY29wZSBvZiB3aGF0IHdlIGFyZSBkb2luZywgdG8KYSB3aWRlciBjb21tdW5pdHks
164 IGFuZCBoZWxwcyBzdHJlbmd0aGVuIE5MTmV0J3Mgcm9sZSBhcyBhIHZhbHVhYmxlCmJhY2tlciBv
165 ZiBIYXJkd2FyZS9Tb2Z0d2FyZSBMaWJyZS4KCm5tdXRpbCB0aGVuIGZhbGxzIG5hdHVyYWxseSBp
166 bnRvIHRoZSBjYXRlZ29yeSBvZiBiZWluZyB1c2VmdWwgYnkKKmJvdGgqIHJlcG9zaXRvcmllcywg
167 YW5kIHRoYXQncyBleGFjdGx5IGFzIGl0J3Mgc3VwcG9zZWQgdG8gYmUuCgphbGwgdGhyZWUgYXJl
168 IHRoZXJlZm9yZSBhY3R1YWxseSBpbmRlcGVuZGVudCBwcm9qZWN0cy4gIHB1dHRpbmcgdGhlaXIK
169 c291cmNlIGludG8gYSBzaW5nbGUgcmVwb3NpdG9yeSBoYXMgZGV0cmltZW50YWwgaW1wbGljYXRp
170 b25zLiAgaXQgYWxzbwpyZXN1bHRzIGluIGNvbmZ1c2lvbiBhYm91dCB3aGF0IHRoZSByb2xlcyBv
171 ZiBlYWNoIG9mIHRob3NlIHRocmVlCmluZGVwZW5kZW50IHByb2plY3RzIGlzLgoKbC4KCl9fX19f
172 X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpYnJlLXJpc2N2LWRl
173 diBtYWlsaW5nIGxpc3QKbGlicmUtcmlzY3YtZGV2QGxpc3RzLmxpYnJlLXJpc2N2Lm9yZwpodHRw
174 Oi8vbGlzdHMubGlicmUtcmlzY3Yub3JnL21haWxtYW4vbGlzdGluZm8vbGlicmUtcmlzY3YtZGV2
175 Cg==
176