From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/3] drm: Add basic helper to allow precise pageflip timestamps in vrr. Date: Wed, 13 Feb 2019 21:53:01 +0100 Message-ID: <20190213205300.GN23159@phenom.ffwll.local> References: <20190211083540.GR23159@phenom.ffwll.local> <41354dd1-e3fe-58cc-9c10-1a8cd05b2a40@amd.com> <20190213095055.GF23159@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Mario Kleiner Cc: "michel-otUistvHUpPR7s880joybQ@public.gmane.org" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , Daniel Vetter , "Deucher, Alexander" , "Kazlauskas, Nicholas" List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBGZWIgMTMsIDIwMTkgYXQgMDc6MTA6MDBQTSArMDEwMCwgTWFyaW8gS2xlaW5lciB3 cm90ZToKPiBPbiBXZWQsIEZlYiAxMywgMjAxOSBhdCA1OjAzIFBNIERhbmllbCBWZXR0ZXIgPGRh bmllbEBmZndsbC5jaD4gd3JvdGU6Cj4gPgo+ID4gT24gV2VkLCBGZWIgMTMsIDIwMTkgYXQgNDo0 NiBQTSBLYXpsYXVza2FzLCBOaWNob2xhcwo+ID4gPE5pY2hvbGFzLkthemxhdXNrYXNAYW1kLmNv bT4gd3JvdGU6Cj4gPiA+Cj4gPiA+IE9uIDIvMTMvMTkgMTA6MTQgQU0sIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4gPiA+ID4gT24gV2VkLCBGZWIgMTMsIDIwMTkgYXQgMzozMyBQTSBLYXpsYXVza2Fz LCBOaWNob2xhcwo+ID4gPiA+IDxOaWNob2xhcy5LYXpsYXVza2FzQGFtZC5jb20+IHdyb3RlOgo+ ID4gPiA+Pgo+ID4gPiA+PiBPbiAyLzEzLzE5IDQ6NTAgQU0sIERhbmllbCBWZXR0ZXIgd3JvdGU6 Cj4gPiA+ID4+PiBPbiBUdWUsIEZlYiAxMiwgMjAxOSBhdCAxMDozMjozMVBNICswMTAwLCBNYXJp byBLbGVpbmVyIHdyb3RlOgo+ID4gPiA+Pj4+IE9uIE1vbiwgRmViIDExLCAyMDE5IGF0IDY6MDQg UE0gRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90ZToKPiA+ID4gPj4+Pj4KPiA+ ID4gPj4+Pj4gT24gTW9uLCBGZWIgMTEsIDIwMTkgYXQgNDowMSBQTSBLYXpsYXVza2FzLCBOaWNo b2xhcwo+ID4gPiA+Pj4+PiA8TmljaG9sYXMuS2F6bGF1c2thc0BhbWQuY29tPiB3cm90ZToKPiA+ ID4gPj4+Pj4+Cj4gPiA+ID4+Pj4+PiBPbiAyLzExLzE5IDM6MzUgQU0sIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4gPiA+ID4+Pj4+Pj4gT24gTW9uLCBGZWIgMTEsIDIwMTkgYXQgMDQ6MjI6MjRBTSAr MDEwMCwgTWFyaW8gS2xlaW5lciB3cm90ZToKPiA+ID4gPj4+Pj4+Pj4gVGhlIHBhZ2VmbGlwIGNv bXBsZXRpb24gdGltZXN0YW1wcyB0cmFuc21pdHRlZCB0byB1c2Vyc3BhY2UKPiA+ID4gPj4+Pj4+ Pj4gdmlhIHBhZ2VmbGlwIGNvbXBsZXRpb24gZXZlbnRzIGFyZSBzdXBwb3NlZCB0byBkZXNjcmli ZSB0aGUKPiA+ID4gPj4+Pj4+Pj4gdGltZSBhdCB3aGljaCB0aGUgZmlyc3QgcGl4ZWwgb2YgdGhl IG5ldyBwb3N0LXBhZ2VmbGlwIHNjYW5vdXQKPiA+ID4gPj4+Pj4+Pj4gYnVmZmVyIGxlYXZlcyB0 aGUgdmlkZW8gb3V0cHV0IG9mIHRoZSBncHUuIFRoaXMgdGltZSBpcwo+ID4gPiA+Pj4+Pj4+PiBp ZGVudGljYWwgdG8gZW5kIG9mIHZibGFuaywgd2hlbiBhY3RpdmUgc2Nhbm91dCBzdGFydHMuCj4g PiA+ID4+Pj4+Pj4+Cj4gPiA+ID4+Pj4+Pj4+IEZvciBhIGNydGMgaW4gc3RhbmRhcmQgZml4ZWQg cmVmcmVzaCByYXRlLCB0aGUgZW5kIG9mIHZibGFuawo+ID4gPiA+Pj4+Pj4+PiBpcyBpZGVudGlj YWwgdG8gdGhlIHZibGFuayB0aW1lc3RhbXBzIGNhbGN1bGF0ZWQgYnkKPiA+ID4gPj4+Pj4+Pj4g ZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoKSBhdCBlYWNoIHZibGFuayBpbnRlcnJ1cHQsIG9yIGVh Y2gKPiA+ID4gPj4+Pj4+Pj4gdmJsYW5rIGRpcy0vZW5hYmxlLiBUaGVyZWZvcmUgcGFnZWZsaXAg ZXZlbnRzIGp1c3QgY2FycnkKPiA+ID4gPj4+Pj4+Pj4gdGhhdCB2YmxhbmsgdGltZXN0YW1wIGFz IHRoZWlyIHBhZ2VmbGlwIHRpbWVzdGFtcC4KPiA+ID4gPj4+Pj4+Pj4KPiA+ID4gPj4+Pj4+Pj4g Rm9yIGEgY3J0YyBzd2l0Y2hlZCB0byB2YXJpYWJsZSByZWZyZXNoIHJhdGUgbW9kZSAodnJyKSwg dGhlCj4gPiA+ID4+Pj4+Pj4+IHBhZ2VmbGlwIGNvbXBsZXRpb24gdGltZXN0YW1wcyBhcmUgaWRl bnRpY2FsIHRvIHRoZSB2YmxhbmsKPiA+ID4gPj4+Pj4+Pj4gdGltZXN0YW1wcyBpZmYgdGhlIHBh Z2VmbGlwIHdhcyBleGVjdXRlZCBlYXJseSBpbiB2YmxhbmssCj4gPiA+ID4+Pj4+Pj4+IGJlZm9y ZSB0aGUgbWluaW11bSB2YmxhbmsgZHVyYXRpb24gZWxhcHNlZC4gSW4gdGhpcyBjYXNlCj4gPiA+ ID4+Pj4+Pj4+IHRoZSB0aW1lIG9mIGRpc3BsYXkgb25zZXQgaXMgaWRlbnRpY2FsIHRvIHdoZW4g dGhlIGNydGMKPiA+ID4gPj4+Pj4+Pj4gaXMgcnVubmluZyBpbiBmaXhlZCByZWZyZXNoIHJhdGUu Cj4gPiA+ID4+Pj4+Pj4+Cj4gPiA+ID4+Pj4+Pj4+IEhvd2V2ZXIsIGlmIGEgcGFnZWZsaXAgY29t cGxldGVzIGxhdGVyIGluIHRoZSB2YmxhbmssIGluc2lkZQo+ID4gPiA+Pj4+Pj4+PiB0aGUgImV4 dGVuZGVkIGZyb250IHBvcmNoIiBpbiB2cnIgbW9kZSwgdGhlbiB0aGUgdmJsYW5rIHdpbGwKPiA+ ID4gPj4+Pj4+Pj4gdGVybWluYXRlIGF0IGEgZml4ZWQgKGJhY2sgcG9yY2gpIGR1cmF0aW9uIGFm dGVyIGZsaXAsIHNvCj4gPiA+ID4+Pj4+Pj4+IHRoZSBkaXNwbGF5IG9uc2V0IHRpbWUgaXMgZGVs YXllZCBjb3JyZXNwb25kaW5nbHkuIEluIHRoaXMKPiA+ID4gPj4+Pj4+Pj4gY2FzZSB0aGUgdmJs YW5rIHRpbWVzdGFtcCBjb21wdXRlZCBhdCB2YmxhbmsgaXJxIHRpbWUgd291bGQKPiA+ID4gPj4+ Pj4+Pj4gYmUgdG9vIGVhcmx5LCBhbmQgd2UgbmVlZCBhIHdheSB0byBjYWxjdWxhdGUgYW4gZXN0 aW1hdGVkCj4gPiA+ID4+Pj4+Pj4+IHBhZ2VmbGlwIHRpbWVzdGFtcCB0aGF0IHdpbGwgYmUgbGF0 ZXIgdGhhbiB0aGUgdmJsYW5rIHRpbWVzdGFtcC4KPiA+ID4gPj4+Pj4+Pj4KPiA+ID4gPj4+Pj4+ Pj4gSG93IGEgZHJpdmVyIGRldGVybWluZXMgc3VjaCBhICJsYXRlIGZsaXAiIHRpbWVzdGFtcCBp cyBodwo+ID4gPiA+Pj4+Pj4+PiBhbmQgZHJpdmVyIHNwZWNpZmljLCBidXQgdGhpcyBwYXRjaCBh ZGRzIGEgbmV3IGhlbHBlciBmdW5jdGlvbgo+ID4gPiA+Pj4+Pj4+PiB0aGF0IGFsbG93cyB0aGUg ZHJpdmVyIHRvIHByb3Bvc2Ugc3VjaCBhbiBhbHRlcm5hdGUgImxhdGUgZmxpcCIKPiA+ID4gPj4+ Pj4+Pj4gdGltZXN0YW1wIGZvciB1c2UgaW4gcGFnZWZsaXAgZXZlbnRzOgo+ID4gPiA+Pj4+Pj4+ Pgo+ID4gPiA+Pj4+Pj4+PiBkcm1fY3J0Y19zZXRfdnJyX3BhZ2VmbGlwX3RpbWVzdGFtcChjcnRj LCBmbGlwX3RpbWVzdGFtcCk7Cj4gPiA+ID4+Pj4+Pj4+Cj4gPiA+ID4+Pj4+Pj4+IFdoZW4gc2Vu ZGluZyBvdXQgcGFnZWZsaXAgZXZlbnRzLCB3ZSBub3cgY29tcGFyZSB0aGF0IHByb3Bvc2VkCj4g PiA+ID4+Pj4+Pj4+IGZsaXBfdGltZXN0YW1wIGFnYWluc3QgdGhlIHZibGFuayB0aW1lc3RhbXAg b2YgdGhlIGN1cnJlbnQKPiA+ID4gPj4+Pj4+Pj4gdmJsYW5rIG9mIGZsaXAgY29tcGxldGlvbiBh bmQgY2hvb3NlIHRvIHNlbmQgb3V0IHRoZSBncmVhdGVyLwo+ID4gPiA+Pj4+Pj4+PiBsYXRlciB0 aW1lc3RhbXAgYXMgZmxpcCBjb21wbGV0aW9uIHRpbWVzdGFtcC4KPiA+ID4gPj4+Pj4+Pj4KPiA+ ID4gPj4+Pj4+Pj4gVGhlIG1vc3Qgc2ltcGxlIHdheSBmb3IgYSBrbXMgZHJpdmVyIHRvIHN1cHBs eSBhIHN1aXRhYmxlCj4gPiA+ID4+Pj4+Pj4+IGZsaXBfdGltZXN0YW1wIGluIHZyciBtb2RlIHdv dWxkIGJlIHRvIHNpbXBseSB0YWtlIGEgdGltZXN0YW1wCj4gPiA+ID4+Pj4+Pj4+IGF0IHN0YXJ0 IG9mIHRoZSBwYWdlZmxpcCBjb21wbGV0aW9uIGhhbmRsZXIsIGUuZy4sIHBhZ2VmbGlwCj4gPiA+ ID4+Pj4+Pj4+IGlycSBoYW5kbGVyOiBmbGlwX3RpbWVzdGFtcCA9IGt0aW1lX2dldCgpOyBhbmQg dGhlbiBzZXQgdGhhdAo+ID4gPiA+Pj4+Pj4+PiBhcyBwcm9wb3NlZCAibGF0ZSIgYWx0ZXJuYXRp dmUgdGltZXN0YW1wIHZpYSAuLi4KPiA+ID4gPj4+Pj4+Pj4gZHJtX2NydGNfc2V0X3Zycl9wYWdl ZmxpcF90aW1lc3RhbXAoY3J0YywgZmxpcF90aW1lc3RhbXApOwo+ID4gPiA+Pj4+Pj4+Pgo+ID4g PiA+Pj4+Pj4+PiBNb3JlIGNsZXZlciBhcHByb2FjaGVzIGNvdWxkIHRyeSB0byBhZGQgc29tZSBj b3JyZWN0aXZlIG9mZnNldAo+ID4gPiA+Pj4+Pj4+PiBmb3IgZml4ZWQgYmFjayBwb3JjaCBkdXJh dGlvbiwgb3IgaWRlYWxseSB1c2UgaGFyZHdhcmUgZmVhdHVyZXMKPiA+ID4gPj4+Pj4+Pj4gbGlr ZSBodyB0aW1lc3RhbXBzIHRvIGNhbGN1bGF0ZSB0aGUgZXhhY3QgZW5kIHRpbWUgb2YgdmJsYW5r Lgo+ID4gPiA+Pj4+Pj4+Pgo+ID4gPiA+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBNYXJpbyBLbGVp bmVyIDxtYXJpby5rbGVpbmVyLmRlQGdtYWlsLmNvbT4KPiA+ID4gPj4+Pj4+Pj4gQ2M6IE5pY2hv bGFzIEthemxhdXNrYXMgPG5pY2hvbGFzLmthemxhdXNrYXNAYW1kLmNvbT4KPiA+ID4gPj4+Pj4+ Pj4gQ2M6IEhhcnJ5IFdlbnRsYW5kIDxoYXJyeS53ZW50bGFuZEBhbWQuY29tPgo+ID4gPiA+Pj4+ Pj4+PiBDYzogQWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgo+ID4gPiA+ Pj4+Pj4+Cj4gPiA+ID4+Pj4+Pj4gVWgsIHRoaXMgbG9va3MgbGlrZSBhIHByZXR0eSBiYWQgaGFj ay4gQ2FuJ3Qgd2UgZml4IGFtZGdwdSB0byBvbmx5IGdpdmUgdXMKPiA+ID4gPj4+Pj4+PiB0aGUg cmlnaHQgdGltZXN0YW1wZSwgb25jZT8gV2l0aCB0aGlzIEkgZ3Vlc3MgaWYgeW91IGRvIGEgdmJs YW5rIHF1ZXJ5IGluCj4gPiA+ID4+Pj4+Pj4gYmV0d2VlbiB0aGUgd3JvbmcgYW5kIHRoZSByaWdo dCB2YmxhbmsgeW91J2xsIGdldCB0aGUgYm9ndXMgdmFsdWUuIE5vdAo+ID4gPiA+Pj4+Pj4+IHJl YWxseSBncmVhdCBmb3IgdXNlcnNwYWNlLgo+ID4gPiA+Pj4+Pj4+IC1EYW5pZWwKPiA+ID4gPj4+ Pj4+Cj4gPiA+ID4+Pj4+PiBJIHRoaW5rIHdlIGNhbGN1bGF0ZSB0aGUgdGltZXN0YW1wIGFuZCBz ZW5kIHRoZSB2YmxhbmsgZXZlbnQgYm90aCB3aXRoaW4KPiA+ID4gPj4+Pj4+IHRoZSBwYWdlZmxp cCBJUlEgaGFuZGxlciBzbyBjYWxjdWxhdGluZyB0aGUgcmlnaHQgcGFnZWZsaXAgdGltZXN0YW1w Cj4gPiA+ID4+Pj4+PiBvbmNlIGNvdWxkIHByb2JhYmx5IGJlIGRvbmUuIEknbSBub3Qgc3VyZSBp ZiBpdCdzIGVhc2llciB0aGFuIHByb3Bvc2luZwo+ID4gPiA+Pj4+Pj4gYSBsYXRlciBmbGlwIHRp bWUgd2l0aCBhbiBBUEkgbGlrZSB0aGlzIHRob3VnaC4KPiA+ID4gPj4+Pj4+Cj4gPiA+ID4+Pj4+ PiBUaGUgYWN0dWFsIHNjYW5vdXQgdGltZSBzaG91bGQgYmUga25vd24gZnJvbSB0aGUgcGFnZS1m bGlwIGhhbmRsZXIgc28KPiA+ID4gPj4+Pj4+IHRoZSBzZW1hbnRpY3MgZm9yIFZSUiBvbi9vZmYg cmVtYWluIHRoZSBzYW1lLiBUaGlzIGlzIGJlY2F1c2UgdGhlCj4gPiA+ID4+Pj4+PiBwYWdlLWZs aXAgdHJpZ2dlcnMgZW50ZXJpbmcgdGhlIGJhY2sgcG9yY2ggaWYgd2UncmUgaW4gdGhlIGV4dGVu ZGVkCj4gPiA+ID4+Pj4+PiBmcm9udCBwb3JjaC4KPiA+ID4gPj4+Pj4+Cj4gPiA+ID4+Pj4+PiBC dXQgc2Nhbm91dCB0aW1lIGZyb20gdmJsYW5rIGV2ZW50cyBmb3Igc29tZXRoaW5nIGxpa2UKPiA+ ID4gPj4+Pj4+IERSTV9JT0NUTF9XQUlUX1ZCTEFOSyBhcmUgZ29pbmcgdG8gYmUgd3JvbmcgaW4g bW9zdCBjYXNlcyBhbmQgYXJlIG9ubHkKPiA+ID4gPj4+Pj4+IHRyZWF0ZWQgYXMgZXN0aW1hdGVz LiBJZiB3ZSdyZSBpbiB0aGUgcmVndWxhciBmcm9udCBwb3JjaCB0aGVuIHRoZQo+ID4gPiA+Pj4+ Pj4gdGltaW5nIHRvIHNjYW5vdXQgaXMgYmFzZWQgb24gdGhlIGZpeGVkIGR1cmF0aW9uIGZyb250 IHBvcmNoIGZvciB0aGUKPiA+ID4gPj4+Pj4+IGN1cnJlbnQgbW9kZS4gSWYgd2UncmUgaW4gdGhl IGV4dGVuZGVkIGJhY2sgcG9yY2ggdGhlbiBpdCdzIHRlY2huaWNhbGx5Cj4gPiA+ID4+Pj4+PiBk cml2ZXIgZGVmaW5lZCBidXQgdGhlIG1vc3QgcmVhc29uYWJsZSBndWVzcyBpcyB0byBhc3N1bWUg dGhhdCB0aGUgZnJvbnQKPiA+ID4gPj4+Pj4+IHBvcmNoIGlzIGdvaW5nIHRvIGVuZCBhdCBhbnkg bW9tZW50LCBzbyBqdXN0IHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZQo+ID4gPiA+Pj4+Pj4gYmFj ayBwb3JjaCBmb3IgZ2V0dGluZyB0aGUgc2Nhbm91dCB0aW1lLgo+ID4gPiA+Pj4+Pj4KPiA+ID4g Pj4+Pj4+IFByb3Bvc2luZyB0aGUgbGF0ZSB0aW1lc3RhbXAgc2hvdWxkbid0IGFmZmVjdCB2Ymxh bmsgZXZlbnQgaW4gdGhlCj4gPiA+ID4+Pj4+PiBEUk1fSU9DVExfV0FJVF9WQkxBTksgY2FzZSBh bmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiB0aGUgcGFnZS1mbGlwCj4gPiA+ID4+Pj4+PiBldmVu dCBjYXNlLiBJJ20gbm90IHN1cmUgaWYgdGhhdCdzIHdoYXQncyBndWFyYW50ZWVkIHRvIGhhcHBl biB3aXRoIHRoaXMKPiA+ID4gPj4+Pj4+IHBhdGNoIHRob3VnaC4gVGhlcmUgZG9lc24ndCBzZWVt IHRvIGJlIGFueSBsb2NraW5nIG9uIGVpdGhlcgo+ID4gPiA+Pj4+Pj4gZGV2LT52YmxhbmtfdGlt ZV9sb2NrIG9yIHRoZSB2YmxhbmstPnNlcWxvY2sgc28gd2hpbGUgaXQncyBsaWtlbHkgdG8gZ2V0 Cj4gPiA+ID4+Pj4+PiB0aGUgc2FtZSB2YmxhbmsgZXZlbnQgYmFjayBhcyB0aGUgb25lIGp1c3Qg c3RvcmVkIEkgZG9uJ3QgdGhpbmsgaXQncwo+ID4gPiA+Pj4+Pj4gZ3VhcmFudGVlZC4KPiA+ID4g Pj4+Pj4KPiA+ID4gPj4+Pj4gVGhhdCdzIHRoZSBpbmNvbnNpc3RlbmN5IEkgbWVhbiB0byBoaWdo bGlnaHQgLSB0aGUgdGltZXN0YW1wIGZvciB0aGUKPiA+ID4gPj4+Pj4gc2FtZSBmcmFtZSBhcyBv YnNlcnZlZCB0aHJvdWdoIGZsaXAgY29tcGxldGUgYW5kIHRocm91Z2ggdGhlCj4gPiA+ID4+Pj4+ IHdhaXRfdmJsYW5rIGlvY3RsIGNhbiBkaWZmZXIuIFdoaWNoIHRoZXkgcmVhbGx5IHNob3VsZG4n dC4KPiA+ID4gPj4+Pj4KPiA+ID4gPj4+Pgo+ID4gPiA+Pj4+IElkZWFsbHkgdGhleSBzaG91bGRu J3QgZGlmZmVyLiBUaGUga2VybmVsIGRvY3MgZm9yIGRybV9jcnRjX3N0YXRlIHNheQo+ID4gPiA+ Pj4+IHRoYXQgdmJsYW5rIGFuZCBwYWdlZmxpcCB0aW1lc3RhbXBzIHNob3VsZCBhbHdheXMgbWF0 Y2guIEJ1dCB0aGVuIHRoZQo+ID4gPiA+Pj4+IGtlcm5lbCBkb2NzIGZvciAiVmFyaWFibGUgcmVm cmVzaCBwcm9wZXJ0aWVzIiBpbiBkcm1fY29ubmVjdG9yLmMgZm9yCj4gPiA+ID4+Pj4gdmJsYW5r IHRpbWVzdGFtcHMgd2VyZSBjaGFuZ2VkIGZvciB0aGUgVlJSIGltcGxlbWVudGF0aW9uIGluIExp bnV4Cj4gPiA+ID4+Pj4gNS4wLXJjIHRvIHJlZGVmaW5lIHRoZW0gd2hlbiBpbiBWUlIgbW9kZS4g VGhleSBhcmUgZGVmaW5lZCwgYnV0Cj4gPiA+ID4+Pj4gcHJvYmFibHkgcmF0aGVyIHVzZWxlc3Mg Zm9yIGFueSBwcmFjdGljYWwgcHVycG9zZSwgbGlrZSB0aGlzOgo+ID4gPiA+Pj4+Cj4gPiA+ID4+ Pj4gIlRoZSBzZW1hbnRpY3MgZm9yIHRoZSB2ZXJ0aWNhbCBibGFuayB0aW1lc3RhbXAgZGlmZmVy IHdoZW4KPiA+ID4gPj4+PiB2YXJpYWJsZSByZWZyZXNoIHJhdGUgaXMgYWN0aXZlLiBUaGUgdmVy dGljYWwgYmxhbmsgdGltZXN0YW1wCj4gPiA+ID4+Pj4gaXMgZGVmaW5lZCB0byBiZSBhbiBlc3Rp bWF0ZSB1c2luZyB0aGUgY3VycmVudCBtb2RlJ3MgZml4ZWQKPiA+ID4gPj4+PiByZWZyZXNoIHJh dGUgdGltaW5ncy4gVGhlIHNlbWFudGljcyBmb3IgdGhlIHBhZ2UtZmxpcCBldmVudAo+ID4gPiA+ Pj4+IHRpbWVzdGFtcCByZW1haW4gdGhlIHNhbWUuIgo+ID4gPiA+Pj4KPiA+ID4gPj4+IFVoIEkg bWlzc2VkIHRoYXQuIFRoYXQgc291bmRzIGxpa2Ugbm9uc2Vuc2UgdGJoLgo+ID4gPiA+Pj4KPiA+ ID4gPj4+PiBTbyBvdXIgZG9jcyBjb250cmFkaWN0IGVhY2ggb3RoZXIgYXMgb2YgTGludXggNS4w LXJjLiBDZXJ0YWlubHkgaGF2aW5nCj4gPiA+ID4+Pj4gdXNlZnVsIHZibGFuayB0aW1ldGFtcHMg d291bGQgYmUgdXNlZnVsLgo+ID4gPiA+Pj4KPiA+ID4gPj4+IFl1cCwgaW1vIHZibGFuayBzaG91 bGQgc3RpbGwgbWF0Y2ggcGFnZV9mbGlwLiBPdGhlcndpc2UgSSBleHBlY3QgYSBsb3Qgb2YKPiA+ ID4gPj4+IGhpbGFyaXR5IHdpbGwgZW5zdWUuCj4gPiA+ID4+Cj4gPiA+ID4+IEkgd291bGQgaW1h Z2luZSB5b3Ugd291bGQgc2VlIG1vcmUgYnJlYWthZ2UgYnkgY2hhbmdpbmcgdXNlcnNwYWNlCj4g PiA+ID4+IGV4cGVjdGF0aW9ucyBmb3Igd2hlbiB0aGUgZXZlbnQgaXMgYWN0dWFsbHkgcmVjZWl2 ZWQuCj4gPiA+ID4+Cj4gPiA+ID4+IFRoZSBJT0NUTCBpcyAid2FpdCBmb3IgdmJsYW5rIiwgYnV0 IGlmIHdlIHN0YXJ0IHNlbmRpbmcgdGhlIGV2ZW50IG5lYXIKPiA+ID4gPj4gdGhlIGVuZCBvZiB2 YmxhbmsgaXQgYmVjb21lcyBtb3JlICJ3YWl0IGZvciBwYWdlZmxpcCIgKG5lYXIgc2Nhbm91dCkg b3IKPiA+ID4gPj4gIndhaXQgMTVtcyB3aGlsZSB0aGUgVlJSIGZyb250IHBvcmNoIHRpbWVzIG91 dCBhbmQgY2F1c2VzIGZsaWNrZXJpbmciLgo+ID4gPiA+Pgo+ID4gPiA+PiBJIGRvbid0IHNwZWFr IGZvciBhbGwgdXNlcnNwYWNlIGJ1dCBpdCBzZWVtcyBtb3JlIHVzZWZ1bCB0byBtZSB0byBoYXZl Cj4gPiA+ID4+IHRoZSBldmVudCBzZW50IGF0IHRoZSBzdGFydCBvZiB2YmxhbmsuCj4gPiA+ID4K PiA+ID4gPiBNYXliZSB3ZSBuZWVkIHRvIHRoaW5ncy4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUg dGltZXN0YW1wZSBpcyBkZWZpbmVkCj4gPiA+ID4gdG8gYmUgY29ycmVjdCBmb3Igc3RhcnQtb2Yt ZnJhbWUuIEFuZCByaWdodCBub3cgdGhlIGFtZGdwdQo+ID4gPiA+IGltcGxlbWVudGF0aW9uIG9m IFZSUiBkb2Vzbid0IGV2ZW4gZ2l2ZSBhbiBhY2N1cmF0ZSB0aW1lc3RhbXBlIGZvciB0aGUKPiA+ ID4gPiBmbGlwLCBzbyBtb3N0IGxpa2VseSBubyBvbmUgeWV0IHRob3VnaHQgYWJvdXQgdGhpcyBw cm9wZXJseS4KPiA+ID4gPiBEZWZpbml0ZWx5IG5vIHRlc3RjYXNlcyAob3IgaXQgd291bGQgaGF2 ZSBiZWVuIGNhdWdodCksIHdoZXJlYXMgd2UKPiA+ID4gPiBoYXZlIHRvbnMgb2YgdGVzdGNhc2Vz IGZvciBmaXhlZCByZWZyZXNoLgo+ID4gPgo+ID4gPiBJIGFncmVlIHRoYXQgaXQgd291bGQgYmUg Z29vZCB0byBoYXZlIGRvY3VtZW50YXRpb24gZm9yIHdoYXQgd2FpdGluZyBmb3IKPiA+ID4gdmJs YW5rIGlzIHN1cHBvc2VkIHRvIG1lYW4gaGVyZS4gVGhlcmUncyBhIGJpZyBkaWZmZXJlbmNlIGJl dHdlZW4KPiA+ID4gZ2V0dGluZyB0aGUgZXZlbnQgYXQgdGhlIHN0YXJ0IG9mIHZzeW5jIHZzIHRo ZSBzdGFydCBvZiB0aGUgYmFjayBwb3JjaAo+ID4gPiBuZWFyIHRoZSBlbmQgb2YgaXQuCj4gPiA+ Cj4gPiA+ID4KPiA+ID4gPj4gVlJSIGluIGl0cyBjdXJyZW50IHN0YXRlIGlzIHVzZWZ1bCBmb3Ig YXBwbGljYXRpb25zIHRoYXQgYXJlbid0Cj4gPiA+ID4+IGNvbXBsZXRlbHkgdGltaW5nIHNlbnNp dGl2ZSAobGlrZSBtb3N0IGdhbWVzKS4gVGhpcyBpcyBiZWNhdXNlIHRoZQo+ID4gPiA+PiBkcml2 ZXIgaGFzIGZyZWUgcmVpZ24gaW4gcmVzdHJpY3RpbmcgdGhlIG1pbi9tYXggYm91bmRzIG9mIHRo ZSByYW5nZSAtCj4gPiA+ID4+IGFsbG93aW5nIGZvciBlbmhhbmNlbWVudHMgbGlrZSBsb3cgZnJh bWVyYXRlIGNvbXBlbnNhdGlvbiAvIEJUUi4KPiA+ID4gPj4KPiA+ID4gPj4gRm9yIGEgY29uY3Jl dGUgZXhhbXBsZSwgaW1hZ2luZSB5b3UncmUgbm90IGRvaW5nIGZyb250YnVmZmVyIHJlbmRlcmlu Zwo+ID4gPiA+PiBidXQgeW91J3JlIHN0aWxsIHRyeWluZyB0byB0YXJnZXQgYSBzcGVjaWZpYyBz Y2Fub3V0IHRpbWUuIFNvIGV2ZW4gaWYgd2UKPiA+ID4gPj4gd2VyZSB0byBzZW5kIHRoZSB2Ymxh bmsgZXZlbnQgYXQgdnBvcyAwIHlvdSdkIGdldCBhbiBhY2N1cmF0ZSBzY2Fub3V0Cj4gPiA+ID4+ IHRpbWVzdGFtcCBmb3IgdGhlIG5leHQgc2Nhbm91dCBhZnRlciB0aGUgdmJhY2sgcG9yY2ggZW5k cy4gWW91J3JlIG5vdAo+ID4gPiA+PiBnb2luZyB0byBiZSBkb2luZyBhbnkgcmVuZGVyaW5nIG9y IHByZXBhcmF0aW9uIGluIHRoaXMgdGltZSBiZWNhdXNlIGl0J3MKPiA+ID4gPj4gc2ltcGx5IHRv byBzaG9ydC4gU28geW91J2QgdGFyZ2V0IHRoZSBzY2Fub3V0IHBlcmlvZCBhZnRlciB0aGlzIG9u ZSwKPiA+ID4gPj4gd2hpY2ggeW91J2QgbmVlZCB0byBjYWxjdWxhdGUgc29tZWhvdyBpbiB1c2Vy c3BhY2UuIFRha2luZyB0aGUgZGVsdGFzCj4gPiA+ID4+IGJldHdlZW4gdHdvIHZibGFuayBldmVu dHMgaXMgY29tcGxldGVseSB1c2VsZXNzIGhlcmUgYmVjYXVzZSB5b3UnbGwgZ2V0Cj4gPiA+ID4+ IGJhY2sgdGhlIHZyciBtaW4gcmVmcmVzaCBkZWx0YS4gU28geW91IGNhbiB0YWtlIHlvdXIgc291 cmNlIGNvbnRlbnQgcmF0ZQo+ID4gPiA+PiBvciBzb21lIGZpeGVkIHJhdGUgeW91J2QgbGlrZSB0 byB0YXJnZXQgd2l0aGluIHRoZSByYW5nZSBidXQgZXZlbiB0aGVuCj4gPiA+ID4+IHlvdSdyZSBz dGlsbCBub3QgZ3VhcmFudGVlZCB0byBoYXZlIHRoYXQgZmxpcCBlbmQgdXAgYXQgdGhhdCBzY2Fu b3V0IHRpbWUuCj4gPiA+ID4+Cj4gPiA+ID4+IFRoZSBjdXJyZW50IHNvbHV0aW9uIGlzIHRvIGp1 c3QgcmV0dXJuIHRoZSBzY2Fub3V0IHBvcyBhdCB2cnIgbWF4LCBvcgo+ID4gPiA+PiB0aGUgY3Vy cmVudCBtb2RlJ3MgZml4ZWQgcmVmcmVzaCByYXRlLiBJZiB5b3UncmUgZmxpcCBiZWZvcmUgdGhl IGZpeGVkCj4gPiA+ID4+IGR1cmF0aW9uIGZyb250IHBvcmNoIGVuZHMgdGhlbiB0aGF0IHNjYW5v dXQgdGltZSB3aWxsIGxpa2VseSBiZSBhY2N1cmF0ZQo+ID4gPiA+PiBzaW5jZSB5b3UgY2FuJ3Qg ZmxpcCBmYXN0ZXIgdGhhbiB2cnIgbWF4Lgo+ID4gPiA+Pgo+ID4gPiA+PiBJcyB0aGVyZSBhY3R1 YWxseSB1c2Vyc3BhY2UgdGhhdCBjYXJlcyB0aGF0IHRoZXNlIHRpbWVzdGFtcHMgbmVlZCB0bwo+ ID4gPiA+PiBtYXRjaD8gTGlrZSBzYWlkIGJlbG93LCBpdCBzZWVtcyB0aGF0IHdhaXQgZm9yIHZi bGFuayBpcyBtb3N0bHkgYWJvdXQKPiA+ID4gPj4gc2NoZWR1bGluZyBhbmQgZm9yIHRoYXQgSSB0 aGluayBoYXZpbmcgdGhlIGV2ZW50IHNlbnQgYmFjayBhdCB0aGUgc3RhcnQKPiA+ID4gPj4gb2Yg dmJsYW5rIGlzIG1vcmUgaW1wb3J0YW50IGhlcmUuCj4gPiA+ID4KPiA+ID4gPiBUaGVyZSdzIDMg Y2FzZXM6Cj4gPiA+ID4gLSBEUkkzOiBXYWl0cyBmb3IgdmJsYW5rIGZvciBmcm9udGJ1ZmZlciBi bGl0cy4gSWYgeW91IGNvbWJpbmUgdGhhdAo+ID4gPiA+IHdpdGggVlJSIHRoZW4gaW1vIHlvdSBk ZXNlcnZlIHRvIGtlZXAgYWxsIHRoZSBwaWVjZXMuCj4gPiA+ID4gLSBnZW5lcmljIGNvbXBvc2l0 b3JzLiBVc2UgVlJSIGZvciBzY2hlZHVsaW5nLCBleHBlY3QgdGhhdCBhIHBhZ2VfZmxpcAo+ID4g PiA+IHF1ZXVlZCBpbW1lZGlhdGVseSBhZnRlciBhIHBhZ2VfZmxpcCB3aWxsIGhpdCB0aGUgbmV4 dCBmcmFtZSwgYW5kIG5vdAo+ID4gPiA+IHRoZSBjdXJyZW50IGZyYW1lLiBUaGV5IGFsc28gZXhw ZWN0IHRoYXQgdGhpcyB3aWxsIG5vdCBnaXZlIHlvdSB0aGUKPiA+ID4gPiBzbG93ZXN0IHBvc3Np YmxlIHJlZnJlc2ggcmF0ZSwgYnV0IEkgZ3Vlc3MgVlJSIHBsdXMgZnJhbWUgc2NoZWR1bGluZwo+ ID4gPiA+IGlzIGN1cnJlbnRseSBvdXQgb2Ygc2NvcGUuIEl0J3Mga2luZGEganVzdCBmb3IgYXMt ZmFzdC1hcy1wb3NzaWJsZQo+ID4gPiA+IGdhbWVzLgo+ID4gPiA+IC0gZmxpcCB0aW1lc3RhbXAu IEN1cnJlbnRseSB0aGUgZW50aXJlIGNvZGViYXNlIGFzc3VtZXMgdGhhdCB2YmxhbmsgdHMKPiA+ ID4gPiA9IGZsaXAgdHMuIEkgZG9uJ3QgcmVhbGx5IHNlZSBhIHBvaW50IGluIGJyZWFraW5nIHRo YXQuCj4gPiA+ID4gLSBiZXR0ZXIgc2NoZWR1bGluZyBvZiBWUlI6IHdoYXQgY29tcG9zaXRvcnMg YWN0dWFsbHkgZG8gaXNuJ3Qgd2FpdAo+ID4gPiA+IGZvciB0aGUgdmJsYW5rLCB0aGF0IG9ubHkg bGF0Y2hlcyB0aGUgcGFnZV9mbGlwLiBUaGV5IHNldCB1cCBhCj4gPiA+ID4gaHJ0aW1lciwgd2l0 aCBhIGZpeGVkL2F1dG8tdHVuZWQgaGVhZC1zdGFydCwgZnJvbSB3aGljaCB0aGV5IHN0YXJ0Cj4g PiA+ID4gdGhlaXIgcmVuZGVyaW5nLiBUaGUgc2FtZSBjb3VsZCBiZSBkb25lIGZvciBWUlIsIGlm IHdlIGV4cG9zZSB0aGUKPiA+ID4gPiBlYXJsaWVzdC9sYXRlc3QgdmJsYW5rIGVuZCB0aW1lcyAo YW5kIGhvdyBtdWNoIHRoZXkgY2FuIHNoaWZ0KS4gdmJsYW5rCj4gPiA+ID4gaW9jdGwgaXMgb25s eSB1c2VkIGZvciBzeW5jaW5nIHRoYXQgdXAgYW5kIG1ha2luZyBzdXJlIHdlJ3JlIGhpdHRpbmcK PiA+ID4gPiB0aGUgcmlnaHQgZnJhbWUuIFRoaXMgaXMgYWxsIGZvciBwYWdlZmxpcHBpbmcgY29t cG9zaXRvcnMuIFRoaXMgaXMKPiA+ID4gPiBhbHNvIHdoYXQgdGhleSdsbCBwcm9iYWJseSBrZWVw IGRvaW5nIHdoZW4gd2UgZ2l2ZSB0aGVtIGEgZGVzaXJlZCBmbGlwCj4gPiA+ID4gdGltZSAoaW5z dGVhZCBvZiBhIHRhcmdldCBmcmFtZSksIHRoZXkgc3RpbGwgbmVlZCBhbiBocnRpbWVyIHRvIGZp cmUgYQo+ID4gPiA+IGxpdHRsZSBiaXQgYWhlYWQgdG8gZ2V0IHRoZSBmcmFtZSByZW5kZXJlZC4K PiA+ID4gPgo+ID4gPiA+IFNvIHRha2luZyBhbGwgdG9nZXRoZXIsIHdlIGhhdmUgMiB1c2UtY2Fz ZXMgSSB0aGluazoKPiA+ID4gPiAtIGZyb250YnVmZmVyIHJlbmRlcmluZy4gS2luZGEgd2FudHMg dmJsYW5rIGV2ZW50IHRvIGZpcmUgYXQgdGhlCj4gPiA+ID4gYmVnaW5uaW5nIG9mIHZibGFuay4g V29uJ3QgZXZlciBkbyBWUlIKPiA+ID4gPiAtIHBhZ2VmbGlwcGluZyBjb21wb3NpdG9ycy4gRG9u J3QgY2FyZSBhYm91dCB0aGUgdmJsYW5rIGV2ZW50LCBlaXRoZXIKPiA+ID4gPiB0aGV5IGhhdmUg YW4gaHJ0aW1lciB0aW1lciAod2hpY2ggZ2V0cyBzeW5jZWQgd2l0aCB0aGUgdmJsYW5rIGlvY3Rs KSwKPiA+ID4gPiBvciBqdXN0IGZsaXAgYXMgZmFzdCBhcyBwb3NzaWJsZS4gVGhleSBkb24ndCBj YXJlIG9uZSBiaXQgd2hlbiB0aGUKPiA+ID4gPiB2YmxhbmsgZXZlbnQgaGFwcGVucywgYXMgbG9u ZyBhcyBhIHBhZ2VmbGlwIHNjaGVkdWxlZCBpbW1lZGlhdGVseQo+ID4gPiA+IGFmdGVyIHRoZSBl dmVudCBzaG93cyB1cCBvbmx5IGhpdHMgdGhlIG5leHQgZnJhbWUgKHdoaWNoIGlzIHRoZSBkZWxh eQo+ID4gPiA+IGNvZGUgdGhhdCBjdXJyZW50bHkgc3RyZXRjaGVzIHZibGFuayB1bmVjZXNzYXJp bHkgd2l0aCBWUlIgaWYgeW91J3JlCj4gPiA+ID4gYWxyZWFkeSBhIGJpdCBsYXRlKS4KPiA+ID4g Pgo+ID4gPiA+IE1ha2luZyBzdXJlIHRoYXQgdmJsYW5rIGFuZCBwYWdlIGZsaXAgdGltZXN0YW1w IG1hdGNoIHRoZSByZWFsCj4gPiA+ID4gdXNlcnNwYWNlIHNlZW1zIGxpa2UgdGhlIGNsZWFuZXN0 IHNlbWFudGljcywgYW5kIHRoZSBsZWFzdCBzdXJwcmlzaW5nCj4gPiA+ID4gdG8gdXNlcnNwYWNl LiBFLmcuIHdoYXQgaGFwcGVucyBpZiB5b3UgaW1wbGVtZW50IFZSUiBpbiBhIGNvbXBvc2l0b3Is Cj4gPiA+ID4gYnV0IHRoZW4gdHVuZSB5b3VyIGhydGltZXIgd2l0aGluIHRoZSB2YmxhbmssIHdo ZW4gdGhlIHZibGFuawo+ID4gPiA+IHRpbWVzdGFtcCBpcyB0b3RhbGx5IG5vdCByZWZsZWN0aW5n IHlvdXIgcmVhbCBwYWdlZmxpcD8gSSBqdXN0IGRvbid0Cj4gPiA+ID4gc2VlIHdoYXQncyB0aGUg dXBzaWRlIG9mIGhhdmluZyBhIHZibGFuayB0aW1lc3RhbXAgdGhhdCdzIG5vdCBhY3R1YWxseQo+ ID4gPiA+IHJlZmxlY3RpbmcgdGhlIHJlYWwgZmxpcC4KPiA+ID4gPgo+ID4gPiA+IEFsc28sIGlm IHlvdXIgYXBwIHdhbnRzIHRoZSBzdGFydCBvZiB2YmxhbmssIHRoYXQncyB2ZXJ5IGVhc3kgdG8K PiA+ID4gPiBjb21wdXRlOiBKdXN0IGFkZCB0aGUgc2Nhbm91dCB0aW1lIHRvIHRoZSBsYXN0IHZi bGFuayB0aW1lc3RhbXAuCj4gPiA+ID4gRmlndXJpbmcgb3V0IHRoZSBzdGFydCBvZiBmcmFtZSBv dG9oIGlzbid0IGRvYWJsZSBpZiB5b3UgY2FuJ3QgcXVlcnksCj4gPiA+ID4gYW5kIGNvbnN0YW50 bHkgcGFnZWZsaXBwaW5nIGp1c3QgdG8gaGF2ZSBhbiBhY2N1cmF0ZSBzdGFydC1vZi1mcmFtZQo+ ID4gPiA+IChmb3IgdHVuaW5nIHlvdXIgaHJ0aW1lcikgc2VlbXMgcmF0aGVyIHdhc3RlZnVsIC0g aXQgb3V0cmlnaHQgZGVmZWF0cwo+ID4gPiA+IHNvbWUgb2YgdGhlIHVzZS1jYXNlcyBmb3IgVlJS Lgo+ID4gPiA+Cj4gPiA+ID4gU28gd2hhdCBiZW5lZml0IGRvIHlvdSBzZWUgaW4gaGF2aW5nIHZi bGFuayB0cyBhbmQgcGFnZWZsaXAgdHMgbm90Cj4gPiA+ID4gYWdyZWU/IFdoYXQncyB0aGUgdXNl LWNhc2UgdGhpcyBzb2x2ZXMgLSBhc2lkZSBmcm9tICJsZXNzIHR5cGluZyIgOi0pCj4gPiA+ID4g SWYgdGhlIG9ubHkgdXNlLWNhc2UgaXMgVlJSIGZvciBmcm9udGJ1ZmZlciByZW5kZXJpbmcsIHRo ZW4gdGhhdAo+ID4gPiA+IGRvZXNuJ3QgZXZlbiB3b3JrIHJpZ2h0IG5vdyAoYXNpZGUgZnJvbSB0 aGF0IEkgdGhpbmsgaXQncyBzb21ldGhpbmcgd2UKPiA+ID4gPiBzaG91bGRuJ3Qgc3VwcG9ydCBh bmQgZGVmaW5pdGVseSBub3QgZW5jb3VyYWdlKS4KPiA+ID4gPiAtRGFuaWVsCj4gPiA+Cj4gPiA+ IEknbSBhY3R1YWxseSBmaW5lIHdpdGggbW92aW5nIHRoZSB2YmxhbmsgZXZlbnQgYmFjayB0byB0 aGUgYmFjayBwb3JjaAo+ID4gPiBidXQgSSdkIGp1c3QgYmUgd29ycmllZCBhYm91dCB1c2Vyc3Bh Y2UgYnJlYWthZ2VzIHRoYXQgcmVsaWVkIG9uIGl0Cj4gPiA+IGhhcHBlbmluZyB0aGUgb3RoZXIg d2F5Lgo+ID4gPgo+ID4gPiBJdCdkIGJlIGVzcGVjaWFsbHkgY29uZnVzaW5nIGlmIHRoZSBWTElO RSB3YXMgZGlmZmVyZW50IGZvciBmaXhlZCB2cwo+ID4gPiB2YXJpYWJsZSByZWZyZXNoLiBJIHdv dWxkbid0IHdhbnQgdG8gbW92ZSBpdCB0byB2cG9zIDAgdW5sZXNzIHRoZSBldmVudAo+ID4gPiBp cyBhbHNvIGdldHRpbmcgbW92ZWQgZm9yIGZpeGVkIHJlZnJlc2ggYXMgd2VsbC4KPiA+Cj4gPiBU aGF0IHdvdWxkIGJyZWFrIERSSTMuIFNvIHdlIGNhbiBwaWNrIGJldHdlZW4gdHdvIG9wdGlvbnM6 Cj4gPiAtIGFsd2F5cyBzZW5kIG91dCB0aGUgdmJsYW5rIGVhcmx5LCBhY2NlcHQgdGhhdCB2Ymxh bmsgdGltZXN0YW1wcyBjaGFuZ2UuCj4gPiAtIGZvciBWUlIgb25seSwgc2VuZCBvdXQgdGhlIHZi bGFuayBvbmx5IHdoZW4gd2Uga25vdyB0aGUgY29ycmVjdAo+ID4gdGltZXN0YW1wLiBGb3Igbm9u LVZSUiB3ZSBoYXZlIHRvIHNlbmQgb3V0IHRoZSB2YmxhbmsgZWFybHksIGJlY2F1c2UKPiA+IHRo YXQncyBzb21ld2hhdCBiZWNvbWUgYXBpIChidXQgbm90IGFsbCBkcml2ZXJzIGRvIGl0IHRoYXQg d2F5LCBzbwo+ID4gaXQncyBhYm91dCBhcyBob3BlbGVzcyBhcyBmcm9udGJ1ZmZlciByZW5kZXJp bmcgaW4gZ2VuZXJhbCkuCj4gPgo+ID4gSSBzdGlsbCBkb24ndCBzZWUgdGhlIGJlbmVmaXQgb2Yg dGhlIGZpcnN0IG9wdGlvbiwgb3IgdGhlIGV4YWN0IHVzZSBjYXNlLgo+ID4KPiAKPiBTdGlsbCBo YXZlbid0IHNsZXB0IHNvIGkgZG9uJ3Qga25vdyBpZiBpJ20gYWRkaW5nIGFueXRoaW5nIHRvIHRo ZQo+IGRpc2N1c3Npb24gdGhhdCBEYW5pZWwgaGFzbid0IHN0YXRlZCBhbHJlYWR5LCBidXQgYW55 d2F5Ogo+IAo+IEkgdGhpbmsgaSBhZ3JlZSB3aXRoIERhbmllbCBvbiB0aGlzLiBIYXZpbmcgYSB2 YmxhbmsgdHMgdGhhdCB0cnVseQo+IHJlZmxlY3RzIHRoZSBlbmQgb2YgbGFzdCB2Ymxhbmsvc3Rh cnQgb2Ygc2Nhbm91dCBzaG91bGQgbWFrZQo+IHRpbWUtYmFzZWQgc2NoZWR1bGluZyBlYXNpZXIu IFRoZW4gd2Uga25vdyB3aGVuIHNjYW5vdXQgb2YgdGhlIGFjdGl2ZQo+IGZyYW1lIHN0YXJ0cyBh bmQgY2FsY3VsYXRlIGZyb20ga25vd24gZml4ZWQgc2Nhbm91dCBkdXJhdGlvbiB3aGVuIG5leHQK PiB2Ymxhbmsgc3RhcnRzIGFuZCB3aGVuIGl0IGVuZHMgdGhlIGxhdGVzdC4gT24gWDExIHlvdSBj YW4KPiBnbFhHZXRTeW5jVmFsdWVzT01MKCkgcXVlcnkgdGhhdCBzdGFydCB0aW1lIHRvIHN5bmMg dXAgYSBjb21wb3NpdG9ycwo+IHVwZGF0ZSBjeWNsZSBvciBzdGFydCBvZiBhbiBhbmltYXRpb24g b3IgdGltZWQgcHJlc2VudGF0aW9uIHNlcXVlbmNlCj4gd2l0aCB2YmxhbmsuIEUuZy4sIFdheWxh bmRzIFdlc3RvbiBkb2VzIHRoaXMgd2hlbiBzd2l0Y2hpbmcgZnJvbSBpZGxlCj4gZGVza3RvcCB0 byByZWRyYXcgbG9vcC4gQSBtb3ZpZSBwbGF5ZXIgb3IgbXkgb3duIHNvZnR3YXJlIGNvdWxkIHVz ZQo+IHRoaXMgaW5mbyBpbiB0aGUgc2FtZSB3YXksIHdoZXJlYXMgaSBkb24ndCBzZWUgdGhlIGN1 cnJlbnQgdmJsYW5rCj4gdGltZXN0YW1zIGJlaW5nIHVzZWZ1bC4gSWYgeW91IGdldCB0aGUgY3Vy cmVudCB2YmxhbmsgZXZlbnQgd2l0aAo+IHRpbWVzdGFtcCBhdCBzdGFydCBvZiB2YmxhbmsgaWUu IGEgYml0IGludG8gdGhlIHNob3J0IGZpeGVkIGR1cmF0aW9uCj4gZnJvbnQgcG9yY2gsIHlvdSdk IGhhdmUgdG8gcmVuZGVyIGFuZCBmbGlwIHdpdGhpbiB3aGF0IHNtYWxsIGFtb3VudCBvZgo+IHRp bWUgaXMgbGVmdCB1bnRpIHRoZSBlbmQgb2YgdGhlIGZpeGVkIGZyb250LXBvcmNoLCBiZWNhdXNl IG9uY2UgeW91Cj4gZ2V0IGludG8gdmFyaWFibGUgZXh0ZW5kZWQgZnJvbnQtcG9yY2ggeW91ciB2 YmxhbmsgdGltZXN0YW1wIGlzCj4gYWxyZWFkeSBtZWFuaW5nbGVzcy4KPiAKPiBJIGFsc28gdGhp bmsgaWYgd2Ugd2FudCB0byBpbXBsZW1lbnQgc29tZXRoaW5nIGxpa2UgdGhlIGFiaWxpdHkgdG8K PiBmbGlwIGZvciBhIHNwZWNpZmljIHRhcmdldCBzY2Fub3V0IHRpbWUgLS0gd2hpY2ggaSdkIHJl YWxseSBsaWtlIHRvCj4gaGF2ZSAtLSBoYXZpbmcgdGhlIHRydWUgZW5kIG9mIGxhc3QgdmJsYW5r IGdpdmVzIHVzIGEgYmFzZWxpbmUKPiB0aW1lc3RhbXAgdGhhdCBpcyBlYXNpZXIgdG8gcmVhc29u IGFib3V0IGluc2lkZSB0aGUga2VybmVsLCBzaW1pbGFyIHRvCj4gaG93IGEgY29tcG9zaXRvciBj YW4gcmVhc29uL2FkanVzdCB0byB3aGVuIHRvIHN0YXJ0IGNvbXBvc2luZyB0aGUgbmV4dAo+IGZy YW1lIG9yIHN1Ym1pdHRpbmcgYSBmbGlwIHRvIGhpdCBzb21lIGNvbnNpc3RlbnQgZnJhbWVyYXRl LCBvciBpbgo+IHR1cm4gdG8gYmV0dGVyIG9iZXkgYSBwcmVzZW50YXRpb24gcmVxdWVzdCBvZiBh IGNsaWVudCBmb3IgYSBzcGVjaWZpYwo+IHRhcmdldCB0aW1lLgo+IAo+IEF0IHRoZSBzYW1lIHRp bWUgd2UgbmVlZCB0byBrZWVwIGN1cnJlbnQgYmVoYXZpb3VyIGZvciBub24tVlJSIG1vZGUsCj4g d2l0aCBlYXJseSB2YmxhbmtzLCBzbyBhbGwgdGhlIHRhcmdldF9tc2MgdmJsYW5rIGNvdW50IGJh c2VkCj4gc2NoZWR1bGluZyBrZWVwcyB3b3JraW5nLiBJIGRvbid0IHRoaW5rIGNsaWVudHMgdGhh dCBhcmUgd3JpdHRlbiB0bwo+IHVzZSBWUlIgc2hvdWxkIGV4cGVjdCBleGFjdGx5IHRoZSBzYW1l IHRpbWluZyBiZWhhdmlvdXIgd3J0LiB3aGVuCj4gdmJsYW5rIGV2ZW50cyBnZXQgc2VudCBvciB0 aW1lc3RhbXBzIHVwZGF0ZWQuIEkgY2VydGFpbmx5IGV4cGVjdCB0bwo+IGhhdmUgc2VwYXJhdGUg Y29kZS1wYXRocyBpbiBteSBhcHAgZm9yIG9wdGltYWwgVlJSIHZzLiBub24tVlJSCj4gcHJlc2Vu dGF0aW9uIHNjaGVkdWxpbmcsIGEgY29tcG9zaXRvciBvciBtb3ZpZSBwbGF5ZXIgbWlnaHQgYWRh cHQgaW4KPiB0aGUgc2FtZSB3YXksIGFuZCBmdWxsc2NyZWVuIGFwcHMgY2FuIG9wdC1vdXQgb2Yg VlJSIGlmIHRoZXkgd2FudC4KPiAKPiBDbGllbnRzIGp1c3QgbmVlZCB0byBrbm93IHdoYXQgdGhl IGJlaGF2aW9yIGlzIGluIFZSUiBtb2RlLiBJIHdvbmRlcgo+IHdoYXQgd2Ugc2hvdWxkIGRvIGZv ciB0aGUga2VybmVsIGRvY3MgZm9yIExpbnV4IDUuMC1yYz8gSSBhc3N1bWUgd2UKPiB3b24ndCBo YXZlIHRoZSB0aW1lIHRvIGZpeCB0aGlzIGFsbCBiZWZvcmUgcmVsZWFzZSwgd291bGQgaXQgbWFr ZQo+IHNlbnNlIHRvIGhhdmUgc29tZSBrZXJuZWwtZG9jcyB1cGRhdGVzIHZpYSBkcm0tZml4ZXMg dGhhdCBkZWNsYXJlIHRoZQo+IHZibGFuay9wYWdlZmxpcCB0aW1lc3RhbXBzIGFzICJ1bmRlZmlu ZWQiLyJub3QgdG8gYmUgcmVsaWVkCj4gb24iLyJzdWJqZWN0IHRvIGZ1dHVyZSBjaGFuZ2UiIGZv ciB0aGlzIHJlbGVhc2UgLSBlc3NlbnRpYWxseSBkZWNsYXJlCj4gdmJsYW5rIHRpbWVzdGFtcHMg YXMgdW5zdGFibGUgYXBpIGZvciB0aGUgbW9tZW50LCBzbyBub2JvZHkgcmVsaWVzIG9uCj4gdGhl IGN1cnJlbnQgcXVpdGUgYnJva2VuIHRpbWVzdGFtcCBiZWhhdmlvdXI/Cj4gCj4gSSBkbyBub3cg aGF2ZSBoYWNrZWQgdXAgcHJvb2Ytb2YtY29uY2VwdCBwYXRjaGVzIGhlcmUgdGhhdCBhZnRlcgo+ IHRvcnR1cmluZyB0aGVtIGZvciBhIGZldyBob3VycyB3aXRoIG15IG93biB0ZXN0cyBub3cgc2Vl bSB0byBiZSBhYmxlCj4gdG8gY2FsY3VsYXRlIGNvcnJlY3QgcGFnZWZsaXAgdGltZXN0YW1wcyBy ZWdhcmRsZXNzIHdoaWNoIG9mIHRoZSB0d28KPiBvcHRpb25zIHdlIGNob29zZSwgYnV0IHRoZXkg bmVlZCByZWZpbmVtZW50L2NsZWFudXAvcmViYXNpbmcgb250bwo+IHNvbWV0aGlnbiBlbHNlIHRo YW4gTGludXggNS4wLXJjNSwgYW5kIGhlbHAgZnJvbSBOaWNob2xhcywgYmVjYXVzZSBpCj4gdGVu ZCB0byBnZXQgbG9zdCBpbiBhbGwgdGhlIGluZGlyZWN0aW9ucyBhbmQgZmlsZSBoaWVyYXJjaHkg aW5zaWRlIHRoZQo+IERpc3BsYXlDb3JlIGNvZGUgZXRjLiwgYW5kIHByb2JhYmx5IGFsc28gYSBm ZXcga2lua3Mgd29ya2VkIG91dC4gQW5kCj4gc2VlIGlmIHNoaWZ0aW5nIHRoZSB2YmxhbmsgaXJx IGhhbmRsaW5nIGRvZXNuJ3QgY2F1c2Ugb3RoZXIgd2VpcmQKPiBpbnRlcmFjdGlvbnM/IEkgaGF2 ZW4ndCBsb29rZWQgaG93IE5pY2hvbGFzIGJlbG93LXRoZS1yYW5nZS9mcmFtZXJhdGUKPiBjb21w ZW5zYXRpb24gd29ya3MgaW4gZGV0YWlsIGFuZCBpZiBpdCBtYXR0ZXIgdGhhdCBpdCBoYXBwZW5z IGF0IHN0YXJ0Cj4gb2YgZnJvbnQtcG9yY2guIEkgY2FuIG9ubHkgc2F5IHRoYXQgaXQgZG9lc24n dCBzZWVtIHRvIGludGVyZmVyZSB3aXRoCj4gY29ycmVjdCB0aW1lc3RhbXBpbmcgaWYgaSBydW4g d2l0aCBmcmFtZXJhdGVzIGludGVudGlvbmFsbHkgYmVsb3cKPiB2cnItbWluLCBhcyBmYXIgYXMg bXkgbGltaXRlZCB0ZXN0aW5nIGdvZXMuIEFub3RoZXIgdGhpbmcgdGhhdCBtYXkgYmUKPiBwcm9i bGVtYXRpYyBpcyBkaXNhYmxpbmcvcmVlbmFibGluZyB2YmxhbmsgZHVyaW5nIGlkbGUgdGltZXMs IGdpdmVuCj4gdGhhdCB3ZSBjYW4gb25seSByZWxpYWJseSB0aW1lc3RhbXAgZnJvbSB3aXRoaW4g cGFnZWZsaXAgaXJxIGhhbmRsZXIKPiBvciB2YmxhbmsgaXJxIH4gYmFjay1wb3JjaC9hY3RpdmUg c2Nhbm91dC4gTWF5YmUgd2UgbmVlZCB0bwo+IGRybV9jcnRjX3ZibGFua19nZXQoKSBob2xkIGEg cmVmZXJlbmNlIHdoaWxlIFZSUiBpcyBhY3RpdmUgdG8gc2ltcGxpZnkKPiB0aGluZ3MgZm9yIHRo ZSBtb21lbnQuCgpJIHRoaW5rIGEgc29saWQgdGVzdGNhc2Ugd291bGQgYmUgcmVhbGx5IGdvb2Qu IFNvbWV0aGluZyB0aGF0IHVzZXMgYW4KaHJ0aW1lciB0byBzd2VlcHQgYWNyb3NzIHRoZSBlbnRp cmUgdmJsYW5rLCBmcm9tIDAgdW50aWwgaXQgbm90aWNlcyB0aGF0CnRoZSBrZXJuZWwgZG9lc24n dCBpbmNyZWFzZSB0aGUgdmJsYW5rIGFueSBtb3JlIChvciAxIHNlY29uZCBvciBzb21ldGhpbmcs CndlIHdhbnQgdG8gc3RvcCBldmVudHVhbGx5KSBzaG91bGQgaGl0IGFsbCB0aGUgY29ybmVyIGNh c2VzLCBhbmQgdGhlbgptYWtpbmcgc3VyZSBhbGwgdGhlIHRpbWVzdGFtcHMgd2UgZ2V0IGJhY2sg b24gdGhlIHN3IHNpZGUgYXJlIGF0IGxlYXN0CnNlbGYtY29uc2lzdGVudC4gRm9yIG5vbi1WUlIg d2UgaGF2ZSB0aGlzIGluIGlndCB3aXRoIGttc19mbGlwLCBhbmQgaXQKdGVuZHMgdG8gZmluZCBs b3RzIG9mIGJ1Z3MuCgpJIHRoaW5rIGl0J2QgYmUgZ3JlYXQgaWYgd2UgY291bGQgaGF2ZSBzb21l dGhpbmcgbGlrZSB0aGlzIGZvciBWUlIgdG9vLApvbmNlIHdlJ3ZlIGFncmVlZCBvbiB0aGUgZXhh Y3Qgc2VtYW50aWNzLiBQbHVzIGRvY3MgcGF0Y2gsIGJ1Z2ZpeGVzIGFuZApldmVyeXRoaW5nIG9m Yy4KCj4gT25lIHRoaW5nIG9uZSBjb3VsZCBtZXJnZSBpcyB0aGF0IG90aGVyIFZSUiBmcmllbmRs eSB0aHJvdHRsaW5nIHBhdGNoCj4gaSBzZW50LCBnaXZlbiB0aGF0IHRoYXQgd29ya3MgYW5kIGlz IGluZGVwZW5kZW50IG9mIHRoZSB0aW1lc3RhbXAKPiBzdHVmZi4gSSBhbHNvIGhhdmUgYSBiYWNr cG9ydCBmb3IgTGludXggNS4wLXJjIGlmIHRoYXQgbWFrZXMgc2Vuc2U/Cj4gVGhhdCBWUlIgdGhy b3R0bGluZyBhbHNvIG5lZWRzIHRvIGdldCByZXdvcmtlZCBpZi9vbmNlIHdlIHdhbnRlZCB0bwo+ IGVtaXQgbWF0Y2hpbmcgdmJsYW5rL3BmbGlwIHRpbWVzdGFtcHMsIGFzIHRoYXQgZG9lc24ndCBs aWtlIHRoZQo+IHNoaWZ0ZWQgcG9pbnQgaW5zaWRlIHZibGFuayB3aGVuIHZibGFuayBjb3VudGVy IGdldHMgdXBkYXRlZC4KPiAKPiBCYXNpY2FsbHkgaSBkb24ndCBrbm93IHdoZW4gdGhlIGRlYWRs aW5lcyBmb3IgbWVyZ2luZyB0aGlzIGtpbmQgb2YKPiB3b3JrIGFyZS93ZXJlIHdydC4gTGludXgg NS4wLCA1LjEsIDUuMj8KCkdpdmVuIGhvdyBtdWNoIHdlJ3JlIHN0aWxsIGRpc2N1c3NpbmcsIGFu ZCBob3cgbXVjaCBuZWVkcyB0byBiZSBkb25lLCBJJ2QKc2F5IDUuMi4gQW5kIHdlIHNocnVnIDUu MCBhbmQgNS4xIHNpbXBseSBvZmYgYXMgIndlbHAsIGJyb2tlbiBrZXJuZWwgZm9yClZSUiBpZiB5 b3UgY2FyZSBhYm91dCB0aW1lc3RhbXBzIiBpZiBiYWNrcG9ydGluZyB0aGUgZmluYWwgZml4IGlz IHRvbwptdWNoLgoKPiBJJ2xsIGxvb2sgbW9yZSBpbnRvIGNsZWFuaW5nL3Rlc3RpbmcgdGhvc2Ug cGF0Y2hlcyB0b21vcnJvdyBhZnRlciBsb3RzCj4gb2Ygc2xlZXAgYW5kIHRoZW4gc2VlIHdoYXQg TmljaG9sYXMgdGhpbmtzIG9mIHRoZW0uCj4gCj4gT25lIHByb2JsZW0gd2l0aCB0aGUgVlJSIHN0 dWZmIGlzIHRoYXQgdGhlIGhhcmR3YXJlIHRlc3RpbmcgZXF1aXBtZW50LAo+IHRoYXQgaSdkIHVz dWFsbHkgdXNlIHRvIHZlcmlmeSBpZiB0aW1lc3RhbXBzIGFyZSByZWFsbHkgY29ycmVjdCBhbmQK PiBhY2N1cmF0ZSwgZG9lc24ndCB3b3JrIHdpdGggRGlzcGxheVBvcnQgb3IgSERNSSBzaWduYWxz LCBzbyBpIGNhbiBvbmx5Cj4gdGVzdCBmb3Igc2VsZi1jb25zaXN0ZW5jeSBvZiB0aW1lc3RhbXBz IGF0bS4sIGFuZCBsb29rIGlmIHBsb3RzIG9mCj4gdGltZXN0YW1wcyBsb29rIGhvdyBpIHdvdWxk IGV4cGVjdCB0aGVtIHRvIGxvb2sgaWYgc3R1ZmYgaXMgbW9zdGx5Cj4gY29ycmVjdC4KClllYWgg SSB0aGluayBzZWxmLWNvbnNpc3RlbmN5IGlzIGFscmVhZHkgcmVhbGx5IHVzZWZ1bC4gQXMgbWVu dGlvbmVkCmFib3ZlLCBrbXNfZmxpcCAod2hpY2ggb25seSB0ZXN0cyBzZWxmLWNvbnNpc3RlbmN5 KSBjYXRjaGVzIHRvbnMgb2Ygc3R1ZmYuCi1EYW5pZWwKCj4gCj4gLW1hcmlvCj4gCj4gPiA+IEJ1 dCBsaWtlIHlvdSBzYWlkLCB0aGUgb25seSB0aGluZyBJIGNhbiB0aGluayBvZiB0aGF0IHNob3Vs ZCBuZWVkIHRoZQo+ID4gPiBldmVudCByaWdodCBhd2F5IGlzIGxvdyBsYXRlbmN5IC8gZnJhbWVi dWZmZXIgcmVuZGVyaW5nLgo+ID4gPgo+ID4gPiBJIGNhbiB0aGluayBhdCBsZWFzdCBvbmUgcG90 ZW50aWFsIHVzZSBjYXNlIHdoZXJlIHlvdSB3b3VsZCB3YW50IHRvIGRvCj4gPiA+IGZyb250IGJ1 ZmZlciByZW5kZXJpbmcgZm9yIGxvdyBsYXRlbmN5IHdpdGggVlJSIC0gZW11bGF0aW9uIG9mIG9s ZAo+ID4gPiBjb25zb2xlIGhhcmR3YXJlLiBUaGVyZSdzIG5vdCByZWFsbHkgYW55IG1vZGVybiBk aXNwbGF5IHRoYXQgaGFzIGZpeGVkCj4gPiA+IHJlZnJlc2ggbW9kZXMgdGhhdCBtYXRjaCB0aGUg cmVuZGVyIGZyZXF1ZW5jeSBvZiBzb21lIGNvbnNvbGVzLiBCdXQgdGhpcwo+ID4gPiB1c2UgY2Fz ZSBpc24ndCBvdXQgdGhlcmUgaW4gdGhlIHdpbGQgcmlnaHQgbm93IGF0IGxlYXN0Lgo+ID4KPiA+ IEV2ZW4gb24gYW4gZW11bGF0b3IgSSdkIGV4cGVjdCBpdCdkIGp1c3QgZG8gcmVndWxhciBmbGlw cyB0byB0aGUKPiA+IGZyb250YnVmZmVyLiBFc3BlY2lhbGx5IG9uIG1vYmlsZSB0aGVyZSdzIHJl YWxseSBubyBzdWNoIHRoaW5nIGFzCj4gPiBmcm9udGJ1ZmZlciByZW5kZXJpbmcsIHlvdSBhbHdh eXMgZG8gYSBmbGlwLiBUaGUgRElSVFlGQiBpb2N0bCAod2hpY2gKPiA+IHlvdSBuZWVkIHRvIGNh bGwgaW5zdGVhZCBvZiBkb2luZyBhIHBhZ2UgZmxpcCkgc2ltcGx5IGRvZXMgYSBwYWdlZmxpcAo+ ID4gYmVoaW5kIHlvdXIgYmFjayBmb3IgeW91LiBXaGljaCBJIHRoaW5rIGlzIHdvcnNlIHRoYW4g YWN0dWFsbHkKPiA+IGZsaXBwaW5nLgo+ID4KPiA+IEFuZCBmb3IgZW11bGF0aW5nIGV4YWN0IHJl ZnJlc2ggcmF0ZXMgeW91ciB0aGVuIGFnYWluIGdvIGJhY2sgdG8KPiA+IGhydGltZXIgKyBpc3N1 aW5nIHRoZSBmbGlwIGFwcHJvYWNoLCBidXQgdXNpbmcgeW91ciBkZXNpcmVkIHJlZnJlc2gKPiA+ IHJhdGUgdG8gdHVuZSB0aGUgaHJ0aW1lciBpbnN0ZWFkIG9mIHRoZSBmaXhlZCBvbmUuIEJ1dCB0 aGF0IG5lZWRzIGEKPiA+IGNvcnJlY3QgdmJsYW5rIHRpbWVzdGFtcCBmb3IgdGhlIGN1cnJlbnQg ZnJhbWUgdG8gd29yayBjb3JyZWN0bHkgKG9yCj4gPiB5b3UgZm9yY2UgY29tcG9zaXRvciBoYXMg dG8gYWx3YXlzIGZsaXAsIHdoaWNoIGRlZmVhdHMgdGhlIHBvd2VyCj4gPiBzYXZpbmcgYXNwZWN0 cyBvZiBWUlIgYWxsb3dpbmcgdG8gc3RyZXRjaCByZWZyZXNoIHJhdGVzIHdoZW4gbm90aGluZwo+ ID4gY2hhbmdlcykuCj4gPgo+ID4gPiBSZWdhcmRpbmcgY29tcG9zaXRvcnM6IEkgZG9uJ3QgcmVh bGx5IHJlY29tbWVuZCBWUlIgZm9yIHRoaXMgdXNlIGNhc2UgaW4KPiA+ID4gZ2VuZXJhbCBzaW5j ZSB5b3UnbGwgd2FudCBhIGZpeGVkIHJlZnJlc2ggcmF0ZSBmcmVxdWVuY3kgZm9yIGlucHV0IHRv Cj4gPiA+IGZlZWwgY29uc2lzdGVudCBhbmQgdG8gYXZvaWQgYW55IGZsaWNrZXJpbmcgLyBsdW1p bmFuY2UgY2hhbmdlcy4gVGhlCj4gPiA+IGZhc3Rlc3QgcmVmcmVzaCByYXRlIHdpbGwgYmUgdGhl IG1vc3QgcmVzcG9uc2l2ZSB0byB0aGUgdXNlciBhbmQgeW91IGNhbgo+ID4gPiBqdXN0IHVzZWQg dGhlIGZpeGVkIHJlZnJlc2ggcmF0ZSBtb2RlIGluIHRoaXMgY2FzZS4gTG93ZXJpbmcgdGhlIHJl ZnJlc2gKPiA+ID4gcmF0ZSB0byBzYXZlIHBvd2VyIHNvdW5kcyBuaWNlIGluIHRoZW9yeSBidXQg SSdkIGltYWdpbmUgaXQnZCBmZWVsCj4gPiA+IHRlcnJpYmxlIGluIHByYWN0aWNlLgo+ID4KPiA+ IFdoeSBpcyBhIGNvbXBvc2l0b3IgYW55IGRpZmZlcmVudCBmcm9tIGEgZ2FtZT8gWW91IGFpbSB0 byByZW5kZXIgYXQKPiA+IDYwZnBzLCBvciB3aGF0ZXZlciB0aGUgcmVmcmVzaCByYXRlIGlzLiBJ ZiB5b3UncmUgb25lIGZyYW1lIGxhdGUgaXQncwo+ID4gYmV0dGVyIHRvIHN0cmV0Y2ggdGhlIHZi bGFuayBzbGlnaHRseSB0aGFuIGEgZnVsbCBvbiAxLWZyYW1lIGZyZWV6ZS4KPiA+IEFuZCBvbiBt b2JpbGUgaXQncyB1bmZvcnR1bmF0ZWx5IGZhaXJseSBjb21tb24gdGhhdCB0aGUgc3lzdGVtIGZh aWxzCj4gPiB0byBjbG9jayB1cCBxdWlja2x5IGVub3VnaCB3aGVuIHN0YXJ0aW5nIGZyb20gYW4g aWRsZSBzdGF0ZSwgVlJSCj4gPiBzb3VuZHMgbGlrZSByZWFsbHkgdXNlZnVsIGhlcmUuCj4gPgo+ ID4gQnV0IGxpa2UgaW4gYSBnYW1lIGlmIHlvdSBkb24ndCBhdCBsZWFzdCBhaW0gdG8gcmVuZGVy IGF0IGEgY29uc2lzdGVudAo+ID4gZnBzLCBhbmQgaGFuZGxlIHlvdXIgaW5wdXQgYXQgYSBjb25z aXN0ZW50IGZwcywgdGhlbiB0aGUgZW5kIHJlc3VsdAo+ID4gd2lsbCBpbmRlZWQgYmUgdGVycmli bGUuCj4gPiAtRGFuaWVsCj4gPgo+ID4gPiBOaWNob2xhcyBLYXpsYXVza2FzCj4gPiA+Cj4gPiA+ ID4KPiA+ID4gPj4+Pj4gTm93IGFkZGVkIGNvbXBsaWNhdGlvbiBpcyB0aGF0IGFtZGdwdSBzZW5k cyBvdXQgdmJsYW5rIGV2ZW50cyByZWFsbHkKPiA+ID4gPj4+Pj4gZWFybHksIHdoaWNoIGlzIHVz ZWQgYnkgdXNlcnNwYWNlIHRvIGRvIGZyb250YnVmZmVyIHJlbmRlcmluZyBpbiB0aGUKPiA+ID4g Pj4+Pj4gdmJsYW5rIHRpbWUuIEJ1dCBJIGRvbid0IHRoaW5rIGFueW9uZSB3YW50cyB0byBkbyBi b3RoIFZSUiBhbmQKPiA+ID4gPj4+Pgo+ID4gPiA+Pj4+IEkgdGhpbmsgYWxsIGttcyBkcml2ZXJz IHRyeSB0byBjYWxsIGRybV9jcnRjX2hhbmRsZV92YmxhbmsoKSBhdCBzdGFydAo+ID4gPiA+Pj4+ IG9mIHZibGFuayB0byBnaXZlIE1lc2EgdGhlIG1vc3QgdGltZSBmb3IgZnJvbnRidWZmZXIgcmVu ZGVyaW5nIGZvcgo+ID4gPiA+Pj4+IGNsYXNzaWMgWC4gQnV0IHZibGFuayBldmVudHMgYXJlIGFs c28gdXNlZCBmb3Igc2NoZWR1bGluZyBidWZmZXJzd2Fwcwo+ID4gPiA+Pj4+IG9yIG90aGVyIHN0 dWZmIGZvciByZWRpcmVjdGVkIHdpbmRvd2VkIHJlbmRlcmluZywgb3IgdmlhIGFwaSdzIGxpa2UK PiA+ID4gPj4+PiBPTUxfc3luY19jb250cm9scyBnbFhXYWl0Rm9yTXNjT01MLCBzbyB0aGVyZSBt aWdodCBiZSBvdGhlciB0aGluZ3MKPiA+ID4gPj4+PiBhZmZlY3RlZCBieSBhIG1vcmUgZGVsYXll ZCB2YmxhbmsgaGFuZGxpbmcuCj4gPiA+ID4+Pgo+ID4gPiA+Pj4gVGhlIGZyb250YnVmZmVyIHJl bmRlcmluZyBpcyB2ZXJ5IG11Y2ggWCBkcml2ZXIgc3BlY2lmaWMsIGFuZCBJIHRoaW5rCj4gPiA+ ID4+PiAtYW1kZ3B1L3JhZGVvbiBpcyB0aGUgb25seSBvbmUgdGhhdCByZXF1aXJlcyB0aGlzLiBO byBpOTE1IGRyaXZlciBldmVyCj4gPiA+ID4+PiB1c2VkIHRoZSB2YmxhbmsgaW50ZXJydXB0IHRv IHNjaGVkdWxlIGZyb250YnVmZmVyIGJsaXRzLCB3ZSB1c2Ugc29tZQo+ID4gPiA+Pj4gQ1Mtc2lk ZSBzdGFsbHMuCj4gPiA+ID4+Pgo+ID4gPiA+Pj4gV3J0IHNjaGVkdWxpbmcgcGFnZWZsaXBzOiBU aGUgcnVsZSBpcyB0aGF0IHJpZ2h0IGFmdGVyIHlvdSd2ZSByZWNlaXZlZCB0aGUKPiA+ID4gPj4+ IHZibGFuayBmb3IgZnJhbWUgWCwgdGhlbiBhbiBpbW1lZGlhdGVseSBzY2hlZHVsZSBwYWdlZmxp cCBzaG91bGQgaGl0IFgrMSwKPiA+ID4gPj4+IGJ1dCBub3QgWC4gYW1kZ3B1IGhhZCB0aGlzIGJy b2tlbiwgYnV0IGl0J3MgZml4ZWQgc2luY2UgYSB3aGlsZS4KPiA+ID4gPj4+Cj4gPiA+ID4+Pj4+ IGZyb250YnVmZmVyIHJlbmRlcmluZywgaGVuY2UgSSB0aGluayBpdCBzaG91bGQgYmUgcG9zc2li bGUgdG8gY3JlYXRlCj4gPiA+ID4+Pj4+IGNvcnJlY3QgdmJsYW5rIHRpbWVzdGFtcHMgZm9yIHRo ZSBWUlIgY2FzZSwgd2hpbGUgbGVhdmluZyB0aGUgY3VycmVudAo+ID4gPiA+Pj4+PiBsb2dpYyBp biBwbGFjZSBmb3IgZXZlcnl0aGluZyBlbHNlLiBCdXQgdGhhdCBtZWFucyBtb3ZpbmcgdGhlIGVu dGlyZQo+ID4gPiA+Pj4+PiB2YmxhbmsgcHJvY2Vzc2luZyB0byB3aGVyZSB5b3Uga25vdyB0aGUg bmV4dCBmcmFtZSdzIHN0YXJ0IHRpbWUgZm9yCj4gPiA+ID4+Pj4+IFZSUiwgYm90aCBmb3IgcGFn ZSBmbGlwcyBhbmQgZm9yIGFsbCBvdGhlciB2YmxhbmsgZXZlbnRzLgo+ID4gPiA+Pj4+PiAtRGFu aWVsCj4gPiA+ID4+Pj4+Cj4gPiA+ID4+Pj4KPiA+ID4gPj4+PiBJIHRoaW5rIGZvciBhbWRncHUg aXQgd291bGQgYmUgZG9hYmxlIGJ5IGNhbGxpbmcgZHJtX2hhbmRsZV92YmxhbmsKPiA+ID4gPj4+ PiBmcm9tIHRoZSBwYWdlZmxpcCBpcnEgaGFuZGxlciBpbiBWUlIgbW9kZSwgYW5kIHRoZW4gYWRk aXRpb25hbGx5IGZyb20KPiA+ID4gPj4+PiB0aGUgdmJsYW5rIGludGVycnVwdCBoYW5kbGVyIGxp a2Ugbm93LiBWYmxhbmsgaXJxJ3MgYXJlIHRyaWdnZXJlZCB2aWEKPiA+ID4gPj4+PiB2bGluZSBp bnRlcnJ1cHRzIHdpdGggcHJvZ3JhbW1hYmxlIHZlcnRpY2FsIHRyaWdnZXIgbGluZSBwb3NpdGlv biwgc28KPiA+ID4gPj4+PiB3ZSBjb3VsZCBwcm9ncmFtIHRoZSB0cmlnZ2VyIGxpbmUgdG8gYmUg c3RhcnQgb2YgYmFjay1wb3JjaCBpbnN0ZWFkIG9mCj4gPiA+ID4+Pj4gc3RhcnQgb2YgZnJvbnQt cG9yY2guIEluIHRoZSBwYWdlZmxpcCBjYXNlIHdlIGRvIHZibGFuayBoYW5kbGluZyArCj4gPiA+ ID4+Pj4gdGltZXN0YW1waW5nICsgcGZsaXAgY29tcGxldGlvbiBmcm9tIHBmbGlwIGlycSwgYW5k IGhhdmUgdGhlIHJlZ3VsYXIKPiA+ID4gPj4+PiBiYWNrLXBvcmNoIHZibGFuayBoYW5kbGluZyBm b3IgcmVmcmVzaCBjeWNsZXMgaW4gd2hpY2ggbm8KPiA+ID4gPj4+PiBwYWdlZmxpcC9wZmxpcCBp cnEgaGFwcGVuZWQuCj4gPiA+ID4+Pgo+ID4gPiA+Pj4gSG0sIGNhbid0IHdlIHNpbXBseSBwcm9n cmFtIHRoZSB2YmxhbmsgdG8gb2NjdXIgaW4gdGhlIGJhY2sgcG9yY2ggcmVnaW9uCj4gPiA+ID4+ PiBmb3IgVlJSPyBUaGUgdmJsYW5rIHRpbWVzdGFtcGluZyBzaG91bGQgYXV0b21hdGljYWxseSBj b3JyZWN0IHRoZQo+ID4gPiA+Pj4gdGltZXN0YW1wIGluIHRoYXQgY2FzZS4gV291bGQgcmVxdWly ZSBhIGxvdCBsZXNzIGNvZGUgY2hhbmdlcy4KPiA+ID4gPj4+Cj4gPiA+ID4+PiBQbHVzIHVwZGF0 ZSB0aGUgZG9jdW1lbnRhdGlvbiBvZmMuCj4gPiA+ID4+Pgo+ID4gPiA+Pj4+IE5vdCBzdXJlIGlm L2hvdyB0aGF0IHdvdWxkIG1lc3Mgd2l0aCBiZWxvdy12cnItcmVmcmVzaC1yYXRlLXJhbmdlCj4g PiA+ID4+Pj4gc3VwcG9ydCBmb3Igc3R1dHRlciByZWR1Y3Rpb24gYXQgbG93IGZwcyB0aG91Z2g/ IE9yIHdpdGggcGVyZm9ybWFuY2UsCj4gPiA+ID4+Pj4gZ2l2ZW4gdmJsYW5rIGV2ZW50IGRpc3Bh dGNoIGNvdWxkIGJlIGRlbGF5ZWQgYSBsb3QgaW4gVlJSIGNvbXBhcmVkIHRvCj4gPiA+ID4+Pj4g bm9ybWFsIG1vZGU/IE9yIHdpdGggYWxsIHRoZSB2YmxhbmsgYWNjb3VudGluZyBkdXJpbmcgbW9k ZXNldHMgb3IgY3J0Ywo+ID4gPiA+Pj4+IGVuL2Rpc2FibGU/Cj4gPiA+ID4+Cj4gPiA+ID4+IEkg dGhpbmsgd2UgaGF2ZSBleHRyYSBWTElORXMgdGhhdCBjYW4gYmUgcHJvZ3JhbW1lZCBhdCB2cG9z IDAgdGhhdCBjb3VsZAo+ID4gPiA+PiByZXNvbHZlIHRoaXMgYnV0IEknbSBzdGlsbCBub3QgcmVh bGx5IHNvbGQgb24gdGhlIGlkZWEuCj4gPiA+ID4+Cj4gPiA+ID4+Pgo+ID4gPiA+Pj4gQ3VycmVu dGx5IFZSUiBhbmQgZXhwbGljaXQgZnJhbWUgc2NoZWR1bGluZyBkb24ndCBtaXguIFdlJ3ZlIGRp c2N1c3NlZAo+ID4gPiA+Pj4gdGhpcywgYW5kIGNvbnNlbnMgc2VlbXMgdG8gYmUgdGhhdCB3ZSBu ZWVkIGEgbmV3IHByb3BlcnR5IGZvciBwYWdlX2ZsaXAsCj4gPiA+ID4+PiBzaW1pbGFyIHRvIHRo ZSB0YXJnZXQgZnJhbWUsIGJ1dCBpbnN0ZWFkIG9mIGZyYW1lcyBhIHRpbWVzdGFtcC4gVGhlbiB0 aGUKPiA+ID4gPj4+IGRyaXZlciBjYW4gaGl0IGEgc3BlY2lmaWMgdGltZSBmb3IgdGhlIG5leHQg ZnJhbWUuCj4gPiA+ID4+Pgo+ID4gPiA+Pj4gQW5kIHNpbmNlIGNvbXBvc2l0b3JzIHVzZSB0aGUg dmJsYW5rIGlvY3RsIGp1c3QgdG8gZG8gZnJhbWUgc2NoZWR1bGluZywgSQo+ID4gPiA+Pj4gZG9u J3QgdGhpbmsgd2UgaGF2ZSB0byB3b3JyeSBodWdlbHkgYWJvdXQgaW50ZXJhY3Rpb25zIHRoZXJl LiBNdWNoIGJldHRlcgo+ID4gPiA+Pj4gdG8gYWltIGZvciBjbGVhbiBzZW1hbnRpY3MgKGkuZS4g dmJsYW5rIGFuZCBmbGlwIGNvbXBsZXRlIHRpbWVzdGFtcHMKPiA+ID4gPj4+IGJldHRlciBtYXRj aCkuCj4gPiA+ID4+Pgo+ID4gPiA+Pj4+IEFsc28sIGNvdWxkIG90aGVyIGRyaXZlcnMgbGlrZSBJ bnRlbCBlYXNpbHkgZG8gdGhpcyBkZWxheWVkIHZibGFuawo+ID4gPiA+Pj4+IHByb2Nlc3Npbmcg aW4gdGhlIG5vbi1wYWdlZmxpcCBjYXNlPwo+ID4gPiA+Pj4KPiA+ID4gPj4+IEludGVsJ3MgcHJv YmxlbSA6LSkgQnV0IHllYWggd2UgaGF2ZSBwYWdlIGZsaXAgdGltZXN0YW1wIHJlZ2lzdGVycywg c28KPiA+ID4gPj4+IHdvcnN0IGNhc2UgYWxsIHdlIG5lZWQgdG8gZG8gaXMgc2h1ZmZsZSBjb2Rl IGFyb3VuZCBhIGJpdC4gQW5kIHdlIGhhdmUKPiA+ID4gPj4+IGludGVycnVwdHMgZm9yIGJvdGgg c3RhcnQgb2YgdmJsYW5rIGFuZCBhbmQgb2YgdmJsYW5rLiBJdCBtaWdodCBiZSBhIGJpdAo+ID4g PiA+Pj4gbW9yZSB3b3JrIGJlY2F1c2Ugd2UgdXNlIHRoZSB2YmxhbmsgaW50ZXJydXB0IHRvIGF2 b2lkIHJhY2VzIGluIGF0b21pYwo+ID4gPiA+Pj4gdXBkYXRlcywgYnV0IHRoYXQncyBub3QgdG9v IHRlcnJpYmxlIHRvIGZpeC4KPiA+ID4gPj4+Cj4gPiA+ID4+Pj4gICBGcm9tIG15IHVzZXIgcGVy c3BlY3RpdmUgYXMgYSBkZXZlbG9wZXIgb2YgYSBuZXVyb3NjaWVuY2UgcmVzZWFyY2gKPiA+ID4g Pj4+PiBhcHBsaWNhdGlvbiB0aGF0IGhhcyBhIGNvdXBsZSBvZiBleGNpdGluZy9pbXBvcnRhbnQg dXNlIGNhc2VzIGZvciBWUlIKPiA+ID4gPj4+PiBtb2RlLCBpIGFic29sdXRlbHkgZG8gbmVlZCB0 cnVzdHdvcnRoeSBhbmQgcHJlY2lzZSBwYWdlZmxpcCBldmVudAo+ID4gPiA+Pj4+IHRpbWVzdGFt cHMgdGhhdCByZXByZXNlbnQgcmVhbGl0eSwgb3RoZXJ3aXNlIFZSUiBtb2RlIHdvdWxkIGJlIGxl c3MKPiA+ID4gPj4+PiB0aGFuIHVzZWxlc3MgZm9yIG1lLiBJIGNhbiBkbyB3aXRob3V0IG1lYW5p bmdmdWwgdmJsYW5rIHRpbWVzdGFtcHMgaW4KPiA+ID4gPj4+PiBWUlIgbW9kZSB0aG91Z2gsIGFu ZCBleHBlY3RlZCB0byBkbyB3aXRob3V0IHRoZW0sIGFzIGFueSBzY2hlZHVsaW5nCj4gPiA+ID4+ Pj4gaGFzIHRvIGhhcHBlbiB0aW1lLWJhc2VkIGluc3RlYWQgb2YgYmFzZWQgb24gdmJsYW5rIGNv dW50cyBhbnl3YXksCj4gPiA+ID4+Pj4gZ2l2ZW4gdGhhdCB2YmxhbmsgY291bnRzIGFyZSBxdWl0 ZSBtZWFuaW5nbGVzcyBpZiBldmVyeSBmcmFtZSBjYW4gaGF2ZQo+ID4gPiA+Pj4+IGEgZGlmZmVy ZW50IGR1cmF0aW9uLiBJJ2QgZXhwZWN0IHRoYXQgc2l0dWF0aW9uIHRvIGJlIHNpbWlsYXIgZm9y Cj4gPiA+ID4+Pj4gb3RoZXIgYXBwcyB0aGF0IHdvdWxkIHdhbnQgdG8gdXNlIHRpbWVzdGFtcHMg aW4gVlJSIG1vZGUgbGlrZSB2aWRlbwo+ID4gPiA+Pj4+IGdhbWVzLCBtb3ZpZSBwbGF5ZXJzIG9y IFZSL0FSIGFwcGxpY2F0aW9ucy4KPiA+ID4gPj4+Cj4gPiA+ID4+PiBZZWFoIGZvciB0aGF0IHlv dSB3YW50IHRvIHNjaGVkdWxlIHlvdXIgZnJhbWVzIHdpdGggYSB0YXJnZXQgZnJhbWUgbnVtYmVy Lgo+ID4gPiA+Pj4gV291bGQgc3RpbGwgYmUgbmljZSBpZiB2YmxhbmsgdGltZXN0YW1wcyB3b3Vs ZG4ndCBiZSBhbiBvdXRyaWdodCBsaWUgKGFuZAo+ID4gPiA+Pj4gdGhlIHRpbWVzdGFtcCBpcyBz dGlsbCB1c2VmdWwgaW5mb3JtYXRpb24sIGV2ZW4gaWYgdGhlIGZyYW1lIGNvdW50ZXIKPiA+ID4g Pj4+IGlzbid0IC0gbWFueSBkaXNwbGF5cyBoYXZlIG1pbi9tYXggZnJhbWUgcmF0ZXMgZm9yIFZS Uiwgd2hpY2ggaXMKPiA+ID4gPj4+IGluZm9ybWF0aW9uIHdlIGNvdWxkIHBlcmhhcHMgZXhwb3Nl KS4KPiA+ID4gPj4+IC1EYW5pZWwgPgo+ID4gPiA+Pj4+Cj4gPiA+ID4+Pj4gLW1hcmlvCj4gPiA+ ID4+Pj4KPiA+ID4gPj4+Pj4+Cj4gPiA+ID4+Pj4+PiBOaWNob2xhcyBLYXpsYXVza2FzCj4gPiA+ ID4+Pj4+Pgo+ID4gPiA+Pj4+Pj4+Cj4gPiA+ID4+Pj4+Pj4+IC0tLQo+ID4gPiA+Pj4+Pj4+PiAg ICAgZHJpdmVycy9ncHUvZHJtL2RybV92YmxhbmsuYyB8IDQ5ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQo+ID4gPiA+Pj4+Pj4+PiAgICAgaW5jbHVkZS9kcm0vZHJtX3ZibGFu ay5oICAgICB8ICA4ICsrKysrKwo+ID4gPiA+Pj4+Pj4+PiAgICAgMiBmaWxlcyBjaGFuZ2VkLCA1 NiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gPiA+ID4+Pj4+Pj4+Cj4gPiA+ID4+Pj4+ Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV92YmxhbmsuYwo+ID4gPiA+Pj4+Pj4+PiBpbmRleCA5OGUwOTExNzU5MjEuLjRi M2E0YzM4ZmFiZSAxMDA2NDQKPiA+ID4gPj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV92YmxhbmsuYwo+ID4gPiA+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFu ay5jCj4gPiA+ID4+Pj4+Pj4+IEBAIC04MTQsMTAgKzgxNCwyMSBAQCBzdGF0aWMgdm9pZCBzZW5k X3ZibGFua19ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPiA+Pj4+Pj4+PiAgICAg ICAgICAgICAgICB1NjQgc2VxLCBrdGltZV90IG5vdykKPiA+ID4gPj4+Pj4+Pj4gICAgIHsKPiA+ ID4gPj4+Pj4+Pj4gICAgICAgIHN0cnVjdCB0aW1lc3BlYzY0IHR2Owo+ID4gPiA+Pj4+Pj4+PiAr ICAgIGt0aW1lX3QgYWx0X2ZsaXBfdGltZTsKPiA+ID4gPj4+Pj4+Pj4KPiA+ID4gPj4+Pj4+Pj4g ICAgICAgIHN3aXRjaCAoZS0+ZXZlbnQuYmFzZS50eXBlKSB7Cj4gPiA+ID4+Pj4+Pj4+IC0gICAg Y2FzZSBEUk1fRVZFTlRfVkJMQU5LOgo+ID4gPiA+Pj4+Pj4+PiAgICAgICAgY2FzZSBEUk1fRVZF TlRfRkxJUF9DT01QTEVURToKPiA+ID4gPj4+Pj4+Pj4gKyAgICAgICAgICAgIC8qCj4gPiA+ID4+ Pj4+Pj4+ICsgICAgICAgICAgICAgKiBGb3IgZmxpcCBjb21wbGV0aW9uIGV2ZW50cywgb3ZlcnJp ZGUgIm5vdyIgdGltZQo+ID4gPiA+Pj4+Pj4+PiArICAgICAgICAgICAgICogd2l0aCBhbHRfZmxp cF90aW1lIHByb3ZpZGVkIGJ5IHRoZSBkcml2ZXIgdmlhCj4gPiA+ID4+Pj4+Pj4+ICsgICAgICAg ICAgICAgKiBkcm1fY3J0Y19zZXRfdnJyX3BhZ2VmbGlwX3RpbWVzdGFtcCgpIGluIFZSUiBtb2Rl Cj4gPiA+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAgKiBpZiB0aGF0IHRpbWUgaXMgbGF0ZXIgdGhh biBnaXZlbiAibm93IiB2YmxhbmsgdGltZS4KPiA+ID4gPj4+Pj4+Pj4gKyAgICAgICAgICAgICAq Lwo+ID4gPiA+Pj4+Pj4+PiArICAgICAgICAgICAgYWx0X2ZsaXBfdGltZSA9IGRldi0+dmJsYW5r W2UtPnBpcGVdLmFsdF9mbGlwX3RpbWU7Cj4gPiA+ID4+Pj4+Pj4+ICsgICAgICAgICAgICBpZiAo YWx0X2ZsaXBfdGltZSA+IG5vdykKPiA+ID4gPj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg bm93ID0gYWx0X2ZsaXBfdGltZTsKPiA+ID4gPj4+Pj4+Pj4gKyAgICAgICAgICAgIC8qIEZhbGx0 aHJvdWdoICovCj4gPiA+ID4+Pj4+Pj4+ICsgICAgY2FzZSBEUk1fRVZFTlRfVkJMQU5LOgo+ID4g PiA+Pj4+Pj4+PiAgICAgICAgICAgICAgICB0diA9IGt0aW1lX3RvX3RpbWVzcGVjNjQobm93KTsK PiA+ID4gPj4+Pj4+Pj4gICAgICAgICAgICAgICAgZS0+ZXZlbnQudmJsLnNlcXVlbmNlID0gc2Vx Owo+ID4gPiA+Pj4+Pj4+PiAgICAgICAgICAgICAgICAvKgo+ID4gPiA+Pj4+Pj4+PiBAQCAtOTE2 LDExICs5MjcsNDcgQEAgdm9pZCBkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gPiA+ID4+Pj4+Pj4+Cj4gPiA+ID4+Pj4+Pj4+ICAgICAgICAgICAgICAg IG5vdyA9IGt0aW1lX2dldCgpOwo+ID4gPiA+Pj4+Pj4+PiAgICAgICAgfQo+ID4gPiA+Pj4+Pj4+ PiArCj4gPiA+ID4+Pj4+Pj4+ICAgICAgICBlLT5waXBlID0gcGlwZTsKPiA+ID4gPj4+Pj4+Pj4g ICAgICAgIHNlbmRfdmJsYW5rX2V2ZW50KGRldiwgZSwgc2VxLCBub3cpOwo+ID4gPiA+Pj4+Pj4+ PiAgICAgfQo+ID4gPiA+Pj4+Pj4+PiAgICAgRVhQT1JUX1NZTUJPTChkcm1fY3J0Y19zZW5kX3Zi bGFua19ldmVudCk7Cj4gPiA+ID4+Pj4+Pj4+Cj4gPiA+ID4+Pj4+Pj4+ICsvKioKPiA+ID4gPj4+ Pj4+Pj4gKyAqIGRybV9jcnRjX3NldF92cnJfcGFnZWZsaXBfdGltZXN0YW1wIC0gaGVscGVyIHRv IHNldCBhbHRlcm5hdGUgcGFnZWZsaXAgdGltZQo+ID4gPiA+Pj4+Pj4+PiArICogQGNydGM6IHRo ZSBzb3VyY2UgQ1JUQyBvZiB0aGUgcGFnZWZsaXAgY29tcGxldGlvbiBldmVudAo+ID4gPiA+Pj4+ Pj4+PiArICogQGZsaXBfdGltZTogVGhlIGFsdGVybmF0ZSBwYWdlZmxpcCBjb21wbGV0aW9uIHRp bWVzdGFtcCBpbiBWUlIgbW9kZQo+ID4gPiA+Pj4+Pj4+PiArICoKPiA+ID4gPj4+Pj4+Pj4gKyAq IEluIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZSBtb2RlIChWUlIpLCBhIHBhZ2VmbGlwIGNvbXBsZXRp b24gdGltZXN0YW1wIGNhcnJpZWQKPiA+ID4gPj4+Pj4+Pj4gKyAqIGJ5IHRoZSBwYWdlZmxpcCBl dmVudCBjYW4gbmV2ZXIgYmUgZWFybGllciB0aGFuIHRoZSB2YmxhbmsgdGltZXN0YW1wIG9mIHRo ZQo+ID4gPiA+Pj4+Pj4+PiArICogdmJsYW5rIG9mIGZsaXAgY29tcGxldGlvbiwgYXMgdGhhdCB2 YmxhbmsgdGltZXN0YW1wIGRlZmluZXMgdGhlIGVuZCBvZiB0aGUKPiA+ID4gPj4+Pj4+Pj4gKyAq IHNob3J0ZXN0IHBvc3NpYmxlIHZibGFuayBkdXJhdGlvbi4gSW4gY2FzZSBvZiBhIGRlbGF5ZWQg ZmxpcCBjb21wbGV0aW9uCj4gPiA+ID4+Pj4+Pj4+ICsgKiBpbnNpZGUgdGhlIGV4dGVuZGVkIFZS UiBmcm9udCBwb3JjaCBob3dldmVyLCB0aGUgZW5kIG9mIHZibGFuayBjYW4gYmUgbXVjaAo+ID4g PiA+Pj4+Pj4+PiArICogbGF0ZXIsIHNvIHRoZSBkcml2ZXIgbXVzdCBhc3NpZ24gYW4gZXN0aW1h dGVkIHRpbWVzdGFtcCBvZiB0aGF0IGxhdGVyIGVuZCBvZgo+ID4gPiA+Pj4+Pj4+PiArICogdmJs YW5rLiBGb3IgYSBDUlRDIGluIFZSUiBtb2RlLCB0aGUgZHJpdmVyIHNob3VsZCB1c2UgdGhpcyBo ZWxwZXIgZnVuY3Rpb24gdG8KPiA+ID4gPj4+Pj4+Pj4gKyAqIHNldCBhbiBhbHRlcm5hdGUgZmxp cCBjb21wbGV0aW9uIHRpbWVzdGFtcCBpbiBjYXNlIG9mIGxhdGUgZmxpcCBjb21wbGV0aW9ucwo+ ID4gPiA+Pj4+Pj4+PiArICogaW4gZXh0ZW5kZWQgdmJsYW5rLiBJbiB0aGUgbW9zdCBzaW1wbGUg Y2FzZSwgdGhpcyBAZmxpcF90aW1lIHRpbWVzdGFtcCBjb3VsZAo+ID4gPiA+Pj4+Pj4+PiArICog c2ltcGx5IGJlIGEga3RpbWVfZ2V0KCkgdGltZXN0YW1wIHRha2VuIGF0IHRoZSBzdGFydCBvZiB0 aGUgcGFnZWZsaXAKPiA+ID4gPj4+Pj4+Pj4gKyAqIGNvbXBsZXRpb24gcm91dGluZSwgd2l0aCBz b21lIGNvbnN0YW50IGR1cmF0aW9uIG9mIHRoZSBiYWNrIHBvcmNoIGludGVydmFsCj4gPiA+ID4+ Pj4+Pj4+ICsgKiBhZGRlZCwgYWx0aG91Z2ggbW9yZSBwcmVjaXNlIGVzdGltYXRlcyBtYXkgYmUg cG9zc2libGUgb24gc29tZSBoYXJkd2FyZSBpZgo+ID4gPiA+Pj4+Pj4+PiArICogdGhlIGhhcmR3 YXJlIHByb3ZpZGVzIHNvbWUgbWVhbnMgb2YgdGltZXN0YW1waW5nIHRoZSB0cnVlIGVuZCBvZiB2 YmxhbmsuCj4gPiA+ID4+Pj4+Pj4+ICsgKgo+ID4gPiA+Pj4+Pj4+PiArICogV2hlbiBzZW5kaW5n IG91dCBwYWdlZmxpcCBldmVudHMsIGUuZy4sIHZpYSBkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVu dCgpLCBpdAo+ID4gPiA+Pj4+Pj4+PiArICogd2lsbCB1c2UgZWl0aGVyIHRoZSBzdGFuZGFyZCB2 YmxhbmsgdGltZXN0YW1wLCBjYWxjdWxhdGVkIGZvciBhIG1pbmltdW0KPiA+ID4gPj4+Pj4+Pj4g KyAqIGR1cmF0aW9uIHZibGFuaywgb3IgdGhlIHByb3ZpZGVkIEBmbGlwX3RpbWUgaWYgdGhhdCB0 aW1lIGlzIGxhdGVyIHRoYW4gdGhlCj4gPiA+ID4+Pj4+Pj4+ICsgKiB2YmxhbmsgdGltZXN0YW1w LCB0byBnZXQgdGhlIGJlc3QgcG9zc2libGUgZXN0aW1hdGUgb2Ygc3RhcnQgb2YgZGlzcGxheSBv Zgo+ID4gPiA+Pj4+Pj4+PiArICogdGhlIG5ldyBwb3N0LXBhZ2VmbGlwIHNjYW5vdXQgYnVmZmVy Lgo+ID4gPiA+Pj4+Pj4+PiArICovCj4gPiA+ID4+Pj4+Pj4+ICt2b2lkIGRybV9jcnRjX3NldF92 cnJfcGFnZWZsaXBfdGltZXN0YW1wKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPj4+Pj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrdGltZV90IGZsaXBfdGlt ZSkKPiA+ID4gPj4+Pj4+Pj4gK3sKPiA+ID4gPj4+Pj4+Pj4gKyAgICBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gPiA+Pj4+Pj4+PiArICAgIHN0cnVjdCBkcm1fdmJsYW5r X2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tkcm1fY3J0Y19pbmRleChjcnRjKV07Cj4gPiA+ ID4+Pj4+Pj4+ICsKPiA+ID4gPj4+Pj4+Pj4gKyAgICB2YmxhbmstPmFsdF9mbGlwX3RpbWUgPSBm bGlwX3RpbWU7Cj4gPiA+ID4+Pj4+Pj4+ICt9Cj4gPiA+ID4+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9M KGRybV9jcnRjX3NldF92cnJfcGFnZWZsaXBfdGltZXN0YW1wKTsKPiA+ID4gPj4+Pj4+Pj4gKwo+ ID4gPiA+Pj4+Pj4+PiAgICAgc3RhdGljIGludCBfX2VuYWJsZV92Ymxhbmsoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gPiA+ID4+Pj4+Pj4+ICAgICB7Cj4gPiA+ ID4+Pj4+Pj4+ICAgICAgICBpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9N T0RFU0VUKSkgewo+ID4gPiA+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3Zi bGFuay5oIGIvaW5jbHVkZS9kcm0vZHJtX3ZibGFuay5oCj4gPiA+ID4+Pj4+Pj4+IGluZGV4IDZh ZDk2MzBkNGY0OC4uYWFjZjQ0Njk0YWI2IDEwMDY0NAo+ID4gPiA+Pj4+Pj4+PiAtLS0gYS9pbmNs dWRlL2RybS9kcm1fdmJsYW5rLmgKPiA+ID4gPj4+Pj4+Pj4gKysrIGIvaW5jbHVkZS9kcm0vZHJt X3ZibGFuay5oCj4gPiA+ID4+Pj4+Pj4+IEBAIC0xMTcsNiArMTE3LDEyIEBAIHN0cnVjdCBkcm1f dmJsYW5rX2NydGMgewo+ID4gPiA+Pj4+Pj4+PiAgICAgICAgICogQHRpbWU6IFZibGFuayB0aW1l c3RhbXAgY29ycmVzcG9uZGluZyB0byBAY291bnQuCj4gPiA+ID4+Pj4+Pj4+ICAgICAgICAgKi8K PiA+ID4gPj4+Pj4+Pj4gICAgICAgIGt0aW1lX3QgdGltZTsKPiA+ID4gPj4+Pj4+Pj4gKyAgICAv KioKPiA+ID4gPj4+Pj4+Pj4gKyAgICAgKiBAYWx0X2ZsaXBfdGltZTogVmJsYW5rIHRpbWVzdGFt cCBmb3IgZW5kIG9mIGV4dGVuZGVkIHZibGFuayBkdWUgdG8KPiA+ID4gPj4+Pj4+Pj4gKyAgICAg KiBhIGxhdGUgcGFnZWZsaXAgY29tcGxldGlvbiBpbiB2YXJpYWJsZSByZWZyZXNoIHJhdGUgbW9k ZS4gUGFnZWZsaXAKPiA+ID4gPj4+Pj4+Pj4gKyAgICAgKiBldmVudHMgd2lsbCBjYXJyeSB0aGUg bGF0ZXIgb25lIG9mIEB0aW1lIGFuZCBAYWx0X2ZsaXBfdGltZS4KPiA+ID4gPj4+Pj4+Pj4gKyAg ICAgKi8KPiA+ID4gPj4+Pj4+Pj4gKyAgICBrdGltZV90IGFsdF9mbGlwX3RpbWU7Cj4gPiA+ID4+ Pj4+Pj4+Cj4gPiA+ID4+Pj4+Pj4+ICAgICAgICAvKioKPiA+ID4gPj4+Pj4+Pj4gICAgICAgICAq IEByZWZjb3VudDogTnVtYmVyIG9mIHVzZXJzL3dhaXRlcnMgb2YgdGhlIHZibGFuayBpbnRlcnJ1 cHQuIE9ubHkgd2hlbgo+ID4gPiA+Pj4+Pj4+PiBAQCAtMTc5LDYgKzE4NSw4IEBAIGludCBkcm1f dmJsYW5rX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG51bV9jcnRj cyk7Cj4gPiA+ID4+Pj4+Pj4+ICAgICB1NjQgZHJtX2NydGNfdmJsYW5rX2NvdW50KHN0cnVjdCBk cm1fY3J0YyAqY3J0Yyk7Cj4gPiA+ID4+Pj4+Pj4+ICAgICB1NjQgZHJtX2NydGNfdmJsYW5rX2Nv dW50X2FuZF90aW1lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPj4+Pj4+Pj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt0aW1lX3QgKnZibGFua3RpbWUpOwo+ID4gPiA+ Pj4+Pj4+PiArdm9pZCBkcm1fY3J0Y19zZXRfdnJyX3BhZ2VmbGlwX3RpbWVzdGFtcChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gPiA+ID4+Pj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga3RpbWVfdCBmbGlwX3RpbWUpOwo+ID4gPiA+Pj4+Pj4+PiAgICAgdm9pZCBk cm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiA+ID4+ Pj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fcGVuZGluZ192 YmxhbmtfZXZlbnQgKmUpOwo+ID4gPiA+Pj4+Pj4+PiAgICAgdm9pZCBkcm1fY3J0Y19hcm1fdmJs YW5rX2V2ZW50KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+ID4gPj4+Pj4+Pj4gLS0KPiA+ID4g Pj4+Pj4+Pj4gMi4xNy4xCj4gPiA+ID4+Pj4+Pj4+Cj4gPiA+ID4+Pj4+Pj4+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+ID4+Pj4+Pj4+IGRyaS1k ZXZlbCBtYWlsaW5nIGxpc3Rqago+ID4gPiA+Pj4+Pj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo+ID4gPiA+Pj4+Pj4+Cj4gPiA+ID4+ Pj4+Pgo+ID4gPiA+Pj4+Pgo+ID4gPiA+Pj4+Pgo+ID4gPiA+Pj4+PiAtLQo+ID4gPiA+Pj4+PiBE YW5pZWwgVmV0dGVyCj4gPiA+ID4+Pj4+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3Jh dGlvbgo+ID4gPiA+Pj4+PiArNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xs LmNoCj4gPiA+ID4+Pgo+ID4gPiA+Pgo+ID4gPiA+PiBOaWNob2xhcyBLYXpsYXVza2FzCj4gPiA+ ID4+Cj4gPiA+ID4KPiA+ID4gPgo+ID4gPgo+ID4KPiA+Cj4gPiAtLQo+ID4gRGFuaWVsIFZldHRl cgo+ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiArNDEgKDApIDc5 IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0 d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWls aW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4