From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 2/2] drm/dp: add DPCD/AUX logging Date: Thu, 22 Dec 2016 10:54:53 +0200 Message-ID: <1482396893.16200.6.camel@intel.com> References: <1456434906-29600-1-git-send-email-robdclark@gmail.com> <1456434906-29600-2-git-send-email-robdclark@gmail.com> <1482352905.19413.5.camel@intel.com> <20161222070257.c7rybawjw5p2hex6@phenom.ffwll.local> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 87E776F1C4 for ; Thu, 22 Dec 2016 08:54:56 +0000 (UTC) In-Reply-To: <20161222070257.c7rybawjw5p2hex6@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , Rob Clark Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCAyMDE2LTEyLTIyIGF0IDA4OjAyICswMTAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ IE9uIFdlZCwgRGVjIDIxLCAyMDE2IGF0IDA1OjIxOjE4UE0gLTA1MDAsIFJvYiBDbGFyayB3cm90 ZToKPiA+IE9uIFdlZCwgRGVjIDIxLCAyMDE2IGF0IDM6NDEgUE0sIEltcmUgRGVhayA8aW1yZS5k ZWFrQGludGVsLmNvbT4gd3JvdGU6Cj4gPiA+IE9uIFRodSwgMjAxNi0wMi0yNSBhdCAxNjoxNSAt MDUwMCwgUm9iIENsYXJrIHdyb3RlOgo+ID4gPiA+IEFkZCBhIG5ldyBkcm1fZGVidWcgYml0IGZv ciB0dXJuaW5nIG9uIERQQ0QgbG9nZ2luZywgdG8gYWlkIGRlYnVnZ2luZwo+ID4gPiA+IHdpdGgg dHJvdWJsZXNvbWUgbW9uaXRvcnMuCj4gPiA+ID4gCj4gPiA+ID4gdjI6IGRvbid0IHRyeSB0byBo ZXhkdW1wIHRoZSB1bml2ZXJzZSBpZiBkcml2ZXIgcmV0dXJucyAtZXJybm8sIGFuZAo+ID4gPiA+ IGNoYW5nZSB0aGUgInRvbyBtYW55IHJldHJpZXMiIHRyYWNlcyB0byBEUk1fRVJST1IoKQo+ID4g PiA+IHYzOiByZW5hbWUgdG8gbW9yZSBnZW5lcmljICJBVVgiIGluc3RlYWQgb2YgRFAgc3BlY2lm aWMgRFBDRCwgYWRkCj4gPiA+ID4gRFBfQVVYX0kyQ19XUklURV9TVEFUVVNfVVBEQVRFCj4gPiA+ ID4gCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29t Pgo+ID4gPiAKPiA+ID4gSSB1c2VkIHRoZSByZWJhc2VkIHZlcnNpb24gb2YgdGhpcyBhZnRlciBW aWxsZSBwb2ludGVkIG1lIHRvIGl0IGZvcgo+ID4gPiByZW1vdGUgZGVidWdnaW5nIHNvbWUgb2Rk IGFkYXB0b3IgYmVoYXZpb3IuIEl0J2QgYmUgcXVpdGUgdXNlZnVsIGltbywgc286Cj4gPiA+IEFj a2VkLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPiAKPiA+IHRiaCBJIGNv bXBsZXRlbHkgZm9yZ290IGFib3V0IHRoaXMgcGF0Y2guLiBtaW5kIHBvc3RpbmcgdGhlIHJlYmFz ZWQKPiA+IHZlcnNpb24gKG9yIHB1c2ggdG8gYSBnaXQgdHJlZSBzb21ld2hlcmUpP8KgwqBJSVJD IHRoZXJlIHdlcmUganVzdCBzb21lCj4gPiBtaW5vciBjb3NtZXRpYyB0aGluZ3MgdG8gZml4IHVw LCBwcm9iYWJseSB3b3J0aCBkb2luZyB0aGF0IGJlZm9yZSBJCj4gPiBmb3JnZXQgYWJvdXQgaXQg YWdhaW4uLgo+IAo+IFRoZXJlJ3MgcGF0Y2hlcyBmb3IgZHluYW1pYyBkZWJ1Z2dpbmcgZmxvYXRp bmcgYXJvdW5kLCBJIHRoaW5rIHRoYXQnZCBiZQo+IHRoZSBtb3JlIGludGVyZXN0aW5nIGFwcHJv YWNoIHRoYW4gYWRkaW5nIGV2ZXIgbW9yZSBtYWdpYyBiaXRzIHRoYXQgbm8gb25lCj4gdW5kZXJz dGFuZHMuIEJ1dCBiZXNpZGVzIHRoYXQgdGhpcyBtYWtlcyBzZW5zZS4KCk9rLCBhbHRob3VnaCBp dCdzIGJldHRlciB0aGFuIG5vdCBoYXZpbmcgYW55IHdheSB0byBkZWJ1ZyBhbmQgaXQgY291bGQg YmUKY29udmVydGVkIHRvIGR5bmRiZyB3aXRoIHRoZSByZXNldC4gRm9yIHJlZmVyZW5jZToKaHR0 cHM6Ly9naXRodWIuY29tL2lkZWFrL2xpbnV4L2NvbW1pdHMvYXV4LWRlYnVnCgotLUltcmUKCj4g LURhbmllbAo+IAo+ID4gCj4gPiBCUiwKPiA+IC1SCj4gPiAKPiA+IAo+ID4gPiAKPiA+ID4gPiAt LS0KPiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMgfCA2MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ID4gPiA+IMKgaW5jbHVkZS9kcm0v ZHJtUC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgOCArKysrKy0KPiA+ID4gPiDC oDIgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCj4gPiA+ ID4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jCj4gPiA+ID4gaW5kZXggZGY2NGVkMS4u M2VmMzVmZCAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBl ci5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYwo+ID4gPiA+ IEBAIC0xNjAsNiArMTYwLDQ1IEBAIGludCBkcm1fZHBfYndfY29kZV90b19saW5rX3JhdGUodTgg bGlua19idykKPiA+ID4gPiDCoH0KPiA+ID4gPiDCoEVYUE9SVF9TWU1CT0woZHJtX2RwX2J3X2Nv ZGVfdG9fbGlua19yYXRlKTsKPiA+ID4gPiAKPiA+ID4gPiArc3RhdGljIHNzaXplX3QgYXV4X3Ry YW5zZmVyKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfYXV4X21zZyAqbXNn KQo+ID4gPiA+ICt7Cj4gPiA+ID4gK8KgwqDCoMKgwqBzc2l6ZV90IHJldDsKPiA+ID4gPiArCj4g PiA+ID4gK8KgwqDCoMKgwqBEUk1fREVCVUdfQVVYKCIlczogcmVxPTB4JTAyeCwgYWRkcmVzcz0w eCUwNXgsIHNpemU9JXp1XG4iLCBhdXgtPm5hbWUsCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1zZy0+cmVxdWVzdCwgbXNnLT5hZGRyZXNzLCBtc2ct PnNpemUpOwo+ID4gPiA+ICsKPiA+ID4gPiArwqDCoMKgwqDCoGlmICh1bmxpa2VseShkcm1fZGVi dWcgJiBEUk1fVVRfQVVYKSkgewo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN3 aXRjaCAobXNnLT5yZXF1ZXN0ICYgfkRQX0FVWF9JMkNfTU9UKSB7Cj4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgY2FzZSBEUF9BVVhfTkFUSVZFX1dSSVRFOgo+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgRFBfQVVYX0kyQ19XUklURToKPiA+ID4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIERQX0FVWF9JMkNfV1JJVEVfU1RBVFVTX1VQREFU RToKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJp bnRfaGV4X2R1bXAoS0VSTl9ERUJVRywgIkRQQ0Q6ICIsIERVTVBfUFJFRklYX09GRlNFVCwKPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAxNiwgMSwgbXNnLT5idWZmZXIsIG1zZy0+c2l6ZSwgZmFs c2UpOwo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi cmVhazsKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZWZhdWx0Ogo+ID4gPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gK8KgwqDCoMKgwqB9Cj4gPiA+ ID4gKwo+ID4gPiA+ICvCoMKgwqDCoMKgcmV0ID0gYXV4LT50cmFuc2ZlcihhdXgsIG1zZyk7Cj4g PiA+ID4gKwo+ID4gPiA+ICvCoMKgwqDCoMKgRFJNX0RFQlVHX0FVWCgiJXM6IHJlcGx5PTB4JTAy eCwgc2l6ZT0lemRcbiIsIGF1eC0+bmFtZSwgbXNnLT5yZXBseSwgcmV0KTsKPiA+ID4gPiArCj4g PiA+ID4gK8KgwqDCoMKgwqBpZiAodW5saWtlbHkoZHJtX2RlYnVnICYgRFJNX1VUX0FVWCkgJiYg KHJldCA+IDApKSB7Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3dpdGNoICht c2ctPnJlcXVlc3QgJiB+RFBfQVVYX0kyQ19NT1QpIHsKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBjYXNlIERQX0FVWF9OQVRJVkVfUkVBRDoKPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjYXNlIERQX0FVWF9JMkNfUkVBRDoKPiA+ID4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJpbnRfaGV4X2R1bXAoS0VSTl9ERUJVRywg IkRQQ0Q6ICIsIERVTVBfUFJFRklYX09GRlNFVCwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAx NiwgMSwgbXNnLT5idWZmZXIsIHJldCwgZmFsc2UpOwo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBkZWZhdWx0Ogo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 Cj4gPiA+ID4gK8KgwqDCoMKgwqB9Cj4gPiA+ID4gKwo+ID4gPiA+ICvCoMKgwqDCoMKgcmV0dXJu IHJldDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiDCoCNkZWZpbmUgQVVYX1JFVFJZX0lO VEVSVkFMIDUwMCAvKiB1cyAqLwo+ID4gPiA+IAo+ID4gPiA+IMKgLyoqCj4gPiA+ID4gQEAgLTE5 Nyw3ICsyMzYsNyBAQCBzdGF0aWMgaW50IGRybV9kcF9kcGNkX2FjY2VzcyhzdHJ1Y3QgZHJtX2Rw X2F1eCAqYXV4LCB1OCByZXF1ZXN0LAo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgKi8KPiA+ID4gPiDC oMKgwqDCoMKgwqBmb3IgKHJldHJ5ID0gMDsgcmV0cnkgPCAzMjsgcmV0cnkrKykgewo+ID4gPiA+ IAo+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IGF1eC0+dHJhbnNmZXIo YXV4LCAmbXNnKTsKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSBhdXhf dHJhbnNmZXIoYXV4LCAmbXNnKTsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWYgKGVyciA8IDApIHsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlmIChlcnIgPT0gLUVCVVNZKQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+ID4gPiA+ IEBAIC0yMDUsNyArMjQ0LDYgQEAgc3RhdGljIGludCBkcm1fZHBfZHBjZF9hY2Nlc3Moc3RydWN0 IGRybV9kcF9hdXggKmF1eCwgdTggcmVxdWVzdCwKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gdW5sb2NrOwo+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gCj4gPiA+ID4gLQo+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzd2l0Y2ggKG1zZy5yZXBseSAmIERQX0FVWF9OQVRJVkVfUkVQTFlf TUFTSykgewo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXNlIERQX0FVWF9O QVRJVkVfUkVQTFlfQUNLOgo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWYgKGVyciA8IHNpemUpCj4gPiA+ID4gQEAgLTIxMywxNiArMjUxLDE4IEBA IHN0YXRpYyBpbnQgZHJtX2RwX2RwY2RfYWNjZXNzKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHU4 IHJlcXVlc3QsCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBnb3RvIHVubG9jazsKPiA+ID4gPiAKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgY2FzZSBEUF9BVVhfTkFUSVZFX1JFUExZX05BQ0s6Cj4gPiA+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9ERUJVR19BVVgoIm5hdGl2ZSBuYWNr IChyZXN1bHQ9JWQsIHNpemU9JXp1KVxuIiwgZXJyLCBtc2cuc2l6ZSk7Cj4gPiA+ID4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnIgPSAtRUlPOwo+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byB1bmxvY2s7 Cj4gPiA+ID4gCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhc2UgRFBfQVVY X05BVElWRV9SRVBMWV9ERUZFUjoKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgRFJNX0RFQlVHX0FVWCgibmF0aXZlIGRlZmVyXG4iKTsKPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVzbGVlcF9yYW5nZShB VVhfUkVUUllfSU5URVJWQUwsIEFVWF9SRVRSWV9JTlRFUlZBTCArIDEwMCk7Cj4gPiA+ID4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+IMKgwqDCoMKgwqDCoH0KPiA+ID4g PiAKPiA+ID4gPiAtwqDCoMKgwqDCoERSTV9ERUJVR19LTVMoInRvbyBtYW55IHJldHJpZXMsIGdp dmluZyB1cFxuIik7Cj4gPiA+ID4gK8KgwqDCoMKgwqBEUk1fRVJST1IoIkRQQ0Q6IHRvbyBtYW55 IHJldHJpZXMsIGdpdmluZyB1cCFcbiIpOwo+ID4gPiA+IMKgwqDCoMKgwqDCoGVyciA9IC1FSU87 Cj4gPiA+ID4gCj4gPiA+ID4gwqB1bmxvY2s6Cj4gPiA+ID4gQEAgLTU0OSwxMiArNTg5LDEyIEBA IHN0YXRpYyBpbnQgZHJtX2RwX2kyY19kb19tc2coc3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3Ry dWN0IGRybV9kcF9hdXhfbXNnICptc2cpCj4gPiA+ID4gwqDCoMKgwqDCoMKgaW50IG1heF9yZXRy aWVzID0gbWF4KDcsIGRybV9kcF9pMmNfcmV0cnlfY291bnQobXNnLCBkcF9hdXhfaTJjX3NwZWVk X2toeikpOwo+ID4gPiA+IAo+ID4gPiA+IMKgwqDCoMKgwqDCoGZvciAocmV0cnkgPSAwLCBkZWZl cl9pMmMgPSAwOyByZXRyeSA8IChtYXhfcmV0cmllcyArIGRlZmVyX2kyYyk7IHJldHJ5KyspIHsK PiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSBhdXgtPnRyYW5zZmVyKGF1 eCwgbXNnKTsKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSBhdXhfdHJh bnNmZXIoYXV4LCBtc2cpOwo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAo cmV0IDwgMCkgewo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKHJldCA9PSAtRUJVU1kpCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gPiA+ID4gCj4g PiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9ERUJV R19LTVMoInRyYW5zYWN0aW9uIGZhaWxlZDogJWRcbiIsIHJldCk7Cj4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9ERUJVR19BVVgoInRyYW5zYWN0 aW9uIGZhaWxlZDogJWRcbiIsIHJldCk7Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gPiA+ID4gCj4gPiA+ID4gQEAgLTU2OCwxMSArNjA4LDExIEBAIHN0YXRp YyBpbnQgZHJtX2RwX2kyY19kb19tc2coc3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3RydWN0IGRy bV9kcF9hdXhfbXNnICptc2cpCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4gPiAKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY2FzZSBEUF9BVVhfTkFUSVZFX1JFUExZX05BQ0s6Cj4gPiA+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9ERUJVR19LTVMoIm5hdGl2ZSBu YWNrIChyZXN1bHQ9JWQsIHNpemU9JXp1KVxuIiwgcmV0LCBtc2ctPnNpemUpOwo+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBEUk1fREVCVUdfQVVYKCJu YXRpdmUgbmFjayAocmVzdWx0PSVkLCBzaXplPSV6dSlcbiIsIHJldCwgbXNnLT5zaXplKTsKPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAt RVJFTU9URUlPOwo+ID4gPiA+IAo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBj YXNlIERQX0FVWF9OQVRJVkVfUkVQTFlfREVGRVI6Cj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9ERUJVR19LTVMoIm5hdGl2ZSBkZWZlclxuIik7 Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9E RUJVR19BVVgoIm5hdGl2ZSBkZWZlclxuIik7Cj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqIFdlIGNvdWxkIGNoZWNrIGZvciBJMkMgYml0IHJhdGUg Y2FwYWJpbGl0aWVzIGFuZCBpZgo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAqIGF2YWlsYWJsZSBhZGp1c3QgdGhpcyBpbnRlcnZhbC4gV2UgY291 bGQgYWxzbyBiZQo+ID4gPiA+IEBAIC02MDEsMTIgKzY0MSwxMiBAQCBzdGF0aWMgaW50IGRybV9k cF9pMmNfZG9fbXNnKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfYXV4X21z ZyAqbXNnKQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIHJldDsKPiA+ID4gPiAKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY2FzZSBEUF9BVVhfSTJDX1JFUExZX05BQ0s6Cj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9ERUJVR19LTVMoIkkyQyBuYWNrIChyZXN1bHQ9 JWQsIHNpemU9JXp1XG4iLCByZXQsIG1zZy0+c2l6ZSk7Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9ERUJVR19BVVgoIkkyQyBuYWNrIChyZXN1 bHQ9JWQsIHNpemU9JXp1KVxuIiwgcmV0LCBtc2ctPnNpemUpOwo+ID4gPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYXV4LT5pMmNfbmFja19jb3VudCsrOwo+ ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJu IC1FUkVNT1RFSU87Cj4gPiA+ID4gCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGNhc2UgRFBfQVVYX0kyQ19SRVBMWV9ERUZFUjoKPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRFJNX0RFQlVHX0tNUygiSTJDIGRlZmVyXG4iKTsKPiA+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgRFJNX0RFQlVH X0FVWCgiSTJDIGRlZmVyXG4iKTsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoC8qIERQIENvbXBsaWFuY2UgVGVzdCA0LjIuMi41IFJlcXVpcmVtZW50 Ogo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAq IE11c3QgaGF2ZSBhdCBsZWFzdCA3IHJldHJpZXMgZm9yIEkyQyBkZWZlcnMgb24gdGhlCj4gPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCogdHJhbnNh Y3Rpb24gdG8gcGFzcyB0aGlzIHRlc3QKPiA+ID4gPiBAQCAtNjI1LDcgKzY2NSw3IEBAIHN0YXRp YyBpbnQgZHJtX2RwX2kyY19kb19tc2coc3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3RydWN0IGRy bV9kcF9hdXhfbXNnICptc2cpCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0K PiA+ID4gPiDCoMKgwqDCoMKgwqB9Cj4gPiA+ID4gCj4gPiA+ID4gLcKgwqDCoMKgwqBEUk1fREVC VUdfS01TKCJ0b28gbWFueSByZXRyaWVzLCBnaXZpbmcgdXBcbiIpOwo+ID4gPiA+ICvCoMKgwqDC oMKgRFJNX0VSUk9SKCJJMkM6IHRvbyBtYW55IHJldHJpZXMsIGdpdmluZyB1cFxuIik7Cj4gPiA+ ID4gwqDCoMKgwqDCoMKgcmV0dXJuIC1FUkVNT1RFSU87Cj4gPiA+ID4gwqB9Cj4gPiA+ID4gCj4g PiA+ID4gQEAgLTY1Myw3ICs2OTMsNyBAQCBzdGF0aWMgaW50IGRybV9kcF9pMmNfZHJhaW5fbXNn KHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfYXV4X21zZyAqbwo+ID4gPiA+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIGVyciA9 PSAwID8gLUVQUk9UTyA6IGVycjsKPiA+ID4gPiAKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKGVyciA8IG1zZy5zaXplICYmIGVyciA8IHJldCkgewo+ID4gPiA+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBEUk1fREVCVUdfS01TKCJQYXJ0 aWFsIEkyQyByZXBseTogcmVxdWVzdGVkICV6dSBieXRlcyBnb3QgJWQgYnl0ZXNcbiIsCj4gPiA+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9ERUJVR19B VVgoIlBhcnRpYWwgSTJDIHJlcGx5OiByZXF1ZXN0ZWQgJXp1IGJ5dGVzIGdvdCAlZCBieXRlc1xu IiwKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtc2cuc2l6ZSwgZXJyKTsKPiA+ID4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IGVycjsKPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRl L2RybS9kcm1QLmggYi9pbmNsdWRlL2RybS9kcm1QLmgKPiA+ID4gPiBpbmRleCAzYzg0MjJjLi5j YzUyNGI1IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2RybVAuaAo+ID4gPiA+ICsr KyBiL2luY2x1ZGUvZHJtL2RybVAuaAo+ID4gPiA+IEBAIC0xMTcsNyArMTE3LDcgQEAgc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudDsKPiA+ID4gPiDCoCAqIGRybS5kZWJ1Zz0weDIgd2lsbCBlbmFi bGUgRFJJVkVSIG1lc3NhZ2VzCj4gPiA+ID4gwqAgKiBkcm0uZGVidWc9MHgzIHdpbGwgZW5hYmxl IENPUkUgYW5kIERSSVZFUiBtZXNzYWdlcwo+ID4gPiA+IMKgICogLi4uCj4gPiA+ID4gLSAqIGRy bS5kZWJ1Zz0weDNmIHdpbGwgZW5hYmxlIGFsbCBtZXNzYWdlcwo+ID4gPiA+ICsgKiBkcm0uZGVi dWc9MHg3ZiB3aWxsIGVuYWJsZSBhbGwgbWVzc2FnZXMKPiA+ID4gPiDCoCAqCj4gPiA+ID4gwqAg KiBBbiBpbnRlcmVzdGluZyBmZWF0dXJlIGlzIHRoYXQgaXQncyBwb3NzaWJsZSB0byBlbmFibGUg dmVyYm9zZSBsb2dnaW5nIGF0Cj4gPiA+ID4gwqAgKiBydW4tdGltZSBieSBlY2hvaW5nIHRoZSBk ZWJ1ZyB2YWx1ZSBpbiBpdHMgc3lzZnMgbm9kZToKPiA+ID4gPiBAQCAtMTI5LDYgKzEyOSw3IEBA IHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQ7Cj4gPiA+ID4gwqAjZGVmaW5lIERSTV9VVF9QUklN RcKgwqDCoMKgwqDCoMKgwqDCoDB4MDgKPiA+ID4gPiDCoCNkZWZpbmUgRFJNX1VUX0FUT01JQ8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgxMAo+ID4gPiA+IMKgI2RlZmluZSBEUk1f VVRfVkJMwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4MjAKPiA+ID4gPiArI2RlZmluZSBEUk1fVVRf QVVYwqDCoMKgwqDCoMKgwqDCoMKgwqDCoDB4NDAKPiA+ID4gPiAKPiA+ID4gPiDCoGV4dGVybiBf X3ByaW50ZigyLCAzKQo+ID4gPiA+IMKgdm9pZCBkcm1fdXRfZGVidWdfcHJpbnRrKGNvbnN0IGNo YXIgKmZ1bmN0aW9uX25hbWUsCj4gPiA+ID4gQEAgLTIyNiw2ICsyMjcsMTEgQEAgdm9pZCBkcm1f ZXJyKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKHVubGlrZWx5KGRybV9kZWJ1ZyAmIERSTV9VVF9WQkwpKcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgXAo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZHJtX3V0X2RlYnVnX3ByaW50ayhfX2Z1bmNfXywgZm10 LCAjI2FyZ3MpO8KgwqDCoMKgwqBcCj4gPiA+ID4gwqDCoMKgwqDCoMKgfSB3aGlsZSAoMCkKPiA+ ID4gPiArI2RlZmluZSBEUk1fREVCVUdfQVVYKGZtdCwgYXJncy4uLinCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFwKPiA+ ID4gPiArwqDCoMKgwqDCoGRvIHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKHVubGlrZWx5KGRybV9kZWJ1ZyAmIERSTV9VVF9BVVgpKcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBkcm1fdXRfZGVidWdfcHJpbnRrKF9fZnVuY19fLCBmbXQsICMj YXJncyk7wqDCoMKgwqDCoFwKPiA+ID4gPiArwqDCoMKgwqDCoH0gd2hpbGUgKDApCj4gPiA+ID4g Cj4gPiA+ID4gwqAvKkB9Ki8KPiA+ID4gPiAKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+ IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCj4gCj4gCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=