Return-path: Envelope-to: publicinbox@libre-riscv.org Delivery-date: Sat, 16 May 2020 23:45:32 +0100 Received: from localhost ([::1] helo=libre-riscv.org) by libre-soc.org with esmtp (Exim 4.89) (envelope-from ) id 1ja5Yh-0001ZK-UW; Sat, 16 May 2020 23:45:31 +0100 Received: from mail-lf1-f44.google.com ([209.85.167.44]) by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1ja5Yg-0001ZD-4v for libre-riscv-dev@lists.libre-riscv.org; Sat, 16 May 2020 23:45:30 +0100 Received: by mail-lf1-f44.google.com with SMTP id x22so1905890lfd.4 for ; Sat, 16 May 2020 15:45:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=dKhclSNnFd90609ov61VmWCX1YBIWbNA/l2E1mOwmqM=; b=B1K4wIXC/HfPWRjNQxN1DnWk1kJjWAn5cHPkM6vL0xJjK0J6rSHSea6RPFDwa4V5jU 5IZdaY9lsVfFhwGJdpMcPLURDJSW9at9y3V931Mgs0Kn4r1AUtwyVCpDOvETLC/oQ9O6 9vQJDUHe7hM0X+0WDBedT9m2McrCoJsQZVBMnisLeKNZ/B9My6PKZei6yo337nFuo85R VsAwkkM1UlFEGjdzFhRZD47cOiLjmHtNWf5G4dH2+rQfNy9IrNOxbtkm4n9GPYi+2/q4 Vi5lAR5Zne30sSJKm/BHdPsAUJRywFnSW2dC55drnP3Pctq6qPGawC1OqJZQuKM0V98l mLig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=dKhclSNnFd90609ov61VmWCX1YBIWbNA/l2E1mOwmqM=; b=sng8jaEqGPMwZvy3xn5k9f7D+fPxGTTJ4vkSc6o7hV0spUvwGDLBcZ03pPQ19JqyC7 bTRukISduzWu1mvQZAacPTWQkMn23R33zbwxWJr2SIvQaVpNyatiB2wixchFCVKXUzMo 0F7onMuSECy0gR23uqRB/C/8Qwc6SU2LlcdrqzVMh09VOqS/KVkSS9aP+fHe/Zc7Sguh jAmjFaipyDBbLIQNLEpDlhXEqC2ns16DJ8GFj5uYpUXWujZDo53vjqCLDK2UbxwptHGq 77y2P+v+Gh6drgadSu3bkPJj0bCwEYIzr+1XuWJsnaayC6y4zzk3kIDVSoQy2YQVlDMF DOFA== X-Gm-Message-State: AOAM531PppTRz6OzxgK1d57Tcz16pWWkEE5AjaEEmqm9oUA/yuQrU+sa dasVTkm2lHkYxnBN/68tATH85LKFMQxbOx0Q4euIR0Qq X-Google-Smtp-Source: ABdhPJz6MCJkdGfPlvMLJoYStSQitkzqTNPsNf35mLcYJQIARXNxYUaz+N2iwEfQMqB8WPy2gFW9AhENsjgzwxpBtgc= X-Received: by 2002:a05:6512:31c5:: with SMTP id j5mr6707612lfe.26.1589669128854; Sat, 16 May 2020 15:45:28 -0700 (PDT) MIME-Version: 1.0 References: <13EDF987-9A19-4C96-89C2-6DB784CF2C96@gatech.edu> <25AC8A2E-D48F-439F-AF9D-0EB3DC08D7CC@gatech.edu> In-Reply-To: From: Jeremy Singher Date: Sat, 16 May 2020 15:45:17 -0700 Message-ID: To: Libre-RISCV General Development Subject: Re: [libre-riscv-dev] Scoreboard vs Tomasulo 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" SSBoYXZlIGZpbmFsbHkgZmluaXNoZWQgcGFyc2luZyBNaXRjaCdzIGNoYXB0ZXJzLCBhbmQgbm93 IEkgc2VlIHdoYXQKdGhlIHByaW1hcnkgY29uZnVzaW9uIGlzIGZyb20uIFRoZSBzY29yZWJvYXJk IGJlaW5nIGRldmVsb3BlZCBoZXJlIGhhcwpiZWVuIHJlZmVycmVkIHRvIGluIHRoZSBtYWlsaW5n IGxpc3RzIGFzIGEgIkNEQyA2NjAwLWxpa2UiIHNjb3JlYm9hcmQsCndoaWxlIGluIHJlYWxpdHks IHRoZSBmaW5hbCBkZXNpZ24gaXMgZmFyIGV4dGVuZGVkIGZhciBiZXlvbmQgdGhlCm9yaWdpbmFs IENEQyA2NjAwIGltcGxlbWVudGF0aW9uLiBJIHdvdWxkIHN1Z2dlc3Qgbm90IGNhbGxpbmcgaXQg YQoiQ0RDIDY2MDAtbGlrZSBzY29yZWJvYXJkIiBpbiB0aGUgZnV0dXJlLCBpbnN0ZWFkIGEgImV4 dGVuZGVkCnNjb3JlYm9hcmQiIGlzIG1vcmUgYWNjdXJhdGUuCgpMZXQgbWUgdHJ5IHRvIGNvbXBv c2UgbXkgdGhvdWdodHMuCkluIG9yZGVyIGZvciBPT08gZXhlY3V0aW9uIHRvIGJlIHBvc3NpYmxl LCB3cml0ZSBkYXRhIGZyb20Kc3BlY3VsYXRpdmVseSBleGVjdXRlZCBpbnN0cnVjdGlvbnMgbXVz dCBiZSBidWZmZXJlZCwgZm9yIGluIHRoZSBjYXNlCm9mIG1pc3NwZWN1bGF0aW9uLCB0aGV5IG11 c3Qgbm90IGJlIGFsbG93ZWQgdG8gY29tbWl0IGludG8gdGhlCmFyY2hpdGVjdHVyYWwgcmVnaXN0 ZXIgZmlsZS4KCkluIFRvbWFzdWxvJ3MsIHNwZWN1bGF0aXZlIHdyaXRlIGRhdGEgYXJlIGhlbGQg aW4gcGh5c2ljYWxseSByZW5hbWVkIHJlZ2lzdGVycy4KSW4gdGhlIGV4dGVuZGVkIHNjb3JlYm9h cmQgc2NoZW1lLCBzcGVjdWxhdGl2ZSB3cml0ZSBkYXRhIGFyZSBoZWxkIGluCmNvbXB1dGUgdW5p dCBsYXRjaGVzLgpJbiBUb21hc3VsbydzLCBicmFuY2ggZGVwZW5kZW5jeSBtYXNrcyBhcmUgdXNl ZCB0byBkcmFpbiBtaXNzcGVjdWxhdGVkCmluc3RydWN0aW9ucy4KSW4gZXh0ZW5kZWQgc2NvcmVi b2FyZCwgdGhlIG1pc3NwZWN1bGF0ZWQgaW5zdHJ1Y3Rpb25zIGRyYWluCnRoZW1zZWx2ZXMgZnJv bSB0aGUgc3lzdGVtLgpCb3RoIHNjaGVtZXMgY2FuIGJlIGRlc2lnbmVkIHRvIGFjaGlldmUgc2lt aWxhciBPT08gYmVoYXZpb3JzLgpUaHVzLCBvbmUgY2Fubm90IGRyYXcgYSBwZXJmb3JtYW5jZSBj b25jbHVzaW9uIGp1c3QgYnkgc2VlaW5nIHdoaWNoCnNjaGVtZSBpcyBiZWluZyB1c2VkLgoKSWRl YWxseSB0aGUgYWJvdmUgdGV4dCBzaG91bGQgYmUgdW5jb250cm92ZXJzaWFsLCBwbGVhc2UgbGV0 IG1lIGtub3cKaWYgdGhlcmUgaXMgYSBsYXJnZSBtaXN1bmRlcnN0YW5kaW5nIGhlcmUuCgpNeSBv cGluaW9uIGlzIHRoYXQgVG9tYXN1bG8ncyBpcyBhIG1vcmUgZWxlZ2FudCBhbmQgd2VsbC1wcm92 ZW4gc2NoZW1lCmZvciBhY2hpZXZpbmcgT09PIGV4ZWN1dGlvbiwgY29tcGFyZWQgdG8gYW4gZXh0 ZW5kZWQgc2NvcmVib2FyZC4gSQphbHNvIGFyZ3VlIHRoYXQgdGhlIGV4dGVuZGVkIHNjb3JlYm9h cmQgc2NoZW1lIGRvZXMgbm90IHByZXNlbnQKc2lnbmlmaWNhbnQgcG93ZXIvYXJlYSBhZHZhbnRh Z2VzIGNvbXBhcmVkIHRvIFRvbWFzdWxvJ3MuIEdpdmVuIHRoYXQKZXN0aW1hdGVzIG9uIHBvd2Vy L2FyZWEgdGVuZCB0byBiZSB3aWxkbHkgaW5hY2N1cmF0ZSwgSSB0aGluayB3ZSB3aWxsCmhhdmUg dG8gd2FpdCBmb3IgcG93ZXIgYW5hbHlzaXMgb2YgTGlicmVTb0MgdG8gZ2V0IGEgZGVmaW5pdGl2 ZSBhbnN3ZXIKdG8gdGhpcyBkZWJhdGUgOikuCgpJIGRlZXBseSBhcG9sb2dpemUgaWYgYW55IG9m IG15IHRob3VnaHRzIGNvdWxkIGJlIGludGVycHJldGVkIGFzCmNyaXRpY2lzbS4gSSBmdWxseSBz dXBwb3J0IHRoaXMga2luZCBvZiBleHBsb3JhdGlvbiBpbiBPT08gZGVzaWduLiBJCmFsc28gYXBv bG9naXplIGlmIEkgc2VlbSB0byBzdWdnZXN0IGEgY2hhbmdlIGluIGRlc2lnbiwgYXMgSQp1bmRl cnN0YW5kIHRoYXQgaGFyZHdhcmUgZGVzaWduIGlzIG5vdCBuZWFybHkgYXMgZmxleGlibGUgYXMg c29mdHdhcmUKZGVzaWduLgoKCgpPbiBTYXQsIE1heSAxNiwgMjAyMCBhdCAyOjM4IFBNIEx1a2Ug S2VubmV0aCBDYXNzb24gTGVpZ2h0b24KPGxrY2xAbGtjbC5uZXQ+IHdyb3RlOgo+Cj4gT24gU2F0 LCBNYXkgMTYsIDIwMjAgYXQgOToxNiBQTSBKZXJlbXkgU2luZ2hlciA8dGhlanNpbmdoZXJAZ21h aWwuY29tPiB3cm90ZToKPgo+ID4gPiBIb3dldmVyLCB0aGUgc2NvcmVib2FyZCBpcyBsaW1pdGVk IGluIHRoYXQgaXQgZG9lcyBub3QgaGFuZGxlIFdBUiBhbmQgV0FXCj4gPiA+IGhhemFyZHMgdmVy eSB3ZWxsLgo+ID4KPiA+ID4gdGhlIG9yaWdpbmFsIDY2MDAgaGFuZGxlcyBXQVIgZXh0cmVtZWx5 IHdlbGwsIG9ubHkgc3RhbGxpbmcgb24gV2FXCj4gPiA+IGNvbmRpdGlvbiwgZGV0ZWN0aW9uIHdo aWNoIGRpZCBub3QgbWF0dGVyIGdyZWF0bHkgYmVjYXVzZSB0aGUgcGlwZWxpbmVzCj4gPiA+IHdl cmUgb25seSBhdCBtb3N0IDIgc3RhZ2VzIGxvbmcgYW55d2F5IChNaXRjaCBvbmx5IG5vdGljZWQg YWZ0ZXIgcmVyZWFkaW5nCj4gPiA+IGxhc3QgeWVhciB0aGF0IHRoZSBGUCBBREQgb2YgdGhlIDY2 MDAgd2FzIDIgc3RhZ2UgcGlwZWxpbmVkLiAgbm8gYWNhZGVtaWMKPiA+ID4gbGl0ZXJhdHVyZSBo YXMgYWNrbm93bGVkZ2VkIG9yIG5vdGljZWQgdGhpcykuCj4gPgo+ID4gSSB3b3VsZCBhcmd1ZSB0 aGF0IHRoZSBDREM2NjAwIGhhbmRsZXMgV0FSIGJldHRlciB0aGFuIGFuIGluLW9yZGVyCj4gPiBt YWNoaW5lLCBidXQgbm90IGJldHRlciB0aGFuIGEgbWFjaGluZSB3aXRoIGZ1bGwgcmVuYW1pbmcu Cj4KPiBKZXJlbXk6IDY2MDAgZGVzaWducyAqZG8qIGhhdmUgcmVnaXN0ZXIgInJlbmFtaW5nIi4g IGkgc2FpZCBhbHJlYWR5LAo+IGEgbnVtYmVyIG9mIHRpbWVzLiAgYW5kIGlmIHlvdSBoYXZlIHN0 dWRpZWQgYW5kIGxpc3RlbmVkIHRvIHRoZSBBY2FkZW1pYwo+IGxpdGVyYXR1cmUgLSBhbmQgYmVs aWV2ZSBpdCAtIHlvdSBhcmUgbWlzaW5mb3JtZWQgYnkgdGhhdCBsaXRlcmF0dXJlLCBhbmQgd2ls bAo+IGNvbnRpbnVlIHRvIGJlIG1pc2luZm9ybWVkIGJ5IHRoYXQgbGl0ZXJhdHVyZS4KPgo+IHBs ZWFzZSB1bmRlcnN0YW5kOiBpIGhhdmUgc3BlbnQgb3ZlciBuaW5lIG1vbnRocyBzdHVkeWluZyB0 aGlzLCBsZWFybmluZwo+IGZyb20gTWl0Y2ggQWxzdXAsIG9uZSBvZiB0aGUgd29ybGQncyBsZWFk aW5nIGhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nCj4gYXJjaGl0ZWN0cywgaW1wbGVtZW50aW5n IHRoaXMgYW5kIGl0J3Mgbm90IGdvaW5nIHRvIGdldCBjaHVja2VkIG91dCB0bwo+IGltcGxlbWVu dCBzb21ldGhpbmcgdGhhdCB0YWtlcyBzaXggTU9OVEhTIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXMg YQo+IGJldHRlciBkZXNpZ24sIHRvIGJlIHJlcGxhY2VkIGJ5IHNvbWV0aGluZyB0aGF0IHdvdWxk IHRha2UgYW5vdGhlciBzaXgKPiBtb250aHMgdG8gaW1wbGVtZW50ICphbmQgd2UgdGhlbiBjb3Vs ZCBub3QgZG8gbXVsdGktaXNzdWUgb24gdG9wIG9mIGl0Ki4KPgo+IHBsZWFzZSB0aGVyZWZvcmUg dGFrZSB0aGUgdGltZSB0byB1bmRlcnN0YW5kIHRoaXMgZGVzaWduLCBwYXJ0aWN1bGFybHkgd2hl bgo+IHdlIGFyZSByaWdodCBpbiB0aGUgbWlkZGxlIG9mIGEgdGltZS1jcml0aWNhbCBkZWFkbGlu ZS4KPgo+ID4gSW4gdGhlCj4gPiBDREM2NjAwLCB0aGUgc2NvcmVib2FyZCB3b3VsZCBibG9jayB0 aGUgY29tcGxldGlvbiBvZiB0aGUgVyBpbnN0IHVudGlsCj4gPiB0aGUgUiBpbnN0IGhhcyByZWFk IGl0cyBvcGVyYW5kcy4gSW4gVG9tYXN1bG8sIHRoZSBXIGluc3QgY2FuIHByb2NlZWQKPiA+IGlt bWVkaWF0ZWx5IGJlZm9yZSB0aGUgUiBpbnN0IGlzIHJlYWR5LCBzaW5jZSB0aGUgZGVzdGluYXRp b24gcmVnaXN0ZXIKPiA+IGlzIHBoeXNpY2FsbHkgcmVuYW1lZC4KPgo+IEplcmVteTogdGhlICJy ZW5hbWluZyIgY2FycmllZCBvdXQgYnkgdGhlIDY2MDAgZG9lcyBleGFjdGx5IHRoaXMgc2FtZQo+ IGpvYi4KPgo+IEFjYWRlbWljcyB1bmZvcnR1bmF0ZWx5IGhhdmUgKm9ubHkqIHN0dWRpZWQgdGhl ICpwYXRlbnQqIC0gbm90IFRob3JudG9uJ3MKPiBib29rIG5vciByZWFkIE1pdGNoIEFsc3VwJ3Mg Ym9vayBjaGFwdGVycyB3aGljaCBoZSB3cm90ZSBiYXNlZCBvbiAzMCsKPiB5ZWFycyBleHBlcmll bmNlIG9mIGltcGxlbWVudGluZyA2NjAwLXN0eWxlIGV4ZWN1dGlvbiBpbiB0aGUgODgxMDAsCj4g QU1EIEs5IGFuZCBBTUQgT3B0ZXJvbiBTZXJpZXMgb2YgQ1BVcy4KPgo+IHRoZSA2NjAwIHBhdGVu dCAqT05MWSogY292ZXJzIHRoZSBRLVRhYmxlcy4KPgo+IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUg US1UYWJsZXMgZG9lcyAqTk9UKiBpbmNsdWRlIHRoZSBDb21wdXRhdGlvbiBVbml0cwo+IHdoZXJl IHRoZSBvcGVyYW5kIGxhdGNoZXMgYXJlLgo+Cj4gdGhlc2UgbGF0Y2hlcyAqQVJFKiB0aGUgInJl bmFtZWQgcmVnaXN0ZXJzIiAoYWN0dWFsbHksIG5hbWVsZXNzIHJlZ2lzdGVycykuCj4KPiA+ID4g IFJPQiBpcyBhIENBTSwKPiA+Cj4gPiBXaGF0PyBUaGlzIGlzIG5vdCB0cnVlLiBJbnN0cnVjdGlv bnMgaW4gZmxpZ2h0IHRyYWNrIHRoZWlyIGluZGV4IGluCj4gPiB0aGUgUk9CLCBhdCBjb21wbGV0 aW9uLCB0aGV5IHdyaXRlIHN1Y2Nlc3MgYml0IGFjY29yZGluZyB0byB0aGUgaW5kZXgKPiA+IHRo ZXkgaGF2ZS4gTm90IGEgQ0FNLiBTaW1wbGUgYWRkcmVzc2VkIHdyaXRlLgo+Cj4gYWggYXBwcmVj aWF0ZWQgdGhlIGNvcnJlY3Rpb24uICBpIGtuZXcgdGhlcmUgd2VyZSBDQU1zIHNvbWV3aGVyZS4K PiB3aGVuIGkgZGlzY292ZXJlZCB0aGF0LCBpIGRyb3BwZWQgZnVydGhlciBpbnZlc3RpZ2F0aW9u Lgo+Cj4gaSBhbSBob3dldmVyIGF3YXJlIHRoYXQgaWYgeW91IHdpc2ggdG8gZG8gbXVsdGktaXNz dWUsIHRoZSBST0Igd2lsbCBuZWVkCj4gdG8gYmUgbXVsdGktcG9ydGVkIFNSQU0uICB3aXRob3V0 IG11bHRpLXBvcnRpbmcgdGhlIFNSQU0sIHlvdSBzaW1wbHkKPiBjYW5ub3Qgd3JpdGUgbXVsdGlw bGUgZW50cmllcy4KPgo+IHRoaXMgaXMgd2hlcmUgdGhlIHByb2JsZW1zIChyZWFkOiBuaWdodG1h cmVzKSBmb3IgVG9tYXN1bG8gc3RhcnQgdG8gbWFuaWZlc3QsCj4gYW5kIHByb2dyZXNzIGZyb20g dGhlcmUgdGhyb3VnaCBtdWx0aXBsZSBDb21tb24gRGF0YSBCdXMgY2hhbm5lbHMgaW50bwo+IG11 bHRpLXBvcnRlZCAoTnhSLCBOeFcpIENBTXMgYXQgdGhlIFJlc2VydmF0aW9uIFN0YXRpb24gbGV2 ZWwuCj4KPiBpJ3ZlIGJlZW4gdGhyb3VnaCB0aGlzLCBvaywgb3ZlciAxOCBtb250aHMgYWdvLgo+ Cj4gYnkgY29udHJhc3QsIHdoZW4gY29udmVydGVkIHRvIHNpbmdsZS1iaXQgdW5hcnkgdmVjdG9y cywgZWFjaCBlbnRyeSBpbiB0aGUKPiBNYXRyaWNlcyAoY292ZXJlZCBieSBhIHNpbmdsZSBTUiBO QU5EIGxhdGNoKSBpcyAqaW5kZXBlbmRlbnQqLiAgbXVsdGlwbGUKPiBvZiB0aG9zZSBtYXkgYmUg c2V0IGluIGEgc2luZ2xlIGN5Y2xlLgo+Cj4gdGhlcmUgaGFzIGJlZW4gYSAqbWFzc2l2ZSogYW1v dW50IG9mIHRob3VnaHQgZ29uZSBpbnRvIHRoaXMsIG9rPwo+Cj4KPiA+ID4gZ2l2ZW4gdGhhdCBJ bnRlbCBwcm9jZXNzb3JzIHVzZSBUb21hc3Vsbywgd2Ugc3RhcnQgdG8gc2VlIHdoeSBJbnRlbAo+ ID4gPiBwcm9jZXNzb3JzIHN1Y2sgc28gbXVjaCBwb3dlci4KPiA+Cj4gPiBQb3dlciBjb25zdW1w dGlvbiBvbiBhIHByb2Nlc3NvciBpcyBwcmltYXJpbHkgZnJvbSBoaWdoIHN3aXRjaGluZwo+ID4g cmF0ZXMgb24gbGFyZ2UgcmVnaXN0ZXIgZmlsZXMsIGFuZCBTUkFNIGxlYWthZ2UuCj4KPiBnaXZl biB0aGF0IHdlJ3JlIHBsYW5uaW5nIGFyb3VuZCAyOCBGdW5jdGlvbiBVbml0cyBhbmQgaGF2ZSBh IDEyOC1lbnRyeQo+IHJlZ2lzdGVyIGZpbGUsIHRoZSBjYWxjdWxhdGlvbnMgdGhhdCBpIGRpZCBm b3IgdGhhdCB3b3VsZCBwdXQgdGhlIERlcGVuZGVuY3kKPiBNYXRyaWNlcyBhcm91bmQgYSB3aG9w cGluZyA1MCwwMDAgZ2F0ZXMsIHVzaW5nIFNSIE5BTkQgTGF0Y2hlcy4KPgo+IChpZiB3ZSBkaWQg aXQgYXMgREZGcyBpdCB3b3VsZCBiZSBhbiB1bmFjY2VwdGFibGUgMjUwLDAwMCBnYXRlcykKPgo+ ID4gVGhlIHNjaGVkdWxpbmcgbG9naWMgaXMgYSBtaW5pc2N1bGUgcG9ydGlvbi4KPgo+IG5vdCBm b3IgdGhlIGxhcmdlLXNjYWxlIG91dC1vZi1vcmRlciBzeXN0ZW1zIHRoYXQgd2UgYXJlIHBsYW5u aW5nIHRvCj4gZG8sIGl0J3Mgbm90LAo+IGR1ZSB0byB0aGUgbGFyZ2Ugc2l6ZWQgR1BVIHJlZ2lz dGVyIGZpbGUgKDEyOCBlbnRyaWVzLiAgYWN0dWFsbHkgMngKPiAxMjggLSAxMjggRlAsCj4gMTI4 IElOVCkuCj4KPiB3ZSBtYXkgaGF2ZSB0byAqZG93biotc2NhbGUgdmlhIGEgcmVnZmlsZSBjYWNo ZSB0byBjb3BlIHdpdGggdGhhdC4KPiBkaXNjdXNzaW9uIGZvciBhbm90aGVyIHRpbWUuCj4KPgo+ ID4gSW50ZWwgY29yZXMgYXJlIHBvd2VyLWh1bmdyeSBiZWNhdXNlCj4gPiBoaXN0b3JpY2FsbHkg dGhleSBoYXZlIHRhcmdldGVkIHRoZSBkZXNrdG9wL3dvcmtzdGF0aW9uIG1hcmtldCwgYW5kIGRv Cj4gPiBub3QgaGF2ZSBhcyBtYW55IGRlY2FkZXMgb2YgZXhwZXJpZW5jZSBhcyBvdGhlciBmaXJt cyBvcHRpbWl6aW5nIGZvcgo+ID4gcG93ZXItY29uc3RyYWluZWQgZW52aXJvbm1lbnRzLgo+Cj4g YXBwcmVjaWF0ZWQgdGhlIGluc2lnaHQuCj4KPiA+IEFsc28gYWxtb3N0IGFsbCBtb2Rlcm4gT09P IGNvcmVzIHVzZSBUb21hc3VsbyBiZWNhdXNlIFRvbWFzdWxvIGlzCj4gPiBiZXR0ZXIgYXQgYXZv aWRpbmcgZmFsc2UgaGF6YXJkcyBjb21wYXJlZCB0byBzY29yZWJvYXJkaW5nLgo+Cj4gaW4gdGhl IHZlcnNpb25zIG9mIHNjb3JlYm9hcmRzIGltcGxlbWVudGVkIGJ5IGFjYWRlbWljcyAtIGJlY2F1 c2UgdGhleQo+IGZhaWwgdG8gY29tcHJlaGVuZCB0aGVtIHByb3Blcmx5IC0gYmVjYXVzZSB0aGV5 IG9ubHkgcmVhZCB0aGUgcGF0ZW50Cj4gb24gUS1UYWJsZXMgLSB5ZXMuCj4KPiBpbiB0aGUgdmVy c2lvbiB0aGF0IE1pdGNoIEFsc3VwIC0gYSB3b3JsZCBsZWFkaW5nIGV4cGVydCBvbiBTY29yZWJv YXJkCj4gTWVjaGFuaWNzIC0gdGF1Z2h0IG1lOgo+Cj4gbm8uCj4KPiBhbHNvLCB0aGUgSUlUIE1h ZHJhcyBSSVNFIEdyb3VwIFNoYWt0aSBFLUNsYXNzIHByb2Nlc3NvciBpcyAqYWxzbyogYQo+IHNj b3JlYm9hcmQgZGVzaWduLiAgdGhpcyB3YXMgZGVzaWduZWQgImZyb20gZmlyc3QgcHJpbmNpcGxl cyIgYnkgUHJvZmVzc29yCj4gS2FtYXRvdGksIGFuZCBpdCB3YXMgb25seSB0aHJvdWdoIGxlYXJu aW5nIGZyb20gTWl0Y2ggdGhhdCBpIHdhcyBhYmxlCj4gdG8gcmVjb2duaXNlIHdoYXQgaGUgaGFk IGRvbmUgYXMgYmVpbmcgaWRlbnRpY2FsIHRvIGEgNjYwMCBzY29yZWJvYXJkLgo+Cj4gPiBUb21h c3Vsbwo+ID4gYWxzbyBtYWtlcyBpdCBlYXNpZXIgdG8gaW1wbGVtZW50IHByZWNpc2UgdHJhcHMs IHNvbWV0aGluZyB3aGljaCBpcwo+ID4gbm90b3Jpb3VzbHkgY2hhbGxlbmdpbmcgIHdpdGgganVz dCBhIHNjb3JlYm9hcmQuCj4KPiBubyBpdCBpcyBub3QuICB0aGlzIGlzICp5ZXQgYWdhaW4qIGNv bXBsZXRlIGZhY3R1YWwgbWlzaW5mb3JtYXRpb24gYW5kIGlnbm9yYW5jZQo+IGZyb20gQWNhZGVt aWMgbGl0ZXJhdHVyZS4KPgo+IGNhbiBpIGFzazogaGF2ZSB5b3UgcmVhZCBQYXR0ZXJzb24ncyBi b29rPyAgdGhpcyBpcyB0aGUgdXN1YWwgcGxhY2Ugd2hlcmUKPiBtb3N0IHBlb3BsZSBnZXQgdGhl aXIgbWlzaW5mb3JtYXRpb24gZnJvbS4gIHRoZSByZWxlYXNlIG9mIHRoaXMgbWlzaW5mb3JtYXRp b24KPiB3YXMgd2h5IE1pdGNoIEFsc3VwIC0gYSB2ZXJ5IHBpc3NlZC1vZmYgYW5kIGV4YXNwZXJh dGVkIE1pdGNoIC0gd3JvdGUgdGhvc2UKPiB0d28gY2hhcHRlcnMsIGJhY2sgYXJvdW5kLi4uIDIw MDggKGkgdGhpbmspLgo+Cj4gcHJlY2lzZSBleGNlcHRpb25zLCB0cmFwcywgaW50ZXJydXB0cywg YnJhbmNoIHNwZWN1bGF0aW9uIGFuZCBwcmVkaWNhdGlvbiBtYXkKPiBhbGwgYmUgYWNoaWV2ZWQg dGhyb3VnaCAic2hhZG93aW5nIi4gIHNlZSB0aGUgbGF0dGVyIHBhcnQgb2YgdGhlIDJuZCBjaGFw dGVyIG9mCj4gTWl0Y2gncyBib29rLgo+Cj4gc2VlIHRoZSBzZWN0aW9uICJTaGFkb3dpbmciIGlu IHRoaXMgcGFnZToKPiBodHRwczovL2xpYnJlLXNvYy5vcmcvM2RfZ3B1L2FyY2hpdGVjdHVyZS82 NjAwc2NvcmVib2FyZC8KPgo+IGl0J3MgdmVyeSBzaW1wbGU6IHlvdSBob2xkIHdyaXRlIHVudGls IHN1Y2ggdGltZSBhcyB0aGUgb3Bwb3J0dW5pdHkgZm9yICJkYW1hZ2UiCj4gaXMgY2xlYXJlZC4g IE9wZXJhbmQgRm9yd2FyZGluZyBhbGxvd3MgaW5zdHJ1Y3Rpb25zIHRvIHJ1biBhaGVhZCwgdXNp bmcgcmVzdWx0cwo+IHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgdG8gYmUgcmVjZWl2ZWQgb25s eSBmaXJzdCBieSBnb2luZyB0aHJvdWdoCj4gdGhlIFJlZ2ZpbGUuCj4KPiAqdGhpcyBpcyBhbHJl YWR5IGltcGxlbWVudGVkKiBhbmQgdGhlIHVuaXQgdGVzdHMgZGVtb25zdHJhdGVkIGl0IGFzCj4g KmZ1bGx5IGZ1bmN0aW9uYWwqCj4KPgo+ID4gTGV0cyBiZSBjbGVhciBoZXJlLiBUaGUgQ0RDNjYw MCBBVk9JRFMgV0FSIGFuZCBXQVcgaGF6YXJkcyBieSBCTE9DS0lORwo+ID4geW91bmdlciBpbnN0 cnVjdGlvbnMgKFNlZSBwZzMgaW4gTWl0Y2ggQWxzdXAncyB0ZXh0KS4gVG9tYXN1bG8ncwo+ID4g c3VwcG9ydHMgT09PIGV4ZWN1dGlvbiBQQVNUIFdBUiBhbmQgV0FXIGhhemFyZHMsIGVuYWJsaW5n IHRoZSBjb3JlIHRvCj4gPiBleHBsb2l0IG1vcmUgSUxQIGFjcm9zcyBpdHMgZnVuY3Rpb25hbCB1 bml0cy4KPgo+IHRoaXMgaXMgb25seSBiZWNhdXNlIHRoZSAxOTY1IENEQzY2MDAgZGlkIG5vdCBo YXZlIGFuIE9wZXJhbmQgRm9yd2FyZGluZyBCdXMKPiAoaW5zdGVhZCBpdCB1c2VkIHRoZSByZWdm aWxlIGFzIGEgc2FtZS1jbG9jayBmb3J3YXJkaW5nIGJ1cywgYnkgcmVhZGluZyBvbiBvbmUKPiBl ZGdlIGFuZCB3cml0aW5nIG9uIHRoZSBvdGhlci4gIHRoaXMgdW5mb3J0dW5hdGVseSBtZWFudCB0 aGF0IHdpdGhvdXQgYW4gT3BGd2QKPiBCdXMsIHN0YWxsIGhhZCB0byBvY2N1cikuCj4KPiB0aGlz IERPRVMgTk9UIElOSEVSRU5UTFkgTUVBTiB0aGF0ICoqQUxMKiogU2NvcmVib2FyZHMgYXJlIHJ1 YmJpc2guCj4KPiBpZiB5b3UgYWRkIGFuIE9wZXJhbmQgRm9yd2FyZGluZyBCdXMgKGVxdWl2YWxl bnQgdG8gdGhlIENEQiBpbiBUb21hc3VsbykKPiB0aGUgZXhhY3Qgc2FtZSBwYXJpdHkgZnVuY3Rp b25hbGl0eSBpcyBhY2hpZXZlZCAod2l0aG91dCB0aGUgc2V2ZXJlIGRvd25zaWRlcykuCj4KPgo+ ID4gTHVrZSwgSSBhZ3JlZSB3aXRoIHlvdSB0aGF0IHRoZSByZXNlcnZhdGlvbiBzdGF0aW9uIHJv d3MgaW4gVG9tYXN1bG8ncwo+ID4gY2FuIGJlIGVxdWl2YWxlbnQgdG8gdGhlIG9wZXJhbmQgbGF0 Y2hlcyBpbiBTY29yZWJvYXJkaW5nLiBIb3dldmVyLAo+ID4gYWRkaW5nIG1hbnkgb3BlcmFuZC1s YXRjaGVzIChieSBoYXZpbmcgbWFueSBmdW5jdGlvbmFsIHVuaXRzKSBkb2VzIG5vdAo+ID4gc2Nh bGUgYXMgbmljZWx5IGFzIGp1c3QgYWRkaW5nIGEgZmV3IG1vcmUgcm93cyB0byBUb21hc3Vsbydz Cj4gPiByZXNlcnZhdGlvbiBzdGF0aW9ucy4KPgo+IHRoaXMgaXMgaW5jb3JyZWN0LiAgeW91IG1h eSBiZSB1bmRlciB0aGUgbWlzdGFrZW4gaW1wcmVzc2lvbiB0aGF0IHRoZSBwaXBlbGluZXMKPiBk dXBsaWNhdGVkIGFzIHdlbGwuICB0aGlzIGNsZWFybHkgd291bGQgYmUgaW5hZHZpc2VhYmxlIGJl Y2F1c2UgdGhlIEZVJ3Mgam9iCj4gaXMgdG8gc2VydmUgb25lIGFuZCBvbmx5IG9uZSByZXN1bHQu ICB0aGVyZWZvcmUgeW91IGtub3cgdGhhdCB0aGlzIGlzIGEgbWlzdGFrZW4KPiB1bmRlcnN0YW5k aW5nLCBhbmQgdGhhdCBjb25zZXF1ZW50bHkgeW91IGhhdmUgbXVsdGlwbGUgRlVzIGZvciB0aGUg c2FtZQo+IHBpcGVsaW5lLiAgKHRlcm1lZCAiQ29uY3VycmVudCBDb21wdXRhdGlvbiBVbml0Iiku Cj4KPiB0aGVyZWZvcmUgaXQncyBtaW5pbWFsLiAgZXhjbHVkaW5nIHRoZSBsYXRjaGVzIHRoZW1z ZWx2ZXMgKHRoZSByb3dzCj4gaGF2ZSBsYXRjaGVzLCB0aGUKPiBDb21wVW5pdHMgLSBha2EgRnVu Y3Rpb25Vbml0cyBoYXZlIGxhdGNoZXMsIHRoZSB0b3RhbCBudW1iZXIgb2YgbGF0Y2hlcyBhZnRl cgo+IGZsYXR0ZW5pbmcgaXMgdGhlIHNhbWUpLCB0aGUgbnVtYmVyIG9mIGdhdGVzIGFkZGVkIGJ5 IGVhY2ggQ29tcFVuaXQgaXMKPiBtaW5pbWFsOiBhcm91bmQuLi4gODAsIG1heGltdW0uCj4KPiB0 aGF0J3MgcGVhbnV0cy4KPgo+ID4gRXNwZWNpYWxseSBzaW5jZSBkZXNpZ25pbmcgdGhlIENBTXMg Zm9yCj4gPiBUb21hc3VsbydzIGlzIGEgd2VsbCBzdHVkaWVkLCBhbmQgd2VsbC11bmRlcnN0b29k IHByb2JsZW0KPgo+IHRoZSBrZXkgaXMgdGhlIGNvbWJpbmF0aW9uIG9mIHRob3NlIHR3bzoKPgo+ IEEpIHdlbGwtdW5kZXJzdG9vZC4uLiAqYW5kKgo+IEIpIGEgcHJvYmxlbS4KPgo+IGhhdmUgYSBs b29rIGF0IGhvdyBtdWx0aS1pc3N1ZSBpcyBkb25lIHVzaW5nIFRvbWFzdWxvLiAgaXQncyBzaG9j a2luZ2x5IGJhZC4KPgo+Cj4gPiA+IDMuIEV4cGFuZCB0aGUgbnVtYmVyIG9mIFJTZXMgc28gdGhh dCBpZiB5b3Ugd2VyZSB0byBjb3VudCB0aGUgdG90YWwgbnVtYmVyCj4gPiA+IG9mIHBsYWNlcyBv cGVyYW5kcyBhcmUgc3RvcmVkLCB0aGV5IGFyZSB0aGUgc2FtZS4KPiA+Cj4gPiA+IChhbm90aGVy IHdheSB0byBwdXQgdGhpcyBpcywgImZsYXR0ZW4gYWxsIDJEIFJTZXMgaW50byAxRCIpCj4gPgo+ ID4gVGhpcyBkb2VzIG5vdCBzY2FsZSB3ZWxsLiBBIDJEIENBTSBpcyBmYXIgbW9yZSBhcmVhIGVm ZmljaWVudCB0aGFuIGEKPiA+IDFEIGZsYXR0ZW5lZCB2ZWN0b3IuCj4KPiBhIDFEIGJpdHZlY3Rv ci4gIGEgc2luZ2xlLCAxRCBiaXR2ZWN0b3IuICBvZiAzMiBiaXRzIGluIGxlbmd0aC4KPgo+IGNv bXBhcmVkIHRvIDMyIDUtYml0IGJpbmFyeSBhZGRyZXNzZXMuCj4KPiBqdXN0IHRoZSBsYXRjaGVz IGFsb25lLCB0aGF0IG1hdGggZG9lcyBub3Qgc3RhY2sgdXAuCj4KPiBub3cgbGV0J3MgdGFrZSBp dCB0byAyRC4KPgo+IGxldCdzIHNheSB0aGF0IHdlIGhhdmUgMTAgRlVzIGFuZCAzMiAgUmVncy4K Pgo+IGluIFRvbWFzdWxvIHRoYXQgaXMgYSA1LWJpdCBhZGRyZXNzLiAgMTB4NSA9IDUwIERGRiBs YXRjaGVzLiAgREZGCj4gbGF0Y2hlcyBhcmUgMTAgZ2F0ZXMgc28gdGhhdCdzIDUwMCBnYXRlcy4K Pgo+IGluIDY2MDAgdGhhdCBpcyAxMHgzMiA9IDMyMCBTUiBOQU5EIExhdGNoZXMuICBTUiBOQU5E IGxhdGNoZXMgYXJlIDIKPiBnYXRlcy4gIDMyMHgyIGlzIDY0MCBnYXRlcy4KPgo+IG5vdCB2ZXJ5 IGRpZmZlcmVudCBpbiB0ZXJtcyBvZiBsYXRjaCBjb3VudCwgaXMgaXQ/Cj4KPgo+IG5vdyBsZXQn cyBkbyB0aGUgYWRkcmVzcy1jaGVja2luZy4KPgo+IHRvIGNoZWNrIGEgcmVnaXN0ZXIgYXMgImFj dGl2ZSIgLSBiZWFyIGluIG1pbmQgdGhhdCB0aGlzIGlzIHBlcgo+IHJlZ2lzdGVyIGFuZCBjb25z ZXF1ZW50bHkKPiBpZiBkb2luZyBtdWx0aS1pc3N1ZSB0aGF0J3MgYSBiYXRjaCBvZiBhZGRyZXNz LWNoZWNraW5nIGdhdGVzICpwZXIgcmVnaXN0ZXIqLgo+Cj4gZm9yIFRvbWFzdWx1LCB0aGlzIHJl cXVpcmVzIDEweDUgPSA1MDAgWE9SIGdhdGVzIChwbHVzIHNvbWUKPiBtdWx0aS1pbnB1dCBBTkQg Z2F0ZXMgb24gZWFjaCByb3cpICAgWE9SIGlzIDQgZ2F0ZXMsIHNvIHRoYXQncyAyLDAwMAo+IGdh dGVzICpQRVIgTVVMVEktSVNTVUUgTEFORSouCj4KPiBmb3IgdGhlIDY2MDAsIHRoYXQncyAxMHgz MiAqKkFORCoqIGdhdGVzLiAgMzIwIEFORCBnYXRlcy4KPgo+IGFuZCBvZiB0aG9zZSAzMjAgQU5E IGdhdGVzLCB0aGV5IGFyZSByZS11c2VhYmxlIGZvciBtdWx0aS1pc3N1ZQo+IFdJVEhPVVQgUkVR VUlSSU5HIEFERElUSU9OQUwgR0FURVMuCj4KPiBzbyB0aGF0IGlzIDMyMCBBTkQgZ2F0ZXMgZm9y IHNpbmdsZS1pc3N1ZQo+IHRoYXQgaXMgemVybyBleHRyYSBnYXRlcyBmb3IgZHVhbC1pc3N1ZQo+ IHRoYXQgaXMgemVybyBleHRyYSBnYXRlcyBmb3IgcXVhZC1pc3N1ZQo+IHplcm8gZXh0cmEgZ2F0 ZXMgZm9yIG9jdGFsLWlzc3VlLgo+Cj4gc3RhcnQgdG8gbWFrZSBzZW5zZSBub3csIHdoeSB1bmFy eSBlbmNvZGluZyBhcyAxRCB2ZWN0b3JzIGlzIGxlc3MKPiBnYXRlcyBhbmQgbGVzcyBwb3dlciB0 aGFuIGJpbmFyeSBDQU1zPwo+Cj4gaWYgeW91IHdhbnQgdG8gY2hlY2sgbXVsdGlwbGUgdW5hcnkg Yml0cyAoYSBjcml0aWNhbCBwcmVyZXF1aXNpdGUgZm9yCj4gbXVsdGktaXNzdWUpLCBhbGwgeW91 IGRvIGlzLi4uIHNldC4uLiBtdWx0aXBsZS4uLiBiaXRzLgo+Cj4gd2hhdCBoYXBwZW5zPyAgbXVs dGlwbGUgQU5EIGdhdGVzIGZpcmUuICBpbiB0aGUgc2FtZSBjbG9jay4gICBhbmQKPiB0aGF0J3Mg ZXhhY3RseSB3aGF0IHdlIHdhbnQuCj4KPgo+ID4gPiA3LiByZW5hbWUgUlNlcyB0byAiRnVuY3Rp b24gVW5pdHMiIChhY3R1YWxseSBpbiBUaG9ybnRvbidzIGJvb2sgdGhlIHBocmFzZQo+ID4gPiAi Q29tcHV0YXRpb24gVW5pdHMiIGlzIHVzZWQpCj4gPgo+ID4gU28gYSBUb21hc3VsbydzIGRlc2ln biB3aXRoIDQgcm93cyBub3cgYmVjb21lcyBhICJmbGF0dGVuZWQiIGRlc2lnbgo+ID4gd2l0aCA0 IGZ1bmN0aW9uYWwgdW5pdHM/IFRoZSBhZGRpdGlvbmFsIGNvc3Qgb2YgdGhlIGZ1bmN0aW9uYWwg dW5pdHMKPiA+IGlzIGVub3Jtb3VzLgo+Cj4gbm8sIGl0J3MgNCB4IDgwIGdhdGVzIChhcHByb3gp LiAgdGhhdCdzIG5vdCA0eCBkdXBsaWNhdGlvbiBvZiBBTFUKPiBwaXBlbGluZXMgKmJlaGluZCog dGhvc2UgNCBGdW5jdGlvbiBVbml0cy4gIHNlZSBNaXRjaCdzIDJuZCBDaGFwdGVyLAo+ICJDb25j dXJyZW50IENvbXB1dGF0aW9uIFVuaXQiCj4KPiBodHRwczovL2xpYnJlLXNvYy5vcmcvM2RfZ3B1 L2FyY2hpdGVjdHVyZS82NjAwc2NvcmVib2FyZC82MDB4LWNvbmN1cnJlbnRfY29tcF91bml0LnBu Zwo+Cj4gSmVyZW15OiBpdCdzIHJhdGhlciB1bmZvcnR1bmF0ZSB0aW1pbmcuICBzaXggdG8gdHdl bHZlIG1vbnRocyBhZ28sIHdlCj4gY291bGQgaGF2ZSBoYWQgdGhpcyBkZWJhdGUgYW5kIGl0IHdv dWxkIGhhdmUgYmVlbiBmdW4sIGluZm9ybWF0aXZlLAo+IHVzZWZ1bCBhbmQgcHJvZHVjdGl2ZS4g IGl0IHdvdWxkIGFsc28gaGF2ZSBiZWVuIHBvc3NpYmxlIHRvIGJyaW5nIHlvdQo+IGluIHRvIHRo ZSBkaXNjdXNzaW9ucyB0aGF0IHRvb2sgcGxhY2UgKE5vdiAyMDE4IHRvIGFyb3VuZCBBcHItTWF5 Cj4gMjAxOSkgYmV0d2VlbiBteXNlbGYsIFNhbXVlbCBGYWx2bywgTWl0Y2ggQWxzdXAgYW5kIHRo ZSB0ZWFtIGVpdGhlcgo+IGhlcmUgb24gdGhpcyBsaXN0LCBvciBvbiBjb21wLmFyY2guCj4KPiBo b3dldmVyIHdpdGggdGhlIHVwY29taW5nIGRlYWRsaW5lLCB0aGlzIGtpbmQgb2Ygb3RoZXJ3aXNl IHJlYWxseQo+IHZhbHVhYmxlIGRpc2N1c3Npb24gaXMsIHNhZGx5LCBzb21ldGhpbmcgdGhhdCB3 ZSAqZG8gbm90IGhhdmUgdGltZQo+IGZvciouCj4KPiByZXRyb3NwZWN0aXZlIHJlY29tbWVuZGF0 aW9uIHRoYXQgd2UgcmVjb25zaWRlciBhbmQgdXNlIFRvbWFzdWxvIHdvdWxkCj4gbm90IG9ubHkg cmVzdWx0IGluIHVzIGNvbXBsZXRlbHkgbWlzc2luZyB0aGUgdXBjb21pbmcgT2N0IDIwMjAKPiBk ZWFkbGluZSwgd2Ugd291bGQgZW5kIHVwIHdpdGggYW4gZXhjZXB0aW9uYWxseSBwb29ybHktcGVy Zm9ybWluZywKPiBsaW1pdGVkIGFuZCBzZXJpb3VzbHkgcHJvYmxlbWF0aWMgcHJvY2Vzc29yIGFz IHdlbGwuICB3b3JzZSB0aGFuIHRoYXQsCj4gc2FkbHkgaSBoYXZlIHRvIHNheSB0aGF0IGkgYW0g Y29uY2VybmVkIHRoYXQgYW55IHJldHJvc3BlY3RpdmUKPiBkaXNjdXNzaW9uIHdvdWxkIGl0c2Vs ZiAoYXNpZGUgZnJvbSB2YWx1YWJsZSBjb3JyZWN0aW9ucyBhbmQKPiBhc3Npc3RhbmNlIGluIGNy ZWF0aW5nIGEgY29tcGFyYXRpdmUgYW5hbHlzaXMpIGJlY29tZSBhIHNlcmlvdXMKPiBkaXN0cmFj dGlvbi4KPgo+IGl0J3MgbGlpdHRlcmFsbGx5IHRha2VuIDE4IE1PTlRIcyB0byBnZXQgdG8gdGhl IHBvaW50IHdoZXJlIHdlIGFyZSBub3cKPiB3aXRoIHRoZSBjb2RlIGFuZCB0aGUgZGVzaWduLiAg d2UgbmVlZCB0byBmaW5pc2ggdGhlIGRlc2lnbiBpbiBhIHZlcnkKPiBzaG9ydCB0aW1lZnJhbWUg KDE0IHdlZWtzKSwgYW5kIGFzIFllaG93c2h1YSBwb2ludHMgb3V0LCBkdWUgdG8gdGhlCj4gY29t cGxleGl0eSBvZiB0aGlzIHBhcnRpY3VsYXIgYXJlYSBvZiBDb21wdXRlciBTY2llbmNlLCB0aGF0 IGluIHR1cm4KPiBpbXBsaWVzIHRoYXQgeW91J2xsIG5lZWQgdG8gdHJ1c3QgbWUgb24gdGhlIGFy Y2hpdGVjdHVyYWwgYW5hbHlzaXMKPiAod2hpY2ggdG9vayA1IG1vbnRocyB0byBjb21wbGV0ZSwg dW5kZXIgTWl0Y2gncyBndWlkYW5jZSkuCj4KPiBzbywgbXkgYXBvbG9naWVzIGZvciBuZWVkaW5n IHRvIGJlIGZpcm0gb24gdGhpczogdGhlIG9wcG9ydHVuaXR5IHRvCj4gaGVscCBleGlzdHMgd2l0 aGluIHRoZSB0aW1lLWZyYW1lIGFuZCBmaW5hbmNpYWwgY29uc3RyYWludHMgdGhhdCB3ZXJlCj4g ZGV0ZXJtaW5lZCBhbmQgc2V0LCBvdmVyIDE4IG1vbnRocyBhZ28sIGJlZm9yZSB5b3Ugam9pbmVk Lgo+Cj4gdGhlcmVmb3JlLCBpZiB5b3UnZCBsaWtlIHRvIGhlbHAsIHRoZW4gYXNraW5nIHF1ZXN0 aW9ucyB3aGljaCBhcmUKPiByZWxhdGVkIHRvICp1bmRlcnN0YW5kaW5nKiBvZiB0aGUgcHJlY2lz ZS1hdWdtZW50ZWQgU2NvcmVib2FyZCBzeXN0ZW0sCj4gdGFyZ2V0dGVkIHZlcnkgc3BlY2lmaWNh bGx5IGF0IGFsbG93aW5nIHlvdSB0byBlbmdhZ2UgYW5kIGFzc2lzdCB1cyBpbgo+IG1lZXRpbmcg dGhhdCBkZWFkbGluZSwgYXJlIHZlcnkgd2VsY29tZS4KPgo+IGFueXRoaW5nIG90aGVyIHRoYW4g dGhhdCB2ZXJ5IHNwZWNpZmljIGdvYWwtb3JpZW50YXRlZCBmb2N1cywgaSBhbQo+IHJlYWxseSBz b3JyeSwgd2UgcmVhbGx5IG5lZWQgdG8gbW92ZSBpdCB0byBvbmUgc2lkZSwgYW5kIGZvciB0aGF0 LCBpCj4gcmVjb21tZW5kIGNvbXAuYXJjaC4KPgo+IHRoZXJlZm9yZSwgaWYgeW91IHdvdWxkIGxp a2UgdG8gZGlzY3VzcyB0aGUgbWVyaXRzIG9mIFRvbWFzdWxvIHZzCj4gU2NvcmVib2FyZCAocGFy dGljdWxhcmx5IHRob3NlIHRoYXQgcHVyc3VlIHJlY29tbWVuZGluZyBUb21hc3Vsbwo+ICpvdmVy KiBTY29yZWJvYXJkKSBmdXJ0aGVyLCBpIHJlY29tbWVuZCBkb2luZyBzbyBvbiBjb21wLmFyY2gs IHdoaWNoCj4gaXMgd2hlcmUgTWl0Y2ggQWxzdXAgbW9zdCByZWd1bGFybHkgbWF5IGJlIGZvdW5k LiAgd2l0aCB0aGUgcmlnaHQKPiBpbnRlcmVzdGluZyBxdWVzdGlvbiwgYm90aCBoZSBhbmQgbWFu eSBvdGhlcnMgd2lsbCBwaXRjaCBpbi4KPgo+IHRoZSBvbmUgdGhpbmcgdGhhdCB5b3UgbmVlZCB0 byBiZSBhd2FyZSBvZiBpcyB0aGF0IE1pdGNoIGlzIGJvdGgKPiBoeXBlci1pbnRlbGxpZ2VudCwg YW5kIHNlY29uZCB0aGF0IGhlIGRvZXMgbm90IHRvbGVyYXRlIHBlb3BsZSB3aG8KPiBjYW5ub3Qg a2VlcCB1cCB3aXRoIGhpbSwgZXNwZWNpYWxseSBpZiB0aGV5IHRyeSB0byBjb252aW5jZSBoaW0g b2YKPiBzb21ldGhpbmcgd2l0aG91dCBoYXZpbmcgZmlyc3QgZGVtb25zdHJhdGVkIHRoYXQgdGhl eSd2ZSB1bmRlcnN0b29kCj4gKmhpbSouICBoZSdzIHdlbGwgb3ZlciA3MCwgaGUncyByZXRpcmVk LCBoZSBtYWRlIGVub3VnaCAieHh4eC15b3UiCj4gbW9uZXkgb24gc2VsbGluZyBHUFUgcGF0ZW50 cyB0byBTYW1zdW5nLCBzbyBoZSBkb2Vzbid0IGhhdmUgdG8gcHV0IHVwCj4gd2l0aCBhbnl0aGlu ZyB0aGF0IGhlIGRvZXNuJ3Qgd2FudCB0byA6KQo+Cj4gbC4KPgo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gbGlicmUtcmlzY3YtZGV2IG1haWxpbmcg bGlzdAo+IGxpYnJlLXJpc2N2LWRldkBsaXN0cy5saWJyZS1yaXNjdi5vcmcKPiBodHRwOi8vbGlz dHMubGlicmUtcmlzY3Yub3JnL21haWxtYW4vbGlzdGluZm8vbGlicmUtcmlzY3YtZGV2CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaWJyZS1yaXNjdi1k ZXYgbWFpbGluZyBsaXN0CmxpYnJlLXJpc2N2LWRldkBsaXN0cy5saWJyZS1yaXNjdi5vcmcKaHR0 cDovL2xpc3RzLmxpYnJlLXJpc2N2Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpYnJlLXJpc2N2LWRl dgo=