From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 09/60] drm/bridge: Add connector-related bridge operations and data Date: Wed, 14 Aug 2019 14:40:06 +0200 Message-ID: <20190814124006.GD7444@phenom.ffwll.local> References: <20190711155035.GO15868@phenom.ffwll.local> <7797e98a-9587-b501-9869-9393b6fc6bd2@samsung.com> <20190716090039.GW15868@phenom.ffwll.local> <9c21691c-ffd1-43ed-13f8-121271ff053e@samsung.com> <20190808193214.GA6055@pendragon.ideasonboard.com> <3d23b62c-2ddb-3a5d-1aa8-7e569b6def71@samsung.com> <20190810224313.GG4788@pendragon.ideasonboard.com> <20190814100403.GC5009@pendragon.ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9C7E36E2F2 for ; Wed, 14 Aug 2019 12:40:11 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id w5so6943760edl.8 for ; Wed, 14 Aug 2019 05:40:11 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190814100403.GC5009@pendragon.ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Maxime Ripard , Sebastian Reichel , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBBdWcgMTQsIDIwMTkgYXQgMDE6MDQ6MDNQTSArMDMwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBIaSBBbmRyemVqLAo+IAo+IE9uIFdlZCwgQXVnIDE0LCAyMDE5IGF0IDA4OjIz OjEyQU0gKzAyMDAsIEFuZHJ6ZWogSGFqZGEgd3JvdGU6Cj4gPiBIaSBMYXVyZW50LAo+ID4gCj4g PiBTb3JyeSBmb3IgbGF0ZSByZXNwb25zZS4KPiAKPiBObyB3b3JyaWVzLgo+IAo+ID4gT24gMTEu MDguMjAxOSAwMDo0MywgTGF1cmVudCBQaW5jaGFydCB3cm90ZToKPiA+ID4gT24gRnJpLCBBdWcg MDksIDIwMTkgYXQgMDE6NTU6NTNQTSArMDIwMCwgQW5kcnplaiBIYWpkYSB3cm90ZToKPiA+ID4+ IE9uIDA4LjA4LjIwMTkgMjE6MzIsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPiA+Pj4gT24g VHVlLCBKdWwgMTYsIDIwMTkgYXQgMDM6NTc6MjFQTSArMDIwMCwgQW5kcnplaiBIYWpkYSB3cm90 ZToKPiA+ID4+Pj4gT24gMTYuMDcuMjAxOSAxMTowMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ ID4+Pj4+IE9uIEZyaSwgSnVsIDEyLCAyMDE5IGF0IDExOjAxOjM4QU0gKzAyMDAsIEFuZHJ6ZWog SGFqZGEgd3JvdGU6Cj4gPiA+Pj4+Pj4gT24gMTEuMDcuMjAxOSAxNzo1MCwgRGFuaWVsIFZldHRl ciB3cm90ZToKPiA+ID4+Pj4+Pj4gT24gVGh1LCBKdWwgMTEsIDIwMTkgYXQgMDU6MTI6MjZQTSAr MDIwMCwgQW5kcnplaiBIYWpkYSB3cm90ZToKPiA+ID4+Pj4+Pj4+IE9uIDExLjA3LjIwMTkgMTU6 MTgsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+Pj4+Pj4+Pj4gT24gVGh1LCBKdWwgMTEsIDIw MTkgYXQgMDI6NDE6MDFQTSArMDIwMCwgQW5kcnplaiBIYWpkYSB3cm90ZToKPiA+ID4+Pj4+Pj4+ Pj4gT24gMTEuMDcuMjAxOSAwOTozNSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4+Pj4+Pj4+ Pj4+IE9uIFdlZCwgSnVsIDEwLCAyMDE5IGF0IDAyOjEyOjE0UE0gKzAyMDAsIEFuZHJ6ZWogSGFq ZGEgd3JvdGU6Cj4gPiA+Pj4+Pj4+Pj4+Pj4gSGkgTGF1cmVudCwKPiA+ID4+Pj4+Pj4+Pj4+Pgo+ ID4gPj4+Pj4+Pj4+Pj4+IEkgbGlrZSB0aGUgYXBwcm9hY2gsIGN1cnJlbnQgcHJhY3RpY2Ugd2hl biBhbG1vc3QgZXZlcnkgYnJpZGdlIHNob3VsZAo+ID4gPj4+Pj4+Pj4+Pj4+IG9wdGlvbmFsbHkg aW1wbGVtZW50IGNvbm5lY3Rvciwgb3IgYWx0ZXJuYXRpdmVseSBkb3duc3RyZWFtIGJyaWRnZSBv cgo+ID4gPj4+Pj4+Pj4+Pj4+IHBhbmVsIGlzIHZlcnkgcGFpbmZ1bC4KPiA+ID4+Pj4+Pj4+Pj4+ IFllYWggSSB0aGluayB0aGlzIGxvb2tzIG1vc3RseSByZWFzb25hYmxlLiBTb21lIGFwaSBkZXNp Z24gY29tbWVudHMgb24gdG9wCj4gPiA+Pj4+Pj4+Pj4+PiBvZiBBbmRyemVqJywgd2l0aCB0aGUg ZmFpciB3YXJuaW5nIHRoYXQgSSBkaWRuJ3QgYm90aGVyIHRvIHJlYWQgdXAgb24gaG93Cj4gPiA+ Pj4+Pj4+Pj4+PiBpdCdzIGFsbCB1c2VkIGluIHRoZSBlbmQuIEkgcHJvYmFibHkgc2hvdWxkIGdv IGFuZCBkbyB0aGF0LCBhdCBsZWFzdCB0bwo+ID4gPj4+Pj4+Pj4+Pj4gZ2V0IGEgZmVlbGluZyBm b3Igd2hhdCB5b3VyIGhwZF9jYiB1c3VhbGx5IGRvZXMuCj4gPiA+Pj4+Pj4+Pj4+Pgo+ID4gPj4+ Pj4+Pj4+Pj4+IE1vcmUgY29tbWVudHMgaW5saW5lZC4KPiA+ID4+Pj4+Pj4+Pj4+Pgo+ID4gPj4+ Pj4+Pj4+Pj4+IE9uIDA3LjA3LjIwMTkgMjA6MTgsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4g PiA+Pj4+Pj4+Pj4+Pj4+IFRvIHN1cHBvcnQgaW1wbGVtZW50YXRpb24gb2YgRFJNIGNvbm5lY3Rv cnMgb24gdG9wIG9mIERSTSBicmlkZ2VzCj4gPiA+Pj4+Pj4+Pj4+Pj4+IGluc3RlYWQgb2YgYnkg YnJpZGdlcywgdGhlIGRybV9icmlkZ2UgbmVlZHMgdG8gZXhwb3NlIG5ldyBvcGVyYXRpb25zIGFu ZAo+ID4gPj4+Pj4+Pj4+Pj4+PiBkYXRhOgo+ID4gPj4+Pj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+ Pj4+PiAtIE91dHB1dCBkZXRlY3Rpb24sIGhvdC1wbHVnIG5vdGlmaWNhdGlvbiwgbW9kZSByZXRy aWV2YWwgYW5kIEVESUQKPiA+ID4+Pj4+Pj4+Pj4+Pj4gICByZXRyaWV2YWwgb3BlcmF0aW9ucwo+ ID4gPj4+Pj4+Pj4+Pj4+PiAtIEJpdG1hc2sgb2Ygc3VwcG9ydGVkIG9wZXJhdGlvbnMKPiA+ID4+ Pj4+Pj4+Pj4+PiBXaHkgZG8gd2UgbmVlZCB0aGVzZSBiaXRtYXNrIGF0IGFsbD8gV2h5IGNhbm5v dCB3ZSByZWx5IG9uIHByZXNlbmNlIG9mCj4gPiA+Pj4+Pj4+Pj4+Pj4gb3BlcmF0aW9uJ3MgY2Fs bGJhY2s/Cj4gPiA+Pj4+Pj4+Pj4+PiBZZWFoIGFsc28gbm90IGEgaHVnZSBmYW4gb2YgdGhlc2Ug Yml0bWFza3MuIFNtZWxscyBsaWtlCj4gPiA+Pj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4gRFJJ VkVSX0dFTXxEUklWRVJfTU9ERVNFVCwgYW5kIEkgcGVyc29uYWxseSByZWFsbHkgaGF0ZSB0aG9z ZS4gRWFzeSB0bwo+ID4gPj4+Pj4+Pj4+Pj4gYWRkLCBnZW5lcmFsbHkgZ29vZCBleGN1c2UgdG8g bm90IGhhdmUgdG8gdGhpbmsgdGhyb3VnaCB0aGUgZGVzaWduIGJldHdlZW4KPiA+ID4+Pj4+Pj4+ Pj4+IGRpZmZlcmVudCBwYXJ0cyBvZiBkcml2ZXJzIC0gImp1c3QiIGFkZCBhbm90aGVyIGZsYWcu Cj4gPiA+Pj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4+PiAtIEJyaWRnZSBvdXRwdXQgdHlwZQo+ ID4gPj4+Pj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4+PiBBZGQgYW5kIGRvY3VtZW50IHRoZXNl Lgo+ID4gPj4+Pj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4+PiBUaHJlZSBuZXcgYnJpZGdlIGhl bHBlciBmdW5jdGlvbnMgYXJlIGFsc28gYWRkZWQgdG8gaGFuZGxlIGhvdCBwbHVnCj4gPiA+Pj4+ Pj4+Pj4+Pj4+IG5vdGlmaWNhdGlvbiBpbiBhIHdheSB0aGF0IGlzIGFzIHRyYW5zcGFyZW50IGFz IHBvc3NpYmxlIGZvciB0aGUKPiA+ID4+Pj4+Pj4+Pj4+Pj4gYnJpZGdlcy4KPiA+ID4+Pj4+Pj4+ Pj4+PiBEb2N1bWVudGF0aW9uIG9mIG5ldyBvcHNlcyBkb2VzIG5vdCBleHBsYWluIGhvdyBpdCBz aG91bGQgY29vcGVyYXRlIHdpdGgKPiA+ID4+Pj4+Pj4+Pj4+PiBicmlkZ2UgY2hhaW5pbmcsIEkg c3VwcG9zZSB0aGV5IHNob3VsZCBiZSBjaGFpbmVkIGV4cGxpY2l0bHksIGFtIEkKPiA+ID4+Pj4+ Pj4+Pj4+PiByaWdodD8gTW9yZSBjb21tZW50cyBhYm91dCBpdCBsYXRlci4KPiA+ID4+Pj4+Pj4+ Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxs YXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+Cj4gPiA+Pj4+Pj4+Pj4+Pj4+IC0tLQo+ ID4gPj4+Pj4+Pj4+Pj4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyB8ICA5MiArKysr KysrKysrKysrKysrKysrCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICBpbmNsdWRlL2RybS9kcm1fYnJpZGdl LmggICAgIHwgMTcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPiA+Pj4+ Pj4+Pj4+Pj4+ICAyIGZpbGVzIGNoYW5nZWQsIDI2MSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCj4gPiA+Pj4+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ ID4gPj4+Pj4+Pj4+Pj4+PiBpbmRleCA1MTk1NzdmMzYzZTMuLjNjMmEyNTVkZjdhZiAxMDA2NDQK PiA+ID4+Pj4+Pj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ID4g Pj4+Pj4+Pj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gPiA+Pj4+ Pj4+Pj4+Pj4+IEBAIC03MCw2ICs3MCw4IEBAIHN0YXRpYyBMSVNUX0hFQUQoYnJpZGdlX2xpc3Qp Owo+ID4gPj4+Pj4+Pj4+Pj4+PiAgICovCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICB2b2lkIGRybV9icmlk Z2VfYWRkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICB7Cj4g PiA+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhfaW5pdCgmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4gPj4+ Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAJbXV0ZXhfbG9jaygmYnJpZGdlX2xvY2sp Owo+ID4gPj4+Pj4+Pj4+Pj4+PiAgCWxpc3RfYWRkX3RhaWwoJmJyaWRnZS0+bGlzdCwgJmJyaWRn ZV9saXN0KTsKPiA+ID4+Pj4+Pj4+Pj4+Pj4gIAltdXRleF91bmxvY2soJmJyaWRnZV9sb2NrKTsK PiA+ID4+Pj4+Pj4+Pj4+Pj4gQEAgLTg2LDYgKzg4LDggQEAgdm9pZCBkcm1fYnJpZGdlX3JlbW92 ZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gPj4+Pj4+Pj4+Pj4+PiAgCW11dGV4X2xv Y2soJmJyaWRnZV9sb2NrKTsKPiA+ID4+Pj4+Pj4+Pj4+Pj4gIAlsaXN0X2RlbF9pbml0KCZicmlk Z2UtPmxpc3QpOwo+ID4gPj4+Pj4+Pj4+Pj4+PiAgCW11dGV4X3VubG9jaygmYnJpZGdlX2xvY2sp Owo+ID4gPj4+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhfZGVzdHJveSgm YnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4gPj4+Pj4+Pj4+Pj4+PiAgfQo+ID4gPj4+Pj4+Pj4+Pj4+ PiAgRVhQT1JUX1NZTUJPTChkcm1fYnJpZGdlX3JlbW92ZSk7Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAK PiA+ID4+Pj4+Pj4+Pj4+Pj4gQEAgLTQ2Myw2ICs0NjcsOTQgQEAgdm9pZCBkcm1fYXRvbWljX2Jy aWRnZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ID4+Pj4+Pj4+Pj4+Pj4g IH0KPiA+ID4+Pj4+Pj4+Pj4+Pj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19icmlkZ2VfZW5h YmxlKTsKPiA+ID4+Pj4+Pj4+Pj4+Pj4gIAo+ID4gPj4+Pj4+Pj4+Pj4+PiArLyoqCj4gPiA+Pj4+ Pj4+Pj4+Pj4+ICsgKiBkcm1fYnJpZGdlX2hwZF9lbmFibGUgLSBlbmFibGUgaG90IHBsdWcgZGV0 ZWN0aW9uIGZvciB0aGUgYnJpZGdlCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBAYnJpZGdlOiBicmlk Z2UgY29udHJvbCBzdHJ1Y3R1cmUKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIEBjYjogaG90LXBsdWcg ZGV0ZWN0aW9uIGNhbGxiYWNrCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBAZGF0YTogZGF0YSB0byBi ZSBwYXNzZWQgdG8gdGhlIGhvdC1wbHVnIGRldGVjdGlvbiBjYWxsYmFjawo+ID4gPj4+Pj4+Pj4+ Pj4+PiArICoKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIENhbGwgJmRybV9icmlkZ2VfZnVuY3MuaHBk X2VuYWJsZSBhbmQgcmVnaXN0ZXIgdGhlIGdpdmVuIEBjYiBhbmQgQGRhdGEgYXMKPiA+ID4+Pj4+ Pj4+Pj4+Pj4gKyAqIGhvdCBwbHVnIG5vdGlmaWNhdGlvbiBjYWxsYmFjay4gRnJvbSBub3cgb24g dGhlIEBjYiB3aWxsIGJlIGNhbGxlZCB3aXRoCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBAZGF0YSB3 aGVuIGFuIG91dHB1dCBzdGF0dXMgY2hhbmdlIGlzIGRldGVjdGVkIGJ5IHRoZSBicmlkZ2UsIHVu dGlsIGhvdCBwbHVnCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBub3RpZmljYXRpb24gZ2V0cyBkaXNh YmxlZCB3aXRoIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoKS4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKyAq Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBIb3QgcGx1ZyBkZXRlY3Rpb24gaXMgc3VwcG9ydGVkIG9u bHkgaWYgdGhlIERSTV9CUklER0VfT1BfSFBEIGZsYWcgaXMgc2V0IGluCj4gPiA+Pj4+Pj4+Pj4+ Pj4+ICsgKiBicmlkZ2UtPm9wcy4gVGhpcyBmdW5jdGlvbiBzaGFsbCBub3QgYmUgY2FsbGVkIHdo ZW4gdGhlIGZsYWcgaXMgbm90IHNldC4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKyAqCj4gPiA+Pj4+Pj4+ Pj4+Pj4+ICsgKiBPbmx5IG9uZSBob3QgcGx1ZyBkZXRlY3Rpb24gY2FsbGJhY2sgY2FuIGJlIHJl Z2lzdGVyZWQgYXQgYSB0aW1lLCBpdCBpcyBhbgo+ID4gPj4+Pj4+Pj4+Pj4+PiArICogZXJyb3Ig dG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gaG90IHBsdWcgZGV0ZWN0aW9uIGlzIGFscmVhZHkg ZW5hYmxlZCBmb3IKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIHRoZSBicmlkZ2UuCj4gPiA+Pj4+Pj4+ Pj4+Pj4+ICsgKi8KPiA+ID4+Pj4+Pj4+Pj4+PiBUbyBzaW1wbGlmeSBhcmNoaXRlY3R1cmUgbWF5 YmUgd291bGQgYmUgYmV0dGVyIHRvIGVuYWJsZSBocGQganVzdCBvbgo+ID4gPj4+Pj4+Pj4+Pj4+ IGJyaWRnZSBhdHRhY2g6Cj4gPiA+Pj4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+PiBicmlkZ2Ut PmhwZF9jYiA9IGNiOwo+ID4gPj4+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+Pj4gYnJpZGdlLT5o cGRfZGF0YSA9IGRhdGE7Cj4gPiA+Pj4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+PiByZXQgPSBk cm1fYnJpZGdlX2F0dGFjaCguLi4pOwo+ID4gPj4+Pj4+Pj4+Pj4gWWVhaCBJIGxpa2UgdGhpcyBt b3JlLiBUaGUgb3RoZXIgcHJvYmxlbSBoZXJlIGlzLCB3aGF0IGlmIHlvdSBuZWVkIG1vcmUKPiA+ ID4+Pj4+Pj4+Pj4+IHRoYW4gMSBjYWxsYmFjayByZWdpc3RlcnMgb24gdGhlIHNhbWUgYnJpZGdl IGhkcCBzaWduYWw/Cj4gPiA+Pj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4+IFRoaXMgd2F5IHdl IGNvdWxkIGF2b2lkIGFkZGluZyBuZXcgY2FsbGJhY2tzIGhwZF8oZW5hYmxlfGRpc2FibGUpCj4g PiA+Pj4+Pj4+Pj4+Pj4gd2l0aG91dCBiaWcgc2FjcmlmaWNlcy4KPiA+ID4+Pj4+Pj4+Pj4+Pgo+ ID4gPj4+Pj4+Pj4+Pj4+IE9uZSBtb3JlIHRoaW5nOiBIUEQgaW4gRGlzcGxheVBvcnQvSERNSSBi ZXNpZGUgc2lnbmFsbGluZyBwbHVnL3VucGx1ZywKPiA+ID4+Pj4+Pj4+Pj4+PiBub3RpZmllcyBh Ym91dCBzaW5rIHN0YXR1cyBjaGFuZ2UsIGhvdyBpdCB0cmFuc2xhdGVzIHRvIHRoaXMgY2I/Cj4g PiA+Pj4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZW5h YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJCQkgICB2 b2lkICgqY2IpKHZvaWQgKmRhdGEsCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJCQkJICAgICAgZW51bSBk cm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpLAo+ID4gPj4+Pj4+Pj4+Pj4+PiArCQkJICAgdm9p ZCAqZGF0YSkKPiA+ID4+Pj4+Pj4+Pj4+Pj4gK3sKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwlpZiAoIWJy aWRnZSB8fCAhYnJpZGdlLT5mdW5jcy0+aHBkX2VuYWJsZSkKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkJ cmV0dXJuOwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhfbG9j aygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+ Pj4+ICsJaWYgKFdBUk4oYnJpZGdlLT5ocGRfY2IsICJIb3QgcGx1ZyBkZXRlY3Rpb24gYWxyZWFk eSBlbmFibGVkXG4iKSkKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkJZ290byB1bmxvY2s7Cj4gPiA+Pj4+ Pj4+Pj4+Pj4+ICsKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwlicmlkZ2UtPmhwZF9jYiA9IGNiOwo+ID4g Pj4+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+aHBkX2RhdGEgPSBkYXRhOwo+ID4gPj4+Pj4+Pj4+Pj4+ PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJYnJpZGdlLT5mdW5jcy0+aHBkX2VuYWJsZShicmlkZ2Up Owo+ID4gPj4+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICt1bmxvY2s6Cj4gPiA+Pj4+ Pj4+Pj4+Pj4+ICsJbXV0ZXhfdW5sb2NrKCZicmlkZ2UtPmhwZF9tdXRleCk7Cj4gPiA+Pj4+Pj4+ Pj4+Pj4+ICt9Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1fYnJpZGdl X2hwZF9lbmFibGUpOwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsvKioK PiA+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUgLSBkaXNhYmxlIGhv dCBwbHVnIGRldGVjdGlvbiBmb3IgdGhlIGJyaWRnZQo+ID4gPj4+Pj4+Pj4+Pj4+PiArICogQGJy aWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKgo+ID4g Pj4+Pj4+Pj4+Pj4+PiArICogQ2FsbCAmZHJtX2JyaWRnZV9mdW5jcy5ocGRfZGlzYWJsZSBhbmQg dW5yZWdpc3RlciB0aGUgaG90IHBsdWcgZGV0ZWN0aW9uCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBj YWxsYmFjayBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgd2l0aCBkcm1fYnJpZGdlX2hwZF9lbmFibGUo KS4gT25jZSB0aGlzCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBmdW5jdGlvbiByZXR1cm5zIHRoZSBj YWxsYmFjayB3aWxsIG5vdCBiZSBjYWxsZWQgYnkgdGhlIGJyaWRnZSB3aGVuIGFuCj4gPiA+Pj4+ Pj4+Pj4+Pj4+ICsgKiBvdXRwdXQgc3RhdHVzIGNoYW5nZSBvY2N1cnMuCj4gPiA+Pj4+Pj4+Pj4+ Pj4+ICsgKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArICogSG90IHBsdWcgZGV0ZWN0aW9uIGlzIHN1cHBv cnRlZCBvbmx5IGlmIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGlzIHNldCBpbgo+ID4gPj4+ Pj4+Pj4+Pj4+PiArICogYnJpZGdlLT5vcHMuIFRoaXMgZnVuY3Rpb24gc2hhbGwgbm90IGJlIGNh bGxlZCB3aGVuIHRoZSBmbGFnIGlzIG5vdCBzZXQuCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKi8KPiA+ ID4+Pj4+Pj4+Pj4+Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZGlzYWJsZShzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlKQo+ID4gPj4+Pj4+Pj4+Pj4+PiArewo+ID4gPj4+Pj4+Pj4+Pj4+PiArCWlm ICghYnJpZGdlIHx8ICFicmlkZ2UtPmZ1bmNzLT5ocGRfZGlzYWJsZSkKPiA+ID4+Pj4+Pj4+Pj4+ Pj4gKwkJcmV0dXJuOwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJbXV0 ZXhfbG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCWJyaWRnZS0+ ZnVuY3MtPmhwZF9kaXNhYmxlKGJyaWRnZSk7Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsKPiA+ID4+Pj4+ Pj4+Pj4+Pj4gKwlicmlkZ2UtPmhwZF9jYiA9IE5VTEw7Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJYnJp ZGdlLT5ocGRfZGF0YSA9IE5VTEw7Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJbXV0ZXhfdW5sb2NrKCZi cmlkZ2UtPmhwZF9tdXRleCk7Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICt9Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1fYnJpZGdlX2hwZF9kaXNhYmxlKTsKPiA+ID4+Pj4+Pj4+ Pj4+Pj4gKwo+ID4gPj4+Pj4+Pj4+Pj4+PiArLyoqCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBkcm1f YnJpZGdlX2hwZF9ub3RpZnkgLSBub3RpZnkgaG90IHBsdWcgZGV0ZWN0aW9uIGV2ZW50cwo+ID4g Pj4+Pj4+Pj4+Pj4+PiArICogQGJyaWRnZTogYnJpZGdlIGNvbnRyb2wgc3RydWN0dXJlCj4gPiA+ Pj4+Pj4+Pj4+Pj4+ICsgKiBAc3RhdHVzOiBvdXRwdXQgY29ubmVjdGlvbiBzdGF0dXMKPiA+ID4+ Pj4+Pj4+Pj4+Pj4gKyAqCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsgKiBCcmlkZ2UgZHJpdmVycyBzaGFs bCBjYWxsIHRoaXMgZnVuY3Rpb24gdG8gcmVwb3J0IGhvdCBwbHVnIGV2ZW50cyB3aGVuIHRoZXkK PiA+ID4+Pj4+Pj4+Pj4+Pj4gKyAqIGRldGVjdCBhIGNoYW5nZSBpbiB0aGUgb3V0cHV0IHN0YXR1 cywgd2hlbiBob3QgcGx1ZyBkZXRlY3Rpb24gaGFzIGJlZW4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKyAq IGVuYWJsZWQgYnkgdGhlICZkcm1fYnJpZGdlX2Z1bmNzLmhwZF9lbmFibGUgY2FsbGJhY2suCj4g PiA+Pj4+Pj4+Pj4+Pj4+ICsgKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArICogVGhpcyBmdW5jdGlvbiBz aGFsbCBiZSBjYWxsZWQgaW4gYSBjb250ZXh0IHRoYXQgY2FuIHNsZWVwLgo+ID4gPj4+Pj4+Pj4+ Pj4+PiArICovCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX25vdGlmeShz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4gPj4+Pj4+Pj4+Pj4+PiArCQkJICAgZW51bSBk cm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICt7Cj4gPiA+Pj4+ Pj4+Pj4+Pj4+ICsJbXV0ZXhfbG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4gPj4+Pj4+Pj4+ Pj4+PiArCWlmIChicmlkZ2UtPmhwZF9jYikKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkJYnJpZGdlLT5o cGRfY2IoYnJpZGdlLT5ocGRfZGF0YSwgc3RhdHVzKTsKPiA+ID4+Pj4+Pj4+Pj4+IFNvIHRoaXMg aXNuJ3QgcXVpdGUgd2hhdCBJIGhhZCBpbiBtaW5kLiBJbnN0ZWFkIHNvbWV0aGluZyBsaWtlIHRo aXM6Cj4gPiA+Pj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4gCS8qIGl0ZXJhdGVzIG92ZXIgYWxs IGJyaWRnZXMgaW4gdGhlIGNoYWluIGNvbnRhaW5pbmcgQGJyaWRnZSAqLwo+ID4gPj4+Pj4+Pj4+ Pj4gCWZvcl9lYWNoX2JyaWRnZSh0bXBfYnJpZGdlLCBicmlkZ2UpIHsKPiA+ID4+Pj4+Pj4+Pj4+ IAkJaWYgKHRtcF9icmlkZ2UgPT0gYnJpZGdlKQo+ID4gPj4+Pj4+Pj4+Pj4gCQkJY29udGludWU7 Cj4gPiA+Pj4+Pj4+Pj4+PiAJCWlmIChicmlkZ2UtPmhwZF9ub3RpZnkpOwo+ID4gPj4+Pj4+Pj4+ Pj4gCQkJYnJpZGdlLT5ocGRfbm90aWZ5KHRtcF9icmlkZ2UsIGJyaWRnZSwgc3RhdHVzKTsKPiA+ ID4+Pj4+Pj4+Pj4+IAl9Cj4gPiA+Pj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4gCWVuY29kZXIg PSBlbmNvZGVyX2Zvcl9icmlkZ2UoYnJpZGdlKTsKPiA+ID4+Pj4+Pj4+Pj4+IAlpZiAoZW5jb2Rl ci0+aGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90aWZ5KQo+ID4gPj4+Pj4+Pj4+Pj4gCQll bmNvZGVyLT5oZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkoZW5jb2RlciwgYnJpZGdl LCBzdGF0dXMpOwo+ID4gPj4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+IAlkZXYgPSBicmlkZ2Ut PmRldgo+ID4gPj4+Pj4+Pj4+Pj4gCWlmIChkZXYtPm1vZGVfY29uZmlnLmhlbHBlcl9wcml2YXRl LT5icmlkZ2VfaHBkX25vdGlmeSkKPiA+ID4+Pj4+Pj4+Pj4+IAkJZGV2LT5tb2RlX2NvbmZpZy5o ZWxwZXJfcHJpdmF0ZS0+YnJpZGdlX2hwZF9ub3RpZnkoZGV2LCBicmlkZ2UsIHN0YXR1cykKPiA+ ID4+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+PiBObyByZWdpc3RlciBjYWxsYmFjayBuZWVkZWQs IG5vIGxvY2tpbmcgbmVlZGVkLCBldmVyeW9uZSBnZXRzIGV4YWN0bHkgdGhlCj4gPiA+Pj4+Pj4+ Pj4+PiBocGQgdGhleSB3YW50L25lZWQuCj4gPiA+Pj4+Pj4+Pj4+IEFzIEkgdW5kZXJzdGFuZCB5 b3Ugd2FudCB0byBub3RpZnkgZXZlcnkgbWVtYmVyIG9mIHRoZSBwaXBlbGluZS4KPiA+ID4+Pj4+ Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4gSSB0aGluayBpdCBzaG91bGQgYmUgZW5vdWdoIHRvIG5vdGlm eSBvbmx5IHRoZSBzb3VyY2UsIGFuZCB0aGVuIHNvdXJjZQo+ID4gPj4+Pj4+Pj4+PiBzaG91bGQg ZGVjaWRlIGlmL3doZW4gdGhlIGhwZCBzaG91bGQgYmUgcHJvcGFnYXRlZCB1cHN0cmVhbS4KPiA+ ID4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4gSXQgbG9va3MgbW9yZSBnZW5lcmljIGZvciBtZS4K PiA+ID4+Pj4+Pj4+PiBJJ20gbm90IHBhcnNpbmcgLi4uIGRvIHlvdSB0aGluayBteSBpZGVhIGlz IG1vcmUgZ2VuZXJpYyBhbmQgdXNlZnVsLCBvcgo+ID4gPj4+Pj4+Pj4+IHRoZSBvbmUgZnJvbSBM YXVyZW50PyBLaW5kYSBjb25mdXNlZCBoZXJlLgo+ID4gPj4+Pj4+Pj4gUmVnYXJkaW5nIGdlbmVy YWwgaWRlYToKPiA+ID4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+PiAxLiBMYXVyZW50J3MgYXBwcm9hY2gg aXMgdG8gbm90aWZ5IG9ubHkgY29uc3VtZXIsIEkgZ3Vlc3MgdXN1YWxseSB2aWRlbwo+ID4gPj4+ Pj4+Pj4gc291cmNlLgo+ID4gPj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+IDIuIFlvdXIgaXMgdG8gbm90 aWZ5IGFsbCBvdGhlciBicmlkZ2VzIGFuZCBlbmNvZGVyLgo+ID4gPj4+Pj4+Pj4KPiA+ID4+Pj4+ Pj4+IEFuZCBJIHByZWZlciAxc3QgYXBwcm9hY2gsIHdoeToKPiA+ID4+Pj4+Pj4+Cj4gPiA+Pj4+ Pj4+PiAtIHRoZSBzb3VyY2UgY2FuIGRlY2lkZSBpZi93aGVuIGFuZCB0byB3aG8gcHJvcGFnYXRl IHRoZSBzaWduYWwsCj4gPiA+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4gLSBpcyBtb3JlIGdlbmVyaWMs IGZvciBleGFtcGxlIGlmIGJyaWRnZSBzZW5kIHNpZ25hbCB0byB0d28KPiA+ID4+Pj4+Pj4+IG1v bml0b3JzL3BhbmVscywgaXQgY2FuIGRlbGF5IGhwZCBwcm9wYWdhdGlvbiB0aWxsIGJvdGggc2lu a3MgYXJlIHByZXNlbnQsCj4gPiA+Pj4+Pj4+IFdpdGggTGF1cmVudCdzIGFwcHJvYWNoIHRoZSBi cmlkZ2UgY2Fubm90IHNlbmQgdGhlIGhwZCB0byBtb3JlIHRoYW4gb25lCj4gPiA+Pj4+Pj4+IGNv bnN1bWVyLiBUaGVyZSdzIG9ubHkgMSBjYWxsYmFjay4gU28geW91J3JlIGV4YW1wbGUgZG9lc24n dCB3b3JrLgo+ID4gPj4+Pj4+IElmIHRoZXJlIHdpbGwgYmUgdHdvIGNvbnN1bWVycywgdGhlcmUg d2lsbCBiZSB0d28gYnJpZGdlIGF0dGFjaG1lbnRzLAo+ID4gPj4+Pj4+IHRodXMgdGhlcmUgd2ls bCBiZSB0d28gbm90aWZpY2F0aW9ucywgaXQgc2hvdWxkIHdvcmsuCj4gPiA+Pj4+PiAyIGNvbnN1 bWVycywgMSBwcm9kdWNlci4gVGhlcmUncyBvbmx5IF9vbmVfIGNhbGxiYWNrIGluIHRoZSBwcm9k dWNlci4gVGhlCj4gPiA+Pj4+PiBjYWxsYmFjayBpcyByZWdpc3RlcmVkIG9uIHRoZSBwcm9kdWNl IGJyaWRnZSwgbm90IG9uIHRoZSBjb25zdW1lciBicmlkZ2UKPiA+ID4+Pj4+IChvciBJJ20gdG90 YWxsbHkgbWlzcmVhZGluZyB3aGF0IExhdXJlbnQgZG9lcyBoZXJlKS4KPiA+ID4+Pj4gSSBoYXZl IGFzc3VtZWQgdGhhdCBpZiBkZXZpY2VzIGV4cG9zZXMgdHdvIGhhcmR3YXJlIHNpbmsgaW50ZXJm YWNlcyBpdAo+ID4gPj4+PiB3aWxsIGV4cG9zZSB0d28gc2VwYXJhdGUgYnJpZGdlcyAtIG9mIGNv dXJzZSBpdCB3aWxsIG5vdCB3b3JrIHdpdGgKPiA+ID4+Pj4gImJyaWRnZSBjaGFpbmluZyIgdGhp bmcsIGJ1dCB0aGlzIGlzIGEgZGlmZmVyZW50IHN0b3J5Lgo+ID4gPj4+IERhbmllbCBpcyByaWdo dCB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHkgYWxsb3dzIG9uZQo+ID4gPj4+ IGNvbnN1bWVyLiBUaGlzIGlzIGhvd2V2ZXIgbm90IGEgbGltaXRhdGlvbiBvZiB0aGUgQVBJLCBi dXQgb2YgaXRzCj4gPiA+Pj4gaW1wbGVtZW50YXRpb24sIGFzIEkgb25seSBuZWVkZWQgYSBzaW5n bGUgY29uc3VtZXIuIFRoZSBoZWxwZXJzIGluIHRoaXMKPiA+ID4+PiBzZXJpZXMgZW5zdXJlIHRo YXQgbmVpdGhlciB0aGUgY29uc3VtZXIgbm9yIHRoZSBwcm9kdWNlciBwb2tlIGluIHRoZQo+ID4g Pj4+IGRybV9icmlkZ2Ugc3RydWN0dXJlIHRvIGNhbGwgYmFjayB0byB0aGUgSFBEIGhhbmRsZXI6 Cj4gPiA+Pj4KPiA+ID4+PiAtIFRoZSBjb25zdW1lciBjYWxscyBkcm1fYnJpZGdlX2hwZF9lbmFi bGUoKSBhbmQKPiA+ID4+PiAgIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoKSwgd2hpY2ggY291bGQg b2ZmZXIgYSByZWZlcmVuY2UtY291bnRlZAo+ID4gPj4+ICAgYmVoYXZpb3VyIGlmIGRlc2lyZWQg d2l0aG91dCBjaGFuZ2VzIHRvIHRoZSBjb25zdW1lci4KPiA+ID4+Pgo+ID4gPj4+IC0gVGhlIHBy b2R1Y2VyIGdldHMgY29uZmlndXJlZCBieSAuaHBkX2VuYWJsZSgpIGFuZCAuaHBkX2Rpc2FibGUo KSwKPiA+ID4+PiAgIHdoaWNoIGNvdWxkIGFsc28gZWFzaWx5IGFjY29tbW9kYXRlIHJlZmVyZW5j ZS1jb3VudGluZyBpbiB0aGUgZHJtCj4gPiA+Pj4gICBicmlkZ2UgY29yZSB3aXRob3V0IGNoYW5n ZXMgdG8gdGhlIHByb2R1Y2VyLgo+ID4gPj4+Cj4gPiA+Pj4gLSBUaGUgcHJvZHVjZXIgbm90aWZp ZXMgSFBEIHdpdGggZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCksIHdoaWNoIGNvdWxkCj4gPiA+Pj4g ICBlYXNpbHkgYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBjb25zdW1lcnMgd2l0aG91 dCBjaGFuZ2VzIHRvCj4gPiA+Pj4gICB0aGUgcHJvZHVjZXIuCj4gPiA+Pj4KPiA+ID4+PiBUaGlz IGlzIGFjdHVhbGx5IG15IHNlY29uZCB2ZXJzaW9uIG9mIHRoZSBIUEQgbWVjaGFuaXNtLiBUaGUg Zmlyc3QKPiA+ID4+PiB2ZXJzaW9uIHdhcyBuZXZlciBwb3N0ZWQsIHBva2VkIGludG8gZHJtX2Jy aWRnZSwgYW5kIHJlcXVpcmVkIHRoZQo+ID4gPj4+IHByb2R1Y2VyIHRvIGJlIGF3YXJlIG9mIHRo ZSBjYWxsYmFja3MuIEFmdGVyIGRpc2N1c3NpbmcgdGhpcyBwcml2YXRlbHkKPiA+ID4+PiB3aXRo IERhbmllbCwgSSBjYW1lIHVwIHdpdGggdGhlIGltcGxlbWVudGF0aW9uIGluIHRoaXMgc2VyaWVz IHRoYXQsCj4gPiA+Pj4gd2hpbGUgbm90IHN1cHBvcnRpbmcgbXVsdGlwbGUgY29uc3VtZXJzIG5v dywgbWFrZXMgaXQgZWFzeSB0byBleHRlbmQKPiA+ID4+PiBsYXRlciB3aXRob3V0IG1pbmltYWwg ZWZmb3J0Lgo+ID4gPj4+Cj4gPiA+Pj4gRGFuaWVsJ3MgcHJvcG9zZWQgaW1wbGVtZW50YXRpb24g YWJvdmUgbG9va3MgcmVhc29uYWJsZSB0byBtZSwgcHJvdmlkZWQKPiA+ID4+PiB3ZSBjYW4gaXRl cmF0ZSBvdmVyIHRoZSBicmlkZ2VzIGluIGFuIG9yZGVyIHRoYXQgZG9uJ3QgZGVwZW5kIG9uIHRo ZQo+ID4gPj4+IHBvc2l0aW9uIG9mIHRoZSBwcm9kdWNlciBpbiB0aGUgY2hhaW4gKHNob3VsZCBi ZSBlYXN5IHRvIHNvbHZlIGJ5Cj4gPiA+Pj4gc3RhcnRpbmcgYXQgdGhlIGVuY29kZXIgZm9yIGlu c3RhbmNlKS4gSXQgaG93ZXZlciBsb29rcyBhIGJpdCBsaWtlIGEKPiA+ID4+PiBtaWRsYXllciB0 byBtZSA6LSkgVGhhdCdzIHdoeSBJIGhhdmUgYSBzaW1pbGFyIGltcGxlbWVudGF0aW9uIGluIHRo ZQo+ID4gPj4+IGNvbm5lY3Rvci1icmlkZ2UgaGVscGVyLCB3aGljaCBjb3VsZCBiZSBleHRlbmRl ZCB0byBjYWxsCj4gPiA+Pj4gZW5jb2Rlci0+aGVscGVyX3ByaXZhdGUtPmJyaWRnZV9ocGRfbm90 aWZ5KCkgYW5kCj4gPiA+Pj4gZGV2LT5tb2RlX2NvbmZpZy5oZWxwZXJfcHJpdmF0ZS0+YnJpZGdl X2hwZF9ub3RpZnkoKSBpbnN0ZWFkIG9mCj4gPiA+Pj4gaGFyZGNvZGluZyBkcm1fa21zX2hlbHBl cl9ob3RwbHVnX2V2ZW50KCkuIE1vdmluZyB0aGUgY29kZSB0bwo+ID4gPj4+IGRybV9icmlkZ2Vf aHBkX25vdGlmeSgpIHdvdWxkIG9uIHRoZSBvdGhlciBoYW5kIHNldCB0aGUgbm90aWZpY2F0aW9u Cj4gPiA+Pj4gc2VxdWVuY2UgdG93YXJkcyB0aGUgZW5jb2RlciBhbmQgZHJpdmVyIGluIHN0b25l LiBEYW5pZWwsIGRvIHlvdSB0aGluawo+ID4gPj4+IHRoYXQgd291bGQgYmUgYmV0dGVyID8KPiA+ ID4+Pgo+ID4gPj4+IEkgd291bGQgbGlrZSB0byByZW1pbmQgZXZlcnlib2R5IHRoYXQgdGhpcyBz ZXJpZXMgaXNuJ3QgdGhlIGxhc3QgSSB3aWxsCj4gPiA+Pj4gZXZlciBzdWJtaXQsIGFuZCBJIHBs YW4gdG8gZG8gbW9yZSB3b3JrIG9uIGRybV9icmlkZ2UgYW5kIGRybV9wYW5lbC4gSSdtCj4gPiA+ Pj4gb3BlbiB0byBzdWdnZXN0aW9ucywgYW5kIGNhbiBhZGRyZXNzIHByb2JsZW1zIG9uIHRvcCBv ZiB0aGVzZSBwYXRjaGVzLAo+ID4gPj4+IHByb3ZpZGVkIG9idmlvdXNseSB0aGF0IHRoaXMgc2Vy aWVzIGRvZXNuJ3QgZ28gaW4gdGhlIHdyb25nIGRpcmVjdGlvbi4KPiA+ID4+PiBJJ20gb2YgY291 cnNlIGFsc28gd2lsbGluZyB0byByZXdvcmsgdGhpcyBzZXJpZXMsIGJ1dCBnaXZlbiB0aGUgYW1v dW50Cj4gPiA+Pj4gb2Ygd29yayB3ZSBoYXZlIGluIHRoZSBkcm1fYnJpZGdlIHJlYWxtLCBJIGNh bid0IGZpeCBldmVyeXRoaW5nIGluIG9uZQo+ID4gPj4+IGdvIDotKQo+ID4gPj4+Cj4gPiA+Pj4+ Pj4+PiAtIGl0IHJlc2VtYmxlcyBoYXJkd2FyZSB3aXJlcyA6KQo+ID4gPj4+Pj4+PiBUaGlzIGlz bid0IGZvciB0aGUgaHcgd2lyZXMgYWZhaXVpLiBUaGUgaHcgaHBkIHRlcm1pbmF0ZXMgaW4gdGhl IHNvdXJjZQo+ID4gPj4+Pj4+PiBicmlkZ2UsIHdoaWNoIHRoZW4gY2FsbHMgZHJtX2JyaWRnZV9o cGRfbm90aWZ5KCkgdG8gaW5mb3JtIGFueW9uZSBlbHNlCj4gPiA+Pj4+Pj4+IGludGVyZXN0ZWQg aW4gdGhhdCBocGQgc2luZ2FsLiBUaGlzIGluY2x1ZGVzOgo+ID4gPj4+Pj4+PiAtIE90aGVyIGJy aWRnZXMsIGUuZy4gaWYgdGhleSBwcm92aWRlIENFQyBzdXBwb3J0Lgo+ID4gPj4+Pj4+PiAtIE90 aGVyIGJyaWRnZXMsIG1heWJlIHRoZXkgbmVlZCB0byByZS1ydW4gdGhlIEhEQ1Agc3RhdGUgZW5n aW5lCj4gPiA+Pj4+Pj4+IC0gT3ZlcmFsbCBkcml2ZXIsIHNvIGl0IGNhbiB1cGRhdGUgdGhlIG1v ZGVzL2Nvbm5lY3RvciBzdGF0dXMgYW5kIHNlbmQgdGhlCj4gPiA+Pj4+Pj4+ICAgdWV2ZW50IHRv IHRoZSBkcml2ZXIuCj4gPiA+Pj4+Pj4+IC0gT3ZlcmFsbCBkaXNwbGF5IHBpcGVsaW5lIGZvciB0 aGlzIHNwZWNpZmljIGJyaWRnZSwgbWF5YmUgeW91IG5lZWQgdG8KPiA+ID4+Pj4+Pj4gICBzaHV0 IGRvd24vcmUtZW5hYmxlIHRoZSBwaXBlIGJlY2F1c2UgJHJlYXNvbnMuCj4gPiA+Pj4+Pj4+ICAK PiA+ID4+Pj4+Pj4gVGhhdCdzIGF0IGxlYXN0IG15IHVuZGVyc3RhbmRpbmcgZnJvbSBsb3RzIG9m IGNoYXRzIHdpdGggTGF1cmVudCBhYm91dAo+ID4gPj4+Pj4+PiB3aGF0IGhlIHdhbnRzIHRvIGRv IGhlcmUuCj4gPiA+Pj4gVGhhdCdzIGNvcnJlY3QsIGFuZCB0aGF0J3Mgd2hhdCBJIHdhcyB0cnlp bmcgdG8gaW1wbGVtZW50IDotKSBUaGUKPiA+ID4+PiBub3RpZmljYXRpb24sIGluIHRoaXMgcGF0 Y2ggc2VyaWVzLCBnb2VzIGZyb20gdGhlIHByb2R1Y2VyIGJyaWRnZSB0byBhCj4gPiA+Pj4gY2Vu dHJhbCBwbGFjZSAobmFtZWx5IHRoZSBjb25uZWN0b3IsIHdpdGggYSBoZWxwZXIgaW1wbGVtZW50 YXRpb24KPiA+ID4+PiBhdmFpbGFibGUgYXMgcGFydCBvZiB0aGlzIHNlcmllcywgYnV0IGN1c3Rv bSBpbXBsZW1lbnRhdGlvbnMgaW4gZGlzcGxheQo+ID4gPj4+IGRyaXZlcnMgYXJlIGZpbmUgaWYg bmVlZGVkKSB0aGF0IHRoZW4gZGlzcGF0Y2hlcyB0aGUgbm90aWZpY2F0aW9uIHRvIGFsbAo+ID4g Pj4+IGJyaWRnZXMgKHRocm91Z2ggdGhlIC5sb3N0X2hvdHBsdWcoKSBvcGVyYXRpb24sIHdoaWNo IHdlIGNvdWxkIHJlcGxhY2UKPiA+ID4+PiBieSBhbiAuaHBkX25vdGlmeSgpIG9wZXJhdGlvbikg Zm9yIHRoZSBmaXJzdCB0d28gcHVycG9zZXMgbGlzdGVkIGFib3ZlLAo+ID4gPj4+IGFuZCB0aGVu IHRvIHRoZSBvdmVyYWxsIGRyaXZlci4gVGhlIG9ubHkgdGhpbmcgSSBkb24ndCBzdXBwb3J0IHll dCBpcwo+ID4gPj4+IGRpc3BhdGNoaW5nIHRvIHRoZSBkaXNwbGF5IHBpcGVsaW5lIChpdGVtIDQg aW4gdGhlIGxpc3QgYWJvdmUpIGFzIEkgaGFkCj4gPiA+Pj4gbm8gbmVlZCBmb3IgdGhhdCwgYW5k IGRpZG4ndCB3YW50IHRvIGRldmVsb3AgYW4gQVBJIHdpdGggbm8gdXNlci4gVGhpcwo+ID4gPj4+ IHdvdWxkIGhvd2V2ZXIgbm90IGJlIGRpZmZpY3VsdCB0byBkbyB3aGVuIG5lZWRlZCwgdGhlIG5l ZWQgaXMgdGFrZW4gaW50bwo+ID4gPj4+IGFjY291bnQgaW4gdGhlIHByb3Bvc2VkIGltcGxlbWVu dGF0aW9uLgo+ID4gPj4+Cj4gPiA+Pj4+Pj4gSSBkbyBub3Qga25vdyB0aGUgZnVsbCBwaWN0dXJl LCBidXQgdGhlIHNvbHV0aW9uIHdoZXJlIHBhcnRpY3VsYXIgYnJpZGdlCj4gPiA+Pj4+Pj4gbm90 aWZpZXMgZXZlcnl0aGluZyB1bmNvbmRpdGlvbmFsbHkgc2VlbXMgdG8gbWUgbXVjaCBsZXNzIGZs ZXhpYmxlLgo+ID4gPj4+Pj4+Cj4gPiA+Pj4+Pj4gSWYgSFBEIHNpZ25hbHMgaXMgcmVjZWl2ZWQg YnkgdGhlIGNvbnN1bWVyLCBpZiB0aGVyZSBhcmUgbm8gb2JzdGFjbGVzIGl0Cj4gPiA+Pj4+Pj4g Y2FuIHByb3BhZ2F0ZSBpdCBmdXJ0aGVyLCB1cHN0cmVhbSBicmlkZ2UvZW5jb2RlciBvciB0byBk cm0gY29yZSAtIGl0Cj4gPiA+Pj4+Pj4gd2lsbCBtaW1pYyB5b3VyIHNjZW5hcmlvLgo+ID4gPj4+ Pj4+Cj4gPiA+Pj4+Pj4gQnV0IHRoZXJlIGFyZSBhbHNvIG90aGVyIHNjZW5hcmlvcyB3aGVyZSBi cmlkZ2UgZG9lcyBub3Qgd2FudCB0bwo+ID4gPj4+Pj4+IHByb3BhZ2F0ZSBzaWduYWwsIGJlY2F1 c2UgZm9yIGV4YW1wbGU6Cj4gPiA+Pj4+Pj4KPiA+ID4+Pj4+PiAtIGl0IHdhbnRzIHRvIHdhaXQg Zm9yIG90aGVyIHNpbmtzIHRvIHdha2UgdXAsCj4gPiA+Pj4+Pj4KPiA+ID4+Pj4+IFRoZSBvdGhl ciBzaW5rIGNhbiBqdXN0IGRvIHRoYXQgaW4gdGhlaXIgaHBkIGNhbGxiYWNrLgo+ID4gPj4+Pj4K PiA+ID4+Pj4+PiAtIGl0IHByb3BhZ2F0ZXMgSFBEIHNpZ25hbCB2aWEgaGFyZHdhcmUgd2lyZSwK PiA+ID4+Pj4+IEFnYWluLCB0aGUgb3RoZXIgc2luayBjYW4ganVzdCBub3QgbGlzdGVuIHRvIHN3 IGhwZCBpbiB0aGF0IGNhc2UsIGFuZCB1c2UKPiA+ID4+Pj4+IHRoZSB3aXJlL2h3IGhwZCBpbnRl cnJ1cHQuCj4gPiA+Pj4+Pgo+ID4gPj4+PiBJZiBpdCBzaG91bGQgaWdub3JlIEhQRCwgd2h5IGl0 IHNob3VsZCByZWNlaXZlIGl0IGF0IGFsbCAtIGl0IGlzCj4gPiA+Pj4+IHVubmVjZXNzYXJ5IG5v aXNlLiBBbmQgSSBhbSBhZnJhaWQgd2l0aCBtb3JlIGNvbXBsaWNhdGVkIHBpcGVsaW5lcyBpdAo+ ID4gPj4+PiB3aWxsIGJlIGltcG9zc2libGUgZm9yIHBhcnRpY3VsYXIgY29tcG9uZW50IChicmlk Z2UvZW5jb2Rlci93aGF0ZXZlcikgdG8KPiA+ID4+Pj4gZGlzdGluZ3Vpc2ggaWYgSFBEIG5vdGlm aWNhdGlvbiB3aGljaCBjYW1lIGZyb20gbm9uLWRpcmVjdGx5IGNvbm5lY3RlZAo+ID4gPj4+PiBj b21wb25lbnQgc2hvdWxkIGJlIGlnbm9yZWQgb3Igbm90Lgo+ID4gPj4+Pgo+ID4gPj4+Pj4+IC0g Zmlyc3QgaXQgd2FudHMgdG8gdmVyaWZ5IGlmIHRoZSBzaW5rIGlzIHZhbGlkL2NvbXBhdGlibGUv YXV0aG9yaXplZAo+ID4gPj4+Pj4+IGRldmljZS4KPiA+ID4+Pj4+IE5vdyB5b3UgbG9zdCBtZS4g V2h5IHdvdWxkIHNvbWVvbmUgZ2x1ZSBpbmNvbXBhdGlibGUgSVAgaW50byBhIFNvQyBvcgo+ID4g Pj4+Pj4gYm9hcmQ/Cj4gPiA+Pj4+IEJyaWRnZSBjYW4gaGF2ZSBleHRlcm5hbCBjb25uZWN0b3Jz LCBhbmQgdGhlIHVzZXIgY2FuIGNvbm5lY3QgdGhlcmUKPiA+ID4+Pj4gYW55dGhpbmcuCj4gPiA+ Pj4+Cj4gPiA+Pj4+Pj4gSW4gZ2VuZXJhbCBIUEQgaXMgaW5wdXQgc2lnbmFsIGZvciBub3RpZnkg b2Ygc3RhdGUgY2hhbmdlcyBvbiBwYXJ0aWN1bGFyCj4gPiA+Pj4+Pj4gYnVzLCBpbiBjYXNlIG9m IHR5cGljYWwgdmlkZW8gYnJpZGdlIG9uIGl0cyBvdXRwdXQgdmlkZW8gYnVzLgo+ID4gPj4+Pj4+ Cj4gPiA+Pj4+Pj4gSW4gY2FzZSBvZiBicmlkZ2VzIHRoZXkgaGF2ZSBhbHNvIGlucHV0IHZpZGVv IGJ1c2VzLCBhbmQgdGhleSBjYW4gc2VuZAo+ID4gPj4+Pj4+IEhQRCBzaWduYWwgdmlhIHRoaXMg YnVzLCBidXQgdGhpcyBpcyBpbmRlZWQgZGlmZmVyZW50IEhQRCBzaWduYWwsIGV2ZW4KPiA+ID4+ Pj4+PiBpZiBmb3IgbW9zdCBjYXNlcyB0aGV5IGxvb2tzIHNpbWlsYXIuCj4gPiA+Pj4+PiBBaCwg SSB0aGluayB0aGlzIGlzIGEgcHJvYmxlbSB3ZSB3aWxsIGV2ZW50dWFsbHkgaGF2ZS4gQnV0IGl0 J3Mgbm90Cj4gPiA+Pj4+PiBzb21ldGhpbmcgd2UncmUgY3VycmVudGx5IHNvbHZpbmcgaGVyZSBh dCBhbGwgSSB0aGluay4KPiA+ID4+Pj4gQ3VycmVudGx5IHNpaTg2MjAgZGV2aWNlIGluIHRtMiBz ZW5kcyBocGQgc2lnbmFsIHVwc3RyZWFtIHZpYSBoYXJkd2FyZQo+ID4gPj4+PiBsaW5lLCBzbyB0 aGlzIGlzIG5vdCBzb21ldGhpbmcgZnJvbSBmYXIgZnV0dXJlLiBBbmQgSSBndWVzcyB3aXRoIEhQ RAo+ID4gPj4+PiBicm9hZGNhc3RpbmcgaXQgY291bGQgYmUgcmFjeS9lcnJvciBwcm9uZSwgZm9y IGV4YW1wbGUgRURJRCByZWFkaW5nIGNhbgo+ID4gPj4+PiBmYWlsIGR1ZSB0byBicmlkZ2UgYmVp bmcgbm90IHJlYWR5IChkZGMgb2Ygc2lpODYyMCBpcyBjb25uZWN0ZWQgdG8gaTJjCj4gPiA+Pj4+ IGNvbnRyb2xsZXIgdmlhIGh3IHdpcmVzIGFsc28pLgo+ID4gPj4+Pgo+ID4gPj4+Pj4+Pj4gQW5k IHJlZ2FyZGluZyBpbXBsZW1lbnRhdGlvbjoKPiA+ID4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+PiAxLiBM YXVyZW50IHByb3Bvc2VzIHRvIHJlZ2lzdGVyIGNhbGxiYWNrIGRybV9icmlkZ2VfaHBkX2VuYWJs ZS4KPiA+ID4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+PiAyLiBZb3UgcHJvcG9zZSB0byBhZGQgb3BzIGhw ZF9ub3RpZnkgaW4gYnJpZGdlcyBhbmQgZW5jb2RlcnMuCj4gPiA+Pj4+Pj4+Pgo+ID4gPj4+Pj4+ Pj4gWW91ciBwcm9wb3NpdGlvbiBpcyBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCwgYnV0IGlmIHdlIHdh bnQgdG8gbm90aWZ5IG9ubHkKPiA+ID4+Pj4+Pj4+IHNvdXJjZSB3ZSBzaG91bGQgbG9jYXRlIGl0 IGJ5IHBhcnNpbmcgbm90aWZpY2F0aW9uIGNoYWluICh3aGF0IGFib3V0Cj4gPiA+Pj4+Pj4+PiB1 bmNoYWluZWQgYnJpZGdlcyksIG9yIHN0b3JlIHBvaW50ZXIgc29tZXdoZXJlIGR1cmluZyBhdHRh Y2htZW50Lgo+ID4gPj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+IEl0IHN0aWxsIGxlYXZlcyB1cyB3aXRo IHRoaXMgdWdseSBkdWFsaXNtIC0gc291cmNlIGlzIGVuY29kZXIgb3IgYnJpZGdlLAo+ID4gPj4+ Pj4+Pj4gc2ltaWxhcmx5IHRvIHNpbmsgYXMgYnJpZGdlIG9yIHBhbmVsLCBidXQgZml4aW5nIGl0 IGNhbiBiZSBkb25lIGxhdGVyLgo+ID4gPj4+Pj4+PiBVaCBJIHRoaW5rIHdlJ3JlIG5vdCB0YWxr aW5nIGFib3V0IHRoZSBzYW1lIHRoaW5nIHJlYWxseS4gTXkgdW5kZXJzdGFuZGluZwo+ID4gPj4+ Pj4+PiBpcyB0aGF0IHRoaXMgY2FsbGJhY2sgaXMgaWYgc29tZW9uZSAob3V0c2lkZSBvZiB0aGlz IGJyaWRnZSkgaXMgaW50ZXJlc3RlZAo+ID4gPj4+Pj4+PiBpbiBhIGhwZCBzaWduYWwgX2Zyb21f IHRoaXMgYnJpZGdlLiBXaGljaCBtZWFucyB5b3UgY2FuIG9ubHkgZXZlciBoYXZlIDEKPiA+ID4+ Pj4+Pj4gbGlzdGVuZXIuCj4gPiA+Pj4+Pj4gRG8gd2UgaGF2ZSByZWFsIGxpZmUgZXhhbXBsZXM/ Cj4gPiA+Pj4+Pj4KPiA+ID4+Pj4+PiBJIHdhbnQgdG8gZGlzdGluZ3Vpc2ggdHdvIHNpdHVhdGlv bnM6Cj4gPiA+Pj4+Pj4KPiA+ID4+Pj4+PiAtIGFub3RoZXIgZGV2aWNlIHdhbnRzIHRvIGtub3cg aWYgaW5wdXQgYnVzIG9mIHRoZSBicmlkZ2UgaGFzIGNoYW5nZWQgc3RhdGUsCj4gPiA+Pj4+Pj4K PiA+ID4+Pj4+PiAtIGFub3RoZXIgZGV2aWNlIHdhbnRzIHRvIGtub3cgaWYgb3V0cHV0IGJ1cyBv ZiB0aGUgYnJpZGdlIGhhcyBjaGFuZ2VkCj4gPiA+Pj4+Pj4gc3RhdGUuCj4gPiA+Pj4+PiBVaCwg dGhhdCdzIHdoYXQgZHJtX2JyaWRnZV9zdGF0ZSBpcyBmb3IgKGlmIGl0IGV2ZXIgaGFwcGVucyku IFRoYXQncyBob3cKPiA+ID4+Pj4+IGJyaWRnZXMgY2FuIGV4Y2hhbmdlIHN0YXRlIGFuZCBpbmZv cm1hdGlvbiBhYm91dCBlYWNoIGFub3RoZXIuIGhwZCBpcwo+ID4gPj4+Pj4gYWJvdXQgdGhlIHBo eXNpY2FsIHdvcmxkLCBpLmUuICJpcyB0aGVyZSBhIGNhYmxlIHBsdWdnZWQgaW50byB0aGUgcG9y dAo+ID4gPj4+Pj4gSSdtIGRyaXZpbmc/Ii4gV2UncmUgbm90IGdvaW5nIHRvIHVzZSBmYWtlIGhw ZCB0byB1cGRhdGUgYnJpZGdlIHN0YXRlIGFuZAo+ID4gPj4+Pj4gZnVuIHN0dWZmIGxpa2UgdGhh dCwgd2UgaGF2ZSB0aGUgYXRvbWljX2NoZWNrIG1hY2hpbmVyeSBmb3IgdGhpcy4KPiA+ID4+Pj4g TXkgcXVlc3Rpb24gd2FzIGlmIHdlIGhhdmUgcmVhbCBleGFtcGxlcyB0aGF0IHVwc3RyZWFtIGRl dmljZSByZXF1aXJlcwo+ID4gPj4+PiBrbm93bGVkZ2UgYWJvdXQgc3RhdGUgb2Ygb3V0cHV0IGxp bmUgb2YgdGhlIGJyaWRnZT8KPiA+ID4+Pj4KPiA+ID4+Pj4gVG8gYmUgbW9yZSBwcmVjaXNlLCB3 ZSBoYXZlIGZvbGxvd2luZyBkaXNwbGF5IHBpcGVsaW5lOgo+ID4gPj4+Pgo+ID4gPj4+PiBBLS0+ Qi0tPkMKPiA+ID4+Pj4KPiA+ID4+Pj4gQW5kIEMgc2VuZHMgSFBEIHRvIEIgKGllIHNpZ25hbCB0 aGF0IHN0YXRlIG9mIGxpbmUgYmV0d2VlbiBCIGFuZCBDCj4gPiA+Pj4+IGNoYW5nZWQpLiBEb2Vz IEEgcmVhbGx5IHdhbnRzIHRvIGtub3cgdGhpcyBpbmZvcm1hdGlvbj8gb3IgaXQgc2hvdWxkCj4g PiA+Pj4+IGp1c3QgbmVlZCB0byBrbm93IGlmIHN0YXRlIG9mIGxpbmUgQS0tPkIgY2hhbmdlZD8K PiA+ID4+PiBUaGVyZSdzIG9uZSByZWFsIGxpZmUgZXhhbXBsZSwgd2hlcmUgQSBpcyBhbiBIRE1J IGVuY29kZXIsIEIgaXMgYW4gSERNSQo+ID4gPj4+IEVTRCBwcm90ZWN0b3IgYW5kIGxldmVsIHNo aWZ0ZXIsIGFuZCBDIGlzIHRoZSBwaHlzaWNhbCBIRE1JIGNvbm5lY3Rvci4KPiA+ID4+PiBXaGVu IHRoZSBIRE1JIGNhYmxlIGlzIHVucGx1Z2dlZCwgdGhlIENFQyBjb250cm9sbGVyIHBhcnQgb2Yg QSBuZWVkcyB0bwo+ID4gPj4+IGJlIG5vdGlmaWVkIGluIG9yZGVyIHRvIHJlc2V0IHRoZSBDRUMg c3RhdGUgbWFjaGluZS4gT25lIGNvdWxkIGhvd2V2ZXIKPiA+ID4+PiBhcmd1ZSB0aGF0IGluIHRo YXQgY2FzZSB0aGUgQS1CIGxpbmsgc3RhdGUgY2hhbmdlcyB0b28sIGJ1dCB0aGUKPiA+ID4+PiBp bXBvcnRhbnQgcGFydCBpcyB0aGF0IEhQRCBkZXRlY3Rpb24gaXMgbm90IHBlcmZvcm1lZCBieSBB LCB3aGlsZSBBCj4gPiA+Pj4gbmVlZHMgdG8gYmUgaW5mb3JtZWQgb2YgbG9zdCBob3RwbHVnLgo+ ID4gPj4gSSBoYXZlIG5vIGZ1bGwgcGljdHVyZSBidXQgSSBndWVzcyBpbiB0aGlzIGNhc2UgQyBz ZW5kcyBIUEQgdG8gQiB1c2luZwo+ID4gPj4gaGFyZHdhcmUgd2lyZSwgYW5kIHRoZW4gQiBzZW5k cyBIUEQgdG8gQSBhbHNvIHZpYSB3aXJlLCBzbyBJIHdvdWxkbid0Cj4gPiA+PiBzYXkgdGhhdCBC IGRvZXMgbm90IHBhcnRpY2lwYXRlIGluIEhQRCB0cmFuc21pc3Npb24vZm9yd2FyZGluZywKPiA+ ID4gTm8sIGluIHRoaXMgY2FzZSBBIGRvZXNuJ3QgcmVjZWl2ZSBhbnkgaGFyZHdhcmUgSFBEIHNp Z25hbCwgaXQgcmVxdWlyZXMKPiA+ID4gSFBEIG5vdGlmaWNhdGlvbiB0aHJvdWdoIHNvZnR3YXJl Lgo+ID4gPgo+ID4gPj4gc29tZSBzaGlmdGVycyB3aXRoICdhZHZhbmNlZCBwb3dlciBzYXZpbmcn IGNhbiBldmVuIHBlcmZvcm0gd2FrZS11cCBvZgo+ID4gPj4gdXBzdHJlYW0gcGluIGxvZ2ljIGFm dGVyIHJlY2VpdmluZyBIUEQgb24gZG93bnN0cmVhbSwgc28gSFBEIHNlbnQgZnJvbSBCCj4gPiA+ PiB0byBBIGlzIGluZGVlZCBkaWZmZXJlbnQgdGhhbiBIUEQgc2VudCBmcm9tIEMgdG8gQi4KPiA+ ID4+Cj4gPiA+PiBCdHcsIHdpdGggdGhlIGFib3ZlIGxvZ2ljIG9mIHByb3BhZ2F0aW9uIG9mIEhQ RCBjYWxsYmFjayAocHJvcG9zZWQgYnkKPiA+ID4+IERhbmllbCkgSSBndWVzcyBpdCB3aWxsIHdv cmsgdGhpcyB3YXk6Cj4gPiA+Pgo+ID4gPj4gLSBBIHdpbGwgcmVjZWl2ZSBIUEQgc2lnbmFsIHZp YSBIVywKPiA+ID4+Cj4gPiA+PiAtIHRoZW4gQiBhbmQgQyB3aWxsIHJlY2VpdmUgSFBEIGNhbGxi YWNrIHZpYSBmcmFtZXdvcmsuCj4gPiA+Pgo+ID4gPj4gQW0gSSByaWdodD8KPiA+IAo+ID4gPiBJ dCdzIHRoZSBvdGhlciB3YXkgYXJvdW5kLgo+ID4gPgo+ID4gPiBJbiB0aGlzIGNhc2UgdGhlIEhQ RCBzaWduYWwgZnJvbSB0aGUgY29ubmVjdG9yIChDKSBpcyByb3V0ZWQgdG8gYW4gaW5wdXQKPiA+ ID4gb2YgdGhlIEVTRCBjaGlwIChCKS4gVGhlIEVTRCBjaGlwIG91dHB1dHMgYSBzaGlmdGVkIEhQ RCBoYXJkd2FyZSBzaWduYWwKPiA+ID4gY29ubmVjdGVkIHRvIGEgR1BJTyBvZiB0aGUgU29DLiBU aGUgZHJpdmVyIGZvciAoQikgdGh1cyByZWdpc3RlcnMgYSBHUElPCj4gPiA+IElSUSBhbmQgcmVj ZWl2ZSB0aGUgaGFyZHdhcmUgSFBEIG5vdGlmaWNhdGlvbi4gVGhlIGRyaXZlciBmb3IgdGhlIEhE TUkKPiA+ID4gZW5jb2RlciAoQSkgbmVlZHMgdG8gcmVjZWl2ZSBIUEQgbm90aWZpY2F0aW9uIGlu IHNvZnR3YXJlLCB0aHJvdWdoIHRoZQo+ID4gPiBmcmFtZXdvcmsuCj4gPiAKPiA+IElmIHRoaXMg aXMgR1BJTyBJIHdvbmRlciB3aHkgZG8gbm90IHF1ZXJ5IHRoaXMgZ3BpbyBieSBlbmNvZGVyIGRp cmVjdGx5LAo+ID4gcnVsZXMgb2Ygb3duZXJzaGlwIG9mIHN1Y2ggZ3Bpb3Mgc2VlbXMgdG8gYmUg Z3JleSBhcmVhLCBzbyBpbiBzdWNoIGNhc2UKPiA+IEkgd291bGQgYWR2aXNlIHRvIHB1dCBpdCBp biB0aGUgZHJpdmVyIHdobyByZWFsbHkgbmVlZHMgaXQuCj4gPiAKPiA+IFRoaXMgd2F5IGl0IHdp bGwgYmUgbXVjaCBzaW1wbGVyLgo+IAo+IEZpcnN0IHRvIGZhbGwsIG11bHRpcGxlIGRyaXZlcnMg bWF5IG5lZWQgdG8gYmUgaW5mb3JtZWQgb2YgSFBEIGV2ZW50cwo+IGNvbWluZyBmcm9tIGEgR1BJ Tywgc28gd2Ugd291bGQgbmVlZCB0byBkdXBsaWNhdGUgaXQgaW4gbXVsdGlwbGUgcGxhY2VzLAo+ IGFuZCBJIGRvbid0IHRoaW5rIHRoZSBHUElPIGZyYW1ld29yayBhbGxvd3MgYWNxdWlyaW5nIGEg R1BJTyBtdWx0aXBsZQo+IHRpbWVzLgo+IAo+IFRoZW4sIHRoZSBHUElPIGlzIGRlc2NyaWJlZCBp biBEVCwgYW5kIERUIGRvZXNuJ3QgY2FyZSBhYm91dCB3aGljaAo+IGRyaXZlciBuZWVkcyBIUEQg ZXZlbnRzLiBEVCBzcGVjaWZpZXMgdGhlIEdQSU8gaW4gdGhlIG5vZGUgb2YgdGhlIGRldmljZQo+ IGl0IGJlbG9uZ3MgdG8sIHRoaXMgaXMgZGVmaW5lZCBpbiBEVCBiaW5kaW5ncywgYW5kIG11c3Qg YmUgdGhlIHNhbWUgb24KPiBhbGwgYm9hcmRzLCB3aGlsZSBkZXBlbmRpbmcgb24gdGhlIGJvYXJk IGRpZmZlcmVudCBkZXZpY2VzIG1heSBuZWVkIHRvCj4gYmUgaW5mb3JtZWQgb2YgSFBEIGV2ZW50 cy4KPiAKPiBGb3IgdGhvc2UgdHdvIHJlYXNvbnMgSFBEIEdQSU8gaGFuZGxpbmcgYW5kIGNvbnN1 bXB0aW9uIG9mIEhQRCBldmVudHMKPiBjYW4ndCBhbHdheXMgYmUgZ3JvdXBlZCBpbiB0aGUgc2Ft ZSBkcml2ZXIuCj4gCj4gPiBHb2luZyBiYWNrIHRvIEhQRCBub3RpZmljYXRpb25zLCBhcyBJIHNh aWQgZWFybGllciBicm9hZGNhc3RpbmcgSFBECj4gPiBub3RpZmljYXRpb24gdW5jb25kaXRpb25h bGx5IHRvIGV2ZXJ5IG1lbWJlciBvZiB0aGUgY2hhaW4gd2l0aCBob3BlIHRoYXQKPiA+IHRoZSBt ZW1iZXIgd2lsbCBiZSBhYmxlIHRvIGZpbHRlci1vdXQgdW5kZXNpcmVkIG5vdGlmaWNhdGlvbiBz ZWVtcyB0byBtZQo+ID4gaW5jb3JyZWN0IC0gbWF5YmUgaXQgY2FuIHNvbHZlIHNvbWUgcHJvYmxl bXMgYnV0IGlzIG5vdCBmbGV4aWJsZSBlbm91Z2gKPiA+IHRvIGJlIHVzYWJsZSBpbiBvdGhlciBz Y2VuYXJpb3MuCj4gPiAKPiA+IElmIG15IGFyZ3VtZW50cyBkbyBub3QgY29udmluY2UgeW91IHBs ZWFzZSBqdXN0IGNvbnRpbnVlIHdpdGggeW91cgo+ID4gaWRlYXMsIHdlIGNhbiBhbHdheXMgYWRk IE5PX0hQRF9CUk9BRENBU1Qgc29tZXdoZXJlIDopCj4gCj4gOi0pIEkgd291bGQgbGlrZSB0byB1 bmRlcnN0YW5kIHRoZSBwcm9ibGVtcyB5b3UncmUgcmVmZXJyaW5nIHRvIHRob3VnaCwKPiBhbmQg aG9wZWZ1bGx5IHNvbHZlIHRoZW0uIElmIHlvdSBjb3VsZCBkZXNjcmliZSBvbmUgb2YgdGhlIHNj ZW5hcmlvcwo+IHdoZXJlIHlvdSB0aGluayB0aGlzIG1lY2hhbmlzbSB3b3VsZG4ndCBiZSB1c2Fi bGUgdGhhdCB3b3VsZCBoZWxwLiBJbgo+IHRoZSBtZWFudGltZSBJIHdpbGwgcG9zdCBhIG5ldyB2 ZXJzaW9uIG9mIHRoZSBzZXJpZXMgd2l0aCB0aGVzZQo+IG9wZXJhdGlvbnMga2VwdCBhcy1pcyB0 byBnZXQgdGhlIHJlc3Qgb2YgdGhlIHBhdGNoZXMgcmV2aWV3ZWQuCgpTZWUgbXkgbGl0dGxlIHRo aW5nIGFib3V0IG1pZGxheWVycywgSSB0aGluayBtaWRsYXllcnMgd2l0aCBsb3RzIG9mIGZsYWdz CmZvciBldmVyeXRoaW5nIGFyZW4ndCBhIGdvb2QgaWRlYS4gVGhleSBzaG91bGQgYmUgbW9yZSBv cGluaW9uYXRlZCBhYm91dApob3cgdGhpbmdzIHdvcmsuCgpTbyBpZiB0aGVyZSdzIGEgY2FzZSB3 aGVyZSB0aGlzIGJyb2FkY2FzdGluZyBvZiB2YXJpb3VzIHRoaW5ncyBkb2Vzbid0CndvcmssIGxl dCdzIGRpZyBpbnRvIGl0LgotRGFuaWVsCgo+IAo+ID4gPj4+Pj4+PiBZb3Ugc2VlbSB0byBoYXZl IHNvbWUgb3RoZXIgaWRlYSBoZXJlLgo+ID4gPj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCW11 dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ID4gPj4+Pj4+Pj4+Pj4+PiArfQo+ID4g Pj4+Pj4+Pj4+Pj4+PiArRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2JyaWRnZV9ocGRfbm90aWZ5KTsK PiA+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4gPj4+Pj4+Pj4+Pj4+PiAgI2lmZGVmIENPTkZJR19PRgo+ ID4gPj4+Pj4+Pj4+Pj4+PiAgLyoqCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAgKiBvZl9kcm1fZmluZF9i cmlkZ2UgLSBmaW5kIHRoZSBicmlkZ2UgY29ycmVzcG9uZGluZyB0byB0aGUgZGV2aWNlIG5vZGUg aW4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9icmlkZ2Uu aCBiL2luY2x1ZGUvZHJtL2RybV9icmlkZ2UuaAo+ID4gPj4+Pj4+Pj4+Pj4+PiBpbmRleCAwOGRj MTVmOTNkZWQuLmI5NDQ1YWE1YjFlZiAxMDA2NDQKPiA+ID4+Pj4+Pj4+Pj4+Pj4gLS0tIGEvaW5j bHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsrKyBiL2luY2x1ZGUvZHJt L2RybV9icmlkZ2UuaAo+ID4gPj4+Pj4+Pj4+Pj4+PiBAQCAtMjMsOCArMjMsOSBAQAo+ID4gPj4+ Pj4+Pj4+Pj4+PiAgI2lmbmRlZiBfX0RSTV9CUklER0VfSF9fCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAj ZGVmaW5lIF9fRFJNX0JSSURHRV9IX18KPiA+ID4+Pj4+Pj4+Pj4+Pj4gIAo+ID4gPj4+Pj4+Pj4+ Pj4+PiAtI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gICNpbmNsdWRl IDxsaW51eC9jdHlwZS5oPgo+ID4gPj4+Pj4+Pj4+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2xpc3Qu aD4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgo+ID4gPj4+Pj4+ Pj4+Pj4+PiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZV9vYmplY3QuaD4KPiA+ID4+Pj4+Pj4+Pj4+ Pj4gICNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAKPiA+ID4+ Pj4+Pj4+Pj4+Pj4gQEAgLTMzNCw2ICszMzUsMTEwIEBAIHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNz IHsKPiA+ID4+Pj4+Pj4+Pj4+Pj4gIAkgKi8KPiA+ID4+Pj4+Pj4+Pj4+Pj4gIAl2b2lkICgqYXRv bWljX3Bvc3RfZGlzYWJsZSkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ID4+Pj4+Pj4+ Pj4+Pj4gIAkJCQkgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiA+ID4+Pj4+ Pj4+Pj4+Pj4gKwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAq IEBkZXRlY3Q6Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBD aGVjayBpZiBhbnl0aGluZyBpcyBhdHRhY2hlZCB0byB0aGUgYnJpZGdlIG91dHB1dC4KPiA+ID4+ Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMg b3B0aW9uYWwsIGlmIG5vdCBpbXBsZW1lbnRlZCB0aGUgYnJpZGdlIHdpbGwgYmUKPiA+ID4+Pj4+ Pj4+Pj4+Pj4gKwkgKiBjb25zaWRlcmVkIGFzIGFsd2F5cyBoYXZpbmcgYSBjb21wb25lbnQgYXR0 YWNoZWQgdG8gaXRzIG91dHB1dC4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBCcmlkZ2VzIHRoYXQg aW1wbGVtZW50IHRoaXMgY2FsbGJhY2sgc2hhbGwgc2V0IHRoZQo+ID4gPj4+Pj4+Pj4+Pj4+PiAr CSAqIERSTV9CUklER0VfT1BfREVURUNUIGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9wcy4K PiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIFJFVFVSTlM6Cj4g PiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBkcm1fY29ubmVjdG9y X3N0YXR1cyBpbmRpY2F0aW5nIHRoZSBicmlkZ2Ugb3V0cHV0IHN0YXR1cy4KPiA+ID4+Pj4+Pj4+ Pj4+Pj4gKwkgKi8KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwllbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVz ICgqZGV0ZWN0KShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+ID4+Pj4+Pj4+Pj4+Pj4g Kwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEBnZXRfbW9k ZXM6Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBGaWxsIGFs bCBtb2RlcyBjdXJyZW50bHkgdmFsaWQgZm9yIHRoZSBzaW5rIGludG8gdGhlICZkcm1fY29ubmVj dG9yCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogd2l0aCBkcm1fbW9kZV9wcm9iZWRfYWRkKCkuCj4g PiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGUgQGdldF9tb2Rl cyBjYWxsYmFjayBpcyBtb3N0bHkgaW50ZW5kZWQgdG8gc3VwcG9ydCBub24tcHJvYmFibGUKPiA+ ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBkaXNwbGF5cyBzdWNoIGFzIG1hbnkgZml4ZWQgcGFuZWxzLiBC cmlkZ2VzIHRoYXQgc3VwcG9ydCByZWFkaW5nCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogRURJRCBz aGFsbCBsZWF2ZSBAZ2V0X21vZGVzIHVuaW1wbGVtZW50ZWQgYW5kIGltcGxlbWVudCB0aGUKPiA+ ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiAmZHJtX2JyaWRnZV9mdW5jcy0+Z2V0X2VkaWQgY2FsbGJhY2sg aW5zdGVhZC4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIFRo aXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgaXQgc2hhbGwg c2V0IHRoZQo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIERSTV9CUklER0VfT1BfTU9ERVMgZmxhZyBp biB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+ Pj4+Pj4+Pj4+ICsJICogUkVUVVJOUzoKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+ Pj4+Pj4+PiArCSAqIFRoZSBudW1iZXIgb2YgbW9kZXMgYWRkZWQgYnkgY2FsbGluZyBkcm1fbW9k ZV9wcm9iZWRfYWRkKCkuCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICovCj4gPiA+Pj4+Pj4+Pj4+Pj4+ ICsJaW50ICgqZ2V0X21vZGVzKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4gPj4+Pj4+ Pj4+Pj4+PiArCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ID4gPj4+Pj4+ Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICog QGdldF9lZGlkOgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICog UmVhZCBhbmQgcGFyc2UgdGhlIEVESUQgZGF0YSBvZiB0aGUgY29ubmVjdGVkIGRpc3BsYXkuCj4g PiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGUgQGdldF9lZGlk IGNhbGxiYWNrIGlzIHRoZSBwcmVmZXJyZWQgd2F5IG9mIHJlcG9ydGluZyBtb2RlCj4gPiA+Pj4+ Pj4+Pj4+Pj4+ICsJICogaW5mb3JtYXRpb24gZm9yIGEgZGlzcGxheSBjb25uZWN0ZWQgdG8gdGhl IGJyaWRnZSBvdXRwdXQuIEJyaWRnZXMKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGF0IHN1cHBv cnQgcmVhZGluZCBFRElEIHNoYWxsIGltcGxlbWVudCB0aGlzIGNhbGxiYWNrIGFuZCBsZWF2ZQo+ ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIHRoZSBAZ2V0X21vZGVzIGNhbGxiYWNrIHVuaW1wbGVtZW50 ZWQuCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGUgY2Fs bGVyIG9mIHRoaXMgb3BlcmF0aW9uIHNoYWxsIGZpcnN0IHZlcmlmeSB0aGUgb3V0cHV0Cj4gPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMgYW5kIHJlZnJhaW4gZnJvbSByZWFk aW5nIEVESUQgZnJvbSBhIGRpc2Nvbm5lY3RlZAo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIG91dHB1 dC4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIFRoaXMgY2Fs bGJhY2sgaXMgb3B0aW9uYWwuIEJyaWRnZXMgdGhhdCBpbXBsZW1lbnQgaXQgc2hhbGwgc2V0IHRo ZQo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIERSTV9CUklER0VfT1BfRURJRCBmbGFnIGluIHRoZWly ICZkcm1fYnJpZGdlLT5vcHMuCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+ Pj4gKwkgKiBSRVRVUk5TOgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+Pj4+ ICsJICogQW4gZWRpZCBzdHJ1Y3R1cmUgbmV3bHkgYWxsb2NhdGVkIHdpdGgga21hbGxvYygpIChv ciBzaW1pbGFyKSBvbgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIHN1Y2Nlc3MsIG9yIE5VTEwgb3Ro ZXJ3aXNlLiBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nCj4gPiA+Pj4+Pj4+ Pj4+Pj4+ICsJICogdGhlIHJldHVybmVkIGVkaWQgc3RydWN0dXJlIHdpdGgga2ZyZWUoKS4KPiA+ ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgZWRpZCAqKCpn ZXRfZWRpZCkoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkJ CQkgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiA+Pj4+Pj4+Pj4+Pj4gSXQg b3ZlcmxhcHMgd2l0aCBnZXRfbW9kZXMsIEkgZ3Vlc3MgcHJlc2VuY2Ugb2Ygb25lIG9wcyBzaG91 bGQgZGlzYWxsb3cKPiA+ID4+Pj4+Pj4+Pj4+PiBwcmVzZW5jZSBvZiBhbm90aGVyIG9uZT8KPiA+ ID4+Pj4+Pj4+Pj4+Pgo+ID4gPj4+Pj4+Pj4+Pj4+IEkgYW0gbm90IHJlYWxseSBjb252aW5jZWQg d2UgbmVlZCB0aGlzIG9wIGF0IGFsbCwgY2Fubm90IHdlIGp1c3QgYXNzaWduCj4gPiA+Pj4+Pj4+ Pj4+Pj4gc29tZSBoZWxwZXIgZnVuY3Rpb24gdG8gLmdldF9tb2RlcyBjYiwgd2hpY2ggd2lsbCBk byB0aGUgc2FtZT8KPiA+ID4+Pj4+Pj4+Pj4+IFBsYW4gQik6IGRpdGNoIC0+Z2V0X2VkaWQsIHJl cXVpcmUgdGhhdCB0aGUgZHJpdmVyIGhhcyAtPmdldF9tb2RlcyBpbiB0aGF0Cj4gPiA+Pj4+Pj4+ Pj4+PiBjYXNlLCBhbmQgcmVxdWlyZSB0aGF0IGlmIGl0IGhhcyBhbiBlZGlkIGl0IG11c3QgZmls bCBvdXQgY29ubmVjdG9yLT5pbmZvCj4gPiA+Pj4+Pj4+Pj4+PiBhbmQgY29ubmVjdG9yLT5lZGlk IGNvcnJlY3RseS4KPiA+ID4+Pj4+Pj4+Pj4+Cj4gPiA+Pj4+Pj4+Pj4+PiBCdHcgaWYgYSBocGQg aGFwcGVucywgd2hvJ3MgcmVzcG9uaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhlIGVkaWQvbW9kZSBs aXN0Cj4gPiA+Pj4+Pj4+Pj4+PiBpbiB0aGUgY29ubmVjdG9yIGlzIHVwLXRvLWRhdGU/IFdpdGgg eW91ciBjdXJyZW50IGNhbGxiYWNrIGRlc2lnbiB0aGF0J3MKPiA+ID4+Pj4+Pj4+Pj4+IHVwIHRv IHRoZSBjYWxsYmFjaywgd2hpY2ggZG9lc24ndCBmZWVsIGdyZWF0LiBNYXliZSAgZHJtX2JyaWRn ZV9ocGRfbm90aWZ5Cj4gPiA+Pj4+Pj4+Pj4+PiBzaG91bGQgZ3VhcmFudGVlIHRoYXQgaXQnbGwg Zmlyc3Qgd2FsayB0aGUgY29ubmVjdG9ycyB0byB1cGRhdGUgc3RhdHVzIGFuZAo+ID4gPj4+Pj4+ Pj4+Pj4gZWRpZC9tb2RlIGxpc3QgZm9yIHRoZSBmaW5hbCBkcm1fY29ubmVjdG9yLiBBbmQgdGhl biBpbnN0ZWFkIG9mIGp1c3QKPiA+ID4+Pj4+Pj4+Pj4+IHBhc3NpbmcgdGhlIHNpbXBsZSAic3Rh dHVzIiwgaXQnbGwgcGFzcyB0aGUgY29ubmVjdG9yLCB3aXRoIGV2ZXJ5dGhpbmcKPiA+ID4+Pj4+ Pj4+Pj4+IGNvcnJlY3RseSB1cGRhdGVkLgo+ID4gPj4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+ IE90aGVyd2lzZSBldmVyeW9uZSBpbnRlcmVzdGVkIGluIHRoYXQgaHBkIHNpZ25hbCB3aWxsIGdv IGFuZCByZS1mZXRjaCB0aGUKPiA+ID4+Pj4+Pj4+Pj4+IGVkaWQsIHdoaWNoIGlzIG5vdCBzbyBh d2Vzb21lIDotKQo+ID4gPj4+Pj4+Pj4+Pj4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4gPj4+Pj4+ Pj4+Pj4+PiArCS8qKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEBsb3N0X2hvdHBsdWc6Cj4gPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBOb3RpZnkgdGhlIGJyaWRn ZSBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rpb24uCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+ Pj4+Pj4+Pj4+Pj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLCBpdCBtYXkgYmUgaW1w bGVtZW50ZWQgYnkgYnJpZGdlcyB0aGF0Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogbmVlZCB0byBi ZSBub3RpZmllZCBvZiBkaXNwbGF5IGRpc2Nvbm5lY3Rpb24gZm9yIGludGVybmFsIHJlYXNvbnMu Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogT25lIHVzZSBjYXNlIGlzIHRvIHJlc2V0IHRoZSBpbnRl cm5hbCBzdGF0ZSBvZiBDRUMgY29udHJvbGxlcnMgZm9yCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICog SERNSSBicmlkZ2VzLgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4gPj4+Pj4+Pj4+Pj4+PiAr CXZvaWQgKCpsb3N0X2hvdHBsdWcpKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ID4gPj4+ Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJLyoqCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJ ICogQGhwZF9lbmFibGU6Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICoKPiA+ID4+Pj4+Pj4+Pj4+Pj4g KwkgKiBFbmFibGUgaG90IHBsdWcgZGV0ZWN0aW9uLiBGcm9tIG5vdyBvbiB0aGUgYnJpZGdlIHNo YWxsIGNhbGwKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBkcm1fYnJpZGdlX2hwZF9ub3RpZnkoKSBl YWNoIHRpbWUgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQgaW4gdGhlIG91dHB1dAo+ID4gPj4+Pj4+Pj4+ Pj4+PiArCSAqIGNvbm5lY3Rpb24gc3RhdHVzLCB1bnRpbCBob3QgcGx1ZyBkZXRlY3Rpb24gZ2V0 cyBkaXNhYmxlZCB3aXRoCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogQGhwZF9kaXNhYmxlLgo+ID4g Pj4+Pj4+Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogVGhpcyBjYWxsYmFjayBp cyBvcHRpb25hbCBhbmQgc2hhbGwgb25seSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzCj4gPiA+ Pj4+Pj4+Pj4+Pj4+ICsJICogdGhhdCBzdXBwb3J0IGhvdC1wbHVnIG5vdGlmaWNhdGlvbiB3aXRo b3V0IHBvbGxpbmcuIEJyaWRnZXMgdGhhdAo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIGltcGxlbWVu dCBpdCBzaGFsbCBhbHNvIGltcGxlbWVudCB0aGUgQGhwZF9kaXNhYmxlIGNhbGxiYWNrIGFuZCBz ZXQKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxhZyBpbiB0 aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4gPj4+Pj4+ Pj4+Pj4+PiArCXZvaWQgKCpocGRfZW5hYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsK PiA+ID4+Pj4+Pj4+Pj4+Pj4gKwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4gPj4+Pj4+Pj4+ Pj4+PiArCSAqIEBocGRfZGlzYWJsZToKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKgo+ID4gPj4+Pj4+ Pj4+Pj4+PiArCSAqIERpc2FibGUgaG90IHBsdWcgZGV0ZWN0aW9uLiBPbmNlIHRoaXMgZnVuY3Rp b24gcmV0dXJucyB0aGUgYnJpZGdlCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogc2hhbGwgbm90IGNh bGwgZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCkgd2hlbiBhIGNoYW5nZSBpbiB0aGUgb3V0cHV0Cj4g PiA+Pj4+Pj4+Pj4+Pj4+ICsJICogY29ubmVjdGlvbiBzdGF0dXMgb2NjdXJzLgo+ID4gPj4+Pj4+ Pj4+Pj4+PiArCSAqCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRp b25hbCBhbmQgc2hhbGwgb25seSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzCj4gPiA+Pj4+Pj4+ Pj4+Pj4+ICsJICogdGhhdCBzdXBwb3J0IGhvdC1wbHVnIG5vdGlmaWNhdGlvbiB3aXRob3V0IHBv bGxpbmcuIEJyaWRnZXMgdGhhdAo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIGltcGxlbWVudCBpdCBz aGFsbCBhbHNvIGltcGxlbWVudCB0aGUgQGhwZF9lbmFibGUgY2FsbGJhY2sgYW5kIHNldAo+ID4g Pj4+Pj4+Pj4+Pj4+PiArCSAqIHRoZSBEUk1fQlJJREdFX09QX0hQRCBmbGFnIGluIHRoZWlyICZk cm1fYnJpZGdlLT5vcHMuCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICovCj4gPiA+Pj4+Pj4+Pj4+Pj4+ ICsJdm9pZCAoKmhwZF9kaXNhYmxlKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+ID4+ Pj4+Pj4+Pj4+Pj4gIH07Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAKPiA+ID4+Pj4+Pj4+Pj4+Pj4gIC8q Kgo+ID4gPj4+Pj4+Pj4+Pj4+PiBAQCAtMzcyLDYgKzQ3NywzOCBAQCBzdHJ1Y3QgZHJtX2JyaWRn ZV90aW1pbmdzIHsKPiA+ID4+Pj4+Pj4+Pj4+Pj4gIAlib29sIGR1YWxfbGluazsKPiA+ID4+Pj4+ Pj4+Pj4+Pj4gIH07Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKy8qKgo+ ID4gPj4+Pj4+Pj4+Pj4+PiArICogZW51bSBkcm1fYnJpZGdlX29wcyAtIEJpdG1hc2sgb2Ygb3Bl cmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRnZQo+ID4gPj4+Pj4+Pj4+Pj4+PiArICovCj4g PiA+Pj4+Pj4+Pj4+Pj4+ICtlbnVtIGRybV9icmlkZ2Vfb3BzIHsKPiA+ID4+Pj4+Pj4+Pj4+Pj4g KwkvKioKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBARFJNX0JSSURHRV9PUF9ERVRFQ1Q6IFRoZSBi cmlkZ2UgY2FuIGRldGVjdCBkaXNwbGF5cyBjb25uZWN0ZWQgdG8KPiA+ID4+Pj4+Pj4+Pj4+Pj4g KwkgKiBpdHMgb3V0cHV0LiBCcmlkZ2VzIHRoYXQgc2V0IHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1l bnQgdGhlCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogJmRybV9icmlkZ2VfZnVuY3MtPmRldGVjdCBj YWxsYmFjay4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwlEUk1f QlJJREdFX09QX0RFVEVDVCA9IEJJVCgwKSwKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ID4+ Pj4+Pj4+Pj4+Pj4gKwkgKiBARFJNX0JSSURHRV9PUF9FRElEOiBUaGUgYnJpZGdlIGNhbiByZXRy aWV2ZSB0aGUgRURJRCBvZiB0aGUgZGlzcGxheQo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIGNvbm5l Y3RlZCB0byBpdHMgb3V0cHV0LiBCcmlkZ2VzIHRoYXQgc2V0IHRoaXMgZmxhZyBzaGFsbCBpbXBs ZW1lbnQKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiB0aGUgJmRybV9icmlkZ2VfZnVuY3MtPmdldF9l ZGlkIGNhbGxiYWNrLgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4gPj4+Pj4+Pj4+Pj4+PiAr CURSTV9CUklER0VfT1BfRURJRCA9IEJJVCgxKSwKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiBARFJNX0JSSURHRV9PUF9IUEQ6IFRoZSBicmlkZ2UgY2FuIGRl dGVjdCBob3QtcGx1ZyBhbmQgaG90LXVucGx1Zwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIHdpdGhv dXQgcmVxdWlyaW5nIHBvbGxpbmcuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsCj4g PiA+Pj4+Pj4+Pj4+Pj4+ICsJICogaW1wbGVtZW50IHRoZSAmZHJtX2JyaWRnZV9mdW5jcy0+aHBk X2VuYWJsZSBhbmQKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKiAmZHJtX2JyaWRnZV9mdW5jcy0+ZGlz YWJsZV9ocGRfY2IgY2FsbGJhY2tzLgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4gPj4+Pj4+ Pj4+Pj4+PiArCURSTV9CUklER0VfT1BfSFBEID0gQklUKDIpLAo+ID4gPj4+Pj4+Pj4+Pj4+PiAr CS8qKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEBEUk1fQlJJREdFX09QX01PREVTOiBUaGUgYnJp ZGdlIGNhbiByZXRyaWV2aW5nIHRoZSBtb2RlcyBzdXBwb3J0ZWQKPiA+ID4+Pj4+Pj4+Pj4+Pj4g KwkgKiBieSB0aGUgZGlzcGxheSBhdCBpdHMgb3V0cHV0LiBUaGlzIGRvZXMgbm90IGluY2x1ZGUg cmVhZGluZCBFRElECj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogd2hpY2ggaXMgc2VwYXJhdGVseSBj b3ZlcmVkIGJ5IEBEUk1fQlJJREdFX09QX0VESUQuIEJyaWRnZXMgdGhhdCBzZXQKPiA+ID4+Pj4+ Pj4+Pj4+Pj4gKwkgKiB0aGlzIGZsYWcgc2hhbGwgaW1wbGVtZW50IHRoZSAmZHJtX2JyaWRnZV9m dW5jcy0+Z2V0X21vZGVzIGNhbGxiYWNrLgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqLwo+ID4gPj4+ Pj4+Pj4+Pj4+PiArCURSTV9CUklER0VfT1BfTU9ERVMgPSBCSVQoMyksCj4gPiA+Pj4+Pj4+Pj4+ Pj4+ICt9Owo+ID4gPj4+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAvKioKPiA+ID4+ Pj4+Pj4+Pj4+Pj4gICAqIHN0cnVjdCBkcm1fYnJpZGdlIC0gY2VudHJhbCBEUk0gYnJpZGdlIGNv bnRyb2wgc3RydWN0dXJlCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAgKi8KPiA+ID4+Pj4+Pj4+Pj4+Pj4g QEAgLTM5OCw2ICs1MzUsMjkgQEAgc3RydWN0IGRybV9icmlkZ2Ugewo+ID4gPj4+Pj4+Pj4+Pj4+ PiAgCWNvbnN0IHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzICpmdW5jczsKPiA+ID4+Pj4+Pj4+Pj4+ Pj4gIAkvKiogQGRyaXZlcl9wcml2YXRlOiBwb2ludGVyIHRvIHRoZSBicmlkZ2UgZHJpdmVyJ3Mg aW50ZXJuYWwgY29udGV4dCAqLwo+ID4gPj4+Pj4+Pj4+Pj4+PiAgCXZvaWQgKmRyaXZlcl9wcml2 YXRlOwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCS8qKiBAb3BzOiBiaXRtYXNrIG9mIG9wZXJhdGlvbnMg c3VwcG9ydGVkIGJ5IHRoZSBicmlkZ2UgKi8KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwllbnVtIGRybV9i cmlkZ2Vfb3BzIG9wczsKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ID4+Pj4+Pj4+Pj4+Pj4g KwkgKiBAdHlwZTogVHlwZSBvZiB0aGUgY29ubmVjdGlvbiBhdCB0aGUgYnJpZGdlIG91dHB1dAo+ ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIChEUk1fTU9ERV9DT05ORUNUT1JfKikuIEZvciBicmlkZ2Vz IGF0IHRoZSBlbmQgb2YgdGhpcyBjaGFpbiB0aGlzCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogaWRl bnRpZmllcyB0aGUgdHlwZSBvZiBjb25uZWN0ZWQgZGlzcGxheS4KPiA+ID4+Pj4+Pj4+Pj4+Pj4g KwkgKi8KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwlpbnQgdHlwZTsKPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkv KiogcHJpdmF0ZTogKi8KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkvKioKPiA+ID4+Pj4+Pj4+Pj4+Pj4g KwkgKiBAaHBkX211dGV4OiBQcm90ZWN0cyB0aGUgQGhwZF9jYiBhbmQgQGhwZF9kYXRhIGZpZWxk cy4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgbXV0 ZXggaHBkX211dGV4Owo+ID4gPj4+Pj4+Pj4+Pj4+PiArCS8qKgo+ID4gPj4+Pj4+Pj4+Pj4+PiAr CSAqIEBocGRfY2I6IEhvdCBwbHVnIGRldGVjdGlvbiBjYWxsYmFjaywgcmVnaXN0ZXJlZCB3aXRo Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJICogZHJtX2JyaWRnZV9ocGRfZW5hYmxlKCkuCj4gPiA+Pj4+ Pj4+Pj4+Pj4+ICsJICovCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJdm9pZCAoKmhwZF9jYikodm9pZCAq ZGF0YSwgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpOwo+ID4gPj4+Pj4+Pj4+Pj4+ PiArCS8qKgo+ID4gPj4+Pj4+Pj4+Pj4+PiArCSAqIEBocGRfZGF0YTogUHJpdmF0ZSBkYXRhIHBh c3NlZCB0byB0aGUgSG90IHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrCj4gPiA+Pj4+Pj4+Pj4+Pj4+ ICsJICogQGhwZF9jYi4KPiA+ID4+Pj4+Pj4+Pj4+Pj4gKwkgKi8KPiA+ID4+Pj4+Pj4+Pj4+Pj4g Kwl2b2lkICpocGRfZGF0YTsKPiA+ID4+Pj4+Pj4+Pj4+Pj4gIH07Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ ICAKPiA+ID4+Pj4+Pj4+Pj4+Pj4gIHZvaWQgZHJtX2JyaWRnZV9hZGQoc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSk7Cj4gPiA+Pj4+Pj4+Pj4+Pj4+IEBAIC00MjgsNiArNTg4LDE0IEBAIHZvaWQg ZHJtX2F0b21pY19icmlkZ2VfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ ID4gPj4+Pj4+Pj4+Pj4+PiAgdm9pZCBkcm1fYXRvbWljX2JyaWRnZV9lbmFibGUoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSwKPiA+ID4+Pj4+Pj4+Pj4+Pj4gIAkJCSAgICAgIHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSk7Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAKPiA+ID4+Pj4+Pj4+Pj4+ Pj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2Us Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICsJCQkgICB2b2lkICgqY2IpKHZvaWQgKmRhdGEsCj4gPiA+Pj4+ Pj4+Pj4+Pj4+ICsJCQkJICAgICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXMpLAo+ ID4gPj4+Pj4+Pj4+Pj4+PiArCQkJICAgdm9pZCAqZGF0YSk7Cj4gPiA+Pj4+Pj4+Pj4+Pj4+ICt2 b2lkIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4g PiA+Pj4+Pj4+Pj4+Pj4+ICt2b2lkIGRybV9icmlkZ2VfaHBkX25vdGlmeShzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlLAo+ID4gPj4+Pj4+Pj4+Pj4+PiArCQkJICAgZW51bSBkcm1fY29ubmVjdG9y X3N0YXR1cyBzdGF0dXMpOwo+ID4gPj4+Pj4+Pj4+Pj4+PiArCj4gPiA+Pj4+Pj4+Pj4+Pj4+ICAj aWZkZWYgQ09ORklHX0RSTV9QQU5FTF9CUklER0UKPiA+ID4+Pj4+Pj4+Pj4+Pj4gIHN0cnVjdCBk cm1fYnJpZGdlICpkcm1fcGFuZWxfYnJpZGdlX2FkZChzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCwK PiA+ID4+Pj4+Pj4+Pj4+Pj4gIAkJCQkJdTMyIGNvbm5lY3Rvcl90eXBlKTsKPiAKPiAtLSAKPiBS ZWdhcmRzLAo+IAo+IExhdXJlbnQgUGluY2hhcnQKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=