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 5000DA0505; Thu, 7 Apr 2022 16:42:11 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 316F34068B; Thu, 7 Apr 2022 16:42:11 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id 35ECC40689 for ; Thu, 7 Apr 2022 16:42:09 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1649342529; x=1680878529; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=RSvLItyRXgFP0cZxZDJ5MI5x+NdjzEnIR9PA8MLlt/k=; b=dKAEjkUw+MoAang04AO12UKGWTtoTwf82GaCxaPooIvqJ3QP7gKM67aB tAK5VHRULm/Q+xP8d+b/V6k9ylgDh+wGJXJshv+7Ozp74nxzc4NXX729t cN8wEJ0tOHR2bPQJcsO67UiAJqPiN3KaR5daopoanbnWIhxo5AXlYa89G NZMeBQx1smx14hpVaA3J8nT7Ca3/Ry97qxhCCTUvauKNLkBV7Z6tyqe7p KYEhQ42XLfLjGAgZT2QlZ+SpePRHws01R4Nm/wD4bVhINsESd+RZk/mtf tq3xDW7bPSWD82MayETLbw7I0wiaiflWIKkpuJ6ujrsuD0D85wDjUfoAJ A==; X-IronPort-AV: E=McAfee;i="6400,9594,10309"; a="322031045" X-IronPort-AV: E=Sophos;i="5.90,242,1643702400"; d="scan'208";a="322031045" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2022 07:42:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.90,242,1643702400"; d="scan'208";a="642506633" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by FMSMGA003.fm.intel.com with ESMTP; 07 Apr 2022 07:42:07 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.27; Thu, 7 Apr 2022 07:42:07 -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.2308.27; Thu, 7 Apr 2022 07:42:06 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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.2308.27 via Frontend Transport; Thu, 7 Apr 2022 07:42:06 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.176) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2308.27; Thu, 7 Apr 2022 07:42:06 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e8GDti43bEnSo2euB2cwg12b6H5oeU7v//0ReqiLijeKddZeXJm7c8SkWV7FxmifM0JCjX0Vqjjzbt/knGVtpxXRQw5DJQpIvnZhnoCZewimkNaVp5VzGZ5DoxdGXZjWkBnU0wN+DUyAQOn6ITvZkGAJBQ3kKz8ydlyx3hpCztKpvQDqTKFlJ8shWCCvrUPRHbv8XU3nYyAc0XMInGiFzjikNh78yoejpKWkCNzDCVGEXFoKK0m0AHbmvcoPrnTPgNSmizSUiiWweYbGUGPgOqAVwoCJEEkObOf+0sYPwRFeHSwIS6KyyUu5tFp8CxqzpGfYzgM11gKwavQCMnCyow== 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:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RSvLItyRXgFP0cZxZDJ5MI5x+NdjzEnIR9PA8MLlt/k=; b=fbAzQ2xN0grojGlFPM4pyvAhqH8xhllQ5Vjw3yLArYyQOlQdPQd6HRpiXkywDo9BOASzOQr4b1UAEm6hkk6evGBDBj/RwSG4QNyHK4d4j0oODvEtoY3R6eNIt4BDhXv1fEzbqDluY9G+Z28MegE6TkHPgsWwgaGL5smfKSFE9jeApTAOUF8nnDuPRwbTFfjFHKu96GPaZqez9tRqdUXkzdmhOzOJ/CGAT7uzJqxg394yLW0th0dbH8aghxuGH0b/4hQpkWYawEaZ7VHAXLoY4Aq3qI3WD0qeASLW7S4BtTpIndWG/q+iV2r7beLEEfPVEARPJaShV8WbdmpDARwTqg== 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 Received: from BN0PR11MB5712.namprd11.prod.outlook.com (2603:10b6:408:160::17) by SA2PR11MB5132.namprd11.prod.outlook.com (2603:10b6:806:11a::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.22; Thu, 7 Apr 2022 14:42:03 +0000 Received: from BN0PR11MB5712.namprd11.prod.outlook.com ([fe80::28cf:55af:8c4b:d4d9]) by BN0PR11MB5712.namprd11.prod.outlook.com ([fe80::28cf:55af:8c4b:d4d9%3]) with mapi id 15.20.5144.022; Thu, 7 Apr 2022 14:42:03 +0000 From: "Van Haaren, Harry" To: Ilya Maximets , Maxime Coquelin , =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "Richardson, Bruce" CC: "Pai G, Sunil" , "Stokes, Ian" , "Hu, Jiayu" , "Ferriter, Cian" , "ovs-dev@openvswitch.org" , "dev@dpdk.org" , "Mcnamara, John" , "O'Driscoll, Tim" , "Finn, Emma" Subject: RE: OVS DPDK DMA-Dev library/Design Discussion Thread-Topic: OVS DPDK DMA-Dev library/Design Discussion Thread-Index: Adg/jDNGcC8G4wWtSxeVfUOuAS3Y6wACLuFQAM6falAAJoZBIAAA0srQAAK2F/AABHBTAAAAvWSAAACgo4AAAF2UgAAAVPwgAAOflKAAGxPQIAGemZWwAAEf4gAAAH3EAAAAB9bA Date: Thu, 7 Apr 2022 14:42:03 +0000 Message-ID: References: <98CBD80474FA8B44BF855DF32C47DC35D86F7C@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F7D@smartserver.smartshare.dk> <7968dd0b-8647-8d7b-786f-dc876bcbf3f0@redhat.com> <98CBD80474FA8B44BF855DF32C47DC35D86F7E@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F80@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35D86F82@smartserver.smartshare.dk> <94d817cb-8151-6644-c577-ed8b42d24337@redhat.com> <55c5a37f-3ee8-394b-8cff-e7daecb59f73@ovn.org> In-Reply-To: <55c5a37f-3ee8-394b-8cff-e7daecb59f73@ovn.org> Accept-Language: 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.401.20 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 212de24c-abf0-4f68-0bb0-08da18a4c83b x-ms-traffictypediagnostic: SA2PR11MB5132:EE_ x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OsP3grolndGwe8NlrzWX3OJSeZ9sJygj7cvC1NLZlj5B3E9SXZ3HsrftQ+Mu30pwStfXlDgvEtLZAy205KRU33Ijdd09MEOifBfUHcwmQcq70GtBcwNMNecbfHBBuEQ6drcdzbdVxT81+pg6T8W0TM8z4pZ8r0VSRdX5TOYjRLgcY/D3bb5H253d9X9opTzC3B8jSHnIVSYQuNGvWizWZ3b2sYDzJM6myDH5TTawr4aJRpRygBWhP27QmiqFqzF8WW+oZJ/MVe6yJvjFaa5TFA6m2w4BF1GdPOEFScmmecu1wrGhGVHt1e0ynMItUomub4VgnlP19iBtpNCje8XTC6Ao0S6XrW65jvL+8Y+H1NuLn4JUIEj/fuZuRKkLZpGurs+/LOQMUk5Sgw4KEscnJdqaf+VVCZGc3zILFiqZW0SfM/CNwRWZcuxdmbn+h/rlPwDhHqvBfnqI4IWE4wo4sA8KD0pKVa8cmdfpEPC1M7Q+u1WO8z4SYb5ApHdMaysElzYkACE248miZUML1Fwo7TFa56CmtQZClcnvZGjMW0grR6W5NksF8f55vqAICevReExwxPorlsbyG/6Qa4ougLipKaqWE1lmqN9pNdbjAqr/T6nqwgyObyQy2GJbCEKZiuLanFAGJxAryWZk9pjluELiZkjppfwSwAtc5j0lx3Fxcv1+qtIY5mq2KNzyNrwlXOUjgUiNu5SQ9Yy27W8mukZQIXDHcf1aNqR3uUz0Im2KvWN+KyL0CfIMcIPj1YrZtV44WwlZzRCqvDWlYZh95ttv1bqYGq3Ijj2PbHmbwx5gHfXH+12WTncepCZxk/KmGklsZKnoDXuqra949doTXg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN0PR11MB5712.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(26005)(186003)(66574015)(4326008)(8676002)(54906003)(64756008)(110136005)(76116006)(66446008)(71200400001)(83380400001)(66946007)(6636002)(38070700005)(66556008)(316002)(66476007)(33656002)(86362001)(9686003)(5660300002)(966005)(508600001)(52536014)(30864003)(107886003)(82960400001)(122000001)(38100700002)(55016003)(8936002)(6506007)(2906002)(7696005)(53546011); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?a0lJLzV3OUVLV0FiNXQ4M1cxK0I0YmVKcDhFdkpqODM2d0tLRE9ENFlLMXZh?= =?utf-8?B?cHR4M0RBeUd0UVBrQmlXUWp0U2UyVjJ1eFhjK0xQcytvRWo5c3lrclZpbitN?= =?utf-8?B?ZGZZbUZEYlo1MmVTOGJHNHZXZHBwZ0QrOUN1ZWJ5ODM2UU9YQ1lUeHo4VjlX?= =?utf-8?B?Q3FTcVVFd1dZdlRydVlocTRoMEhtaVZ6aXlhbll5eGZMOUY3a2FiYTAwVzJl?= =?utf-8?B?dEZjejNqeVBFcUd6ZFZjcmwzSzNJMlZBZjA4RklKWHNkNnZPV256RVhuMjRM?= =?utf-8?B?elJCamtaLzZNaWE5aGhWa09DclFhY3duZkpPL0JUa1dmdUVWRkFPdEZyTU82?= =?utf-8?B?NGhHZGFkRmpJQ25NdWszZ2Jra2pLQ1VSL0lBQUMwajF1THZmaEkwRmg0QnIr?= =?utf-8?B?UzNjQkVud0gyVi9EU011M0RTOVJ6dnB6RTBoN1FjdFh0YXQrNkZzbit5UVZP?= =?utf-8?B?eVQ0UUl0Z3BqcVpyOG5IYzFLRkNaS3JqT2VZd05sV1VTR1JHcXJGS25tU3po?= =?utf-8?B?WmJvdnR4b1AyRjRvOTZrUmhZb1Q3MGVYV2hRckVnc05lVjF5K1VZZkorTFcz?= =?utf-8?B?SlhYTElSUlh6RzNlaVVsc0FZK0RlUzdncnU0Zm5MYmZFS0FGSGl1cHJsQkIw?= =?utf-8?B?QmxWTHRNSVRWVXBycTUxQXp0TUFoSlNiUTYwQ3lpUitHTUJoWG5lSXJLRVlF?= =?utf-8?B?S3FPVkQ0M3BFVVdGVkhHVUNyQ2Y3ekljbzlkWTVZd0VsSWdGOThQRmhHdnhT?= =?utf-8?B?WmlETW5WODA4bGh2WXhSVDIrc0pVR216a3pOdzc2c0ZYU20wR2pVM1lNZlo2?= =?utf-8?B?Y29Uc0V1QUVhblF2L0lYZzMrclBBRjNtSGRvWVZXY216SXRyaHhaWDZBZzBY?= =?utf-8?B?S2E0WE5TRXVBWDlJQW1mNEVCck9yeE9yZFQ4dXJlWElFUjdMY2x3MU9MUzdR?= =?utf-8?B?dElMNlY1SklmQXNtNHVSd0tuT3lkbFQxT1d2S2J3Zys1UTFTa0lOQjNab2pr?= =?utf-8?B?Ylh0cEtsNm9sb1JpQUpVTWFzRTZZS2p2OUpvNW53QnZyT3NhSFAzMDVwR0h2?= =?utf-8?B?ekV0ZllYc0FIdmRhcEh1YS94Z0w1Nll6ZkVHTjg4S2tUSWkxZlJ0UURGdXBX?= =?utf-8?B?NFV0aG1YRitacUU4SFUvaVJkWWIrREQ5TlYwcXJnaFN4enZMQy9Mcm9sOXda?= =?utf-8?B?QmpOMHd4SlBSMW13Z1RmOGVhc1R0d3hmUEZ5bzV1c3k2SWtTMXpwellXdjkv?= =?utf-8?B?eTR4c0hxNWIyZWZLREtNQXY5S1ZOUDAwV1d3WjlWLzJ4OXRGQWVRdW83NzlY?= =?utf-8?B?SExVOWRYcjRTQUZXSTlyY2g3YXlzbWRoeCt3WEp4ZDVZNFRSazZHYVREaWtO?= =?utf-8?B?VHJ4VXpSNFFnUlQ2ZGVRMm1EYjN1NTdFaXJYczBZRUliMjVkN0svUlM3b3JR?= =?utf-8?B?ajFGaE9FNE9iWm1hMzlybmR2L214dEZpUHpDL2p5TEFsOS94ejlHNmd5eEVU?= =?utf-8?B?b3B5UllTVHlRUWdteVhTWCthSVJVbjhObFBwN3Z0WndUZXZjcWZhcVJHbHk1?= =?utf-8?B?OHVUUUVsbEFiRW03V1VSSG9MSTIvZTlzMzhxb0tlMzRvQzI2eVUvTVBYQm12?= =?utf-8?B?QlFVNE1xUWlMTFhxVEZxblZQbUtreFgvYVZDUUxIRVk0bytQekROYjduWEdU?= =?utf-8?B?ZDNPVUZReEh2ZE1vV0YzVVhFL3pMN1QybVlnMHI2c3Z2VWQxOUJ5STA4aVNH?= =?utf-8?B?UEhRTjRTMmE3djFQcG4rSmJ0enhneXdOSUh0T0dVdU1lVmZNME9aYk1hMGRi?= =?utf-8?B?QWdkZUVIZnJaQ0RpaUh3TC9UWGY1VE1ZUnZXWnBBZ0FhVzhDZVE5bWdSZzVT?= =?utf-8?B?NTV0d0hydmdLS2d0SXJwRTV1bEhLU1BabVlGd2lJemdDNzJBMkhFbVIwYVZP?= =?utf-8?B?bitMMnhHRW16Z0FuUk5ETmkwTnZEMVJCLy9IWnowM1NDTForbTVGSHpRZ0Q5?= =?utf-8?B?SUNzcEw5SHdYZnFiUjZMOEcvVXd6THUxd3IyM3BnQ3FRNFdRSnp5eStuYm8w?= =?utf-8?B?eDhSQmV0aWFFMmhVWjM1c3RlTS8rVlNPZUFPNUlJd3d1cXJQWmpvK1NQM0JP?= =?utf-8?B?RkE0S0U3TDllZWFrMU43WkswVTY4QlZWWmF5T2x5Y2VlU2NOT3ZBckdxRDF0?= =?utf-8?B?ZmZ6L3FxcXE5M0tDYkVtUDd6ajdqMVdwcTlPUUNIclNYUTZnVHRDdWVFV0RE?= =?utf-8?B?UHM1S3FoREpmejVyVW9NeU5XRmhKbWRrSjlPSW5EZW5KTWRFME1OTEpGdTFQ?= =?utf-8?B?WkhsdUdDQzRyY1h1K0JYMnRFRnJqOUQ4Rm95LzJsUEFqbHRKKzd6Q1dMZ3Yr?= =?utf-8?Q?VOMEPA6bZCTnMJkI=3D?= 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: BN0PR11MB5712.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 212de24c-abf0-4f68-0bb0-08da18a4c83b X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Apr 2022 14:42:03.7800 (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: Iwe/rtEPYxm6GThx2/EVLpxI04fhJCfdjM+v3i4Xp2TcWNapojCkKRYx3TcjdtCN4zZ5bak35KYCVvmDR/H3YCqp0Ra+6xWF+QUAmZbyMuc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB5132 X-OriginatorOrg: intel.com 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 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJbHlhIE1heGltZXRzIDxpLm1h eGltZXRzQG92bi5vcmc+DQo+IFNlbnQ6IFRodXJzZGF5LCBBcHJpbCA3LCAyMDIyIDM6NDAgUE0N Cj4gVG86IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+OyBWYW4g SGFhcmVuLCBIYXJyeQ0KPiA8aGFycnkudmFuLmhhYXJlbkBpbnRlbC5jb20+OyBNb3J0ZW4gQnLD uHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPjsNCj4gUmljaGFyZHNvbiwgQnJ1Y2UgPGJy dWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPg0KPiBDYzogaS5tYXhpbWV0c0Bvdm4ub3JnOyBQYWkg RywgU3VuaWwgPHN1bmlsLnBhaS5nQGludGVsLmNvbT47IFN0b2tlcywgSWFuDQo+IDxpYW4uc3Rv a2VzQGludGVsLmNvbT47IEh1LCBKaWF5dSA8amlheXUuaHVAaW50ZWwuY29tPjsgRmVycml0ZXIs IENpYW4NCj4gPGNpYW4uZmVycml0ZXJAaW50ZWwuY29tPjsgb3ZzLWRldkBvcGVudnN3aXRjaC5v cmc7IGRldkBkcGRrLm9yZzsgTWNuYW1hcmEsDQo+IEpvaG4gPGpvaG4ubWNuYW1hcmFAaW50ZWwu Y29tPjsgTydEcmlzY29sbCwgVGltIDx0aW0ub2RyaXNjb2xsQGludGVsLmNvbT47DQo+IEZpbm4s IEVtbWEgPGVtbWEuZmlubkBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBPVlMgRFBESyBETUEt RGV2IGxpYnJhcnkvRGVzaWduIERpc2N1c3Npb24NCj4gDQo+IE9uIDQvNy8yMiAxNjoyNSwgTWF4 aW1lIENvcXVlbGluIHdyb3RlOg0KPiA+IEhpIEhhcnJ5LA0KPiA+DQo+ID4gT24gNC83LzIyIDE2 OjA0LCBWYW4gSGFhcmVuLCBIYXJyeSB3cm90ZToNCj4gPj4gSGkgT1ZTICYgRFBESywgTWFpbnRh aW5lcnMgJiBDb21tdW5pdHksDQo+ID4+DQo+ID4+IFRvcCBwb3N0aW5nIG92ZXJ2aWV3IG9mIGRp c2N1c3Npb24gYXMgcmVwbGllcyB0byB0aHJlYWQgYmVjb21lIHNsb3dlcjoNCj4gPj4gcGVyaGFw cyBpdCBpcyBhIGdvb2QgdGltZSB0byByZXZpZXcgYW5kIHBsYW4gZm9yIG5leHQgc3RlcHM/DQo+ ID4+DQo+ID4+IMKgRnJvbSBteSBwZXJzcGVjdGl2ZSwgaXQgdGhvc2UgbW9zdCB2b2NhbCBpbiB0 aGUgdGhyZWFkIHNlZW0gdG8gYmUgaW4gZmF2b3VyDQo+IG9mIHRoZSBjbGVhbg0KPiA+PiByeC90 eCBzcGxpdCAoImRlZmVyIHdvcmsiKSwgd2l0aCB0aGUgdHJhZGVvZmYgdGhhdCB0aGUgYXBwbGlj YXRpb24gbXVzdCBiZQ0KPiBhd2FyZSBvZiBoYW5kbGluZw0KPiA+PiB0aGUgYXN5bmMgRE1BIGNv bXBsZXRpb25zLiBJZiB0aGVyZSBhcmUgYW55IGNvbmNlcm5zIG9wcG9zaW5nIHVwc3RyZWFtaW5n DQo+IG9mIHRoaXMgbWV0aG9kLA0KPiA+PiBwbGVhc2UgaW5kaWNhdGUgdGhpcyBwcm9tcHRseSwg YW5kIHdlIGNhbiBjb250aW51ZSB0ZWNobmljYWwgZGlzY3Vzc2lvbnMgaGVyZQ0KPiBub3cuDQo+ ID4NCj4gPiBXYXNuJ3QgdGhlcmUgc29tZSBkaXNjdXNzaW9ucyBhYm91dCBoYW5kbGluZyB0aGUg VmlydGlvIGNvbXBsZXRpb25zIHdpdGgNCj4gPiB0aGUgRE1BIGVuZ2luZT8gV2l0aCB0aGF0LCB3 ZSB3b3VsZG4ndCBuZWVkIHRoZSBkZWZlcnJhbCBvZiB3b3JrLg0KPiANCj4gKzENCg0KWWVzIHRo ZXJlIHdhcywgdGhlIERNQS92aXJ0cSBjb21wbGV0aW9ucyB0aHJlYWQgaGVyZSBmb3IgcmVmZXJl bmNlOw0KaHR0cHM6Ly9tYWlsLm9wZW52c3dpdGNoLm9yZy9waXBlcm1haWwvb3ZzLWRldi8yMDIy LU1hcmNoLzM5MjkwOC5odG1sDQoNCkkgZG8gbm90IGJlbGlldmUgdGhhdCB0aGVyZSBpcyBhIHZp YWJsZSBwYXRoIHRvIGFjdHVhbGx5IGltcGxlbWVudGluZyBpdCwgYW5kIHBhcnRpY3VsYXJseQ0K bm90IGluIHRoZSBtb3JlIGNvbXBsZXggY2FzZXM7IGUuZy4gdmlydGlvIHdpdGggZ3Vlc3QtaW50 ZXJydXB0IGVuYWJsZWQuDQoNClRoZSB0aHJlYWQgYWJvdmUgbWVudGlvbnMgYWRkaXRpb25hbCB0 aHJlYWRzIGFuZCB2YXJpb3VzIG90aGVyIG9wdGlvbnM7IG5vbmUgb2Ygd2hpY2gNCkkgYmVsaWV2 ZSB0byBiZSBhIGNsZWFuIG9yIHdvcmthYmxlIHNvbHV0aW9uLiBJJ2QgbGlrZSBpbnB1dCBmcm9t IG90aGVyIGZvbGtzIG1vcmUgZmFtaWxpYXINCndpdGggdGhlIGV4YWN0IGltcGxlbWVudGF0aW9u cyBvZiBWSG9zdC92cmluZ3MsIGFzIHdlbGwgYXMgdGhvc2Ugd2l0aCBETUEgZW5naW5lIGV4cGVy dGlzZS4NCg0KDQo+IFdpdGggdGhlIHZpcnRpbyBjb21wbGV0aW9ucyBoYW5kbGVkIGJ5IERNQSBp dHNlbGYsIHRoZSB2aG9zdCBwb3J0DQo+IHR1cm5zIGFsbW9zdCBpbnRvIGEgcmVhbCBIVyBOSUMu ICBXaXRoIHRoYXQgd2Ugd2lsbCBub3QgbmVlZCBhbnkNCj4gZXh0cmEgbWFuaXB1bGF0aW9ucyBm cm9tIHRoZSBPVlMgc2lkZSwgaS5lLiBubyBuZWVkIHRvIGRlZmVyIGFueQ0KPiB3b3JrIHdoaWxl IG1haW50YWluaW5nIGNsZWFyIHNwbGl0IGJldHdlZW4gcnggYW5kIHR4IG9wZXJhdGlvbnMuDQo+ IA0KPiBJJ2Qgdm90ZSBmb3IgdGhhdC4NCj4gDQo+ID4NCj4gPiBUaGFua3MsDQo+ID4gTWF4aW1l DQoNClRoYW5rcyBmb3IgdGhlIHByb21wdCByZXNwb25zZXMsIGFuZCBsZXRzIHVuZGVyc3RhbmQg aWYgdGhlcmUgaXMgYSB2aWFibGUgd29ya2FibGUgd2F5DQp0byB0b3RhbGx5IGhpZGUgRE1BLWNv bXBsZXRpb25zIGZyb20gdGhlIGFwcGxpY2F0aW9uLg0KDQpSZWdhcmRzLCAgLUhhcnJ5DQoNCg0K PiA+PiBJbiBhYnNlbmNlIG9mIGNvbnRpbnVlZCB0ZWNobmljYWwgZGlzY3Vzc2lvbiBoZXJlLCBJ IHN1Z2dlc3QgU3VuaWwgYW5kIElhbg0KPiBjb2xsYWJvcmF0ZSBvbiBnZXR0aW5nDQo+ID4+IHRo ZSBPVlMgRGVmZXItd29yayBhcHByb2FjaCwgYW5kIERQREsgVkhvc3QgQXN5bmMgcGF0Y2hzZXRz IGF2YWlsYWJsZSBvbg0KPiBHaXRIdWIgZm9yIGVhc2llcg0KPiA+PiBjb25zdW1wdGlvbiBhbmQg ZnV0dXJlIGRldmVsb3BtZW50IChhcyBzdWdnZXN0ZWQgaW4gc2xpZGVzIHByZXNlbnRlZCBvbg0K PiBsYXN0IGNhbGwpLg0KPiA+Pg0KPiA+PiBSZWdhcmRzLCAtSGFycnkNCj4gPj4NCj4gPj4gTm8g aW5saW5lLXJlcGxpZXMgYmVsb3c7IG1lc3NhZ2UganVzdCBmb3IgY29udGV4dC4NCj4gPj4NCj4g Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+PiBGcm9tOiBWYW4gSGFhcmVuLCBI YXJyeQ0KPiA+Pj4gU2VudDogV2VkbmVzZGF5LCBNYXJjaCAzMCwgMjAyMiAxMDowMiBBTQ0KPiA+ Pj4gVG86IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+OyBSaWNoYXJk c29uLCBCcnVjZQ0KPiA+Pj4gPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPg0KPiA+Pj4gQ2M6 IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+OyBQYWkgRywgU3Vu aWwNCj4gPj4+IDxTdW5pbC5QYWkuR0BpbnRlbC5jb20+OyBTdG9rZXMsIElhbiA8aWFuLnN0b2tl c0BpbnRlbC5jb20+OyBIdSwgSmlheXUNCj4gPj4+IDxKaWF5dS5IdUBpbnRlbC5jb20+OyBGZXJy aXRlciwgQ2lhbiA8Q2lhbi5GZXJyaXRlckBpbnRlbC5jb20+OyBJbHlhDQo+IE1heGltZXRzDQo+ ID4+PiA8aS5tYXhpbWV0c0Bvdm4ub3JnPjsgb3ZzLWRldkBvcGVudnN3aXRjaC5vcmc7IGRldkBk cGRrLm9yZzsNCj4gTWNuYW1hcmEsDQo+ID4+PiBKb2huIDxqb2huLm1jbmFtYXJhQGludGVsLmNv bT47IE8nRHJpc2NvbGwsIFRpbQ0KPiA8dGltLm9kcmlzY29sbEBpbnRlbC5jb20+Ow0KPiA+Pj4g RmlubiwgRW1tYSA8RW1tYS5GaW5uQGludGVsLmNvbT4NCj4gPj4+IFN1YmplY3Q6IFJFOiBPVlMg RFBESyBETUEtRGV2IGxpYnJhcnkvRGVzaWduIERpc2N1c3Npb24NCj4gPj4+DQo+ID4+Pj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBNb3J0ZW4gQnLDuHJ1cCA8bWJA c21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiA+Pj4+IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDI5LCAy MDIyIDg6NTkgUE0NCj4gPj4+PiBUbzogVmFuIEhhYXJlbiwgSGFycnkgPGhhcnJ5LnZhbi5oYWFy ZW5AaW50ZWwuY29tPjsgUmljaGFyZHNvbiwgQnJ1Y2UNCj4gPj4+PiA8YnJ1Y2UucmljaGFyZHNv bkBpbnRlbC5jb20+DQo+ID4+Pj4gQ2M6IE1heGltZSBDb3F1ZWxpbiA8bWF4aW1lLmNvcXVlbGlu QHJlZGhhdC5jb20+OyBQYWkgRywgU3VuaWwNCj4gPj4+PiA8c3VuaWwucGFpLmdAaW50ZWwuY29t PjsgU3Rva2VzLCBJYW4gPGlhbi5zdG9rZXNAaW50ZWwuY29tPjsgSHUsIEppYXl1DQo+ID4+Pj4g PGppYXl1Lmh1QGludGVsLmNvbT47IEZlcnJpdGVyLCBDaWFuIDxjaWFuLmZlcnJpdGVyQGludGVs LmNvbT47IElseWENCj4gTWF4aW1ldHMNCj4gPj4+PiA8aS5tYXhpbWV0c0Bvdm4ub3JnPjsgb3Zz LWRldkBvcGVudnN3aXRjaC5vcmc7IGRldkBkcGRrLm9yZzsNCj4gTWNuYW1hcmEsDQo+ID4+PiBK b2huDQo+ID4+Pj4gPGpvaG4ubWNuYW1hcmFAaW50ZWwuY29tPjsgTydEcmlzY29sbCwgVGltIDx0 aW0ub2RyaXNjb2xsQGludGVsLmNvbT47DQo+IEZpbm4sDQo+ID4+Pj4gRW1tYSA8ZW1tYS5maW5u QGludGVsLmNvbT4NCj4gPj4+PiBTdWJqZWN0OiBSRTogT1ZTIERQREsgRE1BLURldiBsaWJyYXJ5 L0Rlc2lnbiBEaXNjdXNzaW9uDQo+ID4+Pj4NCj4gPj4+Pj4gRnJvbTogVmFuIEhhYXJlbiwgSGFy cnkgW21haWx0bzpoYXJyeS52YW4uaGFhcmVuQGludGVsLmNvbV0NCj4gPj4+Pj4gU2VudDogVHVl c2RheSwgMjkgTWFyY2ggMjAyMiAxOS40Ng0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gRnJvbTogTW9ydGVu IEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbT4NCj4gPj4+Pj4+IFNlbnQ6IFR1ZXNk YXksIE1hcmNoIDI5LCAyMDIyIDY6MTQgUE0NCj4gPj4+Pj4+DQo+ID4+Pj4+Pj4gRnJvbTogQnJ1 Y2UgUmljaGFyZHNvbiBbbWFpbHRvOmJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tXQ0KPiA+Pj4+ Pj4+IFNlbnQ6IFR1ZXNkYXksIDI5IE1hcmNoIDIwMjIgMTkuMDMNCj4gPj4+Pj4+Pg0KPiA+Pj4+ Pj4+IE9uIFR1ZSwgTWFyIDI5LCAyMDIyIGF0IDA2OjQ1OjE5UE0gKzAyMDAsIE1vcnRlbiBCcsO4 cnVwIHdyb3RlOg0KPiA+Pj4+Pj4+Pj4gRnJvbTogTWF4aW1lIENvcXVlbGluIFttYWlsdG86bWF4 aW1lLmNvcXVlbGluQHJlZGhhdC5jb21dDQo+ID4+Pj4+Pj4+PiBTZW50OiBUdWVzZGF5LCAyOSBN YXJjaCAyMDIyIDE4LjI0DQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gSGkgTW9ydGVuLA0KPiA+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IE9uIDMvMjkvMjIgMTY6NDQsIE1vcnRlbiBCcsO4cnVwIHdy b3RlOg0KPiA+Pj4+Pj4+Pj4+PiBGcm9tOiBWYW4gSGFhcmVuLCBIYXJyeSBbbWFpbHRvOmhhcnJ5 LnZhbi5oYWFyZW5AaW50ZWwuY29tXQ0KPiA+Pj4+Pj4+Pj4+PiBTZW50OiBUdWVzZGF5LCAyOSBN YXJjaCAyMDIyIDE1LjAyDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBGcm9tOiBNb3J0 ZW4gQnLDuHJ1cCA8bWJAc21hcnRzaGFyZXN5c3RlbXMuY29tPg0KPiA+Pj4+Pj4+Pj4+Pj4gU2Vu dDogVHVlc2RheSwgTWFyY2ggMjksIDIwMjIgMTo1MSBQTQ0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+ Pj4+Pj4+Pj4+IEhhdmluZyB0aG91Z2h0IG1vcmUgYWJvdXQgaXQsIEkgdGhpbmsgdGhhdCBhIGNv bXBsZXRlbHkNCj4gPj4+Pj4+PiBkaWZmZXJlbnQNCj4gPj4+Pj4+Pj4+IGFyY2hpdGVjdHVyYWwg YXBwcm9hY2ggaXMgcmVxdWlyZWQ6DQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gTWFu eSBvZiB0aGUgRFBESyBFdGhlcm5ldCBQTURzIGltcGxlbWVudCBhIHZhcmlldHkgb2YgUlgNCj4g Pj4+Pj4gYW5kIFRYDQo+ID4+Pj4+Pj4+PiBwYWNrZXQgYnVyc3QgZnVuY3Rpb25zLCBlYWNoIG9w dGltaXplZCBmb3IgZGlmZmVyZW50IENQVSB2ZWN0b3INCj4gPj4+Pj4+Pj4+IGluc3RydWN0aW9u IHNldHMuIFRoZSBhdmFpbGFiaWxpdHkgb2YgYSBETUEgZW5naW5lIHNob3VsZCBiZQ0KPiA+Pj4+ Pj4+IHRyZWF0ZWQNCj4gPj4+Pj4+Pj4+IHRoZSBzYW1lIHdheS4gU28gSSBzdWdnZXN0IHRoYXQg UE1EcyBjb3B5aW5nIHBhY2tldCBjb250ZW50cywNCj4gPj4+Pj4gZS5nLg0KPiA+Pj4+Pj4+Pj4g bWVtaWYsIHBjYXAsIHZteG5ldDMsIHNob3VsZCBpbXBsZW1lbnQgRE1BIG9wdGltaXplZCBSWCBh bmQgVFgNCj4gPj4+Pj4+PiBwYWNrZXQNCj4gPj4+Pj4+Pj4+IGJ1cnN0IGZ1bmN0aW9ucy4NCj4g Pj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBTaW1pbGFybHkgZm9yIHRoZSBEUERLIHZob3N0 IGxpYnJhcnkuDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gSW4gc3VjaCBhbiBhcmNo aXRlY3R1cmUsIGl0IHdvdWxkIGJlIHRoZSBhcHBsaWNhdGlvbidzIGpvYg0KPiA+Pj4+PiB0bw0K PiA+Pj4+Pj4+Pj4gYWxsb2NhdGUgRE1BIGNoYW5uZWxzIGFuZCBhc3NpZ24gdGhlbSB0byB0aGUg c3BlY2lmaWMgUE1EcyB0aGF0DQo+ID4+Pj4+Pj4gc2hvdWxkDQo+ID4+Pj4+Pj4+PiB1c2UgdGhl bS4gQnV0IHRoZSBhY3R1YWwgdXNlIG9mIHRoZSBETUEgY2hhbm5lbHMgd291bGQgbW92ZQ0KPiA+ Pj4+PiBkb3duDQo+ID4+Pj4+Pj4gYmVsb3cNCj4gPj4+Pj4+Pj4+IHRoZSBhcHBsaWNhdGlvbiBh bmQgaW50byB0aGUgRFBESyBQTURzIGFuZCBsaWJyYXJpZXMuDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IE1lZCB2ZW5saWcgaGlsc2VuIC8gS2luZCByZWdh cmRzLA0KPiA+Pj4+Pj4+Pj4+Pj4gLU1vcnRlbiBCcsO4cnVwDQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4+Pj4+IEhpIE1vcnRlbiwNCj4gPj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4gVGhhdCdz ICpleGFjdGx5KiBob3cgdGhpcyBhcmNoaXRlY3R1cmUgaXMgZGVzaWduZWQgJg0KPiA+Pj4+Pj4+ IGltcGxlbWVudGVkLg0KPiA+Pj4+Pj4+Pj4+PiAxLsKgwqDCoCBUaGUgRE1BIGNvbmZpZ3VyYXRp b24gYW5kIGluaXRpYWxpemF0aW9uIGlzIHVwIHRvIHRoZQ0KPiA+Pj4+Pj4+IGFwcGxpY2F0aW9u DQo+ID4+Pj4+Pj4+PiAoT1ZTKS4NCj4gPj4+Pj4+Pj4+Pj4gMi7CoMKgwqAgVGhlIFZIb3N0IGxp YnJhcnkgaXMgcGFzc2VkIHRoZSBETUEtZGV2IElELCBhbmQgaXRzDQo+ID4+Pj4+IG5ldw0KPiA+ Pj4+Pj4+IGFzeW5jDQo+ID4+Pj4+Pj4+PiByeC90eCBBUElzLCBhbmQgdXNlcyB0aGUgRE1BIGRl dmljZSB0byBhY2NlbGVyYXRlIHRoZSBjb3B5Lg0KPiA+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+ PiBMb29raW5nIGZvcndhcmQgdG8gdGFsa2luZyBvbiB0aGUgY2FsbCB0aGF0IGp1c3Qgc3RhcnRl ZC4NCj4gPj4+Pj4+PiBSZWdhcmRzLCAtDQo+ID4+Pj4+Pj4+PiBIYXJyeQ0KPiA+Pj4+Pj4+Pj4+ Pg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gT0ssIHRoYW5rcyAtIGFzIEkgc2FpZCBvbiB0 aGUgY2FsbCwgSSBoYXZlbid0IGxvb2tlZCBhdCB0aGUNCj4gPj4+Pj4+PiBwYXRjaGVzLg0KPiA+ Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gVGhlbiwgSSBzdXBwb3NlIHRoYXQgdGhlIFRYIGNvbXBs ZXRpb25zIGNhbiBiZSBoYW5kbGVkIGluIHRoZQ0KPiA+Pj4+PiBUWA0KPiA+Pj4+Pj4+Pj4gZnVu Y3Rpb24sIGFuZCB0aGUgUlggY29tcGxldGlvbnMgY2FuIGJlIGhhbmRsZWQgaW4gdGhlIFJYDQo+ ID4+Pj4+IGZ1bmN0aW9uLA0KPiA+Pj4+Pj4+Pj4ganVzdCBsaWtlIHRoZSBFdGhkZXYgUE1EcyBo YW5kbGUgcGFja2V0IGRlc2NyaXB0b3JzOg0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gVFhf QnVyc3QodHhfcGFja2V0X2FycmF5KToNCj4gPj4+Pj4+Pj4+PiAxLsKgwqDCoCBDbGVhbiB1cCBk ZXNjcmlwdG9ycyBwcm9jZXNzZWQgYnkgdGhlIE5JQyBjaGlwLiAtLT4NCj4gPj4+Pj4gUHJvY2Vz cw0KPiA+Pj4+Pj4+IFRYDQo+ID4+Pj4+Pj4+PiBETUEgY2hhbm5lbCBjb21wbGV0aW9ucy4gKEVm ZmVjdGl2ZWx5LCB0aGUgMm5kIHBpcGVsaW5lIHN0YWdlLikNCj4gPj4+Pj4+Pj4+PiAyLsKgwqDC oCBQYXNzIG9uIHRoZSB0eF9wYWNrZXRfYXJyYXkgdG8gdGhlIE5JQyBjaGlwDQo+ID4+Pj4+IGRl c2NyaXB0b3JzLiAtLQ0KPiA+Pj4+Pj4+PiBQYXNzDQo+ID4+Pj4+Pj4+PiBvbiB0aGUgdHhfcGFj a2V0X2FycmF5IHRvIHRoZSBUWCBETUEgY2hhbm5lbC4gKEVmZmVjdGl2ZWx5LCB0aGUNCj4gPj4+ Pj4gMXN0DQo+ID4+Pj4+Pj4+PiBwaXBlbGluZSBzdGFnZS4pDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+ Pj4+Pj4gVGhlIHByb2JsZW0gaXMgVHggZnVuY3Rpb24gbWlnaHQgbm90IGJlIGNhbGxlZCBhZ2Fp biwgc28NCj4gPj4+Pj4gZW5xdWV1ZWQNCj4gPj4+Pj4+Pj4+IHBhY2tldHMgaW4gMi4gbWF5IG5l dmVyIGJlIGNvbXBsZXRlZCBmcm9tIGEgVmlydGlvIHBvaW50IG9mDQo+ID4+Pj4+IHZpZXcuDQo+ ID4+Pj4+Pj4gSU9XLA0KPiA+Pj4+Pj4+Pj4gdGhlIHBhY2tldHMgd2lsbCBiZSBjb3BpZWQgdG8g dGhlIFZpcnRpbyBkZXNjcmlwdG9ycyBidWZmZXJzLA0KPiA+Pj4+PiBidXQNCj4gPj4+Pj4+PiB0 aGUNCj4gPj4+Pj4+Pj4+IGRlc2NyaXB0b3JzIHdpbGwgbm90IGJlIG1hZGUgYXZhaWxhYmxlIHRv IHRoZSBWaXJ0aW8gZHJpdmVyLg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+PiBJbiB0aGF0IGNhc2Us IHRoZSBhcHBsaWNhdGlvbiBuZWVkcyB0byBjYWxsIFRYX0J1cnN0KCkNCj4gPj4+Pj4gcGVyaW9k aWNhbGx5DQo+ID4+Pj4+Pj4gd2l0aCBhbiBlbXB0eSBhcnJheSwgZm9yIGNvbXBsZXRpb24gcHVy cG9zZXMuDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoaXMgaXMgd2hhdCB0aGUgImRlZmVyIHdvcmsiIGRv ZXMgYXQgdGhlIE9WUyB0aHJlYWQtbGV2ZWwsIGJ1dCBpbnN0ZWFkDQo+ID4+Pj4+IG9mDQo+ID4+ Pj4+ICJicnV0ZS1mb3JjaW5nIiBhbmQgKmFsd2F5cyogbWFraW5nIHRoZSBjYWxsLCB0aGUgZGVm ZXIgd29yayBjb25jZXB0DQo+ID4+Pj4+IHRyYWNrcw0KPiA+Pj4+PiAqd2hlbiogdGhlcmUgaXMg b3V0c3RhbmRpbmcgd29yayAoRE1BIGNvcGllcykgdG8gYmUgY29tcGxldGVkDQo+ID4+Pj4+ICgi ZGVmZXJyZWQgd29yayIpDQo+ID4+Pj4+IGFuZCBjYWxscyB0aGUgZ2VuZXJpYyBjb21wbGV0aW9u IGZ1bmN0aW9uIGF0IHRoYXQgcG9pbnQuDQo+ID4+Pj4+DQo+ID4+Pj4+IFNvICJkZWZlciB3b3Jr IiBpcyBnZW5lcmljIGluZnJhc3RydWN0dXJlIGF0IHRoZSBPVlMgdGhyZWFkIGxldmVsIHRvDQo+ ID4+Pj4+IGhhbmRsZQ0KPiA+Pj4+PiB3b3JrIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSAibGF0ZXIi LCBlLmcuIERNQSBjb21wbGV0aW9uIGhhbmRsaW5nLg0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+ Pj4+PiBPciBzb21lIHNvcnQgb2YgVFhfS2VlcGFsaXZlKCkgZnVuY3Rpb24gY2FuIGJlIGFkZGVk IHRvIHRoZSBEUERLDQo+ID4+Pj4+Pj4gbGlicmFyeSwgdG8gaGFuZGxlIERNQSBjb21wbGV0aW9u LiBJdCBtaWdodCBldmVuIGhhbmRsZSBtdWx0aXBsZQ0KPiA+Pj4+PiBETUENCj4gPj4+Pj4+PiBj aGFubmVscywgaWYgY29udmVuaWVudCAtIGFuZCBpZiBwb3NzaWJsZSB3aXRob3V0IGxvY2tpbmcg b3Igb3RoZXINCj4gPj4+Pj4+PiB3ZWlyZCBjb21wbGV4aXR5Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBU aGF0J3MgZXhhY3RseSBob3cgaXQgaXMgZG9uZSwgdGhlIFZIb3N0IGxpYnJhcnkgaGFzIGEgbmV3 IEFQSSBhZGRlZCwNCj4gPj4+Pj4gd2hpY2ggYWxsb3dzDQo+ID4+Pj4+IGZvciBoYW5kbGluZyBj b21wbGV0aW9ucy4gQW5kIGluIHRoZSAiTmV0ZGV2IGxheWVyIiAofk9WUyBldGhkZXYNCj4gPj4+ Pj4gYWJzdHJhY3Rpb24pDQo+ID4+Pj4+IHdlIGFkZCBhIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBP VlMgdGhyZWFkIHRvIGRvIHRob3NlIGNvbXBsZXRpb25zIGluIGENCj4gPj4+Pj4gbmV3DQo+ID4+ Pj4+IE5ldGRldi1hYnN0cmFjdGlvbiBBUEkgY2FsbGVkICJhc3luY19wcm9jZXNzIiB3aGVyZSB0 aGUgY29tcGxldGlvbnMgY2FuDQo+ID4+Pj4+IGJlIGNoZWNrZWQuDQo+ID4+Pj4+DQo+ID4+Pj4+ IFRoZSBvbmx5IG1ldGhvZCB0byBhYnN0cmFjdCB0aGVtIGlzIHRvICJoaWRlIiB0aGVtIHNvbWV3 aGVyZSB0aGF0IHdpbGwNCj4gPj4+Pj4gYWx3YXlzIGJlDQo+ID4+Pj4+IHBvbGxlZCwgZS5nLiBh biBldGhkZXYgcG9ydCdzIFJYIGZ1bmN0aW9uLsKgIEJvdGggVjMgYW5kIFY0IGFwcHJvYWNoZXMN Cj4gPj4+Pj4gdXNlIHRoaXMgbWV0aG9kLg0KPiA+Pj4+PiBUaGlzIGFsbG93cyAiY29tcGxldGlv bnMiIHRvIGJlIHRyYW5zcGFyZW50IHRvIHRoZSBhcHAsIGF0IHRoZSB0cmFkZW9mZg0KPiA+Pj4+ PiB0byBoYXZpbmcgYmFkDQo+ID4+Pj4+IHNlcGFyYXRpb27CoCBvZiBjb25jZXJucyBhcyBSeCBh bmQgVHggYXJlIG5vdyB0aWVkLXRvZ2V0aGVyLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGUgcG9pbnQg aXMsIHRoZSBBcHBsaWNhdGlvbiBsYXllciBtdXN0ICpzb21laG93ICogaGFuZGxlIG9mDQo+ID4+ Pj4+IGNvbXBsZXRpb25zLg0KPiA+Pj4+PiBTbyBmdW5kYW1lbnRhbGx5IHRoZXJlIGFyZSAyIG9w dGlvbnMgZm9yIHRoZSBBcHBsaWNhdGlvbiBsZXZlbDoNCj4gPj4+Pj4NCj4gPj4+Pj4gQSkgTWFr ZSB0aGUgYXBwbGljYXRpb24gcGVyaW9kaWNhbGx5IGNhbGwgYSAiaGFuZGxlIGNvbXBsZXRpb25z Ig0KPiA+Pj4+PiBmdW5jdGlvbg0KPiA+Pj4+PiDCoMKgwqDCoEExKSBEZWZlciB3b3JrLCBjYWxs IHdoZW4gbmVlZGVkLCBhbmQgdHJhY2sgIm5lZWRlZCIgYXQgYXBwDQo+ID4+Pj4+IGxheWVyLCBh bmQgY2FsbGluZyBpbnRvIHZob3N0IHR4cSBjb21wbGV0ZSBhcyByZXF1aXJlZC4NCj4gPj4+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBFbGVnYW50IGluIHRoYXQgIm5vIHdvcmsiIG1lYW5zICJu byBjeWNsZXMgc3BlbnQiIG9uDQo+ID4+Pj4+IGNoZWNraW5nIERNQSBjb21wbGV0aW9ucy4NCj4g Pj4+Pj4gwqDCoMKgwqBBMikgQnJ1dGUtZm9yY2UtYWx3YXlzLWNhbGwsIGFuZCBwYXkgc29tZSBv dmVyaGVhZCB3aGVuIG5vdA0KPiA+Pj4+PiByZXF1aXJlZC4NCj4gPj4+Pj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBDeWNsZS1jb3N0IGluICJubyB3b3JrIiBzY2VuYXJpb3MuIERlcGVuZGluZyBv biAjIG9mDQo+ID4+Pj4+IHZob3N0IHF1ZXVlcywgdGhpcyBhZGRzIHVwIGFzIHBvbGxpbmcgcmVx dWlyZWQgKnBlciB2aG9zdCB0eHEqLg0KPiA+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFs c28gbm90ZSB0aGF0ICJjaGVja2luZyBETUEgY29tcGxldGlvbnMiIG1lYW5zIHRha2luZyBhDQo+ ID4+Pj4+IHZpcnRxLWxvY2ssIHNvIHRoaXMgImJydXRlLWZvcmNlIiBjYW4gbmVlZGxlc3NseSBp bmNyZWFzZSB4LXRocmVhZA0KPiA+Pj4+PiBjb250ZW50aW9uIQ0KPiA+Pj4+DQo+ID4+Pj4gQSBz aWRlIG5vdGU6IEkgZG9uJ3Qgc2VlIHdoeSBsb2NraW5nIGlzIHJlcXVpcmVkIHRvIHRlc3QgZm9y IERNQQ0KPiBjb21wbGV0aW9ucy4NCj4gPj4+PiBydGVfZG1hX3ZjaGFuX3N0YXR1cygpIGlzIGxv Y2tsZXNzLCBlLmcuOg0KPiA+Pj4+DQo+ID4+Pg0KPiBodHRwczovL2VsaXhpci5ib290bGluLmNv bS9kcGRrL2xhdGVzdC9zb3VyY2UvZHJpdmVycy9kbWEvaW9hdC9pb2F0X2RtYWRldi5jI0wNCj4g Pj4+IDU2DQo+ID4+Pj4gMA0KPiA+Pj4NCj4gPj4+IENvcnJlY3QsIERNQS1kZXYgaXMgImV0aGRl diBsaWtlIjsgZWFjaCBETUEtaWQgY2FuIGJlIHVzZWQgaW4gYSBsb2NrZnJlZQ0KPiBtYW5uZXIN Cj4gPj4+IGZyb20gYSBzaW5nbGUgdGhyZWFkLg0KPiA+Pj4NCj4gPj4+IFRoZSBsb2NrcyBJIHJl ZmVyIHRvIGFyZSBhdCB0aGUgT1ZTLW5ldGRldiBsZXZlbCwgYXMgdmlydHEncyBhcmUgc2hhcmVk IGFjcm9zcw0KPiBPVlMncw0KPiA+Pj4gZGF0YXBsYW5lIHRocmVhZHMuDQo+ID4+PiBTbyB0aGUg Ik0gdG8gTiIgY29tZXMgZnJvbSBNIGRhdGFwbGFuZSB0aHJlYWRzIHRvIE4gdmlydHFzLCBoZW5j ZQ0KPiByZXF1aXJpbmcNCj4gPj4+IHNvbWUgbG9ja2luZy4NCj4gPj4+DQo+ID4+Pg0KPiA+Pj4+ PiBCKSBIaWRlIGNvbXBsZXRpb25zIGFuZCBsaXZlIHdpdGggdGhlIGNvbXBsZXhpdHkvYXJjaGl0 ZWN0dXJhbA0KPiA+Pj4+PiBzYWNyaWZpY2Ugb2YgbWl4ZWQtUnhUeC4NCj4gPj4+Pj4gwqDCoMKg wqBWYXJpb3VzIGRvd25zaWRlcyBoZXJlIGluIG15IG9waW5pb24sIHNlZSB0aGUgc2xpZGUgZGVj aw0KPiA+Pj4+PiBwcmVzZW50ZWQgZWFybGllciB0b2RheSBmb3IgYSBzdW1tYXJ5Lg0KPiA+Pj4+ Pg0KPiA+Pj4+PiBJbiBteSBvcGluaW9uLCBBMSBpcyB0aGUgbW9zdCBlbGVnYW50IHNvbHV0aW9u LCBhcyBpdCBoYXMgYSBjbGVhbg0KPiA+Pj4+PiBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zLCBkb2Vz IG5vdMKgIGNhdXNlDQo+ID4+Pj4+IGF2b2lkYWJsZSBjb250ZW50aW9uIG9uIHZpcnRxIGxvY2tz LCBhbmQgc3BlbmRzIG5vIGN5Y2xlcyB3aGVuIHRoZXJlIGlzDQo+ID4+Pj4+IG5vIGNvbXBsZXRp b24gd29yayB0byBkby4NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IFRoYW5rIHlvdSBmb3IgZWxh Ym9yYXRpbmcsIEhhcnJ5Lg0KPiA+Pj4NCj4gPj4+IFRoYW5rcyBmb3IgcGFydC10YWtpbmcgaW4g dGhlIGRpc2N1c3Npb24gJiBwcm92aWRpbmcgeW91ciBpbnNpZ2h0IQ0KPiA+Pj4NCj4gPj4+PiBJ IHN0cm9uZ2x5IG9wcG9zZSBhZ2FpbnN0IGhpZGluZyBhbnkgcGFydCBvZiBUWCBwcm9jZXNzaW5n IGluIGFuIFJYIGZ1bmN0aW9uLg0KPiBJdA0KPiA+Pj4gaXMganVzdA0KPiA+Pj4+IHdyb25nIGlu IHNvIG1hbnkgd2F5cyENCj4gPj4+Pg0KPiA+Pj4+IEkgYWdyZWUgdGhhdCBBMSBpcyB0aGUgbW9z dCBlbGVnYW50IHNvbHV0aW9uLiBBbmQgYmVpbmcgdGhlIG1vc3QgZWxlZ2FudA0KPiA+Pj4gc29s dXRpb24sIGl0DQo+ID4+Pj4gaXMgcHJvYmFibHkgYWxzbyB0aGUgbW9zdCBmdXR1cmUgcHJvb2Yg c29sdXRpb24uIDotKQ0KPiA+Pj4NCj4gPj4+IEkgdGhpbmsgc28gdG9vLCB5ZXMuDQo+ID4+Pg0K PiA+Pj4+IEkgd291bGQgYWxzbyBsaWtlIHRvIHN0cmVzcyB0aGF0IERNQSBjb21wbGV0aW9uIGhh bmRsaW5nIGJlbG9uZ3MgaW4gdGhlDQo+IERQREsNCj4gPj4+PiBsaWJyYXJ5LCBub3QgaW4gdGhl IGFwcGxpY2F0aW9uLiBBbmQgeWVzLCB0aGUgYXBwbGljYXRpb24gd2lsbCBiZSByZXF1aXJlZCB0 bw0KPiBjYWxsDQo+ID4+PiBzb21lDQo+ID4+Pj4gImhhbmRsZSBETUEgY29tcGxldGlvbnMiIGZ1 bmN0aW9uIGluIHRoZSBEUERLIGxpYnJhcnkuIEJ1dCBzaW5jZSB0aGUNCj4gPj4+IGFwcGxpY2F0 aW9uDQo+ID4+Pj4gYWxyZWFkeSBrbm93cyB0aGF0IGl0IHVzZXMgRE1BLCB0aGUgYXBwbGljYXRp b24gc2hvdWxkIGFsc28ga25vdyB0aGF0IGl0DQo+IG5lZWRzDQo+ID4+PiB0bw0KPiA+Pj4+IGNh bGwgdGhpcyBleHRyYSBmdW5jdGlvbiAtIHNvIEkgY29uc2lkZXIgdGhpcyByZXF1aXJlbWVudCBw ZXJmZWN0bHkgYWNjZXB0YWJsZS4NCj4gPj4+DQo+ID4+PiBBZ3JlZSBoZXJlLg0KPiA+Pj4NCj4g Pj4+PiBJIHByZWZlciBpZiB0aGUgRFBESyB2aG9zdCBsaWJyYXJ5IGNhbiBoaWRlIGl0cyBpbm5l ciB3b3JraW5ncyBmcm9tIHRoZQ0KPiA+Pj4gYXBwbGljYXRpb24sDQo+ID4+Pj4gYW5kIGp1c3Qg ZXhwb3NlIHRoZSBhZGRpdGlvbmFsICJoYW5kbGUgY29tcGxldGlvbnMiIGZ1bmN0aW9uLiBUaGlz IGFsc28NCj4gbWVhbnMNCj4gPj4+IHRoYXQNCj4gPj4+PiB0aGUgaW5uZXIgd29ya2luZ3MgY2Fu IGJlIGltcGxlbWVudGVkIGFzICJkZWZlciB3b3JrIiwgb3IgYnkgc29tZSBvdGhlcg0KPiA+Pj4+ IGFsZ29yaXRobS4gQW5kIGl0IGNhbiBiZSB0d2Vha2VkIGFuZCBvcHRpbWl6ZWQgbGF0ZXIuDQo+ ID4+Pg0KPiA+Pj4gWWVzLCB0aGUgY2hvaWNlIGluIGhvdyB0byBjYWxsIHRoZSBoYW5kbGVfY29t cGxldGlvbnMgZnVuY3Rpb24gaXMgQXBwbGljYXRpb24NCj4gPj4+IGxheWVyLg0KPiA+Pj4gRm9y IE9WUyB3ZSBkZXNpZ25lZCBEZWZlciBXb3JrLCBWMyBhbmQgVjQuIEJ1dCBpdCBpcyBhbiBBcHAg bGV2ZWwgY2hvaWNlLA0KPiBhbmQNCj4gPj4+IGV2ZXJ5DQo+ID4+PiBhcHBsaWNhdGlvbiBpcyBm cmVlIHRvIGNob29zZSBpdHMgb3duIG1ldGhvZC4NCj4gPj4+DQo+ID4+Pj4gVGhpbmtpbmcgYWJv dXQgdGhlIGxvbmcgdGVybSBwZXJzcGVjdGl2ZSwgdGhpcyBkZXNpZ24gcGF0dGVybiBpcyBjb21t b24NCj4gZm9yDQo+ID4+PiBib3RoDQo+ID4+Pj4gdGhlIHZob3N0IGxpYnJhcnkgYW5kIG90aGVy IERQREsgbGlicmFyaWVzIHRoYXQgY291bGQgYmVuZWZpdCBmcm9tIERNQSAoZS5nLg0KPiA+Pj4+ IHZteG5ldDMgYW5kIHBjYXAgUE1EcyksIHNvIGl0IGNvdWxkIGJlIGFic3RyYWN0ZWQgaW50byB0 aGUgRE1BIGxpYnJhcnkgb3INCj4gYQ0KPiA+Pj4+IHNlcGFyYXRlIGxpYnJhcnkuIEJ1dCBmb3Ig bm93LCB3ZSBzaG91bGQgZm9jdXMgb24gdGhlIHZob3N0IHVzZSBjYXNlLCBhbmQNCj4ganVzdA0K PiA+Pj4ga2VlcA0KPiA+Pj4+IHRoZSBsb25nIHRlcm0gcm9hZG1hcCBmb3IgdXNpbmcgRE1BIGlu IG1pbmQuDQo+ID4+Pg0KPiA+Pj4gVG90YWxseSBhZ3JlZSB0byBrZWVwIGxvbmcgdGVybSByb2Fk bWFwIGluIG1pbmQ7IGJ1dCBJJ20gbm90IHN1cmUgd2UgY2FuDQo+ID4+PiByZWZhY3Rvcg0KPiA+ Pj4gbG9naWMgb3V0IG9mIHZob3N0LiBXaGVuIERNQS1jb21wbGV0aW9ucyBhcnJpdmUsIHRoZSB2 aXJ0USBuZWVkcyB0byBiZQ0KPiA+Pj4gdXBkYXRlZDsNCj4gPj4+IHRoaXMgY2F1c2VzIGEgdGln aHQgY291cGxpbmcgYmV0d2VlbiB0aGUgRE1BIGNvbXBsZXRpb24gY291bnQsIGFuZCB0aGUNCj4g dmhvc3QNCj4gPj4+IGxpYnJhcnkuDQo+ID4+Pg0KPiA+Pj4gQXMgSWx5YSByYWlzZWQgb24gdGhl IGNhbGwgeWVzdGVyZGF5LCB0aGVyZSBpcyBhbiAiaW5fb3JkZXIiIHJlcXVpcmVtZW50IGluIHRo ZQ0KPiA+Pj4gdmhvc3QNCj4gPj4+IGxpYnJhcnksIHRoYXQgcGVyIHZpcnRxIHRoZSBwYWNrZXRz IGFyZSBwcmVzZW50ZWQgdG8gdGhlIGd1ZXN0ICJpbiBvcmRlciIgb2YNCj4gPj4+IGVucXVldWUu DQo+ID4+PiAoVG8gYmUgY2xlYXIsICpub3QqIG9yZGVyIG9mIERNQS1jb21wbGV0aW9uISBBcyBK aWF5dSBtZW50aW9uZWQsIHRoZSBWaG9zdA0KPiA+Pj4gbGlicmFyeQ0KPiA+Pj4gaGFuZGxlcyB0 aGlzIHRvZGF5IGJ5IHJlLW9yZGVyaW5nIHRoZSBETUEgY29tcGxldGlvbnMuKQ0KPiA+Pj4NCj4g Pj4+DQo+ID4+Pj4gUmVwaHJhc2luZyB3aGF0IEkgc2FpZCBvbiB0aGUgY29uZmVyZW5jZSBjYWxs OiBUaGlzIHZob3N0IGRlc2lnbiB3aWxsDQo+IGJlY29tZQ0KPiA+Pj4gdGhlDQo+ID4+Pj4gY29t bW9uIGRlc2lnbiBwYXR0ZXJuIGZvciB1c2luZyBETUEgaW4gRFBESyBsaWJyYXJpZXMuIElmIHdl IGdldCBpdCB3cm9uZywNCj4gd2UNCj4gPj4+IGFyZQ0KPiA+Pj4+IHN0dWNrIHdpdGggaXQuDQo+ ID4+Pg0KPiA+Pj4gQWdyZWUsIGFuZCBpZiB3ZSBnZXQgaXQgcmlnaHQsIHRoZW4gd2UncmUgc3R1 Y2sgd2l0aCBpdCB0b28hIDopDQo+ID4+Pg0KPiA+Pj4NCj4gPj4+Pj4+Pj4gSGVyZSBpcyBhbm90 aGVyIGlkZWEsIGluc3BpcmVkIGJ5IGEgcHJlc2VudGF0aW9uIGF0IG9uZSBvZiB0aGUNCj4gPj4+ Pj4gRFBESw0KPiA+Pj4+Pj4+IFVzZXJzcGFjZSBjb25mZXJlbmNlcy4gSXQgbWF5IGJlIHdpc2hm dWwgdGhpbmtpbmcsIHRob3VnaDoNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gQWRkIGFuIGFkZGl0 aW9uYWwgdHJhbnNhY3Rpb24gdG8gZWFjaCBETUEgYnVyc3Q7IGEgc3BlY2lhbA0KPiA+Pj4+Pj4+ IHRyYW5zYWN0aW9uIGNvbnRhaW5pbmcgdGhlIG1lbW9yeSB3cml0ZSBvcGVyYXRpb24gdGhhdCBt YWtlcyB0aGUNCj4gPj4+Pj4+PiBkZXNjcmlwdG9ycyBhdmFpbGFibGUgdG8gdGhlIFZpcnRpbyBk cml2ZXIuDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBUaGF0IGlzIHNvbWV0aGlu ZyB0aGF0IGNhbiB3b3JrLCBzbyBsb25nIGFzIHRoZSByZWNlaXZlciBpcw0KPiA+Pj4+PiBvcGVy YXRpbmcNCj4gPj4+Pj4+PiBpbg0KPiA+Pj4+Pj4+IHBvbGxpbmcgbW9kZS4gRm9yIGNhc2VzIHdo ZXJlIHZpcnRpbyBpbnRlcnJ1cHRzIGFyZSBlbmFibGVkLCB5b3UNCj4gPj4+Pj4gc3RpbGwNCj4g Pj4+Pj4+PiBuZWVkDQo+ID4+Pj4+Pj4gdG8gZG8gYSB3cml0ZSB0byB0aGUgZXZlbnRmZCBpbiB0 aGUga2VybmVsIGluIHZob3N0IHRvIHNpZ25hbCB0aGUNCj4gPj4+Pj4+PiB2aXJ0aW8NCj4gPj4+ Pj4+PiBzaWRlLiBUaGF0J3Mgbm90IHNvbWV0aGluZyB0aGF0IGNhbiBiZSBvZmZsb2FkZWQgdG8g YSBETUEgZW5naW5lLA0KPiA+Pj4+Pj4+IHNhZGx5LCBzbw0KPiA+Pj4+Pj4+IHdlIHN0aWxsIG5l ZWQgc29tZSBmb3JtIG9mIGNvbXBsZXRpb24gY2FsbC4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBJIGd1 ZXNzIHRoYXQgdmlydGlvIGludGVycnVwdHMgaXMgdGhlIG1vc3Qgd2lkZWx5IGRlcGxveWVkIHNj ZW5hcmlvLA0KPiA+Pj4+PiBzbyBsZXQncyBpZ25vcmUNCj4gPj4+Pj4+IHRoZSBETUEgVFggY29t cGxldGlvbiB0cmFuc2FjdGlvbiBmb3Igbm93IC0gYW5kIGNhbGwgaXQgYSBwb3NzaWJsZQ0KPiA+ Pj4+PiBmdXR1cmUNCj4gPj4+Pj4+IG9wdGltaXphdGlvbiBmb3Igc3BlY2lmaWMgdXNlIGNhc2Vz LiBTbyBpdCBzZWVtcyB0aGF0IHNvbWUgZm9ybSBvZg0KPiA+Pj4+PiBjb21wbGV0aW9uIGNhbGwN Cj4gPj4+Pj4+IGlzIHVuYXZvaWRhYmxlLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBBZ3JlZSB0byBsZWF2 ZSB0aGlzIGFzaWRlLCB0aGVyZSBpcyBpbiB0aGVvcnkgYSBwb3RlbnRpYWwgb3B0aW1pemF0aW9u LA0KPiA+Pj4+PiBidXQNCj4gPj4+Pj4gdW5saWtlbHkgdG8gYmUgb2YgbGFyZ2UgdmFsdWUuDQo+ ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBPbmUgbW9yZSB0aGluZzogV2hlbiB1c2luZyBETUEgdG8g cGFzcyBvbiBwYWNrZXRzIGludG8gYSBndWVzdCwgdGhlcmUNCj4gY291bGQNCj4gPj4+IGJlIGEN Cj4gPj4+PiBkZWxheSBmcm9tIHRoZSBETUEgY29tcGxldGVzIHVudGlsIHRoZSBndWVzdCBpcyBz aWduYWxlZC4gSXMgdGhlcmUgYW55IENQVQ0KPiA+Pj4gY2FjaGUNCj4gPj4+PiBob3RuZXNzIHJl Z2FyZGluZyB0aGUgZ3Vlc3QncyBhY2Nlc3MgdG8gdGhlIHBhY2tldCBkYXRhIHRvIGNvbnNpZGVy IGhlcmU/DQo+IEkuZS4gaWYNCj4gPj4+IHdlDQo+ID4+Pj4gd2FpdCBzaWduYWxpbmcgdGhlIGd1 ZXN0LCB0aGUgcGFja2V0IGRhdGEgbWF5IGdldCBjb2xkLg0KPiA+Pj4NCj4gPj4+IEludGVyZXN0 aW5nIHF1ZXN0aW9uOyB3ZSBjYW4gbGlrZWx5IHNwYXduIGEgbmV3IHRocmVhZCBhcm91bmQgdGhp cyB0b3BpYyENCj4gPj4+IEluIHNob3J0LCBpdCBkZXBlbmRzIG9uIGhvdy93aGVyZSB0aGUgRE1B IGhhcmR3YXJlIHdyaXRlcyB0aGUgY29weS4NCj4gPj4+DQo+ID4+PiBXaXRoIHRlY2hub2xvZ2ll cyBsaWtlIERESU8sIHRoZSAiZGVzdCIgcGFydCBvZiB0aGUgY29weSB3aWxsIGJlIGluIExMQy4g VGhlDQo+IGNvcmUNCj4gPj4+IHJlYWRpbmcgdGhlDQo+ID4+PiBkZXN0IGRhdGEgd2lsbCBiZW5l Zml0IGZyb20gdGhlIExMQyBsb2NhbGl0eSAoaW5zdGVhZCBvZiBzbm9vcGluZyBpdCBmcm9tIGEN Cj4gcmVtb3RlDQo+ID4+PiBjb3JlJ3MgTDEvTDIpLg0KPiA+Pj4NCj4gPj4+IERlbGF5cyBpbiBu b3RpZnlpbmcgdGhlIGd1ZXN0IGNvdWxkIHJlc3VsdCBpbiBMTEMgY2FwYWNpdHkgZXZpY3Rpb24s IHllcy4NCj4gPj4+IFRoZSBhcHBsaWNhdGlvbiBsYXllciBkZWNpZGVzIGhvdyBvZnRlbi9wcm9t cHRseSB0byBjaGVjayBmb3IgY29tcGxldGlvbnMsDQo+ID4+PiBhbmQgbm90aWZ5IHRoZSBndWVz dCBvZiB0aGVtLiBDYWxsaW5nIHRoZSBmdW5jdGlvbiBtb3JlIG9mdGVuIHdpbGwgcmVzdWx0IGlu DQo+IGxlc3MNCj4gPj4+IGRlbGF5IGluIHRoYXQgcG9ydGlvbiBvZiB0aGUgcGlwZWxpbmUuDQo+ ID4+Pg0KPiA+Pj4gT3ZlcmFsbCwgdGhlcmUgYXJlIGNhY2hpbmcgYmVuZWZpdHMgd2l0aCBETUEg YWNjZWxlcmF0aW9uLCBhbmQgdGhlDQo+IGFwcGxpY2F0aW9uDQo+ID4+PiBjYW4gY29udHJvbA0K PiA+Pj4gdGhlIGxhdGVuY3kgaW50cm9kdWNlZCBiZXR3ZWVuIGRtYS1jb21wbGV0aW9uIGRvbmUg aW4gSFcsIGFuZCBHdWVzdA0KPiB2cmluZw0KPiA+Pj4gdXBkYXRlLg0KPiA+Pg0KPiA+DQoNCg==