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 F0BCEA05D3 for ; Wed, 24 Apr 2019 07:15:56 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E25D51B4D5; Wed, 24 Apr 2019 07:15:55 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70047.outbound.protection.outlook.com [40.107.7.47]) by dpdk.org (Postfix) with ESMTP id D45C71B4BD for ; Wed, 24 Apr 2019 07:15:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6fec8FKUH4pVUxVElFQ1HyB/igNHF8BpNn9JnUcK+M0=; b=Tfb7doy/FmC/c5UZ/TXR+C1ZBTf2Ty0ey3MJdIQ/qjFSDHkrGcaAbazMIgyd55f6bqWgCp6vEbWD9PnDb0yIpJL2PV5CutyO5OjhKgK0vHg6T0cW9UQldz1k1sdmOsAP7nhYb6IivPKg+4Qcx+u1pjo7gFJmMv4WK06ystx8yWM= Received: from VE1PR08MB5149.eurprd08.prod.outlook.com (20.179.30.152) by VE1PR08MB4717.eurprd08.prod.outlook.com (10.255.115.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1813.17; Wed, 24 Apr 2019 05:15:51 +0000 Received: from VE1PR08MB5149.eurprd08.prod.outlook.com ([fe80::9b6:3403:4386:78]) by VE1PR08MB5149.eurprd08.prod.outlook.com ([fe80::9b6:3403:4386:78%2]) with mapi id 15.20.1813.017; Wed, 24 Apr 2019 05:15:51 +0000 From: Honnappa Nagarahalli To: Ray Kinsella , Bruce Richardson CC: "dev@dpdk.org" , Stephen Hemminger , "Ananyev, Konstantin" , "thomas@monjalon.net" , nd , nd Thread-Topic: [dpdk-dev] ABI and inline functions Thread-Index: AdT03C2s3ZB+VIuxS0mLCJ+6mgHcvgAHH6YAABZxZtABIwpPOQAfbhlw Date: Wed, 24 Apr 2019 05:15:51 +0000 Message-ID: References: <20190417083637.GB1890@bricha3-MOBL.ger.corp.intel.com> <20190418102811.GB1817@bricha3-MOBL.ger.corp.intel.com> <2ec4da50-d874-865a-6bcc-916ac676be39@ashroe.eu> In-Reply-To: <2ec4da50-d874-865a-6bcc-916ac676be39@ashroe.eu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Honnappa.Nagarahalli@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1d271628-8fca-4664-e8c4-08d6c873eb71 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR08MB4717; x-ms-traffictypediagnostic: VE1PR08MB4717: x-ld-processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr nodisclaimer: True x-microsoft-antispam-prvs: x-forefront-prvs: 00179089FD x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(366004)(346002)(376002)(136003)(39860400002)(52314003)(199004)(189003)(54906003)(7696005)(8676002)(476003)(33656002)(256004)(99286004)(7736002)(52536014)(6506007)(73956011)(76176011)(110136005)(305945005)(81156014)(76116006)(316002)(53546011)(102836004)(66476007)(64756008)(486006)(66946007)(97736004)(11346002)(26005)(186003)(71190400001)(71200400001)(74316002)(66556008)(66446008)(446003)(5660300002)(2906002)(6246003)(68736007)(6436002)(53936002)(3846002)(4326008)(14454004)(14444005)(9686003)(72206003)(478600001)(6116002)(229853002)(25786009)(55016002)(93886005)(8936002)(66066001)(81166006)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR08MB4717; H:VE1PR08MB5149.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: dv0TmVZd6jWmikShuT5FhDW4YFSWOjv9mYT7IseTBhM2hy8+DRjOtI5W4tdhKke3eM1wo1qCvx73n7velB64Kvzs7sI5KVEIHK7fiMqxRzxY4wnyzqiBw3d6gLiW6rhX37gCWn/vaZfZArZwDkdMbubUM/f0gdLq8cEsVPEN3dLj52AnxpQuBcVQZLRu5s8XUbF8lVp9XuQUc8LND4aJwTxGo0l5723f4LfIhdL64O4sGhn4K5Rr5u5o0KRAfccSxq2OVLFQ1iQxE3sE5qtOQ46L784pQjg6MhPSQSs4zkesMCeGp7LYW79MCAdvp52TNALSCE0kt9gWda/nspIUE+VRD06R1mwavluMEAS4KVxxmJjzd+E8Bs2MzQP3/D8zUJj9Vq6Ll03QlOSXM7oBYiOs+5smfaVDfKJnYgbLMro= Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1d271628-8fca-4664-e8c4-08d6c873eb71 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Apr 2019 05:15:51.5578 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4717 Subject: Re: [dpdk-dev] ABI and inline functions 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: <20190424051551.diuUkfbwAQ5gOjfDQUBnKiW7lHA5dQo5bTzJz1J8nXE@z> PiBPbiAxOC8wNC8yMDE5IDExOjI4LCBCcnVjZSBSaWNoYXJkc29uIHdyb3RlOg0KPiA+IE9uIFRo dSwgQXByIDE4LCAyMDE5IGF0IDA0OjM0OjUzQU0gKzAwMDAsIEhvbm5hcHBhIE5hZ2FyYWhhbGxp IHdyb3RlOg0KPiA+Pj4NCj4gPj4+IE9uIFdlZCwgQXByIDE3LCAyMDE5IGF0IDA1OjEyOjQzQU0g KzAwMDAsIEhvbm5hcHBhIE5hZ2FyYWhhbGxpDQo+IHdyb3RlOg0KPiA+Pj4+IEhlbGxvLA0KPiA+ Pj4+IAlUaGVyZSB3YXMgYSBjb252ZXJzYXRpb24gWzFdIGluIHRoZSBjb250ZXh0IG9mIFJDVSBs aWJyYXJ5LiBJDQo+ID4+Pj4gdGhvdWdodCBpdCBuZWVkcyBwYXJ0aWNpcGF0aW9uIGZyb20gYnJv YWRlciBhdWRpZW5jZS4gU3VtbWFyeSBmb3INCj4gPj4+PiB0aGUgY29udGV4dCAocGxlYXNlIGxv b2sgYXQgWzFdIGZvciBmdWxsIGRldGFpbHMpDQo+ID4+Pj4NCj4gPj4+DQo+ID4+PiBUaGFua3Mg Zm9yIGtpY2tpbmcgb2ZmIHRoaXMgZGlzY3Vzc2lvbg0KPiA+Pj4NCj4gPj4+PiAxKSBIb3cgZG8g d2UgcHJvdmlkZSBBQkkgY29tcGF0aWJpbGl0eSB3aGVuIHRoZSBjb2RlIGJhc2UgY29udGFpbnMN Cj4gPj4+IGlubGluZSBmdW5jdGlvbnM/IFVubGVzcyB3ZSBmcmVlemUgZGV2ZWxvcG1lbnQgaW4g dGhlc2UgaW5saW5lDQo+ID4+PiBmdW5jdGlvbnMgYW5kIGNvcnJlc3BvbmRpbmcgc3RydWN0dXJl cywgaXQgbWlnaHQgbm90IGJlIHBvc3NpYmxlIHRvIGNsYWltDQo+IEFCSSBjb21wYXRpYmlsaXR5 Lg0KPiA+Pj4gQXBwbGljYXRpb24gaGFzIHRvIGJlIHJlY29tcGlsZWQuDQo+ID4+Pg0KPiA+Pj4g SSBhZ3JlZSB0aGF0IGluIHNvbWUgY2FzZXMgdGhlIGFwcGxpY2F0aW9uICJtaWdodCIgbmVlZCB0 byBiZQ0KPiA+Pj4gcmVjb21waWxlZCwgYnV0IG9uIHRoZSBvdGhlciBoYW5kIEkgYWxzbyB0aGlu ayB0aGF0IHRoZXJlIGFyZSBtYW55DQo+ID4+PiBjYXNlcyB3aGVyZSBBQkkgZnVuY3Rpb24gdmVy c2lvbmluZyBjYW4gc3RpbGwgYmUgdXNlZCB0byBtaXRpZ2F0ZQ0KPiA+Pj4gdGhpbmdzLiBGb3Ig ZXhhbXBsZSwgaWYgd2UgdGhpbmsgb2YgYSBjb3VwbGUgb2YgdmFyaW91cyBzY2VuYXJpb3M6DQo+ ID4+Pg0KPiA+Pj4gMS4gSWYgZXZlcnl0aGluZyBpcyBpbmxpbmUgYW5kIHZhcmlhYmxlcyBhcmUg YWxsb2NhdGVkIGJ5IGFwcCwgZS5nLg0KPiA+Pj4gc3BpbmxvY2sgb24gc3RhY2ssIHRoZW4gdGhl cmUgaXMgbm8gaXNzdWUgYXMgZXZlcnl0aGluZyBpcw0KPiA+Pj4gYXBwbGljYXRpb24gY29udGFp bmVkLg0KPiA+PiBJZiB0aGVyZSBpcyBhIGJ1ZyBmaXggd2hpY2ggcmVxdWlyZXMgdGhlIHN0cnVj dHVyZSB0byBjaGFuZ2UsIHRoZSBhcHBsaWNhdGlvbg0KPiB3b3VsZCBuZWVkIHRvIHJlY29tcGls ZS4gSSBndWVzcyB5b3UgYXJlIHRhbGtpbmcgYWJvdXQgYSBzY2VuYXJpbyB3aGVuDQo+IG5vdGhp bmcgY2hhbmdlZCBpbiB0aGUgaW5saW5lIGZ1bmN0aW9uL3ZhcmlhYmxlcy4NCj4gPj4NCj4gPg0K PiA+IElmIHRoZSBhcHBsaWNhdGlvbiB3YW50cyB0aGUgYnVnZml4LCB0aGVuIHllcy4gSG93ZXZl ciwgaWYgdGhlIGFwcCBpcw0KPiA+IHVuYWZmZWN0ZWQgYnkgdGhlIGJ1ZywgdGhlbiBpdCBzaG91 bGQgaGF2ZSB0aGUgb3B0aW9uIG9mIHVwZGF0aW5nIERQREsNCj4gPiB3aXRob3V0IGEgcmVjb21w aWxlLg0KPiANCj4gSSB3b3VsZCBhbHNvIGltYWdpbmUgdGhhdCBzaG91bGQgYmUgYW4gZXh0cmVt ZWx5IHJhcmUgY2FzZSwgdGhhdCBhIGJ1Z2ZpeA0KPiB3b3VsZCByZXF1aXJlIGEgc3RydWN0dXJl IGNoYW5nZSAuLi4gcGVyaGFwcyBmb3IgYW4gYWxpZ25tZW50IGlzc3Vlcz8NCj4gDQo+ID4NCj4g Pj4+DQo+ID4+PiAyLiBJZiB0aGUgc2l0dWF0aW9uIGlzIGFzIGluICMxLCBidXQgdGhlIHN0cnVj dHVyZXMgaW4gcXVlc3Rpb24gYXJlDQo+ID4+PiBwYXNzZWQgdG8gbm9uLWlubGluZSBEUERLIGZ1 bmN0aW9ucy4gSW4gdGhpcyBjYXNlLCBhbnkgY2hhbmdlcyB0bw0KPiA+Pj4gdGhlIHN0cnVjdHVy ZXMgcmVxdWlyZSB0aG9zZSBmdW5jdGlvbnMgdGFraW5nIHRoZSBzdHJ1Y3R1cmVzIHRvIGJlDQo+ ID4+PiB2ZXJzaW9uZWQgZm9yIG9sZCBhbmQgbmV3IHN0cnVjdHVyZXMNCj4gPj4gSSB0aGluayB0 aGlzIGNhbiBnZXQgY29tcGxpY2F0ZWQgb24gdGhlIGlubGluZSBmdW5jdGlvbiBzaWRlLiBUaGUg YXBwbGljYXRpb24NCj4gYW5kIHRoZSBEUERLIGxpYnJhcnkgd2lsbCBlbmQgdXAgaGF2aW5nIGRp ZmZlcmVudCBpbmxpbmUgZnVuY3Rpb25zLiBUaGUNCj4gY2hhbmdlZCBpbmxpbmUgZnVuY3Rpb24g bmVlZHMgdG8gYmUgYXdhcmUgb2YgMiBzdHJ1Y3R1cmUgZm9ybWF0cyBvciB0aGUgaW5saW5lDQo+ IGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGR1cGxpY2F0ZWQgKG9uZSBmb3IgZWFjaCB2ZXJzaW9uIG9m IHRoZSBzdHJ1Y3R1cmUpLiBJDQo+IGd1ZXNzIHRoZXNlIGFyZSB0aGUgd29ya2Fyb3VuZHMgd2Ug aGF2ZSB0byBkby4NCj4gPj4NCj4gPiBObywgdGhlcmUgaXMgbmV2ZXIgYW55IG5lZWQgZm9yIHR3 byB2ZXJzaW9ucyBvZiB0aGUgaW5saW5lIGZ1bmN0aW9ucywNCj4gPiBvbmx5IHRoZSBuZXdlc3Qg dmVyc2lvbiBpcyBuZWVkZWQuIFRoaXMgaXMgYmVjYXVzZSBpbiB0aGUgY2FzZSBvZiBhDQo+ID4g bmV3bHkgY29tcGlsZWQgYXBwbGljYXRpb24gb25seSB0aGUgbmV3ZXN0IHZlcnNpb24gb2YgdGhl IG5vbi1pbmxpbmUNCj4gPiBmdW5jdGlvbnMgaXMgZXZlciB1c2VkLiBUaGUgb3RoZXIgb2xkZXIg dmVyc2lvbnMgYXJlIG9ubHkgdXNlZCBhdA0KPiA+IHJ1bnRpbWUgZm9yIGNvbXBhdGlsaWJpdHkg d2l0aCBwcmUtY29tcGlsZWQgYXBwcyB3aXRoIHRoZSBvbGRlciBpbmxpbmVzLg0KPiA+DQo+ID4+ Pg0KPiA+Pj4gMy4gSWYgaW5zdGVhZCB3ZSBoYXZlIHRoZSBjYXNlLCBsaWtlIGluIHJ0ZV9yaW5n LCB3aGVyZSB0aGUgZGF0YQ0KPiA+Pj4gc3RydWN0dXJlcyBhcmUgYWxsb2NhdGVkIHVzaW5nIGZ1 bmN0aW9ucywgYnV0IHRoZXkgYXJlIHVzZWQgdmlhDQo+ID4+PiBpbmxpbmVzIGluIHRoZSBhcHAu IEluIHRoaXMgY2FzZSB0aGUgY3JlYXRpb24gZnVuY3Rpb25zIChhbmQgYW55DQo+ID4+PiBvdGhl ciBmdW5jdGlvbiB1c2luZyB0aGUgc3RydWN0dXJlcykgbmVlZCB0byBiZSB2ZXJzaW9uZWQgc28g dGhhdA0KPiA+Pj4gdGhlIGFwcGxpY2F0aW9uIGdldHMgdGhlIGV4cGVjdGVkIHN0cnVjdHVyZSBi YWNrIGZyb20gdGhlIGNyZWF0aW9uLg0KPiA+PiBUaGUgbmV3IHN0cnVjdHVyZSBtZW1iZXJzIGhh dmUgdG8gYmUgYWRkZWQgc3VjaCB0aGF0IHRoZSBwcmV2aW91cw0KPiA+PiBsYXlvdXQgaXMgbm90 IGFmZmVjdGVkLiBFaXRoZXIgYWRkIGF0IHRoZSBlbmQgb3IgdXNlIHRoZSBnYXBzIHRoYXQNCj4g Pj4gYXJlIGxlZnQgYmVjYXVzZSBvZiBjYWNoZSBsaW5lIGFsaWdubWVudC4NCj4gPj4NCj4gPiBO b3QgbmVjZXNzYXJpbHkuIFRoZXJlIGlzIG5vdGhpbmcgdGhhdCByZXF1aXJlcyB0aGUgb2xkZXIg YW5kIG5ld2VyDQo+ID4gdmVyc2lvbnMgb2YgYSBmdW5jdGlvbiB0byB1c2UgdGhlIHNhbWUgc3Ry dWN0dXJlLiBXZSBjYW4gcmVuYW1lIHRoZQ0KPiA+IG9yaWdpbmFsIHN0cnVjdHVyZSB3aGVuIHZl cnNpb25pbmcgdGhlIG9sZCBmdW5jdGlvbiwgYW5kIHRoZW4gY3JlYXRlIGENCj4gPiBuZXcgc3Ry dWN0dXJlIHdpdGggdGhlIG9yaWdpbmFsIG5hbWUgZm9yIGxhdGVyIHJlY29tcGlsZWQgY29kZSB1 c2luZw0KPiA+IHRoZSBuZXdlc3QgQUJJcy4NCj4gPg0KPiA+Pj4NCj4gPj4+IEl0IG1pZ2h0IGJl IHVzZWZ1bCB0byB0aGluayBvZiB3aGF0IG90aGVyIHNjZW5hcmlvcyB3ZSBoYXZlIGFuZCB3aGF0 DQo+ID4+PiBvbmVzIGFyZSBsaWtlbHkgdG8gYmUgcHJvYmxlbWF0aWMsIGVzcGVjaWFsbHkgdGhv c2UgdGhhdCBjYW4ndCBiZQ0KPiA+Pj4gc29sdmVkIGJ5IGhhdmluZyBtdWx0aXBsZSBmdW5jdGlv biB2ZXJzaW9ucy4NCj4gPj4+DQo+ID4+Pj4gMikgRXZlcnkgZnVuY3Rpb24gdGhhdCBpcyBub3Qg aW4gdGhlIGRpcmVjdCBkYXRhcGF0aCAoZmFzdHBhdGg/KQ0KPiA+Pj4+IHNob3VsZCBub3QgYmUg aW5saW5lLiBFeGNlcHRpb25zIG9yIHRoaW5ncyBsaWtlIHJ4L3R4IGJ1cnN0LCByaW5nDQo+ID4+ Pj4gZW5xdWV1ZS9kZXF1ZXVlLCBhbmQgcGFja2V0IGFsbG9jL2ZyZWUgLSBTdGVwaGVuDQo+ID4+ Pg0KPiA+Pj4gQWdyZWUgd2l0aCB0aGlzLiBBbnl0aGluZyBub3QgZGF0YSBwYXRoIHNob3VsZCBu b3QgYmUgaW5saW5lLiBUaGUNCj4gPj4+IG5leHQNCj4gPj4gWWVzLCB2ZXJ5IGNsZWFyIG9uIHRo aXMuDQo+ID4+DQo+ID4+PiBxdWVzdGlvbiB0aGVuIGlzIGZvciBkYXRhIHBhdGggaXRlbXMgaG93 IHRvIGRldGVybWluZSB3aGV0aGVyIHRoZXkNCj4gPj4+IG5lZWQgdG8gYmUgaW5saW5lIG9yIG5v dC4gSW4gZ2VuZXJhbCBteSBydWxlLW9mLXRodW1iOg0KPiA+Pj4gKiBhbnl0aGluZyBkZWFsaW5n IHdpdGggYnVyc3RzIG9mIHBhY2tldHMgc2hvdWxkIG5vdCBiZSBpbmxpbmUNCj4gPj4+ICogYW55 dGhpbmcgd2hhdCB3b3JrcyB3aXRoIHNpbmdsZSBwYWNrZXQgYXQgYSB0aW1lIHNob3VsZCBiZSBp bmxpbmUNCj4gPj4+DQo+ID4+PiBUaGUgb25lIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUgaXMgY2Fz ZXMgd2hlcmUgd2UgaGF2ZSB0byBjb25zaWRlcg0KPiA+Pj4gImVtcHR5IHBvbGxpbmciIGFzIGEg bGlrZWx5IHVzZS1jYXNlLiBGb3IgZXhhbXBsZSwNCj4gPj4+IHJ0ZV9yaW5nX2RlcXVldWVfYnVy c3Qgd29ya3Mgd2l0aCBidXJzdHMgb2YgcGFja2V0cywgYnV0IHRoZXJlIGlzIGENCj4gPj4+IHZh bGlkIGFwcGxpY2F0aW9uIHVzZSBjYXNlIHdoZXJlIGEgdGhyZWFkIGNvdWxkIGJlIHBvbGxpbmcg YSBzZXQgb2YNCj4gPj4+IHJpbmdzIHdoZXJlIG9ubHkgYSBzbWFsbCBudW1iZXIgYXJlIGFjdHVh bGx5IGJ1c3kuIFJpZ2h0IG5vdywNCj4gPj4+IHBvbGxpbmcgYW4gZW1wdHkgcmluZyBvbmx5IGNv c3RzIGEgZmV3IGN5Y2xlcywgbWVhbmluZyB0aGF0IGl0J3MNCj4gPj4+IG5lZ2xpYmxlIHRvIGhh dmUgYSBmZXcgcG9sbHMgb2YgZW1wdHkgcmluZ3MgYmVmb3JlIHlvdSBnZXQgdG8gYSBidXN5DQo+ ID4+PiBvbmUuIEhhdmluZyB0aGF0IGZ1bmN0aW9uIG5vdC1pbmxpbmUgd2lsbCBjYXVzZSB0aGF0 IGNvc3QgdG8ganVtcA0KPiA+Pj4gc2lnbmlmaWNhbnRseSwgc28gY291bGQgY2F1c2UgcHJvYmxl bXMuIChUaGlzIGxlYWRzIHRvIHRoZSBpbnRlcmVzdGluZw0KPiBzY2VuYXJpbyB3aGVyZSByaW5n IGVucXVldWUgaXMgc2FmZSB0byB1bi1pbmxpbmUsIHdoaWxlIGRlcXVldWUgaXMgbm90KS4NCj4g Pj4gQSBnb29kIHdheSB0byB0aGluayBhYm91dCBpdCB3b3VsZCBiZSAtIHJhdGlvIG9mIGFtb3Vu dCBvZiB3b3JrIGRvbmUgaW4NCj4gdGhlIGZ1bmN0aW9uIHRvIGNvc3Qgb2YgZnVuY3Rpb24gY2Fs bC4NCj4gPj4NCj4gPg0KPiA+IFllcywgSSB3b3VsZCB0ZW5kIHRvIGFncmVlIGluIGdlbmVyYWwu ICBUaGUgb3RoZXIgdGhpbmcgaXMgdGhlDQo+ID4gZnJlcXVlbmN5IG9mIGNhbGxzLCBhbmQgLSBh cyBhbHJlYWR5IHN0YXRlZCAtIHdoZXRoZXIgaXQgdGFrZXMgYSBidXJzdA0KPiA+IG9mIG5vdC4g IEJlY2F1c2UgZXZlbiBpZiBpdCdzIGEgdHJpdmlhbCBmdW5jdGlvbiB0aGF0IHRha2VzIG9ubHkg MTANCj4gPiBjeWNsZXMgYW5kIHdlIHdhbnQgdG8gdW5pbmxpbmUgaXQsIHRoZSBjb3N0IG1heSBk b3VibGU7IGJ1dCBpZiBpdA0KPiA+IHRha2VzIGEgYnVyc3Qgb2YgcGFja2V0cyBhbmQgaXMgb25s eSB1c2VkIG9uY2UvdHdpY2UgcGVyIGJ1cnN0IHRoZQ0KPiA+IGNvc3QgcGVyIHBhY2tldCBzaG91 bGQgc3RpbGwgb25seSBiZSBhIGZyYWN0aW9uIG9mIGEgY3ljbGUuDQo+ID4NCj4gPj4+DQo+ID4+ Pj4gMykgUGx1cyBzeW5jaHJvbml6YXRpb24gcm91dGluZXM6IHNwaW4vcndsb2NrL2JhcnJpZXIs IGV0Yy4gSSB0aGluaw0KPiA+Pj4+IHJjdSBzaG91bGQgYmUgb25lIG9mIHN1Y2ggZXhjZXB0aW9u cyAtIGl0IGlzIGp1c3QgYW5vdGhlcg0KPiA+Pj4+IHN5bmNocm9uaXphdGlvbiBtZWNoYW5pc20g YWZ0ZXIgYWxsIChqdXN0IGEgYml0IG1vcmUNCj4gPj4+PiBzb3BoaXN0aWNhdGVkKS4gLSBLb25z dGFudGluDQo+ID4+Pj4NCj4gPj4+IEluIGdlbmVyYWwgSSBiZWxpZXZlIHRoZSBzeW5jaHJvbmlz YXRpb24gcHJpbWl0aXZlcyBzaG91bGQgYmUgaW5saW5lLg0KPiA+Pj4gSG93ZXZlciwgaXQgZG9l cyBjb21lIGRvd24gdG8gY29zdCB0b28gLSBpZiBhIGZ1bmN0aW9uIHRha2VzIDMwMA0KPiA+Pj4g Y3ljbGVzLCBkbyB3ZSByZWFsbHkgY2FyZSBpZiBpdCB0YWtlcyAzMDUgb3IgMzEwIGluc3RlYWQg dG8gbWFrZSBpdCBub3QNCj4gaW5saW5lPw0KPiA+Pj4gSG9wZWZ1bGx5IG1vc3Qgc3luY2hyb25p c2F0aW9uIHByaW1pdGl2ZXMgYXJlIGZhc3RlciB0aGFuIHRoaXMgc28NCj4gPj4+IHRoaXMgc2l0 dWF0aW9uIHNob3VsZCBub3Qgb2NjdXIuDQo+ID4+Pg0KPiA+Pj4+IDIpIGFuZCAzKSBjYW4gYmUg Z29vZCBndWlkZWxpbmVzIHRvIHdoYXQgZnVuY3Rpb25zL0FQSXMgY2FuIGJlDQo+ID4+Pj4gaW5s aW5lLiBCdXQsDQo+ID4+PiBJIGJlbGlldmUgdGhpcyBndWlkZWxpbmUgZXhpc3RzIHRvZGF5IHRv by4gQXJlIHRoZXJlIGFueSB0aG91Z2h0cyB0bw0KPiA+Pj4gY2hhbmdlIHRoaXM/DQo+ID4+Pj4N Cj4gPj4+PiBDb21pbmcgdG8gMSksIEkgdGhpbmsgRFBESyBjYW5ub3QgcHJvdmlkZSBBQkkgY29t cGF0aWJpbGl0eSB1bmxlc3MNCj4gPj4+PiBhbGwgdGhlDQo+ID4+PiBpbmxpbmUgZnVuY3Rpb25z IGFyZSBjb252ZXJ0ZWQgdG8gbm9ybWFsIGZ1bmN0aW9ucyBhbmQgc3ltYm9sDQo+ID4+PiB2ZXJz aW9uaW5nIGlzIGRvbmUgZm9yIHRob3NlIChub3QgYm90aGVyaW5nIGFib3V0IHBlcmZvcm1hbmNl KS4NCj4gPj4+Pg0KPiA+Pj4gSSBkaXNhZ3JlZS4gSSB0aGluayBldmVuIGluIHRoZSBjYXNlIG9m ICMxLCB3ZSBzaG91bGQgYmUgYWJsZSB0bw0KPiA+Pj4gbWFuYWdlIHNvbWUgY2hhbmdlcyB3aXRo b3V0IGJyZWFraW5nIEFCSS4NCj4gPj4gSSBjb21wbGV0ZWx5IGFncmVlIHdpdGggeW91IG9uIHRy eWluZyB0byBrZWVwIHRoZSBBQkkgYnJlYWsgc3VyZmFjZSBzbWFsbA0KPiBhbmQgZG9pbmcgZHVl IGRpbGlnZW5jZSB3aGVuIG9uZSBpcyByZXF1aXJlZC4gSG93ZXZlciwgSSB0aGluayBjbGFpbWlu ZyAxMDAlDQo+IEFCSSBjb21wYXRpYmlsaXR5IGFsbCB0aGUgdGltZSAob3IgYXMgZnJlcXVlbnRs eSBhcyBvdGhlciBwcm9qZWN0cyBjbGFpbSkgbWlnaHQNCj4gYmUgdG91Z2guIElNTywgd2UgbmVl ZCB0byBsb29rIGJleW9uZCB0aGlzIHRvIHNvbHZlIHRoZSBlbmQgdXNlciBwcm9ibGVtLg0KPiBN YXkgYmUgcGFja2FnaW5nIG11bHRpcGxlIExUUyB3aXRoIGRpc3Ryb3Mgd2hlbiBEUERLIGNvdWxk IG5vdCBhdm9pZA0KPiBicmVha2luZyBBQkkgY29tcGF0aWJpbGl0eT8NCj4gPj4NCj4gPiBIYXZp bmcgbXVsdGlwbGUgTFRTJ3MgcGVyIGRpc3RybyB3b3VsZCBiZSBuaWNlLCBidXQgaXQncyBwdXR0 aW5nIGEgbG90DQo+ID4gbW9yZSB3b3JrIG9uIHRoZSBkaXN0cm8gZm9sa3MsIEkgdGhpbmsuDQo+ IA0KPiBJIGNvbXBsZXRlbHkgZGlzYWdyZWUgd2l0aCB0aGlzIGFwcHJvYWNoLg0KPiBBbnl0aW1l IEkgaGF2ZSBzZWVuIHRoaXMgZG9uZSwgbW9zdCBmcmVxdWVudGx5IHdpdGggaW50ZXJwcmV0ZWQg bGFuZ3VhZ2VzLA0KPiB0aGluayBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBKYXZhIGFuZCBQeXRob24g Y29uY3VycmVudGx5IG9uIGEgc3lzdGVtLCBpdCBoYXMNCj4gYWx3YXlzIGJlZW4gYSB1c2FiaWxp dHkgbmlnaHRtYXJlLg0KPiANCj4gDQo+ID4NCj4gPj4+DQo+ID4+Pj4gSW4gdGhpcyBjb250ZXh0 LCBkb2VzIGl0IG1ha2Ugc2Vuc2UgdG8gc2F5IHRoYXQgd2Ugd2lsbCBtYWludGFpbg0KPiA+Pj4+ IEFQSSBjb21wYXRpYmlsaXR5IHJhdGhlciB0aGFuIHNheWluZyBBQkkgY29tcGF0aWJpbGl0eT8g VGhpcyB3aWxsDQo+ID4+Pj4gYWxzbyBzZW5kIHRoZSByaWdodCBtZXNzYWdlIHRvIHRoZSBlbmQg dXNlcnMuDQo+ID4+Pj4NCj4gPj4+IEkgd291bGQgdmFsdWUgQUJJIGNvbXBhdGliaWxpdHkgbXVj aCBoaWdoZXIgdGhhbiBBUEkgY29tcGF0aWJpbGl0eS4NCj4gPj4+IElmIHNvbWVvbmUgaXMgcmVj b21waWxpbmcgdGhlIGFwcGxpY2F0aW9uIGFueXdheSwgbWFraW5nIGEgY291cGxlIG9mDQo+ID4+ PiBzbWFsbCBjaGFuZ2VzIChsYXJnZSByZXdvcmsgaXMgb2J2aW91c2x5IGEgZGlmZmVyZW50IGlz c3VlKSB0byB0aGUNCj4gPj4+IGNvZGUgc2hvdWxkIG5vdCBiZSBhIG1hc3NpdmUgaXNzdWUsIEkg aG9wZS4gT24gdGhlIG90aGVyIGhhbmQsIEFCSQ0KPiA+Pj4gY29tcGF0aWJpbGl0eSBpcyBuZWVk ZWQgdG8gYWxsb3cgc2VhbWxlc3MgdXBkYXRlIGZyb20gb25lIHZlcnNpb24gdG8NCj4gPj4+IGFu b3RoZXIsIGFuZCBpdCdzIHRoYXQgQUJJIGNvbXBhdGlibGl0eSB0aGF0IGFsbG93cyBkaXN0cm8n cyB0byBwaWNrIHVwIG91cg0KPiBsYXRlc3QgYW5kIGdyZWF0ZXN0IHZlcnNpb25zLg0KPiA+Pj4N Cj4gPj4gSSB0aGluayBpdCBpcyBhbHNvIGltcG9ydGFudCB0byBzZXR1cCB0aGUgcmlnaHQgZXhw ZWN0YXRpb25zIHRvIERQREsgdXNlcnMuDQo+IGkuZS4gRFBESyB3aWxsIHBvbGljZSBpdHNlbGYg YmV0dGVyIHRvIHByb3ZpZGUgQUJJIGNvbXBhdGliaWxpdHkgYnV0IG9jY2FzaW9uYWxseQ0KPiBp dCBtaWdodCBub3QgYmUgcG9zc2libGUuDQo+ID4+DQo+ID4gVGhlIHRyb3VibGUgaGVyZSBpcyB0 aGF0IGEgRFBESyByZWxlYXNlLCBhcyBhIHByb2R1Y3QgaXMgZWl0aGVyDQo+ID4gYmFja3dhcmQg Y29tcGF0aWJsZSBvciBub3QuIEVpdGhlciBhIHVzZXIgY2FuIHRha2UgaXQgYXMgYSBkcm9wLWlu DQo+ID4gcmVwbGFjZW1lbnQgZm9yIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9yIG5vdC4gVXNlcnMg ZG8gbm90IHdhbnQgdG8gaGF2ZQ0KPiA+IHRvIGdvIHRocm91Z2ggYSBjaGVja2xpc3QgZm9yIGVh Y2ggYXBwIHRvIHNlZSBpZiB0aGUgYXBwIHVzZXMgb25seQ0KPiA+ICJjb21wYXRpYmxlIiBBUElz IG9yIG5vdC4gU2FtZSBmb3IgdGhlIGRpc3RybyBmb2xrcywgdGhleSBhcmUgbm90DQo+ID4gZ29p bmcgdG8gdGFrZSBzb21lIGxpYnMgZnJvbSBhIHJlbGVhc2UgYnV0IG5vdCBvdGhlcnMgYmVjYXVz ZSB0aGUgQUJJIGlzDQo+IGJyb2tlbiBmb3Igc29tZSBidXQgbm90IG90aGVycy4NCj4gDQo+IEFn cmVlZCwgYSBEUERLIHJlbGVhc2UgaXMgZWl0aGVyIGJhY2t3YXJkcyBjb21wYXRpYmxlIG9yIGl0 IGlzbid0LCBhbmQgdG8NCj4gQnJ1Y2UncyBwb2ludCBpZiBpdCBpc24ndCwgaXQgbWF0ZXJzIGxl c3MgaWYgdGhpcyBpcyBmb3IgYSBiaWcgQVBJIGNoYW5nZSBvciBhIHNtYWxsDQo+IEFQSSBjaGFu Z2UgLSB0aGUgZmFpbHVyZSBvZiB0aGUgQVBJIHN0YWJpbGl0eSBndWFyYW50ZWUgaXMgdGhlIHNp Z25pZmljYW50IHBpZWNlLg0KPiANCj4gVGhlIHJlYWxpdHkgaXMgdGhhdCBtb3N0IG90aGVyIHN5 c3RlbSBsaWJyYXJpZXMgcHJvdmlkZSBzdHJvbmcgZ3VhcmFudGVlcyAuLi4gdG8NCj4gZGF0ZSB3 ZSBoYXZlIHByb3ZpZGVkIHZlcnkgbGl0dGxlLg0KSXQgd291bGQgYmUgZ29vZCB0byBsb29rIGxp YnJhcmllcyB0aGF0IHByb3ZpZGUgaW5saW5lIGZ1bmN0aW9ucyBhbmQgQUJJIGNvbXBhdGliaWxp dHkgdG8gYmV0dGVyIHVuZGVyc3RhbmQgdGhlIG1ldGhvZHMgdXNlZC4NCg0KPiANCj4gSWYgd2Ug c3RhcnQgc2F5aW5nICJZZXMsIGJ1dCBleGNlcHQgd2hlbiIsIHRoZSBleGNlcHRpb24gY2FzZSB2 ZXJ5IHF1aWNrbHkNCj4gYmVjb21lcyB0aGUgZ2VuZXJhbCBjYXNlIGFuZCB0aGVuIHdlIGFyZSBi YWNrIHRvIHRoZSBiZWdpbm5pbmcgYWdhaW4uDQo+IA0KPiA+DQo+ID4gUmVnYXJkcywNCj4gPiAv QnJ1Y2UNCj4gPg0K