From mboxrd@z Thu Jan 1 00:00:00 1970 From: chandanu-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Subject: Re: [DPU PATCH 2/3] drm/msm/dp: add displayPort driver support Date: Sat, 09 Mar 2019 19:52:22 -0800 Message-ID: <440c758ad73af278d0c63bdf9b372ced@codeaurora.org> References: <1539191759-14836-1-git-send-email-chandanu@codeaurora.org> <1539191759-14836-3-git-send-email-chandanu@codeaurora.org> <20181023162821.GE154160@art_vandelay> <03cce7603e8e65a88d08d9f3558019ac@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <03cce7603e8e65a88d08d9f3558019ac-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gMjAxOS0wMi0xNCAwNDoyOCwgY2hhbmRhbnVAY29kZWF1cm9yYS5vcmcgd3JvdGU6CkhlbGxv IFNlYW4KSSBoYWQgZmV3IG1vcmUgcXVlcmllcyByZWdhcmRpbmcgeW91ciBjb21tZW50cy4gQ2Fu IHlvdSBwbGVhc2UgcHJvdmlkZSAKeW91ciBmZWVkYmFjaz8gKFF1ZXJpZXMvcmVzcG9uc2VzIGFy ZSBwcmVzZW50IGJlbG93KQoKdGhhbmtzCkNoYW5kYW4KCj4gT24gMjAxOC0xMC0yMyAwOToyOCwg U2VhbiBQYXVsIHdyb3RlOgo+PiBPbiBXZWQsIE9jdCAxMCwgMjAxOCBhdCAxMDoxNTo1OEFNIC0w NzAwLCBDaGFuZGFuIFVkZGFyYWp1IHdyb3RlOgo+Pj4gQWRkIHRoZSBuZWVkZWQgZGlzcGxheVBv cnQgZmlsZXMgdG8gZW5hYmxlIERQIGRyaXZlcgo+Pj4gb24gbXNtIHRhcmdldC4KPj4+IAo+Pj4g ImRwX2Rpc3BsYXkiIG1vZHVsZSBpcyB0aGUgbWFpbiBtb2R1bGUgdGhhdCBjYWxscyBpbnRvCj4+ PiBvdGhlciBzdWItbW9kdWxlcy4gImRwX2RybSIgZmlsZSByZXByZXNlbnRzIHRoZSBpbnRlcmZh Y2UKPj4+IGJldHdlZW4gRFJNIGZyYW1ld29yayBhbmQgRFAgZHJpdmVyLgo+Pj4gCj4+IAo+IAo+ IEhlbGxvIFNlYW4sCj4gSSBoYXZlIHJlc3BvbmRlZCB0byBhbGwgb2YgeW91ciBjb21tZW50cyBh bmQgcXVlcmllcy4gSSBoYXZlIHNwZWNpZmllZAo+IHRoZSBjb21tZW50cyBhZGRyZXNzZWQKPiBp biBWMiBwYXRjaCBzZXJpZXMgYW5kIHdoYXQgSSBoYXZlIG1pc3NlZCB0aGF0IHdpbGwgYmUgZml4 ZWQgaW4gVjMuCj4gCj4gCj4+IEhpIENoYW5kYW4sCj4+IEEgZmV3IHRoZW1lcyB3aGljaCBJJ3Zl IHBvaW50ZWQgb3V0IGJlbG93LCBidXQgd2FudCB0byBjYWxsIG91dCBhdCB0aGUgCj4+IHRvcCBz bwo+PiBpdCdzIG9idmlvdXMuCj4+IAo+PiAtIFBsZWFzZSByZW1vdmUgYWxsIHN1cGVyZmx1b3Vz IE5VTEwgY2hlY2tzIGF0IHRoZSBiZWdpbm5pbmcgb2YgCj4+IGZ1bmN0aW9ucy4KPj4gICBJbmNs dWRlZCBpbiB0aGlzIGlzIHJlZmxvd2luZyBpbml0aWFsaXphdGlvbiBvZiB2YXJpYWJsZXMgYW5k IAo+PiBjaGVja2luZyB0aGF0Cj4+ICAgcmV0dXJuIHR5cGVzIHN0aWxsIG1ha2Ugc2Vuc2UgKGll OiBpZiBhIGZ1bmN0aW9uJ3Mgb25seSBlcnJvciBwYXRoIAo+PiBpcyB0aGUgTlVMTAo+PiAgIGNo ZWNrLCBtYWtlIGl0IHZvaWQpLgo+PiAtIFBsZWFzZSByZW1vdmUgYWxsIG9mIHRoZSBuZXcgY2Fs bGJhY2tzIGFuZCBqdXN0IGNhbGwgZnVuY3Rpb25zIAo+PiBkaXJlY3RseS4gVGhpcwo+PiAgIHNo b3VsZCBhbHNvIGdldCByaWQgb2YgdGhlIF9nZXQvX3B1dCBmdW5jdGlvbnMgdGhhdCBhbGxvY2F0 ZS9zZXQgCj4+IHRoZW0gdXAKPj4gLSBQbGVhc2UgY29uc29saWRhdGUgc3RhdGUgc3RydWN0cyBp bnRvIG9uZSBzdHJ1Y3Qgd2l0aCBhIGZldyAKPj4gc3Vic3RydWN0cywKPj4gICB0aGVyZSdzIHRv byBtdWNoIHN0YXRlIHJpZ2h0IG5vdy4KPj4gLSBQbGVhc2UgI2RlZmluZSBoYXJkY29kZWQgdmFs dWVzCj4+IC0gSW5zdGVhZCBvZiBzcHJpbmtsaW5nIHdtYigpIGV2ZXJ5d2hlcmUsIHVzZSByZWFk bC93cml0ZWwgaW5zdGVhZCBvZiAKPj4gKl9yZWxheGVkCj4+IC0gVGhlcmUgYXJlIGEgYnVuY2gg b2YgcmFjZXMgdGhhdCBJIGZvdW5kLCBwbGVhc2UgYXVkaXQgdGhlIGNvZGUgYW5kIAo+PiByZW1v dmUKPj4gICByYWNlcyB3aXRoIGxvY2tzIGFzIG5lY2Vzc2FyeQo+PiAtIEkgdHJpZWQgdG8gY2F0 Y2ggYXMgbXVjaCBkZWFkIGNvZGUgYXMgcG9zc2libGUsIHBsZWFzZSBhdWRpdCB0aGUgCj4+IHJl c3QgZm9yCj4+ICAgdW51c2VkIHN0cnVjdHMvdmFyaWFibGVzL2Z1bmN0aW9ucy9ldGMKPj4gLSBV c2UgZHJtIGRwIGhlbHBlciBzdHJ1Y3RzIGZvciBsaW5rIHBhcmFtZXRlciBzdG9yYWdlCj4+IAo+ PiAKPj4+IFNpZ25lZC1vZmYtYnk6IENoYW5kYW4gVWRkYXJhanUgPGNoYW5kYW51QGNvZGVhdXJv cmEub3JnPgo+Pj4gLS0tCj4+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9LY29uZmlnICAgICAgICAg ICAgICAgICB8ICAgIDkgKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgICAgICAg ICAgICAgICAgfCAgIDE1ICstCj4+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2lvX3V0aWwuYyB8ICAyMDYgKysrKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9pb191dGlsLmggfCAgIDQ0ICsKPj4+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1 eC5jICAgICAgICAgICAgIHwgIDU3MCArKysrKysrKysrCj4+PiAgZHJpdmVycy9ncHUvZHJtL21z bS9kcC9kcF9hdXguaCAgICAgICAgICAgICB8ICAgNDQgKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9t c20vZHAvZHBfY2F0YWxvZy5jICAgICAgICAgfCAxMTg4IAo+Pj4gKysrKysrKysrKysrKysrKysr KysKPj4+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2NhdGFsb2cuaCAgICAgICAgIHwgIDE0 NCArKysKPj4+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2N0cmwuYyAgICAgICAgICAgIHwg MTQ3NSAKPj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ICBkcml2ZXJzL2dwdS9kcm0v bXNtL2RwL2RwX2N0cmwuaCAgICAgICAgICAgIHwgICA1MCArCj4+PiAgZHJpdmVycy9ncHUvZHJt L21zbS9kcC9kcF9kZWJ1Zy5jICAgICAgICAgICB8ICA1MDcgKysrKysrKysrCj4+PiAgZHJpdmVy cy9ncHUvZHJtL21zbS9kcC9kcF9kZWJ1Zy5oICAgICAgICAgICB8ICAgODEgKysKPj4+ICBkcml2 ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2Rpc3BsYXkuYyAgICAgICAgIHwgIDk3NyArKysrKysrKysr KysrKysrKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfZGlzcGxheS5oICAgICAgICAg fCAgIDU1ICsKPj4+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2RybS5jICAgICAgICAgICAg IHwgIDU0MiArKysrKysrKysrCj4+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9kcm0uaCAg ICAgICAgICAgICB8ICAgNTIgKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfZXh0Y29u LmMgICAgICAgICAgfCAgNDAwICsrKysrKysKPj4+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2Rw X2V4dGNvbi5oICAgICAgICAgIHwgIDExMSArKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZHAv ZHBfbGluay5jICAgICAgICAgICAgfCAxNTQ5IAo+Pj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9saW5rLmggICAgICAgICAgICB8ICAx ODQgKysrKwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfcGFuZWwuYyAgICAgICAgICAg fCAgNjI0ICsrKysrKysrKysrCj4+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wYW5lbC5o ICAgICAgICAgICB8ICAxMjEgKysrCj4+PiAgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9wYXJz ZXIuYyAgICAgICAgICB8ICA2NzkgKysrKysrKysrKysrCj4+PiAgZHJpdmVycy9ncHUvZHJtL21z bS9kcC9kcF9wYXJzZXIuaCAgICAgICAgICB8ICAyMDUgKysrKwo+Pj4gIGRyaXZlcnMvZ3B1L2Ry bS9tc20vZHAvZHBfcG93ZXIuYyAgICAgICAgICAgfCAgNTk5ICsrKysrKysrKysrCj4+PiAgZHJp dmVycy9ncHUvZHJtL21zbS9kcC9kcF9wb3dlci5oICAgICAgICAgICB8ICAgNTcgKwo+Pj4gIGRy aXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfcmVnLmggICAgICAgICAgICAgfCAgMzU3ICsrKysrKwo+ Pj4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jICAgICAgICAgICAgICAgfCAgICAyICsK Pj4+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCAgICAgICAgICAgICAgIHwgICAyMiAr Cj4+PiAgaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAgICAgICAgICAgICB8ICAgMTkg Kwo+Pj4gIDMwIGZpbGVzIGNoYW5nZWQsIDEwODg3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24o LSkKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9hdXgu Ywo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2RwX2F1eC5o Cj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfY2F0YWxv Zy5jCj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfY2F0 YWxvZy5oCj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBf Y3RybC5jCj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBf Y3RybC5oCj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBf ZGVidWcuYwo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL2RwL2Rw X2RlYnVnLmgKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kcC9k cF9kaXNwbGF5LmMKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9k cC9kcF9kaXNwbGF5LmgKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21z bS9kcC9kcF9kcm0uYwo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNt L2RwL2RwX2RybS5oCj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20v ZHAvZHBfZXh0Y29uLmMKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21z bS9kcC9kcF9leHRjb24uaAo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v bXNtL2RwL2RwX2xpbmsuYwo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v bXNtL2RwL2RwX2xpbmsuaAo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v bXNtL2RwL2RwX3BhbmVsLmMKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L21zbS9kcC9kcF9wYW5lbC5oCj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9tc20vZHAvZHBfcGFyc2VyLmMKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL21zbS9kcC9kcF9wYXJzZXIuaAo+Pj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vbXNtL2RwL2RwX3Bvd2VyLmMKPj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL21zbS9kcC9kcF9wb3dlci5oCj4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9tc20vZHAvZHBfcmVnLmgKPj4+IAoKPj4gCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9kcC9kcF9jYXRhbG9nLmMgCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZHAvZHBfY2F0YWxvZy5jCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4gaW5kZXggMDAwMDAw MC4uNTgxODYxMgo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kcC9kcF9jYXRhbG9nLmMKPj4+IEBAIC0wLDAgKzEsMTE4OCBAQAo+Pj4gKy8qCj4+PiArICog Q29weXJpZ2h0IChjKSAyMDE3LTIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRz IAo+Pj4gcmVzZXJ2ZWQuCj4+PiArICoKPj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIAo+Pj4gbW9kaWZ5Cj4+PiArICog aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIgCj4+PiBhbmQKPj4+ICsgKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KPj4+ICsgKgo+Pj4gKyAqIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+Pj4gKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCj4+PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQo+Pj4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCj4+PiArICoKPj4+ICsgKi8KPj4+ICsKPj4+ICsjZGVmaW5lIHByX2Zt dChmbXQpCSJbZHJtLWRwXSAlczogIiBmbXQsIF9fZnVuY19fCj4+PiArCj4+PiArI2luY2x1ZGUg PGxpbnV4L2RlbGF5Lmg+Cj4+PiArI2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+Cj4+PiAr Cj4+PiArI2luY2x1ZGUgImRwX2NhdGFsb2cuaCIKPj4+ICsjaW5jbHVkZSAiZHBfcmVnLmgiCj4+ PiArCj4+PiArI2RlZmluZSBEUF9HRVRfTVNCKHgpCSh4ID4+IDgpCj4+PiArI2RlZmluZSBEUF9H RVRfTFNCKHgpCSh4ICYgMHhmZikKPj4gCj4+IFRoZXNlIGFyZW4ndCB1c2VkIGFueXdoZXJlCj4+ IAo+IEZpeGVkIGluIFYyLgo+IAo+Pj4gKwo+Pj4gKyNkZWZpbmUgZHBfcmVhZChvZmZzZXQpIHJl YWRsX3JlbGF4ZWQoKG9mZnNldCkpCj4+PiArI2RlZmluZSBkcF93cml0ZShvZmZzZXQsIGRhdGEp IHdyaXRlbF9yZWxheGVkKChkYXRhKSwgKG9mZnNldCkpCj4+IAo+PiBUaGVzZSBtYWNyb3MgYXJl bid0IHVzZWZ1bC4gSSB0aGluayB5b3UnZCBiZSBtdWNoIGJldHRlciBoYXZpbmcgYSAKPj4gcmVh ZF8vd3JpdGVfCj4+IGZvciB0aGUgZGlmZmVyZW50IGlvIHR5cGVzLCBpZToKPj4gCj4+IHN0YXRp YyBpbmxpbmUgdTMyIGRwX3JlYWRfYXVkaW8oc3RydWN0IGRwX2NhdGFsb2cgKmNhdGFsb2csIHUz MiAKPj4gb2Zmc2V0KQo+PiB7Cj4+ICAgICAgICAgcmV0dXJuIHJlYWRsX3JlbGF4ZWQoY2F0YWxv Zy0+aW8tPmRwX2xpbmsuYmFzZSArIG9mZnNldCk7Cj4+IH0KPj4gCj4+IFRoZW4geW91IGNhbiBy ZW1vdmUgYSB0b24gb2YgYm9pbGVycGxhdGUgY29kZSBiZWxvdyBnZXR0aW5nIGJhc2U7Cj4gCj4g Rml4ZWQgaW4gVjIuCj4gCj4+IAo+Pj4gKwo+Pj4gKyNkZWZpbmUgZHBfY2F0YWxvZ19nZXRfcHJp dih4KSB7IFwKPj4gCj4+IHN0YXRpYyBpbmxpbmUgc3RydWN0IGRwX2NhdGFsb2dfcHJpdmF0ZSAq ZHBfY2F0YWxvZ19nZXRfcHJpdiguLi4pCj4+IHsKPj4gICAgICAgICAuLi4KPj4gfQo+PiAKPiBG b3IgaW5saW5lLCB3ZSBoYXZlIHRvIHVzZSAzIGRpZmZlcmVudCBmdW5jdGlvbnMgKG9uZSBlYWNo IGZvciBhdXgsCj4gY3RybCBhbmQgcGFuZWwpLgo+IExvb2tpbmcgYXQgInR5cGUtY2hlY2tpbmci IHcuci50IG1hY3JvLCBjb250YWluZXJfb2Ygd2lsbCB0aHJvdWdoIGFuCj4gZXJyb3IgaWYgaXRz IG5vdCB2YWxpZCBwb2ludGVyLgo+IFBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3Ugc3RpbGwgd2Fu dCB0byBjaGFuZ2UgdGhpcyBtYWNybyB0byBpbmxpbmUgCj4gZnVuYy4KPiAKCgovc25pcAoKCj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9jYXRhbG9nLmggCj4+PiBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZHAvZHBfY2F0YWxvZy5oCj4+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+Pj4gaW5kZXggMDAwMDAwMC4uNTg5NTFkZgo+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcC9kcF9jYXRhbG9nLmgKPj4+IEBAIC0wLDAgKzEsMTQ0 IEBACj4+PiArLyoKPj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAxOCwgVGhlIExpbnV4IEZv dW5kYXRpb24uIEFsbCByaWdodHMgCj4+PiByZXNlcnZlZC4KPj4+ICsgKgo+Pj4gKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig Cj4+PiBtb2RpZnkKPj4+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiAKPj4+IGFuZAo+Pj4gKyAqIG9ubHkgdmVyc2lvbiAy IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+Pj4gKyAqCj4+ PiArICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCj4+PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4+PiArICogR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPj4+ICsgKgo+Pj4gKyAqLwo+Pj4g Kwo+Pj4gKyNpZm5kZWYgX0RQX0NBVEFMT0dfSF8KPj4+ICsjZGVmaW5lIF9EUF9DQVRBTE9HX0hf Cj4+PiArCj4+PiArI2luY2x1ZGUgImRwX3BhcnNlci5oIgo+Pj4gKwo+Pj4gKy8qIGludGVycnVw dHMgKi8KPj4+ICsjZGVmaW5lIERQX0lOVFJfSFBECQlCSVQoMCkKPj4+ICsjZGVmaW5lIERQX0lO VFJfQVVYX0kyQ19ET05FCUJJVCgzKQo+Pj4gKyNkZWZpbmUgRFBfSU5UUl9XUk9OR19BRERSCUJJ VCg2KQo+Pj4gKyNkZWZpbmUgRFBfSU5UUl9USU1FT1VUCQlCSVQoOSkKPj4+ICsjZGVmaW5lIERQ X0lOVFJfTkFDS19ERUZFUglCSVQoMTIpCj4+PiArI2RlZmluZSBEUF9JTlRSX1dST05HX0RBVEFf Q05UCUJJVCgxNSkKPj4+ICsjZGVmaW5lIERQX0lOVFJfSTJDX05BQ0sJQklUKDE4KQo+Pj4gKyNk ZWZpbmUgRFBfSU5UUl9JMkNfREVGRVIJQklUKDIxKQo+Pj4gKyNkZWZpbmUgRFBfSU5UUl9QTExf VU5MT0NLRUQJQklUKDI0KQo+Pj4gKyNkZWZpbmUgRFBfSU5UUl9BVVhfRVJST1IJQklUKDI3KQo+ Pj4gKwo+Pj4gKyNkZWZpbmUgRFBfSU5UUl9SRUFEWV9GT1JfVklERU8JCUJJVCgwKQo+Pj4gKyNk ZWZpbmUgRFBfSU5UUl9JRExFX1BBVFRFUk5fU0VOVAlCSVQoMykKPj4+ICsjZGVmaW5lIERQX0lO VFJfRlJBTUVfRU5ECQlCSVQoNikKPj4+ICsjZGVmaW5lIERQX0lOVFJfQ1JDX1VQREFURUQJCUJJ VCg5KQo+Pj4gKwo+Pj4gK3N0cnVjdCBkcF9jYXRhbG9nX2F1eCB7Cj4+PiArCXUzMiBkYXRhOwo+ Pj4gKwl1MzIgaXNyOwo+Pj4gKwo+Pj4gKwl1MzIgKCpyZWFkX2RhdGEpKHN0cnVjdCBkcF9jYXRh bG9nX2F1eCAqYXV4KTsKPj4+ICsJaW50ICgqd3JpdGVfZGF0YSkoc3RydWN0IGRwX2NhdGFsb2df YXV4ICphdXgpOwo+Pj4gKwlpbnQgKCp3cml0ZV90cmFucykoc3RydWN0IGRwX2NhdGFsb2dfYXV4 ICphdXgpOwo+Pj4gKwlpbnQgKCpjbGVhcl90cmFucykoc3RydWN0IGRwX2NhdGFsb2dfYXV4ICph dXgsIGJvb2wgcmVhZCk7Cj4+PiArCXZvaWQgKCpyZXNldCkoc3RydWN0IGRwX2NhdGFsb2dfYXV4 ICphdXgpOwo+Pj4gKwl2b2lkICgqZW5hYmxlKShzdHJ1Y3QgZHBfY2F0YWxvZ19hdXggKmF1eCwg Ym9vbCBlbmFibGUpOwo+Pj4gKwl2b2lkICgqdXBkYXRlX2F1eF9jZmcpKHN0cnVjdCBkcF9jYXRh bG9nX2F1eCAqYXV4LAo+Pj4gKwkJc3RydWN0IGRwX2F1eF9jZmcgKmNmZywgZW51bSBkcF9waHlf YXV4X2NvbmZpZ190eXBlIHR5cGUpOwo+Pj4gKwl2b2lkICgqc2V0dXApKHN0cnVjdCBkcF9jYXRh bG9nX2F1eCAqYXV4LAo+Pj4gKwkJCXN0cnVjdCBkcF9hdXhfY2ZnICphdXhfY2ZnKTsKPj4+ICsJ dm9pZCAoKmdldF9pcnEpKHN0cnVjdCBkcF9jYXRhbG9nX2F1eCAqYXV4LCBib29sIGNtZF9idXN5 KTsKPj4+ICt9Owo+Pj4gKwo+Pj4gK3N0cnVjdCBkcF9jYXRhbG9nX2N0cmwgewo+Pj4gKwl1MzIg ZHBfdHU7Cj4+PiArCXUzMiB2YWxpZF9ib3VuZGFyeTsKPj4+ICsJdTMyIHZhbGlkX2JvdW5kYXJ5 MjsKPj4+ICsJdTMyIGlzcjsKPj4+ICsKPj4+ICsJdm9pZCAoKnN0YXRlX2N0cmwpKHN0cnVjdCBk cF9jYXRhbG9nX2N0cmwgKmN0cmwsIHUzMiBzdGF0ZSk7Cj4+PiArCXZvaWQgKCpjb25maWdfY3Ry bCkoc3RydWN0IGRwX2NhdGFsb2dfY3RybCAqY3RybCwgdTMyIGNvbmZpZyk7Cj4+PiArCXZvaWQg KCpsYW5lX21hcHBpbmcpKHN0cnVjdCBkcF9jYXRhbG9nX2N0cmwgKmN0cmwpOwo+Pj4gKwl2b2lk ICgqbWFpbmxpbmtfY3RybCkoc3RydWN0IGRwX2NhdGFsb2dfY3RybCAqY3RybCwgYm9vbCBlbmFi bGUpOwo+Pj4gKwl2b2lkICgqY29uZmlnX21pc2MpKHN0cnVjdCBkcF9jYXRhbG9nX2N0cmwgKmN0 cmwsIHUzMiBjYywgdTMyIHRiKTsKPj4+ICsJdm9pZCAoKmNvbmZpZ19tc2EpKHN0cnVjdCBkcF9j YXRhbG9nX2N0cmwgKmN0cmwsIHUzMiByYXRlLAo+Pj4gKwkJCQl1MzIgc3RyZWFtX3JhdGVfa2h6 LCBib29sIGZpeGVkX252aWQpOwo+Pj4gKwl2b2lkICgqc2V0X3BhdHRlcm4pKHN0cnVjdCBkcF9j YXRhbG9nX2N0cmwgKmN0cmwsIHUzMiBwYXR0ZXJuKTsKPj4+ICsJdm9pZCAoKnJlc2V0KShzdHJ1 Y3QgZHBfY2F0YWxvZ19jdHJsICpjdHJsKTsKPj4+ICsJdm9pZCAoKnVzYl9yZXNldCkoc3RydWN0 IGRwX2NhdGFsb2dfY3RybCAqY3RybCwgYm9vbCBmbGlwKTsKPj4+ICsJYm9vbCAoKm1haW5saW5r X3JlYWR5KShzdHJ1Y3QgZHBfY2F0YWxvZ19jdHJsICpjdHJsKTsKPj4+ICsJdm9pZCAoKmVuYWJs ZV9pcnEpKHN0cnVjdCBkcF9jYXRhbG9nX2N0cmwgKmN0cmwsIGJvb2wgZW5hYmxlKTsKPj4+ICsJ dm9pZCAoKmhwZF9jb25maWcpKHN0cnVjdCBkcF9jYXRhbG9nX2N0cmwgKmN0cmwsIGJvb2wgZW5h YmxlKTsKPj4+ICsJdm9pZCAoKnBoeV9yZXNldCkoc3RydWN0IGRwX2NhdGFsb2dfY3RybCAqY3Ry bCk7Cj4+PiArCXZvaWQgKCpwaHlfbGFuZV9jZmcpKHN0cnVjdCBkcF9jYXRhbG9nX2N0cmwgKmN0 cmwsIGJvb2wgZmxpcHBlZCwKPj4+ICsJCQkJdTggbGFuZV9jbnQpOwo+Pj4gKwl2b2lkICgqdXBk YXRlX3Z4X3B4KShzdHJ1Y3QgZHBfY2F0YWxvZ19jdHJsICpjdHJsLCB1OCB2X2xldmVsLAo+Pj4g KwkJCQl1OCBwX2xldmVsKTsKPj4+ICsJdm9pZCAoKmdldF9pbnRlcnJ1cHQpKHN0cnVjdCBkcF9j YXRhbG9nX2N0cmwgKmN0cmwpOwo+Pj4gKwl2b2lkICgqdXBkYXRlX3RyYW5zZmVyX3VuaXQpKHN0 cnVjdCBkcF9jYXRhbG9nX2N0cmwgKmN0cmwpOwo+Pj4gKwl2b2lkICgqc2VuZF9waHlfcGF0dGVy bikoc3RydWN0IGRwX2NhdGFsb2dfY3RybCAqY3RybCwKPj4+ICsJCQl1MzIgcGF0dGVybik7Cj4+ PiArCXUzMiAoKnJlYWRfcGh5X3BhdHRlcm4pKHN0cnVjdCBkcF9jYXRhbG9nX2N0cmwgKmN0cmwp Owo+Pj4gK307Cj4+PiArCj4+PiArZW51bSBkcF9jYXRhbG9nX2F1ZGlvX3NkcF90eXBlIHsKPj4+ ICsJRFBfQVVESU9fU0RQX1NUUkVBTSwKPj4+ICsJRFBfQVVESU9fU0RQX1RJTUVTVEFNUCwKPj4+ ICsJRFBfQVVESU9fU0RQX0lORk9GUkFNRSwKPj4+ICsJRFBfQVVESU9fU0RQX0NPUFlNQU5BR0VN RU5ULAo+Pj4gKwlEUF9BVURJT19TRFBfSVNSQywKPj4+ICsJRFBfQVVESU9fU0RQX01BWCwKPj4+ ICt9Owo+Pj4gKwo+Pj4gK2VudW0gZHBfY2F0YWxvZ19hdWRpb19oZWFkZXJfdHlwZSB7Cj4+PiAr CURQX0FVRElPX1NEUF9IRUFERVJfMSwKPj4+ICsJRFBfQVVESU9fU0RQX0hFQURFUl8yLAo+Pj4g KwlEUF9BVURJT19TRFBfSEVBREVSXzMsCj4+PiArCURQX0FVRElPX1NEUF9IRUFERVJfTUFYLAo+ Pj4gK307Cj4+PiArCj4+PiArc3RydWN0IGRwX2NhdGFsb2dfYXVkaW8gewo+Pj4gKwllbnVtIGRw X2NhdGFsb2dfYXVkaW9fc2RwX3R5cGUgc2RwX3R5cGU7Cj4+PiArCWVudW0gZHBfY2F0YWxvZ19h dWRpb19oZWFkZXJfdHlwZSBzZHBfaGVhZGVyOwo+Pj4gKwl1MzIgZGF0YTsKPj4+ICsKPj4+ICsJ dm9pZCAoKmluaXQpKHN0cnVjdCBkcF9jYXRhbG9nX2F1ZGlvICphdWRpbyk7Cj4+PiArCXZvaWQg KCplbmFibGUpKHN0cnVjdCBkcF9jYXRhbG9nX2F1ZGlvICphdWRpbyk7Cj4+PiArCXZvaWQgKCpj b25maWdfYWNyKShzdHJ1Y3QgZHBfY2F0YWxvZ19hdWRpbyAqYXVkaW8pOwo+Pj4gKwl2b2lkICgq Y29uZmlnX3NkcCkoc3RydWN0IGRwX2NhdGFsb2dfYXVkaW8gKmF1ZGlvKTsKPj4+ICsJdm9pZCAo KnNldF9oZWFkZXIpKHN0cnVjdCBkcF9jYXRhbG9nX2F1ZGlvICphdWRpbyk7Cj4+PiArCXZvaWQg KCpnZXRfaGVhZGVyKShzdHJ1Y3QgZHBfY2F0YWxvZ19hdWRpbyAqYXVkaW8pOwo+Pj4gKwl2b2lk ICgqc2FmZV90b19leGl0X2xldmVsKShzdHJ1Y3QgZHBfY2F0YWxvZ19hdWRpbyAqYXVkaW8pOwo+ PiAKPj4gTm9uZSBvZiB0aGVzZSBhcmUgY2FsbGVkPyBTbyBnZXQgcmlkIG9mIHRoaXMgZW50aXJl IHN0cnVjdHVyZSwgdGhlIAo+PiBmdW5jdGlvbnMKPj4gdGhhdCBhcmVuJ3QgY2FsbGVkLCBhbmQg dGhlIGF1ZGlvIGVudW1zIGFib3ZlLgo+PiAKPiBSZW1vdmVkIGFsbCB0aGUgQXVkaW8gcmVsYXRl ZCBBUElzIGluIFYyLgo+IAo+Pj4gK307Cj4+PiArCj4+PiArc3RydWN0IGRwX2NhdGFsb2dfcGFu ZWwgewo+Pj4gKwl1MzIgdG90YWw7Cj4+PiArCXUzMiBzeW5jX3N0YXJ0Owo+Pj4gKwl1MzIgd2lk dGhfYmxhbmtpbmc7Cj4+PiArCXUzMiBkcF9hY3RpdmU7Cj4+PiArCj4+PiArCS8qIFRQRyAqLwo+ Pj4gKwl1MzIgaHN5bmNfcGVyaW9kOwo+Pj4gKwl1MzIgdnN5bmNfcGVyaW9kOwo+Pj4gKwl1MzIg ZGlzcGxheV92X3N0YXJ0Owo+Pj4gKwl1MzIgZGlzcGxheV92X2VuZDsKPj4+ICsJdTMyIHZfc3lu Y193aWR0aDsKPj4+ICsJdTMyIGhzeW5jX2N0bDsKPj4+ICsJdTMyIGRpc3BsYXlfaGN0bDsKPj4g Cj4+IEFsbCBvZiB0aGlzIGluZm9ybWF0aW9uIGlzIGFscmVhZHkgYXZhaWxhYmxlIGZyb20gZHJt IGNvcmUsIHNvIGl0IGNhbiAKPj4gZ28uCj4gCj4gV2lsbCBhZGRyZXNzIHRoaXMgaW4gVjMuCj4g CgoKL3NuaXAKCj4+PiArCj4+PiArc3RhdGljIHZvaWQgZHBfY3RybF9zZXR1cF90cl91bml0KHN0 cnVjdCBkcF9jdHJsX3ByaXZhdGUgKmN0cmwpCj4+PiArewo+Pj4gKwl1MzIgZHBfdHUgPSAweDA7 Cj4+PiArCXUzMiB2YWxpZF9ib3VuZGFyeSA9IDB4MDsKPj4+ICsJdTMyIHZhbGlkX2JvdW5kYXJ5 MiA9IDB4MDsKPj4+ICsJc3RydWN0IGRwX3ZjX3R1X21hcHBpbmdfdGFibGUgdHVfY2FsY190YWJs ZTsKPj4+ICsKPj4+ICsJZHBfY3RybF9jYWxjX3R1X3BhcmFtZXRlcnMoY3RybCwgJnR1X2NhbGNf dGFibGUpOwo+Pj4gKwo+Pj4gKwlkcF90dSB8PSB0dV9jYWxjX3RhYmxlLnR1X3NpemVfbWludXMx Owo+Pj4gKwl2YWxpZF9ib3VuZGFyeSB8PSB0dV9jYWxjX3RhYmxlLnZhbGlkX2JvdW5kYXJ5X2xp bms7Cj4+PiArCXZhbGlkX2JvdW5kYXJ5IHw9ICh0dV9jYWxjX3RhYmxlLmRlbGF5X3N0YXJ0X2xp bmsgPDwgMTYpOwo+Pj4gKwo+Pj4gKwl2YWxpZF9ib3VuZGFyeTIgfD0gKHR1X2NhbGNfdGFibGUu dmFsaWRfbG93ZXJfYm91bmRhcnlfbGluayA8PCAxKTsKPj4+ICsJdmFsaWRfYm91bmRhcnkyIHw9 ICh0dV9jYWxjX3RhYmxlLnVwcGVyX2JvdW5kYXJ5X2NvdW50IDw8IDE2KTsKPj4+ICsJdmFsaWRf Ym91bmRhcnkyIHw9ICh0dV9jYWxjX3RhYmxlLmxvd2VyX2JvdW5kYXJ5X2NvdW50IDw8IDIwKTsK Pj4+ICsKPj4+ICsJaWYgKHR1X2NhbGNfdGFibGUuYm91bmRhcnlfbW9kZXJhdGlvbl9lbikKPj4+ ICsJCXZhbGlkX2JvdW5kYXJ5MiB8PSBCSVQoMCk7Cj4+PiArCj4+PiArCXByX2RlYnVnKCJkcF90 dT0weCV4LCB2YWxpZF9ib3VuZGFyeT0weCV4LCB2YWxpZF9ib3VuZGFyeTI9MHgleFxuIiwKPj4+ ICsJCQlkcF90dSwgdmFsaWRfYm91bmRhcnksIHZhbGlkX2JvdW5kYXJ5Mik7Cj4+PiArCj4+PiAr CWN0cmwtPmNhdGFsb2ctPmRwX3R1ID0gZHBfdHU7Cj4+PiArCWN0cmwtPmNhdGFsb2ctPnZhbGlk X2JvdW5kYXJ5ID0gdmFsaWRfYm91bmRhcnk7Cj4+PiArCWN0cmwtPmNhdGFsb2ctPnZhbGlkX2Jv dW5kYXJ5MiA9IHZhbGlkX2JvdW5kYXJ5MjsKPj4+ICsKPj4+ICsJY3RybC0+Y2F0YWxvZy0+dXBk YXRlX3RyYW5zZmVyX3VuaXQoY3RybC0+Y2F0YWxvZyk7Cj4+IAo+PiBBZ2FpbiBoZXJlLCBpZiB5 b3UganVzdCBjYWxsIHRoZSBmdW5jdGlvbiBkaXJlY3RseSwgeW91IGNhbiBhdm9pZCB0aGUgCj4+ IGNhbGxiYWNrLgo+PiBJZiB5b3UgYWRkIGZ1bmN0aW9uIGFyZ3VtZW50cywgeW91IGNhbiBhdm9p ZCBoYXZpbmcgdG8gc3RvcmUKPj4gZHBfdHUvdmFsaWRfYm91bmRhcnkvCj4+IHZhbGlkX2JvdW5k YXJ5MiBlbnRpcmVseS4KPj4gCj4gV2lsbCByZW1vdmUgdGhlIGRwX3R1L3ZhbGlkX2JvdW5kYXJ5 L3ZhbGlkX2JvdW5kYXJ5MiBpbiBWMy4KPj4+ICt9CgpBZnRlciByZW1vdmluZyBhbGwgdGhlIGZ1 bmN0aW9uIHB0cnMgaW4gZWFjaCBzdHJ1Y3R1cmUgYW5kIHJlbW92aW5nIApkcF90dS92YWxpZF9i b3VuZGFyeS92YWxpZF9ib3VuZGFyeTIgZm9yIGRwX2NhdGFsb2dfY3RybCBzdHJ1Y3R1cmUsCndl IGNhbiBnZXQgcmlkIG9mIGRwX2NhdGFsb2dfY3RybCBzdHJ1Y3R1cmUuIFNpbWlsYXJseSwgZXZl biB0aGUgb3RoZXIgCmF1eCBhbmQgcGFuZWwgc3RydWN0dXJlcyBoYXZlIG1pbmltYWwgZGF0YSB0 aGF0IGNhbiBiZSByZW1vdmVkLgpJZiB3ZSByZW1vdmUgdGhlc2Ugc3RydWN0dXJlcyBhbmQgZ2V0 IHJlYWQgb2YgZHBfY2F0YWxvZyBzdHJ1Y3R1cmUsIHdlIApoYXZlIHRvIGZpbmQgYSBkaWZmZXJl bnQgd2F5IHRvIGFjY2VzcyBkcF9jYXRhbG9nX3ByaXZhdGUgc3RydWN0dXJlCnByZXNlbnQgaW4g ZHBfY2F0YWxvZy5jIGZpbGUuIEhhdmluZyAic3RhdGljIGRwX2NhdGFsb2dfcHJpdmF0ZSAKKmRw X2NhdGFsb2dfcHJpdmF0ZV9wdHIiIGlzIGFjY2VwdGFibGUgaW4gdXBzdHJlYW0/IFBsZWFzZSBz aGFyZSBpZiB5b3UgCmhhdmUKYW55IGJldHRlciBzdWdnZXN0aW9uPwoKPj4+ICsKPj4+ICtzdGF0 aWMgaW50IGRwX2N0cmxfd2FpdDR2aWRlb19yZWFkeShzdHJ1Y3QgZHBfY3RybF9wcml2YXRlICpj dHJsKQo+Pj4gK3sKPj4+ICsJaW50IHJldCA9IDA7Cj4+PiArCj4+PiArCXJldCA9IHdhaXRfZm9y X2NvbXBsZXRpb25fdGltZW91dCgmY3RybC0+dmlkZW9fY29tcCwgSFogLyAyKTsKPj4gCj4+IEJy ZWFrIG91dCB0aGUgdGltZW91dCBpbnRvIGEgI2RlZmluZQo+IAo+IEZpeGVkIGluIFYyLgo+IAo+ PiAKPj4+ICsJaWYgKHJldCA8PSAwKSB7Cj4+PiArCQlwcl9lcnIoIkxpbmsgVHJhaW4gdGltZWRv dXRcbiIpOwo+Pj4gKwkJcmV0ID0gLUVJTlZBTDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXR1cm4g cmV0Owo+PiAKPj4gWW91J3JlIG5vdCBjaGVja2luZyB0aGUgcmV0dXJuIHZhbHVlIGF0IHRoZSBj YWxsc2l0ZS4KPj4gCj4gRml4ZWQgaW4gVjIuCj4gCj4+PiArfQoKL3NuaXAKCgo+Pj4gKwo+Pj4g K3N0YXRpYyB1MzIgZHBfcGFuZWxfZ2V0X3N1cHBvcnRlZF9icHAoc3RydWN0IGRwX3BhbmVsICpk cF9wYW5lbCwKPj4+ICsJCXUzMiBtb2RlX2VkaWRfYnBwLCB1MzIgbW9kZV9wY2xrX2toeikKPj4+ ICt7Cj4+PiArCXN0cnVjdCBkcm1fZHBfbGluayAqbGlua19pbmZvOwo+Pj4gKwljb25zdCB1MzIg bWF4X3N1cHBvcnRlZF9icHAgPSAzMCwgbWluX3N1cHBvcnRlZF9icHAgPSAxODsKPj4+ICsJdTMy IGJwcCA9IDAsIGRhdGFfcmF0ZV9raHogPSAwOwo+Pj4gKwo+Pj4gKwlicHAgPSBtaW5fdCh1MzIs IG1vZGVfZWRpZF9icHAsIG1heF9zdXBwb3J0ZWRfYnBwKTsKPj4+ICsKPj4+ICsJbGlua19pbmZv ID0gJmRwX3BhbmVsLT5saW5rX2luZm87Cj4+PiArCWRhdGFfcmF0ZV9raHogPSBsaW5rX2luZm8t Pm51bV9sYW5lcyAqIGxpbmtfaW5mby0+cmF0ZSAqIDg7Cj4+PiArCj4+PiArCXdoaWxlIChicHAg PiBtaW5fc3VwcG9ydGVkX2JwcCkgewo+Pj4gKwkJaWYgKG1vZGVfcGNsa19raHogKiBicHAgPD0g ZGF0YV9yYXRlX2toeikKPj4+ICsJCQlicmVhazsKPj4+ICsJCWJwcCAtPSA2Owo+PiAKPj4gV2F0 Y2ggb3V0IGZvciB1bmRlcmZsb3cgaGVyZS4KPj4gCj4gV2lsbCBhZGQgY2hlY2sgaW4gVjMgcGF0 Y2ggc2VyaWVzLgo+IAoKU2luY2UgbWluX3N1cHBvcnRlZF9icHAgaXMgMTgsIGJwcCBjYW4gbmV2 ZXIgZ28gYmVsb3cgMTIuIEkgZG9uJ3QgdGhpbmsgCndlIG5lZWQgdG8gY2hlY2sgdW5kZXJmbG93 IGhlcmUuCgoKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXR1cm4gYnBwOwo+Pj4gK30KPj4+ICsKPj4+ ICtzdGF0aWMgdTMyIGRwX3BhbmVsX2dldF9tb2RlX2JwcChzdHJ1Y3QgZHBfcGFuZWwgKmRwX3Bh bmVsLAo+Pj4gKwkJdTMyIG1vZGVfZWRpZF9icHAsIHUzMiBtb2RlX3BjbGtfa2h6KQo+Pj4gK3sK Pj4+ICsJc3RydWN0IGRwX3BhbmVsX3ByaXZhdGUgKnBhbmVsOwo+Pj4gKwl1MzIgYnBwID0gbW9k ZV9lZGlkX2JwcDsKPj4+ICsKPj4+ICsJaWYgKCFkcF9wYW5lbCB8fCAhbW9kZV9lZGlkX2JwcCB8 fCAhbW9kZV9wY2xrX2toeikgewo+Pj4gKwkJcHJfZXJyKCJpbnZhbGlkIGlucHV0XG4iKTsKPj4+ ICsJCXJldHVybiAwOwo+Pj4gKwl9Cj4+PiArCj4+PiArCXBhbmVsID0gY29udGFpbmVyX29mKGRw X3BhbmVsLCBzdHJ1Y3QgZHBfcGFuZWxfcHJpdmF0ZSwgZHBfcGFuZWwpOwo+Pj4gKwo+Pj4gKwlp ZiAoZHBfcGFuZWwtPnZpZGVvX3Rlc3QpCj4+PiArCQlicHAgPSBkcF9saW5rX2JpdF9kZXB0aF90 b19icHAoCj4+PiArCQkJCXBhbmVsLT5saW5rLT50ZXN0X3ZpZGVvLnRlc3RfYml0X2RlcHRoKTsK Pj4+ICsJZWxzZQo+Pj4gKwkJYnBwID0gZHBfcGFuZWxfZ2V0X3N1cHBvcnRlZF9icHAoZHBfcGFu ZWwsIG1vZGVfZWRpZF9icHAsCj4+PiArCQkJCW1vZGVfcGNsa19raHopOwo+Pj4gKwo+Pj4gKwly ZXR1cm4gYnBwOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgdm9pZCBkcF9wYW5lbF9zZXRfdGVz dF9tb2RlKHN0cnVjdCBkcF9wYW5lbF9wcml2YXRlICpwYW5lbCwKPj4+ICsJCXN0cnVjdCBkcF9k aXNwbGF5X21vZGUgKm1vZGUpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgZHBfcGFuZWxfaW5mbyAqcGlu Zm8gPSBOVUxMOwo+PiAKCi9zbmlwCgo+Pj4gKwo+Pj4gK3N0cnVjdCBkcF9kaXNwbGF5X21vZGUg ewo+Pj4gKwlzdHJ1Y3QgZHBfcGFuZWxfaW5mbyB0aW1pbmc7Cj4+PiArCXUzMiBjYXBhYmlsaXRp ZXM7Cj4+PiArfTsKPj4+ICsKPj4+ICtzdHJ1Y3QgZHBfcGFuZWxfaW4gewo+Pj4gKwlzdHJ1Y3Qg ZGV2aWNlICpkZXY7Cj4+PiArCXN0cnVjdCBkcF9hdXggKmF1eDsKPj4+ICsJc3RydWN0IGRwX2xp bmsgKmxpbms7Cj4+PiArCXN0cnVjdCBkcF9jYXRhbG9nX3BhbmVsICpjYXRhbG9nOwo+Pj4gK307 Cj4+PiArCj4+PiArc3RydWN0IGRwX3BhbmVsIHsKPj4+ICsJLyogZHBjZCByYXcgZGF0YSAqLwo+ Pj4gKwl1OCBkcGNkW0RQX1JFQ0VJVkVSX0NBUF9TSVpFICsgMV07Cj4+IAo+PiBXaHkgKyAxPwo+ PiAKPiBXaWxsIGZvbGxvdyB1cCBvbiB0aGlzIGluIFYzLgoKRFBfUkVDSUVWRVJfQ0FQX1NJWkUg aXMgMHhmLiBXZSBuZWVkIDE2IGJ5dGVzIGZvciBkcGNkIHJlYWQuCgoKCj4gCj4+PiArCXU4IGRz X3BvcnRzW0RQX01BWF9ET1dOU1RSRUFNX1BPUlRTXTsKPj4+ICsKPj4+ICsJc3RydWN0IGRybV9k cF9saW5rIGxpbmtfaW5mbzsKPj4+ICsJc3RydWN0IGVkaWQgKmVkaWQ7Cj4+PiArCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4+PiArCXN0cnVjdCBkcF9wYW5lbF9pbmZvIHBpbmZv Owo+Pj4gKwlib29sIHZpZGVvX3Rlc3Q7Cj4+PiArCj4+PiArCXUzMiB2aWM7Cj4+PiArCXUzMiBt YXhfcGNsa19raHo7Cj4+PiArCj4+PiArCXUzMiBtYXhfYndfY29kZTsKPj4+ICsJaW50ICgqaW5p dF9pbmZvKShzdHJ1Y3QgZHBfcGFuZWwgKmRwX3BhbmVsKTsKPj4+ICsJaW50ICgqZGVpbml0KShz dHJ1Y3QgZHBfcGFuZWwgKmRwX3BhbmVsKTsKPj4+ICsJaW50ICgqdGltaW5nX2NmZykoc3RydWN0 IGRwX3BhbmVsICpkcF9wYW5lbCk7Cj4+PiArCWludCAoKnJlYWRfc2lua19jYXBzKShzdHJ1Y3Qg ZHBfcGFuZWwgKmRwX3BhbmVsLAo+Pj4gKwkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cik7Cj4+PiArCXUzMiAoKmdldF9taW5fcmVxX2xpbmtfcmF0ZSkoc3RydWN0IGRwX3BhbmVsICpk cF9wYW5lbCk7Cj4+IAo+PiBUaGlzIGZ1bmN0aW9uIGlzbid0IGNhbGxlZCBhbnl3aGVyZQo+PiAK PiBSZW1vdmVkIGluIFYyLgo+IAoKL1NuaXAKCj4gCj4+IAo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQg ZHBfcG93ZXJfcGluY3RybF9zZXQoc3RydWN0IGRwX3Bvd2VyX3ByaXZhdGUgKnBvd2VyLCBib29s IAo+Pj4gYWN0aXZlKQo+Pj4gK3sKPj4+ICsJaW50IHJjID0gLUVGQVVMVDsKPj4+ICsJc3RydWN0 IHBpbmN0cmxfc3RhdGUgKnBpbl9zdGF0ZTsKPj4+ICsJc3RydWN0IGRwX3BhcnNlciAqcGFyc2Vy Owo+Pj4gKwo+Pj4gKwlwYXJzZXIgPSBwb3dlci0+cGFyc2VyOwo+Pj4gKwo+Pj4gKwlpZiAoSVNf RVJSX09SX05VTEwocGFyc2VyLT5waW5jdHJsLnBpbikpCj4+PiArCQlyZXR1cm4gUFRSX0VSUihw YXJzZXItPnBpbmN0cmwucGluKTsKPj4+ICsKPj4+ICsJcGluX3N0YXRlID0gYWN0aXZlID8gcGFy c2VyLT5waW5jdHJsLnN0YXRlX2FjdGl2ZQo+Pj4gKwkJCQk6IHBhcnNlci0+cGluY3RybC5zdGF0 ZV9zdXNwZW5kOwo+Pj4gKwlpZiAoIUlTX0VSUl9PUl9OVUxMKHBpbl9zdGF0ZSkpIHsKPj4gCj4+ IEhvdyBpcyB0aGlzIG5vdCBwb3NzaWJsZT8gWW91IGNoZWNrIHRoZXNlIG9uIGluaXRpYWxpemF0 aW9uLgo+PiAKPiBXaWxsIHJlbW92ZSB0aGlzIGluIFYzLgoKR1BJTy9waW5fY3RybCBlbnRyaWVz IGFyZSBvcHRpb25hbCBlbnRyaWVzIGluIGR0c2kgZm9yIERQIHNpbmNlIHdlIGRvbid0IApuZWVk IHRoZW0gZm9yIHNwZWNpZmljIHRhcmdldC4gRHVyaW5nIGluaXQsIHdlIGFsbG93CnRoZSBwcm9i ZSB0byBnbyB0aHJvdWdoIGV2ZW4gdGhvdWdoIHdlIGluaXRpYWxpemUgcGluX3N0YXRlIG9yIG5v dC4gU28sIAp3ZSBoYXZlIHRvIGNoZWNrIHRoaXMgYWdhaW4gaGVyZS4KCgo+Pj4gKwkJcmMgPSBw aW5jdHJsX3NlbGVjdF9zdGF0ZShwYXJzZXItPnBpbmN0cmwucGluLAo+Pj4gKwkJCQlwaW5fc3Rh dGUpOwo+PiAKPj4gQ29tYmluZSBvbiAxIGxpbmUKPj4gCj4gRml4ZWQgaW4gVjIuCj4gCj4+PiAr CQlpZiAocmMpCj4+PiArCQkJcHJfZXJyKCJjYW4gbm90IHNldCAlcyBwaW5zXG4iLAo+Pj4gKwkJ CSAgICAgICBhY3RpdmUgPyAiZHBfYWN0aXZlIgo+Pj4gKwkJCSAgICAgICA6ICJkcF9zbGVlcCIp Owo+PiAKPj4gCj4+IENvbWJpbmUgb24gb25lIGxpbmUuIEFsc28gcmV0dXJuIGltbWVkaWF0ZWx5 IGlmIHRoaXMgaXMgdGhlIGNhc2UuCj4+IAo+IEZpeGVkIGluIFYyLgo+IAo+Pj4gKwl9IGVsc2Ug ewo+Pj4gKwkJcHJfZXJyKCJpbnZhbGlkICclcycgcGluc3RhdGVcbiIsCj4+PiArCQkgICAgICAg YWN0aXZlID8gImRwX2FjdGl2ZSIKPj4+ICsJCSAgICAgICA6ICJkcF9zbGVlcCIpOwo+Pj4gKwl9 Cj4+PiArCj4+PiArCXJldHVybiByYzsKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGludCBkcF9w b3dlcl9jbGtfaW5pdChzdHJ1Y3QgZHBfcG93ZXJfcHJpdmF0ZSAqcG93ZXIsIGJvb2wgCj4+PiBl bmFibGUpCj4+IAo+PiBTcGxpdCB0aGlzIGludG8gaW5pdC9kZWluaXQsIHRoZSBwYXRocyBkb24n dCBzaGFyZSBjb2RlLgo+PiAKPiBGaXhlZCBpbiBWMi4KPiAKCgovc25pcAoKCgo+Pj4gICNkZWZp bmUgRFBfVEVTVF9TSU5LCQkJICAgIDB4MjcwCj4+PiAgIyBkZWZpbmUgRFBfVEVTVF9TSU5LX1NU QVJUCQkgICAgKDEgPDwgMCkKPj4+ICsjZGVmaW5lIERQX1RFU1RfQVVESU9fTU9ERQkJICAgIDB4 MjcxCj4+PiArI2RlZmluZSBEUF9URVNUX0FVRElPX1BBVFRFUk5fVFlQRQkgICAgMHgyNzIKPj4+ ICsjZGVmaW5lIERQX1RFU1RfQVVESU9fUEVSSU9EX0NIMQkgICAgMHgyNzMKPj4+ICsjZGVmaW5l IERQX1RFU1RfQVVESU9fUEVSSU9EX0NIMgkgICAgMHgyNzQKPj4+ICsjZGVmaW5lIERQX1RFU1Rf QVVESU9fUEVSSU9EX0NIMwkgICAgMHgyNzUKPj4+ICsjZGVmaW5lIERQX1RFU1RfQVVESU9fUEVS SU9EX0NINAkgICAgMHgyNzYKPj4+ICsjZGVmaW5lIERQX1RFU1RfQVVESU9fUEVSSU9EX0NINQkg ICAgMHgyNzcKPj4+ICsjZGVmaW5lIERQX1RFU1RfQVVESU9fUEVSSU9EX0NINgkgICAgMHgyNzgK Pj4+ICsjZGVmaW5lIERQX1RFU1RfQVVESU9fUEVSSU9EX0NINwkgICAgMHgyNzkKPj4+ICsjZGVm aW5lIERQX1RFU1RfQVVESU9fUEVSSU9EX0NIOAkgICAgMHgyN0EKPj4+IAo+Pj4gICNkZWZpbmUg RFBfRkVDX1NUQVRVUwkJCSAgICAweDI4MCAgICAvKiAxLjQgKi8KPj4+ICAjIGRlZmluZSBEUF9G RUNfREVDT0RFX0VOX0RFVEVDVEVECSAgICAoMSA8PCAwKQo+Pj4gLS0KPj4+IFRoZSBRdWFsY29t bSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEg Cj4+PiBGb3J1bSwKPj4+IGEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QK Pj4+IAo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K Pj4+IEZyZWVkcmVubyBtYWlsaW5nIGxpc3QKPj4+IEZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZnJlZWRyZW5vCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubw==