From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (NAM02-DM3-obe.outbound.protection.outlook.com [40.107.95.79]) by mx.groups.io with SMTP id smtpd.web09.7627.1659454363305411855 for ; Tue, 02 Aug 2022 08:32:43 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=LraEf2qq; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.95.79, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FnpZA4RPZGk9J9h0pk/POyRG/0RcjKOouohP7QB++zrRdVr/ZeaMuWJYqDy/1GYwoEs0Lf6T1lYo/huaTZdLfnqUZhq07p7RH980gNItEawri0OhrSNv0xNeahDJdWwf4LGZKz89ONkz5/ufi7eZOZyGtqP5FISryZWrZBIJbfHbbz4b2hz51oSK61I0yX6wxRvLHiV4t+VtiTBrBirZ+Zx+BP2uc2TmOiIUJ3Y+BetuhScPtSq77gmUZ7rckcycQMfyBOAEMzSnSB+UbR5OvsamA9omDuZCD67gbq630I38IjgIXju+B9rWZ91xBmm/XbHvikp1XXaQdiGx0FGXFw== 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=gv7eJbsWVxt9tZ4dRkZGAhdkv41othXqtlDTizYPsyI=; b=EP/GSsFo0033ZX30nD+BGqFCVUTEe6/xkvdbeE8tWk95SWzYOBYWHkGRp1xQ8KkAOfwEP0p8Dstk+gxVqnPZio5AjVMIJhccuz2ePHK65DH4PFj0lhLGfj8zEIutqcJukDcMsvV13T5/OUAegsm3N85AM1souqNHffJXa9q9QgnGR7qxE3oVMokzq5pOc2lxsCEEn222jfy2unJY0pmyIwcyGJfVPlRRvJEmiZ5dSt17HMuMLSXqHcsI7wZDI6fAEO1FFhs9vxyt+fs3/9j4zhudRzVaE5yY5/Fk2woACSw1H3w86pt1LMueWc3D7ov0Kau0ox8rDeaqArDZaF0YDA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gv7eJbsWVxt9tZ4dRkZGAhdkv41othXqtlDTizYPsyI=; b=LraEf2qqtkt8SZRt45VvLg+0F2uORxpXzBewLAmrHAybC/zhfsPKg85g4j3NN2pVSlOEqCK6GKffwfLIG5OI+PmfSqBDIiV5rE0iOr+LD9DQLvEu2wvZnPBHQ2ubv3WXfaRT98XMMxGzyyFLdeMuj7vEEczrv62zt4oc9CjLDwdhY8gOe9czHxlP3uCYWXi9nKGUZh4j6BDgiheVkNEWxvLUQwP2sz3piBYRHarFZa4gN9i14CCdvRd8M2rwwXYNnCBPgxAfOS6DJBClnTl2QFuVoQnHAxhS4Nzt0EBsYFgPtq0A+KGGR3Ktpz0PzKgRTK+Emzm7jf1FQdQ0/hUfSw== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by CH2PR12MB3862.namprd12.prod.outlook.com (2603:10b6:610:21::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5482.11; Tue, 2 Aug 2022 15:32:40 +0000 Received: from DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::419d:dff1:394f:2aac]) by DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::419d:dff1:394f:2aac%3]) with mapi id 15.20.5482.011; Tue, 2 Aug 2022 15:32:40 +0000 From: "Jeff Brasen" To: Ard Biesheuvel CC: "devel@edk2.groups.io" , "hao.a.wu@intel.com" , "ray.ni@intel.com" , "quic_llindhol@quicinc.com" , "ardb+tianocore@kernel.org" Subject: Re: [PATCH v2] MdeModulePkg/NonDiscoverablePciDeviceDxe: Allow partial FreeBuffer Thread-Topic: [PATCH v2] MdeModulePkg/NonDiscoverablePciDeviceDxe: Allow partial FreeBuffer Thread-Index: AQHYo2KYHmEPctI38EmivvRyAT6Lm62bwm0w Date: Tue, 2 Aug 2022 15:32:40 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6dccfba2-6506-45f2-3088-08da749c3caf x-ms-traffictypediagnostic: CH2PR12MB3862:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nPH96Wp/XTPJbXeUHK6RcnApF5jrBqZvD7uc5LJIL5aFr8hgt4I/bgLwYiWn/4i95mlxXNsHEeaNMe6XqY3woqpPOuZp3o6tvKziZkknv6q76DbU1YgozL61h3ejIClNU6CqcNxZRYjRnmdfa1Vb5+f/9yRWvvXGD/zQTtZfxQDHBzvDru0HxbLn+sQAS1TxZ4XSuyuTF+cXIkiW1prkl1KM9Hsj5r6RiaJZ2LLbDLqlgByKovQKV+NEEHhsalU3uzrcik1wgVjYpdN/T30GapnQtTxhL2lJvHMdQ9zTRJzCX0LOeFIlCnPW3PJrN3/JRGoqfk2MxoQtTosBuYE+xFh966QMbH7ag0Yx+HWh3AQBC7s/Hp420ctI0CZzkagUSyTfYdON8F6SiFqHDZ4cVfyTntVXw0RW07HdeM8u0P0YV6yMttKSBgk95bSoA89WmrRuiP8Swx9iPqODLKg9Tv+FggK/qXmHZXDD7cnhwz7mVD7td0U04geU9RXGM50175JVQyArjBYBDDNPrBTe/APBgPUjeij+nVt+vUnphZtmTWi8wCZkjpj/8vLFkIG9Z7vG7PA3JH6aYjJRGdri2JSUi6rgRByv7eLF2fLvx1dE82iN17FIVAu8bSNjdWEIb7k3yzYVin+p48JcTEqHygyC0k7AHzJK/q8SEps+TP4i8XVsSXm5+8YzHi6073AGFoEL1o54RWaYxe2To7z6FXmCKy1SGzNcshcmYZqSQistlQpGyTxLedVUC0xmkhwcO2E7hK3xhGjoFCvhb0bBbwbqGbtaW98malyKe7bN2h7GajwCkS+fq6R/fzS6gmH+B6UcThC7rHmtbJGh5UqLDw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5789.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(396003)(39860400002)(136003)(376002)(346002)(6506007)(7696005)(53546011)(41300700001)(26005)(316002)(55016003)(478600001)(54906003)(6916009)(9686003)(86362001)(71200400001)(38070700005)(122000001)(38100700002)(186003)(83380400001)(2906002)(52536014)(8936002)(66446008)(76116006)(66556008)(66946007)(66476007)(33656002)(64756008)(5660300002)(8676002)(4326008)(213903007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VzBDODhBcSt3a1RCSHc1b20wb2wvRnRKT0FkSkdNN2xyYlVXaXhVc01DVHpU?= =?utf-8?B?VDA5eVZPbEZwT2Y5aDI5NHp3UEE5QXRHeWYzdDhKUXZzcURoeVBvK0JwdzZ6?= =?utf-8?B?cnMvUkxSZmlnUS8xOVBjUEltaHZjV3BzSkNrOUtkQ0M2TnAxU2FyWm5Ia0V6?= =?utf-8?B?dmpLaEM1anV0YVNEa3g3dld1am5Tc1R1RUVKT2NrSEd1L3c3YndMRTVGMlVC?= =?utf-8?B?Z29JTXZ6TGdOQTRwaUx4UW40NEdsRTF3RHlESDVocno2ZWFUOXdMSWNpbW9u?= =?utf-8?B?eU0zdXVjMGZxQUZNYkY1QlkrY2NWcTVDTWRRNUV3R0dDeDJBaDdhUXc2WkNV?= =?utf-8?B?WGl2WU1YOGJML0lnalJCOFd1U2FvUkxLM2ZkSE1TK0s1VkJGNzVWcmF4T3Ir?= =?utf-8?B?NFJ0Tkk0WFg3dGprQUlXSHVwZjR3S2VyN3IvdkdxYzFDdjY5MTVqYWRiRVB6?= =?utf-8?B?WW8xOXRqcU4vdlZtSDRYL08yOEwrZVdjT1dtRlhzWlBsY3pzUTNTbS9Sa1F6?= =?utf-8?B?a1VSVWxJVHdQYmxGSENCQS9BamJiaWg0Q2FVeHh2akkyeWhPOUtXN2FNNTd3?= =?utf-8?B?K3p4OEZCdk91YmRkVGhQdDRUM1hlZHppeXA0OWxMdEdQbHNRcFR5cXhyQkIw?= =?utf-8?B?YXptdEtTYUEwakNsUGdNTitldzl4b0RIZ2hmZ2wrczZDMkc2cmhsYlZydGtT?= =?utf-8?B?M084YytSc0tlWmxGR2sxMW9FUkhDNUZ4U0RmUlUrTjBrZytxL05QRHBxdnl5?= =?utf-8?B?WGpSc1NYdXNtT1I5bEx4YUVxb1JsQjRRSC9BYTV5QWVDSzZxOWs0MHB5WXli?= =?utf-8?B?a2hPcitpTkYweWtTWUY5NUZUK3QzUzlFU2xMbCs0MTloWDlsTCtpTUo3ZHJF?= =?utf-8?B?TTVHTWtGK3ZOS0IvTk41bEdhVXJHbUx1OHljaUVXSUp0R1hiSGJpYWNQZnFp?= =?utf-8?B?YTM2WG4waXhtYXd0RDV3RDFWSHE5MEF3Umc2V0wrQXI5eFd1d1V2R3RTdG10?= =?utf-8?B?VDA4cFlFZWIyUTZidjQ3STU0QlZyRTJtbC9IUHVZSjlCUFYzSFNEMkl2Nlg3?= =?utf-8?B?V0M3VnU1NnIvM3FrWHMya3BHOUZTNGM0UUlpeEpRbXhDcHNtbnY4dlNOVzEv?= =?utf-8?B?OWM4QXF3clRUcjVaang2dGRPaWh0VHdJa0lxZ29Udk1RZDRMWnY1Z2VGNlVw?= =?utf-8?B?alc3VVN6eEtOWU9sMDlNbWNzNFdsSkFOUTYvT3Y5L2JpTHN2WFZmRzdaT3Ba?= =?utf-8?B?MUhUZjBxcFpXTzBQS3BZTS80QVg3d1VuQUNIaXQrRWNEbnFlbU45L0hTZWNw?= =?utf-8?B?ZmRVR3ZwSnlCdWVFSVBVS2JudEFvSlY2TDVpNGo2QWs0WElwM1pLbXdBczdM?= =?utf-8?B?VnA4ZkwvektpK1RoT0Y2S1VEaTVQVUxUSllEajA4LzgxY2gzRzFieTRQQnNT?= =?utf-8?B?M1daQXM5NDZkcldzN3lxTFlsclhBRUZFZ2syZHNkenY4bmd4aVpXT29MMXJi?= =?utf-8?B?bUJ5aDQwWXYweENWajJVS2ZqbUdoTVRaMFgrNE1BQStabDE3M1FXL1JkZE96?= =?utf-8?B?VkRoVUNrTzVHSmR1eEl2WWNaNUxxVUxWK3MxeFo2bmhCNTJlR3NBRmFnL2to?= =?utf-8?B?cDZ5bTlvd0NlaG1yeUNZZC83SnBPOVFiTHNmZG5TTVRHa1ZuVFcrMlVrVXAy?= =?utf-8?B?eXk2dmFIcTZaTHJKYWZKQU0yZFpxRFRlaVhXeDBIRXo5SjJ2UXFRWWdkMnFT?= =?utf-8?B?c0NORCtrZ2lMOE0rU0xYYVMrRzRlRnBqQmEwdFVGR2htcDBaKzMvZzl4bmFp?= =?utf-8?B?T25lWUhtYzRMR0hpMjY0M0luYktPRXhqd1h6NTFsSWhwTEhrUGFsZCtTSWRa?= =?utf-8?B?UnR1TGpLbkpwNjIza25hejgzeWgvL2NBN2ViZXJVNDVPVnB3c0JUTlFWejdv?= =?utf-8?B?QTR6LzZkdm1iaFJ4WFlZQ00yR1JZTExGN1BtS09YUm5GMVF4bDdBcVhkaUVW?= =?utf-8?B?ZUhRbDM1UUdjc0JzS1dqZWt6aWhTR1VOd241VVA3QjFSU0lWZ0l5RFJHazk3?= =?utf-8?B?ZmpVSGh3RHUwYU5ibGt5a3JuV3Z4UTFqK296REsrNVdPQkt3ZnVyUkxEczNt?= =?utf-8?Q?tsuMO4QxTH6qZyxey3NF2SMyt?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5789.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6dccfba2-6506-45f2-3088-08da749c3caf X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Aug 2022 15:32:40.7868 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: AiFp+WwbRkeHHNpnnyxXO2SytaIs/OlWTaSdMCX+PqNlKKDCGf8rMXVo6aPh6TuAX2fuUpArtHcx7g4/6ZQS7g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB3862 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg PGFyZGJAa2VybmVsLm9yZz4NCj4gU2VudDogRnJpZGF5LCBKdWx5IDI5LCAyMDIyIDk6NDggQU0N Cj4gVG86IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+DQo+IENjOiBkZXZlbEBlZGsy Lmdyb3Vwcy5pbzsgaGFvLmEud3VAaW50ZWwuY29tOyByYXkubmlAaW50ZWwuY29tOw0KPiBxdWlj X2xsaW5kaG9sQHF1aWNpbmMuY29tOyBhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnDQo+IFN1Ympl Y3Q6IFJlOiBbUEFUQ0ggdjJdIE1kZU1vZHVsZVBrZy9Ob25EaXNjb3ZlcmFibGVQY2lEZXZpY2VE eGU6DQo+IEFsbG93IHBhcnRpYWwgRnJlZUJ1ZmZlcg0KPiANCj4gRXh0ZXJuYWwgZW1haWw6IFVz ZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4gDQo+IA0KPiBPbiBUaHUs IDI4IEp1bCAyMDIyIGF0IDEzOjI1LCBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPiB3 cm90ZToNCj4gPg0KPiA+DQo+ID4gQWRkaW5nIExlaWYvQXJkIHRvIENDIGluY2FzZSB0aGV5IGhh dmUgYW55IGNvbW1lbnRzIG9uIHRoaXMgcGF0Y2guDQo+ID4NCj4gDQo+IFRoaXMgZ2VuZXJhbGx5 IGxvb2tzIG9rIHRvIG1lLiBJIGp1c3Qgd29uZGVyIGlmIGl0IHdvdWxkbid0IGJlIHNpbXBsZXIg dG8gcmV1c2UNCj4gdGhlIGV4aXN0aW5nIGFsbG9jYXRpb24gZGVzY3JpcHRvciBpZiBpdCBpcyBu b3QgYmVpbmcgZnJlZWQgZW50aXJlbHkuIEdpdmVuIHRoZQ0KPiBbcHJlc3VtYWJseV0gdGhlIG1v c3QgY29tbW9uIGNhc2UgaXMgdG8gYWxsb2NhdGUgYW5kIHRoZW4gZnJlZSBzb21lIHBhZ2VzDQo+ IGF0IHRoZSBlbmQsIGxvd2VyaW5nIHRoZSBwYWdlIGNvdW50IG9uIHRoZSBleGlzdGluZyBkZXNj cmlwdG9yIHdvdWxkIGNvdmVyDQo+IG1vc3QgY2FzZXMsIGFuZCB3ZSdkIG9ubHkgbmVlZCB0byBh bGxvY2F0ZSBuZXcgb25lcyBpZiBwYWdlcyBhcmUgYmVpbmcgZnJlZWQNCj4gYXQgdGhlIHN0YXJ0 IG9yIGluIHRoZSBtaWRkbGUuDQoNClRoZXJlIGlzIG9mdGVuIGZyZWVpbmcgYXQgdGhlIGJlZ2lu bmluZyBhcyB3ZWxsIGFzIHRoaXMgaXMgYmVpbmcgdXNlZCB0byBjcmVhdGUgYSA2NEsgYWxpZ25l ZCBzZWN0aW9uIG9mIG1lbW9yeSBpbiB0aGUgY2FzZS4gU28gaXQgb3ZlciBhbGxvY2F0ZXMgYW5k IHRoZSBmcmVlJ3Mgc29tZSBhdCB0aGUgYmVnaW5uaW5nIGFuZCB0aGUgZW5kLiBJIGNvdWxkIHBy b2JhYmx5IG1ha2UgaXQgZGV0ZWN0IGFuZCB1c2UgdGhhdCBidXQgZmlndXJlZCB0aGlzIGNvZGUg d291bGQgc3VwcG9ydCBhbGwgY2FzZXMgYW5kIHJlcXVpcmVkIGxlc3MgY2FzZSBzcGVjaWZpYyBk ZXRlY3Rpb24uDQoNCi1KZWZmDQoNCj4gDQo+IA0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPiA+IEZyb206IEplZmYgQnJhc2VuDQo+ID4gPiBTZW50OiBGcmlkYXksIEp1bmUg MTcsIDIwMjIgOTozOSBBTQ0KPiA+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gPiBD YzogaGFvLmEud3VAaW50ZWwuY29tOyByYXkubmlAaW50ZWwuY29tDQo+ID4gPiBTdWJqZWN0OiBS RTogW1BBVENIIHYyXSBNZGVNb2R1bGVQa2cvTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlOg0K PiA+ID4gQWxsb3cgcGFydGlhbCBGcmVlQnVmZmVyDQo+ID4gPg0KPiA+ID4gQW55IHRob3VnaHRz IG9uIHRoaXMgcGF0Y2g/DQo+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+ID4gPiBGcm9tOiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPg0KPiA+ID4g PiBTZW50OiBNb25kYXksIEZlYnJ1YXJ5IDE0LCAyMDIyIDExOjQ2IEFNDQo+ID4gPiA+IFRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4gPiBDYzogaGFvLmEud3VAaW50ZWwuY29tOyByYXku bmlAaW50ZWwuY29tOyBKZWZmIEJyYXNlbg0KPiA+ID4gPiA8amJyYXNlbkBudmlkaWEuY29tPg0K PiA+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggdjJdIE1kZU1vZHVsZVBrZy9Ob25EaXNjb3ZlcmFibGVQ Y2lEZXZpY2VEeGU6DQo+ID4gPiA+IEFsbG93IHBhcnRpYWwgRnJlZUJ1ZmZlcg0KPiA+ID4gPg0K PiA+ID4gPiBBZGQgc3VwcG9ydCBmb3IgcGFydGlhbCBmcmVlIG9mIG5vbiBjYWNoZWQgYnVmZmVy cy4NCj4gPiA+ID4gSWYgYSByZXF1ZXN0IGZvciBsZXNzIHRoYW4gdGhlIGZ1bGwgc2l6ZSBpcyBy ZXF1ZXN0ZWQgbmV3DQo+ID4gPiA+IGFsbG9jYXRpb25zIGZvciB0aGUgcmVtYWluaW5nIGhlYWQg YW5kIHRhaWwgb2YgdGhlIGJ1ZmZlciBhcmUgYWRkZWQgdG8NCj4gdGhlIGxpc3QuDQo+ID4gPiA+ IEFkZGVkIHZlcmlmaWNhdGlvbiB0aGF0IEJ1ZmZlciBpcyBFRklfUEFHRV9TSVpFIGFsaWduZWQu DQo+ID4gPiA+IFRoZSBYSENJIGRyaXZlciBkb2VzIHRoaXMgaWYgdGhlIHBhZ2Ugc2l6ZSBmb3Ig dGhlIGNvbnRyb2xsZXIgaXMgPjRLQi4NCj4gPiA+ID4NCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTog SmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNvbT4NCj4gPiA+ID4gLS0tDQo+ID4gPiA+ICAu Li4vTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlSW8uYyAgICAgICAgICAgICAgfCA1MyArKysrKysr KysrKysrKysrKystDQo+ID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdA0KPiA+ID4gPg0KPiA+ ID4NCj4gYS9NZGVNb2R1bGVQa2cvQnVzL1BjaS9Ob25EaXNjb3ZlcmFibGVQY2lEZXZpY2VEeGUv Tm9uRGlzY292ZXJhYmxlDQo+ID4gPiA+IFBjaURldmljZUlvLmMNCj4gPiA+ID4NCj4gPiA+DQo+ IGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvTm9uRGlzY292ZXJhYmxlUGNpRGV2aWNlRHhlL05vbkRp c2NvdmVyYWJsZQ0KPiA+ID4gPiBQY2lEZXZpY2VJby5jDQo+ID4gPiA+IGluZGV4IGMxYzVjNjI2 N2MuLjc3ODA5Y2ZlZGYgMTAwNjQ0DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPg0KPiA+ID4NCj4gYS9N ZGVNb2R1bGVQa2cvQnVzL1BjaS9Ob25EaXNjb3ZlcmFibGVQY2lEZXZpY2VEeGUvTm9uRGlzY292 ZXJhYmxlDQo+ID4gPiA+IFBjaURldmljZUlvLmMNCj4gPiA+ID4gKysrDQo+ID4gPiA+DQo+ID4g Pg0KPiBiL01kZU1vZHVsZVBrZy9CdXMvUGNpL05vbkRpc2NvdmVyYWJsZVBjaURldmljZUR4ZS9O b25EaXNjb3ZlcmFibGUNCj4gPiA+ID4gUGMNCj4gPiA+ID4gKysrIGlEZXZpY2VJby5jDQo+ID4g PiA+IEBAIC05NjAsMTIgKzk2MCwyMyBAQCBOb25Db2hlcmVudFBjaUlvRnJlZUJ1ZmZlciAoDQo+ ID4gPiA+ICAgIExJU1RfRU5UUlkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpF bnRyeTsNCj4gPiA+ID4gICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzOw0KPiA+ID4gPiAgICBOT05fRElTQ09WRVJBQkxFX0RFVklDRV9VTkNBQ0hF RF9BTExPQ0FUSU9OICAqQWxsb2M7DQo+ID4gPiA+ICsgIE5PTl9ESVNDT1ZFUkFCTEVfREVWSUNF X1VOQ0FDSEVEX0FMTE9DQVRJT04NCj4gKkFsbG9jSGVhZDsNCj4gPiA+ID4gKyBOT05fRElTQ09W RVJBQkxFX0RFVklDRV9VTkNBQ0hFRF9BTExPQ0FUSU9OICAqQWxsb2NUYWlsOw0KPiA+ID4gPiAg ICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3VuZDsNCj4g PiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Rh cnRQYWdlczsNCj4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRW5kUGFnZXM7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYgKEhvc3RBZGRyZXNz ICE9IEFMSUdOX1BPSU5URVIgKEhvc3RBZGRyZXNzLCBFRklfUEFHRV9TSVpFKSkgew0KPiA+ID4g PiArICAgIEFTU0VSVF9FRklfRVJST1IgKEVGSV9JTlZBTElEX1BBUkFNRVRFUik7DQo+ID4gPiA+ ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsgIH0NCj4gPiA+ID4NCj4gPiA+ID4g ICAgRGV2ID0gTk9OX0RJU0NPVkVSQUJMRV9QQ0lfREVWSUNFX0ZST01fUENJX0lPIChUaGlzKTsN Cj4gPiA+ID4NCj4gPiA+ID4gICAgRm91bmQgPSBGQUxTRTsNCj4gPiA+ID4gICAgQWxsb2MgPSBO VUxMOw0KPiA+ID4gPiArICBBbGxvY0hlYWQgPSBOVUxMOw0KPiA+ID4gPiArICBBbGxvY1RhaWwg PSBOVUxMOw0KPiA+ID4gPg0KPiA+ID4gPiAgICAvLw0KPiA+ID4gPiAgICAvLyBGaW5kIHRoZSB1 bmNhY2hlZCBhbGxvY2F0aW9uIGxpc3QgZW50cnkgYXNzb2NpYXRlZCBAQCAtOTc2LDkNCj4gPiA+ ID4gKzk4NywxMyBAQCBOb25Db2hlcmVudFBjaUlvRnJlZUJ1ZmZlciAoDQo+ID4gPiA+ICAgICAg ICAgRW50cnkgPSBFbnRyeS0+Rm9yd2FyZExpbmspDQo+ID4gPiA+ICAgIHsNCj4gPiA+ID4gICAg ICBBbGxvYyA9IEJBU0VfQ1IgKEVudHJ5LA0KPiA+ID4gPiBOT05fRElTQ09WRVJBQkxFX0RFVklD RV9VTkNBQ0hFRF9BTExPQ0FUSU9OLCBMaXN0KTsNCj4gPiA+ID4gLSAgICBpZiAoKEFsbG9jLT5I b3N0QWRkcmVzcyA9PSBIb3N0QWRkcmVzcykgJiYgKEFsbG9jLT5OdW1QYWdlcyA9PQ0KPiA+ID4g UGFnZXMpKQ0KPiA+ID4gPiB7DQo+ID4gPiA+ICsgICAgU3RhcnRQYWdlcyA9IDA7DQo+ID4gPiA+ ICsgICAgaWYgKEFsbG9jLT5Ib3N0QWRkcmVzcyA8IEhvc3RBZGRyZXNzKSB7DQo+ID4gPiA+ICsg ICAgICBTdGFydFBhZ2VzID0gKEhvc3RBZGRyZXNzIC0gQWxsb2MtPkhvc3RBZGRyZXNzKSAvIEVG SV9QQUdFX1NJWkU7DQo+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiArICAgIGlmICgoQWxsb2MtPkhv c3RBZGRyZXNzIDw9IEhvc3RBZGRyZXNzKSAmJiAoQWxsb2MtPk51bVBhZ2VzDQo+ID4gPiA+ICsg Pj0gKFBhZ2VzICsgU3RhcnRQYWdlcykpKSB7DQo+ID4gPiA+ICAgICAgICAvLw0KPiA+ID4gPiAt ICAgICAgLy8gV2UgYXJlIGZyZWVpbmcgdGhlIGV4YWN0IGFsbG9jYXRpb24gd2Ugd2VyZSBnaXZl bg0KPiA+ID4gPiArICAgICAgLy8gV2UgYXJlIGZyZWVpbmcgYXQgbGVhc3QgcGFydCBvZiB3aGF0 IHdlIHdlcmUgZ2l2ZW4NCj4gPiA+ID4gICAgICAgIC8vIGJlZm9yZSBieSBBbGxvY2F0ZUJ1ZmZl cigpDQo+ID4gPiA+ICAgICAgICAvLw0KPiA+ID4gPiAgICAgICAgRm91bmQgPSBUUlVFOw0KPiA+ ID4gPiBAQCAtOTkxLDcgKzEwMDYsNDEgQEAgTm9uQ29oZXJlbnRQY2lJb0ZyZWVCdWZmZXIgKA0K PiA+ID4gPiAgICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+ID4gPiAgICB9DQo+ID4gPiA+ DQo+ID4gPiA+ICsgIEVuZFBhZ2VzID0gQWxsb2MtPk51bVBhZ2VzIC0gKFBhZ2VzICsgU3RhcnRQ YWdlcyk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgaWYgKFN0YXJ0UGFnZXMgIT0gMCkgew0KPiA+ ID4gPiArICAgIEFsbG9jSGVhZCA9IEFsbG9jYXRlUG9vbCAoc2l6ZW9mICpBbGxvY0hlYWQpOw0K PiA+ID4gPiArICAgIGlmIChBbGxvY0hlYWQgPT0gTlVMTCkgew0KPiA+ID4gPiArICAgICAgcmV0 dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gPiArICAgIH0NCj4gPiA+ID4gKw0KPiA+ ID4gPiArICAgIEFsbG9jSGVhZC0+SG9zdEFkZHJlc3MgPSBBbGxvYy0+SG9zdEFkZHJlc3M7DQo+ ID4gPiA+ICsgICAgQWxsb2NIZWFkLT5OdW1QYWdlcyA9IFN0YXJ0UGFnZXM7DQo+ID4gPiA+ICsg ICAgQWxsb2NIZWFkLT5BdHRyaWJ1dGVzID0gQWxsb2MtPkF0dHJpYnV0ZXM7ICB9DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgaWYgKEVuZFBhZ2VzICE9IDApIHsNCj4gPiA+ID4gKyAgICBBbGxvY1Rh aWwgPSBBbGxvY2F0ZVBvb2wgKHNpemVvZiAqQWxsb2NUYWlsKTsNCj4gPiA+ID4gKyAgICBpZiAo QWxsb2NUYWlsID09IE5VTEwpIHsNCj4gPiA+ID4gKyAgICAgIHJldHVybiBFRklfT1VUX09GX1JF U09VUkNFUzsNCj4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKyAgICBBbGxvY1Rh aWwtPkhvc3RBZGRyZXNzID0gQWxsb2MtPkhvc3RBZGRyZXNzICsgKChQYWdlcyArDQo+ID4gPiA+ ICsgU3RhcnRQYWdlcykgKg0KPiA+ID4gPiBFRklfUEFHRV9TSVpFKTsNCj4gPiA+ID4gKyAgICBB bGxvY1RhaWwtPk51bVBhZ2VzID0gRW5kUGFnZXM7DQo+ID4gPiA+ICsgICAgQWxsb2NUYWlsLT5B dHRyaWJ1dGVzID0gQWxsb2MtPkF0dHJpYnV0ZXM7ICB9DQo+ID4gPiA+ICsNCj4gPiA+ID4gICAg UmVtb3ZlRW50cnlMaXN0ICgmQWxsb2MtPkxpc3QpOw0KPiA+ID4gPiArICAvLw0KPiA+ID4gPiAr ICAvLyBSZWNvcmQgdGhpcyBuZXcgc3ViIGFsbG9jYXRpb25zIGluIHRoZSBsaW5rZWQgbGlzdCwg c28gd2UNCj4gPiA+ID4gKyAvLyBjYW4gcmVzdG9yZSB0aGUgbWVtb3J5IHNwYWNlIGF0dHJpYnV0 ZXMgbGF0ZXIgIC8vICBpZg0KPiA+ID4gPiArIChBbGxvY0hlYWQgIT0NCj4gPiA+ID4gKyBOVUxM KSB7DQo+ID4gPiA+ICsgICAgSW5zZXJ0SGVhZExpc3QgKCZEZXYtPlVuY2FjaGVkQWxsb2NhdGlv bkxpc3QsDQo+ID4gPiA+ICsgJkFsbG9jSGVhZC0+TGlzdCk7IH0gaWYgKEFsbG9jVGFpbCAhPSBO VUxMKSB7DQo+ID4gPiA+ICsgICAgSW5zZXJ0SGVhZExpc3QgKCZEZXYtPlVuY2FjaGVkQWxsb2Nh dGlvbkxpc3QsDQo+ID4gPiA+ICsgJkFsbG9jVGFpbC0+TGlzdCk7IH0NCj4gPiA+ID4NCj4gPiA+ ID4gICAgU3RhdHVzID0gZ0RTLT5TZXRNZW1vcnlTcGFjZUF0dHJpYnV0ZXMgKA0KPiA+ID4gPiAg ICAgICAgICAgICAgICAgICAgKEVGSV9QSFlTSUNBTF9BRERSRVNTKShVSU5UTilIb3N0QWRkcmVz cywNCj4gPiA+ID4gLS0NCj4gPiA+ID4gMi4xNy4xDQo+ID4NCg==