From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH] drm/i915: Add link training test Date: Mon, 14 Sep 2015 16:38:11 +0300 Message-ID: <1442237891.2755.24.camel@gmail.com> References: <1441980706-9241-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <1442231511-24258-1-git-send-email-ander.conselvan.de.oliveira@intel.com> <20150914131149.GE3383@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f45.google.com (mail-pa0-f45.google.com [209.85.220.45]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8BADD6E106 for ; Mon, 14 Sep 2015 06:38:17 -0700 (PDT) Received: by padhk3 with SMTP id hk3so144628363pad.3 for ; Mon, 14 Sep 2015 06:38:17 -0700 (PDT) In-Reply-To: <20150914131149.GE3383@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org, thomas.wood@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE1LTA5LTE0IGF0IDE1OjExICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ IE9uIE1vbiwgU2VwIDE0LCAyMDE1IGF0IDAyOjUxOjUxUE0gKzAzMDAsIEFuZGVyIENvbnNlbHZh biBkZSBPbGl2ZWlyYSB3cm90ZToKPiA+IC0tLQo+ID4gCj4gPiBPbiBGcmksIDIwMTUtMDktMTEg YXQgMTc6MTEgKzAzMDAsIEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSB3cm90ZToKPiA+ID4g T24gV2VkLCAyMDE1LTA5LTA5IGF0IDExOjMzICswMTAwLCBUaG9tYXMgV29vZCB3cm90ZToKPiA+ ID4gPiBPbiA4IFNlcHRlbWJlciAyMDE1IGF0IDEzOjI4LCBBbmRlciBDb25zZWx2YW4gZGUgT2xp dmVpcmEKPiA+ID4gPiA8YW5kZXIuY29uc2VsdmFuLmRlLm9saXZlaXJhQGludGVsLmNvbT4gd3Jv dGU6Cj4gPiA+ID4gPiAKPiA+ID4gCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvbGluay10cmFpbmlu Zy10ZXN0L01ha2VmaWxlIGIvbGluay10cmFpbmluZy10ZXN0L01ha2VmaWxlCj4gPiA+ID4gCj4g PiA+ID4gSWYgdGhpcyBpcyBtZWFudCB0byBiZSBwYXJ0IG9mIHRoZSB0ZXN0IHN1aXRlLCB0aGVu IGl0IG5lZWRzIHRvIGJlIGluCj4gPiA+ID4gdGhlIHRlc3RzIGRpcmVjdG9yeSBhbmQgdXNlIHRo ZSBpZ3QgdGVzdCBpbmZyYXN0cnVjdHVyZS4gT3RoZXJ3aXNlIGl0Cj4gPiA+ID4gc2hvdWxkIGJl IHBsYWNlZCBpbiB0b29scyBvciB0b29scy9saW5rLXRyYWluaW5nLXRlc3QuCj4gPiA+IAo+ID4g PiBJIG1hZGUgdGhlIHRlc3QgdXNlIHRoZSBpZ3QgaW5mcmFzdHJ1Y3R1cmUsIGJ1dCBJJ20gbm90 IHN1cmUgaWYgdGhpcyBpcwo+ID4gPiBhIGdvb2QgZml0IGZvciBpdC4gVGhlIGRlcGVuZGVuY3kg b24gdGhlIGtlcm5lbCBpcyBvbiBidWlsZCB0aW1lLCBidXQKPiA+ID4gb25jZSBjb21waWxlZCB0 aGlzIGNhbiBiZSBydW4gb24gYW55IG1hY2hpbmUuIFRoaXMgY2FuIGFsc28gaW50cm9kdWNlCj4g PiA+IGJ1aWxkIGZhaWx1cmVzIGlmIHRoZSB0ZXN0IGlzIG5vdCBrZXB0IGluIHN5bmMgd2l0aCB0 aGUgZHJpdmVyIHNvdXJjZS4KPiA+ID4gSWRlYWxseSB0aGF0IGEgZmFpbHVyZSB0byBidWlsZCB0 aGlzIHdvdWxkIGJlIHJlcG9ydGVkIGFzIHRoZSB0ZXN0Cj4gPiA+IGZhaWxpbmcsIGJ1dCBJIGhh dmUgbm8gaWRlYSBvZiBob3cgdG8gYWNoaWV2ZSB0aGF0Lgo+ID4gCj4gPiBBbHRlcm5hdGl2ZWx5 LCB0aGlzIGNvdWxkIGJlIGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUgZGlyZWN0bHkuIFRoaXMK PiA+IHBhdGNoIGFkZHMgYSB0ZXN0IHN1YmRpciB0byB0aGUgaTkxNSBzb3VyY2UgZGlyLCBjb250 YWluaW5nIHRoZSBsaW5rCj4gPiB0cmFpbmluZyB0ZXN0LiBUaGUgdGVzdCBpcyBjb21waWxlZCBh cyBwYXJ0IG9mIHRoZSBub3JtYWwgYnVpbGQgdXNpbmcKPiA+IHRoZSBleHRyYS15IHZhcmlhYmxl IHNvIHRoYXQgaXQgZG9lc24ndCBnZXQgbGlua2VkIHRvIHRoZSBmaW5hbCBrZXJuZWwuCj4gPiAK PiA+IFdoZW4gbWFrZSBpcyBydW4gZnJvbSB0aGUgdGVzdHMgZGlyZWN0b3J5LCBhIHRoaW4gd3Jh cHBlciBhcm91bmQgdGhlCj4gPiB0ZXN0cyBpcyBidWlsdCBhbmQgbGlua2VkIHRvIHRoZSBvYmpl Y3QgZmlsZSBjb21waWxlZCBhcyBwYXJ0IG9mIHRoZQo+ID4ga2VybmVsIGJ1aWxkLiBSdW5uaW5n IG1ha2UgcnVuX3Rlc3RzIGZyb20gdGhlIHRlc3QgZGlyIHJ1bnMgdGhlIHRlc3QKPiA+IGFuZCBy ZXBvcnRzIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4KPiA+IAo+ID4gQW55IHRob3VnaHRzPwo+IAo+IEkg dGhpbmsgdGhlcmUncyBzb21lIHByZWNlZGVuY2UgaW4gb3RoZXIgc3Vic3lzdGVtcyB0byBpbnRl Z3JhdGUgdW5pdAo+IHRlc3RzIGRpcmVjdGx5IGluIHRoZSBrZXJuZWwsIGUuZy4gbG9ja2luZyBz ZWxmdGVzdCBvciBzaW1pbGFyIHRoaW5ncy4KPiBVc3VhbCBhcHByb2FjaCBpcyB0byBlaXRoZXIg aGF2ZSBhIHNwZWNpYWwgbW9kdWxlIChidXQgdGhhdCBvZnRlbiBtZWFucwo+IHBpbGVzIG9mIEVY UE9SVF9TWU1CT0wgb25seSBmb3IgdGhhdCBzZWxmdGVzdCBtb2R1bGUpLiBPciBqdXN0IGEgeS9u Cj4gS2NvbmZpZyBvcHRpb24gd2hpY2ggZW5hYmxlcyB0aGF0IGNvZGUgYW5kIHJ1bnMgYWxsIHRo ZSBzZWxmL3VuaXQgdGVzdHMKPiB3aGVuIHRoZSBtb2R1bGUgbG9hZHMuCj4gCj4gSSdkIGdvIHdp dGggdGhhdCBhcHByb2FjaCBzaW5jZSBpdCdzIHNpbXBsZXIuIEFuZCB3ZSdkIG9ubHkgbmVlZCB0 byB0ZWxsCj4gUUEgdG8gZW5hYmxlIHRoYXQgS2NvbmZpZyBvcHRpb24gZm9yIG1vcmUgdGVzdGlu Zy4KCkknbGwgaGF2ZSBhIGxvb2sgaW50byB0aGF0IEtjb25maWcgYXBwcm9hY2gsIGJ1dCB0aGVy ZSdzIGEgY291cGxlIG9mIHRoaW5ncwpJIGxpa2UgYWJvdXQgaGF2aW5nIHRoZSB1bml0IHRlc3Qg YXMgdXNlciBzcGFjZSBiaW5hcmllczoKCiAgLSB0aGVyZSdzIG5vIG5lZWQgdG8gYm9vdCB0aGUg bmV3bHkgY29tcGlsZWQga2VybmVsLCBzbyBkb2luZyBhIHRlc3QgcnVuCiAgICBpcyBzdXBlciBm YXN0OwogIC0gdGhlIGJpbmFyaWVzIGNhbiBiZSBkZWJ1Z2dlZCB3aXRoIGdkYiBqdXN0IGxpa2Ug b3RoZXIgdXNlciBzcGFjZSBzdHVmZi4KClRoZSBkb3duc2lkZSBpcyB0aGUgc3R1YmJpbmcgbmVj ZXNzYXJ5LiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSBpdCB3YXNuJ3QKdGhhdCBiYWQsIGJ1dCBJ IGd1ZXNzIGl0IGNvdWxkIGdldCByZWFsbHkgdWdseS4KCj4gTG9uZy10ZXJtIHdlIG1pZ2h0IGdv IG1vcmUgZmFuY3kgd2l0aCBzb21lIHN0YXRpYyBkZWJ1Z2ZzIGludGVyZmFjZSAoaS5lLgo+IGlu IHRoZSB0b3AtbGV2ZWwgZHJtLyBkaXJlY3RvcnksIG5vIGluIHRoZSBudW1iZXJlZCBkZXZpY2Ug c3ViZGlycyBpbgo+IGRlYnVnZnMpIHRvIHJ1biBzcGVjaWZpYyB0ZXN0Y2FzZXMgc28gdGhhdCB3 ZSBjYW4gcmVwb3J0IG91dCB0aGUgcmVzdWx0cy4KPiAKPiBCdXQgYXMgbG9uZyBhcyBtb2R1bGUg cmVsb2FkIGlzIHBhcnQgb2YgQkFUIHdlIGRvbid0IG5lZWQgdGhhdCwgYXQgbGVhc3QKPiBub3Qg Zm9yIGEgc3RhcnQuCj4gCj4gQW55d2F5IEkgdGhpbmsgaGF2aW5nIHRoZSB1bml0IHRlc3RzIGlu IHRoZSBrZXJuZWwgbWFrZXMgbW9yZSBzZW5zZSwgdGhlCj4gaWd0IG9uZXMgd2lsbCBsaWtlbHkg Z2V0IG91dCBvZiBzeW5jIGZhc3QuIEFuZCBpZ3QgaXMgc3VwcG9zZWQgdG8gd29yawo+IHdpdGgg YW55IGtlcm5lbCB2ZXJzaW9uIChoZW5jZSBhbGwgdGhlIGlndF9yZXF1aXJlIGNoZWNrcykuCgpZ ZWFoLCBhZ3JlZWQuCgpBbmRlcgoKPiAtRGFuaWVsCj4gCj4gPiAKPiA+IEFuZGVyCj4gPiAKPiA+ IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS90ZXN0cy9NYWtlZmlsZSAgICAg ICAgICAgICAgICB8ICAzOSArKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3RzL2VtcHR5 LmMgICAgICAgICAgICAgICAgIHwgICAwCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvdGVzdHMv bG9hZGVyLmMgICAgICAgICAgICAgICAgfCAxMDggKysrKysKPiA+ICAuLi4vZHJtL2k5MTUvdGVz dHMvdGVzdF9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMgICB8IDQ2NCArKysrKysrKysrKysrKysr KysrKysKPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDYxMyBpbnNlcnRpb25zKCspCj4gPiAgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3RzL01ha2VmaWxlCj4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3RzL2VtcHR5LmMKPiA+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvdGVzdHMvbG9hZGVyLmMKPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvdGVzdHMvdGVzdF9pbnRl bF9kcF9saW5rX3RyYWluaW5nLmMKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiA+IGluZGV4 IDA4NTFkZTA3Li43Mjk4Y2U1IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gPiBAQCAt OTcsNiArOTcsOCBAQCBpOTE1LXkgKz0gaTkxNV92Z3B1Lm8KPiA+ICAjIGxlZ2FjeSBob3Jyb3Jz Cj4gPiAgaTkxNS15ICs9IGk5MTVfZG1hLm8KPiA+ICAKPiA+ICtvYmoteSArPSB0ZXN0cy8KPiA+ ICsKPiA+ICBvYmotJChDT05GSUdfRFJNX0k5MTUpICArPSBpOTE1Lm8KPiA+ICAKPiA+ICBDRkxB R1NfaTkxNV90cmFjZV9wb2ludHMubyA6PSAtSSQoc3JjKQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3Rlc3RzL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvdGVz dHMvTWFrZWZpbGUKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwLi4z MDYyNzQxCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS90 ZXN0cy9NYWtlZmlsZQo+ID4gQEAgLTAsMCArMSwzOSBAQAo+ID4gKyMgUGxlYXNlIGtidWlsZAo+ ID4gKyMgVE9ETzogY2hlY2sgZm9yIGEgYmV0dGVyIHdheSB0byBpbmNsdWRlIHRoaXMgZGlyZWN0 b3J5IGluIHRoZSBidWlsZAo+ID4gKyMgd2l0aG91dCBmb3JjaW5nIHRoZSBuZWVkIGZvciB0aGlz IGVtcHR5IGZpbGUKPiA+ICtvYmoteSArPSBlbXB0eS5vCj4gPiArCj4gPiArCj4gPiArIyBGSVhN RTogVGhlIHN0YWNrIHByb3RlY3RvciBjb2RlIGNhdXNlcyB0ZXN0cyB0byBjcmFzaCBkdWUgdG8g YW4gaW1wcm9wZXJseQo+ID4gKyMgaW5pdGlhbGl6ZWQgJWdzLCBzbyBrZWVwIGl0IGRpc2FibGVk IGZvciBub3cuCj4gPiArY2NmbGFncy15IDo9IC1mc3RhY2stcHJvdGVjdG9yLWV4cGxpY2l0Cj4g PiArCj4gPiArZXh0cmEteSArPSB0ZXN0X2ludGVsX2RwX2xpbmtfdHJhaW5pbmcubwo+ID4gKwo+ ID4gKyMgSWYgbWFrZSBpcyBydW4gZnJvbSB0aGlzIGRpcmVjdG9yeQo+ID4gK2lmZXEgKDAsICQo TUFLRUxFVkVMKSkKPiA+ICsKPiA+ICsjIEZvciBzdHJsY3B5Cj4gPiArTERGTEFHUyA9IC1sYnNk Cj4gPiArCj4gPiArVEVTVF9QUk9HUyA9IFwKPiA+ICsJdGVzdF9pbnRlbF9kcF9saW5rX3RyYWlu aW5nCj4gPiArCj4gPiArYWxsOiB0ZXN0cwo+ID4gKwo+ID4gK3Rlc3RzOiAkKFRFU1RfUFJPR1Mp Cj4gPiArCj4gPiArcnVuX3Rlc3RzOiB0ZXN0cwo+ID4gKwlAZm9yIFRFU1QgaW4gJChURVNUX1BS T0dTKTsgZG8gXAo+ID4gKwkJKC4vJCRURVNUICYmIGVjaG8gIiQkVEVTVCBbUEFTU10iKSB8fCBl Y2hvICIkJFRFU1QgW0ZBSUxdIjsgXAo+ID4gKwlkb25lCj4gPiArCj4gPiArdGVzdF8lLm86IHRl c3RfJS5jIC4uLyUuYwo+ID4gKwltYWtlIC1DIC4uLy4uLy4uLy4uLy4uLyBkcml2ZXJzL2dwdS9k cm0vaTkxNS90ZXN0cy8kQAo+ID4gKwo+ID4gK2xvYWRlci5vOiBsb2FkZXIuYwo+ID4gKwkkKEND KSAkKENGTEFHUykgLWMgLW8gJEAgJDwKPiA+ICsKPiA+ICslOiAlLm8gbG9hZGVyLm8KPiA+ICsJ JChDQykgLW8gJEAgJF4gJChMREZMQUdTKQo+ID4gK2VuZGlmCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvdGVzdHMvZW1wdHkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Rl c3RzL2VtcHR5LmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwLi5l NjlkZTI5Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvdGVzdHMvbG9hZGVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS90ZXN0cy9sb2FkZXIuYwo+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiA+IGluZGV4IDAwMDAwMDAuLjllMzg4MTYKPiA+IC0tLSAvZGV2L251bGwKPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3RzL2xvYWRlci5jCj4gPiBAQCAtMCwwICsx LDEwOCBAQAo+ID4gKy8qCj4gPiArICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRp b24KPiA+ICsgKgo+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gPiArICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKPiA+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gPiAr ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCj4gPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiA+ICsgKgo+ID4gKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKPiA+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gPiArICogU29mdHdhcmUuCj4g PiArICoKPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ID4gKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ID4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBI T0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gPiArICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKPiA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gPiArICogSU4gVEhF IFNPRlRXQVJFLgo+ID4gKyAqCj4gPiArICogQXV0aG9yczoKPiA+ICsgKiAgICBBbmRlciBDb25z ZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+ Cj4gPiArICoKPiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSA8c3RkYm9vbC5oPgo+ID4gKyNp bmNsdWRlIDxzdGRpbnQuaD4KPiA+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gPiArI2luY2x1ZGUg PHN0ZGlvLmg+Cj4gPiArI2luY2x1ZGUgPHN0ZGFyZy5oPgo+ID4gKwo+ID4gK3ZvaWQgcnVuX3Rl c3Qodm9pZCk7Cj4gPiArCj4gPiArdm9pZCBhc3NlcnQoYm9vbCBjb25kaXRpb24pCj4gPiArewo+ ID4gKwlpZiAoIWNvbmRpdGlvbikgewo+ID4gKwkJcHJpbnRmKCJBc3NlcnQgZmFpbGVkXG4iKTsK PiA+ICsJCWFib3J0KCk7Cj4gPiArCX0KPiA+ICt9Cj4gPiArCj4gPiArc3RydWN0IHsKPiA+ICsJ dWludDhfdCBwYWRkaW5nWzMyXTsKPiA+ICt9IHBhcmFtX29wc19pbnQ7Cj4gPiArCj4gPiArdW5z aWduZWQgaW50IGRybV9kZWJ1ZyA9IDA7CS8qIDEgdG8gZW5hYmxlIGRlYnVnIG91dHB1dCAqLwo+ ID4gKwo+ID4gK3ZvaWQgZHJtX2Vycihjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKPiA+ICt7Cj4g PiArCXZhX2xpc3QgYXJnczsKPiA+ICsKPiA+ICsJdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKPiA+ ICsJdnByaW50Zihmb3JtYXQsIGFyZ3MpOwo+ID4gKwl2YV9lbmQoYXJncyk7Cj4gPiArCj4gPiAr fQo+ID4gKwo+ID4gK3ZvaWQgZHJtX3V0X2RlYnVnX3ByaW50ayhjb25zdCBjaGFyICpmdW5jdGlv bl9uYW1lLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKPiA+ICt7Cj4gPiArCXZhX2xpc3QgYXJn czsKPiA+ICsKPiA+ICsJdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKPiA+ICsJcHJpbnRmKCJbJXNd ICIsIGZ1bmN0aW9uX25hbWUpOwo+ID4gKwl2cHJpbnRmKGZvcm1hdCwgYXJncyk7Cj4gPiArCXZh X2VuZChhcmdzKTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBfX2NvbnN0X3VkZWxheSh1bnNpZ25l ZCBsb25nIHhsb29wcykKPiA+ICt7Cj4gPiArfQo+ID4gKwo+ID4gK3N0cnVjdCBtdXRleDsKPiA+ ICt2b2lkIG11dGV4X2xvY2tfbmVzdGVkKHN0cnVjdCBtdXRleCAqbG9jaywgdW5zaWduZWQgaW50 IHN1YmNsYXNzKQo+ID4gK3sKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBtdXRleF91bmxvY2soc3Ry dWN0IG11dGV4ICpsb2NrKQo+ID4gK3sKPiA+ICt9Cj4gPiArCj4gPiArc3RydWN0IGxvY2tfY2xh c3Nfa2V5Owo+ID4gK3ZvaWQKPiA+ICtfX211dGV4X2luaXQoc3RydWN0IG11dGV4ICpsb2NrLCBj b25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSkKPiA+ICt7Cj4gPiAr fQo+ID4gKwo+ID4gK3ZvaWQgdXNsZWVwX3JhbmdlKHVuc2lnbmVkIGludCBtaW4sIHVuc2lnbmVk IGludCBtYXgpCj4gPiArewo+ID4gK30KPiA+ICsKPiA+ICtzdHJ1Y3QgaTJjX2FkYXB0ZXI7Cj4g PiAraW50IGkyY19hZGRfYWRhcHRlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpCj4gPiAr ewo+ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBpMmNfZGVsX2FkYXB0ZXIo c3RydWN0IGkyY19hZGFwdGVyICphZGFwYXRlcikKPiA+ICt7Cj4gPiArfQo+ID4gKwo+ID4gK2lu dAo+ID4gK21haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKPiA+ICt7Cj4gPiArCXJ1bl90ZXN0 KCk7Cj4gPiArCXJldHVybiAwOwo+ID4gK30KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS90ZXN0cy90ZXN0X2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyAKPiA+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvdGVzdHMvdGVzdF9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiA+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwLi4xMTg2OGY4Cj4gPiAtLS0gL2Rl di9udWxsCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS90ZXN0cy90ZXN0X2ludGVsX2Rw X2xpbmtfdHJhaW5pbmcuYwo+ID4gQEAgLTAsMCArMSw0NjQgQEAKPiA+ICsvKgo+ID4gKyAqIENv cHlyaWdodCDCqSAyMDE1IEludGVsIENvcnBvcmF0aW9uCj4gPiArICoKPiA+ICsgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQo+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPiArICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgo+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4gKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Cj4gPiArICoKPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiArICogcGFyYWdy YXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZQo+ID4gKyAqIFNvZnR3YXJlLgo+ID4gKyAqCj4gPiArICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKPiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiA+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiA+ ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gPiArICogRlJP TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUiBERUFMSU5HUwo+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ICsgKgo+ID4gKyAq IEF1dGhvcnM6Cj4gPiArICogICAgQW5kZXIgQ29uc2VsdmFuIGRlIE9saXZlaXJhIDxhbmRlci5j b25zZWx2YW4uZGUub2xpdmVpcmFAaW50ZWwuY29tPgo+ID4gKyAqCj4gPiArICovCj4gPiArCj4g PiArI2luY2x1ZGUgIi4uL2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyIKPiA+ICsKPiA+ICsjZGVm aW5lIGRybV9kcF9kcGNkX3dyaXRlCXJlYWxfZHJtX2RwX2RwY2Rfd3JpdGUKPiA+ICsjaW5jbHVk ZSAiLi4vLi4vZHJtX2RwX2hlbHBlci5jIgo+ID4gKyN1bmRlZiBkcm1fZHBfZHBjZF93cml0ZQo+ ID4gKwo+ID4gK3ZvaWQgYXNzZXJ0KGJvb2wgY29uZGl0aW9uKTsKPiA+ICsKPiA+ICsKPiA+ICtz dHJ1Y3Qgc2lua19kZXZpY2Ugewo+ID4gKwlzc2l6ZV90ICgqZHBjZF93cml0ZSkoc3RydWN0IHNp bmtfZGV2aWNlICpzaW5rLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ID4gKwkJCSAgICAgIHZvaWQg KmJ1ZmZlciwgc2l6ZV90IHNpemUpOwo+ID4gKwlib29sICgqZ2V0X2xpbmtfc3RhdHVzKShzdHJ1 Y3Qgc2lua19kZXZpY2UgKnNpbmssCj4gPiArCQkJCXVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElO S19TVEFUVVNfU0laRV0pOwo+ID4gKwo+ID4gKwlzdHJ1Y3Qgewo+ID4gKwkJYm9vbCBsYW5lX2Nv dW50X2FuZF9id19zZXQ7Cj4gPiArCQlib29sIHRyYWluaW5nX3BhdHRlcm5fMV9zZXQ7Cj4gPiAr CQlib29sIHN0YXJ0ZWRfd2l0aF9ub25femVyb19sZXZlbHM7Cj4gPiArCQlib29sIGNyX2RvbmU7 Cj4gPiArCQlib29sIGNoYW5uZWxfZXFfZG9uZTsKPiA+ICsKPiA+ICsJCXVpbnQ4X3QgZHBjZFsw eDMwMDBdOwo+ID4gKwl9IGRhdGE7Cj4gPiArfTsKPiA+ICsKPiA+ICsvKiBGYWtlIHNpbmsgZGV2 aWNlIGltcGxlbWVudGF0aW9uICovCj4gPiArCj4gPiArc3RhdGljIHVpbnQ4X3QKPiA+ICtzaW5r X2RldmljZV9sYW5lX2NvdW50KHN0cnVjdCBzaW5rX2RldmljZSAqc2luaykKPiA+ICt7Cj4gPiAr CXJldHVybiBzaW5rLT5kYXRhLmRwY2RbRFBfTEFORV9DT1VOVF9TRVRdOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgdWludDhfdAo+ID4gK3NpbmtfZGV2aWNlX2dldF90cmFpbmluZ19wYXR0ZXJu KHN0cnVjdCBzaW5rX2RldmljZSAqc2luaykKPiA+ICt7Cj4gPiArCXJldHVybiBzaW5rLT5kYXRh LmRwY2RbRFBfVFJBSU5JTkdfUEFUVEVSTl9TRVRdICYgRFBfVFJBSU5JTkdfUEFUVEVSTl9NQVNL Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdWludDhfdAo+ID4gK3NpbmtfZGV2aWNlX2dldF92 b2x0YWdlX3N3aW5nKHN0cnVjdCBzaW5rX2RldmljZSAqc2luaywgaW50IGxhbmUpCj4gPiArewo+ ID4gKwlyZXR1cm4gc2luay0+ZGF0YS5kcGNkW0RQX1RSQUlOSU5HX0xBTkUwX1NFVCArIGxhbmVd ICYKPiA+ICsJCURQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSzsKPiA+ICt9Cj4gPiArCj4gPiAr c3RhdGljIHVpbnQ4X3QKPiA+ICtzaW5rX2RldmljZV9nZXRfcHJlX2VtcGhhc2lzX2xldmVsKHN0 cnVjdCBzaW5rX2RldmljZSAqc2luaywgaW50IGxhbmUpCj4gPiArewo+ID4gKwlyZXR1cm4gKHNp bmstPmRhdGEuZHBjZFtEUF9UUkFJTklOR19MQU5FMF9TRVQgKyBsYW5lXSAmCj4gPiArCQkgRFBf VFJBSU5fUFJFX0VNUEhBU0lTX01BU0spID4+IERQX1RSQUlOX1BSRV9FTVBIQVNJU19TSElGVDsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQKPiA+ICtzaW5rX2RldmljZV9jaGVja19sYW5l X2NvdW50X2FuZF9idyhzdHJ1Y3Qgc2lua19kZXZpY2UgKnNpbmspCj4gPiArewo+ID4gKwlpZiAo c2luay0+ZGF0YS5sYW5lX2NvdW50X2FuZF9id19zZXQpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4g PiArCWFzc2VydChzaW5rLT5kYXRhLmRwY2RbRFBfVFJBSU5JTkdfUEFUVEVSTl9TRVRdID09IDAp Owo+ID4gKwo+ID4gKwlpZiAoc2luay0+ZGF0YS5kcGNkW0RQX0xJTktfQldfU0VUXSAhPSAwICYm Cj4gPiArCSAgICBzaW5rLT5kYXRhLmRwY2RbRFBfTEFORV9DT1VOVF9TRVRdICE9IDApCj4gPiAr CQlzaW5rLT5kYXRhLmxhbmVfY291bnRfYW5kX2J3X3NldCA9IHRydWU7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyB2b2lkCj4gPiArc2lua19kZXZpY2VfY2hlY2tfcGF0dGVybl8xX3NldChzdHJ1 Y3Qgc2lua19kZXZpY2UgKnNpbmspCj4gPiArewo+ID4gKwlpbnQgbGFuZTsKPiA+ICsKPiA+ICsJ aWYgKCFzaW5rLT5kYXRhLmxhbmVfY291bnRfYW5kX2J3X3NldCB8fAo+ID4gKwkgICAgc2luay0+ ZGF0YS50cmFpbmluZ19wYXR0ZXJuXzFfc2V0KQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlh c3NlcnQoc2lua19kZXZpY2VfZ2V0X3RyYWluaW5nX3BhdHRlcm4oc2luaykgPD0gRFBfVFJBSU5J TkdfUEFUVEVSTl8xKTsKPiA+ICsKPiA+ICsJaWYgKHNpbmtfZGV2aWNlX2dldF90cmFpbmluZ19w YXR0ZXJuKHNpbmspICE9IERQX1RSQUlOSU5HX1BBVFRFUk5fMSkKPiA+ICsJCXJldHVybjsKPiA+ ICsKPiA+ICsJYXNzZXJ0KHNpbmstPmRhdGEuZHBjZFtEUF9MSU5LX0JXX1NFVF0gPT0gRFBfTElO S19CV18xXzYyIHx8Cj4gPiArCSAgICAgICBzaW5rLT5kYXRhLmRwY2RbRFBfTElOS19CV19TRVRd ID09IERQX0xJTktfQldfMl83KTsKPiA+ICsKPiA+ICsJYXNzZXJ0KHNpbmstPmRhdGEuZHBjZFtE UF9MQU5FX0NPVU5UX1NFVF0gPT0gMSB8fAo+ID4gKwkJICAgc2luay0+ZGF0YS5kcGNkW0RQX0xB TkVfQ09VTlRfU0VUXSA9PSAyIHx8Cj4gPiArCQkgICBzaW5rLT5kYXRhLmRwY2RbRFBfTEFORV9D T1VOVF9TRVRdID09IDQpOwo+ID4gKwo+ID4gKwlmb3IgKGxhbmUgPSAwOyBsYW5lIDwgc2lua19k ZXZpY2VfbGFuZV9jb3VudChzaW5rKTsgbGFuZSsrKSB7Cj4gPiArCQlpZiAoc2lua19kZXZpY2Vf Z2V0X3ZvbHRhZ2Vfc3dpbmcoc2luaywgbGFuZSkgIT0gRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19M RVZFTF8wIAo+ID4gfHwKPiA+ICsJCSAgICBzaW5rX2RldmljZV9nZXRfcHJlX2VtcGhhc2lzX2xl dmVsKHNpbmssIGxhbmUpICE9IAo+ID4gRFBfVFJBSU5fUFJFX0VNUEhfTEVWRUxfMCkKPiA+ICsJ CQlzaW5rLT5kYXRhLnN0YXJ0ZWRfd2l0aF9ub25femVyb19sZXZlbHMgPSB0cnVlOwo+ID4gKwl9 Cj4gPiArCj4gPiArCXNpbmstPmRhdGEudHJhaW5pbmdfcGF0dGVybl8xX3NldCA9IHRydWU7Cj4g PiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArc2lua19kZXZpY2VfY2hlY2tfcGF0dGVy bl8yX3NldChzdHJ1Y3Qgc2lua19kZXZpY2UgKnNpbmspCj4gPiArewo+ID4gKwlpZiAoIXNpbmst PmRhdGEuY3JfZG9uZSkKPiA+ICsJCXJldHVybjsKPiA+ICsKPiA+ICsJYXNzZXJ0KHNpbmtfZGV2 aWNlX2dldF90cmFpbmluZ19wYXR0ZXJuKHNpbmspID09IERQX1RSQUlOSU5HX1BBVFRFUk5fMik7 Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArc2lua19kZXZpY2VfY2hlY2tfcGF0 dGVybl9kaXNhYmxlKHN0cnVjdCBzaW5rX2RldmljZSAqc2luaykKPiA+ICt7Cj4gPiArCWlmICgh c2luay0+ZGF0YS5jcl9kb25lIHx8ICEgc2luay0+ZGF0YS5jaGFubmVsX2VxX2RvbmUpCj4gPiAr CQlyZXR1cm47Cj4gPiArCj4gPiArCWFzc2VydChzaW5rX2RldmljZV9nZXRfdHJhaW5pbmdfcGF0 dGVybihzaW5rKSA9PSBEUF9UUkFJTklOR19QQVRURVJOX0RJU0FCTEUpOwo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMgc3NpemVfdAo+ID4gK3NpbmtfZGV2aWNlX2RwY2Rfd3JpdGUoc3RydWN0IHNp bmtfZGV2aWNlICpzaW5rLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ID4gKwkJICAgICAgIHZvaWQg KmJ1ZmZlciwgc2l6ZV90IHNpemUpCj4gPiArewo+ID4gKwltZW1jcHkoc2luay0+ZGF0YS5kcGNk ICsgb2Zmc2V0LCBidWZmZXIsIHNpemUpOwo+ID4gKwo+ID4gKwlzaW5rX2RldmljZV9jaGVja19s YW5lX2NvdW50X2FuZF9idyhzaW5rKTsKPiA+ICsKPiA+ICsJaWYgKCFzaW5rLT5kYXRhLmNyX2Rv bmUpCj4gPiArCQlzaW5rX2RldmljZV9jaGVja19wYXR0ZXJuXzFfc2V0KHNpbmspOwo+ID4gKwll bHNlIGlmICghc2luay0+ZGF0YS5jaGFubmVsX2VxX2RvbmUpCj4gPiArCQlzaW5rX2RldmljZV9j aGVja19wYXR0ZXJuXzJfc2V0KHNpbmspOwo+ID4gKwllbHNlCj4gPiArCQlzaW5rX2RldmljZV9j aGVja19wYXR0ZXJuX2Rpc2FibGUoc2luayk7Cj4gPiArCj4gPiArCXJldHVybiBzaXplOwo+ID4g K30KPiA+ICsKPiA+ICtzdGF0aWMgYm9vbAo+ID4gK3NpbmtfZGV2aWNlX21heF92b2x0YWdlX3Jl YWNoZWQoc3RydWN0IHNpbmtfZGV2aWNlICpzaW5rLCBpbnQgbGFuZSkKPiA+ICt7Cj4gPiArCXJl dHVybiAoc2luay0+ZGF0YS5kcGNkW0RQX1RSQUlOSU5HX0xBTkUwX1NFVCArIGxhbmVdICYgRFBf VFJBSU5fTUFYX1NXSU5HX1JFQUNIRUQpID09Cj4gPiArCQlEUF9UUkFJTl9NQVhfU1dJTkdfUkVB Q0hFRDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wKPiA+ICtzaW5rX2RldmljZV9tYXhf cHJlX2VtcGhhc2lzX3JlYWNoZWQoc3RydWN0IHNpbmtfZGV2aWNlICpzaW5rLCBpbnQgbGFuZSkK PiA+ICt7Cj4gPiArCXJldHVybiAoc2luay0+ZGF0YS5kcGNkW0RQX1RSQUlOSU5HX0xBTkUwX1NF VCArIGxhbmVdICYgCj4gPiBEUF9UUkFJTl9NQVhfUFJFX0VNUEhBU0lTX1JFQUNIRUQpID09Cj4g PiArCQlEUF9UUkFJTl9NQVhfUFJFX0VNUEhBU0lTX1JFQUNIRUQ7Cj4gPiArfQo+ID4gKwo+ID4g K3N0YXRpYyB2b2lkCj4gPiArc2lua19kZXZpY2Vfc2V0X2FkanVzdF92b2x0YWdlKHN0cnVjdCBz aW5rX2RldmljZSAqc2luaywKPiA+ICsJCQkgICAgICAgaW50IGxhbmUsIHVpbnQ4X3QgbGV2ZWwp Cj4gPiArewo+ID4gKwlpbnQgc2hpZnQgPSBEUF9BREpVU1RfVk9MVEFHRV9TV0lOR19MQU5FMV9T SElGVCAqIChsYW5lICYgMSk7Cj4gPiArCj4gPiArCXNpbmstPmRhdGEuZHBjZFtEUF9BREpVU1Rf UkVRVUVTVF9MQU5FMF8xICsgKGxhbmUgPj4gMSldICY9Cj4gPiArCQl+KERQX0FESlVTVF9WT0xU QUdFX1NXSU5HX0xBTkUwX01BU0sgPDwgc2hpZnQpOwo+ID4gKwlzaW5rLT5kYXRhLmRwY2RbRFBf QURKVVNUX1JFUVVFU1RfTEFORTBfMSArIChsYW5lID4+IDEpXSB8PQo+ID4gKwkJbGV2ZWwgPDwg c2hpZnQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArc2lua19kZXZpY2Vfc2V0 X2FkanVzdF9wcmVfZW1waGFzaXMoc3RydWN0IHNpbmtfZGV2aWNlICpzaW5rLAo+ID4gKwkJCQkg ICAgaW50IGxhbmUsIHVpbnQ4X3QgbGV2ZWwpCj4gPiArewo+ID4gKwlpbnQgc2hpZnQgPSBEUF9B REpVU1RfVk9MVEFHRV9TV0lOR19MQU5FMV9TSElGVCAqIChsYW5lICYgMSk7Cj4gPiArCj4gPiAr CXNpbmstPmRhdGEuZHBjZFtEUF9BREpVU1RfUkVRVUVTVF9MQU5FMF8xICsgKGxhbmUgPj4gMSld ICY9Cj4gPiArCQl+KERQX0FESlVTVF9QUkVfRU1QSEFTSVNfTEFORTBfTUFTSyA8PCBzaGlmdCk7 Cj4gPiArCXNpbmstPmRhdGEuZHBjZFtEUF9BREpVU1RfUkVRVUVTVF9MQU5FMF8xICsgKGxhbmUg Pj4gMSldIHw9Cj4gPiArCQlsZXZlbCA8PCAoRFBfQURKVVNUX1BSRV9FTVBIQVNJU19MQU5FMF9T SElGVCArIHNoaWZ0KTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wKPiA+ICtzaW5rX2Rl dmljZV9yZXF1ZXN0X2hpZ2hlcl92b2x0YWdlX3N3aW5nKHN0cnVjdCBzaW5rX2RldmljZSAqc2lu aykKPiA+ICt7Cj4gPiArCWJvb2wgbWF4X3JlYWNoZWQgPSBmYWxzZTsKPiA+ICsJaW50IGxhbmU7 Cj4gPiArCj4gPiArCWZvciAobGFuZSA9IDA7IGxhbmUgPCBzaW5rX2RldmljZV9sYW5lX2NvdW50 KHNpbmspOyBsYW5lKyspIHsKPiA+ICsJCWlmIChzaW5rX2RldmljZV9tYXhfdm9sdGFnZV9yZWFj aGVkKHNpbmssIGxhbmUpKSB7Cj4gPiArCQkJbWF4X3JlYWNoZWQgPSB0cnVlOwo+ID4gKwkJCWJy ZWFrOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCWlmIChtYXhfcmVhY2hlZCkKPiA+ICsJ CXJldHVybiBmYWxzZTsKPiA+ICsKPiA+ICsJZm9yIChsYW5lID0gMDsgbGFuZSA8IHNpbmtfZGV2 aWNlX2xhbmVfY291bnQoc2luayk7IGxhbmUrKykgewo+ID4gKwkJdWludDhfdCBuZXdfdm9sdGFn ZSA9Cj4gPiArCQkJc2lua19kZXZpY2VfZ2V0X3ZvbHRhZ2Vfc3dpbmcoc2luaywgbGFuZSkgKyAx Owo+ID4gKwo+ID4gKwkJc2lua19kZXZpY2Vfc2V0X2FkanVzdF92b2x0YWdlKHNpbmssIGxhbmUs IG5ld192b2x0YWdlKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIGJvb2wKPiA+ICtzaW5rX2RldmljZV9yZXF1ZXN0X2hpZ2hlcl9wcmVf ZW1waGFzaXMoc3RydWN0IHNpbmtfZGV2aWNlICpzaW5rKQo+ID4gK3sKPiA+ICsJYm9vbCBtYXhf cmVhY2hlZCA9IGZhbHNlOwo+ID4gKwlpbnQgbGFuZTsKPiA+ICsKPiA+ICsJZm9yIChsYW5lID0g MDsgbGFuZSA8IHNpbmtfZGV2aWNlX2xhbmVfY291bnQoc2luayk7IGxhbmUrKykgewo+ID4gKwkJ aWYgKHNpbmtfZGV2aWNlX21heF9wcmVfZW1waGFzaXNfcmVhY2hlZChzaW5rLCBsYW5lKSkgewo+ ID4gKwkJCW1heF9yZWFjaGVkID0gdHJ1ZTsKPiA+ICsJCQlicmVhazsKPiA+ICsJCX0KPiA+ICsJ fQo+ID4gKwo+ID4gKwlpZiAobWF4X3JlYWNoZWQpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiAr Cj4gPiArCWZvciAobGFuZSA9IDA7IGxhbmUgPCBzaW5rX2RldmljZV9sYW5lX2NvdW50KHNpbmsp OyBsYW5lKyspIHsKPiA+ICsJCXVpbnQ4X3QgbmV3X3ByZV9lbXBoYXNpcyA9Cj4gPiArCQkJc2lu a19kZXZpY2VfZ2V0X3ByZV9lbXBoYXNpc19sZXZlbChzaW5rLCBsYW5lKSArIDE7Cj4gPiArCj4g PiArCQlzaW5rX2RldmljZV9zZXRfYWRqdXN0X3ByZV9lbXBoYXNpcyhzaW5rLCBsYW5lLCBuZXdf cHJlX2VtcGhhc2lzKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ICt9Cj4g PiArCj4gPiArc3RhdGljIHZvaWQKPiA+ICtzaW5rX2RldmljZV9tYXJrX2NyX2RvbmUoc3RydWN0 IHNpbmtfZGV2aWNlICpzaW5rKQo+ID4gK3sKPiA+ICsJaW50IGxhbmU7Cj4gPiArCj4gPiArCWZv ciAobGFuZSA9IDA7IGxhbmUgPCBzaW5rX2RldmljZV9sYW5lX2NvdW50KHNpbmspOyBsYW5lKysp Cj4gPiArCQlzaW5rLT5kYXRhLmRwY2RbRFBfTEFORTBfMV9TVEFUVVMgKyAobGFuZSA+PiAxKV0g fD0KPiA+ICsJCQlEUF9MQU5FX0NSX0RPTkUgPDwgKDQgKiAobGFuZSAmIDEpKTsKPiA+ICsKPiA+ ICsJc2luay0+ZGF0YS5jcl9kb25lID0gdHJ1ZTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZv aWQKPiA+ICtzaW5rX2RldmljZV9tYXJrX2NoYW5uZWxfZXFfZG9uZShzdHJ1Y3Qgc2lua19kZXZp Y2UgKnNpbmspCj4gPiArewo+ID4gKwlpbnQgbGFuZTsKPiA+ICsKPiA+ICsJZm9yIChsYW5lID0g MDsgbGFuZSA8IHNpbmtfZGV2aWNlX2xhbmVfY291bnQoc2luayk7IGxhbmUrKykgewo+ID4gKwkJ dWludDhfdCBtYXNrID0gKERQX0xBTkVfQ0hBTk5FTF9FUV9ET05FIHwgRFBfTEFORV9TWU1CT0xf TE9DS0VEKTsKPiA+ICsJCXNpbmstPmRhdGEuZHBjZFtEUF9MQU5FMF8xX1NUQVRVUyArIChsYW5l ID4+IDEpXSB8PQo+ID4gKwkJCW1hc2sgPDwgKDQgKiAobGFuZSAmIDEpKTsKPiA+ICsJfQo+ID4g Kwo+ID4gKwlzaW5rLT5kYXRhLmRwY2RbRFBfTEFORV9BTElHTl9TVEFUVVNfVVBEQVRFRF0gfD0g RFBfSU5URVJMQU5FX0FMSUdOX0RPTkU7Cj4gPiArCj4gPiArCXNpbmstPmRhdGEuY2hhbm5lbF9l cV9kb25lID0gdHJ1ZTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wKPiA+ICtzaW5rX2Rl dmljZV9nZXRfbGlua19zdGF0dXMoc3RydWN0IHNpbmtfZGV2aWNlICpzaW5rLAo+ID4gKwkJCSAg ICB1aW50OF90IGxpbmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdKQo+ID4gK3sKPiA+ICsJ aWYgKCFzaW5rLT5kYXRhLmNyX2RvbmUpIHsKPiA+ICsJCWlmICghc2lua19kZXZpY2VfcmVxdWVz dF9oaWdoZXJfdm9sdGFnZV9zd2luZyhzaW5rKSkKPiA+ICsJCQlzaW5rX2RldmljZV9tYXJrX2Ny X2RvbmUoc2luayk7Cj4gPiArCX0gZWxzZSBpZiAoIXNpbmstPmRhdGEuY2hhbm5lbF9lcV9kb25l KSB7Cj4gPiArCQlpZiAoIXNpbmtfZGV2aWNlX3JlcXVlc3RfaGlnaGVyX3ByZV9lbXBoYXNpcyhz aW5rKSkKPiA+ICsJCQlzaW5rX2RldmljZV9tYXJrX2NoYW5uZWxfZXFfZG9uZShzaW5rKTsKPiA+ ICsJfQo+ID4gKwo+ID4gKwltZW1jcHkobGlua19zdGF0dXMsIHNpbmstPmRhdGEuZHBjZCArIERQ X0xBTkUwXzFfU1RBVFVTLAo+ID4gKwkgICAgICAgRFBfTElOS19TVEFUVVNfU0laRSk7Cj4gPiAr Cj4gPiArCXJldHVybiB0cnVlOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZAo+ID4gK3Np bmtfZGV2aWNlX3Jlc2V0KHN0cnVjdCBzaW5rX2RldmljZSAqc2luaywgaW50IGxhbmVzLCB1aW50 OF90IGxpbmtfYncpCj4gPiArewo+ID4gKwltZW1zZXQoJnNpbmstPmRhdGEsIDAsIHNpemVvZiBz aW5rLT5kYXRhKTsKPiA+ICsJc2luay0+ZGF0YS5kcGNkW0RQX01BWF9MSU5LX1JBVEVdID0gbGlu a19idzsKPiA+ICsJc2luay0+ZGF0YS5kcGNkW0RQX01BWF9MQU5FX0NPVU5UXSA9IGxhbmVzOwo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgc3RydWN0IHNpbmtfZGV2aWNlIHNpbXBsZV9zaW5rID0g ewo+ID4gKwkuZ2V0X2xpbmtfc3RhdHVzID0gc2lua19kZXZpY2VfZ2V0X2xpbmtfc3RhdHVzLAo+ ID4gKwkuZHBjZF93cml0ZSA9IHNpbmtfZGV2aWNlX2RwY2Rfd3JpdGUsCj4gPiArfTsKPiA+ICsK PiA+ICsvKiBHbHVlIGNvZGUgKi8KPiA+ICsKPiA+ICtzdHJ1Y3QgdGVzdF9pbnRlbF9kcCB7Cj4g PiArCXN0cnVjdCBpbnRlbF9kcCBkcDsKPiA+ICsJc3RydWN0IHNpbmtfZGV2aWNlICpzaW5rOwo+ ID4gKwl1aW50OF90IGxpbmtfYnc7Cj4gPiArCj4gPiArCXVpbnQ4X3QgbWF4X3ZvbHRhZ2U7Cj4g PiArCXVpbnQ4X3QgbWF4X3ByZV9lbXBoYXNpczsKPiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBz dHJ1Y3QgdGVzdF9pbnRlbF9kcCAqCj4gPiArdG9fdGVzdF9pbnRlbF9kcChzdHJ1Y3QgaW50ZWxf ZHAgKmRwKQo+ID4gK3sKPiA+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihkcCwgc3RydWN0IHRlc3Rf aW50ZWxfZHAsIGRwKTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBpbnRlbF9kcF9zZXRfaWRsZV9s aW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiArewo+ID4gK30KPiA+ICsK PiA+ICtib29sIGludGVsX2RwX3NvdXJjZV9zdXBwb3J0c19oYnIyKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCj4gPiArewo+ID4gKwlyZXR1cm4gZmFsc2U7Cj4gPiArfQo+ID4gKwo+ID4gK2Jv b2wKPiA+ICtpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwgdWludDhfdCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSkKPiA+ICt7Cj4gPiAr CXN0cnVjdCBzaW5rX2RldmljZSAqc2luayA9IHRvX3Rlc3RfaW50ZWxfZHAoaW50ZWxfZHApLT5z aW5rOwo+ID4gKwlyZXR1cm4gc2luay0+Z2V0X2xpbmtfc3RhdHVzKHNpbmssIGxpbmtfc3RhdHVz KTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZAo+ID4gK2ludGVsX2RwX3VwZGF0ZV9zaWduYWxfbGV2 ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiArewo+ID4gK30KPiA+ICsKPiA+ICt2 b2lkIGludGVsX2RwX2NvbXB1dGVfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQg cG9ydF9jbG9jaywKPiA+ICsJCQkgICB1aW50OF90ICpsaW5rX2J3LCB1aW50OF90ICpyYXRlX3Nl bGVjdCkKPiA+ICt7Cj4gPiArCSpsaW5rX2J3ID0gdG9fdGVzdF9pbnRlbF9kcChpbnRlbF9kcCkt PmxpbmtfYnc7Cj4gPiArCSpyYXRlX3NlbGVjdCA9IDA7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQK PiA+ICtpbnRlbF9kcF9wcm9ncmFtX2xpbmtfdHJhaW5pbmdfcGF0dGVybihzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLAo+ID4gKwkJCQkgICAgICAgdWludDhfdCBkcF90cmFpbl9wYXQpCj4gPiAr ewo+ID4gK30KPiA+ICsKPiA+ICt1aW50OF90Cj4gPiAraW50ZWxfZHBfdm9sdGFnZV9tYXgoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICt7Cj4gPiArCXJldHVybiB0b190ZXN0X2ludGVs X2RwKGludGVsX2RwKS0+bWF4X3ZvbHRhZ2UgPDwKPiA+ICsJCURQX1RSQUlOX1ZPTFRBR0VfU1dJ TkdfU0hJRlQ7Cj4gPiArfQo+ID4gKwo+ID4gK3VpbnQ4X3QKPiA+ICtpbnRlbF9kcF9wcmVfZW1w aGFzaXNfbWF4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3Qgdm9sdGFnZV9zd2lu ZykKPiA+ICt7Cj4gPiArCXJldHVybiB0b190ZXN0X2ludGVsX2RwKGludGVsX2RwKS0+bWF4X3By ZV9lbXBoYXNpcyA8PAo+ID4gKwkJRFBfVFJBSU5fUFJFX0VNUEhBU0lTX1NISUZUOwo+ID4gK30K PiA+ICsKPiA+ICtzc2l6ZV90IGRybV9kcF9kcGNkX3dyaXRlKHN0cnVjdCBkcm1fZHBfYXV4ICph dXgsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gPiArCQkJICB2b2lkICpidWZmZXIsIHNpemVfdCBz aXplKQo+ID4gK3sKPiA+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9Cj4gPiArCQljb250 YWluZXJfb2YoYXV4LCBzdHJ1Y3QgaW50ZWxfZHAsIGF1eCk7Cj4gPiArCXN0cnVjdCBzaW5rX2Rl dmljZSAqc2luayA9IHRvX3Rlc3RfaW50ZWxfZHAoaW50ZWxfZHApLT5zaW5rOwo+ID4gKwo+ID4g KwlyZXR1cm4gc2luay0+ZHBjZF93cml0ZShzaW5rLCBvZmZzZXQsIGJ1ZmZlciwgc2l6ZSk7Cj4g PiArfQo+ID4gKwo+ID4gKy8qIC0tLSAqLwo+ID4gKwo+ID4gK3N0YXRpYyBzdHJ1Y3QgdGVzdF9p bnRlbF9kcCB0ZXN0X2RwOwo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkCj4gPiArZG9fdGVzdChzdHJ1 Y3Qgc2lua19kZXZpY2UgKnNpbmssIGludCBsYW5lcywgdWludDhfdCBsaW5rX2J3LAo+ID4gKwkg ICAgIHVpbnQ4X3QgbWF4X3ZvbHRhZ2UsIHVpbnQ4X3QgbWF4X3ByZV9lbXBoYXNpcykKPiA+ICt7 Cj4gPiArCWludCBsYW5lOwo+ID4gKwo+ID4gKwltZW1zZXQoJnRlc3RfZHAsIDAsIHNpemVvZiB0 ZXN0X2RwKTsKPiA+ICsJdGVzdF9kcC5kcC5sYW5lX2NvdW50ID0gbGFuZXM7Cj4gPiArCXRlc3Rf ZHAubGlua19idyA9IGxpbmtfYnc7Cj4gPiArCXRlc3RfZHAuc2luayA9IHNpbms7Cj4gPiArCXRl c3RfZHAubWF4X3ZvbHRhZ2UgPQo+ID4gKwkJbWF4X3ZvbHRhZ2UgPj4gRFBfVFJBSU5fVk9MVEFH RV9TV0lOR19TSElGVDsKPiA+ICsJdGVzdF9kcC5tYXhfcHJlX2VtcGhhc2lzID0KPiA+ICsJCW1h eF9wcmVfZW1waGFzaXMgPj4gRFBfVFJBSU5fUFJFX0VNUEhBU0lTX1NISUZUOwo+ID4gKwo+ID4g KwlzaW5rX2RldmljZV9yZXNldChzaW5rLCBsYW5lcywgbGlua19idyk7Cj4gPiArCj4gPiArCWlu dGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oJnRlc3RfZHAuZHApOwo+ID4gKwlpbnRlbF9kcF9zdG9w X2xpbmtfdHJhaW4oJnRlc3RfZHAuZHApOwo+ID4gKwo+ID4gKwlhc3NlcnQoc2luay0+ZGF0YS5j cl9kb25lKTsKPiA+ICsJYXNzZXJ0KHNpbmstPmRhdGEuY2hhbm5lbF9lcV9kb25lKTsKPiA+ICsK PiA+ICsJZm9yIChsYW5lID0gMDsgbGFuZSA8IHRlc3RfZHAuZHAubGFuZV9jb3VudDsgbGFuZSsr KSB7Cj4gPiArCQl1aW50OF90IGN1cl92ID0gc2lua19kZXZpY2VfZ2V0X3ZvbHRhZ2Vfc3dpbmco c2luaywgbGFuZSk7Cj4gPiArCQl1aW50OF90IGN1cl9wID0gc2lua19kZXZpY2VfZ2V0X3ByZV9l bXBoYXNpc19sZXZlbChzaW5rLCBsYW5lKTsKPiA+ICsKPiA+ICsJCWFzc2VydChjdXJfdiA9PSB0 ZXN0X2RwLm1heF92b2x0YWdlKTsKPiA+ICsJCWFzc2VydChjdXJfcCA9PSB0ZXN0X2RwLm1heF9w cmVfZW1waGFzaXMpOwo+ID4gKwl9Cj4gPiArfQo+ID4gKwo+ID4gK2ludCB0ZXN0X2xhbmVzW10g PSB7Cj4gPiArCTEsIDIsIDQsCj4gPiArfTsKPiA+ICsKPiA+ICt1aW50OF90IHRlc3RfYndbXSA9 IHsKPiA+ICsJRFBfTElOS19CV18xXzYyLAo+ID4gKwlEUF9MSU5LX0JXXzJfNywKPiA+ICt9Owo+ ID4gKwo+ID4gK3VpbnQ4X3QgdGVzdF9tYXhfdm9sdGFnZVtdID0gewo+ID4gKwlEUF9UUkFJTl9W T0xUQUdFX1NXSU5HX0xFVkVMXzAsCj4gPiArCURQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTEVWRUxf MSwKPiA+ICsJRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19MRVZFTF8yLAo+ID4gKwlEUF9UUkFJTl9W T0xUQUdFX1NXSU5HX0xFVkVMXzMsCj4gPiArfTsKPiA+ICsKPiA+ICt1aW50OF90IHRlc3RfbWF4 X3ByZV9lbXBoYXNpc1tdID0gewo+ID4gKwlEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8wLAo+ID4g KwlEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8xLAo+ID4gKwlEUF9UUkFJTl9QUkVfRU1QSF9MRVZF TF8yLAo+ID4gKwlEUF9UUkFJTl9QUkVfRU1QSF9MRVZFTF8zLAo+ID4gK307Cj4gPiArCj4gPiAr dm9pZAo+ID4gK3J1bl90ZXN0KHZvaWQpCj4gPiArewo+ID4gKwlpbnQgbGFuZSwgYncsIHZvbHRh Z2UsIGVtcGg7Cj4gPiArCj4gPiArCWZvciAobGFuZSA9IDA7IGxhbmUgPCBBUlJBWV9TSVpFKHRl c3RfbGFuZXMpOyBsYW5lKyspCj4gPiArCWZvciAoYncgPSAwOyBidyA8IEFSUkFZX1NJWkUodGVz dF9idyk7IGJ3KyspCj4gPiArCWZvciAodm9sdGFnZSA9IDA7IHZvbHRhZ2UgPCBBUlJBWV9TSVpF KHRlc3RfbWF4X3ZvbHRhZ2UpOyB2b2x0YWdlKyspCj4gPiArCWZvciAoZW1waCA9IDA7IGVtcGgg PCBBUlJBWV9TSVpFKHRlc3RfbWF4X3ByZV9lbXBoYXNpcyk7IGVtcGgrKykgewo+ID4gKwkJRFJN X0RFQlVHX0tNUygibCVkLWJ3JWQtdiVkLXBlJWQiLAo+ID4gKwkJCSAgICAgIHRlc3RfbGFuZXNb bGFuZV0sCj4gPiArCQkJICAgICAgdGVzdF9id1tid10sCj4gPiArCQkJICAgICAgdGVzdF9tYXhf dm9sdGFnZVt2b2x0YWdlXSwKPiA+ICsJCQkgICAgICB0ZXN0X21heF9wcmVfZW1waGFzaXNbZW1w aF0pOwo+ID4gKwkJZG9fdGVzdCgmc2ltcGxlX3NpbmssCj4gPiArCQkJdGVzdF9sYW5lc1tsYW5l XSwKPiA+ICsJCQl0ZXN0X2J3W2J3XSwKPiA+ICsJCQl0ZXN0X21heF92b2x0YWdlW3ZvbHRhZ2Vd LAo+ID4gKwkJCXRlc3RfbWF4X3ByZV9lbXBoYXNpc1tlbXBoXSk7Cj4gPiArCX0KPiA+ICt9Cj4g PiAtLSAKPiA+IDIuNC4zCj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==