From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2C506A055D; Mon, 1 Mar 2021 08:20:28 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id ACA2F40684; Mon, 1 Mar 2021 08:20:27 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id 2FFD84014E for ; Mon, 1 Mar 2021 08:20:26 +0100 (CET) X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Date: Mon, 1 Mar 2021 08:20:21 +0100 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35C61635@smartserver.smartshare.dk> In-Reply-To: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [dpdk-dev] [PATCH] [RFC, v2]: adds support PPS(packet per second) on meter Thread-Index: AQHW8rhPP7jTAVlP/EirmjGX12+Hhqo9YSUAgBbeOYCAEOuXgIAAVwpQgAkqKuCAAETS0A== References: <20210125010235.1768333-2-lizh@nvidia.com> <20210125012023.1769769-1-lizh@nvidia.com> <20210125012023.1769769-2-lizh@nvidia.com> <8eb6bf7a-f317-68e0-2cdc-e0b7d675a8f1@intel.com> <98CBD80474FA8B44BF855DF32C47DC35C615E0@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35C61614@smartserver.smartshare.dk> From: =?UTF-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Li Zhang" , "Ferruh Yigit" , "Dekel Peled" , "Ori Kam" , "Slava Ovsiienko" , "Matan Azrad" , "Dumitrescu, Cristian" Cc: , "NBU-Contact-Thomas Monjalon" , "Raslan Darawsheh" Subject: Re: [dpdk-dev] [PATCH] [RFC, v2]: adds support PPS(packet per second) on meter X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9mIExp IFpoYW5nDQo+IFNlbnQ6IE1vbmRheSwgTWFyY2ggMSwgMjAyMSA0OjE2IEFNDQo+IA0KPiBIaSBN b3J0ZW4sDQo+IA0KPiBUaGFuayB5b3UgZm9yIHlvdXIgY29tbWVudHMuDQo+IEl0IGlzIHBhY2tl dCBjb3VudCBpbnN0ZWFkIG9mIGZyYW1lcyBjb3VudC4NCj4gU28gNEsgVENQIHBhY2tldCBzaG91 bGQgYmUgaGFuZGxlIGFzIG9uZSBpbnN0ZWFkIG9mIDMgRXRoZXJuZXQgRnJhbWVzLg0KPiANCj4g V2Ugd2lsbCB1cGRhdGUgdGhlIHN0cnVjdCBhcyBiZWxvdzoNCj4gZW51bSBydGVfbXRyX2FsZ29y aXRobSB7DQo+IC4uLi4uLg0KPiAJLyoqIFNpbmdsZSBSYXRlIFRocmVlIENvbG9yIE1hcmtlciwg UGFja2V0IGJhc2VkIChzclRDTXApLg0KPiAJICogLSAtIHNpbWlsYXIgdG8gSUVURiBSRkMgMjY5 NyBidXQgcmF0ZSBpcyBwYWNrZXQgcGVyIHNlY29uZC4NCj4gCSAqLw0KPiAJUlRFX01UUl9TUlRD TVAsDQo+IH0NCj4gDQo+IHN0cnVjdCBydGVfbXRyX21ldGVyX3Byb2ZpbGUgew0KPiAuLi4uLi4N Cj4gCQkvKiogSXRlbXMgb25seSB2YWxpZCB3aGVuICphbGcqIGlzIHNldCB0byBzclRDTXAuICov DQo+IAkJc3RydWN0IHsNCj4gCQkJLyoqIENvbW1pdHRlZCBJbmZvcm1hdGlvbiBSYXRlIChDSVIp DQo+IAkJCSAqIChwYWNrZXRzL3NlY29uZCkuDQo+IAkJCSAqLw0KPiAJCQl1aW50NjRfdCBjaXI7 DQo+IA0KPiAJCQkvKiogQ29tbWl0dGVkIEJ1cnN0IFNpemUgKENCUykgKHBhY2tldHMpLiAqLw0K PiAJCQl1aW50NjRfdCBjYnM7DQo+IA0KPiAJCQkvKiogRXhjZXNzIEJ1cnN0IFNpemUgKEVCUykg KHBhY2tldHMpLiAqLw0KPiAJCQl1aW50NjRfdCBlYnM7DQo+IAkJfSBzcnRjbXA7DQo+IH0NCj4g DQo+IFJlZ2FyZHMsDQo+IExpIFpoYW5nDQoNCkxvb2tzIGdvb2QuDQoNCkFja2VkLUJ5OiBNb3J0 ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KDQoNCj4gPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IGRldiA8ZGV2LWJvdW5jZXNAZHBkay5vcmc+IE9u IEJlaGFsZiBPZiBNb3J0ZW4gQnI/cnVwDQo+ID4gU2VudDogVHVlc2RheSwgRmVicnVhcnkgMjMs IDIwMjEgNDoyNSBQTQ0KPiA+IFRvOiBMaSBaaGFuZyA8bGl6aEBudmlkaWEuY29tPjsgRmVycnVo IFlpZ2l0DQo+IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsgRGVrZWwNCj4gPiBQZWxlZCA8ZGVr ZWxwQG52aWRpYS5jb20+OyBPcmkgS2FtIDxvcmlrYUBudmlkaWEuY29tPjsgU2xhdmENCj4gT3Zz aWllbmtvDQo+ID4gPHZpYWNoZXNsYXZvQG52aWRpYS5jb20+OyBNYXRhbiBBenJhZCA8bWF0YW5A bnZpZGlhLmNvbT47IER1bWl0cmVzY3UsDQo+ID4gQ3Jpc3RpYW4gPGNyaXN0aWFuLmR1bWl0cmVz Y3VAaW50ZWwuY29tPg0KPiA+IENjOiBkZXZAZHBkay5vcmc7IE5CVS1Db250YWN0LVRob21hcyBN b25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47DQo+ID4gUmFzbGFuIERhcmF3c2hlaCA8cmFz bGFuZEBudmlkaWEuY29tPg0KPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSF0gW1JG QywgdjJdOiBhZGRzIHN1cHBvcnQgUFBTKHBhY2tldA0KPiBwZXIgc2Vjb25kKQ0KPiA+IG9uIG1l dGVyDQo+ID4NCj4gPiA+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBP biBCZWhhbGYgT2YgTGkgWmhhbmcNCj4gPiA+IFNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDIzLCAy MDIxIDM6MDcgQU0NCj4gPiA+DQo+ID4gPiBUaGFua3MgZm9yIHlvdXIgY29tbWVudHMuDQo+ID4g PiBXZSBjaGFuZ2VkIHRoZSBzdHJ1Y3QgYXMgYmVsb3c6DQo+ID4gPiBzdHJ1Y3QgcnRlX210cl9t ZXRlcl9wcm9maWxlIHsNCj4gPiA+ICAuLi4uLi4NCj4gPiA+IAkJLyoqIEl0ZW1zIG9ubHkgdmFs aWQgd2hlbiBhbGcgaXMgc2V0IHRvIHNwclRDTS4gKi8NCj4gPiA+IAkJc3RydWN0IHsNCj4gPiA+ IAkJCS8qKiBDb21taXR0ZWQgSW5mb3JtYXRpb24gUGFja2V0IFJhdGUgKENJUFIpLiAqLw0KPiA+ ID4gCQkJdWludDY0X3QgY2lwcjsNCj4gPiA+DQo+ID4gPiAJCQkvKiogQ29tbWl0dGVkIFBhY2tl dCBCdXJzdCBTaXplIChDUEJTKS4gKi8NCj4gPiA+IAkJCXVpbnQ2NF90IGNwYnM7DQo+ID4gPg0K PiA+ID4gCQkJLyoqIEV4Y2VzcyBQYWNrZXQgQnVyc3QgU2l6ZSAoRVBCUykuICovDQo+ID4gPiAJ CQl1aW50NjRfdCBlcGJzOw0KPiA+ID4gCQl9IHNwcnRjbTsNCj4gPiA+IH0NCj4gPg0KPiA+IFRo YXQgaXMgY2VydGFpbmx5IG5vdCBhbiBpbXByb3ZlbWVudCEgUGxlYXNlIHN0aWNrIHdpdGggdGhl IGJyb2FkbHkNCj4gYWNjZXB0ZWQNCj4gPiBpbmR1c3RyeSBzdGFuZGFyZCBuYW1lcyAoQ0lSLCBD QlMsIEVCUywgZXRjLikuIE5ld2x5IGludmVudGVkIG5hbWVzDQo+IGxpa2UgQ0lQUg0KPiA+IHdp bGwgb25seSBjYXVzZSBjb25mdXNpb24uIFBsZWFzZSBub3RlIHRoYXQgQ0lSLCBDQlMsIEVCUyBk b24ndCBzYXkNCj4gYW55dGhpbmcNCj4gPiBhYm91dCB0aGVpciB1bml0czsgaXQgY291bGQgYmUg Ynl0ZXMsIHBhY2tldHMsIGNlbGxzLCBmcmFtZXMsDQo+IG1lc3NhZ2VzIG9yDQo+ID4gYW55dGhp bmcgZWxzZS4gU28gaXQgaXMgcGVyZmVjdGx5IG5hdHVyYWwgdXNpbmcgdGhlIHNhbWUgbmFtZXMg Zm9yDQo+IHBhY2tldHMNCj4gPiBpbnN0ZWFkIG9mIGJ5dGVzLg0KPiA+DQo+ID4gSSBwcm9wb3Nl IHRoZSBmb2xsb3dpbmcgbW9kaWZpY2F0aW9ucyBpbnN0ZWFkLg0KPiA+DQo+ID4gRm9yIHRoZSBh bGdvcml0aG0sIGtlZXAgdGhlICJTaW5nbGUgUmF0ZSBUaHJlZSBDb2xvciBNYXJrZXIiIG5hbWUN Cj4gbWVudGlvbmVkDQo+ID4gaW4gdGhlIFJGQ3MsIGJ1dCBpbmRpY2F0ZSB0aGF0IHRoZSB2YXJp YW50IGlzIHBhY2tldCBiYXNlZDoNCj4gPg0KPiA+IAkvKiogU2luZ2xlIFJhdGUgVGhyZWUgQ29s b3IgTWFya2VyLCBQYWNrZXQgYmFzZWQgKHNyVENNcCkuICovDQo+ID4gCVJURV9NVFJfU1JUQ01Q LA0KPiA+DQo+ID4gT3IgaWYgeW91IHByZWZlciB0aGUgcGFja2V0IGJhc2VkIGluZGljYXRvciBh dCB0aGUgZnJvbnQgaW5zdGVhZDoNCj4gPg0KPiA+IAkvKiogUGFja2V0IGJhc2VkIFNpbmdsZSBS YXRlIFRocmVlIENvbG9yIE1hcmtlciAocHNyVENNKS4gKi8NCj4gPiAJUlRFX01UUl9QU1JUQ00s DQo+ID4NCj4gPiBBbmQgZm9yIHRoZSBtZXRlciBwcm9maWxlLCBrZWVwIHRoZSBpbmR1c3RyeSBz dGFuZGFyZCBuYW1lcywgYnV0DQo+IHVwZGF0ZSB0aGUNCj4gPiBkZXNjcmlwdGlvbnM6DQo+ID4N Cj4gPiAgCQkvKiogSXRlbXMgb25seSB2YWxpZCB3aGVuICphbGcqIGlzIHNldCB0byBzclRDTXAu ICovDQo+ID4gIAkJc3RydWN0IHsNCj4gPiAgCQkJLyoqIENvbW1pdHRlZCBJbmZvcm1hdGlvbiBS YXRlIChDSVIpDQo+ID4gKHBhY2tldHMvc2Vjb25kKS4gKi8NCj4gPiAgCQkJdWludDY0X3QgY2ly Ow0KPiA+DQo+ID4gIAkJCS8qKiBDb21taXR0ZWQgQnVyc3QgU2l6ZSAoQ0JTKSAocGFja2V0cyku ICovDQo+ID4gIAkJCXVpbnQ2NF90IGNiczsNCj4gPg0KPiA+ICAJCQkvKiogRXhjZXNzIEJ1cnN0 IFNpemUgKEVCUykgKHBhY2tldHMpLiAqLw0KPiA+ICAJCQl1aW50NjRfdCBlYnM7DQo+ID4gIAkJ fSBzcnRjbXA7DQo+ID4NCj4gPg0KPiA+IENvbWUgdG8gdGhpbmsgb2YgaXQ6IElzIHRoZSB1bml0 IHBhY2tldHMsIG9yIGlzIGl0IGFjdHVhbGx5IEV0aGVybmV0DQo+IGZyYW1lcz8gSW4NCj4gPiBv dGhlciB3b3JkczogRG9lcyBhIDQgS0IgVENQIHBhY2tldCB0aGF0IHRoZSBOSUMncyBvZmZsb2Fk IGZ1bmN0aW9uDQo+IGNob3BzIHVwDQo+ID4gaW50byB0aHJlZSBFdGhlcm5ldCBmcmFtZXMgY291 bnQgYXMgb25lIG9yIHRocmVlIGluIHRoaXMgYWxnb3JpdGhtPw0KPiA+DQo+ID4NCj4gPiBNZWQg dmVubGlnIGhpbHNlbiAvIGtpbmQgcmVnYXJkcw0KPiA+IC0gTW9ydGVuIEJyw7hydXANCj4gPg0K PiA+ID4NCj4gPiA+IFJlZ2FyZHMsDQo+ID4gPiBMaSBaaGFuZw0KPiA+ID4gPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiBGcm9tOiBkZXYgPGRldi1ib3VuY2VzQGRwZGsub3Jn PiBPbiBCZWhhbGYgT2YgTW9ydGVuIEJyP3J1cA0KPiA+ID4gPiBTZW50OiBGcmlkYXksIEZlYnJ1 YXJ5IDEyLCAyMDIxIDM6NDEgUE0NCj4gPiA+ID4gVG86IEZlcnJ1aCBZaWdpdCA8ZmVycnVoLnlp Z2l0QGludGVsLmNvbT47IExpIFpoYW5nDQo+ID4gPiA8bGl6aEBudmlkaWEuY29tPjsgRGVrZWwN Cj4gPiA+ID4gUGVsZWQgPGRla2VscEBudmlkaWEuY29tPjsgT3JpIEthbSA8b3Jpa2FAbnZpZGlh LmNvbT47IFNsYXZhDQo+ID4gPiBPdnNpaWVua28NCj4gPiA+ID4gPHZpYWNoZXNsYXZvQG52aWRp YS5jb20+OyBNYXRhbiBBenJhZCA8bWF0YW5AbnZpZGlhLmNvbT47DQo+ID4gPiA+IER1bWl0cmVz Y3UsIENyaXN0aWFuIDxjcmlzdGlhbi5kdW1pdHJlc2N1QGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6 IGRldkBkcGRrLm9yZzsgTkJVLUNvbnRhY3QtVGhvbWFzIE1vbmphbG9uDQo+ID4gPHRob21hc0Bt b25qYWxvbi5uZXQ+Ow0KPiA+ID4gPiBSYXNsYW4gRGFyYXdzaGVoIDxyYXNsYW5kQG52aWRpYS5j b20+DQo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSF0gW1JGQywgdjJdOiBh ZGRzIHN1cHBvcnQNCj4gUFBTKHBhY2tldA0KPiA+ID4gcGVyIHNlY29uZCkNCj4gPiA+ID4gb24g bWV0ZXINCj4gPiA+ID4NCj4gPiA+ID4gPiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0Bk cGRrLm9yZ10gT24gQmVoYWxmIE9mIEZlcnJ1aA0KPiBZaWdpdA0KPiA+ID4gPiA+IFNlbnQ6IFRo dXJzZGF5LCBKYW51YXJ5IDI4LCAyMDIxIDc6MjggUE0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE9u IDEvMjUvMjAyMSAxOjIwIEFNLCBMaSBaaGFuZyB3cm90ZToNCj4gPiA+ID4gPiA+IEN1cnJlbnRs eSB0aGUgZmxvdyBNZXRlciBhbGdvcml0aG1zIGluIHJ0ZV9mbG93IG9ubHkgc3VwcG9ydHMNCj4g PiA+IGJ5dGVzDQo+ID4gPiA+ID4gPiBwZXIgc2Vjb25kKEJQUykuDQo+ID4gPiA+ID4gPiBTdWNo IGFzIFNpbmdsZSBSYXRlIFRocmVlIENvbG9yIE1hcmtlciAoc3JUQ00gcmZjMjY5NykgVGhpcw0K PiBSRkMNCj4gPiA+IGFkZHMNCj4gPiA+ID4gPiA+IHRoZSBwYWNrZXQgcGVyIHNlY29uZCBkZWZp bml0aW9uIGluIE1ldGVyIGFsZ29yaXRobXMNCj4gc3RydWN0dXJlLA0KPiA+ID4gdG8NCj4gPiA+ ID4gPiA+IHN1cHBvcnQgdGhlIHJ0ZV9tdHIgQVBJcyB3aXRoIHR5cGUgc3JUQ00gcHBzIG1vZGUu DQo+ID4gPiA+ID4gPiBUaGUgYmVsb3cgc3RydWN0dXJlIHdpbGwgYmUgZXh0ZW5kZWQ6DQo+ID4g PiA+ID4gPiBydGVfbXRyX2FsZ29yaXRobQ0KPiA+ID4gPiA+ID4gcnRlX210cl9tZXRlcl9wcm9m aWxlDQo+ID4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBMaSBaaGFuZyA8bGl6aEBudmlkaWEuY29t Pg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gY2MnZWQgQ3Jpc3RpYW4gZm9yIHJldmlldy9jb21tZW50 Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiA+ICAgbGliL2xpYnJ0ZV9l dGhkZXYvcnRlX210ci5oIHwgMjgNCj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ ID4gPiA+ID4gICAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKQ0KPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2V0aGRldi9ydGVfbXRyLmgNCj4g PiA+ID4gPiBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9tdHIuaA0KPiA+ID4gPiA+ID4gaW5kZXgg OTE2YTA5YzVjMy4uM2U4ODkwNGZhZiAxMDA2NDQNCj4gPiA+ID4gPiA+IC0tLSBhL2xpYi9saWJy dGVfZXRoZGV2L3J0ZV9tdHIuaA0KPiA+ID4gPiA+ID4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYv cnRlX210ci5oDQo+ID4gPiA+ID4gPiBAQCAtMTE5LDYgKzExOSw5IEBAIGVudW0gcnRlX210cl9h bGdvcml0aG0gew0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAgCS8qKiBUd28gUmF0ZSBUaHJl ZSBDb2xvciBNYXJrZXIgKHRyVENNKSAtIElFVEYgUkZDDQo+IDQxMTUuICovDQo+ID4gPiA+ID4g PiAgIAlSVEVfTVRSX1RSVENNX1JGQzQxMTUsDQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr CS8qKiBTaW5nbGUgUmF0ZSBUaHJlZSBDb2xvciBNYXJrZXIgKHNyVENNKSBpbiBQYWNrZXQgcGVy DQo+ID4gPiBzZWNvbmQNCj4gPiA+ID4gPiBtb2RlICovDQo+ID4gPiA+ID4gPiArCVJURV9NVFJf U1JUQ01fUFBTLA0KPiA+ID4gPiA+ID4gICB9Ow0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICAg LyoqDQo+ID4gPiA+ID4gPiBAQCAtMTcxLDYgKzE3NCwxOCBAQCBzdHJ1Y3QgcnRlX210cl9tZXRl cl9wcm9maWxlIHsNCj4gPiA+ID4gPiA+ICAgCQkJLyoqIEV4Y2VzcyBCdXJzdCBTaXplIChFQlMp IChieXRlcykuICovDQo+ID4gPiA+ID4gPiAgIAkJCXVpbnQ2NF90IGViczsNCj4gPiA+ID4gPiA+ ICAgCQl9IHRydGNtX3JmYzQxMTU7DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArCQkvKiog SXRlbXMgb25seSB2YWxpZCB3aGVuICphbGcqIGlzIHNldCB0byBzclRDTSAtDQo+ID4gPiBQUFMu ICovDQo+ID4gPiA+ID4gPiArCQlzdHJ1Y3Qgew0KPiA+ID4gPiA+ID4gKwkJCS8qKiBDb21taXR0 ZWQgSW5mb3JtYXRpb24gUmF0ZQ0KPiA+ID4gPiAoQ0lSKShwYWNrZXRzL3NlY29uZCkuDQo+ID4g PiA+ID4gKi8NCj4gPiA+ID4gPiA+ICsJCQl1aW50NjRfdCBjaXI7DQo+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiArCQkJLyoqIENvbW1pdHRlZCBCdXJzdCBTaXplIChDQlMpIChieXRlcykuICov DQo+ID4gPiA+ID4gPiArCQkJdWludDY0X3QgY2JzOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gKwkJCS8qKiBFeGNlc3MgQnVyc3QgU2l6ZSAoRUJTKSAoYnl0ZXMpLiAqLw0KPiA+ID4gPiA+ ID4gKwkJCXVpbnQ2NF90IGViczsNCj4gPiA+ID4gPiA+ICsJCX0gc3J0Y21fcHBzOw0KPiA+ID4g Pg0KPiA+ID4gPiBJbiBQUFMgbW9kZSwgdGhlIGJ1cnN0IHNpemVzIChlYnMsIGVicykgbXVzdCBi ZSBwYWNrZXRzLCBub3QNCj4gYnl0ZXMuDQo+ID4gPiA+DQo+ID4gPiA+ID4gPiAgIAl9Ow0KPiA+ ID4gPiA+ID4gICB9Ow0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEBAIC0zMTcsNiArMzMyLDEz IEBAIHN0cnVjdCBydGVfbXRyX2NhcGFiaWxpdGllcyB7DQo+ID4gPiA+ID4gPiAgIAkgKi8NCj4g PiA+ID4gPiA+ICAgCXVpbnQzMl90IG1ldGVyX3RydGNtX3JmYzQxMTVfbl9tYXg7DQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gKwkvKiogTWF4aW11bSBudW1iZXIgb2YgTVRSIG9iamVjdHMgdGhh dCBjYW4gaGF2ZSB0aGVpcg0KPiA+IG1ldGVyDQo+ID4gPiA+ID4gY29uZmlndXJlZA0KPiA+ID4g PiA+ID4gKwkgKiB0byBydW4gdGhlIHNyVENNIHBhY2tldCBwZXIgc2Vjb25kIGFsZ29yaXRobS4g VGhlIHZhbHVlDQo+ID4gPiBvZiAwDQo+ID4gPiA+ID4gPiArCSAqIGluZGljYXRlcyB0aGlzIG1l dGVyaW5nIGFsZ29yaXRobSBpcyBub3Qgc3VwcG9ydGVkLg0KPiA+ID4gPiA+ID4gKwkgKiBUaGUg bWF4aW11bSB2YWx1ZSBpcyAqbl9tYXgqLg0KPiA+ID4gPiA+ID4gKwkgKi8NCj4gPiA+ID4gPiA+ ICsJdWludDMyX3QgbWV0ZXJfc3J0Y21fcHBzX25fbWF4Ow0KPiA+ID4gPiA+ID4gKw0KPiA+ID4g PiA+ID4gICAJLyoqIE1heGltdW0gdHJhZmZpYyByYXRlIHRoYXQgY2FuIGJlIG1ldGVyZWQgYnkg YQ0KPiBzaW5nbGUNCj4gPiA+IE1UUg0KPiA+ID4gPiA+IG9iamVjdC4gRm9yDQo+ID4gPiA+ID4g PiAgIAkgKiBzclRDTSBSRkMgMjY5NywgdGhpcyBpcyB0aGUgbWF4aW11bSBDSVIgcmF0ZS4gRm9y DQo+IHRyVENNDQo+ID4gPiBSRkMNCj4gPiA+ID4gPiAyNjk4LA0KPiA+ID4gPiA+ID4gICAJICog dGhpcyBpcyB0aGUgbWF4aW11bSBQSVIgcmF0ZS4gRm9yIHRyVENNIFJGQyA0MTE1LA0KPiB0aGlz DQo+ID4gPiBpcyB0aGUNCj4gPiA+ID4gPiBtYXhpbXVtDQo+ID4gPiA+ID4gPiBAQCAtMzQyLDYg KzM2NCwxMiBAQCBzdHJ1Y3QgcnRlX210cl9jYXBhYmlsaXRpZXMgew0KPiA+ID4gPiA+ID4gICAJ ICovDQo+ID4gPiA+ID4gPiAgIAlpbnQgY29sb3JfYXdhcmVfdHJ0Y21fcmZjNDExNV9zdXBwb3J0 ZWQ7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gKwkvKioNCj4gPiA+ID4gPiA+ICsJICogV2hl biBub24temVybywgaXQgaW5kaWNhdGVzIHRoYXQgY29sb3IgYXdhcmUgbW9kZSBpcw0KPiA+ID4g c3VwcG9ydGVkDQo+ID4gPiA+ID4gZm9yDQo+ID4gPiA+ID4gPiArCSAqIHRoZSBzclRDTSBwYWNr ZXQgcGVyIHNlY29uZCAgbWV0ZXJpbmcgYWxnb3JpdGhtLg0KPiA+ID4gPg0KPiA+ID4gPiBObyBu ZWVkIGZvciB0d28gc3BhY2VzIGJldHdlZW4gdGhlIHdvcmRzIHNlY29uZCBhbmQgbWV0ZXJpbmcu DQo+ID4gPiA+DQo+ID4gPiA+ID4gPiArCSAqLw0KPiA+ID4gPiA+ID4gKwlpbnQgY29sb3JfYXdh cmVfc3J0Y21fcHBzX3N1cHBvcnRlZDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAgCS8q KiBXaGVuIG5vbi16ZXJvLCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgcG9saWNlcg0KPiBwYWNrZXQN Cj4gPiA+IHJlY29sb3INCj4gPiA+ID4gPiBhY3Rpb25zDQo+ID4gPiA+ID4gPiAgIAkgKiBhcmUg c3VwcG9ydGVkLg0KPiA+ID4gPiA+ID4gICAJICogQHNlZSBlbnVtIHJ0ZV9tdHJfcG9saWNlcl9h Y3Rpb24NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCg0K