From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH] edp-DRRS test Date: Thu, 13 Jul 2017 17:51:37 -0300 Message-ID: <1499979097.2649.28.camel@intel.com> References: <1498032643-2650-1-git-send-email-lohith.bs@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3049C6E116 for ; Thu, 13 Jul 2017 20:51:43 +0000 (UTC) In-Reply-To: <1498032643-2650-1-git-send-email-lohith.bs@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lohith BS , intel-gfx@lists.freedesktop.org, daniel.vetter@ffwll.ch, chris@chris-wilson.co.uk, marius.c.vlad@intel.com Cc: ankit.k.nautiyal@intel.com List-Id: intel-gfx@lists.freedesktop.org RW0gUXVhLCAyMDE3LTA2LTIxIMOgcyAxMzo0MCArMDUzMCwgTG9oaXRoIEJTIGVzY3JldmV1Ogo+ IElkbGVuZXNzIERSUlM6Cj4gCUJ5IGRlZmF1bHQgdGhlIERSUlMgc3RhdGUgd2lsbCBiZSBhdCBE UlJTX0hJR0hfUlIuIFdoZW4gYQo+IERpc3BsYXkKPiAJY29udGVudCBpcyBJZGxlIGZvciBtb3Jl IHRoYW4gMVNlYyBJZGxlbmVzcyB3aWxsIGJlIGRlY2xhcmVkCj4gYW5kCj4gCURSUlNfTE9XX1JS IHdpbGwgYmUgaW52b2tlZCwgY2hhbmdpbmcgdGhlIHJlZnJlc2ggcmF0ZSB0byB0aGUKPiAJbG93 ZXIgbW9zdCByZWZyZXNoIHJhdGUgc3VwcG9ydGVkIGJ5IHRoZSBwYW5lbC4gQXMgc29vbiBhcwo+ IHRoZXJlCj4gCWlzIGEgZGlzcGxheSBjb250ZW50IGNoYW5nZSB0aGVyZSB3aWxsIGJlIGEgRFJS UyBzdGF0ZQo+IHRyYW5zaXRpb24KPiAJYXMgRFJSU19MT1dfUlItLT4gRFJSU19ISUdIX1JSLCBj aGFuZ2luZyB0aGUgcmVmcmVzaCByYXRlIHRvCj4gdGhlCj4gCWhpZ2hlc3QgcmVmcmVzaCByYXRl IHN1cHBvcnRlZCBieSB0aGUgcGFuZWwuCj4gCj4gVG8gdGVzdCB0aGlzLCBJZGxlbmVzcyBEUlJT IElHVCB3aWxsIHByb2JlIHRoZSBEUlJTIHN0YXRlIGF0IGJlbG93Cj4gaW5zdGFuY2VzIGFuZCBj b21wYXJlIHdpdGggdGhlIGV4cGVjdGVkIHN0YXRlLgo+IAo+IAlJbnN0YW5jZQkJCQkJRXhwZWN0 ZWQgU3RhdGUKPiAxLiBJbW1lZGlhdGVseSBhZnRlciByZW5kZXJpbmcgdGhlIHN0aWxsIGltYWdl CQlEUlJTX0hJCj4gR0hfUlIKPiAyLiBBZnRlciBhIGRlbGF5IG9mIDEuMlNlYwkJCQlEUlJTX0xP V19SUgo+IDMuIEFmdGVyIGNoYW5naW5nIHRoZSBmcmFtZSBidWZmZXIJCQlEUlJTX0hJR0hfUgo+ IFIKPiA0LiBBZnRlciBhIGRlbGF5IG9mIDEuMlNlYwkJCQlEUlJTX0xPV19SUgo+IDUuIEFmdGVy IGNoYW5naW5nIHRoZSBmcmFtZSBidWZmZXIJCQlEUlJTX0hJR0hfUgo+IFIKPiA2LiBBZnRlciBh IGRlbGF5IG9mIDEuMlNlYwkJCQlEUlJTX0xPV19SUgo+IAo+IFRoZSB0ZXN0IGNoZWNrcyB0aGUg ZHJpdmVyIERSUlMgc3RhdGUgZnJvbSB0aGUgZGVidWdmcyBlbnRyeS4gVG8KPiBjaGVjayB0aGUK PiBhY3R1YWwgcmVmcmVzaC1yYXRlLCB0aGUgbnVtYmVyIG9mIHZibGFua3MgcmVjZWl2ZWQgcGVy IHNlYy4KPiBUaGUgcmVmcmVzaC1yYXRlIGNhbGN1bGF0ZWQgaXMgY2hlY2tlZCBhZ2FpbnN0IHRo ZSBleHBlY3RlZCByZWZyZXNoLQo+IHJhdGUKPiB3aXRoIGEgdG9sZXJhbmNlIHZhbHVlIG9mIDIu Cj4gCj4gVGhpcyBwYXRjaCBpcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgZWFybGllciB3b3JrCj4g aHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzQ1NDcyLyB0b3dhcmRzIGln dCBmb3IKPiBpZGxlbmVzcwo+IAo+IERSUlMuIFRoZSBjb2RlIGlzIHRlc3RlZCBvbiBCcm94dG9u IEJYVF9UIHBsYXRmb3JtLgo+IAo+IHYyOiBBZGRyZXNzZWQgdGhlIGNvbW1lbnRzIGFuZCBzdWdn ZXN0aW9ucyBmcm9tIFZsYWQsIE1hcml1cy4KPiBUaGUgc2lnbm9mZiBkZXRhaWxzIGZyb20gdGhl IGVhcmxpZXIgd29yayBhcmUgYWxzbyBpbmNsdWRlZC4KPiAKPiB2MzogTW9kaWZpZWQgdmJsYW5r IHJhdGUgY2FsY3VsYXRpb24gYnkgdXNpbmcgcmVwbHktc2VxdWVuY2UsCj4gcHJvdmlkZWQgYnkK PiBkcm1XYWl0VkJsYW5rLCBhcyBzdWdnZXN0ZWQgYnkgQ2hyaXMgV2lsc29uLgo+IAo+IHY0OiBB cyBzdWdnZXN0ZWQgZnJvbSBDaHJpcyBXaWxzb24gYW5kIERhbmllbCBWZXR0ZXIKPiAJMSkgQXZv aWRlZCB1c2luZyBwdGhyZWFkIGZvciBjYWxjdWxhdGluZyB2YmxhbmsgcmVmcmVzaCByYXRlLAo+ IAnCoMKgwqBpbnN0ZWFkIHVzZWQgZHJtV2FpdFZCbGFuayByZXBseSBzZXF1ZW5jZS4KPiAJMikg QXZvaWRlZCB1c2luZyBrZXJuZWwtc3BlY2lmaWMgaW5mbyBsaWtlIHRyYW5zaXRpb25hbCBkZWxh eXMsCj4gCcKgwqDCoGluc3RlYWQgcG9sbGluZyBtZWNoYW5pc20gd2l0aCB0aW1lb3V0IGlzIHVz ZWQuCj4gCTMpIEluY2x1ZGVkIGVkcC1EUlJTIGFzIGEgc3VidGVzdCBpbgo+IGttc19mcm9udGJ1 ZmZlcl90cmFja2luZy5jLAo+IAnCoMKgwqBpbnN0ZWFkIG9mIGhhdmluZyBhIHNlcGFyYXRlIHRl c3QuCgpJIGNvbXBsZXRlbHkgZGlzYWdyZWUgd2l0aCB0aGUgd2F5IHRoaXMgcGFydCB3YXMgaW1w bGVtZW50ZWQuIFRoZSBjb2RlCmFkZGVkIHRvIGttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jIHVz ZXMgcHJldHR5IG11Y2ggemVybyBvZiB0aGUKaW5mcmFzdHJ1Y3R1cmUgcHJvdmlkZWQgYnkgdGhl IGZpbGUuIFRoaXMgcGF0Y2ggYWRkcyBhIGNvbXBsZXRlbHkKdW5yZWxhdGVkIHNldCBvZiBmdW5j dGlvbnMgdG8ga21zX2Zyb250YnVmZmVyX3RyYWNraW5nLmMuIElmIHdlJ3JlIG5vdApnb2luZyB0 byB1c2UgdGhlIGN1cnJlbnQgc3VidGVzdHMgJiBpbmZyYXN0cnVjdHVyZSwgcGxlYXNlIG1ha2Ug aXQgYQpzZXBhcmF0ZSB0ZXN0LgoKCj4gCj4gVGhpcyBpcyBpbiBjb250aW51YXRpb24gb2YgbGFz dCBwYXRjaCAiaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3AuCj4gb3JnL3BhdGNoLzExNzE0 OS8iCj4gCj4gU2lnbmVkLW9mZi1ieTogTG9oaXRoIEJTIDxsb2hpdGguYnNAaW50ZWwuY29tPgo+ IFNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiBT aWduZWQtb2ZmLWJ5OiBWYW5kYW5hIEthbm5hbiA8dmFuZGFuYS5rYW5uYW5AaW50ZWwuY29tPgo+ IFNpZ25lZC1vZmYtYnk6IGFrbmF1dGl5IDxhbmtpdC5rLm5hdXRpeWFsQGludGVsLmNvbT4KPiAt LS0KPiDCoHRlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5jIHwgNDUzCj4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gwqAxIGZpbGUgY2hhbmdlZCwgNDUyIGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2Zy b250YnVmZmVyX3RyYWNraW5nLmMKPiBiL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5j Cj4gaW5kZXggYzI0ZTRhOC4uNGQ0NmUxZSAxMDA2NDQKPiAtLS0gYS90ZXN0cy9rbXNfZnJvbnRi dWZmZXJfdHJhY2tpbmcuYwo+ICsrKyBiL3Rlc3RzL2ttc19mcm9udGJ1ZmZlcl90cmFja2luZy5j Cj4gQEAgLTMyLDkgKzMyLDE4IEBACj4gwqAjaW5jbHVkZSA8cG9sbC5oPgo+IMKgI2luY2x1ZGUg PHB0aHJlYWQuaD4KPiDCoAo+ICsjaW5jbHVkZSAiZHJtdGVzdC5oIgo+ICsjaW5jbHVkZSAiaWd0 X2RlYnVnZnMuaCIKPiArI2luY2x1ZGUgImlndF9rbXMuaCIKPiArI2luY2x1ZGUgImludGVsX2No aXBzZXQuaCIKPiArI2luY2x1ZGUgImludGVsX2JhdGNoYnVmZmVyLmgiCj4gKyNpbmNsdWRlICJp b2N0bF93cmFwcGVycy5oIgo+ICsjaW5jbHVkZSA8dGltZS5oPgo+ICsjaW5jbHVkZSA8c3RkbGli Lmg+Cj4gKyNpbmNsdWRlIDxzeXMvdGltZS5oPgo+IMKgCj4gwqBJR1RfVEVTVF9ERVNDUklQVElP TigiVGVzdCB0aGUgS2VybmVsJ3MgZnJvbnRidWZmZXIgdHJhY2tpbmcKPiBtZWNoYW5pc20gYW5k ICIKPiAtCQnCoMKgwqDCoMKgIml0cyByZWxhdGVkIGZlYXR1cmVzOiBGQkMgYW5kIFBTUiIpOwo+ ICsJCcKgwqDCoMKgwqAiaXRzIHJlbGF0ZWQgZmVhdHVyZXM6IERSUlMsIEZCQyBhbmQgUFNSIik7 Cj4gwqAKPiDCoC8qCj4gwqAgKiBPbmUgb2YgdGhlIGFzcGVjdHMgb2YgdGhpcyB0ZXN0IGlzIHRo YXQsIGZvciBldmVyeSBzdWJ0ZXN0LCB3ZQo+IHRyeSBkaWZmZXJlbnQKPiBAQCAtMzI3LDYgKzMz Niw0MSBAQCBkcm1Nb2RlTW9kZUluZm8gc3RkXzEwMjRfbW9kZSA9IHsKPiDCoAkubmFtZSA9ICJD dXN0b20gMTAyNHg3NjgiLAo+IMKgfTsKPiDCoAo+ICsjZGVmaW5lIERSUlNfVE9MRVJBTkNFX1RI UkVTSE9MRCAyCj4gKyNkZWZpbmUgRFJSU19QT0xMX1RJTUVPVVRfUEVSSU9EX01TIDUwMDAKPiAr I2RlZmluZSBEUlJTX1NUQVRVU19CWVRFU19DTlQgMTAwMAo+ICsjZGVmaW5lIERSUlNfTUFYX0lU RVJBVElPTiAzCj4gKwo+ICsvKgo+ICsgKiBTdHJ1Y3QgdG8gaG9sZCBkcnJzIHRlc3QgcmVsYXRl ZCBkYXRhCj4gKyAqLwo+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gKwl1aW50MzJfdCBkZXZpZDsKPiAr CXVpbnQzMl90IGhhbmRsZVsyXTsKPiArCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKPiArCWlndF9v dXRwdXRfdCAqb3V0cHV0Owo+ICsJZW51bSBwaXBlIHBpcGU7Cj4gKwlpZ3RfcGxhbmVfdCAqcHJp bWFyeTsKPiArCXN0cnVjdCBpZ3RfZmIgZmJbMl07Cj4gKwl1aW50MzJfdCBmYl9pZFsyXTsKPiAr fSBkcnJzX2RhdGFfdDsKPiArCj4gKy8qCj4gKyAqIFN0cnVjdHVyZSB0byBjb3VudCB2Ymxhbmsg YW5kIG5vdGUgdGhlIHN0YXJ0aW5nIHRpbWUgb2YgdGhlCj4gY291bnRlcgo+ICsgKi8KPiArdHlw ZWRlZiBzdHJ1Y3Qgewo+ICsJdW5zaWduZWQgaW50IHZibF9jb3VudDsKPiArCXN0cnVjdCB0aW1l dmFsIHN0YXJ0Owo+ICt9IHZibF9pbmZvOwo+ICsKPiArLyoKPiArICogU3RydWN0dXJlIGZvciBy ZWZyZXNoIHJhdGUgdHlwZQo+ICsgKi8KPiArdHlwZWRlZiBzdHJ1Y3R7Cj4gKwlpbnQgcmF0ZTsK PiArCWNvbnN0IGNoYXIgKm5hbWU7Cj4gK30gcmVmcmVzaF9yYXRlX3Q7Cj4gKwo+IMKgc3RhdGlj IGRybU1vZGVNb2RlSW5mb1B0cgo+IGdldF9jb25uZWN0b3Jfc21hbGxlc3RfbW9kZShkcm1Nb2Rl Q29ubmVjdG9yUHRyIGMpCj4gwqB7Cj4gwqAJaW50IGk7Cj4gQEAgLTM0MTUsNiArMzQ1OSw0MTAg QEAgc3RhdGljIGNvbnN0IGNoYXIgKmZsaXBfc3RyKGVudW0gZmxpcF90eXBlCj4gZmxpcCkKPiDC oAo+IMKgI2RlZmluZSBURVNUX01PREVfSVRFUl9FTkQgfSB9IH0gfSB9IH0KPiDCoAo+ICtzdGF0 aWMgaW5saW5lIHVpbnQzMl90IHBpcGVfc2VsZWN0KGludCBwaXBlKQo+ICt7Cj4gKwlpZiAocGlw ZSA+IDEpCj4gKwkJcmV0dXJuIHBpcGUgPDwgRFJNX1ZCTEFOS19ISUdIX0NSVENfU0hJRlQ7Cj4g KwllbHNlIGlmIChwaXBlID4gMCkKPiArCQlyZXR1cm4gRFJNX1ZCTEFOS19TRUNPTkRBUlk7Cj4g KwllbHNlCj4gKwkJcmV0dXJuIERSTV9WQkxBTktfQUJTT0xVVEU7Cj4gK30KPiArCj4gKy8qCj4g KyAqIENhbGN1bGF0ZXMgdGhlIHRvdGFsIG5vLiBvZiBtaWxsaXNlYyBlbGFwc2VkIHNpbmNlIHRp bWV2YWwgc3RhcnQKPiArICovCj4gK3N0YXRpYyBkb3VibGUgaWd0X21pbGxpc2VjX2VsYXBzZWQo Y29uc3Qgc3RydWN0IHRpbWV2YWwgKnN0YXJ0KQo+ICt7Cj4gKwlzdHJ1Y3QgdGltZXZhbCBjdXJy Owo+ICsKPiArCWdldHRpbWVvZmRheSgmY3VyciwgTlVMTCk7Cj4gKwlyZXR1cm4gKDFlMyooY3Vy ci50dl9zZWMgLSBzdGFydC0+dHZfc2VjKSArCj4gKwkJCQkoY3Vyci50dl91c2VjIC0gc3RhcnQt Cj4gPnR2X3VzZWMpLzEwMDAuMDApOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBGdW5jIHRvIHJlYWQg dGhlIERSUlMgc3RhdHVzIGZyb20gZGVidWdmcwo+ICsgKi8KPiArc3RhdGljIGJvb2wgcmVhZF9k cnJzX3N0YXR1cyhjaGFyICpzdHIpCj4gK3sKPiArCUZJTEUgKmZwOwo+ICsJaW50IGZkOwo+ICsJ aW50IGNudDsKPiArCj4gKwlmZCA9IGlndF9kZWJ1Z2ZzX29wZW4oZHJtLmZkLCAiaTkxNV9kcnJz X3N0YXR1cyIsIE9fUkRPTkxZKTsKPiArCWlndF9hc3NlcnQoZmQpOwo+ICsJZnAgPSBmZG9wZW4o ZmQsICJyIik7Cj4gKwlpZ3RfcmVxdWlyZShmcCk7Cj4gKwljbnQgPSBmcmVhZChzdHIsIERSUlNf U1RBVFVTX0JZVEVTX0NOVCAtIDEsIDEsIGZwKTsKPiArCj4gKwlpZiAoIWNudCkgewo+ICsJCWlm ICghZmVvZihmcCkpIHsKPiArCQkJaWd0X2NyaXRpY2FsKCJGYWlsZWQgdG8gcmVhZAo+IGk5MTVf ZHJyc19zdGF0dXM6JWQgXG4iLAo+ICsJCQkJZmVycm9yKGZwKSk7Cj4gKwkJCXJldHVybiBmYWxz ZTsKPiArCQl9Cj4gKwkJY2xlYXJlcnIoZnApOwo+ICsJfQo+ICsJZmNsb3NlKGZwKTsKPiArCj4g KwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArLyoKPiArICogRnVuYyB0byBjaGVjayBmb3IgRFJS UyBzdXBwb3J0Cj4gKyAqLwo+ICtzdGF0aWMgYm9vbCBpc19kcnJzX3N1cHBvcnRlZCh2b2lkKQo+ ICt7Cj4gKwljaGFyIHN0cltEUlJTX1NUQVRVU19CWVRFU19DTlRdID0ge307Cj4gKwo+ICsJaWYg KCFyZWFkX2RycnNfc3RhdHVzKHN0cikpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVy biBzdHJzdHIoc3RyLCAiRFJSUyBTdXBwb3J0ZWQ6IFllcyIpICE9IE5VTEw7Cj4gK30KPiArCj4g Ky8qCj4gKyAqIEZ1bmMgdG8gY2hlY2sgaWYgRFJSUyBpcyBlbmFibGVkIGJ5IGRyaXZlci4KPiAr ICovCj4gK3N0YXRpYyBib29sIGlzX2RycnNfZW5hYmxlZCh2b2lkKQo+ICt7Cj4gKwljaGFyIHN0 cltEUlJTX1NUQVRVU19CWVRFU19DTlRdID0ge307Cj4gKwo+ICsJaWYgKCFyZWFkX2RycnNfc3Rh dHVzKHN0cikpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiBzdHJzdHIoc3RyLCAi SWRsZW5lc3MgRFJSUzogRGlzYWJsZWQiKSA9PSBOVUxMOwo+ICt9Cj4gKwo+ICsKPiArLyoKPiAr ICogdmJsX3JhdGUgPSB2YmxfY291bnQvdGltZSB0YWtlbgo+ICsgKi8KPiArc3RhdGljIGRvdWJs ZSB2YmxfcmF0ZShjb25zdCB1bmlvbiBkcm1fd2FpdF92YmxhbmsgKnN0YXJ0LAo+ICsJCQkJY29u c3QgdW5pb24gZHJtX3dhaXRfdmJsYW5rICplbmQpCj4gK3sKPiArCWRvdWJsZSBzLCBlOwo+ICsK PiArCXMgPSBzdGFydC0+cmVwbHkudHZhbF9zZWMgKyAxZS02ICogc3RhcnQtPnJlcGx5LnR2YWxf dXNlYzsKPiArCWUgPSBlbmQtPnJlcGx5LnR2YWxfc2VjICsgMWUtNiAqIGVuZC0+cmVwbHkudHZh bF91c2VjOwo+ICsJcmV0dXJuICgoZW5kLT5yZXBseS5zZXF1ZW5jZSAtIHN0YXJ0LT5yZXBseS5z ZXF1ZW5jZSkgLyAoZSAtCj4gcykpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiByZWZyZXNoX3JhdGUg PSAoMjAgdmJsYW5rcykgLyh0aW1lIGZvciAyMHZibGFua3MpCj4gKyAqLwo+ICtpbnQgY2FsY3Vs YXRlX3JlZnJlc2hfcmF0ZShkcnJzX2RhdGFfdCAqZGF0YSkKPiArewo+ICsJdW5pb24gZHJtX3dh aXRfdmJsYW5rIHN0YXJ0LCBlbmQ7Cj4gKwlzdHJ1Y3QgdGltZXZhbCBzdGFydF90djsKPiArCWlu dCByZWZyZXNoX3JhdGU7Cj4gKwo+ICsJbWVtc2V0KCZzdGFydCwgMCwgc2l6ZW9mKHN0YXJ0KSk7 Cj4gKwlzdGFydC5yZXF1ZXN0LnR5cGUgPSBEUk1fVkJMQU5LX1JFTEFUSVZFIHwgcGlwZV9zZWxl Y3QoZGF0YS0KPiA+cGlwZSk7Cj4gKwo+ICsJaWYgKGRybVdhaXRWQmxhbmsoZHJtLmZkLCAmc3Rh cnQpICE9IDApIHsKPiArCQlpZ3RfY3JpdGljYWwoImRybVdhaXRWQmxhbmsgRmFpbGVkIVxuIik7 Cj4gKwkJcmV0dXJuIC0xOwo+ICsJfQo+ICsJZ2V0dGltZW9mZGF5KCZzdGFydF90diwgTlVMTCk7 Cj4gKwltZW1zZXQoJmVuZCwgMCwgc2l6ZW9mKGVuZCkpOwo+ICsJZW5kLnJlcXVlc3QudHlwZSA9 IERSTV9WQkxBTktfUkVMQVRJVkUgfCBwaXBlX3NlbGVjdChkYXRhLQo+ID5waXBlKTsKPiArCj4g KwkvKiBDb25maWd1cmVkIHRvIHdhaXQgZm9yIDIwIHZibGFuayBldmVudHMqLwo+ICsJZW5kLnJl cXVlc3Quc2VxdWVuY2UgPSAyMDsKPiArCj4gKwlpZiAoZHJtV2FpdFZCbGFuayhkcm0uZmQsICZl bmQpICE9IDApIHsKPiArCQlpZ3RfY3JpdGljYWwoImRybVdhaXRWQmxhbmsgRmFpbGVkIVxuIik7 Cj4gKwkJcmV0dXJuIC0xOwo+ICsJfQo+ICsJcmVmcmVzaF9yYXRlID0gdmJsX3JhdGUoJnN0YXJ0 LCAmZW5kKTsKPiArCj4gKwlyZXR1cm4gcmVmcmVzaF9yYXRlOwo+ICt9Cj4gKwo+ICsvKgo+ICsg KiBQb2xsIGZvciBEUlJTIHRyYW5zaXRpb24gZnJvbSBoaWdoIHRvIGxvdyB3aXRoIDUgc2Vjb25k cyB0aW1lCj4gb3V0Lgo+ICsgKi8KPiAraW50IHdhaXRfZm9yX2RycnNfc3dpdGNoX3RvX2xvdyhk cnJzX2RhdGFfdCAqZGF0YSkKPiArewo+ICsJY2hhciBkcnJzX3N0YXR1c1tEUlJTX1NUQVRVU19C WVRFU19DTlRdID0ge307Cj4gKwljb25zdCBjaGFyICpkcnJzX2xvd19uYW1lID0gIkRSUlNfTE9X X1JSIjsKPiArCWludCBzdGF0dXMgPSAxOwo+ICsJc3RydWN0IHRpbWV2YWwgc3RhcnRfdHY7Cj4g Kwo+ICsJZ2V0dGltZW9mZGF5KCZzdGFydF90diwgTlVMTCk7Cj4gKwo+ICsJd2hpbGUgKGlndF9t aWxsaXNlY19lbGFwc2VkKCZzdGFydF90dikgPAo+IERSUlNfUE9MTF9USU1FT1VUX1BFUklPRF9N Uykgewo+ICsKPiArCQlpZiAoIXJlYWRfZHJyc19zdGF0dXMoZHJyc19zdGF0dXMpKSB7Cj4gKwkJ CXN0YXR1cyA9IC0xOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCWlmIChzdHJzdHIoZHJy c19zdGF0dXMsIGRycnNfbG93X25hbWUpICE9IE5VTEwpCj4gKwkJCWJyZWFrOwo+ICsJfQo+ICsK PiArCWlmIChpZ3RfbWlsbGlzZWNfZWxhcHNlZCgmc3RhcnRfdHYpID4KPiBEUlJTX1BPTExfVElN RU9VVF9QRVJJT0RfTVMpIHsKPiArCj4gKwkJaWd0X2NyaXRpY2FsKCJEUlJTIGZhaWxlZCB0byBz d2l0Y2ggcmVmcmVzaCByYXRlCj4gZnJvbSAiCj4gKwkJCSJoaWdoZXIgdG8gbG93ZXJcbiIpOwo+ ICsKPiArCQlzdGF0dXMgPSAtMTsKPiArCX0KPiArCj4gKwlyZXR1cm4gc3RhdHVzOwo+ICt9Cj4g Kwo+ICsvKgo+ICsgKiBDaGVjayBpZiBjYWx1bGF0ZWQgcmVmcmVzaCByYXRlIGlzIHNhbWUgYXMg ZXhwZWN0ZWQgcmVmcmVzaCByYXRlCj4gKyAqIFJldHVybnMgMCBpbiBjYXNlIG9mIHBhc3MgLCAx IGluIGNhc2Ugb2YgZmFpbHVyZSwgYW5kIC0xIGZvcgo+IGVycm9yLgo+ICsgKi8KPiArc3RhdGlj IGludCBjaGVja19yZWZyZXNoX3JhdGUoZHJyc19kYXRhX3QgKmRhdGEsIHJlZnJlc2hfcmF0ZV90 Cj4gKmV4cGVjdGVkX3JyKQo+ICt7Cj4gKwlpbnQgcmVmcmVzaF9yYXRlID0gLTE7Cj4gKwljaGFy IGRycnNfc3RhdHVzW0RSUlNfU1RBVFVTX0JZVEVTX0NOVF0gPSB7fTsKPiArCj4gKwkvKiBHZXQg dGhlIERSUlMgU3RhdHVzIGZyb20gdGhlIGRlYnVnZnMgZW50cnkgKi8KPiArCWlmICghcmVhZF9k cnJzX3N0YXR1cyhkcnJzX3N0YXR1cykpCj4gKwkJcmV0dXJuIC0xOwo+ICsKPiArCXJlZnJlc2hf cmF0ZSA9IGNhbGN1bGF0ZV9yZWZyZXNoX3JhdGUoZGF0YSk7Cj4gKwo+ICsJaWYgKHJlZnJlc2hf cmF0ZSA8IDApIHsKPiArCQlpZ3RfY3JpdGljYWwoIlJlZnJlc2ggcmF0ZSBjYWxjdWxhdGlvbiBG QUlMRURcbiIpOwo+ICsJCXJldHVybiAtMTsKPiArCX0KPiArCj4gKwkvKiBDb21wYXJlIHdpdGgg RXhwZWN0ZWQgUmVmcmVzaCBSYXRlICovCj4gKwlpZiAoc3Ryc3RyKGRycnNfc3RhdHVzLCBleHBl Y3RlZF9yci0+bmFtZSkgIT0gTlVMTAo+ICsJJiYgYWJzKHJlZnJlc2hfcmF0ZSAtIGV4cGVjdGVk X3JyLT5yYXRlKSA8PQo+IERSUlNfVE9MRVJBTkNFX1RIUkVTSE9MRCkgewo+ICsJCXJldHVybiAw Owo+ICsJfQo+ICsJaWd0X2NyaXRpY2FsKCJFeHBlY3RlZCAlcyA6IEZBSUxFRC5cbiIsIGV4cGVj dGVkX3JyLT5uYW1lKTsKPiArCj4gKwlyZXR1cm4gMTsKPiArfQo+ICsKPiArLyoKPiArICogVGhp cyBmdW5jdGlvbgo+ICsgKiAxLiBDcmVhdGVzIGZyYW1lYnVmZmVycwo+ICsgKiAyLiBBcHBseSBm cmFtZWJ1ZmZlcnMgYWx0ZXJuYXRpdmVseSBhbmQgY291bnQgdGhlIHZibGFuayByZWZyZXNoCj4g cmF0ZQo+ICsgKsKgwqDCoMKgd2hpY2ggc2hvdWxkIGJlIGVxdWFsIHRvIGhpZ2hlc3QgcmVmcmVz aCByYXRlIHN1cHBvcnRlZC4KPiArICogMy4gUG9sbCBmb3IgRFJSUyB0byB0b2dnbGUgZnJvbSBE UlJTX0hJR0hfUlIgLT4gRFJSU19MT1dfUlIgd2l0aAo+IDVzZWMKPiArICrCoMKgwqDCoHRpbWVv dXQgdXNpbmcga2VybmVsIGRlYnVnZnMgZW50cnkoaTkxNV9kcnJzX3N0YXR1cykuCj4gKyAqIDQu IE9uY2UgRFJSUyBzd2l0Y2hlcyB0byBMT1cgd2UgY291bnQgdGhlIHZibGFuayByZWZyZXNoIHJh dGUKPiB3aGljaAo+ICsgKsKgwqDCoMKgc2hvdWxkIGJlIGVxdWFsIHRvIGxvd2VzdCByZWZyZXNo IHJhdGUgc3VwcG9ydGVkLgo+ICsgKiA1LiBUaGUgYWJvdmUgY2FsY3VsYXRlZCB2YmxhbmsgcmVm cmVzaCByYXRlcyBjYW4gaGF2ZSBhIHRvbGVyYW5jZQo+IG9mIDIuCj4gKyAqLwo+ICtzdGF0aWMg aW50IGV4ZWN1dGVfdGVzdChkcnJzX2RhdGFfdCAqZGF0YSkKPiArewo+ICsJaWd0X2Rpc3BsYXlf dCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+ICsJaWd0X291dHB1dF90ICpvdXRwdXQgPSBk YXRhLT5vdXRwdXQ7Cj4gKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGUsICpzdXBwb3J0ZWRfbW9kZXM7 Cj4gKwlpbnQgdGVzdF9mYWlsZWQgPSAwOwo+ICsJaW50IHJldCwgaSwgaV9tb2QsIGNvdW50X21v ZGVzOwo+ICsJcmVmcmVzaF9yYXRlX3QgaGlnaF9yciwgbG93X3JyOwo+ICsKPiArCWhpZ2hfcnIu bmFtZSA9ICJEUlJTX0hJR0hfUlIiOwo+ICsJaGlnaF9yci5yYXRlID0gMDsKPiArCWxvd19yci5u YW1lID0gIkRSUlNfTE9XX1JSIjsKPiArCWxvd19yci5yYXRlID0gMDsKPiArCj4gKwkvKiBnZXQg dGhlIG1heCBhbmQgbWluIHN1cHBvcnRlZCByZWZyZXNoIHJhdGVzIGZvciB0aGUKPiBkaXNwbGF5 ICovCj4gKwlzdXBwb3J0ZWRfbW9kZXMgPSBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3ItPm1vZGVz Owo+ICsJY291bnRfbW9kZXMgPSBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3ItPmNvdW50X21vZGVz Owo+ICsKPiArCS8qIG1pbmltdW0gMiBtb2RlcyBhcmUgcmVxdWlyZWQgZm9yIERSUlMgKi8KPiAr CWlndF9hc3NlcnRfZihjb3VudF9tb2RlcyA+PSAyLCAiTWluaW11bSAyIG1vZGVzIHJlcXVpcmVk IGZvcgo+IERSUlNcbiIpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBjb3VudF9tb2RlczsgaSsr KSB7Cj4gKwkJaW50IHJyID0gc3VwcG9ydGVkX21vZGVzW2ldLnZyZWZyZXNoOwo+ICsKPiArCQlp ZiAoaSA9PSAwKSB7Cj4gKwkJCWhpZ2hfcnIucmF0ZSA9IGxvd19yci5yYXRlID0gcnI7Cj4gKwkJ CWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gKwkJaWYgKGhpZ2hfcnIucmF0ZSA8IHJyKQo+ICsJCQlo aWdoX3JyLnJhdGUgPSBycjsKPiArCj4gKwkJaWYgKGxvd19yci5yYXRlID4gcnIpCj4gKwkJCWxv d19yci5yYXRlID0gcnI7Cj4gKwl9Cj4gKwo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQs IGRhdGEtPnBpcGUpOwo+ICsJZGF0YS0+cHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lKGRh dGEtPm91dHB1dCwKPiArCQkJCURSTV9QTEFORV9UWVBFX09WRVJMQVkpOwo+ICsJbW9kZSA9IGln dF9vdXRwdXRfZ2V0X21vZGUoZGF0YS0+b3V0cHV0KTsKPiArCWRhdGEtPmZiX2lkWzBdID0gaWd0 X2NyZWF0ZV9jb2xvcl9mYihkcm0uZmQsIG1vZGUtPmhkaXNwbGF5LAo+ICsJCQkJCQltb2RlLT52 ZGlzcGxheSwKPiArCQkJCQkJRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiArCQkJCQkJTE9DQUxfRFJN X0ZPUk1BVF9NT0QKPiBfTk9ORSwKPiArCQkJCQkJMC4wLCAxMDAuMSwgMC4wLAo+ICZkYXRhLT5m YlswXSk7Cj4gKwo+ICsJaWd0X2Fzc2VydChkYXRhLT5mYl9pZFswXSk7Cj4gKwlkYXRhLT5mYl9p ZFsxXSA9IGlndF9jcmVhdGVfY29sb3JfZmIoZHJtLmZkLCBtb2RlLT5oZGlzcGxheSwKPiArCQkJ CQkJbW9kZS0+dmRpc3BsYXksCj4gKwkJCQkJCURSTV9GT1JNQVRfWFJHQjg4ODgsCj4gKwkJCQkJ CUxPQ0FMX0RSTV9GT1JNQVRfTU9ECj4gX05PTkUsCj4gKwkJCQkJCTEwMC4xLCAwLjAsIDAuMCwK PiArCQkJCQkJJmRhdGEtPmZiWzFdKTsKPiArCj4gKwlpZ3RfYXNzZXJ0KGRhdGEtPmZiX2lkWzFd KTsKPiArCWRhdGEtPmhhbmRsZVswXSA9IGRhdGEtPmZiWzBdLmdlbV9oYW5kbGU7Cj4gKwlkYXRh LT5oYW5kbGVbMV0gPSBkYXRhLT5mYlsxXS5nZW1faGFuZGxlOwo+ICsKPiArCWZvciAoaSA9IDE7 IGkgPD0gRFJSU19NQVhfSVRFUkFUSU9OOyBpKyspIHsKPiArCQlpX21vZCA9IGkgJSAyOwo+ICsJ CWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgJmRhdGEtPmZiW2lfbW9kXSk7Cj4gKwkJ aWd0X2Rpc3BsYXlfY29tbWl0KGRpc3BsYXkpOwo+ICsKPiArCQlpZiAoIWlzX2RycnNfZW5hYmxl ZCgpKSB7Cj4gKwkJCWlndF9jcml0aWNhbCgiRFJSUyBub3QgZW5hYmxlZFxuIik7Cj4gKwkJCWln dF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgTlVMTCk7Cj4gKwkJCWlndF9vdXRwdXRfc2V0 X3BpcGUob3V0cHV0LCBQSVBFX0FOWSk7Cj4gKwkJCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5 KTsKPiArCQkJaWd0X3JlbW92ZV9mYihkcm0uZmQsICZkYXRhLT5mYlswXSk7Cj4gKwkJCWlndF9y ZW1vdmVfZmIoZHJtLmZkLCAmZGF0YS0+ZmJbMV0pOwo+ICsJCQlyZXR1cm4gLTE7Cj4gKwkJfQo+ ICsKPiArCQkvKiBleHBlY3RpbmcgSGlnaCBSUiAqLwo+ICsJCXJldCA9wqDCoGNoZWNrX3JlZnJl c2hfcmF0ZShkYXRhLCAmaGlnaF9ycik7Cj4gKwo+ICsJCWlmIChyZXQgPT0gLTEpCj4gKwkJCXJl dHVybiAtMTsKPiArCj4gKwkJaWYgKHJldCA9PSAxKQo+ICsJCQl0ZXN0X2ZhaWxlZCA9IDE7Cj4g Kwo+ICsJCS8qCj4gKwkJwqAqIFBvbGwga2VybmVsIGRlYnVnZnMgZW50cnkgZm9yIERSUlMKPiAr CQnCoCogdHJhbnNpdGlvbiBmcm9tIEhpZ2ggdG8gTG93Cj4gKwkJwqAqLwo+ICsJCXJldCA9IHdh aXRfZm9yX2RycnNfc3dpdGNoX3RvX2xvdyhkYXRhKTsKPiArCj4gKwkJaWYgKHJldCA9PSAtMSkK PiArCQkJcmV0dXJuIDE7Cj4gKwo+ICsJCS8qIGV4cGVjdGluZyBMb3cgUlIgKi8KPiArCQlyZXQg PSBjaGVja19yZWZyZXNoX3JhdGUoZGF0YSwgJmxvd19ycik7Cj4gKwo+ICsJCWlmIChyZXQgPT0g LTEpCj4gKwkJCXJldHVybiAtMTsKPiArCj4gKwkJaWYgKHJldCA9PSAxKQo+ICsJCQl0ZXN0X2Zh aWxlZCA9IDE7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHRlc3RfZmFpbGVkOwo+ICt9Cj4gKwo+ICsv Kgo+ICsgKiBGdW5jIHRvIGZyZWUgdGhlIGZyYW1lYnVmZmVycyBhZnRlciB0aGUgdGVzdCBjb21w bGV0aW9uLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgZmluaXNoX2NydGMoZHJyc19kYXRhX3QgKmRh dGEpCj4gK3sKPiArCWlndF9wbGFuZV9zZXRfZmIoZGF0YS0+cHJpbWFyeSwgTlVMTCk7Cj4gKwlp Z3Rfb3V0cHV0X3NldF9waXBlKGRhdGEtPm91dHB1dCwgUElQRV9BTlkpOwo+ICsJaWd0X2Rpc3Bs YXlfY29tbWl0KCZkYXRhLT5kaXNwbGF5KTsKPiArCj4gKwlpZ3RfcmVtb3ZlX2ZiKGRybS5mZCwg JmRhdGEtPmZiWzBdKTsKPiArCWlndF9yZW1vdmVfZmIoZHJtLmZkLCAmZGF0YS0+ZmJbMV0pOwo+ ICt9Cj4gKwo+ICsvKgo+ICsgKiBGdW5jIHRvIHJlc2V0IHRoZSBkaXNwbGF5IHN0cnVjdHVyZXMg YWZ0ZXIgdGhlIHRlc3QgY29tcGxldGlvbi4KPiArICovCj4gK3N0YXRpYyB2b2lkIHJlc2V0X2Rp c3BsYXkoZHJyc19kYXRhX3QgKmRhdGEpCj4gK3sKPiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkg PSAmZGF0YS0+ZGlzcGxheTsKPiArCWVudW0gcGlwZSBwaXBlX2lkOwo+ICsKPiArCWZvcl9lYWNo X3BpcGUoZGlzcGxheSwgcGlwZV9pZCkgewo+ICsJCWlndF9waXBlX3QgKnBpcGUgPSAmZGlzcGxh eS0+cGlwZXNbcGlwZV9pZF07Cj4gKwkJaWd0X3BsYW5lX3QgKnBsYW5lID0gaWd0X3BpcGVfZ2V0 X3BsYW5lX3R5cGUocGlwZSwKPiArCQkJCQlEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiArCj4g KwkJaWYgKHBsYW5lLT5mYikKPiArCQkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7Cj4g Kwl9Cj4gKwo+ICsJZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dChkaXNwbGF5LCBkYXRhLT5vdXRw dXQpCj4gKwkJaWd0X291dHB1dF9zZXRfcGlwZShkYXRhLT5vdXRwdXQsIFBJUEVfQU5ZKTsKPiAr fQo+ICsKPiArLyoKPiArICogRnVuYyB0byBydW4gdGhlIGRycnMgdGVzdCBmb3IgdGhlIGVEUCBk aXNwbGF5Lgo+ICsgKi8KPiArc3RhdGljIHZvaWQgcnVuX3Rlc3QoZHJyc19kYXRhX3QgKmRhdGEp Cj4gK3sKPiArCWludCByZXQ7Cj4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRp c3BsYXk7Cj4gKwo+ICsJcmVzZXRfZGlzcGxheShkYXRhKTsKPiArCj4gKwlmb3JfZWFjaF9waXBl X3dpdGhfdmFsaWRfb3V0cHV0KGRpc3BsYXksIGRhdGEtPnBpcGUsIGRhdGEtCj4gPm91dHB1dCkg ewo+ICsJCWRybU1vZGVDb25uZWN0b3JQdHIgYyA9IGRhdGEtPm91dHB1dC0KPiA+Y29uZmlnLmNv bm5lY3RvcjsKPiArCj4gKwkJaWYgKGMtPmNvbm5lY3Rvcl90eXBlICE9IERSTV9NT0RFX0NPTk5F Q1RPUl9lRFAgfHwKPiArCQkJYy0+Y29ubmVjdGlvbiAhPSBEUk1fTU9ERV9DT05ORUNURUQpCj4g KwkJCWNvbnRpbnVlOwo+ICsKPiArCQlyZXQgPSBleGVjdXRlX3Rlc3QoZGF0YSk7Cj4gKwo+ICsJ CWlndF9za2lwX29uX2YocmV0ID09IC0xLAo+ICsJCQkJIiVzIG9uIHBpcGUgJXMsIGNvbm5lY3Rv cgo+ICVzOlNLSVBQRURcbiIsCj4gKwkJCQkJaWd0X3N1YnRlc3RfbmFtZSgpLAo+ICsJCQkJCWtt c3Rlc3RfcGlwZV9uYW1lKGRhdGEtCj4gPnBpcGUpLAo+ICsJCQkJCWlndF9vdXRwdXRfbmFtZShk YXRhLQo+ID5vdXRwdXQpKTsKPiArCj4gKwkJaWd0X2ZhaWxfb25fZihyZXQgPT0gMSwKPiArCQkJ CSIlcyBvbiBwaXBlICVzLCBjb25uZWN0b3IKPiAlczpGQUlMRURcbiIsCj4gKwkJCQkJaWd0X3N1 YnRlc3RfbmFtZSgpLAo+ICsJCQkJCWttc3Rlc3RfcGlwZV9uYW1lKGRhdGEtCj4gPnBpcGUpLAo+ ICsJCQkJCWlndF9vdXRwdXRfbmFtZShkYXRhLQo+ID5vdXRwdXQpKTsKPiArCj4gKwkJaWd0X2Fz c2VydF9mKHJldCA9PSAwLAo+ICsJCQkJIiVzIG9uIHBpcGUgJXMsIGNvbm5lY3RvciAlczoKPiBQ QVNTRURcbiIsCj4gKwkJCQkJaWd0X3N1YnRlc3RfbmFtZSgpLAo+ICsJCQkJCWttc3Rlc3RfcGlw ZV9uYW1lKGRhdGEtCj4gPnBpcGUpLAo+ICsJCQkJCWlndF9vdXRwdXRfbmFtZShkYXRhLQo+ID5v dXRwdXQpKTsKPiArCj4gKwkJZmluaXNoX2NydGMoZGF0YSk7Cj4gKwl9Cj4gK30KPiArCj4gKy8q Cj4gKyAqIEZ1bmN0aW9uIHRvIHRlc3QgZWRwLURSUlMgZmVhdHVyZS5FeGl0cyBmcm9tIHRoZSBm dW5jdGlvbiBpZiBQU1IKPiBpcyBlbmFibGVkCj4gKyAqLwo+ICt2b2lkIGVkcF9kcnJzX3Rlc3Qo dm9pZCkKPiArewo+ICsJZHJyc19kYXRhX3QgZGF0YSA9IHt9Owo+ICsKPiArCWlndF9hc3NlcnRf ZighcHNyLmNhbl90ZXN0LAo+ICsJCQkiRFJSUyBjYW5ub3QgYmUgdGVzdGVkIGFzIFBTUiBpcwo+ IGVuYWJsZWRcbiIpOwo+ICsJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwo+ICsKPiArCS8qCj4g KwnCoCogVXNpbmcgdGhlIHNhbWUgZHJtLmZkIHdoaWNoIHdhcyBvcGVuZWQgZHVyaW5nCj4gc2V0 dXBfZW52aXJvbm1lbnQKPiArCcKgKi8KPiArCWlndF9hc3NlcnRfZihkcm0uZmQgIT0gLTEsICJJ bnZhbGlkIGZkXG4iKTsKPiArCWRhdGEuZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2RldmlkKGRybS5m ZCk7Cj4gKwlpZ3RfYXNzZXJ0X2YoZGF0YS5kZXZpZCA+PSAwLCAiSW52YWxpZCBkZXYgaWRcbiIp Owo+ICsKPiArCS8qCj4gKwnCoCogQ2hlY2sgaWYgdGhlIERSUlMgaXMgc3VwcG9ydGVkLklmIHll cyBjYWxsIHRoZSBJZGxlbmVzcwo+IERSUlMgdGVzdAo+ICsJwqAqLwo+ICsJaWd0X3JlcXVpcmVf Zihpc19kcnJzX3N1cHBvcnRlZCgpLAo+ICsJCQkiRFJSUyBub3Qgc3VwcG9ydGVkOmNoZWNrIFZC VC9wYW5lbAo+IGNhcHNcbiIpOwo+ICsJaWd0X2Rpc3BsYXlfaW5pdCgmZGF0YS5kaXNwbGF5LCBk cm0uZmQpOwo+ICsJcnVuX3Rlc3QoJmRhdGEpOwo+ICsJaWd0X2Rpc3BsYXlfZmluaSgmZGF0YS5k aXNwbGF5KTsKPiArfQo+ICsKPiDCoGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCj4g wqB7Cj4gwqAJc3RydWN0IHRlc3RfbW9kZSB0Owo+IEBAIC0zNjI4LDYgKzQwNzYsOSBAQCBpbnQg bWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQo+IMKgCQkJc3VzcGVuZF9zdWJ0ZXN0KCZ0KTsK PiDCoAlURVNUX01PREVfSVRFUl9FTkQKPiDCoAo+ICsJaWd0X3N1YnRlc3RfZigiZWRwLURSUlMi KQo+ICsJCWVkcF9kcnJzX3Rlc3QoKTsKPiArCj4gwqAJdC5waXBlcyA9IFBJUEVfU0lOR0xFOwo+ IMKgCXQuc2NyZWVuID0gU0NSRUVOX1BSSU07Cj4gwqAJdC5wbGFuZSA9IFBMQU5FX1BSSTsKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==