From mboxrd@z Thu Jan 1 00:00:00 1970 From: Harish Patil Subject: Re: [PATCH v2 10/10] bnx2x: Merge debug register operations into headers Date: Fri, 30 Sep 2016 18:16:11 +0000 Message-ID: References: <1475144449-22176-1-git-send-email-3chas3@gmail.com> <1475144449-22176-10-git-send-email-3chas3@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 To: Chas Williams <3chas3@gmail.com>, "dev@dpdk.org" Return-path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0120.outbound.protection.outlook.com [104.47.33.120]) by dpdk.org (Postfix) with ESMTP id 297E85699 for ; Fri, 30 Sep 2016 20:16:14 +0200 (CEST) In-Reply-To: <1475144449-22176-10-git-send-email-3chas3@gmail.com> Content-Language: en-US Content-ID: <7C1B2D136F2E9F439A7C7E42E958331A@namprd11.prod.outlook.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Pg0KPlRoZSByZWdpc3RlciByZWFkL3dyaXRlcyBzaG91bGQganVzdCBiZSBzdGF0aWMgaW5saW5l IGluc3RlYWQgb2YNCj5hbHRlcm5hdGVseSBkZWZpbmVkIGFzIHJvdXRpbmVzIG9yIG1hY3JvcyBk ZXBlbmRpbmcgb24gdGhlIHN0YXR1cyBvZg0KPmRlYnVnZ2luZy4NCj4NCj5GaXggYm54MnhfcmVn X3JlYWQzMigpIHJldHVybmluZyAwIGR1cmluZyBkZWJ1ZyB1bmFsaWduZWQgcmVhZHMuDQo+DQo+ Rml4ZXM6IGI1YmY3NzE5MjIxZCAoImJueDJ4OiBkcml2ZXIgc3VwcG9ydCByb3V0aW5lcyIpDQo+ DQo+U2lnbmVkLW9mZi1ieTogQ2hhcyBXaWxsaWFtcyA8M2NoYXMzQGdtYWlsLmNvbT4NCj4tLS0N Cj4gZHJpdmVycy9uZXQvYm54MngvTWFrZWZpbGUgfCAgMSAtDQo+IGRyaXZlcnMvbmV0L2JueDJ4 L2JueDJ4LmggIHwgOTkNCj4rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tDQo+IGRyaXZlcnMvbmV0L2JueDJ4L2RlYnVnLmMgIHwgOTYNCj4tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAzIGZpbGVzIGNoYW5nZWQsIDgwIGlu c2VydGlvbnMoKyksIDExNiBkZWxldGlvbnMoLSkNCj4gZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvbmV0L2JueDJ4L2RlYnVnLmMNCj4NCj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm54Mngv TWFrZWZpbGUgYi9kcml2ZXJzL25ldC9ibngyeC9NYWtlZmlsZQ0KPmluZGV4IGFiNjk2ODAuLmU5 NzFmYjYgMTAwNjQ0DQo+LS0tIGEvZHJpdmVycy9uZXQvYm54MngvTWFrZWZpbGUNCj4rKysgYi9k cml2ZXJzL25ldC9ibngyeC9NYWtlZmlsZQ0KPkBAIC0yOCw3ICsyOCw2IEBAIFNSQ1MtJChDT05G SUdfUlRFX0xJQlJURV9CTlgyWF9QTUQpICs9IGJueDJ4X2V0aGRldi5jDQo+IFNSQ1MtJChDT05G SUdfUlRFX0xJQlJURV9CTlgyWF9QTUQpICs9IGVjb3JlX3NwLmMNCj4gU1JDUy0kKENPTkZJR19S VEVfTElCUlRFX0JOWDJYX1BNRCkgKz0gZWxpbmsuYw0KPiBTUkNTLSQoQ09ORklHX1JURV9MSUJS VEVfQk5YMlhfUE1EKSArPSBibngyeF92ZnBmLmMNCj4tU1JDUy0kKENPTkZJR19SVEVfTElCUlRF X0JOWDJYX0RFQlVHX1BFUklPRElDKSArPSBkZWJ1Zy5jDQo+IA0KPiAjIHRoaXMgbGliIGRlcGVu ZHMgdXBvbjoNCj4gREVQRElSUy0kKENPTkZJR19SVEVfTElCUlRFX0JOWDJYX1BNRCkgKz0gbGli L2xpYnJ0ZV9lYWwgbGliL2xpYnJ0ZV9ldGhlcg0KPmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9i bngyeC9ibngyeC5oIGIvZHJpdmVycy9uZXQvYm54MngvYm54MnguaA0KPmluZGV4IGU0OTc5YWMu LmQxZGQ2YWEgMTAwNjQ0DQo+LS0tIGEvZHJpdmVycy9uZXQvYm54MngvYm54MnguaA0KPisrKyBi L2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4LmgNCj5AQCAtMTQxNCwzNCArMTQxNCw5NSBAQCBzdHJ1 Y3QgYm54MnhfZnVuY19pbml0X3BhcmFtcyB7DQo+ICNkZWZpbmUgQkFSMSAyDQo+ICNkZWZpbmUg QkFSMiA0DQo+IA0KPitzdGF0aWMgaW5saW5lIHZvaWQNCj4rYm54MnhfcmVnX3dyaXRlOChzdHJ1 Y3QgYm54Mnhfc29mdGMgKnNjLCBzaXplX3Qgb2Zmc2V0LCB1aW50OF90IHZhbCkNCj4rew0KPisJ UE1EX0RFQlVHX1BFUklPRElDX0xPRyhERUJVRywgIm9mZnNldD0weCUwOGx4IHZhbD0weCUwMngi LA0KPisJCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpb2Zmc2V0LCB2YWwpOw0KPisJKigodm9sYXRp bGUgdWludDhfdCopDQo+KwkgICgodWludHB0cl90KXNjLT5iYXJbQkFSMF0uYmFzZV9hZGRyICsg b2Zmc2V0KSkgPSB2YWw7DQo+K30NCj4rDQo+K3N0YXRpYyBpbmxpbmUgdm9pZA0KPitibngyeF9y ZWdfd3JpdGUxNihzdHJ1Y3QgYm54Mnhfc29mdGMgKnNjLCBzaXplX3Qgb2Zmc2V0LCB1aW50MTZf dCB2YWwpDQo+K3sNCj4rI2lmZGVmIFJURV9MSUJSVEVfQk5YMlhfREVCVUdfUEVSSU9ESUMNCj4r CWlmICgob2Zmc2V0ICUgMikgIT0gMCkNCj4rCQlQTURfRFJWX0xPRyhOT1RJQ0UsICJVbmFsaWdu ZWQgMTYtYml0IHdyaXRlIHRvIDB4JTA4bHgiLA0KPisJCQkgICAgKHVuc2lnbmVkIGxvbmcpb2Zm c2V0KTsNCj4rI2VuZGlmDQo+KwlQTURfREVCVUdfUEVSSU9ESUNfTE9HKERFQlVHLCAib2Zmc2V0 PTB4JTA4bHggdmFsPTB4JTA0eCIsDQo+KwkJCSAgICAgICAodW5zaWduZWQgbG9uZylvZmZzZXQs IHZhbCk7DQo+KwkqKCh2b2xhdGlsZSB1aW50MTZfdCopDQo+KwkgICgodWludHB0cl90KXNjLT5i YXJbQkFSMF0uYmFzZV9hZGRyICsgb2Zmc2V0KSkgPSB2YWw7DQo+K30NCj4rDQo+K3N0YXRpYyBp bmxpbmUgdm9pZA0KPitibngyeF9yZWdfd3JpdGUzMihzdHJ1Y3QgYm54Mnhfc29mdGMgKnNjLCBz aXplX3Qgb2Zmc2V0LCB1aW50MzJfdCB2YWwpDQo+K3sNCj4gI2lmZGVmIFJURV9MSUJSVEVfQk5Y MlhfREVCVUdfUEVSSU9ESUMNCj4tdWludDhfdCBibngyeF9yZWdfcmVhZDgoc3RydWN0IGJueDJ4 X3NvZnRjICpzYywgc2l6ZV90IG9mZnNldCk7DQo+LXVpbnQxNl90IGJueDJ4X3JlZ19yZWFkMTYo c3RydWN0IGJueDJ4X3NvZnRjICpzYywgc2l6ZV90IG9mZnNldCk7DQo+LXVpbnQzMl90IGJueDJ4 X3JlZ19yZWFkMzIoc3RydWN0IGJueDJ4X3NvZnRjICpzYywgc2l6ZV90IG9mZnNldCk7DQo+Kwlp ZiAoKG9mZnNldCAlIDQpICE9IDApDQo+KwkJUE1EX0RSVl9MT0coTk9USUNFLCAiVW5hbGlnbmVk IDMyLWJpdCB3cml0ZSB0byAweCUwOGx4IiwNCj4rCQkJICAgICh1bnNpZ25lZCBsb25nKW9mZnNl dCk7DQo+KyNlbmRpZg0KPiANCj4tdm9pZCBibngyeF9yZWdfd3JpdGU4KHN0cnVjdCBibngyeF9z b2Z0YyAqc2MsIHNpemVfdCBvZmZzZXQsIHVpbnQ4X3QNCj52YWwpOw0KPi12b2lkIGJueDJ4X3Jl Z193cml0ZTE2KHN0cnVjdCBibngyeF9zb2Z0YyAqc2MsIHNpemVfdCBvZmZzZXQsIHVpbnQxNl90 DQo+dmFsKTsNCj4tdm9pZCBibngyeF9yZWdfd3JpdGUzMihzdHJ1Y3QgYm54Mnhfc29mdGMgKnNj LCBzaXplX3Qgb2Zmc2V0LCB1aW50MzJfdA0KPnZhbCk7DQo+LSNlbHNlDQo+LSNkZWZpbmUgYm54 MnhfcmVnX3dyaXRlOChzYywgb2Zmc2V0LCB2YWwpXA0KPi0JKigodm9sYXRpbGUgdWludDhfdCop KCh1aW50cHRyX3Qpc2MtPmJhcltCQVIwXS5iYXNlX2FkZHIgKyBvZmZzZXQpKSA9DQo+dmFsDQo+ KwlQTURfREVCVUdfUEVSSU9ESUNfTE9HKERFQlVHLCAib2Zmc2V0PTB4JTA4bHggdmFsPTB4JTA4 eCIsDQo+KwkJCSAgICAgICAodW5zaWduZWQgbG9uZylvZmZzZXQsIHZhbCk7DQo+KwkqKCh2b2xh dGlsZSB1aW50MzJfdCopDQo+KwkgICgodWludHB0cl90KXNjLT5iYXJbQkFSMF0uYmFzZV9hZGRy ICsgb2Zmc2V0KSkgPSB2YWw7DQo+K30NCj4rDQo+K3N0YXRpYyBpbmxpbmUgdWludDhfdA0KPiti bngyeF9yZWdfcmVhZDgoc3RydWN0IGJueDJ4X3NvZnRjICpzYywgc2l6ZV90IG9mZnNldCkNCj4r ew0KPisJdWludDhfdCB2YWw7DQo+Kw0KPisJdmFsID0gKHVpbnQ4X3QpKCooKHZvbGF0aWxlIHVp bnQ4X3QqKQ0KPisJCQkgICgodWludHB0cl90KSBzYy0+YmFyW0JBUjBdLmJhc2VfYWRkciArIG9m ZnNldCkpKTsNCj4rCVBNRF9ERUJVR19QRVJJT0RJQ19MT0coREVCVUcsICJvZmZzZXQ9MHglMDhs eCB2YWw9MHglMDJ4IiwNCj4rCQkJICAgICAgICh1bnNpZ25lZCBsb25nKW9mZnNldCwgdmFsKTsN Cj4rDQo+KwlyZXR1cm4gdmFsOw0KPit9DQo+Kw0KPitzdGF0aWMgaW5saW5lIHVpbnQxNl90DQo+ K2JueDJ4X3JlZ19yZWFkMTYoc3RydWN0IGJueDJ4X3NvZnRjICpzYywgc2l6ZV90IG9mZnNldCkN Cj4rew0KPisJdWludDE2X3QgdmFsOw0KPiANCj4tI2RlZmluZSBibngyeF9yZWdfd3JpdGUxNihz Yywgb2Zmc2V0LCB2YWwpXA0KPi0JKigodm9sYXRpbGUgdWludDE2X3QqKSgodWludHB0cl90KXNj LT5iYXJbQkFSMF0uYmFzZV9hZGRyICsgb2Zmc2V0KSkgPQ0KPnZhbA0KPisjaWZkZWYgUlRFX0xJ QlJURV9CTlgyWF9ERUJVR19QRVJJT0RJQw0KPisJaWYgKChvZmZzZXQgJSAyKSAhPSAwKQ0KPisJ CVBNRF9EUlZfTE9HKE5PVElDRSwgIlVuYWxpZ25lZCAxNi1iaXQgcmVhZCBmcm9tIDB4JTA4bHgi LA0KPisJCQkgICAgKHVuc2lnbmVkIGxvbmcpb2Zmc2V0KTsNCj4rI2VuZGlmDQo+IA0KPi0jZGVm aW5lIGJueDJ4X3JlZ193cml0ZTMyKHNjLCBvZmZzZXQsIHZhbClcDQo+LQkqKCh2b2xhdGlsZSB1 aW50MzJfdCopKCh1aW50cHRyX3Qpc2MtPmJhcltCQVIwXS5iYXNlX2FkZHIgKyBvZmZzZXQpKSA9 DQo+dmFsDQo+Kwl2YWwgPSAodWludDE2X3QpKCooKHZvbGF0aWxlIHVpbnQxNl90KikNCj4rCQkJ ICAgKCh1aW50cHRyX3QpIHNjLT5iYXJbQkFSMF0uYmFzZV9hZGRyICsgb2Zmc2V0KSkpOw0KPisJ UE1EX0RFQlVHX1BFUklPRElDX0xPRyhERUJVRywgIm9mZnNldD0weCUwOGx4IHZhbD0weCUwOHgi LA0KPisJCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpb2Zmc2V0LCB2YWwpOw0KPiANCj4tI2RlZmlu ZSBibngyeF9yZWdfcmVhZDgoc2MsIG9mZnNldClcDQo+LQkoKigodm9sYXRpbGUgdWludDhfdCop KCh1aW50cHRyX3Qpc2MtPmJhcltCQVIwXS5iYXNlX2FkZHIgKyBvZmZzZXQpKSkNCj4rCXJldHVy biB2YWw7DQo+K30NCj4gDQo+LSNkZWZpbmUgYm54MnhfcmVnX3JlYWQxNihzYywgb2Zmc2V0KVwN Cj4tCSgqKCh2b2xhdGlsZSB1aW50MTZfdCopKCh1aW50cHRyX3Qpc2MtPmJhcltCQVIwXS5iYXNl X2FkZHIgKyBvZmZzZXQpKSkNCj4rc3RhdGljIGlubGluZSB1aW50MzJfdA0KPitibngyeF9yZWdf cmVhZDMyKHN0cnVjdCBibngyeF9zb2Z0YyAqc2MsIHNpemVfdCBvZmZzZXQpDQo+K3sNCj4rCXVp bnQzMl90IHZhbDsNCj4gDQo+LSNkZWZpbmUgYm54MnhfcmVnX3JlYWQzMihzYywgb2Zmc2V0KVwN Cj4tCSgqKCh2b2xhdGlsZSB1aW50MzJfdCopKCh1aW50cHRyX3Qpc2MtPmJhcltCQVIwXS5iYXNl X2FkZHIgKyBvZmZzZXQpKSkNCj4rI2lmZGVmIFJURV9MSUJSVEVfQk5YMlhfREVCVUdfUEVSSU9E SUMNCj4rCWlmICgob2Zmc2V0ICUgNCkgIT0gMCkNCj4rCQlQTURfRFJWX0xPRyhOT1RJQ0UsICJV bmFsaWduZWQgMzItYml0IHJlYWQgZnJvbSAweCUwOGx4IiwNCj4rCQkJICAgICh1bnNpZ25lZCBs b25nKW9mZnNldCk7DQo+ICNlbmRpZg0KPiANCj4rCXZhbCA9ICh1aW50MzJfdCkoKigodm9sYXRp bGUgdWludDMyX3QqKQ0KPisJCQkgICAoKHVpbnRwdHJfdCkgc2MtPmJhcltCQVIwXS5iYXNlX2Fk ZHIgKyBvZmZzZXQpKSk7DQo+KwlQTURfREVCVUdfUEVSSU9ESUNfTE9HKERFQlVHLCAib2Zmc2V0 PTB4JTA4bHggdmFsPTB4JTA4eCIsDQo+KwkJCSAgICAgICAodW5zaWduZWQgbG9uZylvZmZzZXQs IHZhbCk7DQo+Kw0KPisJcmV0dXJuIHZhbDsNCj4rfQ0KPisNCj4gI2RlZmluZSBSRUdfQUREUihz Yywgb2Zmc2V0KSAoKCh1aW50NjRfdClzYy0+YmFyW0JBUjBdLmJhc2VfYWRkcikgKw0KPihvZmZz ZXQpKQ0KPiANCj4gI2RlZmluZSBSRUdfUkQ4KHNjLCBvZmZzZXQpICBibngyeF9yZWdfcmVhZDgo c2MsIChvZmZzZXQpKQ0KPmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ibngyeC9kZWJ1Zy5jIGIv ZHJpdmVycy9uZXQvYm54MngvZGVidWcuYw0KPmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NA0KPmlu ZGV4IGNjNTA4NDUuLjAwMDAwMDANCj4tLS0gYS9kcml2ZXJzL25ldC9ibngyeC9kZWJ1Zy5jDQo+ KysrIC9kZXYvbnVsbA0KPkBAIC0xLDk2ICswLDAgQEANCj4tLyotDQo+LSAqIENvcHlyaWdodCAo YykgMjAwNy0yMDEzIFFMb2dpYyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4t ICoNCj4tICogRXJpYyBEYXZpcyAgICAgICAgPGVkYXZpc0Bicm9hZGNvbS5jb20+DQo+LSAqIERh dmlkIENocmlzdGVuc2VuIDxkYXZpZGNoQGJyb2FkY29tLmNvbT4NCj4tICogR2FyeSBaYW1icmFu byAgICAgPHphbWJyYW5vQGJyb2FkY29tLmNvbT4NCj4tICoNCj4tICogQ29weXJpZ2h0IChjKSAy MDEzLTIwMTUgQnJvY2FkZSBDb21tdW5pY2F0aW9ucyBTeXN0ZW1zLCBJbmMuDQo+LSAqIENvcHly aWdodCAoYykgMjAxNSBRTG9naWMgQ29ycG9yYXRpb24uDQo+LSAqIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+LSAqIHd3dy5xbG9naWMuY29tDQo+LSAqDQo+LSAqIFNlZSBMSUNFTlNFLmJueDJ4X3Bt ZCBmb3IgY29weXJpZ2h0IGFuZCBsaWNlbnNpbmcgZGV0YWlscy4NCj4tICovDQo+LQ0KPi0jaW5j bHVkZSAiYm54MnguaCINCj4tDQo+LQ0KPi0vKg0KPi0gKiBEZWJ1ZyB2ZXJzaW9ucyBvZiB0aGUg OC8xNi8zMiBiaXQgT1MgcmVnaXN0ZXIgcmVhZC93cml0ZSBmdW5jdGlvbnMgdG8NCj4tICogY2Fw dHVyZS9kaXNwbGF5IHZhbHVlcyByZWFkL3dyaXR0ZW4gZnJvbS90byB0aGUgY29udHJvbGxlci4N Cj4tICovDQo+LXZvaWQNCj4tYm54MnhfcmVnX3dyaXRlOChzdHJ1Y3QgYm54Mnhfc29mdGMgKnNj LCBzaXplX3Qgb2Zmc2V0LCB1aW50OF90IHZhbCkNCj4tew0KPi0JUE1EX0RFQlVHX1BFUklPRElD X0xPRyhERUJVRywgIm9mZnNldD0weCUwOGx4IHZhbD0weCUwMngiLCAodW5zaWduZWQNCj5sb25n KW9mZnNldCwgdmFsKTsNCj4tCSooKHZvbGF0aWxlIHVpbnQ4X3QqKSgodWludHB0cl90KXNjLT5i YXJbQkFSMF0uYmFzZV9hZGRyICsgb2Zmc2V0KSkgPQ0KPnZhbDsNCj4tfQ0KPi0NCj4tdm9pZA0K Pi1ibngyeF9yZWdfd3JpdGUxNihzdHJ1Y3QgYm54Mnhfc29mdGMgKnNjLCBzaXplX3Qgb2Zmc2V0 LCB1aW50MTZfdCB2YWwpDQo+LXsNCj4tCWlmICgob2Zmc2V0ICUgMikgIT0gMCkgew0KPi0JCVBN RF9EUlZfTE9HKE5PVElDRSwgIlVuYWxpZ25lZCAxNi1iaXQgd3JpdGUgdG8gMHglMDhseCIsDQo+ LQkJCSAgICAodW5zaWduZWQgbG9uZylvZmZzZXQpOw0KPi0JfQ0KPi0NCj4tCVBNRF9ERUJVR19Q RVJJT0RJQ19MT0coREVCVUcsICJvZmZzZXQ9MHglMDhseCB2YWw9MHglMDR4IiwgKHVuc2lnbmVk DQo+bG9uZylvZmZzZXQsIHZhbCk7DQo+LQkqKCh2b2xhdGlsZSB1aW50MTZfdCopKCh1aW50cHRy X3Qpc2MtPmJhcltCQVIwXS5iYXNlX2FkZHIgKyBvZmZzZXQpKSA9DQo+dmFsOw0KPi19DQo+LQ0K Pi12b2lkDQo+LWJueDJ4X3JlZ193cml0ZTMyKHN0cnVjdCBibngyeF9zb2Z0YyAqc2MsIHNpemVf dCBvZmZzZXQsIHVpbnQzMl90IHZhbCkNCj4tew0KPi0JaWYgKChvZmZzZXQgJSA0KSAhPSAwKSB7 DQo+LQkJUE1EX0RSVl9MT0coTk9USUNFLCAiVW5hbGlnbmVkIDMyLWJpdCB3cml0ZSB0byAweCUw OGx4IiwNCj4tCQkJICAgICh1bnNpZ25lZCBsb25nKW9mZnNldCk7DQo+LQl9DQo+LQ0KPi0JUE1E X0RFQlVHX1BFUklPRElDX0xPRyhERUJVRywgIm9mZnNldD0weCUwOGx4IHZhbD0weCUwOHgiLCAo dW5zaWduZWQNCj5sb25nKW9mZnNldCwgdmFsKTsNCj4tCSooKHZvbGF0aWxlIHVpbnQzMl90Kiko KHVpbnRwdHJfdClzYy0+YmFyW0JBUjBdLmJhc2VfYWRkciArIG9mZnNldCkpID0NCj52YWw7DQo+ LX0NCj4tDQo+LXVpbnQ4X3QNCj4tYm54MnhfcmVnX3JlYWQ4KHN0cnVjdCBibngyeF9zb2Z0YyAq c2MsIHNpemVfdCBvZmZzZXQpDQo+LXsNCj4tCXVpbnQ4X3QgdmFsOw0KPi0NCj4tCXZhbCA9ICh1 aW50OF90KSgqKCh2b2xhdGlsZQ0KPnVpbnQ4X3QqKSgodWludHB0cl90KXNjLT5iYXJbQkFSMF0u YmFzZV9hZGRyICsgb2Zmc2V0KSkpOw0KPi0JUE1EX0RFQlVHX1BFUklPRElDX0xPRyhERUJVRywg Im9mZnNldD0weCUwOGx4IHZhbD0weCUwMngiLCAodW5zaWduZWQNCj5sb25nKW9mZnNldCwgdmFs KTsNCj4tDQo+LQlyZXR1cm4gdmFsOw0KPi19DQo+LQ0KPi11aW50MTZfdA0KPi1ibngyeF9yZWdf cmVhZDE2KHN0cnVjdCBibngyeF9zb2Z0YyAqc2MsIHNpemVfdCBvZmZzZXQpDQo+LXsNCj4tCXVp bnQxNl90IHZhbDsNCj4tDQo+LQlpZiAoKG9mZnNldCAlIDIpICE9IDApIHsNCj4tCQlQTURfRFJW X0xPRyhOT1RJQ0UsICJVbmFsaWduZWQgMTYtYml0IHJlYWQgZnJvbSAweCUwOGx4IiwNCj4tCQkJ ICAgICh1bnNpZ25lZCBsb25nKW9mZnNldCk7DQo+LQl9DQo+LQ0KPi0JdmFsID0gKHVpbnQxNl90 KSgqKCh2b2xhdGlsZQ0KPnVpbnQxNl90KikoKHVpbnRwdHJfdClzYy0+YmFyW0JBUjBdLmJhc2Vf YWRkciArIG9mZnNldCkpKTsNCj4tCVBNRF9ERUJVR19QRVJJT0RJQ19MT0coREVCVUcsICJvZmZz ZXQ9MHglMDhseCB2YWw9MHglMDh4IiwgKHVuc2lnbmVkDQo+bG9uZylvZmZzZXQsIHZhbCk7DQo+ LQ0KPi0JcmV0dXJuIHZhbDsNCj4tfQ0KPi0NCj4tdWludDMyX3QNCj4tYm54MnhfcmVnX3JlYWQz MihzdHJ1Y3QgYm54Mnhfc29mdGMgKnNjLCBzaXplX3Qgb2Zmc2V0KQ0KPi17DQo+LQl1aW50MzJf dCB2YWw7DQo+LQ0KPi0JaWYgKChvZmZzZXQgJSA0KSAhPSAwKSB7DQo+LQkJUE1EX0RSVl9MT0co Tk9USUNFLCAiVW5hbGlnbmVkIDMyLWJpdCByZWFkIGZyb20gMHglMDhseCIsDQo+LQkJCSAgICAo dW5zaWduZWQgbG9uZylvZmZzZXQpOw0KPi0JCXJldHVybiAwOw0KPi0JfQ0KPi0NCj4tCXZhbCA9 ICh1aW50MzJfdCkoKigodm9sYXRpbGUNCj51aW50MzJfdCopKCh1aW50cHRyX3Qpc2MtPmJhcltC QVIwXS5iYXNlX2FkZHIgKyBvZmZzZXQpKSk7DQo+LQlQTURfREVCVUdfUEVSSU9ESUNfTE9HKERF QlVHLCAib2Zmc2V0PTB4JTA4bHggdmFsPTB4JTA4eCIsICh1bnNpZ25lZA0KPmxvbmcpb2Zmc2V0 LCB2YWwpOw0KPi0NCj4tCXJldHVybiB2YWw7DQo+LX0NCj4tLSANCj4yLjcuNA0KPg0KPg0KVGhl cmUgaXMgbm8gY292ZXIgbGV0dGVyLiBTbyBwbGVhc2UgdHJlYXQgdGhpcyBhY2tpbmcgdGhlIHNl cmllcy4NCg0KQWNrZWQtYnk6IEhhcmlzaCBQYXRpbCA8aGFyaXNoLnBhdGlsQHFsb2dpYy5jb20+ DQoNCg0KDQo=