From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: Re: [PATCH 3/4] drm/amd/display: In VRR mode, do DRM core vblank handling at end of vblank. Date: Wed, 20 Mar 2019 08:51:47 +0100 Message-ID: References: <20190318171952.24302-1-mario.kleiner.de@gmail.com> <20190318171952.24302-4-mario.kleiner.de@gmail.com> <8ef78169-1893-0aee-9cb1-cce4054ebbcc@amd.com> <82efca66-1100-633f-2285-a9849d1bfc9e@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <82efca66-1100-633f-2285-a9849d1bfc9e@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Kazlauskas, Nicholas" Cc: "dri-devel@lists.freedesktop.org" , "amd-gfx@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T2ssIGZpeGVkIGFsbCB0aGUgc3R5bGUgaXNzdWVzIGFuZCByYW4gY2hlY2twYXRjaCBvdmVyIHRo ZSBwYXRjaGVzLiBUaGFua3MuCgpPbiBUdWUsIE1hciAxOSwgMjAxOSBhdCAyOjMyIFBNIEthemxh dXNrYXMsIE5pY2hvbGFzCjxOaWNob2xhcy5LYXpsYXVza2FzQGFtZC5jb20+IHdyb3RlOgo+Cj4g T24gMy8xOS8xOSA5OjIzIEFNLCBLYXpsYXVza2FzLCBOaWNob2xhcyB3cm90ZToKPiA+IE9uIDMv MTgvMTkgMToxOSBQTSwgTWFyaW8gS2xlaW5lciB3cm90ZToKPiA+PiBJbiBWUlIgbW9kZSwgcHJv cGVyIHZibGFuay9wYWdlZmxpcCB0aW1lc3RhbXBzIGNhbiBvbmx5IGJlIGNvbXB1dGVkCj4gPj4g YWZ0ZXIgdGhlIGRpc3BsYXkgc2Nhbm91dCBwb3NpdGlvbiBoYXMgbGVmdCBmcm9udC1wb3JjaC4g VGhlcmVmb3JlCj4gPj4gZGVsYXkgY2FsbHMgdG8gZHJtX2NydGNfaGFuZGxlX3ZibGFuaygpLCBh bmQgdGhlcmVieSBjYWxscyB0bwo+ID4+IGRybV91cGRhdGVfdmJsYW5rX2NvdW50KCkgYW5kIHBh Z2VmbGlwIGV2ZW50IGRlbGl2ZXJ5LCB0byBhZnRlciB0aGUKPiA+PiBlbmQgb2YgZnJvbnQtcG9y Y2ggd2hlbiBpbiBWUlIgbW9kZS4KPiA+Pgo+ID4+IFdlIGFkZCBhIG5ldyB2dXBkYXRlIGlycSwg d2hpY2ggdHJpZ2dlcnMgYXQgdGhlIGVuZCBvZiB0aGUgdnVwZGF0ZQo+ID4+IGludGVydmFsLCBp ZS4gYXQgdGhlIGVuZCBvZiB2YmxhbmssIGFuZCBjYWxscyB0aGUgY29yZSB2YmxhbmsgaGFuZGxl cgo+ID4+IGZ1bmN0aW9uLiBUaGUgbmV3IGlycSBoYW5kbGVyIGlzIG5vdCBleGVjdXRlZCBpbiBz dGFuZGFyZCBub24tVlJSCj4gPj4gbW9kZSwgc28gdmJsYW5rIGhhbmRsaW5nIGZvciBmaXhlZCBy ZWZyZXNoIHJhdGUgbW9kZSBpcyBpZGVudGljYWwKPiA+PiB0byB0aGUgcGFzdCBpbXBsZW1lbnRh dGlvbi4KPiA+Pgo+ID4+IFNpZ25lZC1vZmYtYnk6IE1hcmlvIEtsZWluZXIgPG1hcmlvLmtsZWlu ZXIuZGVAZ21haWwuY29tPgo+Cj4gTG9va3MgSSBsb3N0IHNvbWUgb2YgbXkgY29tbWVudHMgSSB3 YW50ZWQgdG8gc2VuZCBpbiBteSBsYXN0IGVtYWlsLiBKdXN0Cj4gYSBmZXcgbml0cGlja3MgKGlu Y2x1ZGluZyBzb21lIHRoaW5ncyBQYXVsIG1lbnRpb25lZCkuCj4KPiBBbHNvIG1lYW50IHRvIEND IEhhcnJ5IG9uIHRoaXMgYXMgd2VsbC4KPgo+ID4+IC0tLQo+ID4+ICAgIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdS5oICAgICAgICAgICAgICAgIHwgICAxICsKPiA+PiAgICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jICB8IDEyOSArKysr KysrKysrKysrKysrKysrKy0KPiA+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1k Z3B1X2RtL2FtZGdwdV9kbS5oICB8ICAgOSArKwo+ID4+ICAgIC4uLi9ncHUvZHJtL2FtZC9kaXNw bGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMgIHwgIDIyICsrKysKPiA+PiAgICAuLi4vYW1k L2Rpc3BsYXkvZGMvaXJxL2RjZTExMC9pcnFfc2VydmljZV9kY2UxMTAuYyB8ICAgNyArLQo+ID4+ ICAgIC4uLi9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTIwL2lycV9zZXJ2aWNlX2RjZTEyMC5jIHwg ICA3ICstCj4gPj4gICAgLi4uL2FtZC9kaXNwbGF5L2RjL2lycS9kY2U4MC9pcnFfc2VydmljZV9k Y2U4MC5jICAgfCAgIDYgKy0KPiA+PiAgICAuLi4vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjbjEwL2ly cV9zZXJ2aWNlX2RjbjEwLmMgICB8ICA0MCArKysrKy0tCj4gPj4gICAgOCBmaWxlcyBjaGFuZ2Vk LCAyMDUgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCj4gPj4KPiA+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaAo+ID4+IGluZGV4IGY4ODc2MWEuLjY0MTY3ZGQgMTAwNjQ0Cj4g Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPiA+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+ID4+IEBAIC04MjcsNiArODI3LDcg QEAgc3RydWN0IGFtZGdwdV9kZXZpY2Ugewo+ID4+ICAgICAgLyogRm9yIHByZS1EQ0UxMS4gRENF MTEgYW5kIGxhdGVyIGFyZSBpbiAic3RydWN0IGFtZGdwdV9kZXZpY2UtPmRtIiAqLwo+ID4+ICAg ICAgc3RydWN0IHdvcmtfc3RydWN0ICAgICAgICAgICAgICBob3RwbHVnX3dvcms7Cj4gPj4gICAg ICBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMgICAgICAgICAgIGNydGNfaXJxOwo+ID4+ICsgICAgc3Ry dWN0IGFtZGdwdV9pcnFfc3JjICAgICAgICAgICB2dXBkYXRlX2lycTsKPiA+PiAgICAgIHN0cnVj dCBhbWRncHVfaXJxX3NyYyAgICAgICAgICAgcGFnZWZsaXBfaXJxOwo+ID4+ICAgICAgc3RydWN0 IGFtZGdwdV9pcnFfc3JjICAgICAgICAgICBocGRfaXJxOwo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4gPj4gaW5kZXgg ODVlNGY4Ny4uNTU1ZDllOWYgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPiA+PiBAQCAtMzE1LDYgKzMxNSwzMiBA QCBzdGF0aWMgdm9pZCBkbV9wZmxpcF9oaWdoX2lycSh2b2lkICppbnRlcnJ1cHRfcGFyYW1zKQo+ ID4+ICAgICAgZHJtX2NydGNfdmJsYW5rX3B1dCgmYW1kZ3B1X2NydGMtPmJhc2UpOwo+ID4+ICAg IH0KPiA+Pgo+ID4+ICtzdGF0aWMgdm9pZCBkbV92dXBkYXRlX2hpZ2hfaXJxKHZvaWQgKmludGVy cnVwdF9wYXJhbXMpCj4gPj4gK3sKPiA+PiArICAgIHN0cnVjdCBjb21tb25faXJxX3BhcmFtcyAq aXJxX3BhcmFtcyA9IGludGVycnVwdF9wYXJhbXM7Cj4gPj4gKyAgICBzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiA9IGlycV9wYXJhbXMtPmFkZXY7Cj4gPj4gKyAgICBzdHJ1Y3QgYW1kZ3B1X2Ny dGMgKmFjcnRjOwo+ID4+ICsgICAgc3RydWN0IGRtX2NydGNfc3RhdGUgKmFjcnRjX3N0YXRlOwo+ ID4+ICsKPiA+PiArICAgIGFjcnRjID0gZ2V0X2NydGNfYnlfb3RnX2luc3QoYWRldiwgaXJxX3Bh cmFtcy0+aXJxX3NyYyAtIElSUV9UWVBFX1ZVUERBVEUpOwo+ID4+ICsKPiA+PiArICAgIGlmIChh Y3J0Yykgewo+ID4+ICsgICAgICAgICAgICBhY3J0Y19zdGF0ZSA9IHRvX2RtX2NydGNfc3RhdGUo YWNydGMtPmJhc2Uuc3RhdGUpOwo+ID4+ICsKPiA+PiArICAgICAgICAgICAgRFJNX0RFQlVHX0RS SVZFUigiY3J0YzolZCwgdnVwZGF0ZS12cnI6JWRcbiIsIGFjcnRjLT5jcnRjX2lkLAo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtZGdwdV9kbV92cnJfYWN0aXZlKGFjcnRjX3N0 YXRlKSk7Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICAvKiBDb3JlIHZibGFuayBoYW5kbGluZyBp cyBkb25lIGhlcmUgYWZ0ZXIgZW5kIG9mIGZyb250LXBvcmNoIGluCj4gPj4gKyAgICAgICAgICAg ICAqIHZyciBtb2RlLCBhcyB2YmxhbmsgdGltZXN0YW1waW5nIHdpbGwgZ2l2ZSB2YWxpZCByZXN1 bHRzCj4gPj4gKyAgICAgICAgICAgICAqIHdoaWxlIG5vdyBkb25lIGFmdGVyIGZyb250LXBvcmNo LiBUaGlzIHdpbGwgYWxzbyBkZWxpdmVyCj4gPj4gKyAgICAgICAgICAgICAqIHBhZ2UtZmxpcCBj b21wbGV0aW9uIGV2ZW50cyB0aGF0IGhhdmUgYmVlbiBxdWV1ZWQgdG8gdXMKPiA+PiArICAgICAg ICAgICAgICogaWYgYSBwYWdlZmxpcCBoYXBwZW5lZCBpbnNpZGUgZnJvbnQtcG9yY2guCj4gPj4g KyAgICAgICAgICAgICAqLwo+ID4+ICsgICAgICAgICAgICBpZiAoYW1kZ3B1X2RtX3Zycl9hY3Rp dmUoYWNydGNfc3RhdGUpKQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIGRybV9jcnRjX2hhbmRs ZV92YmxhbmsoJmFjcnRjLT5iYXNlKQo+ID4gSSB3YXMgdGhpbmtpbmcgdGhhdCAzIGFuZCA0IG1p Z2h0IGhhdmUgdG8gYmUgbWVyZ2VkLCBidXQgVlJSIHBmbGlwCj4gPiB0aW1lc3RhbXBpbmcgc2Vl bXMgdG8gYmUgdGhlIHNhbWUgYXMgaXQgd2FzIGJlZm9yZSAob2ZmIGJ5IGEgbGluZSBvcgo+ID4g dHdvKSBzaW5jZSBpdCdzIG5vdCBoYW5kbGVkIGhlcmUgeWV0LiBUaGlzIHNlZW1zIHRvIGZpeCB2 YmxhbmsgZXZlbnRzCj4gPiBhbmQgdGltZXN0YW1waW5nIGF0IGxlYXN0Lgo+ID4KPiA+PiArICAg IH0KPiA+PiArfQo+ID4+ICsKPiA+PiAgICBzdGF0aWMgdm9pZCBkbV9jcnRjX2hpZ2hfaXJxKHZv aWQgKmludGVycnVwdF9wYXJhbXMpCj4gPj4gICAgewo+ID4+ICAgICAgc3RydWN0IGNvbW1vbl9p cnFfcGFyYW1zICppcnFfcGFyYW1zID0gaW50ZXJydXB0X3BhcmFtczsKPiA+PiBAQCAtMzI1LDEx ICszNTEsMjQgQEAgc3RhdGljIHZvaWQgZG1fY3J0Y19oaWdoX2lycSh2b2lkICppbnRlcnJ1cHRf cGFyYW1zKQo+ID4+ICAgICAgYWNydGMgPSBnZXRfY3J0Y19ieV9vdGdfaW5zdChhZGV2LCBpcnFf cGFyYW1zLT5pcnFfc3JjIC0gSVJRX1RZUEVfVkJMQU5LKTsKPiA+Pgo+ID4+ICAgICAgaWYgKGFj cnRjKSB7Cj4gPj4gLSAgICAgICAgICAgIGRybV9jcnRjX2hhbmRsZV92YmxhbmsoJmFjcnRjLT5i YXNlKTsKPiA+PiAtICAgICAgICAgICAgYW1kZ3B1X2RtX2NydGNfaGFuZGxlX2NyY19pcnEoJmFj cnRjLT5iYXNlKTsKPiA+PiAtCj4gPj4gICAgICAgICAgICAgIGFjcnRjX3N0YXRlID0gdG9fZG1f Y3J0Y19zdGF0ZShhY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gPj4KPiA+PiArICAgICAgICAgICAgRFJN X0RFQlVHX0RSSVZFUigiY3J0YzolZCwgdnVwZGF0ZS12cnI6JWRcbiIsIGFjcnRjLT5jcnRjX2lk LAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtZGdwdV9kbV92cnJfYWN0aXZl KGFjcnRjX3N0YXRlKSk7Cj4gPj4gKwo+ID4+ICsgICAgICAgICAgICAvKiBDb3JlIHZibGFuayBo YW5kbGluZyBhdCBzdGFydCBvZiBmcm9udC1wb3JjaCBpcyBvbmx5IHBvc3NpYmxlCj4gPj4gKyAg ICAgICAgICAgICAqIGluIG5vbi12cnIgbW9kZSwgYXMgb25seSB0aGVyZSB2YmxhbmsgdGltZXN0 YW1waW5nIHdpbGwgZ2l2ZQo+ID4+ICsgICAgICAgICAgICAgKiB2YWxpZCByZXN1bHRzIHdoaWxl IGRvbmUgaW4gZnJvbnQtcG9yY2guIE90aGVyd2lzZSBkZWZlciBpdAo+ID4+ICsgICAgICAgICAg ICAgKiB0byBkbV92dXBkYXRlX2hpZ2hfaXJxIGFmdGVyIGVuZCBvZiBmcm9udC1wb3JjaC4KPiA+ PiArICAgICAgICAgICAgICovCj4gPj4gKyAgICAgICAgICAgIGlmICghYW1kZ3B1X2RtX3Zycl9h Y3RpdmUoYWNydGNfc3RhdGUpKQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIGRybV9jcnRjX2hh bmRsZV92YmxhbmsoJmFjcnRjLT5iYXNlKTsKPiA+PiArCj4gPj4gKyAgICAgICAgICAgIC8qIEZv bGxvd2luZyBzdHVmZiBtdXN0IGhhcHBlbiBhdCBzdGFydCBvZiB2YmxhbmssIGZvciBjcmMKPiA+ PiArICAgICAgICAgICAgICogY29tcHV0YXRpb24gYW5kIGJlbG93LXRoZS1yYW5nZSBidHIgc3Vw cG9ydCBpbiB2cnIgbW9kZS4KPiA+PiArICAgICAgICAgICAgICovCj4gPj4gKyAgICAgICAgICAg IGFtZGdwdV9kbV9jcnRjX2hhbmRsZV9jcmNfaXJxKCZhY3J0Yy0+YmFzZSk7Cj4gPj4gKwo+ID4+ ICAgICAgICAgICAgICBpZiAoYWNydGNfc3RhdGUtPnN0cmVhbSAmJgo+ID4+ICAgICAgICAgICAg ICAgICAgYWNydGNfc3RhdGUtPnZycl9wYXJhbXMuc3VwcG9ydGVkICYmCj4gPj4gICAgICAgICAg ICAgICAgICBhY3J0Y19zdGF0ZS0+ZnJlZXN5bmNfY29uZmlnLnN0YXRlID09IFZSUl9TVEFURV9B Q1RJVkVfVkFSSUFCTEUpIHsKPiA+PiBAQCAtMTQ0Nyw2ICsxNDg2LDI3IEBAIHN0YXRpYyBpbnQg ZGNlMTEwX3JlZ2lzdGVyX2lycV9oYW5kbGVycyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtX2NydGNfaGlnaF9pcnEsIGNfaXJx X3BhcmFtcyk7Cj4gPj4gICAgICB9Cj4gPj4KPiA+PiArICAgIC8qIFVzZSBWVVBEQVRFIGludGVy cnVwdCAqLwo+ID4+ICsgICAgZm9yIChpID0gVklTTEFORFMzMF9JVl9TUkNJRF9EMV9WX1VQREFU RV9JTlQ7IGkgPD0gVklTTEFORFMzMF9JVl9TUkNJRF9ENl9WX1VQREFURV9JTlQ7IGkrPTIpIHsK PiA+PiArICAgICAgICAgICAgciA9IGFtZGdwdV9pcnFfYWRkX2lkKGFkZXYsIGNsaWVudF9pZCwg aSwgJmFkZXYtPnZ1cGRhdGVfaXJxKTsKPiA+PiArICAgICAgICAgICAgaWYgKHIpIHsKPiA+PiAr ICAgICAgICAgICAgICAgICAgICBEUk1fRVJST1IoIkZhaWxlZCB0byBhZGQgdnVwZGF0ZSBpcnEg aWQhXG4iKTsKPiA+PiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPiA+PiArICAgICAg ICAgICAgfQo+ID4+ICsKPiA+PiArICAgICAgICAgICAgaW50X3BhcmFtcy5pbnRfY29udGV4dCA9 IElOVEVSUlVQVF9ISUdIX0lSUV9DT05URVhUOwo+ID4+ICsgICAgICAgICAgICBpbnRfcGFyYW1z LmlycV9zb3VyY2UgPQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIGRjX2ludGVycnVwdF90b19p cnFfc291cmNlKGRjLCBpLCAwKTsKPiA+PiArCj4gPj4gKyAgICAgICAgICAgIGNfaXJxX3BhcmFt cyA9ICZhZGV2LT5kbS52dXBkYXRlX3BhcmFtc1tpbnRfcGFyYW1zLmlycV9zb3VyY2UgLSBEQ19J UlFfU09VUkNFX1ZVUERBVEUxXTsKPiA+PiArCj4gPj4gKyAgICAgICAgICAgIGNfaXJxX3BhcmFt cy0+YWRldiA9IGFkZXY7Cj4gPj4gKyAgICAgICAgICAgIGNfaXJxX3BhcmFtcy0+aXJxX3NyYyA9 IGludF9wYXJhbXMuaXJxX3NvdXJjZTsKPiA+PiArCj4gPj4gKyAgICAgICAgICAgIGFtZGdwdV9k bV9pcnFfcmVnaXN0ZXJfaW50ZXJydXB0KGFkZXYsICZpbnRfcGFyYW1zLAo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG1fdnVwZGF0ZV9oaWdoX2lycSwgY19pcnFfcGFyYW1zKTsK PiA+PiArICAgIH0KPiA+PiArCj4gPj4gICAgICAvKiBVc2UgR1JQSF9QRkxJUCBpbnRlcnJ1cHQg Ki8KPiA+PiAgICAgIGZvciAoaSA9IFZJU0xBTkRTMzBfSVZfU1JDSURfRDFfR1JQSF9QRkxJUDsK PiA+PiAgICAgICAgICAgICAgICAgICAgICBpIDw9IFZJU0xBTkRTMzBfSVZfU1JDSURfRDZfR1JQ SF9QRkxJUDsgaSArPSAyKSB7Cj4gPj4gQEAgLTE1MzIsNiArMTU5MiwzNCBAQCBzdGF0aWMgaW50 IGRjbjEwX3JlZ2lzdGVyX2lycV9oYW5kbGVycyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikK PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtX2NydGNfaGlnaF9pcnEsIGNfaXJx X3BhcmFtcyk7Cj4gPj4gICAgICB9Cj4gPj4KPiA+PiArICAgIC8qIFVzZSBWVVBEQVRFX05PX0xP Q0sgaW50ZXJydXB0IG9uIERDTiwgd2hpY2ggc2VlbXMgdG8gY29ycmVzcG9uZCB0bwo+ID4+ICsg ICAgICogdGhlIHJlZ3VsYXIgVlVQREFURSBpbnRlcnJ1cHQgb24gRENFLiBXZSB3YW50IERDX0lS UV9TT1VSQ0VfVlVQREFURXgKPiA+PiArICAgICAqIHRvIHRyaWdnZXIgYXQgZW5kIG9mIGVhY2gg dmJsYW5rLCByZWdhcmRsZXNzIG9mIHN0YXRlIG9mIHRoZSBsb2NrLAo+ID4+ICsgICAgICogbWF0 Y2hpbmcgRENFIGJlaGF2aW91ci4KPiA+PiArICAgICAqLwo+ID4+ICsgICAgZm9yIChpID0gRENO XzFfMF9fU1JDSURfX09URzBfSUhDX1ZfVVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUOwo+ID4+ICsg ICAgICAgICBpIDw9IERDTl8xXzBfX1NSQ0lEX19PVEcwX0lIQ19WX1VQREFURV9OT19MT0NLX0lO VEVSUlVQVCArIGFkZXYtPm1vZGVfaW5mby5udW1fY3J0YyAtIDE7Cj4gPj4gKyAgICAgICAgIGkr Kykgewo+ID4+ICsgICAgICAgICAgICByID0gYW1kZ3B1X2lycV9hZGRfaWQoYWRldiwgU09DMTVf SUhfQ0xJRU5USURfRENFLCBpLCAmYWRldi0+dnVwZGF0ZV9pcnEpOwo+ID4+ICsKPiA+PiArICAg ICAgICAgICAgaWYgKHIpIHsKPiA+PiArICAgICAgICAgICAgICAgICAgICBEUk1fRVJST1IoIkZh aWxlZCB0byBhZGQgdnVwZGF0ZSBpcnEgaWQhXG4iKTsKPiA+PiArICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcjsKPiA+PiArICAgICAgICAgICAgfQo+ID4+ICsKPiA+PiArICAgICAgICAgICAg aW50X3BhcmFtcy5pbnRfY29udGV4dCA9IElOVEVSUlVQVF9ISUdIX0lSUV9DT05URVhUOwo+ID4+ ICsgICAgICAgICAgICBpbnRfcGFyYW1zLmlycV9zb3VyY2UgPQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgIGRjX2ludGVycnVwdF90b19pcnFfc291cmNlKGRjLCBpLCAwKTsKPiA+PiArCj4gPj4g KyAgICAgICAgICAgIGNfaXJxX3BhcmFtcyA9ICZhZGV2LT5kbS52dXBkYXRlX3BhcmFtc1tpbnRf cGFyYW1zLmlycV9zb3VyY2UgLSBEQ19JUlFfU09VUkNFX1ZVUERBVEUxXTsKPiA+PiArCj4gPj4g KyAgICAgICAgICAgIGNfaXJxX3BhcmFtcy0+YWRldiA9IGFkZXY7Cj4gPj4gKyAgICAgICAgICAg IGNfaXJxX3BhcmFtcy0+aXJxX3NyYyA9IGludF9wYXJhbXMuaXJxX3NvdXJjZTsKPiA+PiArCj4g Pj4gKyAgICAgICAgICAgIGFtZGdwdV9kbV9pcnFfcmVnaXN0ZXJfaW50ZXJydXB0KGFkZXYsICZp bnRfcGFyYW1zLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1fdnVwZGF0ZV9o aWdoX2lycSwgY19pcnFfcGFyYW1zKTsKPiA+PiArICAgIH0KPiA+PiArCj4gPj4gICAgICAvKiBV c2UgR1JQSF9QRkxJUCBpbnRlcnJ1cHQgKi8KPiA+PiAgICAgIGZvciAoaSA9IERDTl8xXzBfX1NS Q0lEX19IVUJQMF9GTElQX0lOVEVSUlVQVDsKPiA+PiAgICAgICAgICAgICAgICAgICAgICBpIDw9 IERDTl8xXzBfX1NSQ0lEX19IVUJQMF9GTElQX0lOVEVSUlVQVCArIGFkZXYtPm1vZGVfaW5mby5u dW1fY3J0YyAtIDE7Cj4gPj4gQEAgLTMyMjYsMTIgKzMzMTQsNDIgQEAgZG1fY3J0Y19kdXBsaWNh dGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4+ICAgICAgcmV0dXJuICZzdGF0ZS0+ YmFzZTsKPiA+PiAgICB9Cj4gPj4KPiA+PiArc3RhdGljIGlubGluZSBpbnQgZG1fc2V0X3Z1cGRh dGVfaXJxKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBlbmFibGUpCj4gPj4gK3sKPiA+PiAr ICAgIGVudW0gZGNfaXJxX3NvdXJjZSBpcnFfc291cmNlOwo+ID4+ICsgICAgc3RydWN0IGFtZGdw dV9jcnRjICphY3J0YyA9IHRvX2FtZGdwdV9jcnRjKGNydGMpOwo+ID4+ICsgICAgc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOwo+ID4+ICsgICAgaW50 IHJjOwo+ID4+ICsKPiA+PiArICAgIGlycV9zb3VyY2UgPSBJUlFfVFlQRV9WVVBEQVRFICsgYWNy dGMtPm90Z19pbnN0Owo+ID4+ICsKPiA+PiArICAgIHJjID0gZGNfaW50ZXJydXB0X3NldChhZGV2 LT5kbS5kYywgaXJxX3NvdXJjZSwgZW5hYmxlKSA/IDAgOiAtRUJVU1k7Cj4gPj4gKwo+ID4+ICsg ICAgRFJNX0RFQlVHX0RSSVZFUigiJXM6IGNydGMgJWQgLSB2dXBkYXRlIGlycSAlc2FibGluZzog cj0lZFxuIiwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGFjcnRjLT5jcnRj X2lkLCBlbmFibGUgPyAiZW4iIDogImRpcyIsIHJjKTsKPgo+IFRoaXMgZXh0cmEgX19mdW5jX18g aXMgcmVkdW5kYW50IGhlcmUuCj4KClllcC4gSSB0aGluayBtYXliZSB0aGUgd2hvbGUgZGVidWcg bWVzc2FnZSBpcyByZWR1bmRhbnQgYnkgbm93LiBNYXliZSBkcm9wIGl0PwoKPiA+PiArICAgIHJl dHVybiByYzsKPiA+PiArfQo+ID4+Cj4gPj4gICAgc3RhdGljIGlubGluZSBpbnQgZG1fc2V0X3Zi bGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgZW5hYmxlKQo+ID4+ICAgIHsKPiA+PiAg ICAgIGVudW0gZGNfaXJxX3NvdXJjZSBpcnFfc291cmNlOwo+ID4+ICAgICAgc3RydWN0IGFtZGdw dV9jcnRjICphY3J0YyA9IHRvX2FtZGdwdV9jcnRjKGNydGMpOwo+ID4+ICAgICAgc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOwo+ID4+ICsgICAgc3Ry dWN0IGRtX2NydGNfc3RhdGUgKmFjcnRjX3N0YXRlID0gdG9fZG1fY3J0Y19zdGF0ZShjcnRjLT5z dGF0ZSk7Cj4gPj4gKyAgICBpbnQgcmMgPSAwOwo+ID4+ICsKPiA+PiArICAgIGlmIChlbmFibGUp IHsKPiA+PiArICAgICAgICAgICAgLyogdmJsYW5rIGlycSBvbiAtPiBPbmx5IG5lZWQgdnVwZGF0 ZSBpcnEgaW4gdnJyIG1vZGUgKi8KPiA+PiArICAgICAgICAgICAgaWYgKGFtZGdwdV9kbV92cnJf YWN0aXZlKGFjcnRjX3N0YXRlKSkKPiA+PiArICAgICAgICAgICAgICAgICAgICByYyA9IGRtX3Nl dF92dXBkYXRlX2lycShjcnRjLCB0cnVlKTsKPiA+PiArICAgIH0KPiA+PiArICAgIGVsc2Ugewo+ ID4KPiA+IHNob3VsZCBiZSB9IGVsc2Ugewo+ID4KPiA+PiArICAgICAgICAgICAgLyogdmJsYW5r IGlycSBvZmYgLT4gdnVwZGF0ZSBpcnEgb2ZmICovCj4gPj4gKyAgICAgICAgICAgIHJjID0gZG1f c2V0X3Z1cGRhdGVfaXJxKGNydGMsIGZhbHNlKTsKPiA+PiArICAgIH0KPiA+PiArCj4gPj4gKyAg ICBpZiAocmMpCj4gPj4gKyAgICAgICAgICAgIHJldHVybiByYzsKPiA+Pgo+ID4+ICAgICAgaXJx X3NvdXJjZSA9IElSUV9UWVBFX1ZCTEFOSyArIGFjcnRjLT5vdGdfaW5zdDsKPiA+PiAgICAgIHJl dHVybiBkY19pbnRlcnJ1cHRfc2V0KGFkZXYtPmRtLmRjLCBpcnFfc291cmNlLCBlbmFibGUpID8g MCA6IC1FQlVTWTsKPiA+PiBAQCAtNDc0MSw3ICs0ODU5LDExIEBAIHN0YXRpYyB2b2lkIGFtZGdw dV9kbV9oYW5kbGVfdnJyX3RyYW5zaXRpb24oc3RydWN0IGRtX2NydGNfc3RhdGUgKm9sZF9zdGF0 ZSwKPiA+PiAgICAgICAgICAgICAgICogV2hpbGUgVlJSIGlzIGFjdGl2ZSwgd2UgbXVzdCBub3Qg ZGlzYWJsZSB2YmxhbmsgaXJxLCBhcyBhCj4gPj4gICAgICAgICAgICAgICAqIHJlZW5hYmxlIGFm dGVyIGRpc2FibGUgd291bGQgY29tcHV0ZSBib2d1cyB2YmxhbmsvcGZsaXAKPiA+PiAgICAgICAg ICAgICAgICogdGltZXN0YW1wcyBpZiBpdCBsaWtlbHkgaGFwcGVuZWQgaW5zaWRlIGRpc3BsYXkg ZnJvbnQtcG9yY2guCj4gPj4gKyAgICAgICAgICAgICAqCj4gPj4gKyAgICAgICAgICAgICAqIFdl IGFsc28gbmVlZCB2dXBkYXRlIGlycSBmb3IgdGhlIGFjdHVhbCBjb3JlIHZibGFuayBoYW5kbGlu Zwo+ID4+ICsgICAgICAgICAgICAgKiBhdCBlbmQgb2YgdmJsYW5rLgo+ID4+ICAgICAgICAgICAg ICAgKi8KPiA+PiArICAgICAgICAgICAgZG1fc2V0X3Z1cGRhdGVfaXJxKG5ld19zdGF0ZS0+YmFz ZS5jcnRjLCB0cnVlKTsKPiA+PiAgICAgICAgICAgICAgZHJtX2NydGNfdmJsYW5rX2dldChuZXdf c3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPj4gICAgICAgICAgICAgIERSTV9ERUJVR19EUklWRVIoIiVz OiBjcnRjPSV1IFZSUiBvZmYtPm9uOiBHZXQgdmJsYW5rIHJlZlxuIiwKPiA+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgbmV3X3N0YXRlLT5iYXNlLmNydGMtPmJhc2Uu aWQpOwo+ID4+IEBAIC00NzUwLDYgKzQ4NzIsNyBAQCBzdGF0aWMgdm9pZCBhbWRncHVfZG1faGFu ZGxlX3Zycl90cmFuc2l0aW9uKHN0cnVjdCBkbV9jcnRjX3N0YXRlICpvbGRfc3RhdGUsCj4gPj4g ICAgICAgICAgICAgIC8qIFRyYW5zaXRpb24gVlJSIGFjdGl2ZSAtPiBpbmFjdGl2ZToKPiA+PiAg ICAgICAgICAgICAgICogQWxsb3cgdmJsYW5rIGlycSBkaXNhYmxlIGFnYWluIGZvciBmaXhlZCBy ZWZyZXNoIHJhdGUuCj4gPj4gICAgICAgICAgICAgICAqLwo+ID4+ICsgICAgICAgICAgICBkbV9z ZXRfdnVwZGF0ZV9pcnEobmV3X3N0YXRlLT5iYXNlLmNydGMsIGZhbHNlKTsKPiA+PiAgICAgICAg ICAgICAgZHJtX2NydGNfdmJsYW5rX3B1dChuZXdfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gPj4gICAg ICAgICAgICAgIERSTV9ERUJVR19EUklWRVIoIiVzOiBjcnRjPSV1IFZSUiBvbi0+b2ZmOiBEcm9w IHZibGFuayByZWZcbiIsCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5j X18sIG5ld19zdGF0ZS0+YmFzZS5jcnRjLT5iYXNlLmlkKTsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmgKPiA+PiBpbmRleCBmNzQx ZWEzLi4wYjM1Zjg0IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9hbWRncHVfZG0vYW1kZ3B1X2RtLmgKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oCj4gPj4gQEAgLTE4Miw2ICsxODIsMTUgQEAgc3Ry dWN0IGFtZGdwdV9kaXNwbGF5X21hbmFnZXIgewo+ID4+ICAgICAgc3RydWN0IGNvbW1vbl9pcnFf cGFyYW1zCj4gPj4gICAgICB2YmxhbmtfcGFyYW1zW0RDX0lSUV9TT1VSQ0VfVkJMQU5LNiAtIERD X0lSUV9TT1VSQ0VfVkJMQU5LMSArIDFdOwo+ID4+Cj4gPj4gKyAgICAvKioKPiA+PiArICAgICAq IEB2dXBkYXRlX3BhcmFtczoKPiA+PiArICAgICAqCj4gPj4gKyAgICAgKiBWZXJ0aWNhbCB1cGRh dGUgSVJRIHBhcmFtZXRlcnMsIHBhc3NlZCB0byByZWdpc3RlcmVkIGhhbmRsZXJzIHdoZW4KPiA+ PiArICAgICAqIHRyaWdnZXJlZC4KPiA+PiArICAgICAqLwo+ID4+ICsgICAgc3RydWN0IGNvbW1v bl9pcnFfcGFyYW1zCj4gPj4gKyAgICB2dXBkYXRlX3BhcmFtc1tEQ19JUlFfU09VUkNFX1ZVUERB VEU2IC0gRENfSVJRX1NPVVJDRV9WVVBEQVRFMSArIDFdOwo+ID4+ICsKPiA+PiAgICAgIHNwaW5s b2NrX3QgaXJxX2hhbmRsZXJfbGlzdF90YWJsZV9sb2NrOwo+ID4+Cj4gPj4gICAgICBzdHJ1Y3Qg YmFja2xpZ2h0X2RldmljZSAqYmFja2xpZ2h0X2RldjsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYwo+ID4+IGluZGV4 IGNkMTBmNzcuLmZlZTc4MzcgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1faXJxLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9pcnEuYwo+ID4+IEBAIC02NzQsMTEg KzY3NCwzMCBAQCBzdGF0aWMgaW50IGFtZGdwdV9kbV9zZXRfY3J0Y19pcnFfc3RhdGUoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gPj4gICAgICAgICAgICAgIF9fZnVuY19fKTsKPiA+PiAg ICB9Cj4gPj4KPiA+PiArc3RhdGljIGludCBhbWRncHVfZG1fc2V0X3Z1cGRhdGVfaXJxX3N0YXRl KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMgKnNvdXJjZSwKPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY3J0Y19pZCwKPiA+ Cj4gPiBzaG91bGQgYmUgdW5zaWduZWQgaW50IGNydGNfaWQKPiA+Cj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gYW1kZ3B1X2ludGVycnVwdF9zdGF0ZSBz dGF0ZSkKPiA+PiArewo+ID4+ICsgICAgcmV0dXJuIGRtX2lycV9zdGF0ZSgKPiA+PiArICAgICAg ICAgICAgYWRldiwKPiA+PiArICAgICAgICAgICAgc291cmNlLAo+ID4+ICsgICAgICAgICAgICBj cnRjX2lkLAo+ID4+ICsgICAgICAgICAgICBzdGF0ZSwKPiA+PiArICAgICAgICAgICAgSVJRX1RZ UEVfVlVQREFURSwKPiA+PiArICAgICAgICAgICAgX19mdW5jX18pOwo+ID4+ICt9Cj4gPj4gKwo+ ID4+ICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmNfZnVuY3MgZG1fY3J0Y19p cnFfZnVuY3MgPSB7Cj4gPj4gICAgICAuc2V0ID0gYW1kZ3B1X2RtX3NldF9jcnRjX2lycV9zdGF0 ZSwKPiA+PiAgICAgIC5wcm9jZXNzID0gYW1kZ3B1X2RtX2lycV9oYW5kbGVyLAo+ID4+ICAgIH07 Cj4gPj4KPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfaXJxX3NyY19mdW5jcyBkbV92 dXBkYXRlX2lycV9mdW5jcyA9IHsKPiA+PiArICAgIC5zZXQgPSBhbWRncHVfZG1fc2V0X3Z1cGRh dGVfaXJxX3N0YXRlLAo+ID4+ICsgICAgLnByb2Nlc3MgPSBhbWRncHVfZG1faXJxX2hhbmRsZXIs Cj4gPj4gK307Cj4gPj4gKwo+ID4+ICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lycV9z cmNfZnVuY3MgZG1fcGFnZWZsaXBfaXJxX2Z1bmNzID0gewo+ID4+ICAgICAgLnNldCA9IGFtZGdw dV9kbV9zZXRfcGZsaXBfaXJxX3N0YXRlLAo+ID4+ICAgICAgLnByb2Nlc3MgPSBhbWRncHVfZG1f aXJxX2hhbmRsZXIsCj4gPj4gQEAgLTY5NSw2ICs3MTQsOSBAQCB2b2lkIGFtZGdwdV9kbV9zZXRf aXJxX2Z1bmNzKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQo+ID4+ICAgICAgYWRldi0+Y3J0 Y19pcnEubnVtX3R5cGVzID0gYWRldi0+bW9kZV9pbmZvLm51bV9jcnRjOwo+ID4+ICAgICAgYWRl di0+Y3J0Y19pcnEuZnVuY3MgPSAmZG1fY3J0Y19pcnFfZnVuY3M7Cj4gPj4KPiA+PiArICAgIGFk ZXYtPnZ1cGRhdGVfaXJxLm51bV90eXBlcyA9IGFkZXYtPm1vZGVfaW5mby5udW1fY3J0YzsKPiA+ PiArICAgIGFkZXYtPnZ1cGRhdGVfaXJxLmZ1bmNzID0gJmRtX3Z1cGRhdGVfaXJxX2Z1bmNzOwo+ ID4+ICsKPiA+PiAgICAgIGFkZXYtPnBhZ2VmbGlwX2lycS5udW1fdHlwZXMgPSBhZGV2LT5tb2Rl X2luZm8ubnVtX2NydGM7Cj4gPj4gICAgICBhZGV2LT5wYWdlZmxpcF9pcnEuZnVuY3MgPSAmZG1f cGFnZWZsaXBfaXJxX2Z1bmNzOwo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNlX2RjZTExMC5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY2UxMTAvaXJxX3NlcnZpY2VfZGNlMTEwLmMK PiA+PiBpbmRleCBhZmUwODc2Li44Njk4N2Y1IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNlMTEwL2lycV9zZXJ2aWNlX2RjZTExMC5jCj4gPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY2UxMTAvaXJxX3NlcnZp Y2VfZGNlMTEwLmMKPiA+PiBAQCAtODEsNiArODEsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBp cnFfc291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gewo+ID4+ICAgICAg LmFjayA9IE5VTEwKPiA+PiAgICB9Owo+ID4+Cj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJx X3NvdXJjZV9pbmZvX2Z1bmNzIHZ1cGRhdGVfaXJxX2luZm9fZnVuY3MgPSB7Cj4gPj4gKyAgICAu c2V0ID0gTlVMTCwKPiA+PiArICAgIC5hY2sgPSBOVUxMCj4gPj4gK307Cj4gPj4gKwo+ID4+ICAg ICNkZWZpbmUgaHBkX2ludF9lbnRyeShyZWdfbnVtKVwKPiA+PiAgICAgIFtEQ19JUlFfU09VUkNF X0hQRDEgKyByZWdfbnVtXSA9IHtcCj4gPj4gICAgICAgICAgICAgIC5lbmFibGVfcmVnID0gbW1I UEQgIyMgcmVnX251bSAjIyBfRENfSFBEX0lOVF9DT05UUk9MLFwKPiA+PiBAQCAtMTM3LDcgKzE0 Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZibGFua19p cnFfaW5mb19mdW5jcyA9IHsKPiA+PiAgICAgICAgICAgICAgQ1JUQ19WX1VQREFURV9JTlRfU1RB VFVTX19DUlRDX1ZfVVBEQVRFX0lOVF9DTEVBUl9NQVNLLFwKPiA+PiAgICAgICAgICAgICAgLmFj a192YWx1ZSA9XAo+ID4+ICAgICAgICAgICAgICBDUlRDX1ZfVVBEQVRFX0lOVF9TVEFUVVNfX0NS VENfVl9VUERBVEVfSU5UX0NMRUFSX01BU0ssXAo+ID4+IC0gICAgICAgICAgICAuZnVuY3MgPSAm dmJsYW5rX2lycV9pbmZvX2Z1bmNzXAo+ID4+ICsgICAgICAgICAgICAuZnVuY3MgPSAmdnVwZGF0 ZV9pcnFfaW5mb19mdW5jc1wKPiA+PiAgICAgIH0KPiA+Pgo+ID4+ICAgICNkZWZpbmUgdmJsYW5r X2ludF9lbnRyeShyZWdfbnVtKVwKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2RjL2lycS9kY2UxMjAvaXJxX3NlcnZpY2VfZGNlMTIwLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTEyMC9pcnFfc2VydmljZV9kY2UxMjAuYwo+ID4+ IGluZGV4IDFlYTcyNTYuLjc1MGJhMGEgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9kaXNwbGF5L2RjL2lycS9kY2UxMjAvaXJxX3NlcnZpY2VfZGNlMTIwLmMKPiA+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTEyMC9pcnFfc2VydmljZV9k Y2UxMjAuYwo+ID4+IEBAIC04NCw2ICs4NCwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlycV9z b3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7Cj4gPj4gICAgICAuYWNr ID0gTlVMTAo+ID4+ICAgIH07Cj4gPj4KPiA+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291 cmNlX2luZm9fZnVuY3MgdnVwZGF0ZV9pcnFfaW5mb19mdW5jcyA9IHsKPiA+PiArICAgIC5zZXQg PSBOVUxMLAo+ID4+ICsgICAgLmFjayA9IE5VTEwKPiA+PiArfTsKPiA+PiArCj4gPj4gICAgI2Rl ZmluZSBCQVNFX0lOTkVSKHNlZykgXAo+ID4+ICAgICAgRENFX0JBU0VfX0lOU1QwX1NFRyAjIyBz ZWcKPiA+Pgo+ID4+IEBAIC0xNDAsNyArMTQ1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFf c291cmNlX2luZm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gewo+ID4+ICAgICAgICAg ICAgICBJUlFfUkVHX0VOVFJZKENSVEMsIHJlZ19udW0sXAo+ID4+ICAgICAgICAgICAgICAgICAg ICAgIENSVENfSU5URVJSVVBUX0NPTlRST0wsIENSVENfVl9VUERBVEVfSU5UX01TSyxcCj4gPj4g ICAgICAgICAgICAgICAgICAgICAgQ1JUQ19WX1VQREFURV9JTlRfU1RBVFVTLCBDUlRDX1ZfVVBE QVRFX0lOVF9DTEVBUiksXAo+ID4+IC0gICAgICAgICAgICAuZnVuY3MgPSAmdmJsYW5rX2lycV9p bmZvX2Z1bmNzXAo+ID4+ICsgICAgICAgICAgICAuZnVuY3MgPSAmdnVwZGF0ZV9pcnFfaW5mb19m dW5jc1wKPiA+PiAgICAgIH0KPiA+Pgo+ID4+ICAgICNkZWZpbmUgdmJsYW5rX2ludF9lbnRyeShy ZWdfbnVtKVwKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2Rj L2lycS9kY2U4MC9pcnFfc2VydmljZV9kY2U4MC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2RjL2lycS9kY2U4MC9pcnFfc2VydmljZV9kY2U4MC5jCj4gPj4gaW5kZXggOGEyMDY2Yy4u ZGUyMThmZSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMv aXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvZGMvaXJxL2RjZTgwL2lycV9zZXJ2aWNlX2RjZTgwLmMKPiA+PiBAQCAtODQs NiArODQsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdmJs YW5rX2lycV9pbmZvX2Z1bmNzID0gewo+ID4+ICAgICAgLmFjayA9IE5VTEwKPiA+PiAgICB9Owo+ ID4+Cj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZ1cGRh dGVfaXJxX2luZm9fZnVuY3MgPSB7Cj4gPj4gKyAgICAuc2V0ID0gTlVMTCwKPiA+PiArICAgIC5h Y2sgPSBOVUxMCj4gPj4gK307Cj4gPj4KPiA+PiAgICAjZGVmaW5lIGhwZF9pbnRfZW50cnkocmVn X251bSlcCj4gPj4gICAgICBbRENfSVJRX1NPVVJDRV9JTlZBTElEICsgcmVnX251bV0gPSB7XAo+ ID4+IEBAIC0xNDIsNyArMTQ2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2lu Zm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gewo+ID4+ICAgICAgICAgICAgICBDUlRD X1ZfVVBEQVRFX0lOVF9TVEFUVVNfX0NSVENfVl9VUERBVEVfSU5UX0NMRUFSX01BU0ssXAo+ID4+ ICAgICAgICAgICAgICAuYWNrX3ZhbHVlID1cCj4gPj4gICAgICAgICAgICAgIENSVENfVl9VUERB VEVfSU5UX1NUQVRVU19fQ1JUQ19WX1VQREFURV9JTlRfQ0xFQVJfTUFTSyxcCj4gPj4gLSAgICAg ICAgICAgIC5mdW5jcyA9ICZ2YmxhbmtfaXJxX2luZm9fZnVuY3NcCj4gPj4gKyAgICAgICAgICAg IC5mdW5jcyA9ICZ2dXBkYXRlX2lycV9pbmZvX2Z1bmNzXAo+ID4+ICAgICAgfQo+ID4+Cj4gPj4g ICAgI2RlZmluZSB2YmxhbmtfaW50X2VudHJ5KHJlZ19udW0pXAo+ID4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjbjEwL2lycV9zZXJ2aWNlX2RjbjEw LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvaXJxL2RjbjEwL2lycV9zZXJ2aWNl X2RjbjEwLmMKPiA+PiBpbmRleCBlMDRhZTQ5Li4xMGFjNmRlIDEwMDY0NAo+ID4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNuMTAvaXJxX3NlcnZpY2VfZGNuMTAu Ywo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9pcnEvZGNuMTAvaXJx X3NlcnZpY2VfZGNuMTAuYwo+ID4+IEBAIC01Niw2ICs1NiwxOCBAQCBlbnVtIGRjX2lycV9zb3Vy Y2UgdG9fZGFsX2lycV9zb3VyY2VfZGNuMTAoCj4gPj4gICAgICAgICAgICAgIHJldHVybiBEQ19J UlFfU09VUkNFX1ZCTEFOSzU7Cj4gPj4gICAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19EQ19ENl9P VEdfVlNUQVJUVVA6Cj4gPj4gICAgICAgICAgICAgIHJldHVybiBEQ19JUlFfU09VUkNFX1ZCTEFO SzY7Cj4gPj4gKyAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19PVEcwX0lIQ19WX1VQREFURV9OT19M T0NLX0lOVEVSUlVQVDoKPiA+PiArICAgICAgICAgICAgcmV0dXJuIERDX0lSUV9TT1VSQ0VfVlVQ REFURTE7Cj4gPj4gKyAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19PVEcxX0lIQ19WX1VQREFURV9O T19MT0NLX0lOVEVSUlVQVDoKPiA+PiArICAgICAgICAgICAgcmV0dXJuIERDX0lSUV9TT1VSQ0Vf VlVQREFURTI7Cj4gPj4gKyAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19PVEcyX0lIQ19WX1VQREFU RV9OT19MT0NLX0lOVEVSUlVQVDoKPiA+PiArICAgICAgICAgICAgcmV0dXJuIERDX0lSUV9TT1VS Q0VfVlVQREFURTM7Cj4gPj4gKyAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19PVEczX0lIQ19WX1VQ REFURV9OT19MT0NLX0lOVEVSUlVQVDoKPiA+PiArICAgICAgICAgICAgcmV0dXJuIERDX0lSUV9T T1VSQ0VfVlVQREFURTQ7Cj4gPj4gKyAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19PVEc0X0lIQ19W X1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoKPiA+PiArICAgICAgICAgICAgcmV0dXJuIERDX0lS UV9TT1VSQ0VfVlVQREFURTU7Cj4gPj4gKyAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19PVEc1X0lI Q19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoKPiA+PiArICAgICAgICAgICAgcmV0dXJuIERD X0lSUV9TT1VSQ0VfVlVQREFURTY7Cj4KPiBJJ20gbm90IHN1cmUgd2UgbmVjZXNzYXJpbHkgd2Fu dCB0byByZXVzZSB0aGUgc2FtZQo+IERDX0lSUV9TT1VSQ0VfVlVQREFURTEuLi42IGRlZmluaXRp b25zIGhlcmUgYWdhaW4gd2hlbiBpdCdzIHJlYWxseQo+IFZfVVBEQVRFX05PX0xPQ0suCj4KCkht LiBUaGUgcHJvYmxlbSBpcyB0aGF0IGlmIHdlIHVzZSBkaWZmZXJlbnQgb25lcyBmb3IgRENFIGFu ZCBEQ04gd2UKbmVlZCBzcGVjaWFsLWNhc2UgaGFuZGxpbmcgaW4gYW1kZ3B1X2RtLmMsIGUuZy4s IGluCmFtZGdwdV9kbV9zZXRfdnVwZGF0ZV9pcnFfc3RhdGUoKSBhbmQgZG1fc2V0X3Z1cGRhdGVf aXJxKCkgdG8gZGV0ZWN0CmlmIGl0IGlzIGNhbGluZyBEQ0Ugb3IgRENOIChob3cgdG8gZGV0ZWN0 IHRoaXM/KSB0byBzZWxlY3QgZGlmZmVyZW50CmlycSBzb3VyY2VzIElSUV9UWVBFX1ZVUERBVEUg dnMgSVJRX1RZUEVfVlVQREFURV9OT19MT0NLIGFuZCBzdWNoPwpBbmQgZGVmaW5pdGlvbnMgbGlr ZSAic3RydWN0IGFtZGdwdV9pcnFfc3JjIHZ1cGRhdGVfaXJxOyIgc2hvdWxkIHRoZW4KYWxzbyBl eGlzdCB0d2ljZSBhcyB2dXBkYXRlX2lycSBhbmQgdnVwZGF0ZV9pcnFfbm9fbG9jayBmb3IgY29y cmVjdApuYW1pbmc/CgpPciB3ZSdkIG5hbWUgdGhlIElSUSBzb3VyY2UgYW5kIGFsbCByZWxldmFu dCBkYXRhIHN0cnVjdHVyZXMgYW5kCmZ1bmN0aW9ucyBzb21ldGhpbmcgbGlrZSBEQ19JUlFfU09V UkNFX1ZCTEFOS19FTkQxLi42IHRvIGRlc2NyaWJlIHdoYXQKaXQgc2lnbmFscyBpbnN0ZWFkIG9m IHRvIHdoYXQgaXQgY29ycmVzcG9uZHMgaW4gaGFyZHdhcmU/IFRoYXQgd291bGQKYmUgd2hhdCB3 YXMgZG9uZSB3aXRoIHRoZSByZWd1bGFyIERDX0lSUV9TT1VSQ0VfVkJMQU5LMS4uNi4gSXQgc2ln bmFscwpzdGFydCBvZiB2YmxhbmssIGJ1dCB0aGUgdW5kZXJseWluZyBodyBpbnRlcnJ1cHRzIGFy ZSBhY3R1YWxseSBhCnByb3Blcmx5IHByb2dyYW1tZWQgVkxJTkUwIGlycSBvbiBEQ0UgYW5kIGEg VlNUQVJUVVAgaXJxIG9uIERDTi4KCk9mIGNvdXJzZSB0aGlzIGFsbCBhc3N1bWVzIHdlIG5lZWQg dG8gdXNlIHRoZSBOT19MT0NLIHZhcmlhbnQgb24gRENOPwpXZSBoYXZlbid0IHRlc3RlZCB3aGF0 IHRoZSByZWd1bGFyIFZVUERBVEVfSVJRIGRvZXMsIGJlY2F1c2UgaSBkb24ndApoYXZlIGEgc3Vp dGFibGUgdGVzdCBtYWNoaW5lLCBhbmQgbXkgdXNlIG9mIHRoZSBOT19MT0NLIHZhcmlhbnQgd2Fz Cmp1c3QgYmFzZWQgb24gbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBsaXR0bGUgY29tbWVudCBp biB0aGUgRENOCmhlYWRlciBmaWxlOgoKI2RlZmluZSBEQ05fMV8wX19TUkNJRF9fT1RHMF9JSENf Vl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQgMHg1NyAvLwoiT1RHMCBWVVBEQVRFIGV2ZW50IHdp dGhvdXQgbG9jayBpbnRlcnJ1cHQsIFZVUERBVEUgaXMgdXBkYXRlIGV2ZW50CmZvciBkb3VibGUg YnVmZmVyZWQgcmVnaXN0ZXJzIgoKYW5kIHRoZSBhYnNlbmNlIG9mIGFueSBleHBsYW5hdG9yeSBj b21tZW50IGluIHRoZSBkZWZpbmUgb2YgcmVndWxhciBWX1VQREFURToKCiNkZWZpbmUgRENOXzFf MF9fU1JDSURfX0RDX0QxX09UR19WX1VQREFURSAweDE4IC8vIEQxIDogT1RHIFZfdXBkYXRlCk9U RzFfSUhDX1ZfVVBEQVRFX0lOVEVSUlVQVAoKSSBhc3N1bWVkIHRoZSBOT19MT0NLIG1lYW5zIG5v dCBhZmZlY3RlZCBieSB0aGUgc3RhdGUgb2YgYW55IG9mIHRoZSBodwpsb2Nrcywgc28gcmVndWxh ciBWX1VQREFURSBtaWdodCBiZSBhZmZlY3RlZCBieSB0aGVtLiBZb3UgYWdyZWVkIHdpdGgKdGhh dCwgYnV0IHdlIG5ldmVyIHRlc3RlZCB3aGF0IHJlZ3VsYXIgVl9VUERBVEUgd291bGQgZG8gb24g RENOLiBEbyB3ZQphY3R1YWxseSBrbm93IGZvciBzdXJlIGZyb20gaHcgc3BlY3MgdGhhdCBpdCB3 b3VsZCBub3Qgd29yaywgaWUuIG5vdAp1bmNvbmRpdGlvbmFsbHkgZmlyZSB0aGUgSVJRIGF0IGV2 ZXJ5IGVuZCBvZiBWQkxBTkssIGFzIHdlIG5lZWQ/CgoKPiA+PiAgICAgIGNhc2UgRENOXzFfMF9f U1JDSURfX0hVQlAwX0ZMSVBfSU5URVJSVVBUOgo+ID4+ICAgICAgICAgICAgICByZXR1cm4gRENf SVJRX1NPVVJDRV9QRkxJUDE7Cj4gPj4gICAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19IVUJQMV9G TElQX0lOVEVSUlVQVDoKPiA+PiBAQCAtMTUzLDYgKzE2NSwxMSBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGlycV9zb3VyY2VfaW5mb19mdW5jcyB2YmxhbmtfaXJxX2luZm9fZnVuY3MgPSB7Cj4gPj4g ICAgICAuYWNrID0gTlVMTAo+ID4+ICAgIH07Cj4gPj4KPiA+PiArc3RhdGljIGNvbnN0IHN0cnVj dCBpcnFfc291cmNlX2luZm9fZnVuY3MgdnVwZGF0ZV9ub19sb2NrX2lycV9pbmZvX2Z1bmNzID0g ewo+ID4+ICsgICAgLnNldCA9IE5VTEwsCj4gPj4gKyAgICAuYWNrID0gTlVMTAo+ID4+ICt9Owo+ ID4+ICsKPiA+PiAgICAjZGVmaW5lIEJBU0VfSU5ORVIoc2VnKSBcCj4gPj4gICAgICBEQ0VfQkFT RV9fSU5TVDBfU0VHICMjIHNlZwo+ID4+Cj4gPj4gQEAgLTIwMywxMiArMjIwLDE1IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaXJxX3NvdXJjZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5j cyA9IHsKPiA+PiAgICAgICAgICAgICAgLmZ1bmNzID0gJnBmbGlwX2lycV9pbmZvX2Z1bmNzXAo+ ID4+ICAgICAgfQo+ID4+Cj4gPj4gLSNkZWZpbmUgdnVwZGF0ZV9pbnRfZW50cnkocmVnX251bSlc Cj4gPj4gKy8qIHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkgbWFwcyB0byBEQ19JUlFfU09VUkNF X1ZVUERBVEV4LCB0byBtYXRjaCBzZW1hbnRpYwo+ID4+ICsgKiBvZiBEQ0UncyBEQ19JUlFfU09V UkNFX1ZVUERBVEV4Lgo+ID4+ICsgKi8KPiA+PiArI2RlZmluZSB2dXBkYXRlX25vX2xvY2tfaW50 X2VudHJ5KHJlZ19udW0pXAo+ID4+ICAgICAgW0RDX0lSUV9TT1VSQ0VfVlVQREFURTEgKyByZWdf bnVtXSA9IHtcCj4gPj4gICAgICAgICAgICAgIElSUV9SRUdfRU5UUlkoT1RHLCByZWdfbnVtLFwK PiA+PiAtICAgICAgICAgICAgICAgICAgICBPVEdfR0xPQkFMX1NZTkNfU1RBVFVTLCBWVVBEQVRF X0lOVF9FTixcCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgT1RHX0dMT0JBTF9TWU5DX1NUQVRV UywgVlVQREFURV9FVkVOVF9DTEVBUiksXAo+ID4+IC0gICAgICAgICAgICAuZnVuY3MgPSAmdmJs YW5rX2lycV9pbmZvX2Z1bmNzXAo+ID4+ICsgICAgICAgICAgICAgICAgICAgIE9UR19HTE9CQUxf U1lOQ19TVEFUVVMsIFZVUERBVEVfTk9fTE9DS19JTlRfRU4sXAo+ID4+ICsgICAgICAgICAgICAg ICAgICAgIE9UR19HTE9CQUxfU1lOQ19TVEFUVVMsIFZVUERBVEVfTk9fTE9DS19FVkVOVF9DTEVB UiksXAo+ID4+ICsgICAgICAgICAgICAuZnVuY3MgPSAmdnVwZGF0ZV9ub19sb2NrX2lycV9pbmZv X2Z1bmNzXAo+ID4+ICAgICAgfQo+ID4+Cj4gPj4gICAgI2RlZmluZSB2YmxhbmtfaW50X2VudHJ5 KHJlZ19udW0pXAo+ID4+IEBAIC0zMTUsMTIgKzMzNSwxMiBAQCBpcnFfc291cmNlX2luZm9fZGNu MTBbREFMX0lSUV9TT1VSQ0VTX05VTUJFUl0gPSB7Cj4gPj4gICAgICBkY191bmRlcmZsb3dfaW50 X2VudHJ5KDYpLAo+ID4+ICAgICAgW0RDX0lSUV9TT1VSQ0VfRE1DVV9TQ1BdID0gZHVtbXlfaXJx X2VudHJ5KCksCj4gPj4gICAgICBbRENfSVJRX1NPVVJDRV9WQklPU19TV10gPSBkdW1teV9pcnFf ZW50cnkoKSwKPiA+PiAtICAgIHZ1cGRhdGVfaW50X2VudHJ5KDApLAo+ID4+IC0gICAgdnVwZGF0 ZV9pbnRfZW50cnkoMSksCj4gPj4gLSAgICB2dXBkYXRlX2ludF9lbnRyeSgyKSwKPiA+PiAtICAg IHZ1cGRhdGVfaW50X2VudHJ5KDMpLAo+ID4+IC0gICAgdnVwZGF0ZV9pbnRfZW50cnkoNCksCj4g Pj4gLSAgICB2dXBkYXRlX2ludF9lbnRyeSg1KSwKPgo+IEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxk IGJlIG5lY2Vzc2FyaWx5IGRyb3BwaW5nIHRoZXNlLCBidXQgSSBndWVzcyBpdAo+IGNvdWxkIGdv IGVpdGhlciB3YXkgc2luY2UgdGhlc2UgSVJRcyB0ZWNobmljYWxseSBhcmVuJ3QgZGVmaW5lZC4K PgoKV2UgY291bGQga2VlcCBib3RoIGRlZmluaXRpb25zIGFyb3VuZCwgb3JpZ2luYWwgdnVwZGF0 ZV9pbnRfZW50cnkgKwp0aGUgbmV3IHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkuCgotbWFyaW8K Cj4gPj4gKyAgICB2dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KDApLAo+ID4+ICsgICAgdnVwZGF0 ZV9ub19sb2NrX2ludF9lbnRyeSgxKSwKPiA+PiArICAgIHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50 cnkoMiksCj4gPj4gKyAgICB2dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KDMpLAo+ID4+ICsgICAg dnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSg0KSwKPiA+PiArICAgIHZ1cGRhdGVfbm9fbG9ja19p bnRfZW50cnkoNSksCj4gPj4gICAgICB2YmxhbmtfaW50X2VudHJ5KDApLAo+ID4+ICAgICAgdmJs YW5rX2ludF9lbnRyeSgxKSwKPiA+PiAgICAgIHZibGFua19pbnRfZW50cnkoMiksCj4gPj4KPiA+ Cj4gPiBOaWNob2xhcyBLYXpsYXVza2FzCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwo+ID4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPiA+IGFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPiA+Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVs