From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liviu Dudau Subject: Re: [RFC 1/4] drm: Add writeback connector type Date: Fri, 23 Feb 2018 16:52:06 +0000 Message-ID: <20180223165206.GZ9111@e110455-lin.cambridge.arm.com> References: <20180223131758.18362-1-robdclark@gmail.com> <20180223131758.18362-2-robdclark@gmail.com> <20180223155935.GJ223881@art_vandelay> <20180223162104.GX9111@e110455-lin.cambridge.arm.com> <20180223163906.GN223881@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20180223163906.GN223881@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: Jonathan Corbet , David Airlie , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Maarten Lankhorst , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Rob Clark , Gustavo Padovan , Mihail Atanassov , freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Brian Starkey List-Id: linux-arm-msm@vger.kernel.org T24gRnJpLCBGZWIgMjMsIDIwMTggYXQgMTE6Mzk6MDZBTSAtMDUwMCwgU2VhbiBQYXVsIHdyb3Rl Ogo+IE9uIEZyaSwgRmViIDIzLCAyMDE4IGF0IDA0OjIxOjA1UE0gKzAwMDAsIExpdml1IER1ZGF1 IHdyb3RlOgo+ID4gT24gRnJpLCBGZWIgMjMsIDIwMTggYXQgMTA6NTk6MzVBTSAtMDUwMCwgU2Vh biBQYXVsIHdyb3RlOgo+ID4gPiBPbiBGcmksIEZlYiAyMywgMjAxOCBhdCAwODoxNzo1MUFNIC0w NTAwLCBSb2IgQ2xhcmsgd3JvdGU6Cj4gPiA+ID4gRnJvbTogQnJpYW4gU3RhcmtleSA8YnJpYW4u c3RhcmtleUBhcm0uY29tPgo+ID4gPiA+IAo+ID4gPiA+IFdyaXRlYmFjayBjb25uZWN0b3JzIHJl cHJlc2VudCB3cml0ZWJhY2sgZW5naW5lcyB3aGljaCBjYW4gd3JpdGUgdGhlCj4gPiA+ID4gQ1JU QyBvdXRwdXQgdG8gYSBtZW1vcnkgZnJhbWVidWZmZXIuIEFkZCBhIHdyaXRlYmFjayBjb25uZWN0 b3IgdHlwZSBhbmQKPiA+ID4gPiByZWxhdGVkIHN1cHBvcnQgZnVuY3Rpb25zLgo+ID4gPiA+IAo+ ID4gPiA+IERyaXZlcnMgc2hvdWxkIGluaXRpYWxpemUgYSB3cml0ZWJhY2sgY29ubmVjdG9yIHdp dGgKPiA+ID4gPiBkcm1fd3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KCkgd2hpY2ggdGFrZXMgY2Fy ZSBvZiBzZXR0aW5nIHVwIGFsbCB0aGUKPiA+ID4gPiB3cml0ZWJhY2stc3BlY2lmaWMgZGV0YWls cyBvbiB0b3Agb2YgdGhlIG5vcm1hbCBmdW5jdGlvbmFsaXR5IG9mCj4gPiA+ID4gZHJtX2Nvbm5l Y3Rvcl9pbml0KCkuCj4gPiA+ID4gCj4gPiA+ID4gV3JpdGViYWNrIGNvbm5lY3RvcnMgaGF2ZSBh IFdSSVRFQkFDS19GQl9JRCBwcm9wZXJ0eSwgdXNlZCB0byBzZXQgdGhlCj4gPiA+ID4gb3V0cHV0 IGZyYW1lYnVmZmVyLCBhbmQgYSBXUklURUJBQ0tfUElYRUxfRk9STUFUUyBibG9iIHVzZWQgdG8g ZXhwb3NlIHRoZQo+ID4gPiA+IHN1cHBvcnRlZCB3cml0ZWJhY2sgZm9ybWF0cyB0byB1c2Vyc3Bh Y2UuCj4gPiA+ID4gCj4gPiA+ID4gV2hlbiBhIGZyYW1lYnVmZmVyIGlzIGF0dGFjaGVkIHRvIGEg d3JpdGViYWNrIGNvbm5lY3RvciB3aXRoIHRoZQo+ID4gPiA+IFdSSVRFQkFDS19GQl9JRCBwcm9w ZXJ0eSwgaXQgaXMgdXNlZCBvbmx5IG9uY2UgKGZvciB0aGUgY29tbWl0IGluIHdoaWNoCj4gPiA+ ID4gaXQgd2FzIGluY2x1ZGVkKSwgYW5kIHVzZXJzcGFjZSBjYW4gbmV2ZXIgcmVhZCBiYWNrIHRo ZSB2YWx1ZSBvZgo+ID4gPiA+IFdSSVRFQkFDS19GQl9JRC4gV1JJVEVCQUNLX0ZCX0lEIGNhbiBv bmx5IGJlIHNldCBpZiB0aGUgY29ubmVjdG9yIGlzCj4gPiA+ID4gYXR0YWNoZWQgdG8gYSBDUlRD Lgo+ID4gPiA+IAo+ID4gPiA+IENoYW5nZXMgc2luY2UgdjE6Cj4gPiA+ID4gIC0gQWRkZWQgZHJt X3dyaXRlYmFjay5jICsgZG9jdW1lbnRhdGlvbgo+ID4gPiA+ICAtIEFkZGVkIGhlbHBlciB0byBp bml0aWFsaXplIHdyaXRlYmFjayBjb25uZWN0b3IgaW4gb25lIGdvCj4gPiA+ID4gIC0gQWRkZWQg Y29yZSBjaGVja3MKPiA+ID4gPiAgLSBTcXVhc2hlZCBpbnRvIGEgc2luZ2xlIGNvbW1pdAo+ID4g PiA+ICAtIERyb3BwZWQgdGhlIGNsaWVudCBjYXAKPiA+ID4gPiAgLSBXcml0ZWJhY2sgZnJhbWVi dWZmZXJzIGFyZSBubyBsb25nZXIgcGVyc2lzdGVudAo+ID4gPiA+IAo+ID4gPiA+IENoYW5nZXMg c2luY2UgdjI6Cj4gPiA+ID4gIERhbmllbCBWZXR0ZXI6Cj4gPiA+ID4gIC0gU3ViY2xhc3MgZHJt X2Nvbm5lY3RvciB0byBkcm1fd3JpdGViYWNrX2Nvbm5lY3Rvcgo+ID4gPiA+ICAtIFJlbGF4IGNo ZWNrIHRvIGFsbG93IENSVEMgdG8gYmUgc2V0IHdpdGhvdXQgYW4gRkIKPiA+ID4gPiAgLSBBZGQg c29tZSB3cml0ZWJhY2tfIHByZWZpeGVzCj4gPiA+ID4gIC0gRHJvcCBQSVhFTF9GT1JNQVRTX1NJ WkUgcHJvcGVydHksIGFzIGl0IHdhcyB1bm5lY2Vzc2FyeQo+ID4gPiA+ICBHdXN0YXZvIFBhZG92 YW46Cj4gPiA+ID4gIC0gQWRkIGRybV93cml0ZWJhY2tfam9iIHRvIGhhbmRsZSB3cml0ZWJhY2sg c2lnbmFsbGluZyBjZW50cmFsbHkKPiA+ID4gPiAKPiA+ID4gPiBDaGFuZ2VzIHNpbmNlIHYzOgo+ ID4gPiA+ICAtIFJlYmFzZWQKPiA+ID4gPiAgLSBSZW5hbWUgUElYRUxfRk9STUFUUyAtPiBXUklU RUJBQ0tfUElYRUxfRk9STUFUUwo+ID4gPiA+IAo+ID4gPiA+IENoYW5nZXMgc2luY2UgdjQ6Cj4g PiA+ID4gIC0gQWRkZWQgYXRvbWljX2NvbW1pdCgpIHZmdW5jIHRvIGNvbm5lY3RvciBoZWxwZXIg ZnVuY3MsIHNvIHRoYXQKPiA+ID4gPiAgICB3cml0ZWJhY2sgam9icyBhcmUgY29tbWl0dGVkIGZy b20gYXRvbWljIGhlbHBlcnMKPiA+ID4gPiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBCcmlhbiBT dGFya2V5IDxicmlhbi5zdGFya2V5QGFybS5jb20+Cj4gPiA+ID4gW3JlYmFzZWQgYW5kIGZpeGVk IGNvbmZsaWN0c10KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNaWhhaWwgQXRhbmFzc292IDxtaWhh aWwuYXRhbmFzc292QGFybS5jb20+Cj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogTGl2aXUgRHVkYXUg PGxpdml1LmR1ZGF1QGFybS5jb20+Cj4gPiA+ID4gW3JlYmFzZWQgYW5kIGFkZGVkIGF0b21pY19j b21taXQoKSB2ZnVuYyBmb3Igd3JpdGViYWNrIGpvYnNdCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTog Um9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgo+ID4gPiA+IC0tLQo+ID4gPiA+ICBEb2N1 bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdCAgICAgICAgICAgIHwgICA5ICsrCj4gPiA+ID4gIGRy aXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDIgKy0KPiA+ID4gPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyAgICAgICAgICAgICB8IDEzMCArKysrKysrKysr KysrKysrCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jICAgICAg fCAgMzAgKysrKwo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rvci5jICAgICAg ICAgIHwgICA0ICstCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMgICAg ICAgICAgfCAyNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiA+ICBpbmNs dWRlL2RybS9kcm1fYXRvbWljLmggICAgICAgICAgICAgICAgIHwgICAzICsKPiA+ID4gPiAgaW5j bHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oICAgICAgICAgICAgICB8ICAxMyArKwo+ID4gPiA+ICBp bmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaCAgICAgICAgICAgIHwgIDE0ICsrCj4gPiA+ID4g IGluY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmggfCAgMTEgKysKPiA+ID4g PiAgaW5jbHVkZS9kcm0vZHJtX3dyaXRlYmFjay5oICAgICAgICAgICAgICB8ICA4OSArKysrKysr KysrKwo+ID4gPiA+ICBpbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmggICAgICAgICAgICAgIHwg ICAxICsKPiA+ID4gPiAgMTIgZmlsZXMgY2hhbmdlZCwgNTYxIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCj4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJt X3dyaXRlYmFjay5jCj4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1f d3JpdGViYWNrLmgKPiA+ID4gPiAKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9n cHUvZHJtLWttcy5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLnJzdAo+ID4gPiA+IGlu ZGV4IDJkY2Y1YjQyMDE1ZC4uZTc1OTBkZDJmNzFlIDEwMDY0NAo+ID4gPiA+IC0tLSBhL0RvY3Vt ZW50YXRpb24vZ3B1L2RybS1rbXMucnN0Cj4gPiA+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUv ZHJtLWttcy5yc3QKPiA+ID4gPiBAQCAtMzcwLDYgKzM3MCwxNSBAQCBDb25uZWN0b3IgRnVuY3Rp b25zIFJlZmVyZW5jZQo+ID4gPiA+ICAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2Ry bV9jb25uZWN0b3IuYwo+ID4gPiA+ICAgICA6ZXhwb3J0Ogo+ID4gPiA+ICAKPiA+ID4gPiArV3Jp dGViYWNrIENvbm5lY3RvcnMKPiA+ID4gPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gPiAr Cj4gPiA+ID4gKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3dyaXRlYmFjay5j Cj4gPiA+ID4gKyAgOmRvYzogb3ZlcnZpZXcKPiA+ID4gPiArCj4gPiA+ID4gKy4uIGtlcm5lbC1k b2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3dyaXRlYmFjay5jCj4gPiA+ID4gKyAgOmV4cG9ydDoK PiA+ID4gPiArCj4gPiA+ID4gIEVuY29kZXIgQWJzdHJhY3Rpb24KPiA+ID4gPiAgPT09PT09PT09 PT09PT09PT09PQo+ID4gPiA+ICAKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+ID4gaW5kZXggNTAwOTNm ZjQ0NzliLi4zZDcwODk1OWIyMjQgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+ID4g QEAgLTE4LDcgKzE4LDcgQEAgZHJtLXkgICAgICAgOj0JZHJtX2F1dGgubyBkcm1fYnVmcy5vIGRy bV9jYWNoZS5vIFwKPiA+ID4gPiAgCQlkcm1fZW5jb2Rlci5vIGRybV9tb2RlX29iamVjdC5vIGRy bV9wcm9wZXJ0eS5vIFwKPiA+ID4gPiAgCQlkcm1fcGxhbmUubyBkcm1fY29sb3JfbWdtdC5vIGRy bV9wcmludC5vIFwKPiA+ID4gPiAgCQlkcm1fZHVtYl9idWZmZXJzLm8gZHJtX21vZGVfY29uZmln Lm8gZHJtX3ZibGFuay5vIFwKPiA+ID4gPiAtCQlkcm1fc3luY29iai5vIGRybV9sZWFzZS5vCj4g PiA+ID4gKwkJZHJtX3N5bmNvYmoubyBkcm1fbGVhc2UubyBkcm1fd3JpdGViYWNrLm8KPiA+ID4g PiAgCj4gPiA+ID4gIGRybS0kKENPTkZJR19EUk1fTElCX1JBTkRPTSkgKz0gbGliL2RybV9yYW5k b20ubwo+ID4gPiA+ICBkcm0tJChDT05GSUdfRFJNX1ZNKSArPSBkcm1fdm0ubwo+ID4gPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWMuYwo+ID4gPiA+IGluZGV4IDQ2NzMzZDUzNDU4Ny4uMDE5ZjEzMWZlOGJlIDEw MDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiA+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gPiA+ID4gQEAgLTMwLDYgKzMwLDcg QEAKPiA+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gPiA+ID4gICNpbmNsdWRl IDxkcm0vZHJtX21vZGUuaD4KPiA+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiA+ ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+Cj4gPiA+ID4gICNpbmNsdWRlIDxs aW51eC9zeW5jX2ZpbGUuaD4KPiA+ID4gPiAgCj4gPiA+ID4gICNpbmNsdWRlICJkcm1fY3J0Y19p bnRlcm5hbC5oIgo+ID4gPiA+IEBAIC02MzgsNiArNjM5LDQ2IEBAIHN0YXRpYyB2b2lkIGRybV9h dG9taWNfY3J0Y19wcmludF9zdGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCj4gPiA+ID4gIAkJ Y3J0Yy0+ZnVuY3MtPmF0b21pY19wcmludF9zdGF0ZShwLCBzdGF0ZSk7Cj4gPiA+ID4gIH0KPiA+ ID4gPiAgCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgKiBkcm1fYXRvbWljX2Nvbm5lY3Rvcl9jaGVj ayAtIGNoZWNrIGNvbm5lY3RvciBzdGF0ZQo+ID4gPiA+ICsgKiBAY29ubmVjdG9yOiBjb25uZWN0 b3IgdG8gY2hlY2sKPiA+ID4gPiArICogQHN0YXRlOiBjb25uZWN0b3Igc3RhdGUgdG8gY2hlY2sK PiA+ID4gPiArICoKPiA+ID4gPiArICogUHJvdmlkZXMgY29yZSBzYW5pdHkgY2hlY2tzIGZvciBj b25uZWN0b3Igc3RhdGUuCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIFJFVFVSTlM6Cj4gPiA+ID4g KyAqIFplcm8gb24gc3VjY2VzcywgZXJyb3IgY29kZSBvbiBmYWlsdXJlCj4gPiA+ID4gKyAqLwo+ ID4gPiA+ICtzdGF0aWMgaW50IGRybV9hdG9taWNfY29ubmVjdG9yX2NoZWNrKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ID4gKwkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKnN0YXRlKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNy dGNfc3RhdGU7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKndyaXRlYmFja19q b2IgPSBzdGF0ZS0+d3JpdGViYWNrX2pvYjsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoKGNvbm5l Y3Rvci0+Y29ubmVjdG9yX3R5cGUgIT0gRFJNX01PREVfQ09OTkVDVE9SX1dSSVRFQkFDSykgfHwK PiA+ID4gPiArCSAgICAhd3JpdGViYWNrX2pvYikKPiA+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4g PiArCj4gPiA+ID4gKwlpZiAod3JpdGViYWNrX2pvYi0+ZmIgJiYgIXN0YXRlLT5jcnRjKSB7Cj4g PiA+ID4gKwkJRFJNX0RFQlVHX0FUT01JQygiW0NPTk5FQ1RPUjolZDolc10gZnJhbWVidWZmZXIg d2l0aG91dCBDUlRDXG4iLAo+ID4gPiA+ICsJCQkJIGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVj dG9yLT5uYW1lKTsKPiA+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiArCX0KPiA+ID4g PiArCj4gPiA+ID4gKwlpZiAoc3RhdGUtPmNydGMpCj4gPiA+ID4gKwkJY3J0Y19zdGF0ZSA9IGRy bV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUoc3RhdGUtPnN0YXRlLAo+ID4gPiA+ICsJ CQkJCQkJCXN0YXRlLT5jcnRjKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAod3JpdGViYWNrX2pv Yi0+ZmIgJiYgIWNydGNfc3RhdGUtPmFjdGl2ZSkgewo+ID4gPiAKPiA+ID4gQ2hlY2tpbmcgZm9y IHdyaXRlYmFja19qb2ItPmZiIGlzIHJlZHVuZGFudCBoZXJlIGFuZCBhYm92ZSBzaW5jZSBpdCdz IGNoZWNrZWQKPiA+ID4gZmlyc3QgdGhpbmcgYXMgZWFybHkgZXhpdCBjcml0ZXJpYS4KPiA+IAo+ ID4gSSBzb21laG93IGRvbid0IHNlZSB0aGF0IGNoZWNrLiBXZSBjaGVjayBpZiAoIXdyaXRlYmFj X2pvYikgYW5kIHRoZW4gYWxsCj4gPiBvdGhlciBjaGVja3MgYXJlIGxvZ2ljIGFuZHMgd2l0aCBv dGhlciBjb25kaXRpb25zLCBzbyBJIHRoaW5rIHRoZSBjaGVjawo+ID4gaGVyZSBpcyBzdGlsbCBy ZWxldmFudC4KPiAKPiBBaCwgeWVhaCwgdGhlIGZpcnN0IGNoZWNrIGRvZXNuJ3QgY2hlY2sgZm9y IC0+ZmIgKEkgaW1hZ2luZWQgaXQgb24gdGhlIGVuZCBvZgo+IHdyaXRlYmFja19qb2IuIEF0IGFu eSByYXRlLCBpZiB5b3UgYWRkIGEgY2hlY2sgZm9yICEtPmZiIGluIHRoZSBmaXJzdCBjb25kaXRp b25hbAo+IHlvdSBkb24ndCBuZWVkIGl0IGhlcmUgb3IgaW4gdGhlIHNlY29uZCBjaGVjay4KPiAK PiA+IAo+ID4gPiAKPiA+ID4gPiArCQlEUk1fREVCVUdfQVRPTUlDKCJbQ09OTkVDVE9SOiVkOiVz XSBoYXMgZnJhbWVidWZmZXIsIGJ1dCBbQ1JUQzolZF0gaXMgb2ZmXG4iLAo+ID4gPiA+ICsJCQkJ IGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT5uYW1lLAo+ID4gPiA+ICsJCQkJIHN0YXRl LT5jcnRjLT5iYXNlLmlkKTsKPiA+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiArCX0K PiA+ID4gPiArCj4gPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4g PiAgLyoqCj4gPiA+ID4gICAqIGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlIC0gZ2V0IHBsYW5l IHN0YXRlCj4gPiA+ID4gICAqIEBzdGF0ZTogZ2xvYmFsIGF0b21pYyBzdGF0ZSBvYmplY3QKPiA+ ID4gPiBAQCAtMTIzMCw2ICsxMjcxLDEyIEBAIHN0YXRpYyBpbnQgZHJtX2F0b21pY19jb25uZWN0 b3Jfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiA+ID4g IAkJCXJldHVybiAtRUlOVkFMOwo+ID4gPiA+ICAJCX0KPiA+ID4gPiAgCQlzdGF0ZS0+Y29udGVu dF9wcm90ZWN0aW9uID0gdmFsOwo+ID4gPiA+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25m aWctPndyaXRlYmFja19mYl9pZF9wcm9wZXJ0eSkgewo+ID4gPiA+ICsJCXN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gZHJtX2ZyYW1lYnVmZmVyX2xvb2t1cChkZXYsIE5VTEwsIHZhbCk7Cj4g PiA+ID4gKwkJaW50IHJldCA9IGRybV9hdG9taWNfc2V0X3dyaXRlYmFja19mYl9mb3JfY29ubmVj dG9yKHN0YXRlLCBmYik7Cj4gPiA+ID4gKwkJaWYgKGZiKQo+ID4gPiA+ICsJCQlkcm1fZnJhbWVi dWZmZXJfdW5yZWZlcmVuY2UoZmIpOwo+ID4gPiA+ICsJCXJldHVybiByZXQ7Cj4gPiA+ID4gIAl9 IGVsc2UgaWYgKGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkpIHsKPiA+ID4g PiAgCQlyZXR1cm4gY29ubmVjdG9yLT5mdW5jcy0+YXRvbWljX3NldF9wcm9wZXJ0eShjb25uZWN0 b3IsCj4gPiA+ID4gIAkJCQlzdGF0ZSwgcHJvcGVydHksIHZhbCk7Cj4gPiA+ID4gQEAgLTEzMTEs NiArMTM1OCw5IEBAIGRybV9hdG9taWNfY29ubmVjdG9yX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ICAJCSp2YWwgPSBzdGF0ZS0+c2NhbGluZ19t b2RlOwo+ID4gPiA+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25uZWN0b3ItPmNvbnRlbnRf cHJvdGVjdGlvbl9wcm9wZXJ0eSkgewo+ID4gPiA+ICAJCSp2YWwgPSBzdGF0ZS0+Y29udGVudF9w cm90ZWN0aW9uOwo+ID4gPiA+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPndyaXRl YmFja19mYl9pZF9wcm9wZXJ0eSkgewo+ID4gPiA+ICsJCS8qIFdyaXRlYmFjayBmcmFtZWJ1ZmZl ciBpcyBvbmUtc2hvdCwgd3JpdGUgYW5kIGZvcmdldCAqLwo+ID4gPiA+ICsJCSp2YWwgPSAwOwo+ ID4gPiA+ICAJfSBlbHNlIGlmIChjb25uZWN0b3ItPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5 KSB7Cj4gPiA+ID4gIAkJcmV0dXJuIGNvbm5lY3Rvci0+ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVy dHkoY29ubmVjdG9yLAo+ID4gPiA+ICAJCQkJc3RhdGUsIHByb3BlcnR5LCB2YWwpOwo+ID4gPiA+ IEBAIC0xNTE4LDYgKzE1NjgsNzUgQEAgZHJtX2F0b21pY19zZXRfY3J0Y19mb3JfY29ubmVjdG9y KHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLAo+ID4gPiA+ICB9Cj4gPiA+ ID4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19zZXRfY3J0Y19mb3JfY29ubmVjdG9yKTsKPiA+ ID4gPiAgCj4gPiA+ID4gKy8qCj4gPiA+ID4gKyAqIGRybV9hdG9taWNfZ2V0X3dyaXRlYmFja19q b2IgLSByZXR1cm4gb3IgYWxsb2NhdGUgYSB3cml0ZWJhY2sgam9iCj4gPiA+ID4gKyAqIEBjb25u X3N0YXRlOiBDb25uZWN0b3Igc3RhdGUgdG8gZ2V0IHRoZSBqb2IgZm9yCj4gPiA+ID4gKyAqCj4g PiA+ID4gKyAqIFdyaXRlYmFjayBqb2JzIGhhdmUgYSBkaWZmZXJlbnQgbGlmZXRpbWUgdG8gdGhl IGF0b21pYyBzdGF0ZSB0aGV5IGFyZQo+ID4gPiA+ICsgKiBhc3NvY2lhdGVkIHdpdGguIFRoaXMg Y29udmVuaWVuY2UgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBhbGxvY2F0aW5nIGEgam9iCj4gPiA+ ID4gKyAqIGlmIHRoZXJlIGlzbid0IHlldCBvbmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25uZWN0 b3Igc3RhdGUsIG90aGVyd2lzZQo+ID4gPiA+ICsgKiBpdCBqdXN0IHJldHVybnMgdGhlIGV4aXN0 aW5nIGpvYi4KPiA+ID4gPiArICoKPiA+ID4gPiArICogUmV0dXJuczogVGhlIHdyaXRlYmFjayBq b2IgZm9yIHRoZSBnaXZlbiBjb25uZWN0b3Igc3RhdGUKPiA+ID4gPiArICovCj4gPiA+ID4gK3N0 YXRpYyBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKgo+ID4gPiA+ICtkcm1fYXRvbWljX2dldF93 cml0ZWJhY2tfam9iKHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4g PiA+ICt7Cj4gPiA+ID4gKwlXQVJOX09OKGNvbm5fc3RhdGUtPmNvbm5lY3Rvci0+Y29ubmVjdG9y X3R5cGUgIT0KPiA+ID4gPiArCQlEUk1fTU9ERV9DT05ORUNUT1JfV1JJVEVCQUNLKTsKPiA+ID4g PiArCj4gPiA+ID4gKwlpZiAoIWNvbm5fc3RhdGUtPndyaXRlYmFja19qb2IpCj4gPiA+ID4gKwkJ Y29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYiA9Cj4gPiA+ID4gKwkJCWt6YWxsb2Moc2l6ZW9mKCpj b25uX3N0YXRlLT53cml0ZWJhY2tfam9iKSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsJcmV0dXJuIGNvbm5fc3RhdGUtPndyaXRlYmFja19qb2I7Cj4gPiA+ID4gK30KPiA+ID4gPiAr Cj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgKiBkcm1fYXRvbWljX3NldF93cml0ZWJhY2tfZmJfZm9y X2Nvbm5lY3RvciAtIHNldCB3cml0ZWJhY2sgZnJhbWVidWZmZXIKPiA+ID4gPiArICogQGNvbm5f c3RhdGU6IGF0b21pYyBzdGF0ZSBvYmplY3QgZm9yIHRoZSBjb25uZWN0b3IKPiA+ID4gPiArICog QGZiOiBmYiB0byB1c2UgZm9yIHRoZSBjb25uZWN0b3IKPiA+ID4gPiArICoKPiA+ID4gPiArICog VGhpcyBpcyB1c2VkIHRvIHNldCB0aGUgZnJhbWVidWZmZXIgZm9yIGEgd3JpdGViYWNrIGNvbm5l Y3Rvciwgd2hpY2ggb3V0cHV0cwo+ID4gPiA+ICsgKiB0byBhIGJ1ZmZlciBpbnN0ZWFkIG9mIGFu IGFjdHVhbCBwaHlzaWNhbCBjb25uZWN0b3IuCj4gPiA+ID4gKyAqIENoYW5naW5nIHRoZSBhc3Np Z25lZCBmcmFtZWJ1ZmZlciByZXF1aXJlcyB1cyB0byBncmFiIGEgcmVmZXJlbmNlIHRvIHRoZSBu ZXcKPiA+ID4gPiArICogZmIgYW5kIGRyb3AgdGhlIHJlZmVyZW5jZSB0byB0aGUgb2xkIGZiLCBp ZiB0aGVyZSBpcyBvbmUuIFRoaXMgZnVuY3Rpb24KPiA+ID4gPiArICogdGFrZXMgY2FyZSBvZiBh bGwgdGhlc2UgZGV0YWlscyBiZXNpZGVzIHVwZGF0aW5nIHRoZSBwb2ludGVyIGluIHRoZQo+ID4g PiA+ICsgKiBzdGF0ZSBvYmplY3QgaXRzZWxmLgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBOb3Rl OiBUaGUgb25seSB3YXkgY29ubl9zdGF0ZSBjYW4gYWxyZWFkeSBoYXZlIGFuIGZiIHNldCBpcyBp ZiB0aGUgY29tbWl0Cj4gPiA+ID4gKyAqIHNldHMgdGhlIHByb3BlcnR5IG1vcmUgdGhhbiBvbmNl Lgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBTZWUgYWxzbzogZHJtX3dyaXRlYmFja19jb25uZWN0 b3JfaW5pdCgpCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIFJldHVybnM6IDAgb24gc3VjY2Vzcwo+ ID4gPiA+ICsgKi8KPiA+ID4gPiAraW50IGRybV9hdG9taWNfc2V0X3dyaXRlYmFja19mYl9mb3Jf Y29ubmVjdG9yKAo+ID4gPiA+ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0 YXRlLAo+ID4gPiA+ICsJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQo+ID4gPiA+ICt7Cj4g PiA+ID4gKwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYiA9Cj4gPiA+ID4gKwkJZHJtX2F0 b21pY19nZXRfd3JpdGViYWNrX2pvYihjb25uX3N0YXRlKTsKPiA+ID4gPiArCWlmICgham9iKQo+ ID4gPiA+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmIChqb2ItPmZi KQo+ID4gPiA+ICsJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShqb2ItPmZiKTsKPiA+ID4g PiArCWlmIChmYikKPiA+ID4gPiArCQlkcm1fZnJhbWVidWZmZXJfcmVmZXJlbmNlKGZiKTsKPiA+ ID4gPiArCWpvYi0+ZmIgPSBmYjsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoZmIpCj4gPiA+ID4g KwkJRFJNX0RFQlVHX0FUT01JQygiU2V0IFtGQjolZF0gZm9yIGNvbm5lY3RvciBzdGF0ZSAlcFxu IiwKPiA+ID4gPiArCQkJCSBmYi0+YmFzZS5pZCwgY29ubl9zdGF0ZSk7Cj4gPiA+ID4gKwllbHNl Cj4gPiA+ID4gKwkJRFJNX0RFQlVHX0FUT01JQygiU2V0IFtOT0ZCXSBmb3IgY29ubmVjdG9yIHN0 YXRlICVwXG4iLAo+ID4gPiA+ICsJCQkJIGNvbm5fc3RhdGUpOwo+ID4gPiA+ICsKPiA+ID4gPiAr CXJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2F0b21pY19z ZXRfd3JpdGViYWNrX2ZiX2Zvcl9jb25uZWN0b3IpOwo+ID4gPiA+ICsKPiA+ID4gPiAgLyoqCj4g PiA+ID4gICAqIGRybV9hdG9taWNfYWRkX2FmZmVjdGVkX2Nvbm5lY3RvcnMgLSBhZGQgY29ubmVj dG9ycyBmb3IgY3J0Ywo+ID4gPiA+ICAgKiBAc3RhdGU6IGF0b21pYyBzdGF0ZQo+ID4gPiA+IEBA IC0xNjM2LDYgKzE3NTUsOCBAQCBpbnQgZHJtX2F0b21pY19jaGVja19vbmx5KHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ID4gPiAgCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlOwo+ID4gPiA+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ID4gPiA+ICAJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4gPiA+ICsJc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm47Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9z dGF0ZTsKPiA+ID4gPiAgCWludCBpLCByZXQgPSAwOwo+ID4gPiA+ICAKPiA+ID4gPiAgCURSTV9E RUJVR19BVE9NSUMoImNoZWNraW5nICVwXG4iLCBzdGF0ZSk7Cj4gPiA+ID4gQEAgLTE2NTgsNiAr MTc3OSwxNSBAQCBpbnQgZHJtX2F0b21pY19jaGVja19vbmx5KHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPiA+ID4gPiAgCQl9Cj4gPiA+ID4gIAl9Cj4gPiA+ID4gIAo+ID4gPiA+ICsJ Zm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwg aSkgewo+ID4gPiA+ICsJCXJldCA9IGRybV9hdG9taWNfY29ubmVjdG9yX2NoZWNrKGNvbm4sIGNv bm5fc3RhdGUpOwo+ID4gPiA+ICsJCWlmIChyZXQpIHsKPiA+ID4gPiArCQkJRFJNX0RFQlVHX0FU T01JQygiW0NPTk5FQ1RPUjolZDolc10gYXRvbWljIGNvcmUgY2hlY2sgZmFpbGVkXG4iLAo+ID4g PiA+ICsJCQkJCSBjb25uLT5iYXNlLmlkLCBjb25uLT5uYW1lKTsKPiA+ID4gPiArCQkJcmV0dXJu IHJldDsKPiA+ID4gPiArCQl9Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICAJaWYgKGNv bmZpZy0+ZnVuY3MtPmF0b21pY19jaGVjaykKPiA+ID4gPiAgCQlyZXQgPSBjb25maWctPmZ1bmNz LT5hdG9taWNfY2hlY2soc3RhdGUtPmRldiwgc3RhdGUpOwo+ID4gPiA+ICAKPiA+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gPiA+IGluZGV4IGFlM2NiZmU5ZTAxYy4uMTJi OTEwNzU1ZDg0IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X2hlbHBlci5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVy LmMKPiA+ID4gPiBAQCAtMzAsNiArMzAsNyBAQAo+ID4gPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9w bGFuZV9oZWxwZXIuaD4KPiA+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4K PiA+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4gPiA+ICsjaW5j bHVkZSA8ZHJtL2RybV93cml0ZWJhY2suaD4KPiA+ID4gPiAgI2luY2x1ZGUgPGxpbnV4L2RtYS1m ZW5jZS5oPgo+ID4gPiA+ICAKPiA+ID4gPiAgI2luY2x1ZGUgImRybV9jcnRjX2hlbHBlcl9pbnRl cm5hbC5oIgo+ID4gPiA+IEBAIC0xMTU5LDYgKzExNjAsMjcgQEAgdm9pZCBkcm1fYXRvbWljX2hl bHBlcl9jb21taXRfbW9kZXNldF9kaXNhYmxlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4g PiA+ICB9Cj4gPiA+ID4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21v ZGVzZXRfZGlzYWJsZXMpOwo+ID4gPiA+ICAKPiA+ID4gPiArc3RhdGljIHZvaWQgY29tbWl0X3dy aXRlYmFja3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg Km9sZF9zdGF0ZSkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcjsKPiA+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29ubl9z dGF0ZTsKPiA+ID4gPiArCWludCBpOwo+ID4gPiA+ICsKPiA+ID4gPiArCWZvcl9lYWNoX25ld19j b25uZWN0b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsIG5ld19jb25uX3N0YXRlLCBp KSB7Cj4gPiA+ID4gKwkJY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpm dW5jczsKPiA+ID4gPiArCj4gPiA+ID4gKwkJZnVuY3MgPSBjb25uZWN0b3ItPmhlbHBlcl9wcml2 YXRlOwo+ID4gPiA+ICsKPiA+ID4gPiArCQlpZiAobmV3X2Nvbm5fc3RhdGUtPndyaXRlYmFja19q b2IgJiYKPiA+ID4gPiArCQkgICAgbmV3X2Nvbm5fc3RhdGUtPndyaXRlYmFja19qb2ItPmZiKSB7 Cj4gPiA+ID4gKwkJCVdBUk5fT04oY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSAhPQo+ID4gPiA+ ICsJCQkJRFJNX01PREVfQ09OTkVDVE9SX1dSSVRFQkFDSyk7Cj4gPiA+ID4gKwkJCWZ1bmNzLT5h dG9taWNfY29tbWl0KGNvbm5lY3RvciwKPiA+ID4gPiArCQkJCQkgICAgIG5ld19jb25uX3N0YXRl LT53cml0ZWJhY2tfam9iKTsKPiA+ID4gPiArCQl9Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gK30KPiA+ ID4gPiArCj4gPiA+ID4gIC8qKgo+ID4gPiA+ICAgKiBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRf bW9kZXNldF9lbmFibGVzIC0gbW9kZXNldCBjb21taXQgdG8gZW5hYmxlIG91dHB1dHMKPiA+ID4g PiAgICogQGRldjogRFJNIGRldmljZQo+ID4gPiA+IEBAIC0xMjM4LDYgKzEyNjAsOCBAQCB2b2lk IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiA+ID4gPiAgCj4gPiA+ID4gIAkJZHJtX2JyaWRnZV9lbmFibGUoZW5jb2Rlci0+ YnJpZGdlKTsKPiA+ID4gPiAgCX0KPiA+ID4gPiArCj4gPiA+ID4gKwljb21taXRfd3JpdGViYWNr cyhkZXYsIG9sZF9zdGF0ZSk7Cj4gPiA+ID4gIH0KPiA+ID4gPiAgRVhQT1JUX1NZTUJPTChkcm1f YXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzKTsKPiA+ID4gPiAgCj4gPiA+ID4g QEAgLTM2MjcsNiArMzY1MSw5IEBAIF9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxp Y2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ICAJaWYg KHN0YXRlLT5jcnRjKQo+ID4gPiA+ICAJCWRybV9jb25uZWN0b3JfZ2V0KGNvbm5lY3Rvcik7Cj4g PiA+ID4gIAlzdGF0ZS0+Y29tbWl0ID0gTlVMTDsKPiA+ID4gPiArCj4gPiA+ID4gKwkvKiBEb24n dCBjb3B5IG92ZXIgYSB3cml0ZWJhY2sgam9iLCB0aGV5IGFyZSB1c2VkIG9ubHkgb25jZSAqLwo+ ID4gPiA+ICsJc3RhdGUtPndyaXRlYmFja19qb2IgPSBOVUxMOwo+ID4gPiA+ICB9Cj4gPiA+ID4g IEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0 YXRlKTsKPiA+ID4gPiAgCj4gPiA+ID4gQEAgLTM3NTYsNiArMzc4Myw5IEBAIF9fZHJtX2F0b21p Y19oZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKnN0YXRlKQo+ID4gPiA+ICAKPiA+ID4gPiAgCWlmIChzdGF0ZS0+Y29tbWl0KQo+ID4gPiA+ ICAJCWRybV9jcnRjX2NvbW1pdF9wdXQoc3RhdGUtPmNvbW1pdCk7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsJaWYgKHN0YXRlLT53cml0ZWJhY2tfam9iKQo+ID4gPiA+ICsJCWRybV93cml0ZWJhY2tfY2xl YW51cF9qb2Ioc3RhdGUtPndyaXRlYmFja19qb2IpOwo+ID4gPiA+ICB9Cj4gPiA+ID4gIEVYUE9S VF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSk7Cj4g PiA+ID4gIAo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5lY3Rv ci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYwo+ID4gPiA+IGluZGV4IDE2Yjlj MzgxMGFmMi4uYWRkNDdmMDZhZTcwIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fY29ubmVjdG9yLmMKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Nvbm5l Y3Rvci5jCj4gPiA+ID4gQEAgLTg3LDYgKzg3LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fY29ubl9w cm9wX2VudW1fbGlzdCBkcm1fY29ubmVjdG9yX2VudW1fbGlzdFtdID0gewo+ID4gPiA+ICAJeyBE Uk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCwgIlZpcnR1YWwiIH0sCj4gPiA+ID4gIAl7IERSTV9N T0RFX0NPTk5FQ1RPUl9EU0ksICJEU0kiIH0sCj4gPiA+ID4gIAl7IERSTV9NT0RFX0NPTk5FQ1RP Ul9EUEksICJEUEkiIH0sCj4gPiA+ID4gKwl7IERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0ss ICJXcml0ZWJhY2siIH0sCj4gPiA+ID4gIH07Cj4gPiA+ID4gIAo+ID4gPiA+ICB2b2lkIGRybV9j b25uZWN0b3JfaWRhX2luaXQodm9pZCkKPiA+ID4gPiBAQCAtMjQ5LDcgKzI1MCw4IEBAIGludCBk cm1fY29ubmVjdG9yX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4gPiAgCWNvbmZp Zy0+bnVtX2Nvbm5lY3RvcisrOwo+ID4gPiA+ICAJc3Bpbl91bmxvY2tfaXJxKCZjb25maWctPmNv bm5lY3Rvcl9saXN0X2xvY2spOwo+ID4gPiA+ICAKPiA+ID4gPiAtCWlmIChjb25uZWN0b3JfdHlw ZSAhPSBEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCkKPiA+ID4gPiArCWlmIChjb25uZWN0b3Jf dHlwZSAhPSBEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCAmJgo+ID4gPiA+ICsJICAgIGNvbm5l Y3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9XUklURUJBQ0spCj4gPiA+ID4gIAkJZHJt X29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNvbm5lY3Rvci0+YmFzZSwKPiA+ID4gPiAgCQkJCQkg ICAgICBjb25maWctPmVkaWRfcHJvcGVydHksCj4gPiA+ID4gIAkJCQkJICAgICAgMCk7Cj4gPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX3dyaXRlYmFjay5jCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmRhNjFmOTI5Y2JjMwo+ID4gPiA+IC0tLSAvZGV2L251 bGwKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3dyaXRlYmFjay5jCj4gPiA+ID4g QEAgLTAsMCArMSwyNTcgQEAKPiA+ID4gPiArLyoKPiA+ID4gPiArICogKEMpIENPUFlSSUdIVCAy MDE2IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ID4gPiA+ICsgKiBBdXRob3I6 IEJyaWFuIFN0YXJrZXkgPGJyaWFuLnN0YXJrZXlAYXJtLmNvbT4KPiA+ID4gPiArICoKPiA+ID4g PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmUgYW5kIGlzIHByb3ZpZGVkIHRvIHlv dSB1bmRlciB0aGUgdGVybXMgb2YgdGhlCj4gPiA+ID4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKPiA+ID4g PiArICogRm91bmRhdGlvbiwgYW5kIGFueSB1c2UgYnkgeW91IG9mIHRoaXMgcHJvZ3JhbSBpcyBz dWJqZWN0IHRvIHRoZSB0ZXJtcwo+ID4gPiA+ICsgKiBvZiBzdWNoIEdOVSBsaWNlbmNlLgo+ID4g PiA+ICsgKi8KPiA+ID4gPiArCj4gPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiA+ ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oPgo+ID4gPiA+ ICsjaW5jbHVkZSA8ZHJtL2RybV9wcm9wZXJ0eS5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8ZHJtL2Ry bV93cml0ZWJhY2suaD4KPiA+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gPiA+ID4gKwo+ ID4gPiA+ICsvKioKPiA+ID4gPiArICogRE9DOiBvdmVydmlldwo+ID4gPiA+ICsgKgo+ID4gPiA+ ICsgKiBXcml0ZWJhY2sgY29ubmVjdG9ycyBhcmUgdXNlZCB0byBleHBvc2UgaGFyZHdhcmUgd2hp Y2ggY2FuIHdyaXRlIHRoZSBvdXRwdXQKPiA+ID4gPiArICogZnJvbSBhIENSVEMgdG8gYSBtZW1v cnkgYnVmZmVyLiBUaGV5IGFyZSB1c2VkIGFuZCBhY3Qgc2ltaWxhcmx5IHRvIG90aGVyCj4gPiA+ ID4gKyAqIHR5cGVzIG9mIGNvbm5lY3RvcnMsIHdpdGggc29tZSBpbXBvcnRhbnQgZGlmZmVyZW5j ZXM6Cj4gPiA+ID4gKyAqICAtIFdyaXRlYmFjayBjb25uZWN0b3JzIGRvbid0IHByb3ZpZGUgYSB3 YXkgdG8gb3V0cHV0IHZpc3VhbGx5IHRvIHRoZSB1c2VyLgo+ID4gPiA+ICsgKiAgLSBXcml0ZWJh Y2sgY29ubmVjdG9ycyBzaG91bGQgYWx3YXlzIHJlcG9ydCBhcyAiZGlzY29ubmVjdGVkIiAoc28g dGhhdAo+ID4gPiA+ICsgKiAgICBjbGllbnRzIHdoaWNoIGRvbid0IHVuZGVyc3RhbmQgdGhlbSB3 aWxsIGlnbm9yZSB0aGVtKS4KPiA+ID4gCj4gPiA+IEhhdmUgd2UgY29uc2lkZXJlZCBoaWRpbmcg d3JpdGViYWNrIGJlaGluZCBhIGNsaWVudCBjYXAgaW5zdGVhZD8KPiA+IAo+ID4gWWVzLCBjaGFu Z2Vsb2cgc2F5cyB0aGF0IHRoZSBjbGllbnQgY2FwIHdhcyBkcm9wcGVkIGluIHYyIGJhc2VkIG9u Cj4gPiBmZWVkYmFjayAoYXMgZmFyIGFzIEkgcmVtZW1iZXIpLiAKPiA+IAo+ID4gPiAKPiA+ID4g PiArICogIC0gV3JpdGViYWNrIGNvbm5lY3RvcnMgZG9uJ3QgaGF2ZSBFRElELgo+ID4gPiA+ICsg Kgo+ID4gPiA+ICsgKiBBIGZyYW1lYnVmZmVyIG1heSBvbmx5IGJlIGF0dGFjaGVkIHRvIGEgd3Jp dGViYWNrIGNvbm5lY3RvciB3aGVuIHRoZQo+ID4gPiA+ICsgKiBjb25uZWN0b3IgaXMgYXR0YWNo ZWQgdG8gYSBDUlRDLiBUaGUgV1JJVEVCQUNLX0ZCX0lEIHByb3BlcnR5IHdoaWNoIHNldHMgdGhl Cj4gPiA+ID4gKyAqIGZyYW1lYnVmZmVyIGFwcGxpZXMgb25seSB0byBhIHNpbmdsZSBjb21taXQg KHNlZSBiZWxvdykuIEEgZnJhbWVidWZmZXIgbWF5Cj4gPiA+ID4gKyAqIG5vdCBiZSBhdHRhY2hl ZCB3aGlsZSB0aGUgQ1JUQyBpcyBvZmYuCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIFdyaXRlYmFj ayBjb25uZWN0b3JzIGhhdmUgc29tZSBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIHdoaWNoIHVzZXJz cGFjZQo+ID4gPiA+ICsgKiBjYW4gdXNlIHRvIHF1ZXJ5IGFuZCBjb250cm9sIHRoZW06Cj4gPiA+ ID4gKyAqCj4gPiA+ID4gKyAqICAiV1JJVEVCQUNLX0ZCX0lEIjoKPiA+ID4gPiArICoJV3JpdGUt b25seSBvYmplY3QgcHJvcGVydHkgc3RvcmluZyBhIERSTV9NT0RFX09CSkVDVF9GQjogaXQgc3Rv cmVzIHRoZQo+ID4gPiA+ICsgKglmcmFtZWJ1ZmZlciB0byBiZSB3cml0dGVuIGJ5IHRoZSB3cml0 ZWJhY2sgY29ubmVjdG9yLiBUaGlzIHByb3BlcnR5IGlzCj4gPiA+ID4gKyAqCXNpbWlsYXIgdG8g dGhlIEZCX0lEIHByb3BlcnR5IG9uIHBsYW5lcywgYnV0IHdpbGwgYWx3YXlzIHJlYWQgYXMgemVy bwo+ID4gPiA+ICsgKglhbmQgaXMgbm90IHByZXNlcnZlZCBhY3Jvc3MgY29tbWl0cy4KPiA+ID4g PiArICoJVXNlcnNwYWNlIG11c3Qgc2V0IHRoaXMgcHJvcGVydHkgdG8gYW4gb3V0cHV0IGJ1ZmZl ciBldmVyeSB0aW1lIGl0Cj4gPiA+ID4gKyAqCXdpc2hlcyB0aGUgYnVmZmVyIHRvIGdldCBmaWxs ZWQuCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqICAiV1JJVEVCQUNLX1BJWEVMX0ZPUk1BVFMiOgo+ ID4gPiA+ICsgKglJbW11dGFibGUgYmxvYiBwcm9wZXJ0eSB0byBzdG9yZSB0aGUgc3VwcG9ydGVk IHBpeGVsIGZvcm1hdHMgdGFibGUuIFRoZQo+ID4gPiA+ICsgKglkYXRhIGlzIGFuIGFycmF5IG9m IHUzMiBEUk1fRk9STUFUXyogZm91cmNjIHZhbHVlcy4KPiA+ID4gPiArICoJVXNlcnNwYWNlIGNh biB1c2UgdGhpcyBibG9iIHRvIGZpbmQgb3V0IHdoYXQgcGl4ZWwgZm9ybWF0cyBhcmUgc3VwcG9y dGVkCj4gPiA+ID4gKyAqCWJ5IHRoZSBjb25uZWN0b3IncyB3cml0ZWJhY2sgZW5naW5lLgo+ID4g PiA+ICsgKi8KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBib29sIGNyZWF0ZV93cml0ZWJhY2tf cHJvcGVydGllcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlz dHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmICghZGV2LT5t b2RlX2NvbmZpZy53cml0ZWJhY2tfZmJfaWRfcHJvcGVydHkpIHsKPiA+ID4gCj4gPiA+IFNvbWV3 aGF0IGFuIGFzaWRlLCBidXQgd2Ugc2hvdWxkIHByb2JhYmx5IGNvbWUgdXAgd2l0aCBtb3JlIGZv cm1hbCBydWxlcyBvbgo+ID4gPiB3aGVyZSB0byBzdGljayBwcm9wZXJ0aWVzLiBXZSBoYXZlIHNv bWUgaW4gZHJtX2Nvbm5lY3Rvciwgd2hpY2ggSSBpbnRlcnByZXQgYXMKPiA+ID4gImNvbm5lY3Rv ci1vbmx5IHByb3BlcnRpZXMiLCBidXQgd2UgYWxzbyBoYXZlIGEgYnVuY2ggaW4gbW9kZV9jb25m aWcuCj4gPiA+IAo+ID4gPiBGb3Igb3B0aW9uYWwgcHJvcGVydGllcyB3aGljaCB3aWxsIGdlbmVy YWxseSBvbmx5IGFwcGx5IHRvIG9uZSBjb25uZWN0b3Igb24gYQo+ID4gPiBzeXN0ZW0sIEknZCBi ZSBpbmNsaW5lZCB0byBwdXQgaXQgaW4gY29ubmVjdG9yLiAKPiA+IAo+ID4gSSBjYW4gbW92ZSB0 aGUgd3JpdGViYWNrLXJlbGF0ZWQgcHJvcGVydGllcyBpbnRvIHRoZSBjb25uZWN0b3IgaW4gdGhl Cj4gPiBuZXh0IHNlcmllcy4KPiA+IAo+IAo+IEVpdGhlciB3YXkgd29ya3MgZm9yIG1lLCBubyBu ZWVkIHRvIGRvIHRoaXMgaWYgeW91J3JlIGhhcHB5IHdpdGggaXQsIEkgd2FzIGp1c3QKPiBpZGx5 IG11c2luZy4KPiAKPiA+IAo+ID4gPiAKPiA+ID4gPiArCQlwcm9wID0gZHJtX3Byb3BlcnR5X2Ny ZWF0ZV9vYmplY3QoZGV2LCBEUk1fTU9ERV9QUk9QX0FUT01JQywKPiA+ID4gPiArCQkJCQkJICAi V1JJVEVCQUNLX0ZCX0lEIiwKPiA+ID4gPiArCQkJCQkJICBEUk1fTU9ERV9PQkpFQ1RfRkIpOwo+ ID4gPiA+ICsJCWlmICghcHJvcCkKPiA+ID4gPiArCQkJcmV0dXJuIGZhbHNlOwo+ID4gPiA+ICsJ CWRldi0+bW9kZV9jb25maWcud3JpdGViYWNrX2ZiX2lkX3Byb3BlcnR5ID0gcHJvcDsKPiA+ID4g PiArCX0KPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoIWRldi0+bW9kZV9jb25maWcud3JpdGViYWNr X3BpeGVsX2Zvcm1hdHNfcHJvcGVydHkpIHsKPiA+ID4gPiArCQlwcm9wID0gZHJtX3Byb3BlcnR5 X2NyZWF0ZShkZXYsIERSTV9NT0RFX1BST1BfQkxPQiB8IERSTV9NT0RFX1BST1BfSU1NVVRBQkxF LAo+ID4gPiA+ICsJCQkJCSAgICJXUklURUJBQ0tfUElYRUxfRk9STUFUUyIsIDApOwo+ID4gPiAK PiA+ID4gRG9lcyBpdCBtYWtlIHNlbnNlIHRvIGV4cG9zZSB0aGUgZm9ybWF0cyBpZiB1L3MgZG9l c24ndCBzdXBwb3J0IGF0b21pYyBhbmQgY2FuJ3QKPiA+ID4gdXNlIHdyaXRlYmFjaz8gUGVyaGFw cyB0aGlzIHNob3VsZCBhbHNvIGJlIERSTV9NT0RFX1BST1BfQVRPTUlDLgo+ID4gCj4gPiBBZ3Jl ZSwgcHJvYmFibHkgYWxsIHRoZSB3cml0ZWJhY2sgcHJvcGVydGllcyBzaG91bGQgb25seSBiZSBh dmFpbGFibGUgaWYKPiA+IHRoZSBjbGllbnQgc2VsZWN0cyBEUk1fTU9ERV9QUk9QX0FUT01JQy4K PiA+IAo+ID4gPiAKPiA+ID4gCj4gPiA+ID4gKwkJaWYgKCFwcm9wKQo+ID4gPiA+ICsJCQlyZXR1 cm4gZmFsc2U7Cj4gPiA+ID4gKwkJZGV2LT5tb2RlX2NvbmZpZy53cml0ZWJhY2tfcGl4ZWxfZm9y bWF0c19wcm9wZXJ0eSA9IHByb3A7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0 dXJuIHRydWU7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2VuY29kZXJfZnVuY3MgZHJtX3dyaXRlYmFja19lbmNvZGVyX2Z1bmNzID0gewo+ID4g PiA+ICsJLmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVwLAo+ID4gPiA+ICt9Owo+ID4gPiA+ ICsKPiA+ID4gPiArLyoqCj4gPiA+ID4gKyAqIGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQg LSBJbml0aWFsaXplIGEgd3JpdGViYWNrIGNvbm5lY3RvciBhbmQgaXRzIHByb3BlcnRpZXMKPiA+ ID4gPiArICogQGRldjogRFJNIGRldmljZQo+ID4gPiA+ICsgKiBAd2JfY29ubmVjdG9yOiBXcml0 ZWJhY2sgY29ubmVjdG9yIHRvIGluaXRpYWxpemUKPiA+ID4gPiArICogQGNvbl9mdW5jczogQ29u bmVjdG9yIGZ1bmNzIHZ0YWJsZQo+ID4gPiA+ICsgKiBAZW5jX2hlbHBlcl9mdW5jczogRW5jb2Rl ciBoZWxwZXIgZnVuY3MgdnRhYmxlIHRvIGJlIHVzZWQgYnkgdGhlIGludGVybmFsIGVuY29kZXIK PiA+ID4gPiArICogQGZvcm1hdHM6IEFycmF5IG9mIHN1cHBvcnRlZCBwaXhlbCBmb3JtYXRzIGZv ciB0aGUgd3JpdGViYWNrIGVuZ2luZQo+ID4gPiA+ICsgKiBAbl9mb3JtYXRzOiBMZW5ndGggb2Yg dGhlIGZvcm1hdHMgYXJyYXkKPiA+ID4gPiArICoKPiA+ID4gPiArICogVGhpcyBmdW5jdGlvbiBj cmVhdGVzIHRoZSB3cml0ZWJhY2stY29ubmVjdG9yLXNwZWNpZmljIHByb3BlcnRpZXMgaWYgdGhl eQo+ID4gPiA+ICsgKiBoYXZlIG5vdCBiZWVuIGFscmVhZHkgY3JlYXRlZCwgaW5pdGlhbGl6ZXMg dGhlIGNvbm5lY3RvciBhcwo+ID4gPiA+ICsgKiB0eXBlIERSTV9NT0RFX0NPTk5FQ1RPUl9XUklU RUJBQ0ssIGFuZCBjb3JyZWN0bHkgaW5pdGlhbGl6ZXMgdGhlIHByb3BlcnR5Cj4gPiA+ID4gKyAq IHZhbHVlcy4gSXQgd2lsbCBhbHNvIGNyZWF0ZSBhbiBpbnRlcm5hbCBlbmNvZGVyIGFzc29jaWF0 ZWQgd2l0aCB0aGUKPiA+ID4gPiArICogZHJtX3dyaXRlYmFja19jb25uZWN0b3IgYW5kIHNldCBp dCB0byB1c2UgdGhlIEBlbmNfaGVscGVyX2Z1bmNzIHZ0YWJsZSBmb3IKPiA+ID4gPiArICogdGhl IGVuY29kZXIgaGVscGVyLgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBEcml2ZXJzIHNob3VsZCBh bHdheXMgdXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBkcm1fY29ubmVjdG9yX2luaXQoKSB0 bwo+ID4gPiA+ICsgKiBzZXQgdXAgd3JpdGViYWNrIGNvbm5lY3RvcnMuCj4gPiA+ID4gKyAqCj4g PiA+ID4gKyAqIFJldHVybnM6IDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2Rl Cj4gPiA+ID4gKyAqLwo+ID4gPiA+ICtpbnQgZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPiA+ICsJCQkJIHN0cnVjdCBkcm1fd3JpdGViYWNr X2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yLAo+ID4gPiA+ICsJCQkJIGNvbnN0IHN0cnVjdCBkcm1f Y29ubmVjdG9yX2Z1bmNzICpjb25fZnVuY3MsCj4gPiA+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGRy bV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZW5jX2hlbHBlcl9mdW5jcywKPiA+ID4gPiArCQkJCSBj b25zdCB1MzIgKmZvcm1hdHMsIGludCBuX2Zvcm1hdHMpCj4gPiA+ID4gK3sKPiA+ID4gPiArCWlu dCByZXQ7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2I7Cj4gPiA+ID4g KwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJndiX2Nvbm5lY3Rvci0+YmFzZTsK PiA+ID4gPiArCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29u ZmlnOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmICghY3JlYXRlX3dyaXRlYmFja19wcm9wZXJ0aWVz KGRldikpCj4gPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJYmxv YiA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfYmxvYihkZXYsIG5fZm9ybWF0cyAqIHNpemVvZigqZm9y bWF0cyksCj4gPiA+ID4gKwkJCQkJZm9ybWF0cyk7Cj4gPiA+ID4gKwlpZiAoSVNfRVJSKGJsb2Ip KQo+ID4gPiA+ICsJCXJldHVybiBQVFJfRVJSKGJsb2IpOwo+ID4gPiA+ICsKPiA+ID4gPiArCWRy bV9lbmNvZGVyX2hlbHBlcl9hZGQoJndiX2Nvbm5lY3Rvci0+ZW5jb2RlciwgZW5jX2hlbHBlcl9m dW5jcyk7Cj4gPiA+ID4gKwlyZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGRldiwgJndiX2Nvbm5lY3Rv ci0+ZW5jb2RlciwKPiA+ID4gPiArCQkJICAgICAgICZkcm1fd3JpdGViYWNrX2VuY29kZXJfZnVu Y3MsCj4gPiA+ID4gKwkJCSAgICAgICBEUk1fTU9ERV9FTkNPREVSX1ZJUlRVQUwsIE5VTEwpOwo+ ID4gPiA+ICsJaWYgKHJldCkKPiA+ID4gPiArCQlnb3RvIGZhaWw7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsJY29ubmVjdG9yLT5pbnRlcmxhY2VfYWxsb3dlZCA9IDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ cmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRldiwgY29ubmVjdG9yLCBjb25fZnVuY3MsCj4gPiA+ ID4gKwkJCQkgRFJNX01PREVfQ09OTkVDVE9SX1dSSVRFQkFDSyk7Cj4gPiA+ID4gKwlpZiAocmV0 KQo+ID4gPiA+ICsJCWdvdG8gY29ubmVjdG9yX2ZhaWw7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0 ID0gZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwKPiA+ID4gPiAr CQkJCQkJJndiX2Nvbm5lY3Rvci0+ZW5jb2Rlcik7Cj4gPiA+ID4gKwlpZiAocmV0KQo+ID4gPiA+ ICsJCWdvdG8gYXR0YWNoX2ZhaWw7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJSU5JVF9MSVNUX0hFQUQo JndiX2Nvbm5lY3Rvci0+am9iX3F1ZXVlKTsKPiA+ID4gPiArCXNwaW5fbG9ja19pbml0KCZ3Yl9j b25uZWN0b3ItPmpvYl9sb2NrKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlkcm1fb2JqZWN0X2F0dGFj aF9wcm9wZXJ0eSgmY29ubmVjdG9yLT5iYXNlLAo+ID4gPiA+ICsJCQkJICAgY29uZmlnLT53cml0 ZWJhY2tfZmJfaWRfcHJvcGVydHksIDApOwo+ID4gPiA+ICsKPiA+ID4gPiArCWRybV9vYmplY3Rf YXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3ItPmJhc2UsCj4gPiA+ID4gKwkJCQkgICBjb25maWct PndyaXRlYmFja19waXhlbF9mb3JtYXRzX3Byb3BlcnR5LAo+ID4gPiA+ICsJCQkJICAgYmxvYi0+ YmFzZS5pZCk7Cj4gPiA+ID4gKwl3Yl9jb25uZWN0b3ItPnBpeGVsX2Zvcm1hdHNfYmxvYl9wdHIg PSBibG9iOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ICsKPiA+ID4gPiAr YXR0YWNoX2ZhaWw6Cj4gPiA+ID4gKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9yKTsK PiA+ID4gPiArY29ubmVjdG9yX2ZhaWw6Cj4gPiA+ID4gKwlkcm1fZW5jb2Rlcl9jbGVhbnVwKCZ3 Yl9jb25uZWN0b3ItPmVuY29kZXIpOwo+ID4gPiA+ICtmYWlsOgo+ID4gPiA+ICsJZHJtX3Byb3Bl cnR5X3VucmVmZXJlbmNlX2Jsb2IoYmxvYik7Cj4gPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiA+ ICt9Cj4gPiA+ID4gK0VYUE9SVF9TWU1CT0woZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCk7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsvKioKPiA+ID4gPiArICogZHJtX3dyaXRlYmFja19xdWV1ZV9q b2IgLSBRdWV1ZSBhIHdyaXRlYmFjayBqb2IgZm9yIGxhdGVyIHNpZ25hbGxpbmcKPiA+ID4gPiAr ICogQHdiX2Nvbm5lY3RvcjogVGhlIHdyaXRlYmFjayBjb25uZWN0b3IgdG8gcXVldWUgYSBqb2Ig b24KPiA+ID4gPiArICogQGpvYjogVGhlIGpvYiB0byBxdWV1ZQo+ID4gPiA+ICsgKgo+ID4gPiA+ ICsgKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBqb2IgdG8gdGhlIGpvYl9xdWV1ZSBmb3IgYSB3cml0 ZWJhY2sgY29ubmVjdG9yLiBJdAo+ID4gPiA+ICsgKiBzaG91bGQgYmUgY29uc2lkZXJlZCB0byB0 YWtlIG93bmVyc2hpcCBvZiB0aGUgd3JpdGViYWNrIGpvYiwgYW5kIHNvIGFueSBvdGhlcgo+ID4g PiA+ICsgKiByZWZlcmVuY2VzIHRvIHRoZSBqb2IgbXVzdCBiZSBjbGVhcmVkIGFmdGVyIGNhbGxp bmcgdGhpcyBmdW5jdGlvbi4KPiA+ID4gPiArICoKPiA+ID4gPiArICogRHJpdmVycyBtdXN0IGVu c3VyZSB0aGF0IGZvciBhIGdpdmVuIHdyaXRlYmFjayBjb25uZWN0b3IsIGpvYnMgYXJlIHF1ZXVl ZCBpbgo+ID4gPiA+ICsgKiBleGFjdGx5IHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgd2lsbCBiZSBj b21wbGV0ZWQgYnkgdGhlIGhhcmR3YXJlIChhbmQKPiA+ID4gPiArICogc2lnbmFsZWQgdmlhIGRy bV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24pLgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBG b3IgZXZlcnkgY2FsbCB0byBkcm1fd3JpdGViYWNrX3F1ZXVlX2pvYigpIHRoZXJlIG11c3QgYmUg ZXhhY3RseSBvbmUgY2FsbCB0bwo+ID4gPiA+ICsgKiBkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21w bGV0aW9uKCkKPiA+ID4gPiArICoKPiA+ID4gPiArICogU2VlIGFsc286IGRybV93cml0ZWJhY2tf c2lnbmFsX2NvbXBsZXRpb24oKQo+ID4gPiA+ICsgKi8KPiA+ID4gPiArdm9pZCBkcm1fd3JpdGVi YWNrX3F1ZXVlX2pvYihzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKndiX2Nvbm5lY3Rv ciwKPiA+ID4gPiArCQkJICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYikKPiA+ID4g PiArewo+ID4gPiA+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiA+ID4gPiArCj4gPiA+ID4gKwlz cGluX2xvY2tfaXJxc2F2ZSgmd2JfY29ubmVjdG9yLT5qb2JfbG9jaywgZmxhZ3MpOwo+ID4gPiA+ ICsJbGlzdF9hZGRfdGFpbCgmam9iLT5saXN0X2VudHJ5LCAmd2JfY29ubmVjdG9yLT5qb2JfcXVl dWUpOwo+ID4gPiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmd2JfY29ubmVjdG9yLT5qb2Jf bG9jaywgZmxhZ3MpOwo+ID4gPiA+ICt9Cj4gPiA+ID4gK0VYUE9SVF9TWU1CT0woZHJtX3dyaXRl YmFja19xdWV1ZV9qb2IpOwo+ID4gPiA+ICsKPiA+ID4gPiArLyoqCj4gPiA+ID4gKyAqIGRybV93 cml0ZWJhY2tfY2xlYW51cF9qb2IgLSBDbGVhbnVwIGFuZCBmcmVlIGEgd3JpdGViYWNrIGpvYgo+ ID4gPiA+ICsgKiBAam9iOiBUaGUgd3JpdGViYWNrIGpvYiB0byBmcmVlCj4gPiA+ID4gKyAqCj4g PiA+ID4gKyAqIERyb3BzIGFueSByZWZlcmVuY2VzIGhlbGQgYnkgdGhlIHdyaXRlYmFjayBqb2Is IGFuZCBmcmVlcyB0aGUgc3RydWN0dXJlLgo+ID4gPiA+ICsgKi8KPiA+ID4gPiArdm9pZCBkcm1f d3JpdGViYWNrX2NsZWFudXBfam9iKHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iKQo+ID4g PiA+ICt7Cj4gPiA+ID4gKwlpZiAoIWpvYikKPiA+ID4gPiArCQlyZXR1cm47Cj4gPiA+ID4gKwo+ ID4gPiA+ICsJaWYgKGpvYi0+ZmIpCj4gPiA+ID4gKwkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJl bmNlKGpvYi0+ZmIpOwo+ID4gPiA+ICsJa2ZyZWUoam9iKTsKPiA+ID4gPiArfQo+ID4gPiA+ICtF WFBPUlRfU1lNQk9MKGRybV93cml0ZWJhY2tfY2xlYW51cF9qb2IpOwo+ID4gPiA+ICsKPiA+ID4g PiArLyoKPiA+ID4gPiArICogQGNsZWFudXBfd29yazogZGVmZXJyZWQgY2xlYW51cCBvZiBhIHdy aXRlYmFjayBqb2IKPiA+ID4gPiArICoKPiA+ID4gPiArICogVGhlIGpvYiBjYW5ub3QgYmUgY2xl YW5lZCB1cCBkaXJlY3RseSBpbiBkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21wbGV0aW9uLAo+ID4g PiA+ICsgKiBiZWNhdXNlIGl0IG1heSBiZSBjYWxsZWQgaW4gaW50ZXJydXB0IGNvbnRleHQuIERy b3BwaW5nIHRoZSBmcmFtZWJ1ZmZlcgo+ID4gPiA+ICsgKiByZWZlcmVuY2UgY2FuIHNsZWVwLCBh bmQgc28gdGhlIGNsZWFudXAgaXMgZGVmZXJyZWQgdG8gYSB3b3JrcXVldWUuCj4gPiA+ID4gKyAq Lwo+ID4gPiA+ICtzdGF0aWMgdm9pZCBjbGVhbnVwX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYiA9 IGNvbnRhaW5lcl9vZih3b3JrLAo+ID4gPiA+ICsJCQkJCQkgICAgIHN0cnVjdCBkcm1fd3JpdGVi YWNrX2pvYiwKPiA+ID4gPiArCQkJCQkJICAgICBjbGVhbnVwX3dvcmspOwo+ID4gPiA+ICsJZHJt X3dyaXRlYmFja19jbGVhbnVwX2pvYihqb2IpOwo+ID4gPiAKPiA+ID4gVElMIHRoYXQgeW91IGNh biBmcmVlIHdvcmsgd2hpbGUgdXNpbmcgaXQuCj4gPiAKPiA+IFdhcyBub3QgYXdhcmUgdGhhdCBp dCBpcyBwb3NzaWJsZS4gSSBjYW4gdXBkYXRlIHRoZSBjb2RlIHRvIGRvIGl0Lgo+IAo+IFRoYXQn cyB3aGF0J3MgaGFwcGVuaW5nIG5vdywgYWZhaWN0LiBkcm1fd3JpdGViYWNrX2NsZWFudXBfam9i KCkgZnJlZXMgam9iLCB3aGljaAo+IGNvbnRhaW5zIHdvcmsgaW4gdGhpcyBmdW5jdGlvbi4KClNv cnJ5IGZvciB0aGUgY29uZnVzaW9uLCBJIHdhcyBub3QgZmFtaWxpYXIgd2l0aCBUSUwgYW5kIGFz c3VtZWQgdG8gbWVhbgpzb21ldGhpbmcgYWN0aW9uYWJsZS9wb3NpdGl2ZS4gTm93IEkndmUgbGVh cm5lZCB0aGF0IGl0IHN0YW5kcyBmb3IKInRvZGF5IEkoJ3ZlKSBsZWFybmVkIi4KClllYWgsIHN1 cnByaXNlZCB0aGF0IHdlIGNhbiBnZXQgYXdheSB3aXRoIGl0IDopCgoKQmVzdCByZWdhcmRzLApM aXZpdQoKPiAKPiBTZWFuCj4gCj4gPiAKPiA+IFRoYW5rcyBmb3IgdGhlIGZlZWRiYWNrIGFuZCBy ZXZpZXchCj4gPiAKPiA+IEJlc3QgcmVnYXJkcywKPiA+IExpdml1Cj4gPiAKPiA+ID4gCj4gPiA+ ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgKiBkcm1fd3JpdGViYWNrX3Np Z25hbF9jb21wbGV0aW9uIC0gU2lnbmFsIHRoZSBjb21wbGV0aW9uIG9mIGEgd3JpdGViYWNrIGpv Ygo+ID4gPiA+ICsgKiBAd2JfY29ubmVjdG9yOiBUaGUgd3JpdGViYWNrIGNvbm5lY3RvciB3aG9z ZSBqb2IgaXMgY29tcGxldGUKPiA+ID4gPiArICoKPiA+ID4gPiArICogRHJpdmVycyBzaG91bGQg Y2FsbCB0aGlzIHRvIHNpZ25hbCB0aGUgY29tcGxldGlvbiBvZiBhIHByZXZpb3VzbHkgcXVldWVk Cj4gPiA+ID4gKyAqIHdyaXRlYmFjayBqb2IuIEl0IHNob3VsZCBiZSBjYWxsZWQgYXMgc29vbiBh cyBwb3NzaWJsZSBhZnRlciB0aGUgaGFyZHdhcmUKPiA+ID4gPiArICogaGFzIGZpbmlzaGVkIHdy aXRpbmcsIGFuZCBtYXkgYmUgY2FsbGVkIGZyb20gaW50ZXJydXB0IGNvbnRleHQuCj4gPiA+ID4g KyAqIEl0IGlzIHRoZSBkcml2ZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCBmb3Ig YSBnaXZlbiBjb25uZWN0b3IsIHRoZQo+ID4gPiA+ICsgKiBoYXJkd2FyZSBjb21wbGV0ZXMgd3Jp dGViYWNrIGpvYnMgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBhcmUgcXVldWVkLgo+ID4gPiA+ ICsgKgo+ID4gPiA+ICsgKiBVbmxlc3MgdGhlIGRyaXZlciBpcyBob2xkaW5nIGl0cyBvd24gcmVm ZXJlbmNlIHRvIHRoZSBmcmFtZWJ1ZmZlciwgaXQgbXVzdAo+ID4gPiA+ICsgKiBub3QgYmUgYWNj ZXNzZWQgYWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsg KiBTZWUgYWxzbzogZHJtX3dyaXRlYmFja19xdWV1ZV9qb2IoKQo+ID4gPiA+ICsgKi8KPiA+ID4g PiArdm9pZAo+ID4gPiA+ICtkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKHN0cnVjdCBk cm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yKQo+ID4gPiA+ICt7Cj4gPiA+ID4g Kwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ID4gPiA+ICsJc3RydWN0IGRybV93cml0ZWJhY2tfam9i ICpqb2I7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJndiX2Nvbm5lY3Rv ci0+am9iX2xvY2ssIGZsYWdzKTsKPiA+ID4gPiArCWpvYiA9IGxpc3RfZmlyc3RfZW50cnlfb3Jf bnVsbCgmd2JfY29ubmVjdG9yLT5qb2JfcXVldWUsCj4gPiA+ID4gKwkJCQkgICAgICAgc3RydWN0 IGRybV93cml0ZWJhY2tfam9iLAo+ID4gPiA+ICsJCQkJICAgICAgIGxpc3RfZW50cnkpOwo+ID4g PiA+ICsJaWYgKGpvYikKPiA+ID4gPiArCQlsaXN0X2RlbCgmam9iLT5saXN0X2VudHJ5KTsKPiA+ ID4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJndiX2Nvbm5lY3Rvci0+am9iX2xvY2ssIGZs YWdzKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoV0FSTl9PTigham9iKSkKPiA+ID4gPiArCQly ZXR1cm47Cj4gPiA+ID4gKwo+ID4gPiA+ICsJSU5JVF9XT1JLKCZqb2ItPmNsZWFudXBfd29yaywg Y2xlYW51cF93b3JrKTsKPiA+ID4gPiArCXF1ZXVlX3dvcmsoc3lzdGVtX2xvbmdfd3EsICZqb2It PmNsZWFudXBfd29yayk7Cj4gPiA+ID4gK30KPiA+ID4gPiArRVhQT1JUX1NZTUJPTChkcm1fd3Jp dGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKTsKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vZHJtX2F0b21pYy5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCj4gPiA+ID4gaW5kZXgg Y2YxMzg0MmE2ZGJkLi5kN2IwMjYzY2M1Y2YgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvaW5jbHVkZS9k cm0vZHJtX2F0b21pYy5oCj4gPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCj4g PiA+ID4gQEAgLTU5NCw2ICs1OTQsOSBAQCB2b2lkIGRybV9hdG9taWNfc2V0X2ZlbmNlX2Zvcl9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiA+ID4gPiAgaW50IF9f bXVzdF9jaGVjawo+ID4gPiA+ICBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9jb25uZWN0b3Ioc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsCj4gPiA+ID4gIAkJCQkgIHN0cnVj dCBkcm1fY3J0YyAqY3J0Yyk7Cj4gPiA+ID4gK2ludCBkcm1fYXRvbWljX3NldF93cml0ZWJhY2tf ZmJfZm9yX2Nvbm5lY3RvcigKPiA+ID4gPiArCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq Y29ubl9zdGF0ZSwKPiA+ID4gPiArCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7Cj4gPiA+ ID4gIGludCBfX211c3RfY2hlY2sKPiA+ID4gPiAgZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfY29u bmVjdG9ycyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiA+ID4gIAkJCQkgICBz dHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9k cm1fY29ubmVjdG9yLmggYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ID4gPiBpbmRl eCA3NThhMTc2ZTdiNTcuLjg3MDFlYmNjNjhiMyAxMDA2NDQKPiA+ID4gPiAtLS0gYS9pbmNsdWRl L2RybS9kcm1fY29ubmVjdG9yLmgKPiA+ID4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fY29ubmVj dG9yLmgKPiA+ID4gPiBAQCAtNDI1LDYgKzQyNSwxOSBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSB7Cj4gPiA+ID4gIAkgKiBwcm90ZWN0aW9uLiBUaGlzIGlzIG1vc3QgY29tbW9ubHkgdXNl ZCBmb3IgSERDUC4KPiA+ID4gPiAgCSAqLwo+ID4gPiA+ICAJdW5zaWduZWQgaW50IGNvbnRlbnRf cHJvdGVjdGlvbjsKPiA+ID4gPiArCj4gPiA+ID4gKwkvKioKPiA+ID4gPiArCSAqIEB3cml0ZWJh Y2tfam9iOiBXcml0ZWJhY2sgam9iIGZvciB3cml0ZWJhY2sgY29ubmVjdG9ycwo+ID4gPiA+ICsJ ICoKPiA+ID4gPiArCSAqIEhvbGRzIHRoZSBmcmFtZWJ1ZmZlciBmb3IgYSB3cml0ZWJhY2sgY29u bmVjdG9yLiBBcyB0aGUgd3JpdGViYWNrCj4gPiA+ID4gKwkgKiBjb21wbGV0aW9uIG1heSBiZSBh c3luY2hyb25vdXMgdG8gdGhlIG5vcm1hbCBjb21taXQgY3ljbGUsIHRoZQo+ID4gPiA+ICsJICog d3JpdGViYWNrIGpvYiBsaWZldGltZSBpcyBtYW5hZ2VkIHNlcGFyYXRlbHkgZnJvbSB0aGUgbm9y bWFsIGF0b21pYwo+ID4gPiA+ICsJICogc3RhdGUgYnkgdGhpcyBvYmplY3QuCj4gPiA+ID4gKwkg Kgo+ID4gPiA+ICsJICogU2VlIGFsc286IGRybV93cml0ZWJhY2tfcXVldWVfam9iKCkgYW5kCj4g PiA+ID4gKwkgKiBkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKCkKPiA+ID4gPiArCSAq Lwo+ID4gPiA+ICsJc3RydWN0IGRybV93cml0ZWJhY2tfam9iICp3cml0ZWJhY2tfam9iOwo+ID4g PiA+ICB9Owo+ID4gPiA+ICAKPiA+ID4gPiAgLyoqCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5oIGIvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgK PiA+ID4gPiBpbmRleCA3NTY5ZjIyZmZlZjYuLmMwMTJlMTE0OGVjMCAxMDA2NDQKPiA+ID4gPiAt LS0gYS9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaAo+ID4gPiA+ICsrKyBiL2luY2x1ZGUv ZHJtL2RybV9tb2RlX2NvbmZpZy5oCj4gPiA+ID4gQEAgLTc3OSw2ICs3NzksMjAgQEAgc3RydWN0 IGRybV9tb2RlX2NvbmZpZyB7Cj4gPiA+ID4gIAkgKi8KPiA+ID4gPiAgCXN0cnVjdCBkcm1fcHJv cGVydHkgKnBhbmVsX29yaWVudGF0aW9uX3Byb3BlcnR5Owo+ID4gPiA+ICAKPiA+ID4gPiArCS8q Kgo+ID4gPiA+ICsJICogQHdyaXRlYmFja19mYl9pZF9wcm9wZXJ0eTogUHJvcGVydHkgZm9yIHdy aXRlYmFjayBjb25uZWN0b3JzLCBzdG9yaW5nCj4gPiA+ID4gKwkgKiB0aGUgSUQgb2YgdGhlIG91 dHB1dCBmcmFtZWJ1ZmZlci4KPiA+ID4gPiArCSAqIFNlZSBhbHNvOiBkcm1fd3JpdGViYWNrX2Nv bm5lY3Rvcl9pbml0KCkKPiA+ID4gPiArCSAqLwo+ID4gPiA+ICsJc3RydWN0IGRybV9wcm9wZXJ0 eSAqd3JpdGViYWNrX2ZiX2lkX3Byb3BlcnR5Owo+ID4gPiA+ICsJLyoqCj4gPiA+ID4gKwkgKiBA d3JpdGViYWNrX3BpeGVsX2Zvcm1hdHNfcHJvcGVydHk6IFByb3BlcnR5IGZvciB3cml0ZWJhY2sg Y29ubmVjdG9ycywKPiA+ID4gPiArCSAqIHN0b3JpbmcgYW4gYXJyYXkgb2YgdGhlIHN1cHBvcnRl ZCBwaXhlbCBmb3JtYXRzIGZvciB0aGUgd3JpdGViYWNrCj4gPiA+ID4gKwkgKiBlbmdpbmUgKHJl YWQtb25seSkuCj4gPiA+ID4gKwkgKiBTZWUgYWxzbzogZHJtX3dyaXRlYmFja19jb25uZWN0b3Jf aW5pdCgpCj4gPiA+ID4gKwkgKi8KPiA+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKndyaXRl YmFja19waXhlbF9mb3JtYXRzX3Byb3BlcnR5Owo+ID4gPiA+ICsKPiA+ID4gPiAgCS8qIGR1bWIg aW9jdGwgcGFyYW1ldGVycyAqLwo+ID4gPiA+ICAJdWludDMyX3QgcHJlZmVycmVkX2RlcHRoLCBw cmVmZXJfc2hhZG93Owo+ID4gPiA+ICAKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX21vZGVzZXRfaGVscGVyX3Z0YWJsZXMuaCBiL2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hl bHBlcl92dGFibGVzLmgKPiA+ID4gPiBpbmRleCAzZTc2Y2E4MDViMGYuLjk3ZDNhODEwYmM4NSAx MDA2NDQKPiA+ID4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxl cy5oCj4gPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX21vZGVzZXRfaGVscGVyX3Z0YWJsZXMu aAo+ID4gPiA+IEBAIC05NzQsNiArOTc0LDE3IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBl cl9mdW5jcyB7Cj4gPiA+ID4gIAkgKi8KPiA+ID4gPiAgCWludCAoKmF0b21pY19jaGVjaykoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gPiAgCQkJICAgIHN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpzdGF0ZSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyoqCj4gPiA+ID4g KwkgKiBAYXRvbWljX2NvbW1pdDoKPiA+ID4gPiArCSAqCj4gPiA+ID4gKwkgKiBGb3Igd3JpdGUt YmFjayBjb25uZWN0b3JzLCB0aGlzIGlzIHRoZSBwb2ludCB0byBjb21taXQgdGhlIHdyaXRlLQo+ ID4gPiA+ICsJICogYmFjayBqb2IgdG8gaHcuCj4gPiA+ID4gKwkgKgo+ID4gPiA+ICsJICogVGhp cyBjYWxsYmFjayBpcyB1c2VkIGJ5IHRoZSBhdG9taWMgbW9kZXNldCBoZWxwZXJzLgo+ID4gPiA+ ICsJICovCj4gPiA+ID4gKwl2b2lkICgqYXRvbWljX2NvbW1pdCkoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwKPiA+ID4gPiArCQkJICAgICAgc3RydWN0IGRybV93cml0ZWJhY2tfam9i ICp3cml0ZWJhY2tfam9iKTsKPiA+ID4gPiAgfTsKPiA+ID4gPiAgCj4gPiA+ID4gIC8qKgo+ID4g PiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fd3JpdGViYWNrLmggYi9pbmNsdWRlL2Ry bS9kcm1fd3JpdGViYWNrLmgKPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiA+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uMGJiOTVmZDQ5MDdkCj4gPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4g PiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV93cml0ZWJhY2suaAo+ID4gPiA+IEBAIC0wLDAgKzEs ODkgQEAKPiA+ID4gPiArLyoKPiA+ID4gPiArICogKEMpIENPUFlSSUdIVCAyMDE2IEFSTSBMaW1p dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ID4gPiA+ICsgKiBBdXRob3I6IEJyaWFuIFN0YXJr ZXkgPGJyaWFuLnN0YXJrZXlAYXJtLmNvbT4KPiA+ID4gPiArICoKPiA+ID4gPiArICogVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmUgYW5kIGlzIHByb3ZpZGVkIHRvIHlvdSB1bmRlciB0aGUg dGVybXMgb2YgdGhlCj4gPiA+ID4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKPiA+ID4gPiArICogRm91bmRh dGlvbiwgYW5kIGFueSB1c2UgYnkgeW91IG9mIHRoaXMgcHJvZ3JhbSBpcyBzdWJqZWN0IHRvIHRo ZSB0ZXJtcwo+ID4gPiA+ICsgKiBvZiBzdWNoIEdOVSBsaWNlbmNlLgo+ID4gPiA+ICsgKi8KPiA+ ID4gPiArCj4gPiA+ID4gKyNpZm5kZWYgX19EUk1fV1JJVEVCQUNLX0hfXwo+ID4gPiA+ICsjZGVm aW5lIF9fRFJNX1dSSVRFQkFDS19IX18KPiA+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fY29ubmVj dG9yLmg+Cj4gPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXIuaD4KPiA+ID4gPiArI2lu Y2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgo+ID4gPiA+ICsKPiA+ID4gPiArc3RydWN0IGRybV93 cml0ZWJhY2tfY29ubmVjdG9yIHsKPiA+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yIGJhc2U7 Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyoqCj4gPiA+ID4gKwkgKiBAZW5jb2RlcjogSW50ZXJuYWwg ZW5jb2RlciB1c2VkIGJ5IHRoZSBjb25uZWN0b3IgdG8gZnVsZmlsbAo+ID4gPiA+ICsJICogdGhl IERSTSBmcmFtZXdvcmsgcmVxdWlyZW1lbnRzLiBUaGUgdXNlcnMgb2YgdGhlCj4gPiA+ID4gKwkg KiBAZHJtX3dyaXRlYmFja19jb25uZWN0b3IgY29udHJvbCB0aGUgYmVoYXZpb3VyIG9mIHRoZSBA ZW5jb2Rlcgo+ID4gPiA+ICsJICogYnkgcGFzc2luZyB0aGUgQGVuY19mdW5jcyBwYXJhbWV0ZXIg dG8gZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCgpCj4gPiA+ID4gKwkgKiBmdW5jdGlvbi4K PiA+ID4gPiArCSAqLwo+ID4gPiA+ICsJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7Cj4gPiA+ ID4gKwo+ID4gPiA+ICsJLyoqCj4gPiA+ID4gKwkgKiBAcGl4ZWxfZm9ybWF0c19ibG9iX3B0cjoK PiA+ID4gPiArCSAqCj4gPiA+ID4gKwkgKiBEUk0gYmxvYiBwcm9wZXJ0eSBkYXRhIGZvciB0aGUg cGl4ZWwgZm9ybWF0cyBsaXN0IG9uIHdyaXRlYmFjawo+ID4gPiA+ICsJICogY29ubmVjdG9ycwo+ ID4gPiA+ICsJICogU2VlIGFsc28gZHJtX3dyaXRlYmFja19jb25uZWN0b3JfaW5pdCgpCj4gPiA+ ID4gKwkgKi8KPiA+ID4gPiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqcGl4ZWxfZm9ybWF0 c19ibG9iX3B0cjsKPiA+ID4gPiArCj4gPiA+ID4gKwkvKiogQGpvYl9sb2NrOiBQcm90ZWN0cyBq b2JfcXVldWUgKi8KPiA+ID4gPiArCXNwaW5sb2NrX3Qgam9iX2xvY2s7Cj4gPiA+ID4gKwo+ID4g PiA+ICsJLyoqCj4gPiA+ID4gKwkgKiBAam9iX3F1ZXVlOgo+ID4gPiA+ICsJICoKPiA+ID4gPiAr CSAqIEhvbGRzIGEgbGlzdCBvZiBhIGNvbm5lY3RvcidzIHdyaXRlYmFjayBqb2JzOyB0aGUgbGFz dCBpdGVtIGlzIHRoZQo+ID4gPiA+ICsJICogbW9zdCByZWNlbnQuIFRoZSBmaXJzdCBpdGVtIG1h eSBiZSBlaXRoZXIgd2FpdGluZyBmb3IgdGhlIGhhcmR3YXJlCj4gPiA+ID4gKwkgKiB0byBiZWdp biB3cml0aW5nLCBvciBjdXJyZW50bHkgYmVpbmcgd3JpdHRlbi4KPiA+ID4gPiArCSAqCj4gPiA+ ID4gKwkgKiBTZWUgYWxzbzogZHJtX3dyaXRlYmFja19xdWV1ZV9qb2IoKSBhbmQKPiA+ID4gPiAr CSAqIGRybV93cml0ZWJhY2tfc2lnbmFsX2NvbXBsZXRpb24oKQo+ID4gPiA+ICsJICovCj4gPiA+ ID4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGpvYl9xdWV1ZTsKPiA+ID4gPiArfTsKPiA+ID4gPiArI2Rl ZmluZSB0b193Yl9jb25uZWN0b3IoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBkcm1fd3JpdGVi YWNrX2Nvbm5lY3RvciwgYmFzZSkKPiA+ID4gPiArCj4gPiA+ID4gK3N0cnVjdCBkcm1fd3JpdGVi YWNrX2pvYiB7Cj4gPiA+ID4gKwkvKioKPiA+ID4gPiArCSAqIEBjbGVhbnVwX3dvcms6Cj4gPiA+ ID4gKwkgKgo+ID4gPiA+ICsJICogVXNlZCB0byBhbGxvdyBkcm1fd3JpdGViYWNrX3NpZ25hbF9j b21wbGV0aW9uIHRvIGRlZmVyIGRyb3BwaW5nIHRoZQo+ID4gPiA+ICsJICogZnJhbWVidWZmZXIg cmVmZXJlbmNlIHRvIGEgd29ya3F1ZXVlLgo+ID4gPiA+ICsJICovCj4gPiA+ID4gKwlzdHJ1Y3Qg d29ya19zdHJ1Y3QgY2xlYW51cF93b3JrOwo+ID4gPiA+ICsJLyoqCj4gPiA+ID4gKwkgKiBAbGlz dF9lbnRyeToKPiA+ID4gPiArCSAqCj4gPiA+ID4gKwkgKiBMaXN0IGl0ZW0gZm9yIHRoZSBjb25u ZWN0b3IncyBAam9iX3F1ZXVlCj4gPiA+ID4gKwkgKi8KPiA+ID4gPiArCXN0cnVjdCBsaXN0X2hl YWQgbGlzdF9lbnRyeTsKPiA+ID4gPiArCS8qKgo+ID4gPiA+ICsJICogQGZiOgo+ID4gPiA+ICsJ ICoKPiA+ID4gPiArCSAqIEZyYW1lYnVmZmVyIHRvIGJlIHdyaXR0ZW4gdG8gYnkgdGhlIHdyaXRl YmFjayBjb25uZWN0b3IuIERvIG5vdCBzZXQKPiA+ID4gPiArCSAqIGRpcmVjdGx5LCB1c2UgZHJt X2F0b21pY19zZXRfd3JpdGViYWNrX2ZiX2Zvcl9jb25uZWN0b3IoKQo+ID4gPiA+ICsJICovCj4g PiA+ID4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPiA+ID4gPiArfTsKPiA+ID4gPiAr Cj4gPiA+ID4gK2ludCBkcm1fd3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gPiA+ID4gKwkJCQkgc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICp3 Yl9jb25uZWN0b3IsCj4gPiA+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVu Y3MgKmNvbl9mdW5jcywKPiA+ID4gPiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVs cGVyX2Z1bmNzICplbmNfaGVscGVyX2Z1bmNzLAo+ID4gPiA+ICsJCQkJIGNvbnN0IHUzMiAqZm9y bWF0cywgaW50IG5fZm9ybWF0cyk7Cj4gPiA+ID4gKwo+ID4gPiA+ICt2b2lkIGRybV93cml0ZWJh Y2tfcXVldWVfam9iKHN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9y LAo+ID4gPiA+ICsJCQkgICAgIHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iKTsKPiA+ID4g PiArCj4gPiA+ID4gK3ZvaWQgZHJtX3dyaXRlYmFja19jbGVhbnVwX2pvYihzdHJ1Y3QgZHJtX3dy aXRlYmFja19qb2IgKmpvYik7Cj4gPiA+ID4gK3ZvaWQgZHJtX3dyaXRlYmFja19zaWduYWxfY29t cGxldGlvbihzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKndiX2Nvbm5lY3Rvcik7Cj4g PiA+ID4gKyNlbmRpZgo+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybV9t b2RlLmggYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPiA+ID4gPiBpbmRleCAyYzU3NTc5 NGZiNTIuLjdiNDdlMTg0ZTk1ZSAxMDA2NDQKPiA+ID4gPiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJt L2RybV9tb2RlLmgKPiA+ID4gPiArKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPiA+ ID4gPiBAQCAtMzM4LDYgKzMzOCw3IEBAIGVudW0gZHJtX21vZGVfc3ViY29ubmVjdG9yIHsKPiA+ ID4gPiAgI2RlZmluZSBEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCAgICAgIDE1Cj4gPiA+ID4g ICNkZWZpbmUgRFJNX01PREVfQ09OTkVDVE9SX0RTSQkJMTYKPiA+ID4gPiAgI2RlZmluZSBEUk1f TU9ERV9DT05ORUNUT1JfRFBJCQkxNwo+ID4gPiA+ICsjZGVmaW5lIERSTV9NT0RFX0NPTk5FQ1RP Ul9XUklURUJBQ0sJMTgKPiA+ID4gPiAgCj4gPiA+ID4gIHN0cnVjdCBkcm1fbW9kZV9nZXRfY29u bmVjdG9yIHsKPiA+ID4gPiAgCj4gPiA+ID4gLS0gCj4gPiA+ID4gMi4xNC4zCj4gPiA+ID4gCj4g PiA+IAo+ID4gPiAtLSAKPiA+ID4gU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xl IC8gQ2hyb21pdW0gT1MKPiA+IAo+ID4gLS0gCj4gPiA9PT09PT09PT09PT09PT09PT09PQo+ID4g fCBJIHdvdWxkIGxpa2UgdG8gfAo+ID4gfCBmaXggdGhlIHdvcmxkLCAgfAo+ID4gfCBidXQgdGhl eSdyZSBub3QgfAo+ID4gfCBnaXZpbmcgbWUgdGhlICAgfAo+ID4gIFwgc291cmNlIGNvZGUhICAv Cj4gPiAgIC0tLS0tLS0tLS0tLS0tLQo+ID4gICAgIMKvXF8o44OEKV8vwq8KPiAKPiAtLSAKPiBT ZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwoKLS0gCj09 PT09PT09PT09PT09PT09PT09CnwgSSB3b3VsZCBsaWtlIHRvIHwKfCBmaXggdGhlIHdvcmxkLCAg fAp8IGJ1dCB0aGV5J3JlIG5vdCB8CnwgZ2l2aW5nIG1lIHRoZSAgIHwKIFwgc291cmNlIGNvZGUh ICAvCiAgLS0tLS0tLS0tLS0tLS0tCiAgICDCr1xfKOODhClfL8KvCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJl ZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=