[libre-riscv-dev] [Bug 335] New: Formal Correctness Proof for Branch pipeline
[libre-riscv-dev.git] / 38 / b374ca3595d21e8004776ced4268cb89ad2a14
1 Return-path: <libre-riscv-dev-bounces@lists.libre-riscv.org>
2 Envelope-to: publicinbox@libre-riscv.org
3 Delivery-date: Sat, 16 May 2020 13:12:21 +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 1jZvfw-0006zM-5D; Sat, 16 May 2020 13:12:20 +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 1jZvfu-0006zG-Q1
11 for libre-riscv-dev@lists.libre-riscv.org; Sat, 16 May 2020 13:12:18 +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:References:In-Reply-To:MIME-Version;
15 bh=1UFeEwaMyFcMErcePj5hS81RYYyjpHxvwcDJ+4NZxUw=;
16 b=UdzH2orJlK6I1p1mbFNaUL0hs/JqOoQZZ5kg/8Z1/nS1yRXZhDNc3ZWlS+WiJro5W+6tmZsMhCtlMgbEN+utR2I6tXUJiNmqFnKmHYpTwYXaGc2yo0rrUJMgVdh1x8dcdAkr8j3BEVh9UJ7CHaqfAoS4zR8R1hseYqImGzGnoGE=;
17 Received: from mail-lf1-f49.google.com ([209.85.167.49])
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 1jZvfu-00074d-Db
20 for libre-riscv-dev@lists.libre-riscv.org; Sat, 16 May 2020 12:12:18 +0000
21 Received: by mail-lf1-f49.google.com with SMTP id e125so3268660lfd.1
22 for <libre-riscv-dev@lists.libre-riscv.org>;
23 Sat, 16 May 2020 05:12:02 -0700 (PDT)
24 X-Gm-Message-State: AOAM533WIUmIPnI67CrGgsvy+dHmbKZJlzcMq3h04gv9nMAncF/30uwg
25 JpsLJujn/fPM8u3N5m0HVmykOut7vdwSpZ8WZpg=
26 X-Google-Smtp-Source: ABdhPJxZZrdt1DiCc+lJtG3VBIuPTeWzAAS9EoLvImmZQfzPykFQdRV/eJnRd5eE8YGQyYWl61tQjRCBqflKuiR+BDQ=
27 X-Received: by 2002:a05:6512:31c5:: with SMTP id
28 j5mr5530587lfe.26.1589631117299;
29 Sat, 16 May 2020 05:11:57 -0700 (PDT)
30 MIME-Version: 1.0
31 Received: by 2002:a05:6504:31aa:0:0:0:0 with HTTP; Sat, 16 May 2020 05:11:56
32 -0700 (PDT)
33 In-Reply-To: <CAEoCstQz36UuDJ+ZUgLRJNeQkA=pTfYuzCr+XgF-FJY9+yJsvA@mail.gmail.com>
34 References: <CAEoCstQz36UuDJ+ZUgLRJNeQkA=pTfYuzCr+XgF-FJY9+yJsvA@mail.gmail.com>
35 From: Luke Kenneth Casson Leighton <lkcl@lkcl.net>
36 Date: Sat, 16 May 2020 13:11:56 +0100
37 X-Gmail-Original-Message-ID: <CAPweEDxUGqkKbmqDprWvu-Py38nVcZNTh3uyq3eO0V+-FNWCLw@mail.gmail.com>
38 Message-ID: <CAPweEDxUGqkKbmqDprWvu-Py38nVcZNTh3uyq3eO0V+-FNWCLw@mail.gmail.com>
39 To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
40 X-Content-Filtered-By: Mailman/MimeDel 2.1.23
41 Subject: Re: [libre-riscv-dev] Introduction and Questions
42 X-BeenThere: libre-riscv-dev@lists.libre-riscv.org
43 X-Mailman-Version: 2.1.23
44 Precedence: list
45 List-Id: Libre-RISCV General Development
46 <libre-riscv-dev.lists.libre-riscv.org>
47 List-Unsubscribe: <http://lists.libre-riscv.org/mailman/options/libre-riscv-dev>,
48 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=unsubscribe>
49 List-Archive: <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/>
50 List-Post: <mailto:libre-riscv-dev@lists.libre-riscv.org>
51 List-Help: <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=help>
52 List-Subscribe: <http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev>,
53 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=subscribe>
54 Reply-To: Libre-RISCV General Development
55 <libre-riscv-dev@lists.libre-riscv.org>
56 Content-Type: text/plain; charset="utf-8"
57 Content-Transfer-Encoding: base64
58 Errors-To: libre-riscv-dev-bounces@lists.libre-riscv.org
59 Sender: "libre-riscv-dev" <libre-riscv-dev-bounces@lists.libre-riscv.org>
60
61 aGl5YSBqZXJlbXkganVzdCBjb21pbmcgYmFjayB0byByZXNwb25kIHRvIHRoZSBvcmlnaW5hbCBt
62 ZXNzYWdlIHlvdSB3cm90ZSwKY292ZXJpbmcgdGhpbmdzIHdlIG1pc3NlZC4geWVzIGxvdHMgb2Yg
63 cXVlc3Rpb25zLCB0aGVyZWZvcmUgbG90cyBvZiBhbnN3ZXJzCjopCgpPbiBGcmlkYXksIE1heSAx
64 NSwgMjAyMCwgSmVyZW15IFNpbmdoZXIgPHRoZWpzaW5naGVyQGdtYWlsLmNvbT4gd3JvdGU6Cgo+
65 IEhpIGFsbCwKPgo+IE15IG5hbWUgaXMgSmVyZW15IFNpbmdoZXIuIEknbSBhIGdyYWR1YXRlIHN0
66 dWRlbnQgc3R1ZHlpbmcgY29tcHV0ZXIKPiBhcmNoaXRlY3R1cmUsIGludGVyZXN0ZWQgaW4gb3Bl
67 bi1zb3VyY2UgaGFyZHdhcmUgYW5kIGhpZ2ggcGVyZm9ybWFuY2UKPiBtaWNyb2FyY2hpdGVjdHVy
68 ZXMuIEkgYW0gbG9va2luZyBmb3IgYW4gb3Blbi1zb3VyY2UgaGFyZHdhcmUgcHJvamVjdCBJIGNh
69 bgo+IGNvbnRyaWJ1dGUgdG8gdGhyb3VnaCB0aGUgY291cnNlIG9mIG15IGdyYWR1YXRlIHN0dWRp
70 ZXMsCgoKZ3JlYXQgdG8gaGVhci4gIHdlJ3ZlIGVzdGFibGlzaGVkIHRoYXQgeW91IGtub3cgYSBo
71 ZWNrIG9mIGEgbG90IGFib3V0Cm91dC1vZi1vcmRlciBkZXNpZ24gYW5kIGkgY291bGQgcmVhbGx5
72 IHVzZSBzb21lIGhlbHAgd2l0aCB0aGUgcHJlY2lzZQpzY29yZWJvYXJkIHN5c3RlbSBhbmQgdGhl
73 IEZTTXMgaW4gdGhlIENvbXB1dGF0aW9uIFVuaXRzLgoKeW91IG1heSBoYXZlIG5vdGljZWQgdGhh
74 dCB3ZSBoYXZlIGZ1bmRpbmcgZnJvbSBOTE5ldC4gIHRoZXJlZm9yZSBpZiB5b3UKY29tcGxldGUg
75 YSB0YXNrIG9uIHRoZSBwcmUtYWdyZWVkIGxpc3QsIHlvdSByZWNlaXZlIGEgZG9uYXRpb24gZnJv
76 bSBOTE5ldApmb3IgZG9pbmcgc28uIGh0dHA6Ly9saWJyZS1kb2Mub3JnL25sbmV0CgppLmUgd2Ug
77 YXJlIG5vdCBleHBlY3RpbmcgeW91IHRvIGhlbHAgImZvciBmcmVlIiwgb2s/IDopCgoKPiAxLiBJ
78 dCBzZWVtcyBsaWtlIHlvdSBndXlzIGFyZSBidWlsZGluZyB2YXJpb3VzIGNvbXBvbmVudHMgb2Yg
79 YW4KPiBvdXQtb2Ytb3JkZXIgbWljcm9hcmNoaXRlY3R1cmUsIHN1Y2ggYXMgdGhlIHNjb3JlYm9h
80 cmQsIGFuZCBsb2FkLXN0b3JlCj4gb3JkZXJpbmcgdW5pdHMuIERvIHlvdSBoYXZlIGEgY29tcGxl
81 dGUgbWljcm9hcmNoaXRlY3R1cmUgZGlhZ3JhbSBvZiB0aGUKPiBjb3JlIChvciBhIHRleHQgZGVz
82 Y3JpcHRpb24pPwoKCml0IGlzIHBpZWNlcywgZnJvbSBub3Rlcywgb2Z0ZW4gZHJhd24gYXMgZ2F0
83 ZSBsZXZlbCBkaWFncmFtcy4gIG1vcmUgZ2V0CmFkZGVkIGFzIHRoZXkgaGFwcGVuLCBhbmQgdGhl
84 eSBhcmUgbW9yZSBhaWRlLW1lbW9pcmUgdGhhdCB3ZSB3aXNoIHRvIGV4cGFuZAp0byBmdWxsIHRl
85 Y2huaWNhbCBkZXNpZ24gZG9jdW1lbnRhdGlvbi4KCmV4YW1wbGUsIHRvZGF5LCBpIHBsYW4gdG8g
86 ZHJhdyBvdXQgdGhlIHJlZ2lzdGVyIHBvcnQgYWxsb2NhdGlvbnMgdG8gdGhlCkZ1bmN0aW9uIFVu
87 aXRzLiAgaW4gdGhlIDE4MG5tIHZlcnNpb24gdGhlcmUgd2lsbCBiZSBhdCBsZWFzdC4uLiAxMApk
88 aWZmZXJlbnQgdHlwZXMgb2YgRlVzLCBlYWNoIHdpdGggcmFkaWNhbGx5IGRpZmZlcmVudCByZWdp
89 c3RlciBwb3J0CmFsbG9jYXRpb25zICghKS4gaSBuZWVkIHRvIGRvY3VtZW50IHRob3NlLgoKc29t
90 ZSBvZiB0aGVtIGFyZSBhcyBoaWdoIGFzIDUgaW4sIDMgb3V0LiAgZm9ydHVuYXRlbHkgdGhleSBh
91 cmUgYWNyb3NzCm11bHRpcGxlIGRpZmZlcmVudCByZWdmaWxlcyAod2UgdHJlYXQgU1BScywgQ29u
92 ZGl0aW9uIFJlZ3MsIElOVCBhbmQgRlAgYXMKY29tcGxldGVseSBkaWZmZXJlbnQgYW5kIGNvbnNl
93 cXVlbnRseSB0aGUgRlUgcG9ydCByZXF1aXJlbWVudHMgYXJlIG5vdCBhcwpkZWVwbHkgc2Nhcnkg
94 YXMgdGhleSBmaXJzdCBzb3VuZDogd2UgZG8gbm90IG5lZWQgdG8gZ28gYWJvdmUgNFIxVyBmb3Ig
95 YW55Cm9uZSBhY3R1YWwgcmVnZmlsZSkKCmFsc28gaW4gcGFydGljdWxhcmx5IGludm9sdmVkIGNh
96 c2VzIGkgaGF2ZSBkb25lIHlvdXR1YmUgdmlkZW9zCmh0dHA6Ly95b3V0dWJlLmNvbS91c2VyL2xr
97 Y2wgYW5kIGxvb2sgYXQgbGlicmVzb2MgcGxheWxpc3QuCgpzZWUgaHR0cDovL2xpYnJlLXNvYy5v
98 cmcvM2RfZ3B1L2FyY2hpdGVjdHVyZSBhbmQgZHJpbGwgZG93biB0aGUgbGV2ZWxzCnRoZXJlLgoK
99 CiBJIGNvdWxkIGZpbmQgYml0cyBhbmQgcGllY2VzIG9uIHNwZWNpZmljCj4gY29tcG9uZW50cywK
100 Cgp0aGlzIGJlY2F1c2UgdGhhdCBpcyBvdXIgY3VycmVudCBmb2N1cy4KCgo+IGJ1dCBJJ20gaW50
101 ZXJlc3RlZCBpbiBkZXRhaWxzIGxpa2UgcGlwZWxpbmUgd2lkdGgsCgoKPgogdGhlIDE4MG5tIEFT
102 SUMgd2lsbCBsaWtlbHkgaGF2ZSBhcm91bmQuLi4gMjAgc2VwYXJhdGUgYW5kIGRpc3RpbmN0Cihw
103 YXJhbGxlbCkgRnVuY3Rpb24gVW5pdCBlbnRyeSBwb2ludHMgaW50byBhcm91bmQuLi4gMTAgdG8g
104 MTIgdHlwZXMgb2YKcGlwZWxpbmUuCgpmb3IgYSAxODBubSBBU0lDIHRoYXQgaXMgb25lIGhlbGwg
105 b2YgYSBsb3QuCgpmb3IgdGhlIFF1YWQgQ29yZSBkdWFsIGlzc3VlIHZlcnNpb24gdGhhdCB3aWxs
106 IGp1bXAgdG8gYXJvdW5kLi4uIDI4LgoKCgpkZXB0aCwKPiBicmFuY2gtdG8tYnJhbmNoIGxhdGVu
107 Y3ksIGxvYWQtdXNlIGRlbGF5LCBldGMuCgoKd2UgYXJlIGxpdGVyYWxseSBpbiB0aGUgcHJvY2Vz
108 cyBvZiBhc3NlbWJsaW5nIHRoZSBwaWVjZXMsIGZvciB0aGUgMTgwbm0KdGVzdCBjaGlwLiAgY29u
109 c2VxdWVudGx5IHRoaXMgaXMgYmVjb21pbmcgYXBwYXJlbnQgYXMgZWFjaCBwaWVjZSBpcyBwdXQK
110 dG9nZXRoZXIuCgppbiBvdGhlciB3b3JkcyB3ZSBhcmUgcmlnaHQgYXQgdGhlIHBvaW50IHdoZXJl
111 IHlvdXIgaGVscCBjb3VsZCBkZWZpbmUgc29tZQpvZiB0aG9zZSBjaGFyYWN0ZXJpc3RpY3MuCgoK
112 Cj4gMi4gSXMgdGhlIFNvQyBhdCBhIHN0YXRlIGF0IHdoaWNoIEkgY2FuIGV2YWx1YXRlIHBlcmZv
113 cm1hbmNlIG9uIHNpbXBsZQo+IGJlbmNobWFya3MgaW4gc2ltdWxhdGlvbj8KCgphcyBhIHB5dGhv
114 bi1iYXNlZCBwcm9qZWN0IHdlIGhhdmUgYSBodWdlIG51bWJlciBvZiB1bml0IHRlc3RzLCB5b3Ug
115 ZWl0aGVyCnJ1biB0aGVtIGRpcmVjdGx5IG9yIHlvdSB1c2Ugbm9zZXRlc3RzMwoKd2UgYXJlIHN0
116 aWxsIGNvbnN0cnVjdGluZyBidWlsZGluZyBibG9ja3MgKHJhcGlkbHkpIHNvIGNvbnNlcXVlbnRs
117 eSB0aGUKaW5kaXZpZHVhbCB0ZXN0cyBhcmUgdGhlIGZvY3VzIG9mIGRldmVsb3BlciBhdHRlbnRp
118 b24uCgoKPiAgT3RoZXIgc2ltaWxhciBvcGVuLXNvdXJjZSBoYXJkd2FyZSBwcm9qZWN0cyBoYXZl
119 Cj4gbWFrZSB0YXJnZXRzIHRvIGxhdW5jaCB2ZXJpbGF0b3Igc2ltdWxhdGlvbnMsIGJ1dCBJIGNv
120 dWxkIG5vdCBmaW5kIGFuCj4gZXF1aXZhbGVudCBpbiB5b3VyIHJlcG9zIChhbHRob3VnaCBJIHBy
121 b2JhYmx5IGFtIGp1c3QgYmFkIGF0IGxvb2tpbmcpLgoKCnRob3NlIHdpbGwgYmUgYWRkZWQgd2hl
122 biBjb21waWxhdGlvbiBvZiB0aGUgd2hvbGUgY2hpcCBpcyByZWFkeSB0byBkbyBzby4KRlBHQSB0
123 YXJnZXRzIGV0Yy4gdGhlc2Ugd2lsbCBpbmRlZWQgZ28gYXQgdGhlIHRvcCBsZXZlbC4KCmhvd2V2
124 ZXIgYXMgd2UgdXNlIGEgcHl0aG9uLWJhc2VkIEhETCwgcHl0aG9uIHByYWN0aWNlcyBhcHBseSBh
125 bmQgdGhhdAp0eXBpY2FsbHkgbWVhbnMgInB5dGhvbjMgc2V0dXAucHkgdGVzdCIgb3IgIm5vc2V0
126 ZXN0czMiIG1vcmUgdGhhbiBpdCBtZWFucwoibWFrZSB0ZXN0IiBhbHRob3VnaCB0aGF0IGkgdGhp
127 bmsgd2FzIGFkZGVkIGludG8gdGhlIHNvYyB0b3AgbGV2ZWwgTWFrZWZpbGUuCgoKPiAzLiBXaGF0
128 IGlzIHlvdXIgdGFyZ2V0IHBlcmZvcm1hbmNlIGluIHRlcm1zIG9mIGFuIGVzdGFibGlzaGVkIGJl
129 bmNobWFyawo+IGxpa2UgQ29yZW1hcmssIERocnlzdG9uZSwgRW1iZW5jaCwgb3IgU1BFQz8KCgpy
130 ZWFsbHkgaGFyZCB0byB0ZWxsIHJpZ2h0IG5vdy4gdGhlIHByaW1hcnkgZm9jdXMgaXMgbW9yZSBv
131 biBkZXNpZ25pbmcKc29tZXRoaW5nIHRoYXQgaXMgR1BVIENhcGFibGUuICB0aGF0IGlzIHN1Y2gg
132 YSBoaWdoIHBlcmZvcm1hbmNlIGFuZCBkYXRhCnJlcXVpcmVtZW50IHRoYXQgaSB0aGluayBoaWdo
133 IFNQRUMgZXRjIGZpZ3VyZXMgd2lsbCBpbmhlcmVudGx5IGRyb3Agb3V0LgoKCgo+ICBJJ20gdHJ5
134 aW5nIHRvIGNvbXBhcmUgdGhlCj4gbWVyaXRzIGFuZCBwcm9ncmVzcyBvZiB2YXJpb3VzIGhhcmR3
135 YXJlIHByb2plY3RzIG91dC10aGVyZS4KCgp0aGlzIG9uZSBpcy4uLiB0aGUgcmVhc29ucyB3aHkg
136 d2UgYXJlIGFsbCBoZXJlIGFyZSBub3QgdGVjaG5pY2FsIG9uZXMsCmFsdGhvdWdoIGl0IGlzIGZh
137 c2NpbmF0aW5nIGJ1dCBkZWVwbHkgY2hhbGxlbmdpbmcgd29yay4KCnRoZSBkcml2aW5nIHJlYXNv
138 bnMgYXJlIHRoYXQgdGhlcmUgYXJlIG5vIFNvQ3Mgb3V0IHRoZXJlIGF0IHRoaXMgbGV2ZWwgb2YK
139 ZGVkaWduIGNhcGFiaWxpdHkgKHF1YWQgY29yZSBkdWFsIGlzc3VlIFNNUCBhbmQgM0QgYW5kIFZQ
140 VSwgYW5kIHRoZXJlIGlzIG5vCnJlYXNvbiB3aHkgd2Ugc2hvdWxkIG5vdCB0cnkgcXVhZCBvciA2
141 IGlzc3VlLCBhbmQgMS41IGdoeiBhbmQgYWJvdmUsIGxhdGVyKQp0aGF0IGhhdmUgYSBmdWxsIExp
142 YnJlIFNvZnR3YXJlIHN0YWNrLCBpbnRlbmRlZCByaWdodCBmcm9tIHRoZSBzdGFydCBmb3IKMTAw
143 IG1pbGxpb24gYW5kIGFib3ZlIG1hc3Mgdm9sdW1lIGVuZCB1c2VyIG1hcmtldHMuCgpob3dldmVy
144 IGV2ZW4gdGhhdCBtYXNrcyBhIHNpbXBsZXIgd2F5IHRvIHB1dCBpdDoKCndlJ3JlIGdpdmluZyBj
145 aXRpemVucyBiYWNrIFNvdmVyZWlnbiBjb250cm9sIG92ZXIgdGhlaXIgY29tcHV0aW5nIGRldmlj
146 ZXMuCgppZiB0aGF0IHNvdW5kZWQgIm1lcmVseSIgY29vbCBhYm91dCA0IG1vbnRocyBhZ28sIHlv
147 dSB3aWxsIGJlIGtlZW5seSBhd2FyZQp3aXRoIGEgbGl0dGxlIHRob3VnaHQgYW5kIGFuYWx5c2lz
148 IG9mIHRoZSB3b3JsZCBuZXdzIHRoYXQgdGhhdCBpcyBub3cgbm90Cmp1c3QgY29vbCwgaXQgaXMg
149 ZGVlcGx5ICp1cmdlbnQqLgoKbm8gb3RoZXIgTGlicmUgcHJvamVjdCBpcyBjcmVhdGluZyBhbiBl
150 bmQtdXNlciBwcm9kdWN0IHdpdGggYSBidWlsdCBpbgoqTGlicmUqIEdQVSBhbmQgVlBVIGZvciB1
151 c2UgaW4gbWFzcyB2b2x1bWUgcHJvZHVjdHMuCgoqIFNpRml2ZSBqb2luZWQgZm9yY2VzIHdpdGgg
152 SW1nVGVjIHRvIHVzZSBQb3dlclZSLiB3aHkgb24gZWFydGggdGhleSBkaWQKdGhpcyB3aGVuIElt
153 Z1RlYyBoYXMgc3VjaCBhIGRyZWFkZnVsIHJlcHV0YXRpb24gd2Ugd2lsbCBuZXZlciBrbm93LgoK
154 KiBNSUFPVyBpcyBhIFNJTVQgZW5naW5lLCBub3QgYW4gYWN0dWFsIEdQVS4gdGhlcmUgYXJlIG5v
155 IFRleHR1cmUgb3Bjb2RlcywKbm90aGluZyBsaWtlIHRoYXQ6IHRoZXkgaW1wbGVtZW50ZWQgYSB2
156 ZXJ5IHNtYWxsIHN1YnNldCBvZiB0aGUgQU1ER1BVIElTQSwKYmFzaWNhbGx5LgoKKiBOeXV6aSBp
157 cyBhbiBhY2FkZW1pYyBleGVyY2lzZSBkZW1vbnN0cmF0aW5nIHdoeSBMYXJyYWJlZSB3YXMgbm90
158 IGFkZXF1YXRlCmFzIGEgR1BVLiBpdCB3YXMgaGlnaGx5IHN1Y2Nlc3NmdWwgaW4gdGhpcyByZWdh
159 cmQuCgoqIEdQTEdQVSBpcyBub3QgYWN0dWFsbHkgR1BMIGxpY2Vuc2VkIChpdHMgYXV0aG9yIGF1
160 Z21lbnRlZCB0aGUgR1BMLCBtYWtpbmcKaXQgYSBwcm9wcmlldGFyeSBsaWNlbnNlKSwgYW5kIGl0
161 IGlzIGJhc2VkIG9uIFBMQU45IHdoaWNoIHdhcyBhIGZpeGVkCmZ1bmN0aW9uIChub24tc2hhZGVy
162 KSBkZXNpZ24gY29uY2VwdCBhbnl3YXkuCgp0aGVyZWZvcmUsIGV2ZW4gYSBMaWJyZSAqR1BVKiBk
163 b2VzIG5vdCBleGlzdCB0aGF0IGNhbiBtZWV0IGNvbW1lcmNpYWwKcG93ZXItcGVyZm9ybWFuY2Ug
164 ZXhwZWN0YXRpb25zIG9mIHRvZGF5J3MgbWFya2V0cy4KCgoKPiA0LiBXaGF0IGlzIHRoZSByaWdo
165 dCB3YXkgdG8gZ2V0IHN0YXJ0ZWQgY29udHJpYnV0aW5nPwoKCm5leHQgc3RlcCBpcyBwcm9iYWJs
166 eSB0byByZWFkIGh0dHA6Ly9saWJyZS1zb2MvSERMX3dvcmtmbG93IHRvIGdldCBhIGZlZWwKZm9y
167 IGhvdyB0byBnZXQgc3RhcnRlZCwgd2hhdCB0aGUgaW50ZXJhY3Rpb24gYW5kIGRldmVsb3BtZW50
168 IGZsb3cgaXMuCgoKPiAgTXkgZXhwZXJpZW5jZSBpcyB3aXRoCj4gVmVyaWxvZywgYW5kIEkndmUg
169 bG9va2VkIGF0IG90aGVyIGxhbmd1YWdlcyB0b28sIGluY2x1ZGluZyBCU1YgYW5kIENoaXNlbC4K
170 CgpqdXN0IGZvbGxvdyB0aGUgcHJvY2VzcyBzdGVwIGJ5IHN0ZXAgb24gdGhlIGZyb250IHBhZ2Uu
171 ICB5b3UgZGlkIHN0ZXAgMSA6KQoiam9pbiBsaXN0LCBzYXkgaGVsbG8iLgoKaWYgeW91IGFyZSBu
172 b3QgaW1tZWRpYXRlbHkgZmFtaWxpYXIgd2l0aCBubWlnZW4gdGhlcmUgYXJlIHR1dG9yaWFscyB0
173 aGUKYmVzdCBvbmUgaXMgYnkgcm9iZXJ0IGJhcnVjaApodHRwczovL2dpdGh1Yi5jb20vUm9iZXJ0
174 QmFydWNoL25taWdlbi10dXRvcmlhbC9ibG9iL21hc3Rlci9SRUFETUUubWQKCmZyb20gdGhlcmUg
175 d2UncmUgaGFwcHkgdG8gZ2l2ZSB5b3UgYSBzbWFsbCAodXNlZnVsKSB0YXNrLCBsaWtlIHRoaXM6
176 Cmh0dHBzOi8vYnVncy5saWJyZS1zb2Mub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTYKCmV2ZW4ganVz
177 dCByZWFkaW5nIHRoYXQsIHlvdSB3aWxsIHNlZSBzb21lIG9mIHRoZSBnb3RjaGFzIHRvIGV4cGVj
178 dC4KCmJ0dywgQ29sZSBhIGZldyBtb250aHMgYWdvIGtuZXcgdmlydHVhbGx5IG5vdGhpbmcgYWJv
179 dXQgc29mdHdhcmUKZGV2ZWxvcG1lbnQsIG9yIGxpbnV4LCBvciBoYXJkd2FyZSwgb3IgcHl0aG9u
180 LiBvciBnaXQuICBmb3IgYSB0b3RhbApiZWdpbm5lciBhbmQgaSBkbyBtZWFuIHRvdGFsLCBoZSdz
181 IGRvaW5nIHJlYWxseSB3ZWxsLiBpJ20ga2luZGEgc2VyaW91c2x5CmltcHJlc3NlZC4KCgpJJ20g
182 cHJpbWFyaWx5IGludGVyZXN0ZWQgaW4gZGV2ZWxvcGluZyBtaWNyb2FyY2hpdGVjdHVyZSBmb3IK
183 PiBwZXJmb3JtYW5jZS1jcml0aWNhbCBjb21wb25lbnRzLCBsaWtlIGJyYW5jaCBwcmVkaWN0b3Jz
184 LCBwcmVmZXRjaGVycywKPiBpbnN0cnVjdGlvbiBzY2hlZHVsZXJzLCBhbmQgbG9hZC1zdG9yZSB1
185 bml0cy4KCgpnb29vZC4gIGJlY2F1c2UgdGhvc2UgYXJlIGV4YWN0bHkgdGhlIHRoaW5ncyB0aGF0
186 IHdlIG5lZWQgaGVscCB3aXRoLCBxdWl0ZQp1cmdlbnRseS4KCgoKSWRlYWxseSwgSSBjb3VsZCBj
187 b250cmlidXRlCj4gbXkgd29yayBhcyBwYXJ0IG9mIGdyYWR1YXRlIHN0dWRpZXMgdG8gdGhpcyBw
188 cm9qZWN0LgoKCmZhbnRhc3RpYy4gIHJlbWVtYmVyOiBhbmQgcmVjZWl2ZSBkb25hdGlvbnMgZnJv
189 bSBOTE5ldCBmb3IgZG9pbmcgc28gOikKCmwuCgoKCi0tIAotLS0KY3Jvd2QtZnVuZGVkIGVjby1j
190 b25zY2lvdXMgaGFyZHdhcmU6IGh0dHBzOi8vd3d3LmNyb3dkc3VwcGx5LmNvbS9lb21hNjgKX19f
191 X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlicmUtcmlzY3Yt
192 ZGV2IG1haWxpbmcgbGlzdApsaWJyZS1yaXNjdi1kZXZAbGlzdHMubGlicmUtcmlzY3Yub3JnCmh0
193 dHA6Ly9saXN0cy5saWJyZS1yaXNjdi5vcmcvbWFpbG1hbi9saXN0aW5mby9saWJyZS1yaXNjdi1k
194 ZXYK
195