From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web10.12611.1633962223769879908 for ; Mon, 11 Oct 2021 07:23:44 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=us1IwhFF; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: hua.ma@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10133"; a="207689056" X-IronPort-AV: E=Sophos;i="5.85,364,1624345200"; d="scan'208";a="207689056" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Oct 2021 07:23:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,364,1624345200"; d="scan'208";a="479874256" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by orsmga007.jf.intel.com with ESMTP; 11 Oct 2021 07:23:36 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 11 Oct 2021 07:23:36 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Mon, 11 Oct 2021 07:23:35 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Mon, 11 Oct 2021 07:23:35 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.100) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Mon, 11 Oct 2021 07:23:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jwdb8hwjcavG+i9nghg8OqLbBRbQTdhK7UFT+sYxrQjAxjmCFEUXVvHVobDaho84zFq32VnQpVRfmS6OwuceyPhJmVOZwLy8DT7W6twlIrOrCJTRkrBcjfdK/oKmxKvcXA/UYz2RV9GOlIazZ3HQbg1UTUmtGLEgHyqPoCL0nXojgsl0FqV7hAmAnl7K5a9kQBG7JpvPfWJNijXeSKofBJwuYsdGMmjFWUgJHePoHlQRJecYejQKpK1O9viU0YzoIidNP66oemlIs7TldS+JYj7dcR4SaROdy0AZHojrRp8bkUB87fKvV0lqCvr/5tOAEi56uZ6qcd8ZmLeBl+n9Dg== 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=NhgoJiyn21CCnVGcl0ruyb/fZ3vNEK7Q5feXFX754yY=; b=FlHiOeasIpjGmJvyI4LUQSmymWdhMfb3Dnjs9plzDVu9JyTDELzzye/Dmk1yHyknIfomHT7DJyobqFcLy59feJToYjF/bpSdR9SgUKsI/CKmgsfFffQPUwBQ0sxx8OngT13xkHVOSO6OESkRN6nt0MmGIBoGBIoea5TgI/HMte/yapvHpi2oRSX0i2YLymtqusKlKc0yqFX8Wb/igjEzqdKzPW0xFHgt88DuvBkv7Gl96RIRG4duTjQ+G7P/9v90FqaZpNst4vlNOdcVdn8llM9uEAIcgWAc7GbVTuzMo0SkuaWX1+4hQQDLzflLd4eO637bnCsHOeob678y+expsw== 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=NhgoJiyn21CCnVGcl0ruyb/fZ3vNEK7Q5feXFX754yY=; b=us1IwhFFjgVQ2xBgVYTLwpyrUBZXFmzAipaQOIUsaWnih5CXEwe+VfcEhNrV/mXoSa1pJwAfgX8I+ar2x/Ztzou3Y5q1dwFEE+YV2F9VibAgkT0/aYhTAXFQtxGzeGVTB1nK59u3udlRSpeZFBBQEzidkmI+1ntPIp9fqzOBpoQ= Received: from SJ0PR11MB4974.namprd11.prod.outlook.com (2603:10b6:a03:2d6::13) by BY5PR11MB4241.namprd11.prod.outlook.com (2603:10b6:a03:1ca::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4587.19; Mon, 11 Oct 2021 14:23:34 +0000 Received: from SJ0PR11MB4974.namprd11.prod.outlook.com ([fe80::7820:b346:edd1:f07]) by SJ0PR11MB4974.namprd11.prod.outlook.com ([fe80::7820:b346:edd1:f07%3]) with mapi id 15.20.4587.026; Mon, 11 Oct 2021 14:23:34 +0000 From: "Ma, Hua" To: Michael Brown , "devel@edk2.groups.io" CC: "Wang, Jian J" , Liming Gao , "Bi, Dandan" , "Ni, Ray" Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/Core/Dxe: Acquire a lock when iterating gHandleList Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/Core/Dxe: Acquire a lock when iterating gHandleList Thread-Index: AQHXvo0rIkUzzA5/y0uYr39IMd8UTavNqRaAgAAW2oA= Date: Mon, 11 Oct 2021 14:23:34 +0000 Message-ID: References: <7c0683f0a02729d8c75dcb631fec2941c834629e.1633948972.git.hua.ma@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.200.16 dlp-product: dlpe-windows authentication-results: ipxe.org; dkim=none (message not signed) header.d=none;ipxe.org; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 84e5296e-8d13-4dba-3426-08d98cc2b54a x-ms-traffictypediagnostic: BY5PR11MB4241: 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: CXbzY8It7PLLhyH6WqYcNE3btYSjcmtksMLAfPLAWsaOqEqqypA8rNhOljy9v+hMHhkMKaNm8dALYtiq1nGndHm6N35bWarwp4QhY+XfgVHKD881EG/xV31iiWJZ1az/jU3fQtAnxXCWF5m9nK7YgL9cmTTfcUUOtPkTEqbM/lxjwM3MSJeDxgxN4LBmQ1PpiyRglFvIQ5rkThIGRzaM3fZXWcMt7xPQseJQ2WO9FB/raPmy/ix74erjzZojlYbsVecmVTc3R4Z9lL4pBoeOEs5mADhB9a51cnJnqjbgRRpJYvdJVBH0r5Q1QSX0sfTYlKW19j6nT4JbMpgN6KIyf9+fQzSctb8/2XuhfpYLk5DpU6HScycSIX2EUgrDb8I4voUw56bkT7uHzApSp9KYzsfrZwqI6o32TEJHXC4BdsJkmiQAe+Dw99EA5Lo59Hp7SD2Ni9noMv6SvSo++/iOpkuOZ5aj2qh4cbrQLqx2b7ZLK2QOsxhsNqBCDlQ1Rr5X6TRESKOtkTY9zC3IkKNkQo5qTDcGy0S4V/ebQX3T4Sav5MM8bsNymFGrXmwbiRkQ35aOLvORrA4JszTATqB5mzHvIzCgY9tToKi46ksjAdSnHIkjQ8TzfRCmP4qYqpJSk2P80n/J2zCvjTkvp4OJBr5ORSSoGhytn0Xhx2u3ok/ApWkDy3WN8xynfp+JPC0kEmf74Rh7vBLHmnfFa9v081U7Dk3eKI2XsstEGdtN3Cm+N56OJIbwmytZ68LjdsMWHJpG64qCkjuRCmapUyvsBxsbHG2qDSJyWEu4gzok/Qg= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ0PR11MB4974.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(66946007)(66556008)(66476007)(8936002)(76116006)(64756008)(66446008)(83380400001)(8676002)(71200400001)(2906002)(107886003)(186003)(86362001)(55016002)(4326008)(5660300002)(966005)(38100700002)(508600001)(316002)(54906003)(110136005)(6506007)(38070700005)(53546011)(52536014)(26005)(33656002)(7696005)(9686003)(122000001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dUtaRmZPTzB1cUFOQy9XV1RDdGtRWkFEZGJqQ2EyL01YdTJPa3VmbWFtUlJW?= =?utf-8?B?OE5OZ091LzY0YlBxU25uZ0J5dDVRMXRxRS9RZWtzV2dBOU1HT0NDMzcyU0Yw?= =?utf-8?B?M2c3SnVyQ1ZwTWZzYi9xbnFQbEg4QzNrQ3JLS3JpUlhaaFdTemJxenB3TmYw?= =?utf-8?B?RlVtak9yeDlic1FzMkJQclhnNEd4cFA1eThQQ1BOR09wdTNzakI1bjRITFNY?= =?utf-8?B?Z1k3TmJtMVowQzYyTmE2cU84QXhQZUhLZDlDcVkvQ3RvNmxIMUUvUFhxVzl0?= =?utf-8?B?enlSaFdiOGNiTk1JZ0VhaDlNa0lSa1ZsbkV0M3kxQ1FqTnM4Uk5xdUViT1Rp?= =?utf-8?B?T3VWcEhhNWtyUGhXRUNwQnA1N0ROT1crN0ZiUm81MkxrTUNjS1cwcGJaUXRF?= =?utf-8?B?dTZWellQTTRjaXVZb0NTbzNQUFQreUdkY09nZVdORkp0bjBaQmU3YjNxbDhI?= =?utf-8?B?VFU5Y2ZWdjh6c0Q3R0UyTG5ISVIxL2lyd21jQ216WlAxNVJqR3lDMlhwc3RO?= =?utf-8?B?UWdyRDEzdFJnUjlRbVVob0U0dS82OWVGV2J4Y1lNMVUvS0hPYkcrdTBwLzBV?= =?utf-8?B?TWIyYUJqNnRxYWtDVmlhSndDZmhqaXJZeDloQU5hbHlTY284ZUdDY2UwUHlh?= =?utf-8?B?WHBObTF0UU5vVjdRYkFmeE13TGxwMm4wdlM3a2dsMlMyZGNyd0ozSzc0OGR1?= =?utf-8?B?N1JwczNsQVJtZ1RBOEdSUGhWQitXU3ZzdjJJL01qUkdja1Y1UGFVUzI5L1lS?= =?utf-8?B?dEh1Q1E1RTRpVVc2M1g3SXllM1hGU1N4ZDNsaVBoTmY3ZlQ1cmRXS3lwU3VI?= =?utf-8?B?SzVsZ1pmV3VudW9NZkVPd3VlWDUzakIralBUbkthc1Fnb0lUSmVSZ2lBSjRp?= =?utf-8?B?aElpaVNkRTdZNUJkYjNqcVlUN1Z6WkVaekxPZ3JhZmhJWS9YTkZBUkpxMXJI?= =?utf-8?B?d2lJa1RDLzlwcnREaHRsTHRzcDVjZjc2Q3NqMGgvOWtzeEhtc0hyc3JvaWpp?= =?utf-8?B?dndWOUF3ZmpEUW5IMzlUbVdMVWtLb1pyZUt1TTR4KzlWWVNrbnZuYWV6MGN1?= =?utf-8?B?a2lGWXZQVUFKRnJMSm5SOHVEWEdCZlhCN24zS1VPM01MNUVSQms4RTNCMUQ5?= =?utf-8?B?aXJMcDlxMGpGd0VzVldHQk9Pd1dkS005T0haTnNESXF0T3psVkIzZDBQL1Yy?= =?utf-8?B?SXRrZnVoVHFiVlNxdjlkc3VDVVJHRFg2QjZQRWl1SGtqVDA1MkhFN2hiWXMz?= =?utf-8?B?bUQ0ZTQ0QjhLT1RjSUVZOThhcWV3MENyZFJzNWZNT3gyYVZvOXlyWWpIL0Y1?= =?utf-8?B?cEUvSGhmZ1dnd1V6Z3AzaXBGZVA3dHpleUQ3UTNNeHhRRDhNTUZackVQMWNT?= =?utf-8?B?SXpWUmxZUWlNa2M5cytkZVlDWHlzdGhJZWc5dVBic24wazdhYjhveVoyYTF4?= =?utf-8?B?ck9XWFdxT2Zob2F2NnBWV1ZxSjBsaTVZa25La0ZNL0M1TFpPdFp6VE5neGds?= =?utf-8?B?WklHRzJiemVaY1F4SVVlWDNHbTVWS3k3YUFHZnJDWWhXY2NHT2F6cUtIeGo0?= =?utf-8?B?QjRDUU9XWVlmbVBKNkU4WUlQVkNhVGc2V0ovS202dktoOTQwd0F0Nno2ZDM2?= =?utf-8?B?K0lvYTZBT1hpc1VHRmc1THlsZFpKczFMWXRMbi9PTnhqRDl1U3hnR1RCYjJh?= =?utf-8?B?UE0wNmVRL1RzYjk0cXBtUk9hQnZtZVdtbGhLMUsxS1NrRFVyWDJtN2tqSVVF?= =?utf-8?Q?lwHjuw/y22pW4thRK9j7fHNnTawnrN9GqBkQyuq?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SJ0PR11MB4974.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84e5296e-8d13-4dba-3426-08d98cc2b54a X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Oct 2021 14:23:34.1524 (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: 93Tmoyd5NWB2m/wK7IgkZZjHTOzvXTE+FHvMXu/M9MmCzfQOXMNa8GnfuqKIwFX0txEmbrBKQJSOrlSWX1tG3Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB4241 Return-Path: hua.ma@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBNaWNoYWVsIEJyb3duIDxtY2Iz MEBpcHhlLm9yZz4NCj4gU2VudDogTW9uZGF5LCBPY3RvYmVyIDExLCAyMDIxIDc6MjggUE0NCj4g VG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBNYSwgSHVhIDxodWEubWFAaW50ZWwuY29tPg0KPiBD YzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBMaW1pbmcgR2FvDQo+IDxn YW9saW1pbmdAYnlvc29mdC5jb20uY24+OyBCaSwgRGFuZGFuIDxkYW5kYW4uYmlAaW50ZWwuY29t PjsgTmksIFJheQ0KPiA8cmF5Lm5pQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRl dmVsXSBbUEFUQ0hdIE1kZU1vZHVsZVBrZy9Db3JlL0R4ZTogQWNxdWlyZSBhIGxvY2sNCj4gd2hl biBpdGVyYXRpbmcgZ0hhbmRsZUxpc3QNCj4gDQo+IE9uIDExLzEwLzIwMjEgMTE6NDUsIE1hLCBI dWEgd3JvdGU6DQo+ID4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19i dWcuY2dpP2lkPTM2ODANCj4gPg0KPiA+IFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGZvbGxvd2luZyBp c3N1ZToNCj4gPg0KPiA+IFRoZSBnbG9iYWwgdmFyaWFibGUgZ0hhbmRsZUxpc3QgaXMgYSBsaW5r ZWQgbGlzdC4NCj4gPiBUaGlzIGxpc3QgaXMgbG9ja2VkIHdoZW4gYSBlbnRyeSBpcyBhZGRlZCBv ciByZW1vdmVkIGZyb20gdGhlIGxpc3QsDQo+ID4gYnV0IHRoZXJlIGlzIG5vIGxvY2sgd2hlbiBp dGVyYXRpbmcgdGhpcyBsaXN0IGluIGZ1bmN0aW9uDQo+ID4gQ29yZVZhbGlkYXRlSGFuZGxlKCku DQo+ID4gSXQgY2FuIGxlYWQgdG8gIkhhbmRsZS5jICg3Nik6IENSIGhhcyBCYWQgU2lnbmF0dXJl IiBhc3NlcnRpb24gaWYgdGhlDQo+ID4gaXRlcmF0ZWQgZW50cnkgaW4gdGhlIGxpc3QgaXMganVz dCByZW1vdmVkIGJ5IG90aGVyIHRhc2sgZHVyaW5nIGl0ZXJhdGluZy4NCj4gPiBMb2NraW5nIHRo ZSBsaXN0IHdoZW4gaXRlcmF0aW5nIGNhbiBmaXggdGhpcyBpc3N1ZS4NCj4gDQo+IEF0IGEgZmly c3QgZ2xhbmNlLCBpdCBsb29rcyBhcyB0aG91Z2ggaWYgdGhlIGNhbGxlciBkb2VzIG5vdCBhbHJl YWR5DQo+IGhvbGQgdGhlIGxvY2ssIHRoZW4gdGhlIHJlc3VsdCBmcm9tIENvcmVWYWxpZGF0ZUhh bmRsZSgpIG1heSBiZSBpbnZhbGlkDQo+IGJ5IHRoZSB0aW1lIHRoYXQgY29udHJvbCByZXR1cm5z IHRvIHRoZSBjYWxsZXIuDQo+IA0KPiBVbmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgaXMgaXQgdmFs aWQgdG8gY2FsbCBDb3JlVmFsaWRhdGVIYW5kbGUoKSB3aGVuDQo+IHRoZSBjYWxsZXIgZG9lcyBu b3QgX2FscmVhZHlfIGhvbGQgdGhlIGxvY2sgKGkuZS4gSXNMb2NrZWQ9PUZBTFNFKT8NCj4gDQo+ IFRoYW5rcywNCj4gDQo+IE1pY2hhZWwNCg0KSGkgTWljaGFlbCwNCg0KVGhhbmtzIGZvciB0aGUg cmV2aWV3LA0KSW4gY3VycmVudCBDb3JlVmFsaWRhdGVIYW5kbGUgaW1wbGVtZW50YXRpb246DQoN CiAgZm9yIChMaW5rID0gZ0hhbmRsZUxpc3QuQmFja0xpbms7IExpbmsgIT0gJmdIYW5kbGVMaXN0 OyBMaW5rID0gTGluay0+QmFja0xpbmspIHsNCiAgICBIYW5kbGUgPSBDUiAoTGluaywgSUhBTkRM RSwgQWxsSGFuZGxlcywgRUZJX0hBTkRMRV9TSUdOQVRVUkUpOw0KICAgIGlmIChIYW5kbGUgPT0g KElIQU5ETEUgKikgVXNlckhhbmRsZSkgew0KICAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KICAg IH0NCiAgfQ0KDQpMZXQncyBzYXksIGlmIHRoZSBsaXN0IGhhdmUgNCBlbnRyaWVzLCAoQS0+Qi0+ Qy0+RCksIGFuZCB0aGUgY2FsbGVyIGlzIHRyeWluZyB0byB2YWxpZGF0ZSBpZiBlbnRyeSBDIGlz IHZhbGlkLA0KV2hlbiBjYWxsZXIgdGFzayBqdXN0IHNldCBsb2NhbCB2YXJpYWJsZSBMaW5rIHRv IEIsIGFuZCBiZWZvcmUgaXQgY2FsbHMgQ1IoKSBtYWNybyB0byB2YWxpZGF0ZSB0aGUgc2lnbmF0 dXJlLA0KQXQgdGhpcyBwb2ludCwgaWYgb3RoZXIgdGFzayBqdXN0IGRlbGV0ZXMgb3RoZXIgZW50 cnksIGVudHJ5IEIsIGFuZCByZXNldCBCJ3Mgc2lnbmF0dXJlLiANClRoZW4gd2hlbiBiYWNrIHRv IGNhbGxlciB0YXNrLCAgVGhlcmUgaXMgYSBzaWduYXR1cmUgbWlzbWF0Y2ggYXNzZXJ0aW9uIGZv ciBCLg0KQnV0IHRoZSByZXN1bHQgc2hvdWxkIGJlIHN0aWxsIHZhbGlkIGZvciBDIGlmIGNhbGwg Q29yZVZhbGlkYXRlSGFuZGxlKCkgYWdhaW4uDQpUaGUgcGF0Y2ggaXMgdHJ5aW5nIHRvIGZpeCB0 aGlzIGtpbmQgb2YgcHJvYmxlbS4NCg0KSSBmZWVsIG9uZSB2YWxpZCBraW5kIG9mIGNhbGxpbmcg Q29yZVZhbGlkYXRlSGFuZGxlKCkgd2l0aG91dCBob2xkaW5nIHRoZSBsb2NrIGlzOg0Kd2hlbiB0 aGUgaGFuZGxlIGlzIHBhc3NlZCBpbiBhcyBwYXJhbWV0ZXIsIGFuZCBkbyBhIHBhcmFtZXRlciBj aGVja2luZywNCmFuZCBsYXRlciwgaWYgbmVlZCwgdmFsaWRhdGVkIHRoZSBoYW5kbGUgYWdhaW4g d2hlbiB1c2UgdGhlIGhhbmRsZS4NCmZvciBleGFtcGxlIGluIGN1cnJlbnQgY29kZSwgaW4gQWRk U29ydGVkRHJpdmVyQmluZGluZ1Byb3RvY29sLCBDb3JlQ29ubmVjdENvbnRyb2xsZXIsDQpUaGlz IHBhdGNoIGRvIG5vdCBjaGFuZ2Ugd2hlcmUgdG8gYWRkIGEgaGFuZGxlIHZhbGlkYXRpb24uDQoN ClRoYW5rIHlvdSwNCk1hIEh1YQ0K