From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v6 3/6] drm/dp_mst: Start tracking per-port VCPI allocations Date: Thu, 29 Nov 2018 10:21:13 +0100 Message-ID: <20181129092113.GF21184@phenom.ffwll.local> References: <20181116005008.7243-1-lyude@redhat.com> <20181116005008.7243-4-lyude@redhat.com> <20181126210421.GQ4266@phenom.ffwll.local> <20181126212250.GS4266@phenom.ffwll.local> <8fe9a5708b2cafc74635688848ee082e54f739d5.camel@redhat.com> <20181127194452.GE4266@phenom.ffwll.local> <20181128081708.GG4266@phenom.ffwll.local> <2743da9300e7805fd144995d33b9249aefc2857a.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <2743da9300e7805fd144995d33b9249aefc2857a.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Lyude Paul Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBOb3YgMjgsIDIwMTggYXQgMDg6MTQ6MTNQTSAtMDUwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiAKPiBPbiBXZWQsIDIwMTgtMTEtMjggYXQgMDk6MTcgKzAxMDAsIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4gPiBPbiBUdWUsIE5vdiAyNywgMjAxOCBhdCAwODo0NDoxNFBNIC0wNTAwLCBMeXVk ZSBQYXVsIHdyb3RlOgo+ID4gPiBPbiBUdWUsIDIwMTgtMTEtMjcgYXQgMjA6NDQgKzAxMDAsIERh bmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+IAo+ID4gPiBXZSBjb3VsZCBkbyB0aGlzIHRoZSBvdGhl ciB3YXkgYXJvdW5kIHNvIGl0IGxvb2tzIGxpa2UgdGhpcyBtYXliZQo+ID4gPiAKPiA+ID4gc3Ry dWN0IGtyZWY7IC8qIG1hbmFnZXMga2ZyZWUoKSAqLwo+ID4gPiBzdHJ1Y3QgdG9wb2xvZ3lfa3Jl ZjsgLyogY29ycmVzb25kcyB0byBsaWZldGltZSBpbiB0b3BvbG9neSAqLwo+ID4gPiAKPiA+ID4g VGhlbiBvbmx5IGV4cG9zZSBmdW5jdGlvbnMgZm9yIHRoZSBub3JtYWwga3JlZiB0byBkcml2ZXJz LCBzbyB0aGF0IGFueQo+ID4gPiBwb3NzaWJsZSBjb25mdXNpb24gaXMgc3RpbGwgbGltaXRlZCB0 byBkcm1fZHBfbXN0X3RvcG9sb2d5LmMKPiA+IAo+ID4gSSBsaWtlIHRoaXMgYmlrZXNoZWQgYSBs b3QuIFNpbmNlIHdlIG5lZWQgYSBidW5jaCBvZiB0aGUgcGxhaW4KPiA+IGtyZWZfZ2V0L3B1dCBp bnRlcm5hbGx5LCBwcm9iYWJseSBzdGlsbCBnb29kIHRvIGhhdmUgYSB3cmFwcGVyLiBGb3IgdGhh dAo+ID4gdGhlIHBvcnRfbWFsbG9jX2dldC9wdXQoKSBzdGlsbCBzb3VuZHMgZ29vZCB0byBtZSAt IHBvcnRfa2ZyZWVfZ2V0L3B1dAo+ID4gc291bmRzIGNvbmZ1c2luZywgc2luY2UgaXQncyBub3Qg dGhlIGtmcmVlIHdlJ3JlIHJlZmNvdW50aW5nLCBidXQgdGhlCj4gPiBtZW1vcnkgYWxsb2NhdGlv bi4KPiA+IAo+ID4gQW5vdGhlciBvcHRpb24gd291bGQgYmUgdG8gYWRkIF90b3BvbG9neSB0byB0 aGUgcHVibGljIGdldC9wdXQgZnVuY3Rpb25zLAo+ID4gYnV0IHRoYXQgbWFrZXMgZm9yIGEgZmFp cmx5IGxvbmcgZnVuY3Rpb24gbmFtZSA6LS8KPiAKPiBibGVoLiBMb29rZWQgYXQgbm90IHVzaW5n IGEgbWFsbG9jKCkgcHJlZml4IGluIHRoZSBuYW1pbmcgYnV0IGl0J3MKPiBkZWZpbml0ZWx5IHN0 aWxsIG1vcmUgY29uZnVzaW5nIHdpdGhvdXQgb25lLgo+IAo+IEkgcmVhbGx5IGRvIHF1ZXN0aW9u IGlmIHdlIHJlYWxseSB3YW50IHRoZSBjYW5vbmljYWwgbmFtaW5nIHByZWZpeCBmb3IgdGhlIE1T VAo+IGhlbHBlcnMgdG8gYmUgZHJtX2RwX21zdF90b3BvbG9neS4gSXQgd291bGQgYmUgdmVyeSBu aWNlIHRvIGhhdmUgdGhpcyBmcmVlZCBzbwo+IHdlIGNvdWxkIGRvIHNvbWV0aGluZyBsaWtlIHRo aXM6Cj4gCj4gZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0YigpIC8qICZ0b3BvbG9neV9rcmVm ICovCj4gZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0YigpIC8qICZ0b3BvbG9neV9rcmVmICov Cj4gZHJtX2RwX21zdF9nZXRfbXN0Yl9tYWxsb2MoKSAgIC8qICZrcmVmICovCj4gZHJtX2RwX21z dF9wdXRfbXN0Yl9tYWxsb2MoKSAgIC8qICZrcmVmICovCj4gCj4gZHJtX2RwX21zdF90b3BvbG9n eV9nZXRfcG9ydCgpIC8qICZ0b3BvbG9neV9rcmVmICovCj4gZHJtX2RwX21zdF90b3BvbG9neV9w dXRfcG9ydCgpIC8qICZ0b3BvbG9neV9rcmVmICovCj4gZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxs b2MoKSAgIC8qICZrcmVmICovCj4gZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxsb2MoKSAgIC8qICZr cmVmICovCgpBY2sgb24gdGhpcyBiaWtlc2hlZCwgbG9va3MgZ29vZCB0byBtZS4KCj4gQWRkaXRp b25hbGx5LCBJIGhhZCBhbiBlcGlwaGFueSBhbmQgZmlndXJlZCBvdXQgYSBzZXJpb3VzbHkgZGVh ZC1zaW1wbGUKPiBydWxlIHRoYXQgYW5zd2VycyAid2hhdCByZWYgdG8gdXNlIHdoZXJlIiBpbiB0 aGUgTVNUIGhlbHBlciBjb2RlOgo+IAo+IExldCdzIHN0YXJ0IHdpdGggYSB0b3BvbG9neSBsaWtl IHRoaXM6Cj4gCj4gICB8LSBtc3RfcHJpbWFyeQo+ICAgICAgfC0gcG9ydCAjMQo+ICAgICAgfC0g cG9ydCAjMgo+ICAgICAgfC0gcG9ydCAjMwo+ICAgICAgICAgfC0gbXN0YiAjMQo+IAkgICB8LSBw b3J0ICM0Cj4gCSAgICAgIHwtIG1zdGIgIzIKPiAJICAgfC0gcG9ydCAjNQo+IAkgICB8LSBwb3J0 ICM2Cj4gCSAgICAgIHwtIG1zdGIgIzMKPiAJICAgICAgICAgfC0gcG9ydCAjNwo+IAkJICAgIHwt IG1zdGIgIzQKPiAJICAgICAgICAgfC0gcG9ydCAjOAo+IAkgICAgICAgICB8LSBwb3J0ICM5Cj4g Cj4gSWYgbXN0YiAjMSB3YXMgcmVtb3ZlZCBmcm9tIHRoZSB0b3BvbG9neSwgcG9ydHMgNC05IGFu ZCBtc3RicyAyLTQgbXVzdAo+IGxvc2UgdGhlaXIgdG9wb2xvZ3kgcmVmZXJlbmNlcy4gU2ltcGx5 IHB1dDogZWFjaCBwb3J0IGhvbGRzIGEgdG9wb2xvZ3kKPiByZWZlcmVuY2UgdG8gaXQncyBtc3Ri IChpZiB0aGVyZSBpcyBvbmUpLCBhbmQgZWFjaCBtc3RiIGhvbGRzIGEgdG9wb2xvZ3kKPiByZWZl cmVuY2UgdG8gaXQncyBwb3J0cy4KPiAKPiBOb3csIGxldCdzIGFsbG9jYXRlIHNvbWUgcGF5bG9h ZHMgb24gdGhlIHRvcG9sb2d5Ogo+IAo+ICAgfC0gbXN0X3ByaW1hcnkKPiAgICAgIHwtIHBvcnQg IzEKPiAgICAgIHwtIHBvcnQgIzIKPiAgICAgIHwtIHBvcnQgIzMKPiAgICAgICAgIHwtIG1zdGIg IzEKPiAJICAgfC0gcG9ydCAjNAo+IAkgICAgICB8LSBtc3RiICMyIChoYXMgcGF5bG9hZCkKPiAJ ICAgfC0gcG9ydCAjNQo+IAkgICB8LSBwb3J0ICM2Cj4gCSAgICAgIHwtIG1zdGIgIzMKPiAJICAg ICAgICAgfC0gcG9ydCAjNwo+IAkJICAgIHwtIG1zdGIgIzQgKGhhcyBwYXlsb2FkKQo+IAkgICAg ICAgICB8LSBwb3J0ICM4Cj4gCSAgICAgICAgIHwtIHBvcnQgIzkKPiAKPiBTbywgbm93IGlmIHdl IHJlbW92ZSBtc3RiICMxIGFueSBwYXlsb2FkcyB1bmRlciBpdCBuZWVkIHRvIGJlIGZyZWVkLgo+ IFNpbmNlIG1zdGIgIzQncyBhbmQgIzIncyBwYXJlbnRzIG5vIGxvbmdlciBleGlzdCBpbiB0aGUg dG9wb2xvZ3kKPiBob3dldmVyLCB3ZSBtdXN0IGdvIGJhY2sgdXAgdGhlIHRyZWUgdG8gZmluZCBv dXIgbGFzdCBsaXZpbmcgcmVsYXRpdmUuCj4gCj4gU286Cj4gCj4gbXN0YiAjNCDihpIgcG9ydCAj NyDihpIgbXN0YiAjMyDihpIgcG9ydCAjNiDihpIgbXN0YiAjMSDihpIgcG9ydCAjMyAgIGZvciBw YXlsb2FkIDEKPiBtc3RiICM0IOKGkiBwb3J0ICM0IOKGkiBtc3RiICMxIOKGkiBwb3J0ICMzICAg ICAgICAgICAgICAgICAgICAgICBmb3IgcGF5bG9hZCAyCj4gCj4gR29pbmcgb2ZmIHRoaXMgd2Ug Y2FuIGNvbWUgdXAgd2l0aCB0aGUgcnVsZSBmb3IgbWFsbG9jIHJlZnM6IGVhY2ggcG9ydAo+IGhv bGRzIGEgbWFsbG9jIHJlZiB0byBpdCdzIHBhcmVudCBtc3RiLCBhbmQgZWFjaCBtc3RiIGhvbGRz IGEgbWFsbG9jIHJlZgo+IHRvIGl0J3MgcGFyZW50IHBvcnQgKGlmIHRoZXJlIGlzIG9uZSkuIFNv LCBpdCdzIGp1c3QgdGhlIHJldmVyc2Ugb2YgdGhlCj4gdG9wb2xvZ3kgcmVmIHJ1bGUuIE5vdyBq dXN0IGFkZCByZWZzIGZvciBwYXlsb2FkcyBhbmQgb3RoZXIgc3R1ZmYsIGFuZAo+IHdlJ3JlIGdv b2QuCj4gCj4gSG9vcmF5ISBOb3cgSSBjYW4gYWxzbyB1c2UgdGhpcyBpbiBhbnkgZG9jcyBJIHdy aXRlIHRvbyA6KQoKVGhpcyBmbGV3IHJpZ2h0IG92ZXIgbXkgaGVhZCAoYnV0IGNvZmZlZSBpc24n dCB3b3JraW5nIHlldCBJIGd1ZXNzKSwgc28KZGVmaW5pdGVseSBnb29kIHRvIHB1dCB0aGlzIGlu dG8gdGhlIGtlcm5lbGRvYyBjb21tZW50cyA6LSkKLURhbmllbAoKPiAKPiA+IC1EYW5pZWwKPiA+ IAo+ID4gPiA+ID4gPiAtRGFuaWVsCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IFBpbGVzIG9m IGNvbW1lbnRzIGJlbG93Lgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IENoZWVycywgRGFu aWVsCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAgLSBVc2UgdGhlIHNtYWxsIGNoYW5n ZXMgdG8gZHJtX2RwX3B1dF9wb3J0KCkgdG8gYWRkIGV2ZW4gbW9yZQo+ID4gPiA+ID4gPiA+ID4g ZXJyb3IKPiA+ID4gPiA+ID4gPiA+ICAgIGNoZWNraW5nIHRvIG1ha2UgbWlzdXNhZ2Ugb2YgdGhl IGhlbHBlcnMgbW9yZSBvYnZpb3VzLiBJCj4gPiA+ID4gPiA+ID4gPiBhZGRlZAo+ID4gPiA+ID4g PiA+ID4gdGhpcwo+ID4gPiA+ID4gPiA+ID4gICAgYWZ0ZXIgaGF2aW5nIHRvIGNoYXNlIGRvd24g dmFyaW91cyB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zCj4gPiA+ID4gPiA+ID4gPiB0aGF0Cj4g PiA+ID4gPiA+ID4gPiAgICBzdGFydGVkIHBvcHBpbmcgdXAgZnJvbSB0aGUgbmV3IGhlbHBlcnMg c28gbm8gb25lIGVsc2UgaGFzIHRvCj4gPiA+ID4gPiA+ID4gPiAgICB0cm91Ymxlc2hvb3QgdGhh dC4KPiA+ID4gPiA+ID4gPiA+ICAtIE1vdmUgc29tZSBhY2NpZGVudGFsIERSTV9ERUJVR19LTVMo KSBjYWxscyB0bwo+ID4gPiA+ID4gPiA+ID4gRFJNX0RFQlVHX0FUT01JQygpCj4gPiA+ID4gPiA+ ID4gPiAgLSBVcGRhdGUgZG9jdW1lbnRhdGlvbiBhZ2Fpbiwgbm90ZSB0aGF0IGZpbmQvcmVsZWFz ZSgpIHNob3VsZAo+ID4gPiA+ID4gPiA+ID4gYm90aAo+ID4gPiA+ID4gPiA+ID4gbm90Cj4gPiA+ ID4gPiA+ID4gPiBiZQo+ID4gPiA+ID4gPiA+ID4gICAgY2FsbGVkIG9uIHRoZSBzYW1lIHBvcnQg aW4gYSBzaW5nbGUgYXRvbWljIGNoZWNrIHBoYXNlIChidXQKPiA+ID4gPiA+ID4gPiA+IG11bHRp cGxlCj4gPiA+ID4gPiA+ID4gPiAgICBjYWxscyB0byBvbmUgb3IgdGhlIG90aGVyIGlzIE9LKQo+ ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBDaGFuZ2VzIHNpbmNlIHY0Ogo+ID4gPiA+ ID4gPiA+ID4gIC0gRG9uJ3Qgc2tpcCB0aGUgYXRvbWljIGNoZWNrcyBmb3IgVkNQSSBhbGxvY2F0 aW9ucyBpZiBubyBuZXcKPiA+ID4gPiA+ID4gPiA+IFZDUEkKPiA+ID4gPiA+ID4gPiA+ICAgIGFs bG9jYXRpb25zIGhhcHBlbiBpbiBhIHN0YXRlLiBUaGlzIG1ha2VzIHRoZSBuZXh0IGNoYW5nZSBJ J20KPiA+ID4gPiA+ID4gPiA+IGFib3V0Cj4gPiA+ID4gPiA+ID4gPiAgICB0byBsaXN0IGhlcmUg YSBsb3QgZWFzaWVyIHRvIGltcGxlbWVudC4KPiA+ID4gPiA+ID4gPiA+ICAtIERvbid0IGlnbm9y ZSBWQ1BJIGFsbG9jYXRpb25zIG9uIGRlc3Ryb3llZCBwb3J0cywgaW5zdGVhZAo+ID4gPiA+ID4g PiA+ID4gZW5zdXJlCj4gPiA+ID4gPiA+ID4gPiB0aGF0Cj4gPiA+ID4gPiA+ID4gPiAgICB3aGVu IHBvcnRzIGFyZSBkZXN0cm95ZWQgYW5kIHN0aWxsIGhhdmUgVkNQSSBhbGxvY2F0aW9ucyBpbgo+ ID4gPiA+ID4gPiA+ID4gdGhlCj4gPiA+ID4gPiA+ID4gPiAgICB0b3BvbG9neSBzdGF0ZSwgdGhl IG9ubHkgc3RhdGUgY2hhbmdlcyBhbGxvd2VkIGFyZSByZWxlYXNpbmcKPiA+ID4gPiA+ID4gPiA+ IHNhaWQKPiA+ID4gPiA+ID4gPiA+ICAgIHBvcnRzJyBWQ1BJLiBUaGlzIHByZXZlbnRzIGEgc3Rh dGUgd2l0aCBhIG1peCBvZiBWQ1BJCj4gPiA+ID4gPiA+ID4gPiBhbGxvY2F0aW9ucwo+ID4gPiA+ ID4gPiA+ID4gICAgZnJvbSBkZXN0cm95ZWQgcG9ydHMsIGFuZCBhbGxvY2F0aW9ucyBmcm9tIHZh bGlkIHBvcnRzLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBDaGFuZ2VzIHNpbmNl IHYzOgo+ID4gPiA+ID4gPiA+ID4gIC0gRG9uJ3QgcmVsZWFzZSBWQ1BJIGFsbG9jYXRpb25zIGlu IHRoZSB0b3BvbG9neSBzdGF0ZQo+ID4gPiA+ID4gPiA+ID4gaW1tZWRpYXRlbHkKPiA+ID4gPiA+ ID4gPiA+IGluCj4gPiA+ID4gPiA+ID4gPiAgICBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9z bG90cygpLCBpbnN0ZWFkIG1hcmsgdGhlbSBhcyAwCj4gPiA+ID4gPiA+ID4gPiBhbmQKPiA+ID4g PiA+ID4gPiA+IHNraXAKPiA+ID4gPiA+ID4gPiA+ICAgIG92ZXIgdGhlbSBpbiBkcm1fZHBfbXN0 X2R1cGxpY2F0ZV9zdGF0ZSgpLiBUaGlzIG1ha2VzIGl0IHNvCj4gPiA+ID4gPiA+ID4gPiAgICBk cm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpIGlzIHN0aWxsIGlkZW1wb3RlbnQgd2hp bGUKPiA+ID4gPiA+ID4gPiA+IGFsc28KPiA+ID4gPiA+ID4gPiA+ICAgIHRocm93aW5nIHdhcm5p bmdzIGlmIHRoZSBkcml2ZXIgbWVzc2VzIHVwIGl0J3MgYm9vayBrZWVwaW5nCj4gPiA+ID4gPiA+ ID4gPiBhbmQKPiA+ID4gPiA+ID4gPiA+IHRyaWVzCj4gPiA+ID4gPiA+ID4gPiAgICB0byByZWxl YXNlIFZDUEkgc2xvdHMgb24gYSBwb3J0IHRoYXQgZG9lc24ndCBoYXZlIGFueSBwcmUtCj4gPiA+ ID4gPiA+ID4gPiBleGlzdGluZwo+ID4gPiA+ID4gPiA+ID4gICAgVkNQSSBhbGxvY2F0aW9uIC0g ZGFudmV0Cj4gPiA+ID4gPiA+ID4gPiAgLSBDaGFuZ2UgbXN0X3N0YXRlL3N0YXRlIGluIHNvbWUg ZGVidWdnaW5nIG1lc3NhZ2VzIHRvICJtc3QKPiA+ID4gPiA+ID4gPiA+IHN0YXRlIgo+ID4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ID4gPiA+ID4gPiA+ ID4gIC0gVXNlIGttZW1kdXAoKSBmb3IgZHVwbGljYXRpbmcgTVNUIHN0YXRlIC0gZGFudmV0Cj4g PiA+ID4gPiA+ID4gPiAgLSBNb3ZlIHBvcnQgdmFsaWRhdGlvbiBvdXQgb2YgZHVwbGljYXRlIHN0 YXRlIGNhbGxiYWNrIC0gZGFudmV0Cj4gPiA+ID4gPiA+ID4gPiAgLSBIYW5kbGUgbG9vcGluZyB0 aHJvdWdoIE1TVCB0b3BvbG9neSBzdGF0ZXMgaW4KPiA+ID4gPiA+ID4gPiA+ICAgIGRybV9kcF9t c3RfYXRvbWljX2NoZWNrKCkgc28gdGhlIGRyaXZlciBkb2Vzbid0IGhhdmUgdG8gZG8gaXQKPiA+ ID4gPiA+ID4gPiA+ICAtIEZpeCBkb2N1bWVudGF0aW9uIGluIGRybV9kcF9hdG9taWNfZmluZF92 Y3BpX3Nsb3RzKCkKPiA+ID4gPiA+ID4gPiA+ICAtIE1vdmUgdGhlIGF0b21pYyBjaGVjayBmb3Ig ZWFjaCBpbmRpdmlkdWFsIHRvcG9sb2d5IHN0YXRlIGludG8KPiA+ID4gPiA+ID4gPiA+IGl0J3MK PiA+ID4gPiA+ID4gPiA+ICAgIG93biBmdW5jdGlvbiwgcmVkdWNlcyBpbmRlbnRpbmcKPiA+ID4g PiA+ID4gPiA+ICAtIERvbid0IGNvbnNpZGVyICJzdGFsZSIgTVNUIHBvcnRzIHdoZW4gY2FsY3Vs YXRpbmcgdGhlCj4gPiA+ID4gPiA+ID4gPiBiYW5kd2lkdGgKPiA+ID4gPiA+ID4gPiA+ICAgIHJl cXVpcmVtZW50cy4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBvcmlnaW5hbGx5IHdlIHJlbGllZCBv bgo+ID4gPiA+ID4gPiA+ID4gdGhlCj4gPiA+ID4gPiA+ID4gPiAgICBzdGF0ZSBkdXBsaWNhdGlv biBmdW5jdGlvbnMgdG8gcHJ1bmUgYW55IHN0YWxlIHBvcnRzIGZyb20gdGhlCj4gPiA+ID4gPiA+ ID4gPiBuZXcKPiA+ID4gPiA+ID4gPiA+ICAgIHN0YXRlLCB3aGljaCB3b3VsZCBwcmV2ZW50IHVz IGZyb20gaW5jb3JyZWN0bHkgY29uc2lkZXJpbmcKPiA+ID4gPiA+ID4gPiA+IHRoZWlyCj4gPiA+ ID4gPiA+ID4gPiAgICBiYW5kd2lkdGggcmVxdWlyZW1lbnRzIGFsb25nc2lkZSBsZWdpdGltYXRl IG5ldyBwYXlsb2Fkcy4KPiA+ID4gPiA+ID4gPiA+ICAtIEFkZCBmdW5jdGlvbiByZWZlcmVuY2Vz IGluIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkKPiA+ID4gPiA+ID4gPiA+IC0K PiA+ID4gPiA+ID4gPiA+IGRhbnZldAo+ID4gPiA+ID4gPiA+ID4gIC0gQW5ub3RhdGUgYXRvbWlj IFZDUEkgYW5kIGF0b21pYyBjaGVjayBmdW5jdGlvbnMgd2l0aAo+ID4gPiA+ID4gPiA+ID4gX19t dXN0X2NoZWNrCj4gPiA+ID4gPiA+ID4gPiAgICAtIGRhbnZldAo+ID4gPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+ID4gPiBDaGFuZ2VzIHNpbmNlIHYxOgo+ID4gPiA+ID4gPiA+ID4gIC0gRG9uJ3Qg dXNlIHRoZSBub3ctcmVtb3ZlZCAtPmF0b21pY19jaGVjaygpIGZvciBwcml2YXRlCj4gPiA+ID4g PiA+ID4gPiBvYmplY3RzCj4gPiA+ID4gPiA+ID4gPiBob29rLAo+ID4gPiA+ID4gPiA+ID4gICAg anVzdCBnaXZlIGRyaXZlcnMgYSBmdW5jdGlvbiB0byBjYWxsIHRoZW1zZWx2ZXMKPiA+ID4gPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogTHl1ZGUgUGF1bCA8bHl1ZGVA cmVkaGF0LmNvbT4KPiA+ID4gPiA+ID4gPiA+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0 dGVyQGZmd2xsLmNoPgo+ID4gPiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gPiAgZHJpdmVy cy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyB8IDI5NAo+ID4gPiA+ID4gPiA+ID4gKysr KysrKysrKysrKysrKysrKysrKystLS0KPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgIHwgICA0ICsKPiA+ID4gPiA+ID4gPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyAgIHwgIDY0ICsrKy0tLQo+ID4gPiA+ID4gPiA+ID4g IGluY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmggICAgICAgfCAgMjQgKystCj4gPiA+ID4g PiA+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAzMTkgaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25z KC0pCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCj4gPiA+ID4gPiA+ID4gPiBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKPiA+ID4gPiA+ID4gPiA+IGluZGV4IDAwZmJl N2EyNjk5ZC4uMTgzZDBlODMyY2VkIDEwMDY0NAo+ID4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwo+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwo+ID4gPiA+ID4gPiA+ID4gQEAgLTI2 MTcsMjEgKzI2MTcsNDIgQEAgc3RhdGljIGludCBkcm1fZHBfaW5pdF92Y3BpKHN0cnVjdAo+ID4g PiA+ID4gPiA+ID4gZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKPiA+ID4gPiA+ID4gPiA+ ICB9Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICAvKioKPiA+ID4gPiA+ID4gPiA+ IC0gKiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIC0gRmluZCBhbmQgYWRkIHZjcGkg c2xvdHMgdG8KPiA+ID4gPiA+ID4gPiA+IHRoZQo+ID4gPiA+ID4gPiA+ID4gc3RhdGUKPiA+ID4g PiA+ID4gPiA+ICsgKiBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIC0gRmluZCBhbmQg YWRkIFZDUEkgc2xvdHMgdG8KPiA+ID4gPiA+ID4gPiA+IHRoZQo+ID4gPiA+ID4gPiA+ID4gc3Rh dGUKPiA+ID4gPiA+ID4gPiA+ICAgKiBAc3RhdGU6IGdsb2JhbCBhdG9taWMgc3RhdGUKPiA+ID4g PiA+ID4gPiA+ICAgKiBAbWdyOiBNU1QgdG9wb2xvZ3kgbWFuYWdlciBmb3IgdGhlIHBvcnQKPiA+ ID4gPiA+ID4gPiA+ICAgKiBAcG9ydDogcG9ydCB0byBmaW5kIHZjcGkgc2xvdHMgZm9yCj4gPiA+ ID4gPiA+ID4gPiAgICogQHBibjogYmFuZHdpZHRoIHJlcXVpcmVkIGZvciB0aGUgbW9kZSBpbiBQ Qk4KPiA+ID4gPiA+ID4gPiA+ICAgKgo+ID4gPiA+ID4gPiA+ID4gLSAqIFJFVFVSTlM6Cj4gPiA+ ID4gPiA+ID4gPiAtICogVG90YWwgc2xvdHMgaW4gdGhlIGF0b21pYyBzdGF0ZSBhc3NpZ25lZCBm b3IgdGhpcyBwb3J0IG9yCj4gPiA+ID4gPiA+ID4gPiBlcnJvcgo+ID4gPiA+ID4gPiA+ID4gKyAq IEFsbG9jYXRlcyBWQ1BJIHNsb3RzIHRvIEBwb3J0LCByZXBsYWNpbmcgYW55IHByZXZpb3VzIFZD UEkKPiA+ID4gPiA+ID4gPiA+IGFsbG9jYXRpb25zIGl0Cj4gPiA+ID4gPiA+ID4gPiArICogbWF5 IGhhdmUgaGFkLiBBbnkgYXRvbWljIGRyaXZlcnMgd2hpY2ggc3VwcG9ydCBNU1QgbXVzdCBjYWxs Cj4gPiA+ID4gPiA+ID4gPiB0aGlzCj4gPiA+ID4gPiA+ID4gPiBmdW5jdGlvbgo+ID4gPiA+ID4g PiA+ID4gKyAqIGluIHRoZWlyICZkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MuYXRvbWljX2NoZWNr KCkgY2FsbGJhY2sKPiA+ID4gPiA+ID4gPiA+IHRvCj4gPiA+ID4gPiA+ID4gPiBjaGFuZ2UKPiA+ ID4gPiA+ID4gPiA+IHRoZQo+ID4gPiA+ID4gPiA+ID4gKyAqIGN1cnJlbnQgVkNQSSBhbGxvY2F0 aW9uIGZvciB0aGUgbmV3IHN0YXRlLCBidXQgb25seSB3aGVuCj4gPiA+ID4gPiA+ID4gPiArICog JmRybV9jcnRjX3N0YXRlLm1vZGVfY2hhbmdlZCBvcgo+ID4gPiA+ID4gPiA+ID4gJmRybV9jcnRj X3N0YXRlLmNvbm5lY3RvcnNfY2hhbmdlZAo+ID4gPiA+ID4gPiA+ID4gaXMgc2V0Cj4gPiA+ID4g PiA+ID4gPiArICogdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCB1c2Vyc3BhY2UgYXBwbGlj YXRpb25zIHRoYXQKPiA+ID4gPiA+ID4gPiA+IHN0aWxsCj4gPiA+ID4gPiA+ID4gPiB1c2UKPiA+ ID4gPiA+ID4gPiA+IHRoZQo+ID4gPiA+ID4gPiA+ID4gKyAqIGxlZ2FjeSBtb2Rlc2V0dGluZyBV QVBJLgo+ID4gPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ID4gPiArICogQWxsb2NhdGlvbnMg c2V0IGJ5IHRoaXMgZnVuY3Rpb24gYXJlIG5vdCBjaGVja2VkIGFnYWluc3QgdGhlCj4gPiA+ID4g PiA+ID4gPiBiYW5kd2lkdGgKPiA+ID4gPiA+ID4gPiA+ICsgKiByZXN0cmFpbnRzIG9mIEBtZ3Ig dW50aWwgdGhlIGRyaXZlciBjYWxscwo+ID4gPiA+ID4gPiA+ID4gZHJtX2RwX21zdF9hdG9taWNf Y2hlY2soKS4KPiA+ID4gPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gPiA+ID4gKyAqIEFkZGl0aW9u YWxseSwgaXQgaXMgT0sgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzCj4gPiA+ ID4gPiA+ID4gPiBvbgo+ID4gPiA+ID4gPiA+ID4gdGhlCj4gPiA+ID4gPiA+ID4gPiBzYW1lCj4g PiA+ID4gPiA+ID4gPiArICogQHBvcnQgYXMgbmVlZGVkLiBJdCBpcyBub3QgT0sgaG93ZXZlciwg dG8gY2FsbCB0aGlzIGZ1bmN0aW9uCj4gPiA+ID4gPiA+ID4gPiBhbmQKPiA+ID4gPiA+ID4gPiA+ ICsgKiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cygpIGluIHRoZSBzYW1lIGF0b21p YyBjaGVjawo+ID4gPiA+ID4gPiA+ID4gcGhhc2UuCj4gPiA+ID4gPiA+ID4gPiArICoKPiA+ID4g PiA+ID4gPiA+ICsgKiBTZWUgYWxzbzoKPiA+ID4gPiA+ID4gPiA+ICsgKiBkcm1fZHBfYXRvbWlj X3JlbGVhc2VfdmNwaV9zbG90cygpCj4gPiA+ID4gPiA+ID4gPiArICogZHJtX2RwX21zdF9hdG9t aWNfY2hlY2soKQo+ID4gPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ID4gPiArICogUmV0dXJu czoKPiA+ID4gPiA+ID4gPiA+ICsgKiBUb3RhbCBzbG90cyBpbiB0aGUgYXRvbWljIHN0YXRlIGFz c2lnbmVkIGZvciB0aGlzIHBvcnQsIG9yIGEKPiA+ID4gPiA+ID4gPiA+IG5lZ2F0aXZlIGVycm9y Cj4gPiA+ID4gPiA+ID4gPiArICogY29kZSBpZiB0aGUgcG9ydCBubyBsb25nZXIgZXhpc3RzCj4g PiA+ID4gPiA+ID4gPiAgICovCj4gPiA+ID4gPiA+ID4gPiAgaW50IGRybV9kcF9hdG9taWNfZmlu ZF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlCj4gPiA+ID4gPiA+ID4gPiAqc3Rh dGUsCj4gPiA+ID4gPiA+ID4gPiAgCQkJCSAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy ICptZ3IsCj4gPiA+ID4gPiA+ID4gPiAgCQkJCSAgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9y dCwgaW50Cj4gPiA+ID4gPiA+ID4gPiBwYm4pCj4gPiA+ID4gPiA+ID4gPiAgewo+ID4gPiA+ID4g PiA+ID4gIAlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqdG9wb2xvZ3lfc3RhdGU7 Cj4gPiA+ID4gPiA+ID4gPiAtCWludCByZXFfc2xvdHM7Cj4gPiA+ID4gPiA+ID4gPiArCXN0cnVj dCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICpwb3MsICp2Y3BpID0gTlVMTDsKPiA+ID4gPiA+ID4g PiA+ICsJaW50IHByZXZfc2xvdHMsIHJlcV9zbG90cywgcmV0Owo+ID4gPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+ID4gPiAgCXRvcG9sb2d5X3N0YXRlID0gZHJtX2F0b21pY19nZXRfbXN0X3RvcG9s b2d5X3N0YXRlKHN0YXRlLAo+ID4gPiA+ID4gPiA+ID4gbWdyKTsKPiA+ID4gPiA+ID4gPiA+ICAJ aWYgKElTX0VSUih0b3BvbG9neV9zdGF0ZSkpCj4gPiA+ID4gPiA+ID4gPiBAQCAtMjY0MCwyMCAr MjY2MSw2MCBAQCBpbnQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoc3RydWN0Cj4gPiA+ ID4gPiA+ID4gPiBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+ID4gPiA+ID4gPiA+ICAJcG9y dCA9IGRybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVmKG1nciwgcG9ydCk7Cj4gPiA+ID4gPiA+ ID4gPiAgCWlmIChwb3J0ID09IE5VTEwpCj4gPiA+ID4gPiA+ID4gPiAgCQlyZXR1cm4gLUVJTlZB TDsKPiA+ID4gPiA+ID4gPiA+IC0JcmVxX3Nsb3RzID0gRElWX1JPVU5EX1VQKHBibiwgbWdyLT5w Ym5fZGl2KTsKPiA+ID4gPiA+ID4gPiA+IC0JRFJNX0RFQlVHX0tNUygidmNwaSBzbG90cyByZXE9 JWQsIGF2YWlsPSVkXG4iLAo+ID4gPiA+ID4gPiA+ID4gLQkJCXJlcV9zbG90cywgdG9wb2xvZ3lf c3RhdGUtPmF2YWlsX3Nsb3RzKTsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gLQlp ZiAocmVxX3Nsb3RzID4gdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzKSB7Cj4gPiA+ID4gPiA+ ID4gPiAtCQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7Cj4gPiA+ID4gPiA+ID4gPiAtCQlyZXR1cm4g LUVOT1NQQzsKPiA+ID4gPiA+ID4gPiA+ICsJdG9wb2xvZ3lfc3RhdGUtPnZjcGlfYWxsb2NhdGVk ID0gdHJ1ZTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJLyogRmluZCB0aGUg Y3VycmVudCBhbGxvY2F0aW9uIGZvciB0aGlzIHBvcnQsIGlmIGFueSAqLwo+ID4gPiA+ID4gPiA+ ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcywgJnRvcG9sb2d5X3N0YXRlLT52Y3BpcywgbmV4 dCkgewo+ID4gPiA+ID4gPiA+ID4gKwkJaWYgKHBvcy0+cG9ydCA9PSBwb3J0KSB7Cj4gPiA+ID4g PiA+ID4gPiArCQkJdmNwaSA9IHBvczsKPiA+ID4gPiA+ID4gPiA+ICsJCQlwcmV2X3Nsb3RzID0g dmNwaS0+dmNwaTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJCQkvKgo+ID4g PiA+ID4gPiA+ID4gKwkJCSAqIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHRoZSBk cml2ZXIKPiA+ID4gPiA+ID4gPiA+IHRyaWVzCj4gPiA+ID4gPiA+ID4gPiArCQkJICogcmVsZWFz aW5nIGFuZCBhbGxvY2F0aW5nIHRoZSBzYW1lIFZDUEkKPiA+ID4gPiA+ID4gPiA+IGFsbG9jYXRp b24sCj4gPiA+ID4gPiA+ID4gPiArCQkJICogd2hpY2ggaXMgYW4gZXJyb3IKPiA+ID4gPiA+ID4g PiA+ICsJCQkgKi8KPiA+ID4gPiA+ID4gPiA+ICsJCQlpZiAoV0FSTl9PTighcHJldl9zbG90cykp IHsKPiA+ID4gPiA+ID4gPiA+ICsJCQkJRFJNX0VSUk9SKCJjYW5ub3QgYWxsb2NhdGUgYW5kIHJl bGVhc2UKPiA+ID4gPiA+ID4gPiA+IFZDUEkgb24KPiA+ID4gPiA+ID4gPiA+IFtNU1QgUE9SVDol cF0gaW4gdGhlIHNhbWUgc3RhdGVcbiIsCj4gPiA+ID4gPiA+ID4gPiArCQkJCQkgIHBvcnQpOwo+ ID4gPiA+ID4gPiA+ID4gKwkJCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ID4gPiA+ICsJCQl9 Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gQWxsb3dpbmcgYXRvbWljIGNoYW5nZXMgdG8g b3V0cHV0IHN0YXRlIChsaWtlIGRpc2FibGluZyBpdCBvbiBvbmUKPiA+ID4gPiA+ID4gPiBjcnRj LAo+ID4gPiA+ID4gPiA+IGFuZCB0aGVuIGVuYWJsaW5nIG9uIHRoZSBvdGhlciwgdGh1cyBib3Ro IHJlbGVhc2luZyBhbmQgcmUtCj4gPiA+ID4gPiA+ID4gYWxsb2NhdGluZwo+ID4gPiA+ID4gPiA+ IHRoZQo+ID4gPiA+ID4gPiA+IHZjcGkgaW4gb25lIGdvKSBpcyBraW5kYSB0aGUgcG9pbnQgb2Yg YXRvbWljLiBTbyBkZWZpbml0ZWx5IGNhbid0Cj4gPiA+ID4gPiA+ID4gRUlOVkFMCj4gPiA+ID4g PiA+ID4gaGVyZS4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBTb3VuZHMgbGlrZSB3ZSBu ZWVkIG1vcmUgdGVzdGNhc2VzIGluIGlndD8KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gPiA+ICsJCQlicmVhazsKPiA+ID4gPiA+ID4gPiA+ICsJCX0KPiA+ID4g PiA+ID4gPiA+ICAJfQo+ID4gPiA+ID4gPiA+ID4gKwlpZiAoIXZjcGkpCj4gPiA+ID4gPiA+ID4g PiArCQlwcmV2X3Nsb3RzID0gMDsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gLQl0 b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgLT0gcmVxX3Nsb3RzOwo+ID4gPiA+ID4gPiA+ID4g LQlEUk1fREVCVUdfS01TKCJ2Y3BpIHNsb3RzIGF2YWlsPSVkIiwgdG9wb2xvZ3lfc3RhdGUtCj4g PiA+ID4gPiA+ID4gPiA+IGF2YWlsX3Nsb3RzKTsKPiA+ID4gPiA+ID4gPiA+ICsJcmVxX3Nsb3Rz ID0gRElWX1JPVU5EX1VQKHBibiwgbWdyLT5wYm5fZGl2KTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gPiA+ICsJRFJNX0RFQlVHX0FUT01JQygiW0NPTk5FQ1RPUjolZDolc10gW01TVCBQ T1JUOiVwXSBWQ1BJICVkIC0+Cj4gPiA+ID4gPiA+ID4gPiAlZFxuIiwKPiA+ID4gPiA+ID4gPiA+ ICsJCQkgcG9ydC0+Y29ubmVjdG9yLT5iYXNlLmlkLCBwb3J0LT5jb25uZWN0b3ItCj4gPiA+ID4g PiA+ID4gPiA+IG5hbWUsCj4gPiA+ID4gPiA+ID4gPiArCQkJIHBvcnQsIHByZXZfc2xvdHMsIHJl cV9zbG90cyk7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCS8qIEFkZCB0aGUg bmV3IGFsbG9jYXRpb24gdG8gdGhlIHN0YXRlICovCj4gPiA+ID4gPiA+ID4gPiArCWlmICghdmNw aSkgewo+ID4gPiA+ID4gPiA+ID4gKwkJdmNwaSA9IGt6YWxsb2Moc2l6ZW9mKCp2Y3BpKSwgR0ZQ X0tFUk5FTCk7Cj4gPiA+ID4gPiA+ID4gPiArCQlpZiAoIXZjcGkpIHsKPiA+ID4gPiA+ID4gPiA+ ICsJCQlyZXQgPSAtRU5PTUVNOwo+ID4gPiA+ID4gPiA+ID4gKwkJCWdvdG8gb3V0Owo+ID4gPiA+ ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiArCQl2Y3BpLT5w b3J0ID0gZHJtX2RwX2dldF92YWxpZGF0ZWRfcG9ydF9yZWYobWdyLCBwb3J0KTsKPiA+ID4gPiA+ ID4gPiA+ICsJCWlmICghdmNwaS0+cG9ydCkgewo+ID4gPiA+ID4gPiA+ID4gKwkJCXJldCA9IC1F SU5WQUw7Cj4gPiA+ID4gPiA+ID4gPiArCQkJa2ZyZWUodmNwaSk7Cj4gPiA+ID4gPiA+ID4gPiAr CQkJZ290byBvdXQ7Cj4gPiA+ID4gPiA+ID4gPiArCQl9Cj4gPiA+ID4gPiA+ID4gPiArCQlsaXN0 X2FkZCgmdmNwaS0+bmV4dCwgJnRvcG9sb2d5X3N0YXRlLT52Y3Bpcyk7Cj4gPiA+ID4gPiA+ID4g PiArCX0KPiA+ID4gPiA+ID4gPiA+ICsJdmNwaS0+dmNwaSA9IHJlcV9zbG90czsKPiA+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJcmV0ID0gcmVxX3Nsb3RzOwo+ID4gPiA+ID4gPiA+ ID4gK291dDoKPiA+ID4gPiA+ID4gPiA+ICAJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOwo+ID4gPiA+ ID4gPiA+ID4gLQlyZXR1cm4gcmVxX3Nsb3RzOwo+ID4gPiA+ID4gPiA+ID4gKwlyZXR1cm4gcmV0 Owo+ID4gPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gPiA+ICBFWFBPUlRfU1lNQk9MKGRybV9k cF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKTsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ ID4gQEAgLTI2NjEsMzEgKzI3MjIsNjYgQEAKPiA+ID4gPiA+ID4gPiA+IEVYUE9SVF9TWU1CT0wo ZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMpOwo+ID4gPiA+ID4gPiA+ID4gICAqIGRybV9k cF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkgLSBSZWxlYXNlIGFsbG9jYXRlZCB2Y3BpCj4g PiA+ID4gPiA+ID4gPiBzbG90cwo+ID4gPiA+ID4gPiA+ID4gICAqIEBzdGF0ZTogZ2xvYmFsIGF0 b21pYyBzdGF0ZQo+ID4gPiA+ID4gPiA+ID4gICAqIEBtZ3I6IE1TVCB0b3BvbG9neSBtYW5hZ2Vy IGZvciB0aGUgcG9ydAo+ID4gPiA+ID4gPiA+ID4gLSAqIEBzbG90czogbnVtYmVyIG9mIHZjcGkg c2xvdHMgdG8gcmVsZWFzZQo+ID4gPiA+ID4gPiA+ID4gKyAqIEBwb3J0OiBUaGUgcG9ydCB0byBy ZWxlYXNlIHRoZSBWQ1BJIHNsb3RzIGZyb20KPiA+ID4gPiA+ID4gPiA+ICAgKgo+ID4gPiA+ID4g PiA+ID4gLSAqIFJFVFVSTlM6Cj4gPiA+ID4gPiA+ID4gPiAtICogMCBpZiBAc2xvdHMgd2VyZSBh ZGRlZCBiYWNrIHRvICZkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlLQo+ID4gPiA+ID4gPiA+ID4g PiBhdmFpbF9zbG90cyBvcgo+ID4gPiA+ID4gPiA+ID4gLSAqIG5lZ2F0aXZlIGVycm9yIGNvZGUK PiA+ID4gPiA+ID4gPiA+ICsgKiBSZWxlYXNlcyBhbnkgVkNQSSBzbG90cyB0aGF0IGhhdmUgYmVl biBhbGxvY2F0ZWQgdG8gYSBwb3J0Cj4gPiA+ID4gPiA+ID4gPiBpbgo+ID4gPiA+ID4gPiA+ID4g dGhlCj4gPiA+ID4gPiA+ID4gPiBhdG9taWMKPiA+ID4gPiA+ID4gPiA+ICsgKiBzdGF0ZS4gQW55 IGF0b21pYyBkcml2ZXJzIHdoaWNoIHN1cHBvcnQgTVNUIG11c3QgY2FsbCB0aGlzCj4gPiA+ID4g PiA+ID4gPiBmdW5jdGlvbgo+ID4gPiA+ID4gPiA+ID4gaW4KPiA+ID4gPiA+ID4gPiA+ICsgKiB0 aGVpciAmZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MuYXRvbWljX2NoZWNrKCkgY2FsbGJhY2sK PiA+ID4gPiA+ID4gPiA+IHdoZW4KPiA+ID4gPiA+ID4gPiA+IHRoZQo+ID4gPiA+ID4gPiA+ID4g KyAqIGNvbm5lY3RvciB3aWxsIG5vIGxvbmdlciBoYXZlIFZDUEkgYWxsb2NhdGVkIChlLmcuIGJl Y2F1c2UKPiA+ID4gPiA+ID4gPiA+IGl0J3MKPiA+ID4gPiA+ID4gPiA+IENSVEMKPiA+ID4gPiA+ ID4gPiA+IHdhcwo+ID4gPiA+ID4gPiA+ID4gKyAqIHJlbW92ZWQpIHdoZW4gaXQgaGFkIFZDUEkg YWxsb2NhdGVkIGluIHRoZSBwcmV2aW91cyBhdG9taWMKPiA+ID4gPiA+ID4gPiA+IHN0YXRlLgo+ ID4gPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ID4gPiArICogSXQgaXMgT0sgdG8gY2FsbCB0 aGlzIGV2ZW4gaWYgQHBvcnQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tCj4gPiA+ID4gPiA+ID4gPiB0 aGUKPiA+ID4gPiA+ID4gPiA+IHN5c3RlbS4KPiA+ID4gPiA+ID4gPiA+ICsgKiBBZGRpdGlvbmFs bHksIGl0IGlzIE9LIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBtdWx0aXBsZSB0aW1lcwo+ID4gPiA+ ID4gPiA+ID4gb24KPiA+ID4gPiA+ID4gPiA+IHRoZQo+ID4gPiA+ID4gPiA+ID4gc2FtZQo+ID4g PiA+ID4gPiA+ID4gKyAqIEBwb3J0IGFzIG5lZWRlZC4gSXQgaXMgbm90IE9LIGhvd2V2ZXIsIHRv IGNhbGwgdGhpcyBmdW5jdGlvbgo+ID4gPiA+ID4gPiA+ID4gYW5kCj4gPiA+ID4gPiA+ID4gPiAr ICogZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoKSBvbiB0aGUgc2FtZSBAcG9ydCBpbiBh Cj4gPiA+ID4gPiA+ID4gPiBzaW5nbGUKPiA+ID4gPiA+ID4gPiA+IGF0b21pYwo+ID4gPiA+ID4g PiA+ID4gY2hlY2sKPiA+ID4gPiA+ID4gPiA+ICsgKiBwaGFzZS4KPiA+ID4gPiA+ID4gPiA+ICsg Kgo+ID4gPiA+ID4gPiA+ID4gKyAqIFNlZSBhbHNvOgo+ID4gPiA+ID4gPiA+ID4gKyAqIGRybV9k cF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKCkKPiA+ID4gPiA+ID4gPiA+ICsgKiBkcm1fZHBfbXN0 X2F0b21pY19jaGVjaygpCj4gPiA+ID4gPiA+ID4gPiArICoKPiA+ID4gPiA+ID4gPiA+ICsgKiBS ZXR1cm5zOgo+ID4gPiA+ID4gPiA+ID4gKyAqIDAgaWYgYWxsIHNsb3RzIGZvciB0aGlzIHBvcnQg d2VyZSBhZGRlZCBiYWNrIHRvCj4gPiA+ID4gPiA+ID4gPiArICogJmRybV9kcF9tc3RfdG9wb2xv Z3lfc3RhdGUuYXZhaWxfc2xvdHMgb3IgbmVnYXRpdmUgZXJyb3IKPiA+ID4gPiA+ID4gPiA+IGNv ZGUKPiA+ID4gPiA+ID4gPiA+ICAgKi8KPiA+ID4gPiA+ID4gPiA+ICBpbnQgZHJtX2RwX2F0b21p Y19yZWxlYXNlX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUKPiA+ID4gPiA+ID4g PiA+ICpzdGF0ZSwKPiA+ID4gPiA+ID4gPiA+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX2RwX21zdF90 b3BvbG9neV9tZ3IKPiA+ID4gPiA+ID4gPiA+ICptZ3IsCj4gPiA+ID4gPiA+ID4gPiAtCQkJCSAg ICAgaW50IHNsb3RzKQo+ID4gPiA+ID4gPiA+ID4gKwkJCQkgICAgIHN0cnVjdCBkcm1fZHBfbXN0 X3BvcnQgKnBvcnQpCj4gPiA+ID4gPiA+ID4gPiAgewo+ID4gPiA+ID4gPiA+ID4gIAlzdHJ1Y3Qg ZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAqdG9wb2xvZ3lfc3RhdGU7Cj4gPiA+ID4gPiA+ID4g PiArCXN0cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICpwb3M7Cj4gPiA+ID4gPiA+ID4gPiAr CWJvb2wgZm91bmQgPSBmYWxzZTsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gIAl0 b3BvbG9neV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0ZShzdGF0ZSwK PiA+ID4gPiA+ID4gPiA+IG1ncik7Cj4gPiA+ID4gPiA+ID4gPiAgCWlmIChJU19FUlIodG9wb2xv Z3lfc3RhdGUpKQo+ID4gPiA+ID4gPiA+ID4gIAkJcmV0dXJuIFBUUl9FUlIodG9wb2xvZ3lfc3Rh dGUpOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAtCS8qIFdlIGNhbm5vdCByZWx5 IG9uIHBvcnQtPnZjcGkubnVtX3Nsb3RzIHRvIHVwZGF0ZQo+ID4gPiA+ID4gPiA+ID4gLQkgKiB0 b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMgYXMgdGhlIHBvcnQgbWF5IG5vdCBleGlzdCBpZgo+ ID4gPiA+ID4gPiA+ID4gdGhlIHBhcmVudAo+ID4gPiA+ID4gPiA+ID4gLQkgKiBicmFuY2ggZGV2 aWNlIHdhcyB1bnBsdWdnZWQuIFRoaXMgc2hvdWxkIGJlIGZpeGVkIGJ5Cj4gPiA+ID4gPiA+ID4g PiB0cmFja2luZwo+ID4gPiA+ID4gPiA+ID4gLQkgKiBwZXItcG9ydCBzbG90IGFsbG9jYXRpb24g aW4gZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZQo+ID4gPiA+ID4gPiA+ID4gaW5zdGVhZCBvZgo+ ID4gPiA+ID4gPiA+ID4gLQkgKiBkZXBlbmRpbmcgb24gdGhlIGNhbGxlciB0byB0ZWxsIHVzIGhv dyBtYW55IHNsb3RzIHRvCj4gPiA+ID4gPiA+ID4gPiByZWxlYXNlLgo+ID4gPiA+ID4gPiA+ID4g LQkgKi8KPiA+ID4gPiA+ID4gPiA+IC0JdG9wb2xvZ3lfc3RhdGUtPmF2YWlsX3Nsb3RzICs9IHNs b3RzOwo+ID4gPiA+ID4gPiA+ID4gLQlEUk1fREVCVUdfS01TKCJ2Y3BpIHNsb3RzIHJlbGVhc2Vk PSVkLCBhdmFpbD0lZFxuIiwKPiA+ID4gPiA+ID4gPiA+IC0JCQlzbG90cywgdG9wb2xvZ3lfc3Rh dGUtPmF2YWlsX3Nsb3RzKTsKPiA+ID4gPiA+ID4gPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShw b3MsICZ0b3BvbG9neV9zdGF0ZS0+dmNwaXMsIG5leHQpIHsKPiA+ID4gPiA+ID4gPiA+ICsJCWlm IChwb3MtPnBvcnQgPT0gcG9ydCkgewo+ID4gPiA+ID4gPiA+ID4gKwkJCWZvdW5kID0gdHJ1ZTsK PiA+ID4gPiA+ID4gPiA+ICsJCQlicmVhazsKPiA+ID4gPiA+ID4gPiA+ICsJCX0KPiA+ID4gPiA+ ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiA+ID4gKwlpZiAoV0FSTl9PTighZm91bmQpKSB7Cj4gPiA+ ID4gPiA+ID4gPiArCQlEUk1fRVJST1IoIm5vIFZDUEkgZm9yIFtNU1QgUE9SVDolcF0gZm91bmQg aW4gbXN0Cj4gPiA+ID4gPiA+ID4gPiBzdGF0ZSAlcFxuIiwKPiA+ID4gPiA+ID4gPiA+ICsJCQkg IHBvcnQsICZ0b3BvbG9neV9zdGF0ZS0+YmFzZSk7Cj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4g LUVJTlZBTDsKPiA+ID4gPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4g PiA+ID4gKwlEUk1fREVCVUdfQVRPTUlDKCJbTVNUIFBPUlQ6JXBdIFZDUEkgJWQgLT4gMFxuIiwg cG9ydCwgcG9zLQo+ID4gPiA+ID4gPiA+ID4gPiB2Y3BpKTsKPiA+ID4gPiA+ID4gPiA+ICsJaWYg KHBvcy0+dmNwaSkgewo+ID4gPiA+ID4gPiA+ID4gKwkJLyoKPiA+ID4gPiA+ID4gPiA+ICsJCSAq IFRoaXMgc2hvdWxkIGJlIHNhZmUtYXMgdGhlIHByZXZpb3VzIHN0YXRlIHdpbGwKPiA+ID4gPiA+ ID4gPiA+IHN0aWxsIGhvbGQgYQo+ID4gPiA+ID4gPiA+ID4gKwkJICogcmVmZXJlbmNlIHRvIHRo aXMgcG9ydCB1bnRpbCB3ZSBzd2FwIHN0YXRlcy4gSWYKPiA+ID4gPiA+ID4gPiA+IGl0J3Mgbm90 LAo+ID4gPiA+ID4gPiA+ID4gKwkJICogdGhlIGRyaXZlciBoYXMgYSBib29ra2VlcGluZyBlcnJv cgo+ID4gPiA+ID4gPiA+ID4gKwkJICovCj4gPiA+ID4gPiA+ID4gPiArCQlpZiAoV0FSTl9PTihk cm1fZHBfcHV0X3BvcnQocG9ydCkpKSB7Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gVGhl IHVzdWFsIHdheSB0byBkbyB0aGlzIChpbnN0ZWFkIG9mIGFkZGluZyBhIHJldHVybiB2YWx1ZSB0 byB0aGUKPiA+ID4gPiA+ID4gPiBub3JtYWwKPiA+ID4gPiA+ID4gPiBfcHV0IGZ1bmN0aW9uKSBp cyBzb21ldGhpbmcgbGlrZQo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IAlrcmVmX3B1dChw b3J0LCBmdW5jdGlvbl90aGF0X3dpdGhfanVzdF9hX1dBUk5JTkdfRFJNX0VSUk9SKQo+ID4gPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiA+IGF2b2lkcyB0aGUgbmVlZCBmb3IgcGF0Y2ggMi4KPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICsJCQlEUk1fRVJST1IoImNhbm5vdCBhbGxvY2F0ZSBh bmQgcmVsZWFzZSBWQ1BJIG9uCj4gPiA+ID4gPiA+ID4gPiBbTVNUCj4gPiA+ID4gPiA+ID4gPiBQ T1JUOiVwXSBpbiB0aGUgc2FtZSBzdGF0ZVxuIiwKPiA+ID4gPiA+ID4gPiA+ICsJCQkJICBwb3J0 KTsKPiA+ID4gPiA+ID4gPiA+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ID4gPiA+ICsJ CX0KPiA+ID4gPiA+ID4gPiA+ICsJCXBvcy0+dmNwaSA9IDA7Cj4gPiA+ID4gPiA+ID4gPiArCX0K PiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gIAlyZXR1cm4gMDsKPiA+ID4gPiA+ID4g PiA+ICB9Cj4gPiA+ID4gPiA+ID4gPiBAQCAtMzExNSwxNSArMzIxMSw0NSBAQCBzdGF0aWMgdm9p ZAo+ID4gPiA+ID4gPiA+ID4gZHJtX2RwX2Rlc3Ryb3lfY29ubmVjdG9yX3dvcmsoc3RydWN0Cj4g PiA+ID4gPiA+ID4gPiB3b3JrX3N0cnVjdCAqd29yaykKPiA+ID4gPiA+ID4gPiA+ICBzdGF0aWMg c3RydWN0IGRybV9wcml2YXRlX3N0YXRlICoKPiA+ID4gPiA+ID4gPiA+ICBkcm1fZHBfbXN0X2R1 cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmopCj4gPiA+ID4gPiA+ID4g PiAgewo+ID4gPiA+ID4gPiA+ID4gLQlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSAq c3RhdGU7Cj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRl ICpzdGF0ZSwgKm9sZF9zdGF0ZSA9Cj4gPiA+ID4gPiA+ID4gPiArCQl0b19kcF9tc3RfdG9wb2xv Z3lfc3RhdGUob2JqLT5zdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBkcm1fZHBfdmNw aV9hbGxvY2F0aW9uICpwb3MsICp2Y3BpOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiAtCXN0YXRlID0ga21lbWR1cChvYmotPnN0YXRlLCBzaXplb2YoKnN0YXRlKSwgR0ZQX0tFUk5F TCk7Cj4gPiA+ID4gPiA+ID4gPiArCXN0YXRlID0ga21lbWR1cChvbGRfc3RhdGUsIHNpemVvZigq c3RhdGUpLCBHRlBfS0VSTkVMKTsKPiA+ID4gPiA+ID4gPiA+ICAJaWYgKCFzdGF0ZSkKPiA+ID4g PiA+ID4gPiA+ICAJCXJldHVybiBOVUxMOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiAgCV9fZHJtX2F0b21pY19oZWxwZXJfcHJpdmF0ZV9vYmpfZHVwbGljYXRlX3N0YXRlKG9iaiwg JnN0YXRlLQo+ID4gPiA+ID4gPiA+ID4gPiBiYXNlKTsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+ID4gKwlJTklUX0xJU1RfSEVBRCgmc3RhdGUtPnZjcGlzKTsKPiA+ID4gPiA+ID4gPiA+ ICsJc3RhdGUtPnZjcGlfYWxsb2NhdGVkID0gZmFsc2U7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ ID4gPiA+ID4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCAmb2xkX3N0YXRlLT52Y3Bpcywg bmV4dCkgewo+ID4gPiA+ID4gPiA+ID4gKwkJLyogUHJ1bmUgbGVmdG92ZXIgZnJlZWQgVkNQSSBh bGxvY2F0aW9ucyAqLwo+ID4gPiA+ID4gPiA+ID4gKwkJaWYgKCFwb3MtPnZjcGkpCj4gPiA+ID4g PiA+ID4gPiArCQkJY29udGludWU7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiAr CQl2Y3BpID0ga21lbWR1cChwb3MsIHNpemVvZigqdmNwaSksIEdGUF9LRVJORUwpOwo+ID4gPiA+ ID4gPiA+ID4gKwkJaWYgKCF2Y3BpKQo+ID4gPiA+ID4gPiA+ID4gKwkJCWdvdG8gZmFpbDsKPiA+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJCS8qIFRha2UgYSBwbGFpbiBvbGQga3Jl ZiBoZXJlIGFuZCBkb24ndCB2YWxpZGF0ZSB0aGUKPiA+ID4gPiA+ID4gPiA+IHBvcnQsIGFzCj4g PiA+ID4gPiA+ID4gPiArCQkgKiBpdCdzIHRvcG9sb2d5IG1pZ2h0IG5vdCBldmVuIGV4aXN0IGFu eW1vcmUKPiA+ID4gPiA+ID4gPiA+ICsJCSAqLwo+ID4gPiA+ID4gPiA+ID4gKwkJa3JlZl9nZXQo JnZjcGktPnBvcnQtPmtyZWYpOwo+ID4gPiA+ID4gPiA+ID4gKwkJbGlzdF9hZGQoJnZjcGktPm5l eHQsICZzdGF0ZS0+dmNwaXMpOwo+ID4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiAgCXJldHVybiAmc3RhdGUtPmJhc2U7Cj4gPiA+ID4gPiA+ID4gPiAr Cj4gPiA+ID4gPiA+ID4gPiArZmFpbDoKPiA+ID4gPiA+ID4gPiA+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlKHBvcywgdmNwaSwgJnN0YXRlLT52Y3BpcywgbmV4dCkgewo+ID4gPiA+ID4gPiA+ ID4gKwkJZHJtX2RwX3B1dF9wb3J0KHBvcy0+cG9ydCk7Cj4gPiA+ID4gPiA+ID4gPiArCQlrZnJl ZShwb3MpOwo+ID4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ID4gPiArCWtmcmVlKHN0YXRl KTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJcmV0dXJuIE5VTEw7Cj4gPiA+ ID4gPiA+ID4gPiAgfQo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAgc3RhdGljIHZv aWQgZHJtX2RwX21zdF9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmoKPiA+ID4g PiA+ID4gPiA+ICpvYmosCj4gPiA+ID4gPiA+ID4gPiBAQCAtMzEzMSwxNCArMzI1NywxMTYgQEAg c3RhdGljIHZvaWQKPiA+ID4gPiA+ID4gPiA+IGRybV9kcF9tc3RfZGVzdHJveV9zdGF0ZShzdHJ1 Y3QKPiA+ID4gPiA+ID4gPiA+IGRybV9wcml2YXRlX29iaiAqb2JqLAo+ID4gPiA+ID4gPiA+ID4g IHsKPiA+ID4gPiA+ID4gPiA+ICAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUgKm1z dF9zdGF0ZSA9Cj4gPiA+ID4gPiA+ID4gPiAgCQl0b19kcF9tc3RfdG9wb2xvZ3lfc3RhdGUoc3Rh dGUpOwo+ID4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2RwX3ZjcGlfYWxsb2NhdGlvbiAqcG9z LCAqdG1wOwo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUocG9zLCB0bXAsICZtc3Rfc3RhdGUtPnZjcGlzLCBuZXh0KSB7Cj4gPiA+ID4g PiA+ID4gPiArCQkvKiBXZSBvbmx5IGtlZXAgcmVmZXJlbmNlcyB0byBwb3J0cyB3aXRoIG5vbi16 ZXJvCj4gPiA+ID4gPiA+ID4gPiBWQ1BJcyAqLwo+ID4gPiA+ID4gPiA+ID4gKwkJaWYgKHBvcy0+ dmNwaSkKPiA+ID4gPiA+ID4gPiA+ICsJCQlkcm1fZHBfcHV0X3BvcnQocG9zLT5wb3J0KTsKPiA+ ID4gPiA+ID4gPiA+ICsJCWtmcmVlKHBvcyk7Cj4gPiA+ID4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gIAlrZnJlZShtc3Rfc3RhdGUpOwo+ID4gPiA+ID4gPiA+ ID4gIH0KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX3ByaXZhdGVfc3RhdGVfZnVuY3MgbXN0X3N0YXRlX2Z1bmNzID0gewo+ID4gPiA+ID4g PiA+ID4gK3N0YXRpYyBpbmxpbmUgaW50Cj4gPiA+ID4gPiA+ID4gPiArZHJtX2RwX21zdF9hdG9t aWNfY2hlY2tfdG9wb2xvZ3lfc3RhdGUoc3RydWN0Cj4gPiA+ID4gPiA+ID4gPiBkcm1fZHBfbXN0 X3RvcG9sb2d5X21ncgo+ID4gPiA+ID4gPiA+ID4gKm1nciwKPiA+ID4gPiA+ID4gPiA+ICsJCQkJ ICAgICAgIHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZQo+ ID4gPiA+ID4gPiA+ID4gKm1zdF9zdGF0ZSkKPiA+ID4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ ID4gPiArCXN0cnVjdCBkcm1fZHBfdmNwaV9hbGxvY2F0aW9uICp2Y3BpOwo+ID4gPiA+ID4gPiA+ ID4gKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0Owo+ID4gPiA+ID4gPiA+ID4gKwlpbnQg YXZhaWxfc2xvdHMgPSA2MywgcmV0Owo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4g KwkvKiBUaGVyZSdzIG5vIHBvc3NpYmxlIHNjZW5hcmlvIHdoZXJlIHJlbGVhc2luZyBWQ1BJIG9y Cj4gPiA+ID4gPiA+ID4gPiBrZWVwaW5nIGl0IHRoZQo+ID4gPiA+ID4gPiA+ID4gKwkgKiBzYW1l IHdvdWxkIG1ha2UgdGhlIHN0YXRlIGludmFsaWQKPiA+ID4gPiA+ID4gPiA+ICsJICovCj4gPiA+ ID4gPiA+ID4gPiArCWlmICghbXN0X3N0YXRlLT52Y3BpX2FsbG9jYXRlZCkgewo+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+IERvIHdlIG5lZWQgdGhpcz8gSWYgbm90IEknbSBhbHdheXMgaW4g ZmF2b3VyIG9mIHJlbW92aW5nIGNvZGUgaWYKPiA+ID4gPiA+ID4gPiBpdCdzCj4gPiA+ID4gPiA+ ID4gbm90Cj4gPiA+ID4gPiA+ID4gbmVlZGVkIDotKQo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+ID4gKwkJRFJNX0RFQlVHX0FUT01JQygiW01TVCBNR1I6JXBdIHN0YXRlICVwIGFsbG9jYXRl cyBubwo+ID4gPiA+ID4gPiA+ID4gVkNQSSwKPiA+ID4gPiA+ID4gPiA+IGNoZWNrIHNraXBwZWRc biIsCj4gPiA+ID4gPiA+ID4gPiArCQkJCSBtZ3IsICZtc3Rfc3RhdGUtPmJhc2UpOwo+ID4gPiA+ ID4gPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ID4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2Y3BpLCAmbXN0X3N0YXRl LT52Y3BpcywgbmV4dCkgewo+ID4gPiA+ID4gPiA+ID4gKwkJLyogUmVsZWFzaW5nIFZDUEkgaXMg YWx3YXlzIE9LLWV2ZW4gaWYgdGhlIHBvcnQgaXMKPiA+ID4gPiA+ID4gPiA+IGdvbmUgKi8KPiA+ ID4gPiA+ID4gPiA+ICsJCWlmICghdmNwaS0+dmNwaSkgewo+ID4gPiA+ID4gPiA+ID4gKwkJCURS TV9ERUJVR19BVE9NSUMoIltNU1QgUE9SVDolcF0gcmVsZWFzZXMgYWxsCj4gPiA+ID4gPiA+ID4g PiBWQ1BJCj4gPiA+ID4gPiA+ID4gPiBzbG90c1xuIiwKPiA+ID4gPiA+ID4gPiA+ICsJCQkJCSB2 Y3BpLT5wb3J0KTsKPiA+ID4gPiA+ID4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gPiA+ID4gPiA+ ICsJCX0KPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJCXBvcnQgPSBkcm1fZHBf Z2V0X3ZhbGlkYXRlZF9wb3J0X3JlZihtZ3IsIHZjcGktPnBvcnQpOwo+ID4gPiA+ID4gPiA+ID4g KwkJaWYgKCFwb3J0KSB7Cj4gPiA+ID4gPiA+ID4gPiArCQkJRFJNX0RFQlVHX0FUT01JQygiW01T VCBQT1JUOiVwXSBpcyBnb25lIGJ1dAo+ID4gPiA+ID4gPiA+ID4gc3RpbGwgaGFzCj4gPiA+ID4g PiA+ID4gPiBWQ1BJLCBjYW5ub3QgYWRkIG5ldyBWQ1BJXG4iLAo+ID4gPiA+ID4gPiA+ID4gKwkJ CQkJIHZjcGktPnBvcnQpOwo+ID4gPiA+ID4gPiA+ID4gKwkJCXJldHVybiAtRUlOVkFMOwo+ID4g PiA+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IEZvciBmaW5kX3Zj cGkgd2UndmUgYWxyZWFkeSBkb25lIHRoaXMuIEZvciB1bnBsdWdnZWQgdmNwaSwgd2UKPiA+ID4g PiA+ID4gPiBjYW4ndCBkbwo+ID4gPiA+ID4gPiA+IHRoaXMgaGVyZSBJIHRoaW5rIC0gb3RoZXJ3 aXNlIGlmIHlvdSBlbmFibGUgMiBtc3Qgb3V0cHV0cyBvbiB0aGUKPiA+ID4gPiA+ID4gPiBzYW1l Cj4gPiA+ID4gPiA+ID4gYnJhbmNoLCBhbmQgdW5wbHVnIGJvdGgsIG9sZCBub24tYXRvbWljIHVz ZXJzcGFjZSBjYW4gbmV2ZXIgZXZlcgo+ID4gPiA+ID4gPiA+IGFnYWluCj4gPiA+ID4gPiA+ID4g ZGlzYWJsZSB0aGVtIGJlY2F1c2UgaXQgY2FuJ3QgZGlzYWJsZSBib3RoLiBUaGUgY2hlY2sgKHRv IHNraXAKPiA+ID4gPiA+ID4gPiBhbHJlYWR5Cj4gPiA+ID4gPiA+ID4gZGVhbGxvY2F0ZWQgcG9y dHMpIGFib3ZlIGlzbid0IGVub3VnaCB0byBoYW5kbGUgdGhhdC4KPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJCURSTV9ERUJVR19BVE9NSUMoIltNU1Qg UE9SVDolcF0gcmVxdWlyZXMgJWQgdmNwaQo+ID4gPiA+ID4gPiA+ID4gc2xvdHNcbiIsCj4gPiA+ ID4gPiA+ID4gPiArCQkJCSB2Y3BpLT5wb3J0LCB2Y3BpLT52Y3BpKTsKPiA+ID4gPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ID4gPiA+ICsJCWF2YWlsX3Nsb3RzIC09IHZjcGktPnZjcGk7Cj4gPiA+ID4g PiA+ID4gPiArCQlpZiAoYXZhaWxfc2xvdHMgPCAwKSB7Cj4gPiA+ID4gPiA+ID4gPiArCQkJRFJN X0RFQlVHX0FUT01JQygiW01TVCBQT1JUOiVwXSBub3QgZW5vdWdoCj4gPiA+ID4gPiA+ID4gPiBW Q1BJIHNsb3RzCj4gPiA+ID4gPiA+ID4gPiBpbiBtc3Qgc3RhdGUgJXAgKGF2YWlsPSVkKVxuIiwK PiA+ID4gPiA+ID4gPiA+ICsJCQkJCSB2Y3BpLT5wb3J0LCBtc3Rfc3RhdGUsCj4gPiA+ID4gPiA+ ID4gPiArCQkJCQkgYXZhaWxfc2xvdHMgKyB2Y3BpLT52Y3BpKTsKPiA+ID4gPiA+ID4gPiA+ICsJ CQlyZXQgPSAtRU5PU1BDOwo+ID4gPiA+ID4gPiA+ID4gKwkJCWdvdG8gcG9ydF9mYWlsOwo+ID4g PiA+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKwkJZHJt X2RwX3B1dF9wb3J0KHBvcnQpOwo+ID4gPiA+ID4gPiA+ID4gKwl9Cj4gPiA+ID4gPiA+ID4gPiAr CURSTV9ERUJVR19BVE9NSUMoIltNU1QgTUdSOiVwXSBtc3Qgc3RhdGUgJXAgVkNQSSBhdmFpbD0l ZAo+ID4gPiA+ID4gPiA+ID4gdXNlZD0lZFxuIiwKPiA+ID4gPiA+ID4gPiA+ICsJCQkgbWdyLCBt c3Rfc3RhdGUsIGF2YWlsX3Nsb3RzLAo+ID4gPiA+ID4gPiA+ID4gKwkJCSA2MyAtIGF2YWlsX3Ns b3RzKTsKPiA+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ ID4gPiA+ID4gPiArcG9ydF9mYWlsOgo+ID4gPiA+ID4gPiA+ID4gKwlkcm1fZHBfcHV0X3BvcnQo cG9ydCk7Cj4gPiA+ID4gPiA+ID4gPiArCXJldHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gPiArfQo+ ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ID4gKy8qKgo+ID4gPiA+ID4gPiA+ID4gKyAq IGRybV9kcF9tc3RfYXRvbWljX2NoZWNrIC0gQ2hlY2sgdGhhdCB0aGUgbmV3IHN0YXRlIG9mIGFu IE1TVAo+ID4gPiA+ID4gPiA+ID4gdG9wb2xvZ3kgaW4gYW4KPiA+ID4gPiA+ID4gPiA+ICsgKiBh dG9taWMgdXBkYXRlIGlzIHZhbGlkCj4gPiA+ID4gPiA+ID4gPiArICogQHN0YXRlOiBQb2ludGVy IHRvIHRoZSBuZXcgJnN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRlCj4gPiA+ID4gPiA+ ID4gPiArICoKPiA+ID4gPiA+ID4gPiA+ICsgKiBDaGVja3MgdGhlIGdpdmVuIHRvcG9sb2d5IHN0 YXRlIGZvciBhbiBhdG9taWMgdXBkYXRlIHRvCj4gPiA+ID4gPiA+ID4gPiBlbnN1cmUKPiA+ID4g PiA+ID4gPiA+IHRoYXQKPiA+ID4gPiA+ID4gPiA+IGl0J3MKPiA+ID4gPiA+ID4gPiA+ICsgKiB2 YWxpZC4gVGhpcyBpbmNsdWRlcyBjaGVja2luZyB3aGV0aGVyIHRoZXJlJ3MgZW5vdWdoCj4gPiA+ ID4gPiA+ID4gPiBiYW5kd2lkdGgKPiA+ID4gPiA+ID4gPiA+IHRvCj4gPiA+ID4gPiA+ID4gPiBz dXBwb3J0Cj4gPiA+ID4gPiA+ID4gPiArICogdGhlIG5ldyBWQ1BJIGFsbG9jYXRpb25zIGluIHRo ZSBhdG9taWMgdXBkYXRlLgo+ID4gPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ID4gPiArICog QW55IGF0b21pYyBkcml2ZXJzIHN1cHBvcnRpbmcgRFAgTVNUIG11c3QgbWFrZSBzdXJlIHRvIGNh bGwKPiA+ID4gPiA+ID4gPiA+IHRoaXMKPiA+ID4gPiA+ID4gPiA+IGFmdGVyCj4gPiA+ID4gPiA+ ID4gPiArICogY2hlY2tpbmcgdGhlIHJlc3Qgb2YgdGhlaXIgc3RhdGUgaW4gdGhlaXIKPiA+ID4g PiA+ID4gPiA+ICsgKiAmZHJtX21vZGVfY29uZmlnX2Z1bmNzLmF0b21pY19jaGVjaygpIGNhbGxi YWNrLgo+ID4gPiA+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiA+ID4gPiArICogU2VlIGFsc286Cj4g PiA+ID4gPiA+ID4gPiArICogZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMoKQo+ID4gPiA+ ID4gPiA+ID4gKyAqIGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKCkKPiA+ID4gPiA+ ID4gPiA+ICsgKgo+ID4gPiA+ID4gPiA+ID4gKyAqIFJldHVybnM6Cj4gPiA+ID4gPiA+ID4gPiAr ICoKPiA+ID4gPiA+ID4gPiA+ICsgKiAwIGlmIHRoZSBuZXcgc3RhdGUgaXMgdmFsaWQsIG5lZ2F0 aXZlIGVycm9yIGNvZGUgb3RoZXJ3aXNlLgo+ID4gPiA+ID4gPiA+ID4gKyAqLwo+ID4gPiA+ID4g PiA+ID4gK2ludCBkcm1fZHBfbXN0X2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCj4gPiA+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJt X2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncjsKPiA+ID4gPiA+ID4gPiA+ICsJc3RydWN0IGRybV9k cF9tc3RfdG9wb2xvZ3lfc3RhdGUgKm1zdF9zdGF0ZTsKPiA+ID4gPiA+ID4gPiA+ICsJaW50IGks IHJldCA9IDA7Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCWZvcl9lYWNoX25l d19tc3RfbWdyX2luX3N0YXRlKHN0YXRlLCBtZ3IsIG1zdF9zdGF0ZSwgaSkgewo+ID4gPiA+ID4g PiA+ID4gKwkJcmV0ID0gZHJtX2RwX21zdF9hdG9taWNfY2hlY2tfdG9wb2xvZ3lfc3RhdGUobWdy LAo+ID4gPiA+ID4gPiA+ID4gbXN0X3N0YXRlKTsKPiA+ID4gPiA+ID4gPiA+ICsJCWlmIChyZXQp Cj4gPiA+ID4gPiA+ID4gPiArCQkJYnJlYWs7Cj4gPiA+ID4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gPiA+ID4gPiA+ICt9 Cj4gPiA+ID4gPiA+ID4gPiArRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0X2F0b21pY19jaGVjayk7 Cj4gPiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArY29uc3Qgc3RydWN0IGRybV9wcml2 YXRlX3N0YXRlX2Z1bmNzCj4gPiA+ID4gPiA+ID4gPiBkcm1fZHBfbXN0X3RvcG9sb2d5X3N0YXRl X2Z1bmNzID0KPiA+ID4gPiA+ID4gPiA+IHsKPiA+ID4gPiA+ID4gPiA+ICAJLmF0b21pY19kdXBs aWNhdGVfc3RhdGUgPSBkcm1fZHBfbXN0X2R1cGxpY2F0ZV9zdGF0ZSwKPiA+ID4gPiA+ID4gPiA+ ICAJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2RwX21zdF9kZXN0cm95X3N0YXRlLAo+ID4g PiA+ID4gPiA+ID4gIH07Cj4gPiA+ID4gPiA+ID4gPiArRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0 X3RvcG9sb2d5X3N0YXRlX2Z1bmNzKTsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4g IC8qKgo+ID4gPiA+ID4gPiA+ID4gICAqIGRybV9hdG9taWNfZ2V0X21zdF90b3BvbG9neV9zdGF0 ZTogZ2V0IE1TVCB0b3BvbG9neSBzdGF0ZQo+ID4gPiA+ID4gPiA+ID4gQEAgLTMyMTYsMTMgKzM0 NDQsMTEgQEAgaW50IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX2luaXQoc3RydWN0Cj4gPiA+ID4g PiA+ID4gPiBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAo+ID4gPiA+ID4gPiA+ID4gIAkJ cmV0dXJuIC1FTk9NRU07Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICAJbXN0X3N0 YXRlLT5tZ3IgPSBtZ3I7Cj4gPiA+ID4gPiA+ID4gPiAtCj4gPiA+ID4gPiA+ID4gPiAtCS8qIG1h eC4gdGltZSBzbG90cyAtIG9uZSBzbG90IGZvciBNVFAgaGVhZGVyICovCj4gPiA+ID4gPiA+ID4g PiAtCW1zdF9zdGF0ZS0+YXZhaWxfc2xvdHMgPSA2MzsKPiA+ID4gPiA+ID4gPiA+ICsJSU5JVF9M SVNUX0hFQUQoJm1zdF9zdGF0ZS0+dmNwaXMpOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gPiAgCWRybV9hdG9taWNfcHJpdmF0ZV9vYmpfaW5pdCgmbWdyLT5iYXNlLAo+ID4gPiA+ID4g PiA+ID4gIAkJCQkgICAgJm1zdF9zdGF0ZS0+YmFzZSwKPiA+ID4gPiA+ID4gPiA+IC0JCQkJICAg ICZtc3Rfc3RhdGVfZnVuY3MpOwo+ID4gPiA+ID4gPiA+ID4gKwkJCQkgICAgJmRybV9kcF9tc3Rf dG9wb2xvZ3lfc3RhdGVfZnVuY3MpOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAg CXJldHVybiAwOwo+ID4gPiA+ID4gPiA+ID4gIH0KPiA+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gPiA+ID4gPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ID4gPiA+ID4gPiBpbmRl eCAxMzJlOTc4MjI3ZmIuLjhlODVlMDRhNTk0OCAxMDA2NDQKPiA+ID4gPiA+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiA+ID4gPiA+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ID4gPiA+ID4gPiBA QCAtMTI1OTIsNiArMTI1OTIsMTAgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY2hlY2soc3Ry dWN0Cj4gPiA+ID4gPiA+ID4gPiBkcm1fZGV2aWNlCj4gPiA+ID4gPiA+ID4gPiAqZGV2LAo+ID4g PiA+ID4gPiA+ID4gIAkJCQkgICAgICAgIlttb2Rlc2V0XSIgOiAiW2Zhc3RzZXRdIik7Cj4gPiA+ ID4gPiA+ID4gPiAgCX0KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gKwlyZXQgPSBk cm1fZHBfbXN0X2F0b21pY19jaGVjayhzdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gPiArCWlmIChyZXQp Cj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gcmV0Owo+ID4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gPiA+ID4gIAlpZiAoYW55X21zKSB7Cj4gPiA+ID4gPiA+ID4gPiAgCQlyZXQgPSBpbnRlbF9t b2Rlc2V0X2NoZWNrcyhzdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwo+ID4gPiA+ID4g PiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwo+ID4gPiA+ID4gPiA+ ID4gaW5kZXggNGRlMjQ3ZGRmMDVmLi5iZTJkMWFjN2Q4N2QgMTAwNjQ0Cj4gPiA+ID4gPiA+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwo+ID4gPiA+ID4gPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPiA+ID4gPiA+ID4g PiA+IEBAIC00MSw4ICs0MSwxMyBAQCBzdGF0aWMgYm9vbAo+ID4gPiA+ID4gPiA+ID4gaW50ZWxf ZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiA+ID4gPiA+ID4gPiA+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciA9IGNvbm5fc3RhdGUtPmNvbm5lY3RvcjsKPiA+ID4gPiA+ID4gPiA+ICAJdm9pZCAqcG9y dCA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpLT5wb3J0Owo+ID4gPiA+ID4gPiA+ID4g IAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+YmFzZS5zdGF0 ZTsKPiA+ID4gPiA+ID4gPiA+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gcGlwZV9jb25maWct PmJhc2UuY3J0YzsKPiA+ID4gPiA+ID4gPiA+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZSA9Cj4gPiA+ID4gPiA+ID4gPiArCQlkcm1fYXRvbWljX2dldF9vbGRfY3J0Y19z dGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqbmV3X2NydGNfc3RhdGUgPSAmcGlwZV9jb25maWctPmJhc2U7Cj4gPiA+ID4gPiA+ID4gPiAg CWludCBicHA7Cj4gPiA+ID4gPiA+ID4gPiAtCWludCBsYW5lX2NvdW50LCBzbG90cyA9IDA7Cj4g PiA+ID4gPiA+ID4gPiArCWludCBsYW5lX2NvdW50LCBzbG90cyA9Cj4gPiA+ID4gPiA+ID4gPiAr CQl0b19pbnRlbF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKS0+ZHBfbV9uLnR1Owo+ID4gPiA+ ID4gPiA+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 ICZwaXBlX2NvbmZpZy0KPiA+ID4gPiA+ID4gPiA+ID4gYmFzZS5hZGp1c3RlZF9tb2RlOwo+ID4g PiA+ID4gPiA+ID4gIAlpbnQgbXN0X3BibjsKPiA+ID4gPiA+ID4gPiA+ICAJYm9vbCBjb25zdGFu dF9uID0gZHJtX2RwX2hhc19xdWlyaygmaW50ZWxfZHAtPmRlc2MsCj4gPiA+ID4gPiA+ID4gPiBA QCAtNzcsOCArODIsMTIgQEAgc3RhdGljIGJvb2wKPiA+ID4gPiA+ID4gPiA+IGludGVsX2RwX21z dF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gPiA+ID4gPiA+ID4gPiAgCW1zdF9wYm4gPSBkcm1fZHBfY2FsY19wYm5fbW9kZShh ZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ID4gPiA+ID4gPiA+ID4gYnBwKTsKPiA+ID4gPiA+ ID4gPiA+ICAJcGlwZV9jb25maWctPnBibiA9IG1zdF9wYm47Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+IC0JLyogWm9tYmllIGNvbm5lY3RvcnMgY2FuJ3QgaGF2ZSBWQ1BJIHNsb3Rz ICovCj4gPiA+ID4gPiA+ID4gPiAtCWlmICghZHJtX2Nvbm5lY3Rvcl9pc191bnJlZ2lzdGVyZWQo Y29ubmVjdG9yKSkgewo+ID4gPiA+ID4gPiA+ID4gKwkvKiBPbmx5IGNoYW5nZSBWQ1BJIGFsbG9j YXRpb24gb24gYWN0dWFsIG1vZGUgY2hhbmdlcywgdG8KPiA+ID4gPiA+ID4gPiA+IHByZXZlbnQg dXMKPiA+ID4gPiA+ID4gPiA+ICsJICogZnJvbSB0cnlpbmcgdG8gYWxsb2NhdGUgVkNQSSB0byBw b3J0cyB0aGF0IG5vIGxvbmdlciBleGlzdAo+ID4gPiA+ID4gPiA+ID4gd2hlbiB3ZQo+ID4gPiA+ ID4gPiA+ID4gKwkgKiBtYXkganVzdCBiZSB0cnlpbmcgdG8gZGlzYWJsZSBEUE1TIG9uIHRoZW0K PiA+ID4gPiA+ID4gPiA+ICsJICovCj4gPiA+ID4gPiA+ID4gPiArCWlmIChuZXdfY3J0Y19zdGF0 ZS0+bW9kZV9jaGFuZ2VkIHx8Cj4gPiA+ID4gPiA+ID4gPiArCSAgICBuZXdfY3J0Y19zdGF0ZS0+ Y29ubmVjdG9yc19jaGFuZ2VkKSB7Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gV2h5IGV4 YWN0bHkgaXMgdGhpcyBuZWVkZWQ/IFdlIG9ubHkgY2FsbCBjb21wdXRlX2NvbmZpZyBvbiB0aGUK PiA+ID4gPiA+ID4gPiBlbm9jb2Rlcgo+ID4gPiA+ID4gPiA+IHdoZW4gZW5hYmxpbmcgYW4gb3V0 cHV0LiBOb3Qgd2hlbiBkaXNhYmxpbmcgb25lLiBTaW1pbGFyIGZvciB0aGUKPiA+ID4gPiA+ID4g PiBhdG9taWMKPiA+ID4gPiA+ID4gPiBoZWxwZXJzIGFuZCB0aGUgdmFyaW91cyBlbmNvZGVyIGNh bGxiYWNrcyAoeW91IGhhdmUgdGhlIHNhbWUKPiA+ID4gPiA+ID4gPiBjaGFuZ2UgaW4KPiA+ID4g PiA+ID4gPiB0aGUKPiA+ID4gPiA+ID4gPiBub3V2ZWF1IGNvZGUpLiBEaWQgdGhpcyBhY3R1YWxs eSBibG93IHVwIHdoaWxlIHRlc3Rpbmc/Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAg CQlzbG90cyA9IGRybV9kcF9hdG9taWNfZmluZF92Y3BpX3Nsb3RzKHN0YXRlLAo+ID4gPiA+ID4g PiA+ID4gIAkJCQkJCSAgICAgICZpbnRlbF9kcC0KPiA+ID4gPiA+ID4gPiA+ID4gbXN0X21nciwK PiA+ID4gPiA+ID4gPiA+ICAJCQkJCQkgICAgICBwb3J0LAo+ID4gPiA+ID4gPiA+ID4gQEAgLTEw NywzNiArMTE2LDM5IEBAIHN0YXRpYyBib29sCj4gPiA+ID4gPiA+ID4gPiBpbnRlbF9kcF9tc3Rf Y29tcHV0ZV9jb25maWcoc3RydWN0Cj4gPiA+ID4gPiA+ID4gPiBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ID4gPiA+ID4gPiA+ID4gIAlyZXR1cm4gdHJ1ZTsKPiA+ID4gPiA+ID4gPiA+ICB9Cj4g PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IC1zdGF0aWMgaW50IGludGVsX2RwX21zdF9h dG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IKPiA+ID4gPiA+ID4gPiA+ICpjb25uZWN0 b3IsCj4gPiA+ID4gPiA+ID4gPiAtCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X2Nv bm5fc3RhdGUpCj4gPiA+ID4gPiA+ID4gPiArc3RhdGljIGludAo+ID4gPiA+ID4gPiA+ID4gK2lu dGVsX2RwX21zdF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwK PiA+ID4gPiA+ID4gPiA+ICsJCQkgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29u bl9zdGF0ZSkKPiA+ID4gPiA+ID4gPiA+ICB7Cj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9Cj4gPiA+ID4gPiA+ID4gPiArCQl0b19pbnRl bF9jb25uZWN0b3IoY29ubmVjdG9yKTsKPiA+ID4gPiA+ID4gPiA+ICsJc3RydWN0IGRybV9kcF9t c3RfdG9wb2xvZ3lfbWdyICptZ3IgPQo+ID4gPiA+ID4gPiA+ID4gKwkJJmludGVsX2Nvbm5lY3Rv ci0+bXN0X3BvcnQtPm1zdF9tZ3I7Cj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBkcm1fZHBfbXN0 X3BvcnQgKnBvcnQgPSBpbnRlbF9jb25uZWN0b3ItPnBvcnQ7Cj4gPiA+ID4gPiA+ID4gPiAgCXN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IG5ld19jb25uX3N0YXRlLT5zdGF0ZTsKPiA+ ID4gPiA+ID4gPiA+IC0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRl Owo+ID4gPiA+ID4gPiA+ID4gLQlzdHJ1Y3QgZHJtX2NydGMgKm9sZF9jcnRjOwo+ID4gPiA+ID4g PiA+ID4gLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gPiA+ID4gPiA+ID4g PiAtCWludCBzbG90cywgcmV0ID0gMDsKPiA+ID4gPiA+ID4gPiA+ICsJc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlID0KPiA+ID4gPiA+ID4gPiA+ICsJCWRybV9hdG9t aWNfZ2V0X29sZF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7Cj4gPiA+ID4gPiA+ ID4gPiArCXN0cnVjdCBkcm1fY3J0YyAqb2xkX2NydGMgPSBvbGRfY29ubl9zdGF0ZS0+Y3J0YywK PiA+ID4gPiA+ID4gPiA+ICsJCQkqbmV3X2NydGMgPSBuZXdfY29ubl9zdGF0ZS0+Y3J0YzsKPiA+ ID4gPiA+ID4gPiA+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5l d19jcnRjX3N0YXRlOwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAtCW9sZF9jb25u X3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwKPiA+ID4g PiA+ID4gPiA+IGNvbm5lY3Rvcik7Cj4gPiA+ID4gPiA+ID4gPiAtCW9sZF9jcnRjID0gb2xkX2Nv bm5fc3RhdGUtPmNydGM7Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gQmlrZXNoZWQ6IFJl d29ya2luZyBhbGwgdGhlIGFib3ZlIGhpZGVzIHRoZSByZWFsIGNoYW5nZXMgcXVpdGUgYQo+ID4g PiA+ID4gPiA+IGJpdC4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICAJaWYgKCFvbGRf Y3J0YykKPiA+ID4gPiA+ID4gPiA+IC0JCXJldHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gPiArCQly ZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gLQljcnRjX3N0YXRlID0g ZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIG9sZF9jcnRjKTsKPiA+ID4gPiA+ ID4gPiA+IC0Jc2xvdHMgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5kcF9tX24u dHU7Cj4gPiA+ID4gPiA+ID4gPiAtCWlmIChkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldChj cnRjX3N0YXRlKSAmJiBzbG90cyA+IDApIHsKPiA+ID4gPiA+ID4gPiA+IC0JCXN0cnVjdCBkcm1f ZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyOwo+ID4gPiA+ID4gPiA+ID4gLQkJc3RydWN0IGRybV9l bmNvZGVyICpvbGRfZW5jb2RlcjsKPiA+ID4gPiA+ID4gPiA+ICsJb2xkX2NydGNfc3RhdGUgPSBk cm1fYXRvbWljX2dldF9vbGRfY3J0Y19zdGF0ZShzdGF0ZSwKPiA+ID4gPiA+ID4gPiA+IG9sZF9j cnRjKTsKPiA+ID4gPiA+ID4gPiA+ICsJaWYgKCFvbGRfY3J0Y19zdGF0ZSB8fAo+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ICFvbGRfY3J0Y19zdGF0ZSB3b3VsZCBiZSBhIGZyYW1ld29yayBi dWcuIEp1c3QgcmVtb3ZlIHRoYXQgY2hlY2suCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiArCSAgICAhdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSktPmRwX21fbi50dSkK PiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ IEhtLCB3aHkgZG8gd2UgbmVlZCB0aGlzPyBIYXZpbmcgYSBEUCBwb3J0IHByZXZpb3VzbHkgZW5h YmxlZCB3aXRoCj4gPiA+ID4gPiA+ID4gYSAwCj4gPiA+ID4gPiA+ID4gdHUKPiA+ID4gPiA+ID4g PiBzb3VuZHMgbGlrZSBhIHByZXR0eSBiaWcgZHJpdmVyIGJ1Zy4KPiA+ID4gPiA+ID4gPiA+IC0J CW9sZF9lbmNvZGVyID0gb2xkX2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2RlcjsKPiA+ID4gPiA+ID4g PiA+IC0JCW1nciA9ICZlbmNfdG9fbXN0KG9sZF9lbmNvZGVyKS0+cHJpbWFyeS0+ZHAubXN0X21n cjsKPiA+ID4gPiA+ID4gPiA+ICsJLyogSWYgd2Ugc3dpdGNoZWQgQ1JUQ3MsIGNsZWFyIHRoZSBw cmV2aW91cyBvbmUncyBhbGxvY2F0aW9uCj4gPiA+ID4gPiA+ID4gPiAqLwo+ID4gPiA+ID4gPiA+ ID4gKwluZXdfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRl LAo+ID4gPiA+ID4gPiA+ID4gb2xkX2NydGMpOwo+ID4gPiA+ID4gPiA+ID4gKwlpZiAobmV3X2Ny dGNfc3RhdGUtPmNvbm5lY3RvcnNfY2hhbmdlZCAmJiAhbmV3X2NydGNfc3RhdGUtCj4gPiA+ID4g PiA+ID4gPiA+IGVuYWJsZSkKPiA+ID4gPiA+ID4gPiA+ICsJCXRvX2ludGVsX2NydGNfc3RhdGUo bmV3X2NydGNfc3RhdGUpLT5kcF9tX24udHUgPSAwOwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+IE5vIGlkZWEgd2h5IHdlIG5lZWQgdG8gY2xlYXIgdGhpcyBoZXJlPyBTaG91bGRuJ3Qgd2Ug anVzdCBjbGVhcgo+ID4gPiA+ID4gPiA+IHRoaXMKPiA+ID4gPiA+ID4gPiB1bmNvbmRpdGlvbmFs bHkgaWYgd2UgcmVsZWFzZSB0aGUgYWxsb2NhdGlvbi4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gPiBBbHNvIG5hbWluZyBjb252ZW50aW9uLCBJJ2QgY2FsbCB0aGlzIG9sZF9jcnRjX25ld19z dGF0ZSwgYW5kCj4gPiA+ID4gPiA+ID4gbWF5YmUKPiA+ID4gPiA+ID4gPiBvbGRfY3J0Y19vbGRf c3RhdGUuIFRvIG1ha2UgaXQgY2xlYXIgdGhlc2UgYXJlIHRoZSBvbGQvbmV3IHN0YXRlcwo+ID4g PiA+ID4gPiA+IGZvcgo+ID4gPiA+ID4gPiA+IG9sZF9jcnRjLiBJbnN0ZWFkIG9mIG9sZC9uZXcg c3RhdGUgZm9yIHRoZSBuZXcgY3J0Yy4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IC0J CXJldCA9IGRybV9kcF9hdG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKHN0YXRlLCBtZ3IsCj4gPiA+ ID4gPiA+ID4gPiBzbG90cyk7Cj4gPiA+ID4gPiA+ID4gPiAtCQlpZiAocmV0KQo+ID4gPiA+ID4g PiA+ID4gLQkJCURSTV9ERUJVR19LTVMoImZhaWxlZCByZWxlYXNpbmcgJWQgdmNwaQo+ID4gPiA+ ID4gPiA+ID4gc2xvdHM6JWRcbiIsCj4gPiA+ID4gPiA+ID4gPiBzbG90cywgcmV0KTsKPiA+ID4g PiA+ID4gPiA+IC0JCWVsc2UKPiA+ID4gPiA+ID4gPiA+IC0JCQl0b19pbnRlbF9jcnRjX3N0YXRl KGNydGNfc3RhdGUpLT5kcF9tX24udHUgPQo+ID4gPiA+ID4gPiA+ID4gMDsKPiA+ID4gPiA+ID4g PiA+IC0JfQo+ID4gPiA+ID4gPiA+ID4gLQlyZXR1cm4gcmV0Owo+ID4gPiA+ID4gPiA+ID4gKwlp ZiAobmV3X2NydGMpCj4gPiA+ID4gPiA+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiBOb3Qgc3VyZSB3aHkgd2Ugc2hvdWxkbid0IHJlbGVhc2UgdGhpcz8gSWYg d2UgaGFuZGxlIHRoaXMgaW4KPiA+ID4gPiA+ID4gPiBoZWxwZXJzLAo+ID4gPiA+ID4gPiA+IGl0 Cj4gPiA+ID4gPiA+ID4gd291bGQgcmVtb3ZlIHBpbGVzIG9mIHNwZWNpYWwgY2FzaW5nIGNvZGUg aGVyZSBJIHRoaW5rLiBQbHVzCj4gPiA+ID4gPiA+ID4gcmVtb3ZlCj4gPiA+ID4gPiA+ID4gc3Bl Y2lhbCBjb2RlIGluIHRoZSBobHBlcnMuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ID4gPiArCXJldHVybiBkcm1fZHBfYXRvbWljX3Jl bGVhc2VfdmNwaV9zbG90cyhzdGF0ZSwgbWdyLCBwb3J0KTsKPiA+ID4gPiA+ID4gPiA+ICB9Cj4g PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9tc3RfZGlz YWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ID4gPiA+ID4gPiA+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCj4gPiA+ID4gPiA+ID4g PiBiL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmgKPiA+ID4gPiA+ID4gPiA+IGluZGV4 IDNmYWNlYjY2ZjVjYi4uMjM5MmUxMmI2YmNlIDEwMDY0NAo+ID4gPiA+ID4gPiA+ID4gLS0tIGEv aW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaAo+ID4gPiA+ID4gPiA+ID4gKysrIGIvaW5j bHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaAo+ID4gPiA+ID4gPiA+ID4gQEAgLTQwNiw5ICs0 MDYsMTYgQEAgc3RydWN0IGRybV9kcF9wYXlsb2FkIHsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiA+ID4gICNkZWZpbmUgdG9fZHBfbXN0X3RvcG9sb2d5X3N0YXRlKHgpIGNvbnRhaW5lcl9v Zih4LCBzdHJ1Y3QKPiA+ID4gPiA+ID4gPiA+IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUsIGJh c2UpCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ICtzdHJ1Y3QgZHJtX2RwX3ZjcGlf YWxsb2NhdGlvbiB7Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gSSB0aGluayBhIGNvbW1l bnQgaGVyZSB0aGF0IHRoaXMgcG9pbnRlciBob2xkcyBhIGZ1bGwgcmVmZXJlbmNlCj4gPiA+ID4g PiA+ID4gKGV2ZW4KPiA+ID4gPiA+ID4gPiBwYXN0Cj4gPiA+ID4gPiA+ID4gd2hlbiB0aGUgY29u bmVjdG9yIGlzIHVucGx1Z2dlZCkgd291bGQgYmUgZ29vZC4gT3RoZXJ3aXNlIHRoZSBsb29wCj4g PiA+ID4gPiA+ID4gaW4KPiA+ID4gPiA+ID4gPiByZWxlYXNlX3ZjcGkgd291bGQgYmUgYnVnZ3ku Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQg KnBvcnQ7Cj4gPiA+ID4gPiA+ID4gPiArCWludCB2Y3BpOwo+ID4gPiA+ID4gPiA+ID4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIG5leHQ7Cj4gPiA+ID4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ID4gPiA+ICsK PiA+ID4gPiA+ID4gPiA+ICBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9zdGF0ZSB7Cj4gPiA+ ID4gPiA+ID4gPiAgCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSBiYXNlOwo+ID4gPiA+ID4gPiA+ ID4gLQlpbnQgYXZhaWxfc2xvdHM7Cj4gPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBsaXN0X2hlYWQg dmNwaXM7Cj4gPiA+ID4gPiA+ID4gPiArCXU4IHZjcGlfYWxsb2NhdGVkOwo+ID4gPiA+ID4gPiA+ ID4gIAlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1ncjsKPiA+ID4gPiA+ID4gPiA+ ICB9Owo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBAQCAtNjE5LDE0ICs2MjYsMTcg QEAgdm9pZAo+ID4gPiA+ID4gPiA+ID4gZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc3VzcGVuZChz dHJ1Y3QKPiA+ID4gPiA+ID4gPiA+IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IpOwo+ID4g PiA+ID4gPiA+ID4gIGludCBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9yZXN1bWUoc3RydWN0Cj4g PiA+ID4gPiA+ID4gPiBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncgo+ID4gPiA+ID4gPiA+ID4gKm1n cik7Cj4gPiA+ID4gPiA+ID4gPiAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGUKPiA+ ID4gPiA+ID4gPiA+ICpkcm1fYXRvbWljX2dldF9tc3RfdG9wb2xvZ3lfc3RhdGUoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUKPiA+ID4gPiA+ID4gPiA+ICpzdGF0ZSwKPiA+ID4gPiA+ID4gPiA+ICAJ CQkJCQkJCSAgICBzdAo+ID4gPiA+ID4gPiA+ID4gcnVjdAo+ID4gPiA+ID4gPiA+ID4gZHJtX2Rw X21zdF90b3BvbG9neV9tZ3IgKm1ncik7Cj4gPiA+ID4gPiA+ID4gPiAtaW50IGRybV9kcF9hdG9t aWNfZmluZF92Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlCj4gPiA+ID4gPiA+ID4g PiAqc3RhdGUsCj4gPiA+ID4gPiA+ID4gPiAtCQkJCSAgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xv Z3lfbWdyICptZ3IsCj4gPiA+ID4gPiA+ID4gPiAtCQkJCSAgc3RydWN0IGRybV9kcF9tc3RfcG9y dCAqcG9ydCwgaW50Cj4gPiA+ID4gPiA+ID4gPiBwYm4pOwo+ID4gPiA+ID4gPiA+ID4gLWludCBk cm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZQo+ ID4gPiA+ID4gPiA+ID4gKnN0YXRlLAo+ID4gPiA+ID4gPiA+ID4gLQkJCQkgICAgIHN0cnVjdCBk cm1fZHBfbXN0X3RvcG9sb2d5X21ncgo+ID4gPiA+ID4gPiA+ID4gKm1nciwKPiA+ID4gPiA+ID4g PiA+IC0JCQkJICAgICBpbnQgc2xvdHMpOwo+ID4gPiA+ID4gPiA+ID4gK2ludCBfX211c3RfY2hl Y2sKPiA+ID4gPiA+ID4gPiA+ICtkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiA+ID4gPiA+ID4gPiArCQkJICAgICAgc3RydWN0 IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCj4gPiA+ID4gPiA+ID4gPiArCQkJICAgICAg c3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwgaW50IHBibik7Cj4gPiA+ID4gPiA+ID4gPiAr aW50IF9fbXVzdF9jaGVjawo+ID4gPiA+ID4gPiA+ID4gK2RybV9kcF9hdG9taWNfcmVsZWFzZV92 Y3BpX3Nsb3RzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlCj4gPiA+ID4gPiA+ID4gPiAqc3RhdGUs Cj4gPiA+ID4gPiA+ID4gPiArCQkJCSBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1n ciwKPiA+ID4gPiA+ID4gPiA+ICsJCQkJIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpOwo+ ID4gPiA+ID4gPiA+ID4gIGludCBkcm1fZHBfc2VuZF9wb3dlcl91cGRvd25fcGh5KHN0cnVjdCBk cm1fZHBfbXN0X3RvcG9sb2d5X21ncgo+ID4gPiA+ID4gPiA+ID4gKm1nciwKPiA+ID4gPiA+ID4g PiA+ICAJCQkJIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGJvb2wKPiA+ID4gPiA+ID4g PiA+IHBvd2VyX3VwKTsKPiA+ID4gPiA+ID4gPiA+ICtpbnQgX19tdXN0X2NoZWNrIGRybV9kcF9t c3RfYXRvbWljX2NoZWNrKHN0cnVjdAo+ID4gPiA+ID4gPiA+ID4gZHJtX2F0b21pY19zdGF0ZQo+ ID4gPiA+ID4gPiA+ID4gKnN0YXRlKTsKPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4g IGV4dGVybiBjb25zdCBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGVfZnVuY3MKPiA+ID4gPiA+ID4g PiA+IGRybV9kcF9tc3RfdG9wb2xvZ3lfc3RhdGVfZnVuY3M7Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+IC0tCj4gPiA+ID4gPiA+ID4gPiAyLjE5LjEKPiA+ID4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IC0tCj4gPiA+ID4gPiA+ID4gRGFuaWVsIFZldHRl cgo+ID4gPiA+ID4gPiA+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4g PiA+ID4gPiA+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCj4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gQ2hl ZXJzLAo+ID4gPiA+ID4gCUx5dWRlIFBhdWwKPiA+ID4gPiA+IAo+ID4gPiAtLQo+ID4gPiBDaGVl cnMsCj4gPiA+IAlMeXVkZSBQYXVsCj4gPiA+IAo+IC0tIAo+IENoZWVycywKPiAJTHl1ZGUgUGF1 bAo+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCk5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v bm91dmVhdQo=