From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-eopbgr810052.outbound.protection.outlook.com [40.107.81.52]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE36D6E30B for ; Thu, 29 Nov 2018 20:45:45 +0000 (UTC) From: "Wentland, Harry" Date: Thu, 29 Nov 2018 20:45:30 +0000 Message-ID: References: <20181128205107.16315-1-David.Francis@amd.com> In-Reply-To: <20181128205107.16315-1-David.Francis@amd.com> Content-Language: en-US Content-ID: MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/amdgpu: Add test for Adaptive Backlight Management 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: "Francis, David" , "igt-dev@lists.freedesktop.org" List-ID: DQoNCk9uIDIwMTgtMTEtMjggMzo1MSBwLm0uLCBEYXZpZCBGcmFuY2lzIHdyb3RlOg0KPiBBZGFw dGl2ZSBCYWNrbGlnaHQgTWFuYWdlbWVudCAoQUJNKSBpcyBhIHBvd2VyLXNhdmluZw0KPiBmZWF0 dXJlIG9uIEFNRCBBU0lDcyB0aGF0IHJlZHVjZXMgYmFja2xpZ2h0IHdoaWxlIGluY3JlYXNpbmcN Cj4gcGl4ZWwgY29udHJhc3QgYW5kIGx1bWluYW5jZS4gIFRoaXMgdGVzdCBjb25maXJtcyB0aGF0 DQo+IEFCTSBpcyBwcmVzZW50IGFuZCBlbmFibGVkLCBhbmQgdGhhdCBiYWNrbGlnaHQgcGVyZm9y bWFuY2UNCj4gaXMgc2FuZS4gIEl0IHVzZXMgQU1ELXNwZWNpZmljIGRlYnVnZnMgZW50cmllcyB0 bw0KPiByZWFkIHRoZSBiYWNrbGlnaHQgUFdNIHZhbHVlcy4NCj4gDQo+IEl0IGhhcyA1IHN1YnRl c3RzOg0KPiANCj4gZHBtc19jeWNsZQ0KPiBTZXRzIGJyaWdodG5lc3MgdG8gaGFsZiwgdGhlbiBj b25maXJtcyB0aGF0IHZhbHVlIGlzIHJlc3RvcmVkDQo+IGFmdGVyIGRwbXMgb2ZmIGFuZCB0aGVu IG9uLg0KPiANCj4gYmFja2xpZ2h0X21vbm90b25pY19iYXNpYw0KPiBTZXRzIGJyaWdodG5lc3Mg dG8gdGVuIGRpZmZlcmVudCB2YWx1ZXMsIGNvbmZpcm1pbmcgdGhhdA0KPiBoaWdoZXIgYnJpZ2h0 bmVzcyB2YWx1ZXMgYXJlIGJyaWdodGVyLg0KPiANCj4gYmFja2xpZ2h0X21vbm90b25pY19hYm0N Cj4gU2FtZSBhcyBiYWNrbGlnaHRfbW9ub3RvbmljX2Jhc2ljLCBidXQgd2l0aCBhYm0gZW5hYmxl ZC4NCj4gDQo+IGFibV9lbmFibGVkDQo+IFNldHMgYWJtIHRvIGl0cyBmb3VyIGludGVuc2l0eSBs ZXZlbHMsIGNvbmZpcm1pbmcgdGhhdA0KPiBhYm0gcmVkdWNlcyB0aGUgYmFja2xpZ2h0LCBhbmQg dGhlIHJlZHVjdGlvbiBpcyBncmVhdGVyDQo+IGZvciBoaWdoZXIgYWJtIGxldmVsLg0KPiANCj4g YWJtX2dyYWR1YWwNCj4gU2V0cyBhYm0gdG8gb2ZmIGFuZCB0aGVuIG1heGltdW0gaW50ZW5zaXR5 LCBjb25maXJtaW5nDQo+IHRoYXQgYnJpZ2h0bmVzcyBkZWNyZWFzZXMgY29udGludWFsbHkgb3Zl ciB0aGUgZmlyc3QNCj4gc2Vjb25kIGFuZCBldmVudHVhbGx5IHJlYWNoZXMgdGhlIHRhcmdldCB2 YWx1ZS4NCj4gVGhpcyB0ZXN0IHRha2VzIDMwcyB0byBydW4uDQo+IA0KPiBTaWduZWQtb2ZmLWJ5 OiBEYXZpZCBGcmFuY2lzIDxEYXZpZC5GcmFuY2lzQGFtZC5jb20+DQo+IC0tLQ0KPiAgdGVzdHMv TWFrZWZpbGUuc291cmNlcyB8ICAgMSArDQo+ICB0ZXN0cy9hbWRncHUvYW1kX2FibS5jIHwgMzYx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAyIGZpbGVzIGNo YW5nZWQsIDM2MiBpbnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvYW1k Z3B1L2FtZF9hYm0uYw0KPiANCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMg Yi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzDQo+IGluZGV4IDU2MjBjMWQ2Li4zZDU2MGJlZSAxMDA2 NDQNCj4gLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcw0KPiArKysgYi90ZXN0cy9NYWtlZmls ZS5zb3VyY2VzDQo+IEBAIC0xOSw2ICsxOSw3IEBAIEFNREdQVV9URVNUUyA9IFwNCj4gIAlhbWRn cHUvYW1kX2Jhc2ljIFwNCj4gIAlhbWRncHUvYW1kX2NzX25vcCBcDQo+ICAJYW1kZ3B1L2FtZF9w cmltZSBcDQo+ICsJYW1kZ3B1L2FtZF9hYm0gXA0KPiAgCSQoTlVMTCkNCj4gIA0KPiAgVEVTVFNf cHJvZ3MgPSBcDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvYW1kX2FibS5jIGIvdGVzdHMv YW1kZ3B1L2FtZF9hYm0uYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw MC4uOTBhNmY5OWUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi90ZXN0cy9hbWRncHUvYW1kX2Fi bS5jDQo+IEBAIC0wLDAgKzEsMzYxIEBADQo+ICsvKg0KPiArICogQ29weXJpZ2h0IDIwMTggQWR2 YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLg0KPiArICoNCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhDQo+ ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLA0KPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbg0KPiArICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsDQo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUNCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+ICsg Kg0KPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KPiArICoNCj4gKyAqIFRIRSBTT0ZUV0FSRSBJ UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT IE9SDQo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTA0KPiArICog VEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SDQo+ICsgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwNCj4gKyAqIEFSSVNJTkcgRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUg0K PiArICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KPiArICovDQo+ICsNCj4gKyNp bmNsdWRlICJpZ3QuaCINCj4gKyNpbmNsdWRlICJkcm10ZXN0LmgiDQo+ICsjaW5jbHVkZSAiaWd0 X2ttcy5oIg0KPiArI2luY2x1ZGUgPGxpbWl0cy5oPg0KPiArI2luY2x1ZGUgPGVycm5vLmg+DQo+ ICsjaW5jbHVkZSA8c3RkYm9vbC5oPg0KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPg0KPiArI2luY2x1 ZGUgPHN0ZGlvLmg+DQo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+DQo+ICsjaW5jbHVkZSA8ZmNudGwu aD4NCj4gKyNpbmNsdWRlIDx0aW1lLmg+DQo+ICsNCj4gKyNkZWZpbmUgQkFDS0xJR0hUX1BBVEgg Ii9zeXMvY2xhc3MvYmFja2xpZ2h0L2FtZGdwdV9ibDAiDQo+ICsNCj4gK3N0YXRpYyBpbnQgcmVh ZF9jdXJyZW50X2JhY2tsaWdodF9wd20oaW50IGRlYnVnZnNfZGlyKQ0KPiArew0KPiArCWNoYXIg YnVmWzIwXTsNCj4gKw0KPiArCWlndF9kZWJ1Z2ZzX3NpbXBsZV9yZWFkKGRlYnVnZnNfZGlyLCAi YW1kZ3B1X2N1cnJlbnRfYmFja2xpZ2h0X3B3bSIsDQo+ICsJCQkgYnVmLCBzaXplb2YoYnVmKSk7 DQo+ICsNCj4gKwlyZXR1cm4gc3RydG9sKGJ1ZiwgTlVMTCwgMCk7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyBpbnQgcmVhZF90YXJnZXRfYmFja2xpZ2h0X3B3bShpbnQgZGVidWdmc19kaXIpDQo+ICt7 DQo+ICsJY2hhciBidWZbMjBdOw0KPiArDQo+ICsJaWd0X2RlYnVnZnNfc2ltcGxlX3JlYWQoZGVi dWdmc19kaXIsICJhbWRncHVfdGFyZ2V0X2JhY2tsaWdodF9wd20iLA0KPiArCQkJIGJ1Ziwgc2l6 ZW9mKGJ1ZikpOw0KPiArDQo+ICsJcmV0dXJuIHN0cnRvbChidWYsIE5VTEwsIDApOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgaW50IGJhY2tsaWdodF93cml0ZV9icmlnaHRuZXNzKGludCB2YWx1ZSkN Cj4gK3sNCj4gKwlpbnQgZmQ7DQo+ICsJY2hhciBmdWxsW1BBVEhfTUFYXTsNCj4gKwljaGFyIHNy Y1s2NF07DQo+ICsJaW50IGxlbjsNCj4gKw0KPiArCWlndF9hc3NlcnQoc25wcmludGYoZnVsbCwg UEFUSF9NQVgsICIlcy8lcyIsIEJBQ0tMSUdIVF9QQVRILCAiYnJpZ2h0bmVzcyIpIDwgUEFUSF9N QVgpOw0KPiArCWZkID0gb3BlbihmdWxsLCBPX1dST05MWSk7DQo+ICsJaWYgKGZkID09IC0xKQ0K PiArCQlyZXR1cm4gLWVycm5vOw0KPiArDQo+ICsJbGVuID0gc25wcmludGYoc3JjLCBzaXplb2Yo c3JjKSwgIiVpIiwgdmFsdWUpOw0KPiArCWxlbiA9IHdyaXRlKGZkLCBzcmMsIGxlbik7DQo+ICsJ Y2xvc2UoZmQpOw0KPiArDQo+ICsJaWYgKGxlbiA8IDApDQo+ICsJCXJldHVybiBsZW47DQo+ICsN Cj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgc2V0X2FibV9sZXZlbChp Z3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgbGV2ZWwpDQo+ICt7DQo+ICsJaW50IGksIHJldDsN Cj4gKwlpbnQgb3V0cHV0X2lkOw0KPiArCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVzUHRyIHByb3Bz Ow0KPiArCXVpbnQzMl90IHByb3BfaWQ7DQo+ICsJZHJtTW9kZVByb3BlcnR5UHRyIHByb3A7DQo+ ICsJdWludDMyX3QgdHlwZSA9IERSTV9NT0RFX09CSkVDVF9DT05ORUNUT1I7DQo+ICsNCj4gKwlm b3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9vdXRwdXRzOyBpKyspIHsNCj4gKwkJb3V0cHV0X2lk ID0gZGlzcGxheS0+b3V0cHV0c1tpXS5pZDsNCj4gKwkJcHJvcHMgPSBkcm1Nb2RlT2JqZWN0R2V0 UHJvcGVydGllcyhkaXNwbGF5LT5kcm1fZmQsIG91dHB1dF9pZCwgdHlwZSk7DQo+ICsNCj4gKwkJ Zm9yIChpID0gMDsgaSA8IHByb3BzLT5jb3VudF9wcm9wczsgaSsrKSB7DQo+ICsJCQlwcm9wX2lk ID0gcHJvcHMtPnByb3BzW2ldOw0KPiArCQkJcHJvcCA9IGRybU1vZGVHZXRQcm9wZXJ0eShkaXNw bGF5LT5kcm1fZmQsIHByb3BfaWQpOw0KPiArDQo+ICsJCQlpZ3RfYXNzZXJ0KHByb3ApOw0KPiAr DQo+ICsJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUsICJhYm0gbGV2ZWwiKSA9PSAwKSB7DQo+ICsJ CQkJcmV0ID0gZHJtTW9kZU9iamVjdFNldFByb3BlcnR5KGRpc3BsYXktPmRybV9mZCwgb3V0cHV0 X2lkLCB0eXBlLCBwcm9wX2lkLCBsZXZlbCk7DQo+ICsNCj4gKwkJCQlpZ3RfYXNzZXJ0X2VxKHJl dCwgMCk7DQo+ICsJCQl9DQo+ICsNCj4gKwkJCWRybU1vZGVGcmVlUHJvcGVydHkocHJvcCk7DQo+ ICsJCX0NCj4gKwl9DQo+ICsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBiYWNrbGlnaHRfcmVh ZF9tYXhfYnJpZ2h0bmVzcyhpbnQgKnJlc3VsdCkNCj4gK3sNCj4gKwlpbnQgZmQ7DQo+ICsJY2hh ciBmdWxsW1BBVEhfTUFYXTsNCj4gKwljaGFyIGRzdFs2NF07DQo+ICsJaW50IHIsIGU7DQo+ICsN Cj4gKwlpZ3RfYXNzZXJ0KHNucHJpbnRmKGZ1bGwsIFBBVEhfTUFYLCAiJXMvJXMiLCBCQUNLTElH SFRfUEFUSCwgIm1heF9icmlnaHRuZXNzIikgPCBQQVRIX01BWCk7DQo+ICsNCj4gKwlmZCA9IG9w ZW4oZnVsbCwgT19SRE9OTFkpOw0KPiArCWlmIChmZCA9PSAtMSkNCj4gKwkJcmV0dXJuIC1lcnJu bzsNCj4gKw0KPiArCXIgPSByZWFkKGZkLCBkc3QsIHNpemVvZihkc3QpKTsNCj4gKwllID0gZXJy bm87DQo+ICsJY2xvc2UoZmQpOw0KPiArDQo+ICsJaWYgKHIgPCAwKQ0KPiArCQlyZXR1cm4gLWU7 DQo+ICsNCj4gKwllcnJubyA9IDA7DQo+ICsJKnJlc3VsdCA9IHN0cnRvbChkc3QsIE5VTEwsIDEw KTsNCj4gKwlyZXR1cm4gZXJybm87DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHNraXBfaWZf aW5jb21wYXRpYmxlKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkZWJ1Z2ZzX2RpcikNCj4g K3sNCj4gKwlpbnQgcmV0LCBpOw0KPiArCWNoYXIgYnVmWzIwXTsNCj4gKwlib29sIGFibV9wcm9w X2V4aXN0czsNCj4gKwlpbnQgb3V0cHV0X2lkOw0KPiArCWRybU1vZGVPYmplY3RQcm9wZXJ0aWVz UHRyIHByb3BzOw0KPiArCXVpbnQzMl90IHR5cGUgPSBEUk1fTU9ERV9PQkpFQ1RfQ09OTkVDVE9S Ow0KPiArCXVpbnQzMl90IHByb3BfaWQ7DQo+ICsJZHJtTW9kZVByb3BlcnR5UHRyIHByb3A7DQo+ ICsNCj4gKwlyZXQgPSBpZ3RfZGVidWdmc19zaW1wbGVfcmVhZChkZWJ1Z2ZzX2RpciwgImFtZGdw dV9jdXJyZW50X2JhY2tsaWdodF9wd20iLA0KPiArCQkJIGJ1Ziwgc2l6ZW9mKGJ1ZikpOw0KPiAr DQo+ICsJaWYgKHJldCA8IDApDQo+ICsJCWlndF9za2lwKCJObyBjdXJyZW50IGJhY2tsaWdodCBk ZWJ1Z2ZzIGVudHJ5LlxuIik7DQo+ICsNCj4gKwlyZXQgPSBpZ3RfZGVidWdmc19zaW1wbGVfcmVh ZChkZWJ1Z2ZzX2RpciwgImFtZGdwdV90YXJnZXRfYmFja2xpZ2h0X3B3bSIsDQo+ICsJCQkgYnVm LCBzaXplb2YoYnVmKSk7DQo+ICsNCj4gKwlpZiAocmV0IDwgMCkNCj4gKwkJaWd0X3NraXAoIk5v IHRhcmdldCBiYWNrbGlnaHQgZGVidWdmcyBlbnRyeS5cbiIpOw0KPiArDQo+ICsJYWJtX3Byb3Bf ZXhpc3RzID0gZmFsc2U7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9vdXRw dXRzOyBpKyspIHsNCj4gKwkJb3V0cHV0X2lkID0gZGlzcGxheS0+b3V0cHV0c1tpXS5pZDsNCj4g KwkJcHJvcHMgPSBkcm1Nb2RlT2JqZWN0R2V0UHJvcGVydGllcyhkaXNwbGF5LT5kcm1fZmQsIG91 dHB1dF9pZCwgdHlwZSk7DQo+ICsNCj4gKwkJZm9yIChpID0gMDsgaSA8IHByb3BzLT5jb3VudF9w cm9wczsgaSsrKSB7DQo+ICsJCQlwcm9wX2lkID0gcHJvcHMtPnByb3BzW2ldOw0KPiArCQkJcHJv cCA9IGRybU1vZGVHZXRQcm9wZXJ0eShkaXNwbGF5LT5kcm1fZmQsIHByb3BfaWQpOw0KPiArDQo+ ICsJCQlpZiAoc3RyY21wKHByb3AtPm5hbWUsICJhYm0gbGV2ZWwiKSA9PSAwKQ0KPiArCQkJCWFi bV9wcm9wX2V4aXN0cyA9IHRydWU7DQo+ICsNCj4gKwkJCWRybU1vZGVGcmVlUHJvcGVydHkocHJv cCk7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwlpZiAoIWFibV9wcm9wX2V4aXN0cykNCj4gKwkJ aWd0X3NraXAoIk5vIGFibSBsZXZlbCBwcm9wZXJ0eSBvbiBhbnkgY29ubmVjdG9yLlxuIik7DQo+ ICt9DQo+ICsNCj4gKw0KPiArc3RhdGljIHZvaWQgYmFja2xpZ2h0X2RwbXNfY3ljbGUoaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSwgaW50IGRlYnVnZnMsIGlndF9vdXRwdXRfdCAqb3V0cHV0KQ0KPiAr ew0KPiArCWludCByZXQ7DQo+ICsJaW50IG1heF9icmlnaHRuZXNzOw0KPiArCWludCBwd21fMSwg cHdtXzI7DQo+ICsNCj4gKwlyZXQgPSBiYWNrbGlnaHRfcmVhZF9tYXhfYnJpZ2h0bmVzcygmbWF4 X2JyaWdodG5lc3MpOw0KPiArCWlndF9hc3NlcnRfZXEocmV0LCAwKTsNCj4gKw0KPiArCXNldF9h Ym1fbGV2ZWwoZGlzcGxheSwgMCk7DQo+ICsJYmFja2xpZ2h0X3dyaXRlX2JyaWdodG5lc3MobWF4 X2JyaWdodG5lc3MgLyAyKTsNCj4gKwl1c2xlZXAoMTAwMDAwKTsNCj4gKwlwd21fMSA9IHJlYWRf dGFyZ2V0X2JhY2tsaWdodF9wd20oZGVidWdmcyk7DQo+ICsNCj4gKwlrbXN0ZXN0X3NldF9jb25u ZWN0b3JfZHBtcyhkaXNwbGF5LT5kcm1fZmQsIG91dHB1dC0+Y29uZmlnLmNvbm5lY3RvciwgRFJN X01PREVfRFBNU19PRkYpOw0KPiArCWttc3Rlc3Rfc2V0X2Nvbm5lY3Rvcl9kcG1zKGRpc3BsYXkt PmRybV9mZCwgb3V0cHV0LT5jb25maWcuY29ubmVjdG9yLCBEUk1fTU9ERV9EUE1TX09OKTsNCj4g Kwl1c2xlZXAoMTAwMDAwKTsNCj4gKwlwd21fMiA9IHJlYWRfdGFyZ2V0X2JhY2tsaWdodF9wd20o ZGVidWdmcyk7DQo+ICsJaWd0X2Fzc2VydF9lcShwd21fMSwgcHdtXzIpOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgdm9pZCBiYWNrbGlnaHRfbW9ub3RvbmljX2Jhc2ljKGlndF9kaXNwbGF5X3QgKmRp c3BsYXksIGludCBkZWJ1Z2ZzKQ0KPiArew0KPiArCWludCByZXQ7DQo+ICsJaW50IG1heF9icmln aHRuZXNzOw0KPiArCWludCBwcmV2X3B3bSwgcHdtOw0KPiArCWludCBicmlnaHRuZXNzX3N0ZXA7 DQo+ICsJaW50IGJyaWdodG5lc3M7DQo+ICsNCj4gKwlyZXQgPSBiYWNrbGlnaHRfcmVhZF9tYXhf YnJpZ2h0bmVzcygmbWF4X2JyaWdodG5lc3MpOw0KPiArCWlndF9hc3NlcnRfZXEocmV0LCAwKTsN Cj4gKw0KPiArCWJyaWdodG5lc3Nfc3RlcCA9IG1heF9icmlnaHRuZXNzIC8gMTA7DQo+ICsNCj4g KwlzZXRfYWJtX2xldmVsKGRpc3BsYXksIDApOw0KPiArCWJhY2tsaWdodF93cml0ZV9icmlnaHRu ZXNzKG1heF9icmlnaHRuZXNzKTsNCj4gKwl1c2xlZXAoMTAwMDAwKTsNCj4gKwlwcmV2X3B3bSA9 IHJlYWRfdGFyZ2V0X2JhY2tsaWdodF9wd20oZGVidWdmcyk7DQo+ICsJZm9yIChicmlnaHRuZXNz ID0gbWF4X2JyaWdodG5lc3MgLSBicmlnaHRuZXNzX3N0ZXA7DQo+ICsJICAgICBicmlnaHRuZXNz ID4gMDsNCj4gKwkgICAgIGJyaWdodG5lc3MgLT0gYnJpZ2h0bmVzc19zdGVwKSB7DQo+ICsJCWJh Y2tsaWdodF93cml0ZV9icmlnaHRuZXNzKGJyaWdodG5lc3MpOw0KPiArCQl1c2xlZXAoMTAwMDAw KTsNCj4gKwkJcHdtID0gcmVhZF90YXJnZXRfYmFja2xpZ2h0X3B3bShkZWJ1Z2ZzKTsNCj4gKwkJ aWd0X2Fzc2VydChwd20gPCBwcmV2X3B3bSk7DQo+ICsJCXByZXZfcHdtID0gcHdtOw0KPiArCX0N Cj4gKw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBiYWNrbGlnaHRfbW9ub3RvbmljX2FibShp Z3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZGVidWdmcykNCj4gK3sNCj4gKwlpbnQgcmV0LCBp Ow0KPiArCWludCBtYXhfYnJpZ2h0bmVzczsNCj4gKwlpbnQgcHJldl9wd20sIHB3bTsNCj4gKwlp bnQgYnJpZ2h0bmVzc19zdGVwOw0KPiArCWludCBicmlnaHRuZXNzOw0KPiArDQo+ICsJcmV0ID0g YmFja2xpZ2h0X3JlYWRfbWF4X2JyaWdodG5lc3MoJm1heF9icmlnaHRuZXNzKTsNCj4gKwlpZ3Rf YXNzZXJ0X2VxKHJldCwgMCk7DQo+ICsNCj4gKwlicmlnaHRuZXNzX3N0ZXAgPSBtYXhfYnJpZ2h0 bmVzcyAvIDEwOw0KPiArCWZvciAoaSA9IDE7IGkgPCA1OyBpKyspIHsNCj4gKwkJc2V0X2FibV9s ZXZlbChkaXNwbGF5LCBpKTsNCj4gKwkJYmFja2xpZ2h0X3dyaXRlX2JyaWdodG5lc3MobWF4X2Jy aWdodG5lc3MpOw0KPiArCQl1c2xlZXAoMTAwMDAwKTsNCj4gKwkJcHJldl9wd20gPSByZWFkX3Rh cmdldF9iYWNrbGlnaHRfcHdtKGRlYnVnZnMpOw0KPiArCQlmb3IgKGJyaWdodG5lc3MgPSBtYXhf YnJpZ2h0bmVzcyAtIGJyaWdodG5lc3Nfc3RlcDsNCj4gKwkJICAgICBicmlnaHRuZXNzID4gMDsN Cj4gKwkJICAgICBicmlnaHRuZXNzIC09IGJyaWdodG5lc3Nfc3RlcCkgew0KPiArCQkJYmFja2xp Z2h0X3dyaXRlX2JyaWdodG5lc3MoYnJpZ2h0bmVzcyk7DQo+ICsJCQl1c2xlZXAoMTAwMDAwKTsN Cj4gKwkJCXB3bSA9IHJlYWRfdGFyZ2V0X2JhY2tsaWdodF9wd20oZGVidWdmcyk7DQo+ICsJCQlp Z3RfYXNzZXJ0KHB3bSA8IHByZXZfcHdtKTsNCj4gKwkJCXByZXZfcHdtID0gcHdtOw0KPiArCQl9 DQo+ICsJfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBhYm1fZW5hYmxlZChpZ3RfZGlzcGxh eV90ICpkaXNwbGF5LCBpbnQgZGVidWdmcykNCj4gK3sNCj4gKwlpbnQgcmV0LCBpOw0KPiArCWlu dCBtYXhfYnJpZ2h0bmVzczsNCj4gKwlpbnQgcHdtLCBwcmV2X3B3bSwgcHdtX3dpdGhvdXRfYWJt Ow0KPiArDQo+ICsJcmV0ID0gYmFja2xpZ2h0X3JlYWRfbWF4X2JyaWdodG5lc3MoJm1heF9icmln aHRuZXNzKTsNCj4gKwlpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7DQo+ICsNCj4gKwlzZXRfYWJtX2xl dmVsKGRpc3BsYXksIDApOw0KPiArCWJhY2tsaWdodF93cml0ZV9icmlnaHRuZXNzKG1heF9icmln aHRuZXNzKTsNCj4gKwl1c2xlZXAoMTAwMDAwKTsNCj4gKwlwcmV2X3B3bSA9IHJlYWRfdGFyZ2V0 X2JhY2tsaWdodF9wd20oZGVidWdmcyk7DQo+ICsJcHdtX3dpdGhvdXRfYWJtID0gcHJldl9wd207 DQo+ICsNCj4gKwlmb3IgKGkgPSAxOyBpIDwgNTsgaSsrKSB7DQo+ICsJCXNldF9hYm1fbGV2ZWwo ZGlzcGxheSwgaSk7DQo+ICsJCXVzbGVlcCgxMDAwMDApOw0KPiArCQlwd20gPSByZWFkX3Rhcmdl dF9iYWNrbGlnaHRfcHdtKGRlYnVnZnMpOw0KPiArCQlpZ3RfYXNzZXJ0KHB3bSA8PSBwcmV2X3B3 bSk7DQo+ICsJCWlndF9hc3NlcnQocHdtIDwgcHdtX3dpdGhvdXRfYWJtKTsNCj4gKwkJcHJldl9w d20gPSBwd207DQo+ICsJfQ0KPiArDQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGFibV9ncmFk dWFsKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkZWJ1Z2ZzKQ0KPiArew0KPiArCWludCBy ZXQsIGk7DQo+ICsJaW50IGNvbnZlcmdlbmNlX2RlbGF5ID0gMTU7DQo+ICsJaW50IHByZXZfcHdt LCBwd20sIGN1cnI7DQo+ICsJaW50IG1heF9icmlnaHRuZXNzOw0KPiArDQo+ICsJcmV0ID0gYmFj a2xpZ2h0X3JlYWRfbWF4X2JyaWdodG5lc3MoJm1heF9icmlnaHRuZXNzKTsNCj4gKw0KPiArCWln dF9hc3NlcnRfZXEocmV0LCAwKTsNCj4gKw0KPiArCXNldF9hYm1fbGV2ZWwoZGlzcGxheSwgMCk7 DQo+ICsJYmFja2xpZ2h0X3dyaXRlX2JyaWdodG5lc3MobWF4X2JyaWdodG5lc3MpOw0KPiArDQo+ ICsJc2xlZXAoY29udmVyZ2VuY2VfZGVsYXkpOw0KPiArCXByZXZfcHdtID0gcmVhZF90YXJnZXRf YmFja2xpZ2h0X3B3bShkZWJ1Z2ZzKTsNCj4gKwljdXJyID0gcmVhZF9jdXJyZW50X2JhY2tsaWdo dF9wd20oZGVidWdmcyk7DQo+ICsNCj4gKwlpZ3RfYXNzZXJ0X2VxKHByZXZfcHdtLCBjdXJyKTsN Cj4gKwlzZXRfYWJtX2xldmVsKGRpc3BsYXksIDQpOw0KPiArCWZvciAoaSA9IDA7IGkgPCAxMDsg aSsrKSB7DQo+ICsJCXVzbGVlcCgxMDAwMDApOw0KPiArCQlwd20gPSByZWFkX2N1cnJlbnRfYmFj a2xpZ2h0X3B3bShkZWJ1Z2ZzKTsNCj4gKwkJaWd0X2Fzc2VydChwd20gPCBwcmV2X3B3bSk7DQoN ClRoaXMgc2VlbXMgbGlrZSBpdCB2ZXJ5IG11Y2ggZGVwZW5kcyBvbiB0aGUgdXNsZWVwIHZhbHVl IGFib3ZlLCB0aGUgcmFuZ2Ugb2YgZXhwZWN0ZWQgcHdtIHJlZHVjdGlvbiBiZXR3ZWVuIG5vIEFC TSBhbmQgQUJNIGxldmVsIDQsIGFzIHdlbGwgYXMgaG93IHF1aWNrbHkvc2xvd2x5IHRoaXMgZXhl Y3V0ZXMuDQoNClNob3VsZCB0aGUgdXNsZWVwIHRpbWUgYmUgYSBmdW5jdGlvbiBvZiB0aGUgY29u dmVyZ2VuY2VfZGVsYXk/DQoNCkNvdWxkIHRoaXMgZ2l2ZSB1cyBmbGFreSB0ZXN0IHJlc3VsdHM/ DQoNCkhvdyBtYW55IFBXTSBzdGVwcyBoYXZlIHlvdSB1c3VhbGx5IHNlZW4gZm9yIGVhY2ggaXRl cmF0aW9uIG9mIHRoaXMgZnVuY3Rpb24/IElmIGl0J3MgbGFyZ2Ugd2UncmUgcHJvYmFibHkgZmlu ZS4NCg0KSGFycnkNCg0KPiArCQlwcmV2X3B3bSA9IHB3bTsNCj4gKwl9DQo+ICsNCj4gKwlzbGVl cChjb252ZXJnZW5jZV9kZWxheSAtIDEpOw0KPiArDQo+ICsJcHJldl9wd20gPSByZWFkX3Rhcmdl dF9iYWNrbGlnaHRfcHdtKGRlYnVnZnMpOw0KPiArCWN1cnIgPSByZWFkX2N1cnJlbnRfYmFja2xp Z2h0X3B3bShkZWJ1Z2ZzKTsNCj4gKw0KPiArCWlndF9hc3NlcnRfZXEocHJldl9wd20sIGN1cnIp Ow0KPiArfQ0KPiArDQo+ICtpZ3RfbWFpbg0KPiArew0KPiArCWlndF9kaXNwbGF5X3QgZGlzcGxh eTsNCj4gKwlpbnQgZGVidWdmczsNCj4gKwllbnVtIHBpcGUgcGlwZTsNCj4gKwlpZ3Rfb3V0cHV0 X3QgKm91dHB1dDsNCj4gKw0KPiArCWlndF9za2lwX29uX3NpbXVsYXRpb24oKTsNCj4gKw0KPiAr CWlndF9maXh0dXJlIHsNCj4gKwkJZGlzcGxheS5kcm1fZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFz dGVyKERSSVZFUl9BTURHUFUpOw0KPiArDQo+ICsJCWlmIChkaXNwbGF5LmRybV9mZCA9PSAtMSkN Cj4gKwkJCWlndF9za2lwKCJOb3QgYW4gYW1kZ3B1IGRyaXZlci5cbiIpOw0KPiArDQo+ICsJCWRl YnVnZnMgPSBpZ3RfZGVidWdmc19kaXIoZGlzcGxheS5kcm1fZmQpOw0KPiArDQo+ICsJCWttc3Rl c3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsNCj4gKw0KPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJl KCZkaXNwbGF5LCBkaXNwbGF5LmRybV9mZCk7DQo+ICsNCj4gKwkJc2tpcF9pZl9pbmNvbXBhdGli bGUoJmRpc3BsYXksIGRlYnVnZnMpOw0KPiArDQo+ICsJCWZvcl9lYWNoX3BpcGVfd2l0aF92YWxp ZF9vdXRwdXQoJmRpc3BsYXksIHBpcGUsIG91dHB1dCkNCj4gKwkJCWJyZWFrOw0KPiArCX0NCj4g Kw0KPiArCWlndF9zdWJ0ZXN0KCJkcG1zX2N5Y2xlIikNCj4gKwkJYmFja2xpZ2h0X2RwbXNfY3lj bGUoJmRpc3BsYXksIGRlYnVnZnMsIG91dHB1dCk7DQo+ICsJaWd0X3N1YnRlc3QoImJhY2tsaWdo dF9tb25vdG9uaWNfYmFzaWMiKQ0KPiArCQliYWNrbGlnaHRfbW9ub3RvbmljX2Jhc2ljKCZkaXNw bGF5LCBkZWJ1Z2ZzKTsNCj4gKwlpZ3Rfc3VidGVzdCgiYmFja2xpZ2h0X21vbm90b25pY19hYm0i KQ0KPiArCQliYWNrbGlnaHRfbW9ub3RvbmljX2FibSgmZGlzcGxheSwgZGVidWdmcyk7DQo+ICsJ aWd0X3N1YnRlc3QoImFibV9lbmFibGVkIikNCj4gKwkJYWJtX2VuYWJsZWQoJmRpc3BsYXksIGRl YnVnZnMpOw0KPiArCWlndF9zdWJ0ZXN0KCJhYm1fZ3JhZHVhbCIpDQo+ICsJCWFibV9ncmFkdWFs KCZkaXNwbGF5LCBkZWJ1Z2ZzKTsNCj4gKw0KPiArCWlndF9maXh0dXJlIHsNCj4gKwkJaWd0X2Rp c3BsYXlfZmluaSgmZGlzcGxheSk7DQo+ICsJfQ0KPiArfQ0KPiANCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1k ZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaWd0LWRldgo=