From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 1/6] drm/i915: Use atomic state to obtain load detection crtc. Date: Tue, 2 Feb 2016 11:41:55 +0100 Message-ID: <56B087F3.7080906@linux.intel.com> References: <1454334242-23354-1-git-send-email-maarten.lankhorst@linux.intel.com> <1454334242-23354-2-git-send-email-maarten.lankhorst@linux.intel.com> <20160201160835.GQ23290@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id E4EF86E569 for ; Tue, 2 Feb 2016 02:41:57 -0800 (PST) In-Reply-To: <20160201160835.GQ23290@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDEtMDItMTYgb20gMTc6MDggc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6Cj4gT24gTW9uLCBG ZWIgMDEsIDIwMTYgYXQgMDI6NDM6NTdQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6 Cj4+IEluc3RlYWQgb2YgcmVzdG9yaW5nIGRwbXMgYW5kIGEgZmxhZyBmb3Igd2hldGhlciBhIHRl bXAgZmIgaXMgYWxsb2NhdGVkIGR1cGxpY2F0ZQo+PiB0aGUgb2xkIHBsYW5lX3N0YXRlIGFuZCBj cnRjX3N0YXRlLCBhbmQgcmVzdG9yZSB0aGUgbWVtYmVycyB3ZSBwb3RlbnRpYWxseSB0b3VjaGVk Lgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9y c3RAbGludXguaW50ZWwuY29tPgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyB8IDEyOCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+PiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICA0ICstCj4+ICAyIGZpbGVz IGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IGluZGV4IDRkOGM5Zjc4NTdkYi4uMDcwMmNlOGVj MzZhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IEBAIC0xMDM2 MSw2ICsxMDM2MSw3IEBAIG1vZGVfZml0c19pbl9mYmRldihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+PiAgCWlmIChvYmotPmJhc2Uuc2l6ZSA8IG1vZGUtPnZkaXNwbGF5ICogZmItPnBpdGNoZXNb MF0pCj4+ICAJCXJldHVybiBOVUxMOwo+PiAgCj4+ICsJZHJtX2ZyYW1lYnVmZmVyX3JlZmVyZW5j ZShmYik7Cj4+ICAJcmV0dXJuIGZiOwo+PiAgI2Vsc2UKPj4gIAlyZXR1cm4gTlVMTDsKPj4gQEAg LTEwNDI2LDYgKzEwNDI3LDkgQEAgYm9vbCBpbnRlbF9nZXRfbG9hZF9kZXRlY3RfcGlwZShzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAgCQkgICAgICBlbmNvZGVyLT5iYXNlLmlk LCBlbmNvZGVyLT5uYW1lKTsKPj4gIAo+PiAgcmV0cnk6Cj4+ICsJb2xkLT5vbGRfcGlwZV9jb25m aWcgPSBOVUxMOwo+PiArCW9sZC0+b2xkX3BsYW5lX3N0YXRlID0gTlVMTDsKPj4gKwo+PiAgCXJl dCA9IGRybV9tb2Rlc2V0X2xvY2soJmNvbmZpZy0+Y29ubmVjdGlvbl9tdXRleCwgY3R4KTsKPj4g IAlpZiAocmV0KQo+PiAgCQlnb3RvIGZhaWw7Cj4+IEBAIC0xMDQ0MSwyNCArMTA0NDUsMTUgQEAg cmV0cnk6Cj4+ICAJICovCj4+ICAKPj4gIAkvKiBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgQ1JU QyBmb3IgdGhpcyBjb25uZWN0b3IgKi8KPj4gLQlpZiAoZW5jb2Rlci0+Y3J0Yykgewo+PiAtCQlj cnRjID0gZW5jb2Rlci0+Y3J0YzsKPj4gKwlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yykgewo+ PiArCQljcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKPj4gIAo+PiAgCQlyZXQgPSBkcm1f bW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgY3R4KTsKPj4gIAkJaWYgKHJldCkKPj4gIAkJCWdv dG8gZmFpbDsKPj4gLQkJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+cHJpbWFyeS0+bXV0 ZXgsIGN0eCk7Cj4+IC0JCWlmIChyZXQpCj4+IC0JCQlnb3RvIGZhaWw7Cj4+IC0KPj4gLQkJb2xk LT5kcG1zX21vZGUgPSBjb25uZWN0b3ItPmRwbXM7Cj4+IC0JCW9sZC0+bG9hZF9kZXRlY3RfdGVt cCA9IGZhbHNlOwo+PiAgCj4+ICAJCS8qIE1ha2Ugc3VyZSB0aGUgY3J0YyBhbmQgY29ubmVjdG9y IGFyZSBydW5uaW5nICovCj4+IC0JCWlmIChjb25uZWN0b3ItPmRwbXMgIT0gRFJNX01PREVfRFBN U19PTikKPj4gLQkJCWNvbm5lY3Rvci0+ZnVuY3MtPmRwbXMoY29ubmVjdG9yLCBEUk1fTU9ERV9E UE1TX09OKTsKPj4gLQo+PiAtCQlyZXR1cm4gdHJ1ZTsKPj4gKwkJZ290byBmb3VuZDsKPj4gIAl9 Cj4+ICAKPj4gIAkvKiBGaW5kIGFuIHVudXNlZCBvbmUgKGlmIHBvc3NpYmxlKSAqLwo+PiBAQCAt MTA0NjYsOCArMTA0NjEsMTUgQEAgcmV0cnk6Cj4+ICAJCWkrKzsKPj4gIAkJaWYgKCEoZW5jb2Rl ci0+cG9zc2libGVfY3J0Y3MgJiAoMSA8PCBpKSkpCj4+ICAJCQljb250aW51ZTsKPj4gLQkJaWYg KHBvc3NpYmxlX2NydGMtPnN0YXRlLT5lbmFibGUpCj4+ICsKPj4gKwkJcmV0ID0gZHJtX21vZGVz ZXRfbG9jaygmcG9zc2libGVfY3J0Yy0+bXV0ZXgsIGN0eCk7Cj4+ICsJCWlmIChyZXQpCj4+ICsJ CQlnb3RvIGZhaWw7Cj4+ICsKPj4gKwkJaWYgKHBvc3NpYmxlX2NydGMtPnN0YXRlLT5lbmFibGUp IHsKPj4gKwkJCWRybV9tb2Rlc2V0X3VubG9jaygmcG9zc2libGVfY3J0Yy0+bXV0ZXgpOwo+PiAg CQkJY29udGludWU7Cj4+ICsJCX0KPj4gIAo+PiAgCQljcnRjID0gcG9zc2libGVfY3J0YzsKPj4g IAkJYnJlYWs7Cj4+IEBAIC0xMDQ4MSwxNyArMTA0ODMsMTkgQEAgcmV0cnk6Cj4+ICAJCWdvdG8g ZmFpbDsKPj4gIAl9Cj4+ICAKPj4gLQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRl eCwgY3R4KTsKPj4gLQlpZiAocmV0KQo+PiAtCQlnb3RvIGZhaWw7Cj4+ICtmb3VuZDoKPj4gKwlp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4gKwo+PiAgCXJldCA9IGRybV9tb2Rl c2V0X2xvY2soJmNydGMtPnByaW1hcnktPm11dGV4LCBjdHgpOwo+PiAgCWlmIChyZXQpCj4+ICAJ CWdvdG8gZmFpbDsKPj4gIAo+PiAtCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ PiAtCW9sZC0+ZHBtc19tb2RlID0gY29ubmVjdG9yLT5kcG1zOwo+PiAtCW9sZC0+bG9hZF9kZXRl Y3RfdGVtcCA9IHRydWU7Cj4+IC0Jb2xkLT5yZWxlYXNlX2ZiID0gTlVMTDsKPj4gKwlvbGQtPm9s ZF9waXBlX2NvbmZpZyA9IGludGVsX2NydGNfZHVwbGljYXRlX3N0YXRlKGNydGMpOwo+PiArCW9s ZC0+b2xkX3BsYW5lX3N0YXRlID0gaW50ZWxfcGxhbmVfZHVwbGljYXRlX3N0YXRlKGNydGMtPnBy aW1hcnkpOwo+PiArCWlmICghb2xkLT5vbGRfcGlwZV9jb25maWcgfHwgIW9sZC0+b2xkX3BsYW5l X3N0YXRlKSB7Cj4+ICsJCXJldCA9IC1FTk9NRU07Cj4+ICsJCWdvdG8gZmFpbDsKPj4gKwl9Cj4+ ICAKPj4gIAlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPj4gIAlpZiAoIXN0 YXRlKQo+PiBAQCAtMTA1MDUsNyArMTA1MDksOSBAQCByZXRyeToKPj4gIAkJZ290byBmYWlsOwo+ PiAgCX0KPj4gIAo+PiAtCWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YyA9IGNydGM7Cj4+ICsJcmV0ID0g ZHJtX2F0b21pY19zZXRfY3J0Y19mb3JfY29ubmVjdG9yKGNvbm5lY3Rvcl9zdGF0ZSwgY3J0Yyk7 Cj4+ICsJaWYgKHJldCkKPj4gKwkJZ290byBmYWlsOwo+PiAgCj4+ICAJY3J0Y19zdGF0ZSA9IGlu dGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4+ICAJaWYgKElT X0VSUihjcnRjX3N0YXRlKSkgewo+PiBAQCAtMTA1MjksNyArMTA1MzUsNiBAQCByZXRyeToKPj4g IAlpZiAoZmIgPT0gTlVMTCkgewo+PiAgCQlEUk1fREVCVUdfS01TKCJjcmVhdGluZyB0bXAgZmIg Zm9yIGxvYWQtZGV0ZWN0aW9uXG4iKTsKPj4gIAkJZmIgPSBpbnRlbF9mcmFtZWJ1ZmZlcl9jcmVh dGVfZm9yX21vZGUoZGV2LCBtb2RlLCAyNCwgMzIpOwo+PiAtCQlvbGQtPnJlbGVhc2VfZmIgPSBm YjsKPj4gIAl9IGVsc2UKPj4gIAkJRFJNX0RFQlVHX0tNUygicmV1c2luZyBmYmRldiBmb3IgbG9h ZC1kZXRlY3Rpb24gZnJhbWVidWZmZXJcbiIpOwo+PiAgCWlmIChJU19FUlIoZmIpKSB7Cj4+IEBA IC0xMDU0MSwxNSArMTA1NDYsMTYgQEAgcmV0cnk6Cj4+ICAJaWYgKHJldCkKPj4gIAkJZ290byBm YWlsOwo+PiAgCj4+IC0JZHJtX21vZGVfY29weSgmY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLCBtb2Rl KTsKPj4gKwlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2UoZmIpOwo+PiArCj4+ICsJcmV0ID0g ZHJtX2F0b21pY19zZXRfbW9kZV9mb3JfY3J0YygmY3J0Y19zdGF0ZS0+YmFzZSwgbW9kZSk7Cj4+ ICsJaWYgKHJldCkKPj4gKwkJZ290byBmYWlsOwo+PiAgCj4+ICAJaWYgKGRybV9hdG9taWNfY29t bWl0KHN0YXRlKSkgewo+PiAgCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gc2V0IG1vZGUgb24g bG9hZC1kZXRlY3QgcGlwZVxuIik7Cj4+IC0JCWlmIChvbGQtPnJlbGVhc2VfZmIpCj4+IC0JCQlv bGQtPnJlbGVhc2VfZmItPmZ1bmNzLT5kZXN0cm95KG9sZC0+cmVsZWFzZV9mYik7Cj4+ICAJCWdv dG8gZmFpbDsKPj4gIAl9Cj4+IC0JY3J0Yy0+cHJpbWFyeS0+Y3J0YyA9IGNydGM7Cj4+ICAKPj4g IAkvKiBsZXQgdGhlIGNvbm5lY3RvciBnZXQgdGhyb3VnaCBvbmUgZnVsbCBjeWNsZSBiZWZvcmUg dGVzdGluZyAqLwo+PiAgCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBp cGUpOwo+PiBAQCAtMTA1NTksNiArMTA1NjUsMTIgQEAgZmFpbDoKPj4gIAlkcm1fYXRvbWljX3N0 YXRlX2ZyZWUoc3RhdGUpOwo+PiAgCXN0YXRlID0gTlVMTDsKPj4gIAo+PiArCWlmIChvbGQtPm9s ZF9waXBlX2NvbmZpZykKPj4gKwkJaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKGNydGMsIG9sZC0+ b2xkX3BpcGVfY29uZmlnKTsKPj4gKwo+PiArCWlmIChvbGQtPm9sZF9wbGFuZV9zdGF0ZSkKPj4g KwkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZShjcnRjLT5wcmltYXJ5LCBvbGQtPm9sZF9wbGFu ZV9zdGF0ZSk7Cj4+ICsKPj4gIAlpZiAocmV0ID09IC1FREVBRExLKSB7Cj4+ICAJCWRybV9tb2Rl c2V0X2JhY2tvZmYoY3R4KTsKPj4gIAkJZ290byByZXRyeTsKPj4gQEAgLTEwNTc1LDYxICsxMDU4 Nyw2OSBAQCB2b2lkIGludGVsX3JlbGVhc2VfbG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAo+PiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNv ZGVyID0KPj4gIAkJaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihjb25uZWN0b3IpOwo+PiAgCXN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZpbnRlbF9lbmNvZGVyLT5iYXNlOwo+PiAtCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IGVuY29kZXItPmNydGM7Cj4+ICsJc3RydWN0IGRybV9jcnRjICpj cnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKPj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4+ICAJc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlOwo+PiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3Rh dGU7Cj4+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4+ICsJc3RydWN0 IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4+ICAJaW50IHJldDsKPj4gIAo+PiAgCURS TV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6JXNdLCBbRU5DT0RFUjolZDolc11cbiIsCj4+ICAJ CSAgICAgIGNvbm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT5uYW1lLAo+PiAgCQkgICAgICBl bmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyLT5uYW1lKTsKPj4gIAo+PiAtCWlmIChvbGQtPmxvYWRf ZGV0ZWN0X3RlbXApIHsKPj4gLQkJc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7 Cj4+IC0JCWlmICghc3RhdGUpCj4+IC0JCQlnb3RvIGZhaWw7Cj4+ICsJaWYgKCFvbGQtPm9sZF9w aXBlX2NvbmZpZykKPj4gKwkJcmV0dXJuOwo+PiAgCj4+IC0JCXN0YXRlLT5hY3F1aXJlX2N0eCA9 IGN0eDsKPj4gKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPj4gKwlpZiAo IXN0YXRlKQo+PiArCQlnb3RvIGZhaWw7Cj4+ICAKPj4gLQkJY29ubmVjdG9yX3N0YXRlID0gZHJt X2F0b21pY19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOwo+PiAtCQlpZiAo SVNfRVJSKGNvbm5lY3Rvcl9zdGF0ZSkpCj4+IC0JCQlnb3RvIGZhaWw7Cj4+ICsJc3RhdGUtPmFj cXVpcmVfY3R4ID0gY3R4Owo+PiAgCj4+IC0JCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0 X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+PiAtCQlpZiAoSVNfRVJSKGNydGNfc3Rh dGUpKQo+PiAtCQkJZ290byBmYWlsOwo+PiArCWNvbm5lY3Rvcl9zdGF0ZSA9IGRybV9hdG9taWNf Z2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yKTsKPj4gKwlpZiAoSVNfRVJSKGNv bm5lY3Rvcl9zdGF0ZSkpCj4+ICsJCWdvdG8gZmFpbDsKPj4gIAo+PiAtCQljb25uZWN0b3Jfc3Rh dGUtPmNydGMgPSBOVUxMOwo+PiArCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNf c3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+PiArCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCj4+ ICsJCWdvdG8gZmFpbDsKPj4gIAo+PiAtCQljcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSA9IGNydGNf c3RhdGUtPmJhc2UuYWN0aXZlID0gZmFsc2U7Cj4+ICsJcGxhbmVfc3RhdGUgPSBkcm1fYXRvbWlj X2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwgY3J0Yy0+cHJpbWFyeSk7Cj4+ICsJaWYgKElTX0VSUihw bGFuZV9zdGF0ZSkpCj4+ICsJCWdvdG8gZmFpbDsKPj4gIAo+PiAtCQlyZXQgPSBpbnRlbF9tb2Rl c2V0X3NldHVwX3BsYW5lX3N0YXRlKHN0YXRlLCBjcnRjLCBOVUxMLCBOVUxMLAo+PiAtCQkJCQkJ ICAgICAgMCwgMCk7Cj4+ICsJaWYgKCFvbGQtPm9sZF9waXBlX2NvbmZpZy0+ZW5hYmxlKSB7Cj4+ ICsJCXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25uZWN0b3Jfc3Rh dGUsIE5VTEwpOwo+PiAgCQlpZiAocmV0KQo+PiAgCQkJZ290byBmYWlsOwo+PiArCX0KPj4gIAo+ PiAtCQlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4+IC0JCWlmIChyZXQpCj4+IC0J CQlnb3RvIGZhaWw7Cj4+ICsJY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUgPSBvbGQtPm9sZF9waXBl X2NvbmZpZy0+ZW5hYmxlOwo+PiArCWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlID0gb2xkLT5vbGRf cGlwZV9jb25maWctPmFjdGl2ZTsKPj4gIAo+PiAtCQlpZiAob2xkLT5yZWxlYXNlX2ZiKSB7Cj4+ IC0JCQlkcm1fZnJhbWVidWZmZXJfdW5yZWdpc3Rlcl9wcml2YXRlKG9sZC0+cmVsZWFzZV9mYik7 Cj4+IC0JCQlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2Uob2xkLT5yZWxlYXNlX2ZiKTsKPj4g LQkJfQo+PiArCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFuZShwbGFuZV9zdGF0ZSwgb2xkLT5v bGRfcGxhbmVfc3RhdGUtPmZiKTsKPj4gKwlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRjX2Zvcl9w bGFuZShwbGFuZV9zdGF0ZSwgb2xkLT5vbGRfcGxhbmVfc3RhdGUtPmNydGMpOwo+PiArCWlmIChy ZXQpCj4+ICsJCWdvdG8gZmFpbDsKPj4gIAo+PiAtCQlyZXR1cm47Cj4+IC0JfQo+PiArCW9sZC0+ b2xkX3BsYW5lX3N0YXRlLT5zdGF0ZSA9IHBsYW5lX3N0YXRlLT5zdGF0ZTsKPj4gKwkqcGxhbmVf c3RhdGUgPSAqb2xkLT5vbGRfcGxhbmVfc3RhdGU7Cj4gVGhpcyBwYXJ0IGxvb2tzIG1lc3N5LiBJ IGRvbid0IHRoaW5rIHRoZXJlJ3MgYW55IHJlYXNvbiBhbnlvbmUKPiBpbnRlcmVzdGVkIGluIGxv YWQgZGV0ZWN0aW9uIHNob3VsZCBuZWVkIHRvIGRvIHRoZXNlIHNvcnQgb2YKPiBneW1uYXN0aWNz IG1hbnVhbGx5LiBTbyB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIHNvbWUga2luZCBvZiBuaWNlCj4g dGhpbmcgdG8ganVzdCB0ZWxsIGF0b21pYyB0aGF0Ogo+ICJpIGhhdmUgdGhpcyBvbGQgcGxhbmUv Y3J0Yy9jb25uZWN0b3IvZXRjLiBzdGF0ZSBoZXJlLCBwbGVhc2UKPiBqdXN0IHJlc3RvcmUgaXQi CldlIGNvdWxkIGNyZWF0ZSAyIGF0b21pYyBzdGF0ZXMsIHVwZGF0ZSB0aGUgZmlyc3Qgb25lLCBh bmQgY29tbWl0IHRoZSBzZWNvbmQgb25lIGluIHJlbGVhc2VfbG9hZF9kZXRlY3RfcGlwZS4KCn5N YWFydGVuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==