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 D3C6DA0547; Wed, 29 Sep 2021 14:35:46 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4DEE5410E5; Wed, 29 Sep 2021 14:35:46 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mails.dpdk.org (Postfix) with ESMTP id C064840685 for ; Wed, 29 Sep 2021 14:35:43 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10121"; a="224999759" X-IronPort-AV: E=Sophos;i="5.85,332,1624345200"; d="scan'208";a="224999759" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2021 05:35:42 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,332,1624345200"; d="scan'208";a="563233099" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga002.fm.intel.com with ESMTP; 29 Sep 2021 05:35:42 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 29 Sep 2021 05:35:41 -0700 Received: from orsmsx607.amr.corp.intel.com (10.22.229.20) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Wed, 29 Sep 2021 05:35:41 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx607.amr.corp.intel.com (10.22.229.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Wed, 29 Sep 2021 05:35:41 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.175) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Wed, 29 Sep 2021 05:35:40 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YkKmGZiTeDd9pedU8OEYk1JIDBcaKq6aGLQJawtSI01vQJVN+R2UZ+CwKnaG/PiFBc7ovcPE16x3lhTkHnLeOEx0MtwzDcjp1NEIx0pu/k/fdNKf9nkjM9nXY0W4y3STNlRR4RKJgnf2FEekcTWud7r1F25fKQPClBWiYGDoM3X19VZs+KC9ojN3ah+WL57unncRriXHkIFXN2AOhg/wCzgQBR8EbBFtVbAzcV+V98GWTC/zBxh7z357aVQvGF/bP0R6B0bDd3lrWQR/ho/yFGpQbkUMySGSGeW2vIFQ3wX+HuYaw9f+Fm5/JrV4mxsKzN8hV1GqVgLhUAgWxijo6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=8ADmOwgf0N3Rgn8dAxuksBqcyEAuEIUTKNjfbFmlbCU=; b=BvL3Um1vKixMWuy9GXCk08M1iVOUyDO1cqU0M6jCPlAmMYBKuwjyH8ZMaK+vS9Ir6R2+NmXD9hYyA74RwMkcct9R784yZHMGs7oCrs7LrpM9fl21cK+JUoayGSVY10fYBK8/LGGi5vSir37Y+o6B2G/dIQNSWx6vrOveivIOKKA+W+Gejf4lGh6DJQnxprh34JZjgKd1Mc5QE0i8e/Gy7Bcr5t6tHEJPZ8UzLrjtyK2m8YKeoGoCYeVcbLsBdnIT81vgdjSekNcUBRu/ws47YRT/SNQvgr+FjdORHI1tJLzt9pkrQ7jeyinf6LEtLTMw9EMslU6SZ8jiIzWOB76mlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8ADmOwgf0N3Rgn8dAxuksBqcyEAuEIUTKNjfbFmlbCU=; b=BIv9iCvg5PvpqKOcnWIq2aoJRw6/p7T0g2ziha5KidTqDH9LisjiAoP4okBJi5X10FYjYpiQcBIZ9YPg1LOvkb3eqKTrsJoWDJ+QJXkXqaGYZzqXOOCwuktr8qZJq0UZuViZgCBGuq2pYGKtFOqCIGL0wY3Om43OvdQo/GzSWQI= Received: from DM6PR11MB4491.namprd11.prod.outlook.com (2603:10b6:5:204::19) by DM6PR11MB4609.namprd11.prod.outlook.com (2603:10b6:5:28f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.13; Wed, 29 Sep 2021 12:35:39 +0000 Received: from DM6PR11MB4491.namprd11.prod.outlook.com ([fe80::740e:126e:c785:c8fd]) by DM6PR11MB4491.namprd11.prod.outlook.com ([fe80::740e:126e:c785:c8fd%4]) with mapi id 15.20.4566.014; Wed, 29 Sep 2021 12:35:39 +0000 From: "Ananyev, Konstantin" To: "Xueming(Steven) Li" , "jerinjacobk@gmail.com" CC: NBU-Contact-Thomas Monjalon , "andrew.rybchenko@oktetlabs.ru" , "dev@dpdk.org" , "Yigit, Ferruh" Thread-Topic: [dpdk-dev] [PATCH v1] ethdev: introduce shared Rx queue Thread-Index: AQHXjSWyH8VFYJkIWkOxWCsDakefPatt9JUtgABDWZOAR96KAIADZ48AgAAiN4CAABZsAIAAB6SAgAADvQCAAASrUIAADHMAgACDXqCAALOSgIAACLsggAAoYgCAAAQOQA== Date: Wed, 29 Sep 2021 12:35:39 +0000 Message-ID: References: <20210727034204.20649-1-xuemingl@nvidia.com> <20210809114716.22035-1-xuemingl@nvidia.com> <6d4308c307a72d62b0be4d61f70f8d0c64a4e7ba.camel@nvidia.com> <15b1590a8899d85e85bb4f7c104b9399654ee160.camel@nvidia.com> <543d0e4ac61633fa179506906f88092a6d928fe6.camel@nvidia.com> <9d75880405f107f7c2476394b33da08cf21a8fa1.camel@nvidia.com> In-Reply-To: <9d75880405f107f7c2476394b33da08cf21a8fa1.camel@nvidia.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 authentication-results: nvidia.com; dkim=none (message not signed) header.d=none;nvidia.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3e171e59-afee-46de-ea49-08d98345a4f5 x-ms-traffictypediagnostic: DM6PR11MB4609: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: lWCS7cEjczIm5AMvd6moMh2zcPq/2vLJoppknuTf2VOIELhXaVav1wXvUvmeUl5qtU0rqC1b5NhM/UYnnEwXy60m6S6vsEk/4uY8Yqi6N9Hc7Z+VXQxkApMSOMu/WVZkqWD4OlOklB+zqT7Pzzg7t0ikkwEqtQ5xuKADhDSX2VvK/W6NFP1hx2tVDD2kJEuXWy/fq870OGt91wdhgkwyuWbxVnq3V7o+KF+BY3N3pHVuVZWmlvslXTaF3JIb5LGa3AfEPv+cFivNm6zIyJ44WyU0Rt5gMw1CSODTUUJgx0XqWIRpebKetmMp7jSsdcYc5HqwUXQDjwbXI2/keZP158dvg3WSU+SxIAdb2op+y6bsQpwYXodRsS1YOC9lDY5z1xIbVFLJPdipjSJ7c7r570Js6t1MO0Yit0/wq/MMtXg0qNULX9NOzn2qyXF8atEARwbtPGhgo/ZwIRbDXr6B54nfioZKnJeVM/gUCk1Kl6tbJKsQHX6taSWN5qzLHFG0jPNLqicLO3eIPnjVVRpyGlqPGTkfZWLHqb9IdvfsB0SC5t1AcjPe4P6G7oe2PM/qCmLjRykR+HcKaV/N1u6qiICr8TuaggKtYWJCvXqBUjx7smEEparNrG7HgJw53A/jDuGBGzM50dIhPKQg1B0wWCD4UO7Pt4ndoobzg2yFjXPjPOylj8yfZ7F3IToylZQeEkD2TflgheouDVdIGXfiFwTSczU6BN39eTulMUa2RjrjPWa1CMOLaw0U5/6n2MuDN9cEiuAJOnXR9KAzmzYrR3e4USuyDdUW2clm6zK/sp4= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR11MB4491.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(53546011)(54906003)(33656002)(508600001)(122000001)(86362001)(110136005)(316002)(966005)(7696005)(66446008)(6506007)(55016002)(38100700002)(8676002)(66946007)(30864003)(76116006)(66476007)(55236004)(64756008)(66556008)(9686003)(107886003)(83380400001)(2906002)(71200400001)(5660300002)(26005)(4326008)(8936002)(52536014)(186003)(38070700005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SHRtMGtTS3JHR0xHdk1uV01lQkZkRFhaT2M3T2ozYzYwT21MWmpIUFI4eVZw?= =?utf-8?B?N2paeS8vUy9MN2dmRXR0d0tHenlFTDBqMDdZZ1ZIbVFZQlQ5bk1qS0E3SVFO?= =?utf-8?B?dU9nV2c5dHFIeURydDZxUGZSR2s2ZXFqaGJRRHJDQWRObmNRNkwwZUt4OS9z?= =?utf-8?B?dUY2eHdZMXdoMjlidTN0blFCUFh0RHc2T2o4RzZwUnZSaGtsMnBrRndkL2VN?= =?utf-8?B?VHF3Y0VydElLOWVtamFUVTRlNDYydUVMYjBDbklPUGwxSFZEVk5pYmlqcEtk?= =?utf-8?B?bWM1Z2pzbDk1TmxhcWM3Ymc2aDYwU011L0UyaXA1dHp5L3NiZk5oVXA5Snhn?= =?utf-8?B?U09ZQkRWdTBRQ3dRd1NnVnZnWTBDaGpDd3FIWWpGaEtXZStQakhMY292OXhq?= =?utf-8?B?Y2JycXhYaEl4aHNXZkg2dmNEaGU5a0g2THowSitFUG81WnN5cjZmNnVmN2p0?= =?utf-8?B?akxZa3pzWnNmNzR4ZFRyRE0xbEVVeFdtM2E1OWZCWjRSaDc4ZEx6SElhSWo5?= =?utf-8?B?WHBFdEVCSDR5cnBibDM5VlIwZm45T1NTLytXb1ZadUFIMVlSR2pROTc0ZWFK?= =?utf-8?B?am91UmF6WmJnREptQUF2djRmZEl6RzRrRTl0Rkh6WklzeHdxQllHOTdtYzVB?= =?utf-8?B?Y3BXM1liTHNJT2t0eUdyQ1JjWU9PUURWTjlFeGpxZ0hlRjBhbzVqS1p2aWNL?= =?utf-8?B?Tll2UlpkRTh2WDc1Tk1vY3M4N3VMOUJkOGlxVkpaQVRjYmZvbjVGcFJlNFBk?= =?utf-8?B?NHowUVNkUUFKUE9SQnVhZnI3MUtPdFNnTHlrNVRwUzk0ZngvYUlGaW9US1NG?= =?utf-8?B?UnlXcCtmalVUQ1gyUEpNd2tkZytoOE50c0xKVmhuRkRFN1BhNEhubEx0UWxX?= =?utf-8?B?NDR5dStuVVhzMU92dzNtUE1PVzRSZXFrRk81Uko0SGlDd1V2Rm0yYlRRcE8v?= =?utf-8?B?YUprVDI2eGc1RFp3R0NGanBRWW96T3NoNlNBcmtPNXJRSmJ2eEFudjVPSDdQ?= =?utf-8?B?aTdSM1ZuNjNzTEJHOUx5VCtuM0swN3hvWTl6bklYVDhTcC9YR1RmRWdZZ013?= =?utf-8?B?NGtxOXcrVzZMWStuRWJTUkNMb1FSTGRjWlY2QWpsdTJzSlFJcVVSUEI3UUlY?= =?utf-8?B?QlBiaG1YTXVackRZd2p2SUN3MS9XTlFBTzZESmNCTk5qKzhlNmRzQm9QMVhn?= =?utf-8?B?bWlUVWhHdjhxM1RDNjZYYnZQR3dMWG4xRERuKzJzc083OVVpdC9xMzJUekNQ?= =?utf-8?B?bVhrTzU0SXg3MWFXQ3VYL0Y3YW51ak11QzAzMGFKT2Jybis2d1dHYTRQVDJ2?= =?utf-8?B?OHNmRE9HQWszWUV0eGZKYkxJNzJvK2plRVlpWXozeCsyZGZnem1RYzRYOTJh?= =?utf-8?B?YkEvMHFhWlo1T1RlRERnd0xsNXRGdFJPUHBkZjRXSkI3UFc2dFB0NzZoQmdR?= =?utf-8?B?Z2lvNk9TWUk0YWZ1L1FNcXE1NUhobWhSbStYanlJTlJBWjlVcnVRSkwzVEZo?= =?utf-8?B?Sk5meGxHTmppMThiaG1sckFGU094OTY5MldhU0tWb3dSS2JYVjVaQVhDNlVG?= =?utf-8?B?M1g1Nk9MdStlWVhtazIrVERMNzQrOVZhWEJqVmNOM01jOFVvMFFvYTJTbTdX?= =?utf-8?B?ZS9WN3k4UnlVbUNUOWw4cGtFamdjb21WZXMrSzRjWlg0ZXR0ajhCSmxFY2xF?= =?utf-8?B?NGRaamlseERicEsyR3ZWc1NLcjVNc3hXUTl4Wkpoa0JVdEZ5Y3R0L0xMWFJQ?= =?utf-8?Q?5MrhNPCJyo4E+zSl6UDxfQDHdJTHKINFjAT9NBf?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB4491.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3e171e59-afee-46de-ea49-08d98345a4f5 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Sep 2021 12:35:39.1988 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: a1u4o2ily/VSgJYLKV8PXwcg1Xb/pF7AoyamBS1xVC2bFGBXR/H0kK/jDh7hl5u4FH12LlbYj9CKHDza4/8RxKgZAprqU7bTrQZp+K23SdA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4609 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v1] ethdev: introduce shared Rx queue 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" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWHVlbWluZyhTdGV2ZW4p IExpIDx4dWVtaW5nbEBudmlkaWEuY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJlciAy OSwgMjAyMSAxOjA5IFBNDQo+IFRvOiBqZXJpbmphY29ia0BnbWFpbC5jb207IEFuYW55ZXYsIEtv bnN0YW50aW4gPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+DQo+IENjOiBOQlUtQ29udGFj dC1UaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBhbmRyZXcucnliY2hlbmtv QG9rdGV0bGFicy5ydTsgZGV2QGRwZGsub3JnOyBZaWdpdCwgRmVycnVoDQo+IDxmZXJydWgueWln aXRAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjFdIGV0aGRl djogaW50cm9kdWNlIHNoYXJlZCBSeCBxdWV1ZT4gDQo+IE9uIFdlZCwgMjAyMS0wOS0yOSBhdCAw OTo1MiArMDAwMCwgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4gPg0KPiA+ID4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFh1ZW1pbmcoU3RldmVuKSBMaSA8eHVl bWluZ2xAbnZpZGlhLmNvbT4NCj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDI5LCAy MDIxIDEwOjEzIEFNDQo+ID4gPiBUbzogamVyaW5qYWNvYmtAZ21haWwuY29tOyBBbmFueWV2LCBL b25zdGFudGluIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPg0KPiA+ID4gQ2M6IE5CVS1D b250YWN0LVRob21hcyBNb25qYWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IGFuZHJldy5yeWJj aGVua29Ab2t0ZXRsYWJzLnJ1OyBkZXZAZHBkay5vcmc7IFlpZ2l0LCBGZXJydWgNCj4gPiA+IDxm ZXJydWgueWlnaXRAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BB VENIIHYxXSBldGhkZXY6IGludHJvZHVjZSBzaGFyZWQgUnggcXVldWUNCj4gPiA+DQo+ID4gPiBP biBXZWQsIDIwMjEtMDktMjkgYXQgMDA6MjYgKzAwMDAsIEFuYW55ZXYsIEtvbnN0YW50aW4gd3Jv dGU6DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBJbiBjdXJyZW50IERQREsg ZnJhbWV3b3JrLCBlYWNoIFJYIHF1ZXVlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiBpcw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gcHJlLWxvYWRlZCB3 aXRoIG1idWZzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBmb3IgaW5jb21p bmcgcGFja2V0cy4gV2hlbiBudW1iZXIgb2YNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IHJlcHJlc2VudG9ycyBzY2FsZSBvdXQgaW4gYQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gc3dpdGNoIGRvbWFpbiwgdGhlIG1lbW9yeSBjb25zdW1wdGlvbg0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYmVjYW1lDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBzaWduaWZpY2FudC4gTW9zdA0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gaW1wb3J0YW50LCBwb2xsaW5nIGFsbCBwb3J0cyBsZWFkcyB0bw0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaGlnaA0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gY2FjaGUgbWlzcywgaGlnaA0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gbGF0ZW5jeSBhbmQgbG93IHRocm91Z2hwdXQuDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHNoYXJlZCBSWCBxdWV1ZS4NCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFBvcnRzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiB3aXRoIHNhbWUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IGNvbmZpZ3VyYXRpb24gaW4gYSBzd2l0Y2ggZG9tYWluIGNvdWxkDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBzaGFyZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gUlggcXVldWUgc2V0IGJ5IHNwZWNpZnlpbmcgc2hhcmluZyBncm91cC4NCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFBvbGxpbmcgYW55IHF1ZXVlIHVzaW5nIHNhbWUg c2hhcmVkIFJYDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBxdWV1ZQ0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gcmVjZWl2ZXMgcGFja2V0cyBmcm9tDQo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhbGwgbWVtYmVyIHBvcnRzLiBTb3Vy Y2UgcG9ydCBpcw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gaWRlbnRpZmll ZA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYnkgbWJ1Zi0+cG9ydC4NCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiBQb3J0IHF1ZXVlIG51bWJlciBpbiBhIHNoYXJlZCBncm91cA0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gc2hvdWxkIGJlDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiBpZGVudGljYWwuIFF1ZXVlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiBpbmRleCBpcw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gMToxIG1hcHBlZCBpbiBzaGFyZWQgZ3JvdXAuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gU2hhcmUg UlggcXVldWUgaXMgc3VwcG9zZWQgdG8gYmUgcG9sbGVkDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiBvbg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gc2Ft ZSB0aHJlYWQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gTXVsdGlwbGUgZ3JvdXBzIGlzIHN1cHBvcnRlZCBi eSBncm91cCBJRC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IElzIHRoaXMgb2ZmbG9hZCBzcGVjaWZpYyB0byB0aGUN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiByZXByZXNlbnRvcj8gSWYNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzbyBjYW4gdGhpcyBuYW1lIGJlIGNoYW5nZWQg c3BlY2lmaWNhbGx5IHRvDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gcmVwcmVz ZW50b3I/DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IFllcywgUEYgYW5kIHJlcHJlc2VudG9yIGluIHN3aXRjaCBkb21haW4N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gY291bGQNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gdGFrZSBhZHZhbnRhZ2UuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gSWYgaXQgaXMgZm9yIGEg Z2VuZXJpYyBjYXNlLCBob3cgdGhlIGZsb3cNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPiBvcmRlcmluZyB3aWxsIGJlIG1haW50YWluZWQ/DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IE5vdCBxdWl0ZSBzdXJl IHRoYXQgSSB1bmRlcnN0b29kIHlvdXINCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g cXVlc3Rpb24uDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFRoZSBjb250cm9sIHBh dGggb2YgaXMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYWxtb3N0IHNhbWUgYXMg YmVmb3JlLCBQRiBhbmQgcmVwcmVzZW50b3INCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gcG9ydA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzdGlsbCBuZWVkZWQsIHJ0 ZSBmbG93cyBub3QgaW1wYWN0ZWQuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFF1 ZXVlcyBzdGlsbCBuZWVkZWQgZm9yIGVhY2ggbWVtYmVyIHBvcnQsDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+IGRlc2NyaXB0b3JzKG1idWYpIHdpbGwgYmUNCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gc3VwcGxpZWQgZnJvbSBzaGFyZWQgUnggcXVldWUgaW4gbXkgUE1E DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGltcGxlbWVudGF0aW9uLg0KPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IE15 IHF1ZXN0aW9uIHdhcyBpZiBjcmVhdGUgYSBnZW5lcmljDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiBSVEVfRVRIX1JYX09GRkxPQURfU0hBUkVEX1JYUSBvZmZsb2FkLCBtdWx0aXBsZQ0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZXRoZGV2IHJlY2VpdmUgcXVldWVzIGxhbmQg aW50bw0KPiA+ID4gPiA+ID4gPiB0aGUgc2FtZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gcmVjZWl2ZSBxdWV1ZSwgSW4gdGhhdCBjYXNlLCBob3cgdGhlIGZsb3cgb3JkZXINCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGlzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiBtYWludGFpbmVkIGZvciByZXNwZWN0aXZlIHJlY2VpdmUgcXVldWVzLg0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gSSBndWVzcyB0aGUg cXVlc3Rpb24gaXMgdGVzdHBtZCBmb3J3YXJkIHN0cmVhbT8NCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiBUaGUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBmb3J3YXJkaW5nIGxvZ2lj IGhhcyB0byBiZSBjaGFuZ2VkIHNsaWdodGx5IGluDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gY2FzZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IG9mIHNoYXJlZCByeHEuDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYmFzaWNhbGx5IGZvciBlYWNoIHBhY2tldCBpbiByeF9i dXJzdCByZXN1bHQsDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gbG9va3VwDQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gc291cmNlIHN0cmVhbSBhY2NvcmRpbmcgdG8gbWJ1Zi0+cG9y dCwgZm9yd2FyZGluZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRvDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ID4gdGFyZ2V0IGZzLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IFBhY2tldHMgZnJvbSBzYW1lIHNvdXJjZSBwb3J0IGNvdWxkIGJlIGdyb3VwZWQgYXMNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBhDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gc21h bGwgYnVyc3QgdG8gcHJvY2VzcywgdGhpcyB3aWxsIGFjY2VsZXJhdGVzIHRoZQ0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IHBlcmZvcm1hbmNlIGlmIHRyYWZmaWMNCj4gPiA+ID4gPiA+ID4g Y29tZSBmcm9tDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gbGltaXRlZCBwb3J0cy4gSSds bCBpbnRyb2R1Y2Ugc29tZSBjb21tb24gYXBpIHRvDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gZG8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBzaGFyZCByeHEgZm9yd2FyZGluZywg Y2FsbCBpdCB3aXRoIHBhY2tldHMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBoYW5kbGlu Zw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGNhbGxiYWNrLCBzbyBpdCBzdWl0ZXMgZm9y DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYWxsIGZvcndhcmRpbmcgZW5naW5lLiBXaWxs IHNlbnQgcGF0Y2hlcyBzb29uLg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEFsbCBwb3J0cyB3 aWxsIHB1dCB0aGUgcGFja2V0cyBpbiB0byB0aGUgc2FtZSBxdWV1ZQ0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPiAoc2hhcmUgcXVldWUpLCByaWdodD8gRG9lcw0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiB0aGlzIG1lYW5zIG9ubHkgc2luZ2xlIGNvcmUgd2lsbCBwb2xsIG9ubHksIHdoYXQN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gd2lsbA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiBoYXBwZW4gaWYgdGhlcmUgYXJlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IG11bHRpcGxl IGNvcmVzIHBvbGxpbmcsIHdvbid0IGl0IGNhdXNlIHByb2JsZW0/DQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEFuZCBpZiB0aGlzIHJlcXVpcmVz IHNwZWNpZmljIGNoYW5nZXMgaW4gdGhlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFwcGxp Y2F0aW9uLCBJIGFtIG5vdCBzdXJlIGFib3V0DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRo ZSBzb2x1dGlvbiwgY2FuJ3QgdGhpcyB3b3JrIGluIGEgdHJhbnNwYXJlbnQgd2F5DQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IHRvDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHRoZSBhcHBs aWNhdGlvbj8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g PiBEaXNjdXNzZWQgd2l0aCBKZXJpbiwgbmV3IEFQSSBpbnRyb2R1Y2VkIGluIHYzIDIvOA0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gdGhhdA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYWdncmVn YXRlIHBvcnRzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPiBpbiBzYW1lIGdyb3VwIGludG8gb25l IG5ldyBwb3J0LiBVc2VycyBjb3VsZCBzY2hlZHVsZQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4g cG9sbGluZyBvbiB0aGUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFnZ3JlZ2F0ZWQgcG9ydCBp bnN0ZWFkIG9mIGFsbCBtZW1iZXIgcG9ydHMuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiBUaGUgdjMgc3RpbGwgaGFzIHRlc3RwbWQgY2hhbmdlcyBpbiBmYXN0 cGF0aC4gUmlnaHQ/DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gSU1PLA0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IEZvciB0aGlzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gZmVhdHVyZSwgd2Ugc2hvdWxk IG5vdCBjaGFuZ2UgZmFzdHBhdGggb2YgdGVzdHBtZA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGFw cGxpY2F0aW9uLiBJbnN0ZWFkLCB0ZXN0cG1kIGNhbiB1c2UgYWdncmVnYXRlZCBwb3J0cw0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IHByb2JhYmx5IGFzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gc2Vw YXJhdGUgZndkX2VuZ2luZSB0byBzaG93IGhvdyB0byB1c2UgdGhpcyBmZWF0dXJlLg0KPiA+ID4g PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBHb29kIHBvaW50IHRvIGRpc2N1c3Mg OikgVGhlcmUgYXJlIHR3byBzdHJhdGVnaWVzIHRvDQo+ID4gPiA+ID4gPiA+ID4gPiA+IHBvbGxp bmcNCj4gPiA+ID4gPiA+ID4gPiA+ID4gYSBzaGFyZWQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gUnhx Og0KPiA+ID4gPiA+ID4gPiA+ID4gPiAxLiBwb2xsaW5nIGVhY2ggbWVtYmVyIHBvcnQNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gwqDCoMKgQWxsIGZvcndhcmRpbmcgZW5naW5lcyBjYW4gYmUgcmV1c2Vk IHRvIHdvcmsgYXMNCj4gPiA+ID4gPiA+ID4gPiA+ID4gYmVmb3JlLg0KPiA+ID4gPiA+ID4gPiA+ ID4gPiDCoMKgwqBNeSB0ZXN0cG1kIHBhdGNoZXMgYXJlIGVmZm9ydHMgdG93YXJkcyB0aGlzIGRp cmVjdGlvbi4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gwqDCoMKgRG9lcyB5b3VyIFBNRCBzdXBwb3J0 IHRoaXM/DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gTm90IHVuZm9ydHVu YXRlbHkuIE1vcmUgdGhhbiB0aGF0LCBldmVyeSBhcHBsaWNhdGlvbiBuZWVkcw0KPiA+ID4gPiA+ ID4gPiA+ID4gdG8NCj4gPiA+ID4gPiA+ID4gPiA+IGNoYW5nZQ0KPiA+ID4gPiA+ID4gPiA+ID4g dG8gc3VwcG9ydCB0aGlzIG1vZGVsLg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g Qm90aCBzdHJhdGVnaWVzIG5lZWQgdXNlciBhcHBsaWNhdGlvbiB0byByZXNvbHZlIHBvcnQgSUQg ZnJvbQ0KPiA+ID4gPiA+ID4gPiA+IG1idWYgYW5kDQo+ID4gPiA+ID4gPiA+ID4gcHJvY2VzcyBh Y2NvcmRpbmdseS4NCj4gPiA+ID4gPiA+ID4gPiBUaGlzIG9uZSBkb2Vzbid0IGRlbWFuZCBhZ2dy ZWdhdGVkIHBvcnQsIG5vIHBvbGxpbmcgc2NoZWR1bGUNCj4gPiA+ID4gPiA+ID4gPiBjaGFuZ2Uu DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IEkgd2FzIHRoaW5raW5nLCBtYnVmIHdpbGwg YmUgdXBkYXRlZCBmcm9tIGRyaXZlci9hZ2dyZWdhdG9yDQo+ID4gPiA+ID4gPiA+IHBvcnQgYXMN Cj4gPiA+ID4gPiA+ID4gd2hlbiBpdA0KPiA+ID4gPiA+ID4gPiBjb21lcyB0byBhcHBsaWNhdGlv bi4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiA+ID4gMi4gcG9sbGluZyBhZ2dyZWdhdGVkIHBvcnQNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gwqDCoMKgQmVzaWRlcyBmb3J3YXJkaW5nIGVuZ2luZSwgbmVlZCBtb3JlIHdvcmsg dG8gdG8gZGVtbw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBpdC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4g wqDCoMKgVGhpcyBpcyBhbiBvcHRpb25hbCBBUEksIG5vdCBzdXBwb3J0ZWQgYnkgbXkgUE1EIHll dC4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBXZSBhcmUgdGhpbmtpbmcg b2YgaW1wbGVtZW50aW5nIHRoaXMgUE1EIHdoZW4gaXQgY29tZXMgdG8NCj4gPiA+ID4gPiA+ID4g PiA+IGl0LA0KPiA+ID4gPiA+ID4gPiA+ID4gaWUuDQo+ID4gPiA+ID4gPiA+ID4gPiB3aXRob3V0 IGFwcGxpY2F0aW9uIGNoYW5nZSBpbiBmYXN0cGF0aA0KPiA+ID4gPiA+ID4gPiA+ID4gbG9naWMu DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBGYXN0cGF0aCBoYXZlIHRvIHJlc29s dmUgcG9ydCBJRCBhbnl3YXkgYW5kIGZvcndhcmRpbmcNCj4gPiA+ID4gPiA+ID4gPiBhY2NvcmRp bmcNCj4gPiA+ID4gPiA+ID4gPiB0bw0KPiA+ID4gPiA+ID4gPiA+IGxvZ2ljLiBGb3J3YXJkaW5n IGVuZ2luZSBuZWVkIHRvIGFkYXB0IHRvIHN1cHBvcnQgc2hhcmQgUnhxLg0KPiA+ID4gPiA+ID4g PiA+IEZvcnR1bmF0ZWx5LCBpbiB0ZXN0cG1kLCB0aGlzIGNhbiBiZSBkb25lIHdpdGggYW4gYWJz dHJhY3QNCj4gPiA+ID4gPiA+ID4gPiBBUEkuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiBMZXQncyBkZWZlciBwYXJ0IDIgdW50aWwgc29tZSBQTUQgcmVhbGx5IHN1cHBvcnQgaXQg YW5kDQo+ID4gPiA+ID4gPiA+ID4gdGVzdGVkLA0KPiA+ID4gPiA+ID4gPiA+IGhvdyBkbw0KPiA+ ID4gPiA+ID4gPiA+IHlvdSB0aGluaz8NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gV2Ug YXJlIG5vdCBwbGFubmluZyB0byB1c2UgdGhpcyBmZWF0dXJlIHNvIGVpdGhlciB3YXkgaXQgaXMg T0sNCj4gPiA+ID4gPiA+ID4gdG8NCj4gPiA+ID4gPiA+ID4gbWUuDQo+ID4gPiA+ID4gPiA+IEkg bGVhdmUgdG8gZXRoZGV2IG1haW50YWluZXJzIGRlY2lkZSBiZXR3ZWVuIDEgdnMgMi4NCj4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSSBkbyBoYXZlIGEgc3Ryb25nIG9waW5pb24gbm90IGNo YW5naW5nIHRoZSB0ZXN0cG1kIGJhc2ljDQo+ID4gPiA+ID4gPiA+IGZvcndhcmQNCj4gPiA+ID4g PiA+ID4gZW5naW5lcw0KPiA+ID4gPiA+ID4gPiBmb3IgdGhpcyBmZWF0dXJlLkkgd291bGQgbGlr ZSB0byBrZWVwIGl0IHNpbXBsZSBhcyBmYXN0cGF0aA0KPiA+ID4gPiA+ID4gPiBvcHRpbWl6ZWQg YW5kIHdvdWxkDQo+ID4gPiA+ID4gPiA+IGxpa2UgdG8gYWRkIGEgc2VwYXJhdGUgRm9yd2FyZGlu ZyBlbmdpbmUgYXMgbWVhbnMgdG8gdmVyaWZ5DQo+ID4gPiA+ID4gPiA+IHRoaXMNCj4gPiA+ID4g PiA+ID4gZmVhdHVyZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiArMSB0byB0aGF0Lg0KPiA+ ID4gPiA+ID4gSSBkb24ndCB0aGluayBpdCBhICdjb21tb24nIGZlYXR1cmUuDQo+ID4gPiA+ID4g PiBTbyBzZXBhcmF0ZSBGV0QgbW9kZSBzZWVtcyBsaWtlIGEgYmVzdCBjaG9pY2UgdG8gbWUuDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiAtMSA6KQ0KPiA+ID4gPiA+IFRoZXJlIHdhcyBzb21lIGludGVy bmFsIHJlcXVpcmVtZW50IGZyb20gdGVzdCB0ZWFtLCB0aGV5IG5lZWQgdG8NCj4gPiA+ID4gPiB2 ZXJpZnkNCj4gPiA+ID4gPiBhbGwgZmVhdHVyZXMgbGlrZSBwYWNrZXQgY29udGVudCwgcnNzLCB2 bGFuLCBjaGVja3N1bSwgcnRlX2Zsb3cuLi4NCj4gPiA+ID4gPiB0bw0KPiA+ID4gPiA+IGJlIHdv cmtpbmcgYmFzZWQgb24gc2hhcmVkIHJ4IHF1ZXVlLg0KPiA+ID4gPg0KPiA+ID4gPiBUaGVuIEkg c3VwcG9zZSB5b3UnbGwgbmVlZCB0byB3cml0ZSByZWFsbHkgY29tcHJlaGVuc2l2ZSBmd2QtZW5n aW5lDQo+ID4gPiA+IHRvIHNhdGlzZnkgeW91ciB0ZXN0IHRlYW0gOikNCj4gPiA+ID4gU3BlYWtp bmcgc2VyaW91c2x5LCBJIHN0aWxsIGRvbid0IHVuZGVyc3RhbmQgd2h5IGRvIHlvdSBuZWVkIGFs bA0KPiA+ID4gPiBhdmFpbGFibGUgZndkLWVuZ2luZXMgdG8gdmVyaWZ5IHRoaXMgZmVhdHVyZS4N Cj4gPiA+ID4gRnJvbSB3aGF0IEkgdW5kZXJzdGFuZCwgbWFpbiBwdXJwb3NlIG9mIHlvdXIgY2hh bmdlcyB0byB0ZXN0LXBtZDoNCj4gPiA+ID4gYWxsb3cgdG8gZndkIHBhY2tldCB0aG91Z2ggZGlm ZmVyZW50IGZ3ZF9zdHJlYW0gKFRYIHRocm91Z2ggZGlmZmVyZW50DQo+ID4gPiA+IEhXIHF1ZXVl KS4NCj4gPiA+ID4gSW4gdGhlb3J5LCBpZiBpbXBsZW1lbnRlZCBpbiBnZW5lcmljIGFuZCBleHRl bmRhYmxlIHdheSAtIHRoYXQNCj4gPiA+ID4gbWlnaHQgYmUgYSB1c2VmdWwgYWRkLW9uIHRvIHRl c3BtZCBmd2QgZnVuY3Rpb25hbGl0eS4NCj4gPiA+ID4gQnV0IGN1cnJlbnQgaW1wbGVtZW50YXRp b24gbG9va3MgdmVyeSBjYXNlIHNwZWNpZmljLg0KPiA+ID4gPiBBbmQgYXMgSSBkb24ndCB0aGlu ayBpdCBpcyBhIGNvbW1vbiBjYXNlLCBJIGRvbid0IHNlZSBtdWNoIHBvaW50IHRvDQo+ID4gPiA+ IHBvbGx1dGUNCj4gPiA+ID4gYmFzaWMgZndkIGNhc2VzIHdpdGggaXQuDQo+ID4gPiA+DQo+ID4g PiA+IEJUVywgYXMgYSBzaWRlIG5vdGUsIHRoZSBjb2RlIGJlbG93IGxvb2tzIGJvZ3VzIHRvIG1l Og0KPiA+ID4gPiArdm9pZA0KPiA+ID4gPiArZm9yd2FyZF9zaGFyZWRfcnhxKHN0cnVjdCBmd2Rf c3RyZWFtICpmcywgdWludDE2X3QgbmJfcngsDQo+ID4gPiA+ICsJCSAgIHN0cnVjdCBydGVfbWJ1 ZiAqKnBrdHNfYnVyc3QsIHBhY2tldF9md2RfY2INCj4gPiA+ID4gZndkKQ0KPiA+ID4gPiArew0K PiA+ID4gPiArCXVpbnQxNl90IGksIG5iX2ZzX3J4ID0gMSwgcG9ydDsNCj4gPiA+ID4gKw0KPiA+ ID4gPiArCS8qIExvY2F0ZSByZWFsIHNvdXJjZSBmcyBhY2NvcmRpbmcgdG8gbWJ1Zi0+cG9ydC4g Ki8NCj4gPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgbmJfcng7ICsraSkgew0KPiA+ID4gPiArCQly dGVfcHJlZmV0Y2gwKHBrdHNfYnVyc3RbaSArIDFdKTsNCj4gPiA+ID4NCj4gPiA+ID4geW91IGFj Y2VzcyBwa3RfYnVyc3RbXSBiZXlvbmQgYXJyYXkgYm91bmRhcmllcywNCj4gPiA+ID4gYWxzbyB5 b3UgYXNrIGNwdSB0byBwcmVmZXRjaCBzb21lIHVua25vd24gYW5kIHBvc3NpYmx5IGludmFsaWQN Cj4gPiA+ID4gYWRkcmVzcy4NCj4gPiA+DQo+ID4gPiBTb3JyeSBJIGZvcmdvdCB0aGlzIHRvcGlj LiBJdCdzIHRvbyBsYXRlIHRvIHByZWZldGNoIGN1cnJlbnQgcGFja2V0LCBzbw0KPiA+ID4gcGVy ZmV0Y2ggbmV4dCBpcyBiZXR0ZXIuIFByZWZldGNoIGFuIGludmFsaWQgYWRkcmVzcyBhdCBlbmQg b2YgYSBsb29rDQo+ID4gPiBkb2Vzbid0IGh1cnQsIGl0J3MgY29tbW9uIGluIERQREsuDQo+ID4N Cj4gPiBGaXJzdCBvZiBhbGwgaXQgaXMgdXN1YWxseSBuZXZlciAnT0snIHRvIGFjY2VzcyBhcnJh eSBiZXlvbmQgaXRzIGJvdW5kcy4NCj4gPiBTZWNvbmQgcHJlZmV0Y2hpbmcgaW52YWxpZCBhZGRy ZXNzICpkb2VzKiBodXJ0IHBlcmZvcm1hbmNlIGJhZGx5IG9uIG1hbnkgQ1BVcw0KPiA+IChUTEIg bWlzc2VzLCBjb25zdW1lZCBtZW1vcnkgYmFuZHdpZHRoIGV0Yy4pLg0KPiA+IEFzIGEgcmVmZXJl bmNlOiAgaHR0cHM6Ly9sd24ubmV0L0FydGljbGVzLzQ0NDM0Ni8NCj4gPiBJZiBzb21lIGV4aXN0 aW5nIERQREsgY29kZSByZWFsbHkgZG9lcyB0aGF0IC0gdGhlbiBJIGJlbGlldmUgaXQgaXMgYW4g aXNzdWUgYW5kIGhhcyB0byBiZSBhZGRyZXNzZWQuDQo+ID4gTW9yZSBpbXBvcnRhbnQgLSBpdCBp cyByZWFsbHkgYmFkIGF0dGl0dWRlIHRvIHN1Ym1pdCBib2d1cyBjb2RlIHRvIERQREsgY29tbXVu aXR5DQo+ID4gYW5kIHByZXRlbmQgdGhhdCBpdCBpcyAnT0snLg0KPiANCj4gVGhhbmtzIGZvciB0 aGUgbGluayENCj4gRnJvbSBpbnN0cnVjdGlvbiBzcGVjLCAiVGhlIFBSRUZFVENIaCBpbnN0cnVj dGlvbiBpcyBtZXJlbHkgYSBoaW50IGFuZA0KPiBkb2VzIG5vdCBhZmZlY3QgcHJvZ3JhbSBiZWhh dmlvci4iDQo+IFRoZXJlIGFyZSAzIGNob2ljZXMgaGVyZToNCj4gMTogbm8gcHJlZmV0Y2guwqBE JCBtaXNzIHdpbGwgaGFwcGVuIG9uIGVhY2ggcGFja2V0LCB0aW1lIGNvc3QgZGVwZW5kcw0KPiBv biB3aGVyZSBkYXRhIHNpdHMoY2xvc2Ugb3IgZmFyKSBhbmQgYnVyc3Qgc2l6ZS4NCj4gMjogcHJl ZmV0Y2ggd2l0aCBsb29wIGVuZCBjaGVjayB0byBhdm9pZCByYW5kb20gYWRkcmVzcy4gUHJvIGlz IGZyZWUgb2YNCj4gVExCIG1pc3MgcGVyIGJ1cnN0LCBDb25zIGlzICJpZiIgaW5zdHJ1Y3Rpb24g cGVyIHBhY2tldC4gQ29zdCBkZXBlbmRzDQo+IG9uIGJ1cnN0IHNpemUuDQo+IDM6IGJydXRlIGZv cmNlIHByZWZldGNoLCBjb3N0IGlzIFRMQiBtaXNzLCBidXQgbm8gYWRkdGlvbmFsDQo+IGluc3Ry dWN0aW9ucyBwZXIgcGFja2V0LiBOb3Qgc3VyZSBob3cgcmFuZG9tIHRoZSBsYXN0IGFkZHJlc3Mg Y291bGQgYmUNCj4gaW4gdGVzdHBtZCBhbmQgaG93IG1hbnkgVExCIG1pc3MgY291bGQgaGFwcGVu Lg0KDQpUaGVyZSBhcmUgcGxlbnR5IG9mIHN0YW5kYXJkIHRlY2huaXF1ZXMgdG8gYXZvaWQgdGhh dCBpc3N1ZSB3aGlsZSBrZWVwaW5nDQpwcmVmZXRjaCgpIGluIHBsYWNlLg0KUHJvYmFibHkgdGhl IGVhc2llc3Qgb25lOg0KDQpmb3IgKGk9MDsgaSA8IG5iX3J4IC0gMTsgaSsrKSB7DQogICAgcHJl ZmV0Y2gocGt0W2krMV07DQogICAgLyogZG8geW91ciBzdHVmZiB3aXRoIHBrdFtpWyBoZXJlICov DQp9DQoNCi8qIGRvIHlvdXIgc3R1ZmYgd2l0aCBwa3RbbmJfcnggLSAxXTsgKi8NCiANCj4gQmFz ZWQgb24gbXkgZXhwZXJpY2VuIG9mIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgSUlSQywgb3B0 aW9uIDMgaGFzDQo+IHRoZSBiZXN0IHBlcmZvcm1hbmNlLiBCdXQgZm9yIHRoaXMgY2FzZSwgcmVz dWx0IGRlcGVuZHMgb24gaG93IG1hbnkNCj4gc3ViLWJ1cnN0IGluc2lkZSBhbmQgaG93IHN1Yi1i dXJzdCBnZXQgcHJvY2Vzc2VkLCBtYXliZSBjYWxsYmFjayB3aWxsDQo+IGZsdXNoIHByZWZldGNo IGRhdGEgY29tcGxldGVseSBvciBub3QuIFNvIGl0J3MgaGFyZCB0byBnZXQgYQ0KPiBjb25jbHVz aW9uLCB3aGF0IEkgc2FpZCBpcyB0aGF0IHRoZSBjb2RlIGluIFBNRCBkcml2ZXIgc2hvdWxkIGhh dmUgYQ0KPiByZWFzb24uDQo+IA0KPiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIGxhdGVuY3kgYW5k IHRocm91Z2hwdXQgc2F2aW5nIG9mIHRoaXMgZmVhdHVlIG9uDQo+IG11bHRpcGxlIHBvcnRzIGlz IGh1Z2UsIEkgcGVyZmVyIHRvIGRvd24gcGxheSB0aGlzIHByZWZldGNoIGRpc2N1c3Npb24NCj4g aWYgeW91IGFncmVlLg0KPiANCg0KSG9uZXN0bHksIEkgZG9uJ3Qga25vdyBob3cgZWxzZSB0byBl eHBsYWluIHRvIHlvdSB0aGF0IHRoZXJlIGlzIGEgYnVnIGluIHRoYXQgcGllY2Ugb2YgY29kZS4N CkZyb20gbXkgcGVyc3BlY3RpdmUgaXQgaXMgYSB0cml2aWFsIGJ1Zywgd2l0aCBhIHRyaXZpYWwg Zml4Lg0KQnV0IHlvdSBzaW1wbHkga2VlcCBpZ25vcmluZyB0aGUgYXJndW1lbnRzLg0KVGlsbCBp dCBnZXQgZml4ZWQgYW5kIG90aGVyIGNvbW1lbnRzIGFkZHJlc3NlZCAtIG15IHZvdGUgaXMgTkFD SyBmb3IgdGhlc2Ugc2VyaWVzLg0KSSBkb24ndCB0aGluayB3ZSBuZWVkIGJvZ3VzIGNvZGUgaW4g dGVzdHBtZC4NCg0KDQo=