From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id B3CC26E11C for ; Thu, 11 Jul 2019 17:19:07 +0000 (UTC) Received: by mail-ed1-x543.google.com with SMTP id w13so6559304eds.4 for ; Thu, 11 Jul 2019 10:19:07 -0700 (PDT) Date: Thu, 11 Jul 2019 19:19:03 +0200 From: Daniel Vetter Message-ID: <20190711171903.GP15868@phenom.ffwll.local> References: <20190704095604.16589-1-oleg.vasilev@intel.com> <20190704095604.16589-2-oleg.vasilev@intel.com> <20190710163542.GX15868@phenom.ffwll.local> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Subject: Re: [igt-dev] [PATCH 2/2] tests/prime_generic: add vendor-agnostic prime tests List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "Ser, Simon" Cc: "igt-dev@lists.freedesktop.org" , "daniel@ffwll.ch" List-ID: T24gVGh1LCBKdWwgMTEsIDIwMTkgYXQgMDM6MjA6NTJQTSArMDAwMCwgU2VyLCBTaW1vbiB3cm90 ZToKPiBPbiBUaHUsIDIwMTktMDctMTEgYXQgMTQ6MzYgKzAyMDAsIERhbmllbCBWZXR0ZXIgd3Jv dGU6Cj4gPiBPbiBUaHUsIEp1bCAxMSwgMjAxOSBhdCAxMTowOSBBTSBWYXNpbGV2LCBPbGVnIDxv bGVnLnZhc2lsZXZAaW50ZWwuY29tPiB3cm90ZToKPiA+ID4gT24gV2VkLCAyMDE5LTA3LTEwIGF0 IDE4OjM1ICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiA+IE9uIFRodSwgSnVsIDA0 LCAyMDE5IGF0IDEyOjU2OjA0UE0gKzAzMDAsIE9sZWcgVmFzaWxldiB3cm90ZToKPiA+ID4gPiA+ IEN1cnJlbnRseSwgd2UgaGF2ZSBkaWZmZXJlbnQgc2V0cyBvZiBwcmltZSB0ZXN0czoKPiA+ID4g PiA+ICAtIHZnZW0raTkxNQo+ID4gPiA+ID4gIC0gYW1kZ3B1K2k5MTUKPiA+ID4gPiA+ICAtIG52 K2k5MTUKPiA+ID4gPiA+IAo+ID4gPiA+ID4gVGhvc2UgdGVzdHMgdXNlIHZlbmRvci1zcGVjaWZp YyBpb2N0bHMsIHRoZXJlZm9yZSwgbm90Cj4gPiA+ID4gPiBpbnRlcmNoYW5nZWFibGUuCj4gPiA+ ID4gPiBUaGUgaWRlYSBpcyB0byBjcmVhdGUgYSBzZXQgb2YgdGVzdHMgd2hpY2ggYXJlIGV4cGVj dGVkIHRvIHdvcmsgb24KPiA+ID4gPiA+IGFueQo+ID4gPiA+ID4gcHJpbWUtY29tcGF0aWJsZSBk cml2ZXIuIEl0IGNhbiBiZSBydW4gd2l0aCBhbnkgY29tYmluYXRpb24gb2YKPiA+ID4gPiA+IGV4 cG9ydGVyK2ltcG9ydGVyLCB3aGVyZQo+ID4gPiA+ID4gCj4gPiA+ID4gPiBUaGUgZmlyc3QgdGVz dCBpcyBzaW1wbGU6Cj4gPiA+ID4gPiAxLiBFeHBvcnRlciBjcmVhdGVzIGEgZnJhbWVidWZmZXIg YW5kIGZpbGxzIGl0IHdpdGggYSBwbGFpbiBjb2xvcgo+ID4gPiA+ID4gMi4gRmIgaXMgdHJhbnNm ZXJyZWQgdG8gdGhlIGltcG9ydGVyCj4gPiA+ID4gPiAzLiBJbXBvcnRlciBtb2Rlc2V0cyBhbmQg Y29tcHV0ZXMgcGlwZSBDUkMKPiA+ID4gPiA+IDQuIEltcG9ydGVyIGRyYXdzIHRoZSBzYW1lIGNv bG9yIHRocm91Z2ggY2Fpcm8gYW5kIGNvbXBhcmVzIENSQwo+ID4gPiA+ID4gCj4gPiA+ID4gPiBU aGUgaW5pdGlhbCBtb3RpdmF0aW9uIGNvbWVzIGZyb20gdGhlIG5lZWQgdG8gdGVzdCBwcmltZSBz dXBwb3J0IGluCj4gPiA+ID4gPiB2a21zLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBDYzogUm9kcmln byBTaXF1ZWlyYSA8cm9kcmlnb3NpcXVlaXJhbWVsb0BnbWFpbC5jb20+Cj4gPiA+ID4gPiBDYzog RGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTog T2xlZyBWYXNpbGV2IDxvbGVnLnZhc2lsZXZAaW50ZWwuY29tPgo+ID4gPiA+ID4gLS0tCj4gPiA+ ID4gPiAgdGVzdHMvbWVzb24uYnVpbGQgICAgIHwgICAxICsKPiA+ID4gPiA+ICB0ZXN0cy9wcmlt ZV9nZW5lcmljLmMgfCAyMzgKPiA+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ID4gPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMjM5IGluc2VydGlvbnMo KykKPiA+ID4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcHJpbWVfZ2VuZXJpYy5jCj4g PiA+ID4gPiAKPiA+ID4gPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3Rz L21lc29uLmJ1aWxkCj4gPiA+ID4gPiBpbmRleCAzNGE3NDAyNS4uMWM5MzhlOTUgMTAwNjQ0Cj4g PiA+ID4gPiAtLS0gYS90ZXN0cy9tZXNvbi5idWlsZAo+ID4gPiA+ID4gKysrIGIvdGVzdHMvbWVz b24uYnVpbGQKPiA+ID4gPiA+IEBAIC03Niw2ICs3Niw3IEBAIHRlc3RfcHJvZ3MgPSBbCj4gPiA+ ID4gPiAgICAgJ3ByaW1lX3NlbGZfaW1wb3J0JywKPiA+ID4gPiA+ICAgICAncHJpbWVfdWRsJywK PiA+ID4gPiA+ICAgICAncHJpbWVfdmdlbScsCj4gPiA+ID4gPiArICAgJ3ByaW1lX2dlbmVyaWMn LAo+ID4gPiA+ID4gICAgICdzeW5jb2JqX2Jhc2ljJywKPiA+ID4gPiA+ICAgICAnc3luY29ial93 YWl0JywKPiA+ID4gPiA+ICAgICAndGVtcGxhdGUnLAo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL3Rl c3RzL3ByaW1lX2dlbmVyaWMuYyBiL3Rlc3RzL3ByaW1lX2dlbmVyaWMuYwo+ID4gPiA+ID4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwLi42NWU0ODc2Mwo+ID4g PiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiA+ID4gKysrIGIvdGVzdHMvcHJpbWVfZ2VuZXJpYy5j Cj4gPiA+ID4gPiBAQCAtMCwwICsxLDIzOCBAQAo+ID4gPiA+ID4gKy8qCj4gPiA+ID4gPiArICog Q29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiA+ID4gPiA+ICsgKgo+ID4gPiA+ ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uCj4gPiA+ID4gPiBvYnRhaW5pbmcgYQo+ID4gPiA+ID4gKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKPiA+ID4g PiA+ICJTb2Z0d2FyZSIpLAo+ID4gPiA+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4gPiA+ID4gPiBsaW1pdGF0aW9u Cj4gPiA+ID4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsCj4gPiA+ID4gPiBzdWJsaWNlbnNlLAo+ID4gPiA+ID4gKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 bwo+ID4gPiA+ID4gd2hvbSB0aGUKPiA+ID4gPiA+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZwo+ID4gPiA+ID4gY29uZGl0aW9uczoK PiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlCj4gPiA+ID4gPiAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4g PiA+ID4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsCj4gPiA+ID4gPiBwb3J0aW9ucyBvZiB0aGUKPiA+ID4gPiA+ICsgKiBTb2Z0 d2FyZS4KPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAo+ID4gPiA+ID4gRVhQUkVT UyBPUgo+ID4gPiA+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YKPiA+ID4gPiA+IE1FUkNIQU5UQUJJTElUWSwKPiA+ID4gPiA+ICsg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8KPiA+ID4gPiA+IEVWRU5UIFNIQUxMCj4gPiA+ID4gPiArICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCj4gPiA+ID4gPiBEQU1B R0VTIE9SIE9USEVSCj4gPiA+ID4gPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCj4gPiA+ID4gPiBBUklTSU5HCj4gPiA+ ID4gPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUgo+ID4gPiA+ID4gT1RIRVIgREVBTElOR1MKPiA+ID4gPiA+ICsgKiBJTiBU SEUgU09GVFdBUkUuCj4gPiA+ID4gPiArICovCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArI2luY2x1 ZGUgImlndC5oIgo+ID4gPiA+ID4gKyNpbmNsdWRlICJpZ3RfdmdlbS5oIgo+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KPiA+ID4gPiA+ICsjaW5jbHVkZSA8c3lz L3BvbGwuaD4KPiA+ID4gPiA+ICsjaW5jbHVkZSA8dGltZS5oPgo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gK3N0YXRpYyBzdHJ1Y3Qgewo+ID4gPiA+ID4gKyAgIGRvdWJsZSByLCBnLCBiOwo+ID4gPiA+ ID4gKyAgIHVpbnQzMl90IGNvbG9yOwo+ID4gPiA+ID4gKyAgIGlndF9jcmNfdCBwcmltZV9jcmM7 Cj4gPiA+ID4gPiArICAgaWd0X2NyY190IGRpcmVjdF9jcmM7Cj4gPiA+ID4gPiArICAgY2hhciAq cHJpbWVfc3RyOwo+ID4gPiA+ID4gKyAgIGNoYXIgKmRpcmVjdF9zdHI7Cj4gPiA+ID4gPiArfSBj b2xvcnNbM10gPSB7Cj4gPiA+ID4gPiArICAgeyAuciA9IDAuMCwgLmcgPSAwLjAsIC5iID0gMC4w LCAuY29sb3IgPSAweGZmMDAwMDAwfSwKPiA+ID4gPiA+ICsgICB7IC5yID0gMS4wLCAuZyA9IDEu MCwgLmIgPSAxLjAsIC5jb2xvciA9IDB4ZmZmZmZmZmZ9LAo+ID4gPiA+ID4gKyAgIHsgLnIgPSAx LjAsIC5nID0gMC4wLCAuYiA9IDAuMCwgLmNvbG9yID0gMHhmZmZmMDAwMH0sCj4gPiA+ID4gPiAr fTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtJR1RfVEVTVF9ERVNDUklQVElPTigiR2VuZXJpYyB0 ZXN0cywgd29ya2luZyB3aXRoIGFueSBwcmltZQo+ID4gPiA+ID4gZGV2aWNlIik7Cj4gPiA+ID4g PiArCj4gPiA+ID4gPiArc3RhdGljIGJvb2wgaGFzX3ByaW1lX2ltcG9ydChpbnQgZmQpCj4gPiA+ ID4gPiArewo+ID4gPiA+ID4gKyAgIHVpbnQ2NF90IHZhbHVlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKyAgIGlmIChkcm1HZXRDYXAoZmQsIERSTV9DQVBfUFJJTUUsICZ2YWx1ZSkpCj4gPiA+ID4g PiArICAgICAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgcmV0 dXJuIHZhbHVlICYgRFJNX1BSSU1FX0NBUF9JTVBPUlQ7Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gK3N0YXRpYyBib29sIGhhc19wcmltZV9leHBvcnQoaW50IGZkKQo+ID4gPiA+ ID4gK3sKPiA+ID4gPiA+ICsgICB1aW50NjRfdCB2YWx1ZTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsgICBpZiAoZHJtR2V0Q2FwKGZkLCBEUk1fQ0FQX1BSSU1FLCAmdmFsdWUpKQo+ID4gPiA+ID4g KyAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgIHJldHVy biB2YWx1ZSAmIERSTV9QUklNRV9DQVBfRVhQT1JUOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBwcmVwYXJlX3NjcmF0Y2goaW50IGV4cG9ydGVyLCBzdHJ1 Y3QgdmdlbV9ibyAqc2NyYXRjaCwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRy bU1vZGVNb2RlSW5mbyAqbW9kZSwgdWludDMyX3QgY29sb3IpCj4gPiA+ID4gPiArewo+ID4gPiA+ ID4gKyAgIGludCBpOwo+ID4gPiA+ID4gKyAgIHVpbnQzMl90ICpwdHI7Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArICAgc2NyYXRjaC0+d2lkdGggPSBtb2RlLT5oZGlzcGxheTsKPiA+ID4gPiA+ICsg ICBzY3JhdGNoLT5oZWlnaHQgPSBtb2RlLT52ZGlzcGxheTsKPiA+ID4gPiA+ICsgICBzY3JhdGNo LT5icHAgPSAzMjsKPiA+ID4gPiA+ICsgICB2Z2VtX2NyZWF0ZShleHBvcnRlciwgc2NyYXRjaCk7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgcHRyID0gdmdlbV9tbWFwKGV4cG9ydGVyLCBzY3Jh dGNoLCBQUk9UX1dSSVRFKTsKPiA+ID4gPiA+ICsgICBmb3IgKGkgPSAwOyBpIDwgc2NyYXRjaC0+ c2l6ZSAvIHNpemVvZigqcHRyKTsgKytpKQo+ID4gPiA+ID4gKyAgICAgICAgICAgcHRyW2ldID0g Y29sb3I7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgbXVubWFwKHB0ciwgc2NyYXRjaC0+c2l6 ZSk7Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHByZXBh cmVfZmIoaW50IGltcG9ydGVyLCBzdHJ1Y3QgdmdlbV9ibyAqc2NyYXRjaCwKPiA+ID4gPiA+IHN0 cnVjdCBpZ3RfZmIgKmZiKQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsgICBlbnVtIGlndF9jb2xv cl9lbmNvZGluZyBjb2xvcl9lbmNvZGluZyA9IElHVF9DT0xPUl9ZQ0JDUl9CVDcwOTsKPiA+ID4g PiA+ICsgICBlbnVtIGlndF9jb2xvcl9yYW5nZSBjb2xvcl9yYW5nZSA9Cj4gPiA+ID4gPiBJR1Rf Q09MT1JfWUNCQ1JfTElNSVRFRF9SQU5HRTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICBpZ3Rf aW5pdF9mYihmYiwgaW1wb3J0ZXIsIHNjcmF0Y2gtPndpZHRoLCBzY3JhdGNoLT5oZWlnaHQsCj4g PiA+ID4gPiArICAgICAgICAgICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwgTE9DQUxfRFJNX0ZP Uk1BVF9NT0RfTk9ORSwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICBjb2xvcl9lbmNvZGluZywg Y29sb3JfcmFuZ2UpOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMg dm9pZCBpbXBvcnRfZmIoaW50IGltcG9ydGVyLCBzdHJ1Y3QgaWd0X2ZiICpmYiwKPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgIGludCBkbWFidWZfZmQsIHVpbnQzMl90IHBpdGNoKQo+ID4gPiA+ ID4gK3sKPiA+ID4gPiA+ICsgICB1aW50MzJfdCBvZmZzZXRzWzRdLCBwaXRjaGVzWzRdLCBoYW5k bGVzWzRdOwo+ID4gPiA+ID4gKyAgIGludCByZXQ7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAg ZmItPmdlbV9oYW5kbGUgPSBwcmltZV9mZF90b19oYW5kbGUoaW1wb3J0ZXIsIGRtYWJ1Zl9mZCk7 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgaGFuZGxlc1swXSA9IGZiLT5nZW1faGFuZGxlOwo+ ID4gPiA+ID4gKyAgIHBpdGNoZXNbMF0gPSBwaXRjaDsKPiA+ID4gPiA+ICsgICBvZmZzZXRzWzBd ID0gMDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICByZXQgPSBkcm1Nb2RlQWRkRkIyKGltcG9y dGVyLCBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgaGFuZGxlcywgcGl0Y2hlcywgb2Zmc2V0cywKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICZmYi0+ZmJfaWQsIDApOwo+ID4gPiA+ID4gKyAgIGlndF9hc3NlcnQocmV0ID09IDAp Owo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBzZXRfZmIo c3RydWN0IGlndF9mYiAqZmIsCj4gPiA+ID4gPiArICAgICAgICAgICAgICBpZ3RfZGlzcGxheV90 ICpkaXNwbGF5LAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgaWd0X291dHB1dF90ICpvdXRwdXQp Cj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKyAgIGlndF9wbGFuZV90ICpwcmltYXJ5Owo+ID4gPiA+ ID4gKyAgIGludCByZXQ7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgcHJpbWFyeSA9IGlndF9v dXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwgMCk7Cj4gPiA+ID4gPiArICAgaWd0X3BsYW5lX3NldF9m YihwcmltYXJ5LCBmYik7Cj4gPiA+ID4gPiArICAgcmV0ID0gaWd0X2Rpc3BsYXlfY29tbWl0KGRp c3BsYXkpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgIGlndF9hc3NlcnQocmV0ID09IDApOwo+ ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCB0ZXN0X2NyYyhp bnQgZXhwb3J0ZXIsIGludCBpbXBvcnRlcikKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArICAgZW51 bSBwaXBlIHBpcGUgPSBQSVBFX0E7Cj4gPiA+ID4gPiArICAgaWd0X2Rpc3BsYXlfdCBkaXNwbGF5 Owo+ID4gPiA+ID4gKyAgIGlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ID4gPiA+ID4gKyAgIGlndF9w aXBlX2NyY190ICpwaXBlX2NyYzsKPiA+ID4gPiA+ICsgICBzdHJ1Y3QgaWd0X2ZiIGZiOwo+ID4g PiA+ID4gKyAgIGludCBkbWFidWZfZmQ7Cj4gPiA+ID4gPiArICAgc3RydWN0IHZnZW1fYm8gc2Ny YXRjaDsgLyogZGVzcGl0ZSB0aGUgbmFtZSwgaXQgc3VpdHMgZm9yIGFueQo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbS1jb21wYXRpYmxlIGRldmljZSAqLwo+ID4g PiA+ID4gKyAgIGludCBpLCBqOwo+ID4gPiA+ID4gKyAgIGRybU1vZGVNb2RlSW5mbyAqbW9kZTsK PiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICBib29sIGNyY19lcXVhbDsKPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ICsgICBpZ3RfZGlzcGxheV9yZXF1aXJlKCZkaXNwbGF5LCBpbXBvcnRlcik7Cj4gPiA+ ID4gPiArICAgaWd0X3NraXBfb24ocGlwZSA+PSBkaXNwbGF5Lm5fcGlwZXMpOwo+ID4gPiA+ID4g KyAgIG91dHB1dCA9IGlndF9nZXRfc2luZ2xlX291dHB1dF9mb3JfcGlwZSgmZGlzcGxheSwgcGlw ZSk7Cj4gPiA+ID4gPiArICAgaWd0X3JlcXVpcmVfZihvdXRwdXQsICJObyBjb25uZWN0b3IgZm91 bmQgZm9yIHBpcGUgJXNcbiIsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICBrbXN0ZXN0X3Bp cGVfbmFtZShwaXBlKSk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgaWd0X2Rpc3BsYXlfcmVz ZXQoJmRpc3BsYXkpOwo+ID4gPiA+ID4gKyAgIGlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBw aXBlKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsgICBtb2RlID0gaWd0X291dHB1dF9nZXRfbW9k ZShvdXRwdXQpOwo+ID4gPiA+ID4gKyAgIHBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhpbXBv cnRlciwgcGlwZSwKPiA+ID4gPiA+IElOVEVMX1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICsgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjb2xvcnMpOyBp KyspIHsKPiA+ID4gPiA+ICsgICAgICAgICAgIHByZXBhcmVfc2NyYXRjaChleHBvcnRlciwgJnNj cmF0Y2gsIG1vZGUsCj4gPiA+ID4gPiBjb2xvcnNbaV0uY29sb3IpOwo+ID4gPiA+ID4gKyAgICAg ICAgICAgZG1hYnVmX2ZkID0gcHJpbWVfaGFuZGxlX3RvX2ZkKGV4cG9ydGVyLAo+ID4gPiA+ID4g c2NyYXRjaC5oYW5kbGUpOwo+ID4gPiA+ID4gKyAgICAgICAgICAgZ2VtX2Nsb3NlKGV4cG9ydGVy LCBzY3JhdGNoLmhhbmRsZSk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgICAgICBwcmVw YXJlX2ZiKGltcG9ydGVyLCAmc2NyYXRjaCwgJmZiKTsKPiA+ID4gPiA+ICsgICAgICAgICAgIGlt cG9ydF9mYihpbXBvcnRlciwgJmZiLCBkbWFidWZfZmQsIHNjcmF0Y2gucGl0Y2gpOwo+ID4gPiA+ ID4gKyAgICAgICAgICAgY2xvc2UoZG1hYnVmX2ZkKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsg ICAgICAgICAgIHNldF9mYigmZmIsICZkaXNwbGF5LCBvdXRwdXQpOwo+ID4gPiA+ID4gKyAgICAg ICAgICAgaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKHBpcGVfY3JjLAo+ID4gPiA+ID4gJmNvbG9y c1tpXS5wcmltZV9jcmMpOwo+ID4gPiA+ID4gKyAgICAgICAgICAgY29sb3JzW2ldLnByaW1lX3N0 ciA9Cj4gPiA+ID4gPiBpZ3RfY3JjX3RvX3N0cmluZygmY29sb3JzW2ldLnByaW1lX2NyYyk7Cj4g PiA+ID4gPiArICAgICAgICAgICBpZ3RfZGVidWcoIlByaW1lIENSQyBmb3IgJSMwOHggaXMgJXNc biIsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgY29sb3JzW2ldLmNvbG9yLCBjb2xv cnNbaV0ucHJpbWVfc3RyKTsKPiA+ID4gPiA+ICsgICAgICAgICAgIGlndF9yZW1vdmVfZmIoaW1w b3J0ZXIsICZmYik7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgICAgICAgICBpZ3RfY3JlYXRl X2NvbG9yX2ZiKGltcG9ydGVyLAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCj4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gPiA+ID4gPiBMT0NB TF9EUk1fRk9STUFUX01PRF9OT05FLAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb2xvcnNbaV0uciwgY29sb3JzW2ldLmcsCj4gPiA+ID4gPiBjb2xvcnNbaV0uYiwK PiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZiKTsKPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsgICAgICAgICAgIHNldF9mYigmZmIsICZkaXNwbGF5LCBvdXRwdXQpOwo+ ID4gPiA+ID4gKyAgICAgICAgICAgaWd0X3BpcGVfY3JjX2NvbGxlY3RfY3JjKHBpcGVfY3JjLAo+ ID4gPiA+ID4gJmNvbG9yc1tpXS5kaXJlY3RfY3JjKTsKPiA+ID4gPiA+ICsgICAgICAgICAgIGNv bG9yc1tpXS5kaXJlY3Rfc3RyID0KPiA+ID4gPiA+IGlndF9jcmNfdG9fc3RyaW5nKCZjb2xvcnNb aV0uZGlyZWN0X2NyYyk7Cj4gPiA+ID4gPiArICAgICAgICAgICBpZ3RfZGVidWcoIkRpcmVjdCBD UkMgZm9yICUjMDh4IGlzICVzXG4iLAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGNv bG9yc1tpXS5jb2xvciwgY29sb3JzW2ldLmRpcmVjdF9zdHIpOwo+ID4gPiA+ID4gKyAgICAgICAg ICAgaWd0X3JlbW92ZV9mYihpbXBvcnRlciwgJmZiKTsKPiA+ID4gPiA+ICsgICB9Cj4gPiA+ID4g PiArICAgaWd0X3BpcGVfY3JjX2ZyZWUocGlwZV9jcmMpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4g KyAgIGlndF9kZWJ1ZygiQ1JDIHRhYmxlOlxuIik7Cj4gPiA+ID4gPiArICAgaWd0X2RlYnVnKCJD b2xvclx0XHRQcmltZVx0XHREaXJlY3RcbiIpOwo+ID4gPiA+ID4gKyAgIGZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGNvbG9ycyk7IGkrKykgewo+ID4gPiA+ID4gKyAgICAgICAgICAgaWd0X2Rl YnVnKCIlIzA4eFx0JS44c1x0JS44c1xuIiwgY29sb3JzW2ldLmNvbG9yLAo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgIGNvbG9yc1tpXS5wcmltZV9zdHIsIGNvbG9yc1tpXS5kaXJlY3Rf c3RyKTsKPiA+ID4gPiA+ICsgICB9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgZm9yIChpID0g MDsgaSA8IEFSUkFZX1NJWkUoY29sb3JzKTsgaSsrKSB7Cj4gPiA+ID4gPiArICAgICAgICAgICBm b3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShjb2xvcnMpOyBqKyspIHsKPiA+ID4gPiA+ICsgICAg ICAgICAgICAgICAgICAgaWYgKGkgPT0gaikgewo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlndF9hc3NlcnRfY3JjX2VxdWFsKCZjb2xvcnNbaV0ucHJpbWVfYwo+ID4gPiA+ ID4gcmMsCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmNvbG9yc1tqXS5kaXJlY3RfCj4gPiA+ID4gPiBjcmMpOwo+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNyY19lcXVhbCA9Cj4gPiA+ID4gPiBpZ3RfY2hlY2tfY3JjX2VxdWFsKCZjb2xvcnNb aV0ucHJpbWVfY3JjLAo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbG9ycwo+ID4gPiA+ID4gW2pdLmRpcmVjdF9j cmMpOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlndF9hc3NlcnRfZigh Y3JjX2VxdWFsLCAiQ1JDIHNob3VsZCBiZQo+ID4gPiA+ID4gZGlmZmVyZW50Iik7Cj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgIH0KPiA+ID4gPiA+ICsgICAgICAgICAgIH0KPiA+ID4gPiA+ ICsgICB9Cj4gPiA+ID4gPiArfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHJ1 bl90ZXN0X2NyYyhpbnQgZXhwb3J0X2NoaXBzZXQsIGludCBpbXBvcnRfY2hpcHNldCkKPiA+ID4g PiA+ICt7Cj4gPiA+ID4gPiArICAgaW50IGltcG9ydGVyID0gLTE7Cj4gPiA+ID4gPiArICAgaW50 IGV4cG9ydGVyID0gLTE7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgZXhwb3J0ZXIgPSBkcm1f b3Blbl9kcml2ZXIoZXhwb3J0X2NoaXBzZXQpOwo+ID4gPiA+ID4gKyAgIGltcG9ydGVyID0gZHJt X29wZW5fZHJpdmVyX21hc3RlcihpbXBvcnRfY2hpcHNldCk7Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArICAgaWd0X3JlcXVpcmUoaGFzX3ByaW1lX2V4cG9ydChleHBvcnRlcikpOwo+ID4gPiA+ID4g KyAgIGlndF9yZXF1aXJlKGhhc19wcmltZV9pbXBvcnQoaW1wb3J0ZXIpKTsKPiA+ID4gPiA+ICsg ICBpZ3RfcmVxdWlyZV9waXBlX2NyYyhpbXBvcnRlcik7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAr ICAgdGVzdF9jcmMoZXhwb3J0ZXIsIGltcG9ydGVyKTsKPiA+ID4gPiA+ICsgICBjbG9zZShpbXBv cnRlcik7Cj4gPiA+ID4gPiArICAgY2xvc2UoZXhwb3J0ZXIpOwo+ID4gPiA+ID4gK30KPiA+ID4g PiA+ICsKPiA+ID4gPiA+ICtpZ3RfbWFpbgo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsgICBpZ3Rf Zml4dHVyZSB7Cj4gPiA+ID4gPiArICAgICAgICAgICBrbXN0ZXN0X3NldF92dF9ncmFwaGljc19t b2RlKCk7Cj4gPiA+ID4gPiArICAgfQo+ID4gPiA+ID4gKyAgIGlndF9zdWJ0ZXN0KCJjcmMtdmdl bS12a21zIikKPiA+ID4gPiA+ICsgICAgICAgICAgIHJ1bl90ZXN0X2NyYyhEUklWRVJfVkdFTSwg RFJJVkVSX1ZLTVMpOwo+ID4gPiA+ID4gKyAgIGlndF9zdWJ0ZXN0KCJjcmMtaTkxNS12a21zIikK PiA+ID4gPiA+ICsgICAgICAgICAgIHJ1bl90ZXN0X2NyYyhEUklWRVJfSU5URUwsIERSSVZFUl9W S01TKTsKPiA+ID4gPiA+ICsgICBpZ3Rfc3VidGVzdCgiY3JjLXZnZW0taTkxNSIpCj4gPiA+ID4g PiArICAgICAgICAgICBydW5fdGVzdF9jcmMoRFJJVkVSX1ZHRU0sIERSSVZFUl9JTlRFTCk7Cj4g PiA+ID4gPiArICAgaWd0X3N1YnRlc3QoImNyYy1hbWQtaTkxNSIpCj4gPiA+ID4gPiArICAgICAg ICAgICBydW5fdGVzdF9jcmMoRFJJVkVSX0FNREdQVSwgRFJJVkVSX0lOVEVMKTsKPiA+ID4gPiA+ ICsgICBpZ3Rfc3VidGVzdCgiY3JjLWk5MTUtYW1kIikKPiA+ID4gPiA+ICsgICAgICAgICAgIHJ1 bl90ZXN0X2NyYyhEUklWRVJfSU5URUwsIERSSVZFUl9BTURHUFUpOwo+ID4gPiA+IAo+ID4gPiA+ IFRoaXMgaXNuJ3QgYW55IG1vcmUgZ2VuZXJpYyB0aGFuIHdoYXQgd2UgaGF2ZSBlLmcuIGluIHBy aW1lX3ZnZW0KPiA+ID4gPiBhbHJlYWR5Lgo+ID4gPiAKPiA+ID4gSGVyZSBub24tZ2VuZXJpYyBw YXJ0IGlzIG9ubHkgdGhvc2UgMTAgbGluZXMgb2Ygc3VidGVzdHMgZGVmaW5pdGlvbnMuCj4gPiA+ IFRoZSByZXN0IGlzIGNvbW1vbiBjb2RlLgo+ID4gPiAKPiA+ID4gSSBndWVzcywgdGhpcyBzZXBh cmF0ZSBzdWJ0ZXN0IGRlZmluaXRpb25zIGNhbiBkb2N1bWVudCB0aGUgZGV2aWNlCj4gPiA+IHBh aXJzIHRoZSB0ZXN0IGlzIGV4cGVjdGVkIHRvIHdvcmsgKyB3ZSBjYW4gYmxhY2tsaXN0IHRlc3Rz IHdoaWNoIHdlCj4gPiA+IGRvbid0IGhhdmUgdGhlIGhhcmR3YXJlIGZvci4KPiA+IAo+ID4gQnV0 IHdlIGFscmVhZHkgaGF2ZSB0ZXN0cyBmb3Igc3BlY2lmaWMgcGFpcnMsIHdoaWNoIGNhbiBhbHNv IHRlc3QKPiA+IHNwZWNpZmljIHN0dWZmLiBJbiBnZW5lcmFsIHdlIGRvbid0IGRvIHRlc3RzIHdp dGggLWdlbjksIGdlbjExLCAtZ2VuOAo+ID4gcHJlZml4ZXMgZWl0aGVyLiBUaGlzIGhlcmUgd291 bGQgYmUgYSBmaXJzdCBJJ2Qgc2F5Lgo+ID4gCj4gPiA+ID4gVGhlIHdheSB0byBkbyBhIGdlbmVy aWMga21zIHRlc3RjYXNlIGlzIHRvIHVzZSBEUklWRVJfQU5ZICh5ZXMgc29tZQo+ID4gPiA+IG9m IHRoZQo+ID4gPiA+IGVhcmxpZXIgY29udmVyc2lvbiB1bmZvcnR1bmF0ZWx5IHVzZWQgc3R1ZmYg bGlrZSBEUklWRVJfSU5URUwgfAo+ID4gPiA+IERSSVZFUl9BTURHUFUpLiBXaXRoIHRoYXQgeW91 IGFsc28gZG9uJ3QgbmVlZCB5b3VyIGxpYnJhcnkgcHJlcAo+ID4gPiA+IHBhdGNoLAo+ID4gPiA+ IGJlY2F1c2Ugbm8gbmVlZCBmb3IgYSBEUklWRVJfVktNUy4KPiA+ID4gCj4gPiA+IEJ1dCBob3cg Y2FuIHdlIG9wZW4gdHdvIGRpZmZlcmVudCBkZXZpY2VzIHdpdGggRFJJVkVSX0FOWT8gSWYgSSBw dXQKPiA+ID4gCj4gPiA+IGZkID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9BTlkpCj4gPiA+IGZk MiA9IGRybV9vcGVuX2RyaXZlcihEUklWRVJfQU5ZKQo+ID4gPiAKPiA+ID4gSSBnZXQgdGhlIHNh bWUgZGV2aWNlIG9wZW5lZCB0d28gdGltZXMsIGRvIEk/Cj4gPiAKPiA+IE9uZSBvZiB0aGVtIHdv dWxkIGJlIERSSVZFUl9WR0VNLiBBbmQgSSB0aGluayB3ZSBhbHJlYWR5IG1ha2Ugc3VyZQo+ID4g dGhhdCB5b3UgZG9uJ3QgYWNjaWRlbnRhbGx5IGdldCB2Z2VtIGZvciBEUklWRVJfQU5ZLiBPdGhl cndpc2UgSSBndWVzcwo+ID4gd2UnZCBuZWVkIGEgRFJJVkVSX0FOWV9CVVRfVkdFTS4gV2VsbCBy ZWFsbHkgd2hhdCB3ZSB3YW50IGlzCj4gPiBEUklWRVJfQU5ZX0tNUyBoZXJlLCB3aGljaCB3b3Vs ZCBhbHNvIGV4Y2x1ZGUgdmdlbS4gU28gaWYgaXQgZG9lc24ndAo+ID4gd29yayBhbHJlYWR5LCBz bWFsbCBwYXRjaCBuZWVkZWQgaW4gbGliLywgYnV0IERSSVZFUl9WS01TIGFsc28gbmVlZHMKPiA+ IHRoYXQuIEFuZCBJIHJlYWxseSBkb24ndCB3YW50IG1vcmUgRFJJVkVSX0ZPTyBkZWZpbmVzIGZv ciBhIHBsYWluIG9sZAo+ID4ga21zLW9ubHkgZHJpdmVyLiBrbXMgaXMgc3VwcG9zZWQgdG8gYmUg YSBzaGFyZWQgY3Jvc3MtZHJpdmVyIHN0YW5kYXJkLAo+ID4gaWYgd2UgY2FuJ3QgZXZlbiB3cml0 ZSBzaGFyZWQgdGVzdGNhc2VzIGl0J3MganVzdCBlcGljIGZhaWwgOi0pCj4gPiAKPiA+ID4gPiBJ bW8gYmVzdCB0byBzdGFydCBvdXQgYnkgY29udmVydGluZyBwcmltZV92Z2VtLmMgZm9yIHRoaXMs IGFuZCBhZGRpbmcKPiA+ID4gPiBmb3IKPiA+ID4gPiB0aGUgaTkxNSBzcGVjaWZpYyB0ZXN0cyAo YnV0IF9vbmx5XyBmb3IgdGhvc2UpIGEgc3BlY2lmaWMgImlzIHRoaXMKPiA+ID4gPiBpOTE1Igo+ ID4gPiA+IGNoZWNrLCBzbyB3ZSBza2lwIHRob3NlIHRlc3RzLiBBbmQgcmVwbGFjZSBEUklWRVJf SU5URUwgYnkKPiA+ID4gPiBEUklWRVJfQU5ZLgo+ID4gPiA+IFdlbGwsIGFueXRoaW5nIGV4Y2Vw dCB2Z2VtIDotKQo+ID4gPiAKPiA+ID4gSWYgSSBhbSBub3QgbWlzdGFrZW4sIGFsbCB0ZXN0cyBp biBwcmltZV92Z2VtIGFyZSBpbnRlbC1zcGVjaWZpYyA6RAo+ID4gPiAKPiA+ID4gU29tZSBpZGVh cyBjYW4gYmUgdGFrZW4gZnJvbSBpdCwgYnV0IGFueXdheSwgaXQgcHJvYmFibHkgbmVlZHMgYSBk ZWVwCj4gPiA+IHJld3JpdGUuCj4gPiA+IAo+ID4gPiBBbmQgcHJpbWVfdmdlbSB1c2Ugb25seSB2 Z2VtIGFzIGFuIGV4cG9ydGVyIGRldmljZS4gSGVyZSB3ZSBjYW4gdXNlIGFueQo+ID4gPiBkZXZp Y2UuIFN1cmUsIHNvbWUgdGVzdHMgd291bGQgZXZlbnR1YWxseSB1c2UgdmdlbS1zcGVjaWZpYyBm ZWF0dXJlcywKPiA+ID4gYnV0IHNvbWUgY291bGQgcmVtYWluIG1vcmUgZ2VuZXJpYy4KPiA+IAo+ ID4gTWF5YmUgSSB3YXNuJ3QgYWxsIHRoYXQgY2xlYXIgdGhlbiwgSSB0aGluayB3aGF0IHdlIHdh bnQgdG8gdGVzdCBpbiBhCj4gPiBnZW5lcmljIHByaW1lIHRlc3QgaXMgdmdlbStEUklWRVJfQU5Z X0tNUy4gVGhlbiBkcml2ZXJzIGNhbiB0ZXN0IHRoZQo+ID4gcmVuZGVyIHNpZGUgdXNpbmcgRFJJ VkVSX0ZPTyt2Z2VtLiBUaGlzIHdheSB5b3Ugb25seSBuZWVkIHRvIGhhdmUgMQo+ID4gZ2VuZXJp YyBrbXMgdGVzdCwgcGx1cyBOIHRlc3RzIGZvciBhbGwgdGhlIHJlbmRlcmluZyBkcml2ZXJzLiBJ bnN0ZWFkCj4gPiBvZiBNIHggTiB0ZXN0Y2FzZXMgbGlrZSB5b3UncmUgcHJvcG9zaW5nIGhlcmUu IHZnZW0gaXMganVzdCB0aGUKPiA+IGFic3RyYWN0aW9uIGxheWVyL21vY2tpbmcgbGF5ZXIgd2Ug dXNlIHRvIHNlcGFyYXRlIHRoZXNlIHR3byB3b3JsZHMuCj4gPiBBbmQgb2YgY291cnNlIGZvciBz cGVjaWZpYyBzaGFyaW5nIHlvdSBjYW4gc3RpbGwgZG8gdGhhdCwgZS5nLiB0byB0ZXN0Cj4gPiBk bWEgZW5naW5lIGNvbXBhdGliaWxpdHkgYmV0d2VlbiBhbWRncHUgYW5kIGk5MTUsIG9yIG5vdXZl YXUgYW5kIGk5MTUuCj4gPiBCdXQgdGhvc2UgdGVzdHMgZG9uJ3QgbmVlZCB0byBpbnZvbHZlIGtt cy4KPiA+IAo+ID4gQW5kIHllYWggcHJpbWVfdmdlbSBtaWdodCBuZWVkIHRvIGJlIHNwbGl0IGlu dG8gcHJpbWVfaTkxNV92Z2VtIGFuZAo+ID4gcHJpbWVfa21zX3ZnZW0uIEJ1dCBhbGwgdGhlIGRp c3BsYXkgcmVsYXRlZCB0ZXN0Y2FzZXMgc2hvdWxkIGJlCj4gPiBwb3NzaWJsZSB0byBleHRyYWN0 IGludG8gc3VjaCBhIHByaW1lX2ttc192Z2VtIGZyYW1ld29yay4KPiAKPiBPbmUgY291bGQgYWxz byB3YW50IHRvIHRlc3QgZHJtUHJpbWVIYW5kbGVUb0ZEIGFuZCBkcm1QcmltZUZEVG9IYW5kbGUK PiBiZXR3ZWVuIGUuZy4gYW1kZ3B1IGFuZCBpOTE1LiBJIGd1ZXNzIGl0J3MgdXNpbmcgYSBkaWZm ZXJlbnQgY29kZSBwYXRoCj4gdGhhbiBnZW0uCgpZZWFoLCBidXQgb25seSBpZiB5b3UgYWxzbyBk byBzb21lIGk5MTUgb3IgYW1kZ3B1IHNwZWNpZmljIGNvbW1hbmQKc3VibWlzc2lvbi4gT3RoZXJ3 aXNlIGlmIGl0J3MgYWxsIGNwdS1vbmx5LCB0aGVuIHlvdSB3b250IGhpdCBhbnkKYWRkaXRpb25h bCBwYXRoIHRoYW4gd2hhdCB5b3UgY2FuIHRlc3Qgd2l0aCB2Z2VtIGFscmVhZHkuIEtpbmRhIG15 IHBvaW50CnJlYWxseSwgdGhlcmUncyBubyByb29tIHJlYWxseSBmb3IgYSAiZ2VuZXJpYyIgaTkx NSthbWRncHUgcHJpbWUgdGVzdC4gQXMKc29vbiBhcyB5b3UgbG9vayBhdCB0aGF0IGNvbWJvLCBp dCdzIGFsbCBhYm91dCBzcGVjaWZpY3MuCi1EYW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdh cmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGlu ZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==