From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 63B782B9A; Mon, 25 Mar 2019 10:25:21 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Mar 2019 02:25:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,256,1549958400"; d="scan'208";a="137183626" Received: from pgsmsx105.gar.corp.intel.com ([10.221.44.96]) by fmsmga007.fm.intel.com with ESMTP; 25 Mar 2019 02:25:19 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.210]) by PGSMSX105.gar.corp.intel.com ([169.254.4.121]) with mapi id 14.03.0415.000; Mon, 25 Mar 2019 17:25:13 +0800 From: "Zhao1, Wei" To: "Yigit, Ferruh" , "dev@dpdk.org" CC: "stable@dpdk.org" , "stephen@networkplumber.org" , "Ananyev, Konstantin" Thread-Topic: [dpdk-stable] [PATCH v3] app/testpmd: fix support of hex string parser for flow API Thread-Index: AQHU4GFyXPe53M0yN0G4YLqSpzGFL6YXN+gAgAR/amD//9ADgIAAiIDQ Date: Mon, 25 Mar 2019 09:25:12 +0000 Message-ID: References: <1552896961-33681-1-git-send-email-wei.zhao1@intel.com> <1553224548-37749-1-git-send-email-wei.zhao1@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [172.30.20.205] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH v3] app/testpmd: fix support of hex string parser for flow API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Mar 2019 09:25:22 -0000 SGnvvIxGZXJydWgNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZaWdp dCwgRmVycnVoDQo+IFNlbnQ6IE1vbmRheSwgTWFyY2ggMjUsIDIwMTkgNDo0NiBQTQ0KPiBUbzog WmhhbzEsIFdlaSA8d2VpLnpoYW8xQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogc3Rh YmxlQGRwZGsub3JnOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgQW5hbnlldiwgS29uc3Rh bnRpbg0KPiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtk cGRrLXN0YWJsZV0gW1BBVENIIHYzXSBhcHAvdGVzdHBtZDogZml4IHN1cHBvcnQgb2YgaGV4IHN0 cmluZw0KPiBwYXJzZXIgZm9yIGZsb3cgQVBJDQo+IA0KPiBPbiAzLzI1LzIwMTkgMzozOSBBTSwg WmhhbzEsIFdlaSB3cm90ZToNCj4gPiBIaSwNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+PiBGcm9tOiBZaWdpdCwgRmVycnVoDQo+ID4+IFNlbnQ6IEZyaWRheSwgTWFy Y2ggMjIsIDIwMTkgMTA6NTYgUE0NCj4gPj4gVG86IFpoYW8xLCBXZWkgPHdlaS56aGFvMUBpbnRl bC5jb20+OyBkZXZAZHBkay5vcmcNCj4gPj4gQ2M6IHN0YWJsZUBkcGRrLm9yZzsgc3RlcGhlbkBu ZXR3b3JrcGx1bWJlci5vcmc7IEFuYW55ZXYsDQo+IEtvbnN0YW50aW4NCj4gPj4gPGtvbnN0YW50 aW4uYW5hbnlldkBpbnRlbC5jb20+DQo+ID4+IFN1YmplY3Q6IFJlOiBbZHBkay1zdGFibGVdIFtQ QVRDSCB2M10gYXBwL3Rlc3RwbWQ6IGZpeCBzdXBwb3J0IG9mIGhleA0KPiA+PiBzdHJpbmcgcGFy c2VyIGZvciBmbG93IEFQSQ0KPiA+Pg0KPiA+PiBPbiAzLzIyLzIwMTkgMzoxNSBBTSwgV2VpIFpo YW8gd3JvdGU6DQo+ID4+PiBUaGVyZSBpcyBuZWVkIGZvciB1c2VycyB0byBzZXQgY29uZmlndXJh dGlvbiBvZiBIRVggbnVtYmVyIGZvciBSU1MNCj4gPj4+IGtleS4gVGhlIGtleSBieXRlIHNob3Vs ZCBiZSBwYXNzIGRvd24gYXMgaGV4IG51bWJlciBub3QgYXMgY2hhcg0KPiA+Pj4gc3RyaW5nLiBU aGlzIHBhdGNoIGVuYWJsZSBjbWRsaW5lIGZsb3cgcGFyc2UgSEVYIG51bWJlciwgaW4gb3JkZXIg dG8NCj4gPj4+IG5vdCB1c2luZyBzdHJpbmcgd2hpY2ggcGFzcyBBU0lDIG51bWJlci4NCj4gPj4+ DQo+ID4+PiBGaXhlczogZjRkNjIzZjk2MTE5ICgiYXBwL3Rlc3RwbWQ6IGZpeCBtaXNzaW5nIFJT UyBmaWVsZHMgaW4gZmxvdw0KPiA+Pj4gYWN0aW9uIikNCj4gPj4+IENjOiBzdGFibGVAZHBkay5v cmcNCj4gPj4+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBXZWkgWmhhbyA8d2VpLnpoYW8xQGludGVs LmNvbT4NCj4gPj4+IFRlc3RlZC1ieTogUGVuZyBZdWFuIDx5dWFuLnBlbmdAaW50ZWwuY29tPg0K PiA+Pg0KPiA+PiA8Li4uPg0KPiA+Pg0KPiA+Pj4gQEAgLTQ0NzUsNiArNDQ4NiwxMzggQEAgcGFy c2Vfc3RyaW5nKHN0cnVjdCBjb250ZXh0ICpjdHgsIGNvbnN0DQo+ID4+PiBzdHJ1Y3QNCj4gPj4g dG9rZW4gKnRva2VuLA0KPiA+Pj4gIAlyZXR1cm4gLTE7DQo+ID4+PiAgfQ0KPiA+Pj4NCj4gPj4+ ICtzdGF0aWMgdWludDMyX3QNCj4gPj4+ICtnZXRfaGV4X3ZhbChjaGFyIGMpDQo+ID4+PiArew0K PiA+Pj4gKwlzd2l0Y2ggKGMpIHsNCj4gPj4+ICsJY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcy JzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzoNCj4gPj4+ICsJY2FzZSAnNic6IGNhc2Ug JzcnOiBjYXNlICc4JzogY2FzZSAnOSc6DQo+ID4+PiArCQlyZXR1cm4gYyAtICcwJzsNCj4gPj4+ ICsJY2FzZSAnQSc6IGNhc2UgJ0InOiBjYXNlICdDJzogY2FzZSAnRCc6IGNhc2UgJ0UnOiBjYXNl ICdGJzoNCj4gPj4+ICsJCXJldHVybiBjIC0gJ0EnICsgMTA7DQo+ID4+PiArCWNhc2UgJ2EnOiBj YXNlICdiJzogY2FzZSAnYyc6IGNhc2UgJ2QnOiBjYXNlICdlJzogY2FzZSAnZic6DQo+ID4+PiAr CQlyZXR1cm4gYyAtICdhJyArIDEwOw0KPiA+Pj4gKwlkZWZhdWx0Og0KPiA+Pj4gKwkJcmV0dXJu IDA7DQo+ID4+PiArCX0NCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArc3RhdGljIGludA0KPiA+ Pj4gK3BhcnNlX2hleF9zdHJpbmcoY29uc3QgY2hhciAqc3JjLCB1aW50OF90ICpkc3QsIHVpbnQz Ml90ICpzaXplKSB7DQo+ID4+PiArCWNvbnN0IGNoYXIgKmM7DQo+ID4+PiArCXVpbnQzMl90IGk7 DQo+ID4+PiArDQo+ID4+PiArCS8qIENoZWNrIGlucHV0IHBhcmFtZXRlcnMgKi8NCj4gPj4+ICsJ aWYgKChzcmMgPT0gTlVMTCkgfHwNCj4gPj4+ICsJCShkc3QgPT0gTlVMTCkgfHwNCj4gPj4+ICsJ CShzaXplID09IE5VTEwpIHx8DQo+ID4+PiArCQkoKnNpemUgPT0gMCkpDQo+ID4+PiArCQlyZXR1 cm4gLTE7DQo+ID4+PiArCWlmICgoKnNpemUgJiAxKSAhPSAwKQ0KPiA+Pj4gKwkJcmV0dXJuIC0x Ow0KPiA+Pj4gKw0KPiA+Pj4gKwlmb3IgKGMgPSBzcmMsIGkgPSAwOyBpIDwgKnNpemU7IGMrKywg aSsrKSB7DQo+ID4+PiArCQlpZiAoaXN4ZGlnaXQoKmMpKQ0KPiA+Pj4gKwkJCWNvbnRpbnVlOw0K PiA+Pj4gKwkJZWxzZQ0KPiA+Pj4gKwkJCXJldHVybiAtMTsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0K PiA+Pj4gKwkqc2l6ZSA9ICpzaXplIC8gMjsNCj4gPj4+ICsNCj4gPj4+ICsJLyogQ29udmVydCBj aGFycyB0byBieXRlcyAqLw0KPiA+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgKnNpemU7IGkrKykNCj4g Pj4+ICsJCWRzdFtpXSA9IGdldF9oZXhfdmFsKHNyY1syICogaV0pICogMTYgKw0KPiA+Pj4gKwkJ CWdldF9oZXhfdmFsKHNyY1syICogaSArIDFdKTsNCj4gPj4+ICsNCj4gPj4+ICsJcmV0dXJuIDA7 DQo+ID4+PiArfQ0KPiA+Pg0KPiA+PiBJIGNhbiBzZWUgdGhpcyBoYXMgYmVlbiBkaXNjdXNzZWQg YWxyZWFkeSBidXQgd2hhdCB3b3VsZCB5b3UgdGhpbmsNCj4gPj4gdXBkYXRpbmcgdGhlICdwYXJz ZV9oZXhfc3RyaW5nJyBzb21ldGhpbmcgbGlrZSBmb2xsb3dpbmcsIGl0IGlzIGxlc3MgY29kZSB0 bw0KPiBtYWludGFpbjoNCj4gPj4NCj4gPj4gc3RhdGljIGludA0KPiA+PiBwYXJzZV9oZXhfc3Ry aW5nKGNvbnN0IGNoYXIgKnNyYywgdWludDhfdCAqZHN0LCB1aW50MzJfdCAqc2l6ZSkgew0KPiA+ PiAgIGludCBsZW47DQo+ID4+ICAgaW50IGkNCj4gPj4gICBmb3IgKGkgPSAwLCBsZW4gPSAwOyBp IDwgKnNpemU7IGkgKz0gMikgew0KPiA+PiAgICAgY2hhciB0bXBbM107DQo+ID4+ICAgICBzbnBy aW50Zih0bXAsIDMsIHNyYyArIGkpOw0KPiA+PiAgICAgZHN0W2xlbisrXSA9IHN0cnRvdWwodG1w LCBOVUxMLCAxNik7DQo+ID4+ICAgfQ0KPiA+PiAgIGRzdFtsZW5dID0gMDsNCj4gPj4gICAqc2l6 ZSA9IGxlbjsNCj4gPj4gICByZXR1cm4gMDsNCj4gPj4gfQ0KPiA+Pg0KPiA+PiAoaW5kZWVkIHdp dGggYmV0dGVyIGVycm9yIGNoZWNraW5nIG9uIHN0cnRvdWwgOykgKQ0KPiA+DQo+ID4NCj4gPiBX aHkgZGVsZXRlIHRoZXNlIGNoZWNrIGZyb20gcGFyc2VfaGV4X3N0cmluZygpPw0KPiANCj4gVGhl IHBvaW50IGlzIHVzaW5nICdzdHJ0b3VsJyBpbnN0ZWFkIG9mIHlvdXIgZnVuY3Rpb25zLCBzbyB0 aGF0IHlvdSB3b24ndCBuZWVkDQo+ICdnZXRfaGV4X3ZhbCgpJyBhdCBhbGwsIG9yIHdvbid0IG5l ZWQgJ2lzeGRpZ2l0KCknIGJlY2F1c2UgJ3N0cnRvdWwnIHdpbGwgY2hlY2sgaXQsDQo+IHdvbid0 IG5lZWQgc2l6ZSBzaG91bGQgYmUgbXVsdGlwbHkgb2YgdHdvIHJlc3RyaWN0aW9uICcoKnNpemUg JiAxKScgYmVjYXVzZSBvZg0KPiBpbXBsZW1lbnRhdGlvbiBjaGFuZ2UuIFByb2JhYmx5IHlvdSB3 aWxsIG5lZWQgTlVMTCBjaGVja3MsIGJ1dCBhZ2FpbiBwb2ludA0KPiBpcyB3aHkgbm90IHVzaW5n ICdzdHJ0b3VsJyBpbnN0ZWFkIG9mIHdyaXRpbmcgeW91ciB2ZXJzaW9uIG9mIGl0Pw0KDQpZZXMs IHdlIGNhbiB1c2UgJ3N0cnRvdWwnICwgYnV0IG15IHBvaW50IGlzIHRoYXQgIEkgdGhpbmsgd2Ug bmVlZCB0aGVzZSBjaGVjayBjb2RlIGV2ZW4gIGlmIHdlIHVzZSB0aGUgY29kZSAnc3RydG91bCcg Lg0KaXN4ZGlnaXQoKmMpKSBpcyBuZWVkIGJlY2F1c2UgICpjIG1heSBiZSBzcmluZyAiMHhyZ2gi IHdoaWNoIGlzIG5vdCBoZXguDQpJZiB3ZSB1c2Ugc3RydG91bCAgd2lsbCByZXR1cm4gMCBmb3Ig dGhhdCAsd2UgY2FuIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVycm9yIG9yIGlucHV0IGlzIHpl cm8uICANCicoKnNpemUgJiAxKSBjYW4gYmUgZGVsZXRlLCBJIGFncmVlLg0KDQoJLyogQ2hlY2sg aW5wdXQgcGFyYW1ldGVycyAqLw0KCWlmICgoc3JjID09IE5VTEwpIHx8DQoJKGRzdCA9PSBOVUxM KSB8fA0KCQkoc2l6ZSA9PSBOVUxMKSB8fA0KCQkoKnNpemUgPT0gMCkpDQoJCXJldHVybiAtMTsN Cglmb3IgKGMgPSBzcmMsIGkgPSAwOyBpIDwgKnNpemU7IGMrKywgaSsrKSB7DQoJCWlmIChpc3hk aWdpdCgqYykpDQoJCQljb250aW51ZTsNCgkJZWxzZQ0KCQkJcmV0dXJuIC0xOw0KCX0NCg0KDQo+ ID4NCj4gPiAJLyogQ2hlY2sgaW5wdXQgcGFyYW1ldGVycyAqLw0KPiA+IAlpZiAoKHNyYyA9PSBO VUxMKSB8fA0KPiA+IAkoZHN0ID09IE5VTEwpIHx8DQo+ID4gCQkoc2l6ZSA9PSBOVUxMKSB8fA0K PiA+IAkJKCpzaXplID09IDApKQ0KPiA+IAkJcmV0dXJuIC0xOw0KPiA+IAlpZiAoKCpzaXplICYg MSkgIT0gMCkNCj4gPiAJCXJldHVybiAtMTsNCj4gPiAJZm9yIChjID0gc3JjLCBpID0gMDsgaSA8 ICpzaXplOyBjKyssIGkrKykgew0KPiA+IAkJaWYgKGlzeGRpZ2l0KCpjKSkNCj4gPiAJCQljb250 aW51ZTsNCj4gPiAJCWVsc2UNCj4gPiAJCQlyZXR1cm4gLTE7DQo+ID4gCX0NCj4gPg0KPiA+DQo+ ID4NCj4gPj4NCj4gPj4gPC4uLj4NCj4gPj4NCj4gPj4+ICsJLyogT3V0cHV0IGJ1ZmZlciBpcyBu b3QgbmVjZXNzYXJpbHkgTlVMLXRlcm1pbmF0ZWQuICovDQo+ID4+PiArCW1lbWNweShidWYsIGhl eF90bXAsIGhleGxlbik7DQo+ID4+PiArCW1lbXNldCgodWludDhfdCAqKWJ1ZiArIGxlbiwgMHgw MCwgc2l6ZSAtIGhleGxlbik7DQo+ID4+DQo+ID4+IENhbid0IHRoaXMgb3ZlcmZsb3cgdGhlICdi dWYnPyBzaW5jZSAibGVuID0gMiAqIGhleGxlbiINCj4gPj4gSSBndWVzcyBpbnRlbnRpb24gaXMg ImJ1ZiArIGhleGxlbiINCg0K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id CFBEFA05D3 for ; Mon, 25 Mar 2019 10:25:24 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D87242BD3; Mon, 25 Mar 2019 10:25:23 +0100 (CET) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 63B782B9A; Mon, 25 Mar 2019 10:25:21 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Mar 2019 02:25:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,256,1549958400"; d="scan'208";a="137183626" Received: from pgsmsx105.gar.corp.intel.com ([10.221.44.96]) by fmsmga007.fm.intel.com with ESMTP; 25 Mar 2019 02:25:19 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.210]) by PGSMSX105.gar.corp.intel.com ([169.254.4.121]) with mapi id 14.03.0415.000; Mon, 25 Mar 2019 17:25:13 +0800 From: "Zhao1, Wei" To: "Yigit, Ferruh" , "dev@dpdk.org" CC: "stable@dpdk.org" , "stephen@networkplumber.org" , "Ananyev, Konstantin" Thread-Topic: [dpdk-stable] [PATCH v3] app/testpmd: fix support of hex string parser for flow API Thread-Index: AQHU4GFyXPe53M0yN0G4YLqSpzGFL6YXN+gAgAR/amD//9ADgIAAiIDQ Date: Mon, 25 Mar 2019 09:25:12 +0000 Message-ID: References: <1552896961-33681-1-git-send-email-wei.zhao1@intel.com> <1553224548-37749-1-git-send-email-wei.zhao1@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [172.30.20.205] Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH v3] app/testpmd: fix support of hex string parser for flow API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Message-ID: <20190325092512.P-WN_CRCbVRkAzM6gZY9TKA-UTOXggC2v3KRfl6ywN8@z> SGnvvIxGZXJydWgNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBZaWdp dCwgRmVycnVoDQo+IFNlbnQ6IE1vbmRheSwgTWFyY2ggMjUsIDIwMTkgNDo0NiBQTQ0KPiBUbzog WmhhbzEsIFdlaSA8d2VpLnpoYW8xQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogc3Rh YmxlQGRwZGsub3JnOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgQW5hbnlldiwgS29uc3Rh bnRpbg0KPiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtk cGRrLXN0YWJsZV0gW1BBVENIIHYzXSBhcHAvdGVzdHBtZDogZml4IHN1cHBvcnQgb2YgaGV4IHN0 cmluZw0KPiBwYXJzZXIgZm9yIGZsb3cgQVBJDQo+IA0KPiBPbiAzLzI1LzIwMTkgMzozOSBBTSwg WmhhbzEsIFdlaSB3cm90ZToNCj4gPiBIaSwNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KPiA+PiBGcm9tOiBZaWdpdCwgRmVycnVoDQo+ID4+IFNlbnQ6IEZyaWRheSwgTWFy Y2ggMjIsIDIwMTkgMTA6NTYgUE0NCj4gPj4gVG86IFpoYW8xLCBXZWkgPHdlaS56aGFvMUBpbnRl bC5jb20+OyBkZXZAZHBkay5vcmcNCj4gPj4gQ2M6IHN0YWJsZUBkcGRrLm9yZzsgc3RlcGhlbkBu ZXR3b3JrcGx1bWJlci5vcmc7IEFuYW55ZXYsDQo+IEtvbnN0YW50aW4NCj4gPj4gPGtvbnN0YW50 aW4uYW5hbnlldkBpbnRlbC5jb20+DQo+ID4+IFN1YmplY3Q6IFJlOiBbZHBkay1zdGFibGVdIFtQ QVRDSCB2M10gYXBwL3Rlc3RwbWQ6IGZpeCBzdXBwb3J0IG9mIGhleA0KPiA+PiBzdHJpbmcgcGFy c2VyIGZvciBmbG93IEFQSQ0KPiA+Pg0KPiA+PiBPbiAzLzIyLzIwMTkgMzoxNSBBTSwgV2VpIFpo YW8gd3JvdGU6DQo+ID4+PiBUaGVyZSBpcyBuZWVkIGZvciB1c2VycyB0byBzZXQgY29uZmlndXJh dGlvbiBvZiBIRVggbnVtYmVyIGZvciBSU1MNCj4gPj4+IGtleS4gVGhlIGtleSBieXRlIHNob3Vs ZCBiZSBwYXNzIGRvd24gYXMgaGV4IG51bWJlciBub3QgYXMgY2hhcg0KPiA+Pj4gc3RyaW5nLiBU aGlzIHBhdGNoIGVuYWJsZSBjbWRsaW5lIGZsb3cgcGFyc2UgSEVYIG51bWJlciwgaW4gb3JkZXIg dG8NCj4gPj4+IG5vdCB1c2luZyBzdHJpbmcgd2hpY2ggcGFzcyBBU0lDIG51bWJlci4NCj4gPj4+ DQo+ID4+PiBGaXhlczogZjRkNjIzZjk2MTE5ICgiYXBwL3Rlc3RwbWQ6IGZpeCBtaXNzaW5nIFJT UyBmaWVsZHMgaW4gZmxvdw0KPiA+Pj4gYWN0aW9uIikNCj4gPj4+IENjOiBzdGFibGVAZHBkay5v cmcNCj4gPj4+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBXZWkgWmhhbyA8d2VpLnpoYW8xQGludGVs LmNvbT4NCj4gPj4+IFRlc3RlZC1ieTogUGVuZyBZdWFuIDx5dWFuLnBlbmdAaW50ZWwuY29tPg0K PiA+Pg0KPiA+PiA8Li4uPg0KPiA+Pg0KPiA+Pj4gQEAgLTQ0NzUsNiArNDQ4NiwxMzggQEAgcGFy c2Vfc3RyaW5nKHN0cnVjdCBjb250ZXh0ICpjdHgsIGNvbnN0DQo+ID4+PiBzdHJ1Y3QNCj4gPj4g dG9rZW4gKnRva2VuLA0KPiA+Pj4gIAlyZXR1cm4gLTE7DQo+ID4+PiAgfQ0KPiA+Pj4NCj4gPj4+ ICtzdGF0aWMgdWludDMyX3QNCj4gPj4+ICtnZXRfaGV4X3ZhbChjaGFyIGMpDQo+ID4+PiArew0K PiA+Pj4gKwlzd2l0Y2ggKGMpIHsNCj4gPj4+ICsJY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcy JzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzoNCj4gPj4+ICsJY2FzZSAnNic6IGNhc2Ug JzcnOiBjYXNlICc4JzogY2FzZSAnOSc6DQo+ID4+PiArCQlyZXR1cm4gYyAtICcwJzsNCj4gPj4+ ICsJY2FzZSAnQSc6IGNhc2UgJ0InOiBjYXNlICdDJzogY2FzZSAnRCc6IGNhc2UgJ0UnOiBjYXNl ICdGJzoNCj4gPj4+ICsJCXJldHVybiBjIC0gJ0EnICsgMTA7DQo+ID4+PiArCWNhc2UgJ2EnOiBj YXNlICdiJzogY2FzZSAnYyc6IGNhc2UgJ2QnOiBjYXNlICdlJzogY2FzZSAnZic6DQo+ID4+PiAr CQlyZXR1cm4gYyAtICdhJyArIDEwOw0KPiA+Pj4gKwlkZWZhdWx0Og0KPiA+Pj4gKwkJcmV0dXJu IDA7DQo+ID4+PiArCX0NCj4gPj4+ICt9DQo+ID4+PiArDQo+ID4+PiArc3RhdGljIGludA0KPiA+ Pj4gK3BhcnNlX2hleF9zdHJpbmcoY29uc3QgY2hhciAqc3JjLCB1aW50OF90ICpkc3QsIHVpbnQz Ml90ICpzaXplKSB7DQo+ID4+PiArCWNvbnN0IGNoYXIgKmM7DQo+ID4+PiArCXVpbnQzMl90IGk7 DQo+ID4+PiArDQo+ID4+PiArCS8qIENoZWNrIGlucHV0IHBhcmFtZXRlcnMgKi8NCj4gPj4+ICsJ aWYgKChzcmMgPT0gTlVMTCkgfHwNCj4gPj4+ICsJCShkc3QgPT0gTlVMTCkgfHwNCj4gPj4+ICsJ CShzaXplID09IE5VTEwpIHx8DQo+ID4+PiArCQkoKnNpemUgPT0gMCkpDQo+ID4+PiArCQlyZXR1 cm4gLTE7DQo+ID4+PiArCWlmICgoKnNpemUgJiAxKSAhPSAwKQ0KPiA+Pj4gKwkJcmV0dXJuIC0x Ow0KPiA+Pj4gKw0KPiA+Pj4gKwlmb3IgKGMgPSBzcmMsIGkgPSAwOyBpIDwgKnNpemU7IGMrKywg aSsrKSB7DQo+ID4+PiArCQlpZiAoaXN4ZGlnaXQoKmMpKQ0KPiA+Pj4gKwkJCWNvbnRpbnVlOw0K PiA+Pj4gKwkJZWxzZQ0KPiA+Pj4gKwkJCXJldHVybiAtMTsNCj4gPj4+ICsJfQ0KPiA+Pj4gKw0K PiA+Pj4gKwkqc2l6ZSA9ICpzaXplIC8gMjsNCj4gPj4+ICsNCj4gPj4+ICsJLyogQ29udmVydCBj aGFycyB0byBieXRlcyAqLw0KPiA+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgKnNpemU7IGkrKykNCj4g Pj4+ICsJCWRzdFtpXSA9IGdldF9oZXhfdmFsKHNyY1syICogaV0pICogMTYgKw0KPiA+Pj4gKwkJ CWdldF9oZXhfdmFsKHNyY1syICogaSArIDFdKTsNCj4gPj4+ICsNCj4gPj4+ICsJcmV0dXJuIDA7 DQo+ID4+PiArfQ0KPiA+Pg0KPiA+PiBJIGNhbiBzZWUgdGhpcyBoYXMgYmVlbiBkaXNjdXNzZWQg YWxyZWFkeSBidXQgd2hhdCB3b3VsZCB5b3UgdGhpbmsNCj4gPj4gdXBkYXRpbmcgdGhlICdwYXJz ZV9oZXhfc3RyaW5nJyBzb21ldGhpbmcgbGlrZSBmb2xsb3dpbmcsIGl0IGlzIGxlc3MgY29kZSB0 bw0KPiBtYWludGFpbjoNCj4gPj4NCj4gPj4gc3RhdGljIGludA0KPiA+PiBwYXJzZV9oZXhfc3Ry aW5nKGNvbnN0IGNoYXIgKnNyYywgdWludDhfdCAqZHN0LCB1aW50MzJfdCAqc2l6ZSkgew0KPiA+ PiAgIGludCBsZW47DQo+ID4+ICAgaW50IGkNCj4gPj4gICBmb3IgKGkgPSAwLCBsZW4gPSAwOyBp IDwgKnNpemU7IGkgKz0gMikgew0KPiA+PiAgICAgY2hhciB0bXBbM107DQo+ID4+ICAgICBzbnBy aW50Zih0bXAsIDMsIHNyYyArIGkpOw0KPiA+PiAgICAgZHN0W2xlbisrXSA9IHN0cnRvdWwodG1w LCBOVUxMLCAxNik7DQo+ID4+ICAgfQ0KPiA+PiAgIGRzdFtsZW5dID0gMDsNCj4gPj4gICAqc2l6 ZSA9IGxlbjsNCj4gPj4gICByZXR1cm4gMDsNCj4gPj4gfQ0KPiA+Pg0KPiA+PiAoaW5kZWVkIHdp dGggYmV0dGVyIGVycm9yIGNoZWNraW5nIG9uIHN0cnRvdWwgOykgKQ0KPiA+DQo+ID4NCj4gPiBX aHkgZGVsZXRlIHRoZXNlIGNoZWNrIGZyb20gcGFyc2VfaGV4X3N0cmluZygpPw0KPiANCj4gVGhl IHBvaW50IGlzIHVzaW5nICdzdHJ0b3VsJyBpbnN0ZWFkIG9mIHlvdXIgZnVuY3Rpb25zLCBzbyB0 aGF0IHlvdSB3b24ndCBuZWVkDQo+ICdnZXRfaGV4X3ZhbCgpJyBhdCBhbGwsIG9yIHdvbid0IG5l ZWQgJ2lzeGRpZ2l0KCknIGJlY2F1c2UgJ3N0cnRvdWwnIHdpbGwgY2hlY2sgaXQsDQo+IHdvbid0 IG5lZWQgc2l6ZSBzaG91bGQgYmUgbXVsdGlwbHkgb2YgdHdvIHJlc3RyaWN0aW9uICcoKnNpemUg JiAxKScgYmVjYXVzZSBvZg0KPiBpbXBsZW1lbnRhdGlvbiBjaGFuZ2UuIFByb2JhYmx5IHlvdSB3 aWxsIG5lZWQgTlVMTCBjaGVja3MsIGJ1dCBhZ2FpbiBwb2ludA0KPiBpcyB3aHkgbm90IHVzaW5n ICdzdHJ0b3VsJyBpbnN0ZWFkIG9mIHdyaXRpbmcgeW91ciB2ZXJzaW9uIG9mIGl0Pw0KDQpZZXMs IHdlIGNhbiB1c2UgJ3N0cnRvdWwnICwgYnV0IG15IHBvaW50IGlzIHRoYXQgIEkgdGhpbmsgd2Ug bmVlZCB0aGVzZSBjaGVjayBjb2RlIGV2ZW4gIGlmIHdlIHVzZSB0aGUgY29kZSAnc3RydG91bCcg Lg0KaXN4ZGlnaXQoKmMpKSBpcyBuZWVkIGJlY2F1c2UgICpjIG1heSBiZSBzcmluZyAiMHhyZ2gi IHdoaWNoIGlzIG5vdCBoZXguDQpJZiB3ZSB1c2Ugc3RydG91bCAgd2lsbCByZXR1cm4gMCBmb3Ig dGhhdCAsd2UgY2FuIG5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVycm9yIG9yIGlucHV0IGlzIHpl cm8uICANCicoKnNpemUgJiAxKSBjYW4gYmUgZGVsZXRlLCBJIGFncmVlLg0KDQoJLyogQ2hlY2sg aW5wdXQgcGFyYW1ldGVycyAqLw0KCWlmICgoc3JjID09IE5VTEwpIHx8DQoJKGRzdCA9PSBOVUxM KSB8fA0KCQkoc2l6ZSA9PSBOVUxMKSB8fA0KCQkoKnNpemUgPT0gMCkpDQoJCXJldHVybiAtMTsN Cglmb3IgKGMgPSBzcmMsIGkgPSAwOyBpIDwgKnNpemU7IGMrKywgaSsrKSB7DQoJCWlmIChpc3hk aWdpdCgqYykpDQoJCQljb250aW51ZTsNCgkJZWxzZQ0KCQkJcmV0dXJuIC0xOw0KCX0NCg0KDQo+ ID4NCj4gPiAJLyogQ2hlY2sgaW5wdXQgcGFyYW1ldGVycyAqLw0KPiA+IAlpZiAoKHNyYyA9PSBO VUxMKSB8fA0KPiA+IAkoZHN0ID09IE5VTEwpIHx8DQo+ID4gCQkoc2l6ZSA9PSBOVUxMKSB8fA0K PiA+IAkJKCpzaXplID09IDApKQ0KPiA+IAkJcmV0dXJuIC0xOw0KPiA+IAlpZiAoKCpzaXplICYg MSkgIT0gMCkNCj4gPiAJCXJldHVybiAtMTsNCj4gPiAJZm9yIChjID0gc3JjLCBpID0gMDsgaSA8 ICpzaXplOyBjKyssIGkrKykgew0KPiA+IAkJaWYgKGlzeGRpZ2l0KCpjKSkNCj4gPiAJCQljb250 aW51ZTsNCj4gPiAJCWVsc2UNCj4gPiAJCQlyZXR1cm4gLTE7DQo+ID4gCX0NCj4gPg0KPiA+DQo+ ID4NCj4gPj4NCj4gPj4gPC4uLj4NCj4gPj4NCj4gPj4+ICsJLyogT3V0cHV0IGJ1ZmZlciBpcyBu b3QgbmVjZXNzYXJpbHkgTlVMLXRlcm1pbmF0ZWQuICovDQo+ID4+PiArCW1lbWNweShidWYsIGhl eF90bXAsIGhleGxlbik7DQo+ID4+PiArCW1lbXNldCgodWludDhfdCAqKWJ1ZiArIGxlbiwgMHgw MCwgc2l6ZSAtIGhleGxlbik7DQo+ID4+DQo+ID4+IENhbid0IHRoaXMgb3ZlcmZsb3cgdGhlICdi dWYnPyBzaW5jZSAibGVuID0gMiAqIGhleGxlbiINCj4gPj4gSSBndWVzcyBpbnRlbnRpb24gaXMg ImJ1ZiArIGhleGxlbiINCg0K