From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (EUR04-HE1-obe.outbound.protection.outlook.com [40.107.7.58]) by mx.groups.io with SMTP id smtpd.web10.18463.1590345122106606422 for ; Sun, 24 May 2020 11:32:02 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@nxp1.onmicrosoft.com header.s=selector2-nxp1-onmicrosoft-com header.b=M+WoK0nn; spf=pass (domain: oss.nxp.com, ip: 40.107.7.58, mailfrom: wasim.khan@oss.nxp.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=O6hTVhATQkVHzUMWfknApOZLtlj9SCuSzcFGZ20iBV2NG1HWXQf+OcW5EgZ2OZ9x8du8r0jPKY4QJm6oCI199Ot5H19qhau99YIyryPD7wf0DJnX1hNUX0A8iJqALuNGN/N0Akre/8WlA24uQQfD5jr0UbjYSf2LB4SD7dgsXaBVaTB0XVgJvHlq+nJMrurr4pzeBbQSdUhHTQ8TIcvfnQQs6c24TvKdeSo6ghwJqcZEACfiSGiSqZRUgh2k8Yh2lElgpzO62rM+qyTCqFEKikFHzNGd7BVt79ozMf5q1GQSdQhl1hUJIwhcE5/drTzclssLwMPCoBhi+RpE9ZiXnA== 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-SenderADCheck; bh=UsOwvRE+FHOijTebHPLGuQqmhOZO8TmoGYSCxIAXt2g=; b=F5ndpepvCVi53tCohnzl4ImdGHHhUx2KFADN8sKM+0JS4tsPGXloLJ9soZ9whogKB24VeBIihQ6cAUpwQPIXRQ6mZLe39flffD+91SoiIaG7UB+h6vOfU/ED0QhgdJzVTf2QtDvkR7DWqszcawaNPfysi5RkLnf85OEceyaDHErVhsKxY0STSpNtRUSavWJO6WfaRpz7ZhOTE7j5oGrgWmkq1mGhaS5ebRJOnrYYF0dRHK3hm+qAf5+BADHasEt44uyJpkTvrtKxVJKdije6IovW5GrgK5/rEMg/eiFmOd2CJRESu7YTrP0osAhKGGJkBDdEteAHd3XyicmFOe/7WQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UsOwvRE+FHOijTebHPLGuQqmhOZO8TmoGYSCxIAXt2g=; b=M+WoK0nnxUyMDevvc/6kZxoxlpbOPgzinlz6G3NUHA458OWrWY4q3FZpJ/z1xzRWYsgIfE7d7hi02od6sC32QrxxCQfyVZf9fghSg60cnjFf2hmpy6mpIebQ9tBQPg819S6k2WVU1ff7LHXohROAvUR8YwQIGJmqinYTO5B5an0= Received: from VE1PR04MB6702.eurprd04.prod.outlook.com (2603:10a6:803:123::13) by VE1PR04MB6493.eurprd04.prod.outlook.com (2603:10a6:803:11f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3021.27; Sun, 24 May 2020 18:31:59 +0000 Received: from VE1PR04MB6702.eurprd04.prod.outlook.com ([fe80::81c4:97a6:7592:f225]) by VE1PR04MB6702.eurprd04.prod.outlook.com ([fe80::81c4:97a6:7592:f225%7]) with mapi id 15.20.3021.029; Sun, 24 May 2020 18:31:59 +0000 From: "Wasim Khan (OSS)" To: Ard Biesheuvel CC: "devel@edk2.groups.io" , Meenakshi Aggarwal , Vabhav Sharma , Varun Sethi , "leif@nuviainc.com" , "jon@solid-run.com" Subject: Re: [PATCH edk2-platforms 05/16] Silicon/NXP: PciHostBridgeLib: Setup PCIe LsGen4 Controller and ATU Windows Thread-Topic: [PATCH edk2-platforms 05/16] Silicon/NXP: PciHostBridgeLib: Setup PCIe LsGen4 Controller and ATU Windows Thread-Index: AQHWL8QGg5MxfNpIe02HqZSkR4RoB6iz1hQAgAO1sWA= Date: Sun, 24 May 2020 18:31:58 +0000 Message-ID: References: <1590102139-16588-1-git-send-email-wasim.khan@oss.nxp.com> <1590102139-16588-6-git-send-email-wasim.khan@oss.nxp.com> <81087d66-c40e-7487-6470-7023ddee801a@arm.com> In-Reply-To: <81087d66-c40e-7487-6470-7023ddee801a@arm.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=oss.nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [157.47.197.3] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 56e5e947-db10-4ccb-b20b-08d80010bea1 x-ms-traffictypediagnostic: VE1PR04MB6493: x-ms-exchange-sharedmailbox-routingagent-processed: True x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:529; x-forefront-prvs: 0413C9F1ED x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: mdSFvgK69udsVdxT1VJuFEts3QxRu0GdQqOJByG5J4mM8hYiw5CC87G/CC9bE90KMCB9raVfuWSKS5xvyVye59rNIN2vzlttguwlhJjaeuYgfhgGz7MYApRpMxQYkyvBJAnaFGhgSzilZLHmVHUNxep2tUzFQOTBmdDQqEIkXEWapMThewQutVcSAIJK0Rf7RijrNu+5Z5MmbJC8Es8lu2QXL9HTQlULg43G2WkEH7dapIR+3pr1m2V3kelbA/F1fFr47R+a7AVVjybzu/uW9CfKD2vJRt0mz3SHEfW57o607aC9j0I3M0oBAYYced9NG1Zhw1231bd6qgLnLBjbvg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6702.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(6029001)(4636009)(396003)(346002)(366004)(136003)(39860400002)(376002)(7696005)(5660300002)(30864003)(2906002)(316002)(52536014)(66476007)(19627235002)(71200400001)(66446008)(76116006)(66556008)(66946007)(64756008)(6916009)(8676002)(86362001)(53546011)(4326008)(8936002)(33656002)(55016002)(54906003)(9686003)(6506007)(26005)(478600001)(186003)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: EM26JJCxE4FXB6ZP7oMKN1C+4CQSxUPUcCHB84q63wXZOwxfGNSQLRfH78qIonYn87yQR0PTdPvmX+zwegJ3q0RFrWuKUSjUNVGUgJNLMzI2dC40G4UE+WWQoY1kIsy+lZL4x1jDIsBp/D5G9Xd9NY6hCSO9R27CmWZ9D8tZDmhRB7Uucc5RUBzXYehq8WLXojCF50AvxvH6U9lczSSsL88JMw3Tbjg9G+49rhQsQi40rnccwJRdo7Iamz5pegzKyfWGWVh7BWk0C5UoRLikW1xEVkTP/TLnQCtQJFyZFR9QmlMiNI2ShWApdj70RV0m2UJOBfDBBzS1a4rkmRcQiyKX9RXapfYi64WVsEWwPTqprsaMD9LYfsYSPm7MfT3b5d7/6DswxE9UfX4ejxwBHTwDxXW9j4x3JuK6nDL76Ydgapuwo4bY6n8sCJiuaxlnM7YhgX+uoh/dPG6yFoxK6isLwD4NDHsE4fo4qmfobgg= MIME-Version: 1.0 X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 56e5e947-db10-4ccb-b20b-08d80010bea1 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 May 2020 18:31:58.8830 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8G45qdSAHzhgwmBalxDZSUqPG7zux59HmVQC3hhKFHx06OwaK5i+wgHNBv5zku/vWOkaDdovxC6jl6xWqB5GpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB6493 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg PGFyZC5iaWVzaGV1dmVsQGFybS5jb20+DQo+IFNlbnQ6IEZyaWRheSwgTWF5IDIyLCAyMDIwIDI6 NTUgUE0NCj4gVG86IFdhc2ltIEtoYW4gKE9TUykgPHdhc2ltLmtoYW5Ab3NzLm54cC5jb20+OyBk ZXZlbEBlZGsyLmdyb3Vwcy5pbzsNCj4gTWVlbmFrc2hpIEFnZ2Fyd2FsIDxtZWVuYWtzaGkuYWdn YXJ3YWxAbnhwLmNvbT47IFZhYmhhdiBTaGFybWENCj4gPHZhYmhhdi5zaGFybWFAbnhwLmNvbT47 IFZhcnVuIFNldGhpIDxWLlNldGhpQG54cC5jb20+Ow0KPiBsZWlmQG51dmlhaW5jLmNvbTsgam9u QHNvbGlkLXJ1bi5jb20NCj4gQ2M6IFdhc2ltIEtoYW4gPHdhc2ltLmtoYW5AbnhwLmNvbT4NCj4g U3ViamVjdDogUmU6IFtQQVRDSCBlZGsyLXBsYXRmb3JtcyAwNS8xNl0gU2lsaWNvbi9OWFA6IFBj aUhvc3RCcmlkZ2VMaWI6IFNldHVwDQo+IFBDSWUgTHNHZW40IENvbnRyb2xsZXIgYW5kIEFUVSBX aW5kb3dzDQo+IA0KPiBPbiA1LzIyLzIwIDE6MDIgQU0sIFdhc2ltIEtoYW4gd3JvdGU6DQo+ID4g RnJvbTogV2FzaW0gS2hhbiA8d2FzaW0ua2hhbkBueHAuY29tPg0KPiA+DQo+ID4gU2V0dXAgUENJ ZSBMYXllcnNjYXBlR2VuNCBjb250cm9sbGVyIGFuZCBzZXR1cCBDRkcsIElPLCBNTUlPIGFuZA0K PiA+IE1NSU82NCBpQVRVIHdpbmRvd3MuDQo+ID4gQ2hlY2sgZm9yIFBjZFBjaUxzR2VuNEN0cmwg dG8gZW5hYmxlIExzR2VuNCBQQ0llIGNvbnRyb2xsZXIuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5 OiBWYWJoYXYgU2hhcm1hIDx2YWJoYXYuc2hhcm1hQG54cC5jb20+DQo+ID4gU2lnbmVkLW9mZi1i eTogV2FzaW0gS2hhbiA8d2FzaW0ua2hhbkBueHAuY29tPg0KPiANCj4gSG93IG11Y2ggb3Zlcmxh cCBpcyB0aGVyZSBiZXR3ZWVuIHRoZXNlIGNvbnRyb2xsZXJzPyBEb2VzIGl0IHJlYWxseSBtYWtl IHNlbnNlDQo+IHRvIHVzZSB0aGUgc2FtZSBQY2lIb3N0QnJpZGdlTGliIGltcGxlbWVudGF0aW9u IGFuZCBwYXJhbWV0ZXJpemUgdGhlIGhlbGwgb3V0DQo+IG9mIGl0Pw0KPiANCg0KTWFqb3JseSB0 aGUgV2luZG93IGNvbmZpZ3VyYXRpb24gcGFydCBpcyBkaWZmZXJlbnQgYXMgYm90aCBjb250cm9s bGVyIGhhcyBkaWZmZXJlbnQgcmVnaXN0ZXJzIHNldC4gDQpNb3N0IG9mIHRoZSBjb21tb24gY29k ZSBpcyBzYW1lLCB0aGF04oCZcyB3aHkgd2Ugd2FudCB0byBrZWVwIGEgc2luZ2xlIFBjaUhvc3RC cmlnZUxpYi4NCkFsc28sIGZvciB0aGUgTFgyMTYwLVJldjEgYW5kIExYMjE2MC1SZXYyIFBDSWUg Y29udHJvbGxlciBpcyBkaWZmZXJlbnQsIHNvIHRvIHVzZSB0aGUgc2FtZSBCaW5hcnkgb24gYm90 aCB2ZXJzaW9ucywgd2UgdXNlIHNpbmdsZSBMaWJyYXJ5IGFuZCBiYXNlZCBvbiBTb0MgdmVyc2lv biBhdCBydW4gdGltZSAsIHdlIGVuYWJsZSB0aGUgdW5kZXJuZWF0aCBjb250cm9sbGVyLiANCg0K DQo+IA0KPiA+IC0tLQ0KPiA+ICAgU2lsaWNvbi9OWFAvTnhwUW9yaXFMcy5kZWMgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ICAgLi4uL0xpYnJhcnkvUGNpSG9zdEJyaWRnZUxp Yi9QY2lIb3N0QnJpZGdlTGliLmluZiAgfCAgIDEgKw0KPiA+ICAgU2lsaWNvbi9OWFAvSW5jbHVk ZS9QY2llLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAxMjAgKysrKysrKysrKw0KPiA+ICAg Li4uL0xpYnJhcnkvUGNpSG9zdEJyaWRnZUxpYi9QY2lIb3N0QnJpZGdlTGliLmMgICAgfCAyNTUg KysrKysrKysrKysrKysrKystDQo+IC0tLQ0KPiA+ICAgNCBmaWxlcyBjaGFuZ2VkLCAzMzYgaW5z ZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvU2lsaWNv bi9OWFAvTnhwUW9yaXFMcy5kZWMgYi9TaWxpY29uL05YUC9OeHBRb3JpcUxzLmRlYw0KPiA+IGlu ZGV4IDI5M2ZkNzczZmQzZC4uODI3MWQxOWVkOGU1IDEwMDY0NA0KPiA+IC0tLSBhL1NpbGljb24v TlhQL054cFFvcmlxTHMuZGVjDQo+ID4gKysrIGIvU2lsaWNvbi9OWFAvTnhwUW9yaXFMcy5kZWMN Cj4gPiBAQCAtMzksMyArMzksNCBAQCBbUGNkc0ZpeGVkQXRCdWlsZC5jb21tb25dDQo+ID4NCj4g PiAgIFtQY2RzRHluYW1pYy5jb21tb25dDQo+ID4NCj4gPg0KPiBnTnhwUW9yaXFMc1Rva2VuU3Bh Y2VHdWlkLlBjZFBjaUNmZ1NoaWZ0RW5hYmxlfEZBTFNFfEJPT0xFQU58MHgwMDAwMDYNCj4gMA0K PiA+IDANCj4gPiArDQo+IGdOeHBRb3JpcUxzVG9rZW5TcGFjZUd1aWQuUGNkUGNpTHNHZW40Q3Ry bHxGQUxTRXxCT09MRUFOfDB4MDAwMDA2MDENCj4gPiBkaWZmIC0tZ2l0IGEvU2lsaWNvbi9OWFAv TGlicmFyeS9QY2lIb3N0QnJpZGdlTGliL1BjaUhvc3RCcmlkZ2VMaWIuaW5mDQo+ID4gYi9TaWxp Y29uL05YUC9MaWJyYXJ5L1BjaUhvc3RCcmlkZ2VMaWIvUGNpSG9zdEJyaWRnZUxpYi5pbmYNCj4g PiBpbmRleCA5OGNmYjZhZWU2YjAuLmI3NzdhY2RjMTAzZiAxMDA2NDQNCj4gPiAtLS0gYS9TaWxp Y29uL05YUC9MaWJyYXJ5L1BjaUhvc3RCcmlkZ2VMaWIvUGNpSG9zdEJyaWRnZUxpYi5pbmYNCj4g PiArKysgYi9TaWxpY29uL05YUC9MaWJyYXJ5L1BjaUhvc3RCcmlkZ2VMaWIvUGNpSG9zdEJyaWRn ZUxpYi5pbmYNCj4gPiBAQCAtNDEsMyArNDEsNCBAQCBbRml4ZWRQY2RdDQo+ID4NCj4gPiAgIFtQ Y2RdDQo+ID4gICAgIGdOeHBRb3JpcUxzVG9rZW5TcGFjZUd1aWQuUGNkUGNpQ2ZnU2hpZnRFbmFi bGUNCj4gPiArICBnTnhwUW9yaXFMc1Rva2VuU3BhY2VHdWlkLlBjZFBjaUxzR2VuNEN0cmwNCj4g PiBkaWZmIC0tZ2l0IGEvU2lsaWNvbi9OWFAvSW5jbHVkZS9QY2llLmggYi9TaWxpY29uL05YUC9J bmNsdWRlL1BjaWUuaA0KPiA+IGluZGV4IGFlODUxOTAxODBlOC4uNGM0MWMzNTg1YThiIDEwMDc1 NQ0KPiA+IC0tLSBhL1NpbGljb24vTlhQL0luY2x1ZGUvUGNpZS5oDQo+ID4gKysrIGIvU2lsaWNv bi9OWFAvSW5jbHVkZS9QY2llLmgNCj4gPiBAQCAtODQsNSArODQsMTI1IEBADQo+ID4gICAjZGVm aW5lIFNFR19JT19CVVMgICAgICAgICAgICAgICAgMHgwDQo+ID4NCj4gPiAgICNkZWZpbmUgQ0ZH X1NISUZUX0VOQUJMRSAgICAgICAgICAoUGNkR2V0Qm9vbCAoUGNkUGNpQ2ZnU2hpZnRFbmFibGUp KQ0KPiA+ICsjZGVmaW5lIFBDSV9MU19HRU40X0NUUkwgICAgICAgICAgKFBjZEdldEJvb2wgKFBj ZFBjaUxzR2VuNEN0cmwpKQ0KPiA+DQo+ID4gKy8vIFBDSWUgTGF5ZXJzY2FwZSBHZW40IENvbnRy b2xsZXINCj4gPiArI2RlZmluZSBHUEVYX0NMQVNTQ09ERSAgICAgICAgICAgICAgICAgICAgICAg ICAgMHg0NzQNCj4gPiArI2RlZmluZSBHUEVYX0NMQVNTQ09ERV9TSElGVCAgICAgICAgICAgICAg ICAgICAgMTYNCj4gPiArI2RlZmluZSBHUEVYX0NMQVNTQ09ERV9NQVNLICAgICAgICAgICAgICAg ICAgICAgMHhmZmZmDQo+ID4gKyNkZWZpbmUgUEFCX0FYSV9QSU9fQ1RSTChJZHgpICAgICAgICAg ICAgICAgICAgICgweDg0MCArIDB4MTAgKiBJZHgpDQo+ID4gKyNkZWZpbmUgQVBJT19FTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MQ0KPiA+ICsjZGVmaW5lIE1FTV9XSU5fRU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEgPDwgMQ0KPiA+ICsjZGVmaW5lIElPX1dJ Tl9FTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEgPDwgMg0KPiA+ICsjZGVmaW5l IENGR19XSU5fRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEgPDwgMw0KPiA+ICsj ZGVmaW5lIFBBQl9QRVhfUElPX0NUUkwoSWR4KSAgICAgICAgICAgICAgICAgICAoMHg4YzAgKyAw eDEwICogSWR4KQ0KPiA+ICsjZGVmaW5lIFBQSU9fRU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoMHgxIDw8IDApDQo+ID4gKyNkZWZpbmUgUEFCX1BFWF9QSU9fU1RBVChJZHgpICAg ICAgICAgICAgICAgICAgICgweDhjNCArIDB4MTAgKiBJZHgpDQo+ID4gKyNkZWZpbmUgUEFCX1BF WF9QSU9fTVRfU1RBVChJZHgpICAgICAgICAgICAgICAgICgweDhjOCArIDB4MTAgKiBJZHgpDQo+ ID4gKyNkZWZpbmUgUEVYX0FNQVBfQ1RSTF9UWVBFX1NISUZUICAgICAgICAgICAgICAgIDB4MQ0K PiA+ICsjZGVmaW5lIFBFWF9BTUFQX0NUUkxfRU5fU0hJRlQgICAgICAgICAgICAgICAgICAweDAN Cj4gPiArI2RlZmluZSBQRVhfQU1BUF9DVFJMX1RZUEVfTUFTSyAgICAgICAgICAgICAgICAgMHgz DQo+ID4gKyNkZWZpbmUgUEVYX0FNQVBfQ1RSTF9FTl9NQVNLICAgICAgICAgICAgICAgICAgIDB4 MQ0KPiA+ICsjZGVmaW5lIFBBQl9QRVhfQU1BUF9DVFJMKElkeCkgICAgICAgICAgICAgICAgICAo MHg0YmEwICsgMHgxMCAqIElkeCkNCj4gPiArI2RlZmluZSBQQUJfRVhUX1BFWF9BTUFQX1NJWkUo SWR4KSAgICAgICAgICAgICAgKDB4YmVmMCArIDB4MDQgKiBJZHgpDQo+ID4gKyNkZWZpbmUgUEFC X1BFWF9BTUFQX0FYSV9XSU4oSWR4KSAgICAgICAgICAgICAgICgweDRiYTQgKyAweDEwICogSWR4 KQ0KPiA+ICsjZGVmaW5lIFBBQl9FWFRfUEVYX0FNQVBfQVhJX1dJTihJZHgpICAgICAgICAgICAo MHhiNGEwICsgMHgwNCAqIElkeCkNCj4gPiArI2RlZmluZSBQQUJfUEVYX0FNQVBfUEVYX1dJTl9M KElkeCkgICAgICAgICAgICAgKDB4NGJhOCArIDB4MTAgKiBJZHgpDQo+ID4gKyNkZWZpbmUgUEFC X1BFWF9BTUFQX1BFWF9XSU5fSChJZHgpICAgICAgICAgICAgICgweDRiYWMgKyAweDEwICogSWR4 KQ0KPiA+ICsjZGVmaW5lIFBBQl9DVFJMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDgwOA0KPiA+ICsjZGVmaW5lIFBBQl9DVFJMX0FQSU9fRU4gICAgICAgICAgICAgICAgICAgICAg ICAweDENCj4gPiArI2RlZmluZSBQQUJfQ1RSTF9QUElPX0VOICAgICAgICAgICAgICAgICAgICAg ICAgKDB4MSA8PCAxKQ0KPiA+ICsjZGVmaW5lIFBBQl9DVFJMX1BBR0VfU0VMX1NISUZUICAgICAg ICAgICAgICAgICAxMw0KPiA+ICsjZGVmaW5lIFBBQl9DVFJMX1BBR0VfU0VMX01BU0sgICAgICAg ICAgICAgICAgICAweDNmDQo+ID4gKyNkZWZpbmUgSU5ESVJFQ1RfQUREUl9CTkRSWSAgICAgICAg ICAgICAgICAgICAgIDB4YzAwDQo+ID4gKyNkZWZpbmUgUEFHRV9JRFhfU0hJRlQgICAgICAgICAg ICAgICAgICAgICAgICAgIDEwDQo+ID4gKyNkZWZpbmUgUEFHRV9BRERSX01BU0sgICAgICAgICAg ICAgICAgICAgICAgICAgIDB4M2ZmDQo+ID4gKyNkZWZpbmUgUEFCX0FYSV9BTUFQX0NUUkwoSWR4 KSAgICAgICAgICAgICAgICAgICgweGJhMCArIDB4MTAgKiBJZHgpDQo+ID4gKyNkZWZpbmUgUEFC X0VYVF9BWElfQU1BUF9TSVpFKElkeCkgICAgICAgICAgICAgICgweGJhZjAgKyAweDQgKiBJZHgp DQo+ID4gKyNkZWZpbmUgUEFCX0FYSV9BTUFQX0FYSV9XSU4oSWR4KSAgICAgICAgICAgICAgICgw eGJhNCArIDB4MTAgKiBJZHgpDQo+ID4gKyNkZWZpbmUgUEFCX0VYVF9BWElfQU1BUF9BWElfV0lO KElkeCkgICAgICAgICAgICgweDgwYTAgKyAweDQgKiBJZHgpDQo+ID4gKyNkZWZpbmUgUEFCX0FY SV9BTUFQX1BFWF9XSU5fTChJZHgpICAgICAgICAgICAgICgweGJhOCArIDB4MTAgKiBJZHgpDQo+ ID4gKyNkZWZpbmUgUEFCX0FYSV9BTUFQX1BFWF9XSU5fSChJZHgpICAgICAgICAgICAgICgweGJh YyArIDB4MTAgKiBJZHgpDQo+ID4gKyNkZWZpbmUgUEFCX0FYSV9UWVBFX0NGRyAgICAgICAgICAg ICAgICAgICAgICAgIDB4MDANCj4gPiArI2RlZmluZSBQQUJfQVhJX1RZUEVfSU8gICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMQ0KPiA+ICsjZGVmaW5lIFBBQl9BWElfVFlQRV9NRU0gICAgICAg ICAgICAgICAgICAgICAgICAweDAyDQo+ID4gKyNkZWZpbmUgQVhJX0FNQVBfQ1RSTF9FTiAgICAg ICAgICAgICAgICAgICAgICAgIDB4MQ0KPiA+ICsjZGVmaW5lIEFYSV9BTUFQX0NUUkxfVFlQRV9T SElGVCAgICAgICAgICAgICAgICAxDQo+ID4gKyNkZWZpbmUgQVhJX0FNQVBfQ1RSTF9UWVBFX01B U0sgICAgICAgICAgICAgICAgIDB4Mw0KPiA+ICsjZGVmaW5lIEFYSV9BTUFQX0NUUkxfU0laRV9T SElGVCAgICAgICAgICAgICAgICAxMA0KPiA+ICsjZGVmaW5lIEFYSV9BTUFQX0NUUkxfU0laRV9N QVNLICAgICAgICAgICAgICAgICAweDNmZmZmZg0KPiA+ICsNCj4gPiArDQo+ID4gKyNkZWZpbmUg T0ZGU0VUX1RPX1BBR0VfSURYKE9mZikgICAgICAgICAgICAgICAgICgoT2ZmID4+IFBBR0VfSURY X1NISUZUKSBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICYNCj4gPiArUEFCX0NUUkxfUEFHRV9TRUxfTUFTSykNCj4gPiArDQo+ID4gKyNkZWZp bmUgT0ZGU0VUX1RPX1BBR0VfQUREUihPZmYpICAgICAgICAgICAgICAgICgoT2ZmICYgUEFHRV9B RERSX01BU0spIFwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfA0KPiA+ICtJTkRJUkVDVF9BRERSX0JORFJZKQ0KPiA+ICsvKioNCj4gPiArICBG dW5jdGlvbiB0byBzZXQgcGFnZSBmb3IgTHNHZW40IEN0cmwNCj4gPiArDQo+ID4gKyAgQHBhcmFt ICBEYmkgICAgR1BFWCBob3N0IGNvbnRyb2xsZXIgYWRkcmVzcy4NCj4gPiArICBAcGFyYW0gIFBn SWR4ICBUaGUgcGFnZSBpbmRleCB0byBzZWxlY3QNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtTVEFU SUMgaW5saW5lIFZPSUQgUGNpTHNHZW40U2V0UGcgKA0KPiA+ICsgIElOIEVGSV9QSFlTSUNBTF9B RERSRVNTIERiaSwNCj4gPiArICBJTiBVSU5UOCBQZ0lkeA0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIFVJTlQzMiBWYWw7DQo+ID4gKyAgVmFsID0gTW1pb1JlYWQzMiAoRGJpICsgUEFCX0NUUkwp Ow0KPiA+ICsgIFZhbCAmPSB+KFBBQl9DVFJMX1BBR0VfU0VMX01BU0sgPDwgUEFCX0NUUkxfUEFH RV9TRUxfU0hJRlQpOw0KPiA+ICsgIFZhbCB8PSAoUGdJZHggJiBQQUJfQ1RSTF9QQUdFX1NFTF9N QVNLKSA8PA0KPiBQQUJfQ1RSTF9QQUdFX1NFTF9TSElGVDsNCj4gPiArICBNbWlvV3JpdGUzMiAo RGJpICsgUEFCX0NUUkwsIFZhbCk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEZ1 bmN0aW9uIHRvIHJlYWQgTHNHZW40IFBDSWUgY29udHJvbGxlciBjb25maWcgc3BhY2UNCj4gPiAr ICBMc0dlbjQgUENJZSBjb250cm9sbGVyIHJlcXVpcmVzIHBhZ2UgbnVtYmVyIHRvIGJlIHNldA0K PiA+ICsgIGluIEJyaWRnZSBDb250cm9sIFJlZ2lzdGVyKFBBQikgZm9yIG9mZnNldCA+IDNLQi4N Cj4gPiArDQo+ID4gKyAgQHBhcmFtICBEYmkgICAgIEdQRVggaG9zdCBjb250cm9sbGVyIGFkZHJl c3MuDQo+ID4gKyAgQHBhcmFtICBPZmZzZXQgIE9mZnNldCB0byByZWFkIGZyb20NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtTVEFUSUMgaW5saW5lIElOVE4gUGNpTHNHZW40UmVhZDMyICgNCj4gPiAr ICBJTiBFRklfUEhZU0lDQUxfQUREUkVTUyBEYmksDQo+ID4gKyAgSU4gVUlOVDMyIE9mZnNldA0K PiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGlmIChPZmZzZXQgPCBJTkRJUkVDVF9BRERSX0JORFJZ KSB7DQo+ID4gKyAgICBQY2lMc0dlbjRTZXRQZyAoRGJpLCAwKTsNCj4gPiArICAgIHJldHVybiBN bWlvUmVhZDMyIChEYmkgKyBPZmZzZXQpOw0KPiA+ICsgIH0gZWxzZSB7DQo+ID4gKyAgICAvLyBJ ZiBPZmZzZXQgPiAzS0IsIHBhZ2luZyBtZWNoYW5pc20gaXMgdXNlZA0KPiA+ICsgICAgLy8gU2Vs ZWN0IHBhZ2UgaW5kZXggYW5kIG9mZnNldCB3aXRoaW4gdGhlIHBhZ2UNCj4gPiArICAgIFBjaUxz R2VuNFNldFBnIChEYmksIE9GRlNFVF9UT19QQUdFX0lEWCAoT2Zmc2V0KSk7DQo+ID4gKyAgICBy ZXR1cm4gTW1pb1JlYWQzMiAoRGJpICsgT0ZGU0VUX1RPX1BBR0VfQUREUiAoT2Zmc2V0KSk7DQo+ ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGdW5jdGlvbiB0byB3cml0 ZSB0byBMc0dlbjQgUENJZSBjb250cm9sbGVyIGNvbmZpZyBzcGFjZQ0KPiA+ICsgIExzR2VuNCBQ Q0llIGNvbnRyb2xsZXIgcmVxdWlyZXMgcGFnZSBudW1iZXIgdG8gYmUgc2V0DQo+ID4gKyAgaW4g QnJpZGdlIENvbnRyb2wgUmVnaXN0ZXIoUEFCKSBmb3Igb2Zmc2V0ID4gM0tCLg0KPiA+ICsNCj4g PiArICBAcGFyYW0gIERiaSAgICAgR1BFWCBob3N0IGNvbnRyb2xsZXIgYWRkcmVzcw0KPiA+ICsg IEBwYXJhbSAgT2Zmc2V0ICBPZmZzZXQgdG8gcmVhZCBmcm9tDQo+ID4gKw0KPiA+ICsqKi8NCj4g PiArU1RBVElDIGlubGluZSBWT0lEIFBjaUxzR2VuNFdyaXRlMzIgKA0KPiA+ICsgIElOIEVGSV9Q SFlTSUNBTF9BRERSRVNTIERiaSwNCj4gPiArICBJTiBVSU5UMzIgT2Zmc2V0LA0KPiA+ICsgIElO IFVJTlQzMiBWYWx1ZQ0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIGlmIChPZmZzZXQgPCBJTkRJ UkVDVF9BRERSX0JORFJZKSB7DQo+ID4gKyAgICBQY2lMc0dlbjRTZXRQZyAoRGJpLCAwKTsNCj4g PiArICAgIE1taW9Xcml0ZTMyIChEYmkgKyBPZmZzZXQsIFZhbHVlKTsNCj4gPiArICB9IGVsc2Ug ew0KPiA+ICsgICAgUGNpTHNHZW40U2V0UGcgKERiaSwgT0ZGU0VUX1RPX1BBR0VfSURYIChPZmZz ZXQpKTsNCj4gPiArICAgIE1taW9Xcml0ZTMyIChEYmkgKyBPRkZTRVRfVE9fUEFHRV9BRERSIChP ZmZzZXQpLCBWYWx1ZSk7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gICAjZW5kaWYNCj4gPiBkaWZm IC0tZ2l0IGEvU2lsaWNvbi9OWFAvTGlicmFyeS9QY2lIb3N0QnJpZGdlTGliL1BjaUhvc3RCcmlk Z2VMaWIuYw0KPiA+IGIvU2lsaWNvbi9OWFAvTGlicmFyeS9QY2lIb3N0QnJpZGdlTGliL1BjaUhv c3RCcmlkZ2VMaWIuYw0KPiA+IGluZGV4IGY5Mjg2M2M2MDg2OC4uZDk5NDQzMTNkYTIxIDEwMDY0 NA0KPiA+IC0tLSBhL1NpbGljb24vTlhQL0xpYnJhcnkvUGNpSG9zdEJyaWRnZUxpYi9QY2lIb3N0 QnJpZGdlTGliLmMNCj4gPiArKysgYi9TaWxpY29uL05YUC9MaWJyYXJ5L1BjaUhvc3RCcmlkZ2VM aWIvUGNpSG9zdEJyaWRnZUxpYi5jDQo+ID4gQEAgLTIwMSw3ICsyMDEsMTEgQEAgUGNpZUxpbmtV cCAoDQo+ID4gICAgIFVJTlQzMiBTdGF0ZTsNCj4gPiAgICAgVUlOVDMyIEx0c3NtTWFzazsNCj4g Pg0KPiA+IC0gIEx0c3NtTWFzayA9IDB4M2Y7DQo+ID4gKyAgaWYgKFBDSV9MU19HRU40X0NUUkwp IHsNCj4gPiArICAgIEx0c3NtTWFzayA9IDB4N2Y7DQo+ID4gKyAgfSBlbHNlIHsNCj4gPiArICAg IEx0c3NtTWFzayA9IDB4M2Y7DQo+ID4gKyAgfQ0KPiA+DQo+ID4gICAgIFBjaWVPcHMgPSBHZXRN bWlvT3BlcmF0aW9ucyAoRmVhdHVyZVBjZEdldCAoUGNkUGNpTHV0QmlnRW5kaWFuKSk7DQo+ID4g ICAgIFN0YXRlID0gUGNpZU9wcy0+UmVhZDMyICgoVUlOVE4pUGNpZSArIFBDSV9MVVRfQkFTRSAr IFBDSV9MVVRfREJHKQ0KPiA+ICYgTHRzc21NYXNrOyBAQCAtMjM3LDM4ICsyNDEsNTggQEAgUGNp ZU91dGJvdW5kU2V0ICgNCj4gPiAgICAgSU4gVUlOVDY0IFNpemUNCj4gPiAgICAgKQ0KPiA+ICAg ew0KPiA+IC0gIC8vIFBDSWUgTGF5ZXJzY2FwZSA6IE91dGJvdW5kIFdpbmRvdw0KPiA+IC0gIE1t aW9Xcml0ZTMyIChEYmkgKyBJQVRVX1ZJRVdQT1JUX09GRiwNCj4gPiAtICAgICAgICAgICAgICAg IChVSU5UMzIpKElBVFVfVklFV1BPUlRfT1VUQk9VTkQgfCBJZHgpKTsNCj4gPiArICBVSU5UMzIg VmFsOw0KPiA+DQo+ID4gLSAgTW1pb1dyaXRlMzIgKERiaSArIElBVFVfTFdSX0JBU0VfQUREUl9P RkZfT1VUQk9VTkRfMCwNCj4gPiAtICAgICAgICAgICAgICAgIChVSU5UMzIpUGh5cyk7DQo+ID4g LQ0KPiA+IC0gIE1taW9Xcml0ZTMyIChEYmkgKyBJQVRVX1VQUEVSX0JBU0VfQUREUl9PRkZfT1VU Qk9VTkRfMCwNCj4gPiAtICAgICAgICAgICAgICAgIChVSU5UMzIpKFBoeXMgPj4gMzIpKTsNCj4g PiAtDQo+ID4gLSAgTW1pb1dyaXRlMzIgKERiaSArIElBVFVfTElNSVRfQUREUl9PRkZfT1VUQk9V TkRfMCwNCj4gPiAtICAgICAgICAgICAgICAgIChVSU5UMzIpKFBoeXMgKyBTaXplIC0gQklUMCkp Ow0KPiA+IC0NCj4gPiAtICBNbWlvV3JpdGUzMiAoRGJpICsgSUFUVV9MV1JfVEFSR0VUX0FERFJf T0ZGX09VVEJPVU5EXzAsDQo+ID4gLSAgICAgICAgICAgICAgICAoVUlOVDMyKUJ1c0FkZHIpOw0K PiA+IC0NCj4gPiAtICBNbWlvV3JpdGUzMiAoRGJpICsgSUFUVV9VUFBFUl9UQVJHRVRfQUREUl9P RkZfT1VUQk9VTkRfMCwNCj4gPiAtICAgICAgICAgICAgICAgIChVSU5UMzIpKEJ1c0FkZHIgPj4g MzIpKTsNCj4gPiAtDQo+ID4gLSAgTW1pb1dyaXRlMzIgKERiaSArIElBVFVfUkVHSU9OX0NUUkxf MV9PRkZfT1VUQk9VTkRfMCwNCj4gPiAtICAgICAgICAgICAgICAgIChVSU5UMzIpVHlwZSk7DQo+ ID4gLQ0KPiA+IC0gIGlmIChDRkdfU0hJRlRfRU5BQkxFICYmDQo+ID4gLSAgICAgKChUeXBlID09 IElBVFVfUkVHSU9OX0NUUkxfMV9PRkZfT1VUQk9VTkRfMF9UWVBFX0NGRzApIHx8DQo+ID4gLSAg ICAgKFR5cGUgPT0gSUFUVV9SRUdJT05fQ1RSTF8xX09GRl9PVVRCT1VORF8wX1RZUEVfQ0ZHMSkp KSB7DQo+ID4gLSAgICAgICBNbWlvV3JpdGUzMiAoRGJpICsgSUFUVV9SRUdJT05fQ1RSTF8yX09G Rl9PVVRCT1VORF8wLA0KPiA+IC0gICAgICAgICAoSUFUVV9SRUdJT05fQ1RSTF8yX09GRl9PVVRC T1VORF8wX1JFR0lPTl9FTiB8DQo+ID4gLSAgICAgICAgIElBVFVfRU5BQkxFX0NGR19TSElGVF9G RUFUVVJFKQ0KPiA+IC0gICAgICAgICApOw0KPiA+ICsgIGlmIChQQ0lfTFNfR0VONF9DVFJMKSB7 DQo+ID4gKyAgICAvLyBQQ0llIExheWVyc2NhcGUgR2VuNDogT3V0Ym91bmQgV2luZG93DQo+ID4g KyAgICBTaXplID0gfihTaXplIC0xICk7DQo+ID4gKyAgICBWYWwgPSBQY2lMc0dlbjRSZWFkMzIg KChVSU5UTilEYmksIFBBQl9BWElfQU1BUF9DVFJMIChJZHgpKTsNCj4gPiArICAgIFZhbCAmPSB+ KChBWElfQU1BUF9DVFJMX1RZUEVfTUFTSyA8PCBBWElfQU1BUF9DVFJMX1RZUEVfU0hJRlQpDQo+ IHwNCj4gPiArICAgICAgICAgICAgICAoQVhJX0FNQVBfQ1RSTF9TSVpFX01BU0sgPDwgQVhJX0FN QVBfQ1RSTF9TSVpFX1NISUZUKSB8DQo+ID4gKyAgICAgICAgICAgICAgQVhJX0FNQVBfQ1RSTF9F Tik7DQo+ID4gKyAgICBWYWwgfD0gKChUeXBlICYgQVhJX0FNQVBfQ1RSTF9UWVBFX01BU0spIDw8 DQo+IEFYSV9BTUFQX0NUUkxfVFlQRV9TSElGVCkgfA0KPiA+ICsgICAgICAgICAgICAgKCgoVUlO VDMyKVNpemUgPj4gQVhJX0FNQVBfQ1RSTF9TSVpFX1NISUZUKSA8PA0KPiA+ICsgICAgICAgICAg ICAgQVhJX0FNQVBfQ1RSTF9TSVpFX1NISUZUKSB8IEFYSV9BTUFQX0NUUkxfRU47DQo+ID4gKyAg ICBQY2lMc0dlbjRXcml0ZTMyICgoVUlOVE4pRGJpLCBQQUJfQVhJX0FNQVBfQ1RSTCAoSWR4KSwg VmFsKTsNCj4gPiArICAgIFBjaUxzR2VuNFdyaXRlMzIgKChVSU5UTilEYmksIFBBQl9BWElfQU1B UF9BWElfV0lOIChJZHgpLA0KPiAoVUlOVDMyKVBoeXMpOw0KPiA+ICsgICAgUGNpTHNHZW40V3Jp dGUzMiAoKFVJTlROKURiaSwgUEFCX0VYVF9BWElfQU1BUF9BWElfV0lOIChJZHgpLCBQaHlzDQo+ ID4+IDMyKTsNCj4gPiArICAgIFBjaUxzR2VuNFdyaXRlMzIgKChVSU5UTilEYmksIFBBQl9BWElf QU1BUF9QRVhfV0lOX0wgKElkeCksDQo+IChVSU5UMzIpQnVzQWRkcik7DQo+ID4gKyAgICBQY2lM c0dlbjRXcml0ZTMyICgoVUlOVE4pRGJpLCBQQUJfQVhJX0FNQVBfUEVYX1dJTl9IIChJZHgpLA0K PiBCdXNBZGRyID4+IDMyKTsNCj4gPiArICAgIFBjaUxzR2VuNFdyaXRlMzIgKChVSU5UTilEYmks IFBBQl9FWFRfQVhJX0FNQVBfU0laRSAoSWR4KSwgU2l6ZQ0KPiA+ICsgPj4gMzIpOw0KPiA+ICAg ICB9IGVsc2Ugew0KPiA+IC0gICAgTW1pb1dyaXRlMzIgKERiaSArIElBVFVfUkVHSU9OX0NUUkxf Ml9PRkZfT1VUQk9VTkRfMCwNCj4gPiAtICAgICAgICAgICAgICAgICAgSUFUVV9SRUdJT05fQ1RS TF8yX09GRl9PVVRCT1VORF8wX1JFR0lPTl9FTik7DQo+ID4gKyAgICAvLyBQQ0llIExheWVyc2Nh cGUgOiBPdXRib3VuZCBXaW5kb3cNCj4gPiArICAgIE1taW9Xcml0ZTMyIChEYmkgKyBJQVRVX1ZJ RVdQT1JUX09GRiwNCj4gPiArICAgICAgICAgICAgICAgICAgKFVJTlQzMikoSUFUVV9WSUVXUE9S VF9PVVRCT1VORCB8IElkeCkpOw0KPiA+ICsNCj4gPiArICAgIE1taW9Xcml0ZTMyIChEYmkgKyBJ QVRVX0xXUl9CQVNFX0FERFJfT0ZGX09VVEJPVU5EXzAsDQo+ID4gKyAgICAgICAgICAgICAgICAg IChVSU5UMzIpUGh5cyk7DQo+ID4gKw0KPiA+ICsgICAgTW1pb1dyaXRlMzIgKERiaSArIElBVFVf VVBQRVJfQkFTRV9BRERSX09GRl9PVVRCT1VORF8wLA0KPiA+ICsgICAgICAgICAgICAgICAgICAo VUlOVDMyKShQaHlzID4+IDMyKSk7DQo+ID4gKw0KPiA+ICsgICAgTW1pb1dyaXRlMzIgKERiaSAr IElBVFVfTElNSVRfQUREUl9PRkZfT1VUQk9VTkRfMCwNCj4gPiArICAgICAgICAgICAgICAgICAg KFVJTlQzMikoUGh5cyArIFNpemUgLSBCSVQwKSk7DQo+ID4gKw0KPiA+ICsgICAgTW1pb1dyaXRl MzIgKERiaSArIElBVFVfTFdSX1RBUkdFVF9BRERSX09GRl9PVVRCT1VORF8wLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAoVUlOVDMyKUJ1c0FkZHIpOw0KPiA+ICsNCj4gPiArICAgIE1taW9Xcml0 ZTMyIChEYmkgKyBJQVRVX1VQUEVSX1RBUkdFVF9BRERSX09GRl9PVVRCT1VORF8wLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAoVUlOVDMyKShCdXNBZGRyID4+IDMyKSk7DQo+ID4gKw0KPiA+ICsg ICAgTW1pb1dyaXRlMzIgKERiaSArIElBVFVfUkVHSU9OX0NUUkxfMV9PRkZfT1VUQk9VTkRfMCwN Cj4gPiArICAgICAgICAgICAgICAgICAgKFVJTlQzMilUeXBlKTsNCj4gPiArDQo+ID4gKyAgICBp ZiAoQ0ZHX1NISUZUX0VOQUJMRSAmJg0KPiA+ICsgICAgICAgKChUeXBlID09IElBVFVfUkVHSU9O X0NUUkxfMV9PRkZfT1VUQk9VTkRfMF9UWVBFX0NGRzApIHx8DQo+ID4gKyAgICAgICAoVHlwZSA9 PSBJQVRVX1JFR0lPTl9DVFJMXzFfT0ZGX09VVEJPVU5EXzBfVFlQRV9DRkcxKSkpIHsNCj4gPiAr ICAgICAgICAgTW1pb1dyaXRlMzIgKERiaSArIElBVFVfUkVHSU9OX0NUUkxfMl9PRkZfT1VUQk9V TkRfMCwNCj4gPiArICAgICAgICAgICAoSUFUVV9SRUdJT05fQ1RSTF8yX09GRl9PVVRCT1VORF8w X1JFR0lPTl9FTiB8DQo+ID4gKyAgICAgICAgICAgSUFUVV9FTkFCTEVfQ0ZHX1NISUZUX0ZFQVRV UkUpDQo+ID4gKyAgICAgICAgICAgKTsNCj4gPiArICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgIE1t aW9Xcml0ZTMyIChEYmkgKyBJQVRVX1JFR0lPTl9DVFJMXzJfT0ZGX09VVEJPVU5EXzAsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgSUFUVV9SRUdJT05fQ1RSTF8yX09GRl9PVVRCT1VORF8wX1JF R0lPTl9FTik7DQo+ID4gKyAgICB9DQo+ID4gICAgIH0NCj4gPiAgIH0NCj4gPg0KPiA+IEBAIC0z ODcsNiArNDExLDEyNCBAQCBQY2llTHNTZXR1cEF0dSAoDQo+ID4gICAgICAgU0VHX0lPX1NJWkUN Cj4gPiAgICAgICApOw0KPiA+ICAgfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRnVuY3Rpb24g dG8gc2V0LXVwIEFUVSB3aW5kb3dzIGZvciBQQ0llIExheWVyc2NhcGVHZW40IGNvbnRyb2xsZXIN Cj4gPiArDQo+ID4gKyAgQHBhcmFtIFBjaWUgICAgICBBZGRyZXNzIG9mIFBDSWUgaG9zdCBjb250 cm9sbGVyDQo+ID4gKyAgQHBhcmFtIENmZzBCYXNlICBQQ0llIGNvbnRyb2xsZXIgcGh5IGFkZHJl c3MgVHlwZTAgQ29uZmlndXJhdGlvbiBTcGFjZS4NCj4gPiArICBAcGFyYW0gQ2ZnMUJhc2UgIFBD SWUgY29udHJvbGxlciBwaHkgYWRkcmVzcyBUeXBlMSBDb25maWd1cmF0aW9uIFNwYWNlLg0KPiA+ ICsgIEBwYXJhbSBNZW1CYXNlICAgUENJZSBjb250cm9sbGVyIHBoeSBhZGRyZXNzIE1lbW9yeSBT cGFjZS4NCj4gPiArICBAcGFyYW0gTWVtNjRCYXNlIFBDSWUgY29udHJvbGxlciBwaHkgYWRkcmVz cyBNTUlPNjQgU3BhY2UuDQo+ID4gKyAgQHBhcmFtIElvQmFzZSAgICBQQ0llIGNvbnRyb2xsZXIg cGh5IGFkZHJlc3MgSU8gU3BhY2UuDQo+ID4gKyoqLw0KPiA+ICtTVEFUSUMNCj4gPiArVk9JRA0K PiA+ICtQY2llTHNHZW40U2V0dXBBdHUgKA0KPiA+ICsgIElOIEVGSV9QSFlTSUNBTF9BRERSRVNT IFBjaWUsDQo+ID4gKyAgSU4gRUZJX1BIWVNJQ0FMX0FERFJFU1MgQ2ZnMEJhc2UsDQo+ID4gKyAg SU4gRUZJX1BIWVNJQ0FMX0FERFJFU1MgQ2ZnMUJhc2UsDQo+ID4gKyAgSU4gRUZJX1BIWVNJQ0FM X0FERFJFU1MgTWVtQmFzZSwNCj4gPiArICBJTiBFRklfUEhZU0lDQUxfQUREUkVTUyBNZW02NEJh c2UsDQo+ID4gKyAgSU4gRUZJX1BIWVNJQ0FMX0FERFJFU1MgSW9CYXNlDQo+ID4gKyAgKQ0KPiA+ ICt7DQo+ID4gKyAgLy8gQVRVIDogT1VUQk9VTkQgV0lORE9XIDEgOiBDRkcwDQo+ID4gKyAgUGNp ZU91dGJvdW5kU2V0IChQY2llLCBJQVRVX1JFR0lPTl9JTkRFWDAsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICBQQUJfQVhJX1RZUEVfQ0ZHLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgQ2ZnMEJhc2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBTRUdfQ0ZHX0JV UywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNFR19DRkdfU0laRSk7DQo+ID4gKw0K PiA+ICsgIC8vIEFUVSA6IE9VVEJPVU5EIFdJTkRPVyAyIDogSU8NCj4gPiArICBQY2llT3V0Ym91 bmRTZXQgKFBjaWUsIElBVFVfUkVHSU9OX0lOREVYMSwNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgIFBBQl9BWElfVFlQRV9JTywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIElv QmFzZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIFNFR19JT19CVVMsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICBTRUdfSU9fU0laRSk7DQo+ID4gKw0KPiA+ICsgIC8vIEFU VSA6IE9VVEJPVU5EIFdJTkRPVyAzIDogTUVNDQo+ID4gKyAgUGNpZU91dGJvdW5kU2V0IChQY2ll LCBJQVRVX1JFR0lPTl9JTkRFWDIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBQQUJf QVhJX1RZUEVfTUVNLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgTWVtQmFzZSwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgIFNFR19NRU1fQlVTLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgU0VHX01FTV9TSVpFKTsNCj4gPiArDQo+ID4gKyAgLy8gQVRVIDogT1VU Qk9VTkQgV0lORE9XIDQgOiBNTUlPNjQgIFBjaWVPdXRib3VuZFNldCAoUGNpZSwNCj4gPiArIElB VFVfUkVHSU9OX0lOREVYMywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBQl9B WElfVFlQRV9NRU0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW02NEJhc2Us DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW02NEJhc2UsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTSVpFXzRHQik7ICBNZW02NEJhc2UgKz0gU0laRV80R0I7 DQo+ID4gKw0KPiA+ICsgIC8vIEFUVSA6IE9VVEJPVU5EIFdJTkRPVyA1IDogTU1JTzY0ICBQY2ll T3V0Ym91bmRTZXQgKFBjaWUsDQo+ID4gKyBJQVRVX1JFR0lPTl9JTkRFWDQsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBQQUJfQVhJX1RZUEVfTUVNLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTWVtNjRCYXNlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTWVtNjRCYXNlLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0laRV80 R0IpOyAgTWVtNjRCYXNlICs9IFNJWkVfNEdCOw0KPiA+ICsNCj4gPiArICAvLyBBVFUgOiBPVVRC T1VORCBXSU5ET1cgNiA6IE1NSU82NCAgUGNpZU91dGJvdW5kU2V0IChQY2llLA0KPiA+ICsgSUFU VV9SRUdJT05fSU5ERVg1LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFCX0FY SV9UWVBFX01FTSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbTY0QmFzZSwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbTY0QmFzZSwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNJWkVfNEdCKTsgIE1lbTY0QmFzZSArPSBTSVpFXzRHQjsN Cj4gPiArDQo+ID4gKyAgLy8gQVRVIDogT1VUQk9VTkQgV0lORE9XIDcgOiBNTUlPNjQNCj4gPiAr ICBQY2llT3V0Ym91bmRTZXQgKFBjaWUsIElBVFVfUkVHSU9OX0lOREVYNiwNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBBQl9BWElfVFlQRV9NRU0sDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBNZW02NEJhc2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBNZW02NEJhc2UsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSVpFXzRH Qik7IH0NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIEZ1bmN0aW9uIHRvIHNldC11cCBQQ0llIGlu Ym91bmQgd2luZG93DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSBQY2llICAgIEFkZHJlc3Mgb2YgUENJ ZSBob3N0IGNvbnRyb2xsZXIuDQo+ID4gKyAgQHBhcmFtIElkeCAgICAgSW5kZXggb2YgaW5ib3Vu ZCB3aW5kb3cuDQo+ID4gKyAgQHBhcmFtIFR5cGUgICAgVHlwZShDZmcvTWVtL0lPKSBvZiBpQVRV IG91dGJvdW5kIHdpbmRvdy4NCj4gPiArICBAcGFyYW0gUGh5cyAgICBQQ0llIGNvbnRyb2xsZXIg cGh5IGFkZHJlc3MgZm9yIGluYm91bmQgd2luZG93Lg0KPiA+ICsgIEBwYXJhbSBCdXNBZHIgIFBD SWUgY29udHJvbGxlciBidXMgYWRkcmVzcyBmb3IgaW5ib3VuZCB3aW5kb3cuDQo+ID4gKyAgQHBh cmFtIFNpemUgICAgV2luZG93IHNpemUNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArU1RB VElDDQo+ID4gK1ZPSUQNCj4gPiArUGNpU2V0dXBJbkJvdW5kV2luICgNCj4gPiArICBJTiBFRklf UEhZU0lDQUxfQUREUkVTUyBQY2llLA0KPiA+ICsgIElOIFVJTlQzMiBJZHgsDQo+ID4gKyAgSU4g VUlOVDMyICBUeXBlLA0KPiA+ICsgIElOIFVJTlQ2NCBQaHlzLA0KPiA+ICsgIElOIFVJTlQ2NCBC dXNBZGRyLA0KPiA+ICsgIElOIFVJTlQ2NCBTaXplKQ0KPiA+ICt7DQo+ID4gKyAgVUlOVDMyIFZh bDsNCj4gPiArICBVSU5UNjQgV2luU2l6ZTsNCj4gPiArDQo+ID4gKyAgaWYgKFBDSV9MU19HRU40 X0NUUkwpIHsNCj4gPiArICAgIFZhbCA9IFBjaUxzR2VuNFJlYWQzMiAoKFVJTlROKVBjaWUsIFBB Ql9QRVhfQU1BUF9DVFJMKElkeCkpOw0KPiA+ICsgICAgVmFsICY9IH4oUEVYX0FNQVBfQ1RSTF9U WVBFX01BU0sgPDwgUEVYX0FNQVBfQ1RSTF9UWVBFX1NISUZUKTsNCj4gPiArICAgIFZhbCAmPSB+ KFBFWF9BTUFQX0NUUkxfRU5fTUFTSyA8PCBQRVhfQU1BUF9DVFJMX0VOX1NISUZUKTsNCj4gPiAr ICAgIFZhbCA9IChWYWwgfCAoVHlwZSA8PCBQRVhfQU1BUF9DVFJMX1RZUEVfU0hJRlQpKTsNCj4g PiArICAgIFZhbCA9IChWYWwgfCAoMSA8PCBQRVhfQU1BUF9DVFJMX0VOX1NISUZUKSk7DQo+ID4g Kw0KPiA+ICsgICAgV2luU2l6ZSA9IH4oU2l6ZSAtIDEpOw0KPiA+ICsgICAgUGNpTHNHZW40V3Jp dGUzMiAoKFVJTlROKVBjaWUsIFBBQl9QRVhfQU1BUF9DVFJMKElkeCksDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgKFZhbCB8IChVSU5UMzIpV2luU2l6ZSkpOw0KPiA+ICsgICAgUGNpTHNH ZW40V3JpdGUzMiAoKFVJTlROKVBjaWUsIFBBQl9FWFRfUEVYX0FNQVBfU0laRShJZHgpLA0KPiAo V2luU2l6ZT4+MzIpKTsNCj4gPiArICAgIFBjaUxzR2VuNFdyaXRlMzIgKChVSU5UTilQY2llLCBQ QUJfUEVYX0FNQVBfQVhJX1dJTihJZHgpLA0KPiAoVUlOVDMyKVBoeXMpOw0KPiA+ICsgICAgUGNp THNHZW40V3JpdGUzMiAoKFVJTlROKVBjaWUsIFBBQl9FWFRfUEVYX0FNQVBfQVhJX1dJTihJZHgp LA0KPiAoUGh5cz4+MzIpKTsNCj4gPiArICAgIFBjaUxzR2VuNFdyaXRlMzIgKChVSU5UTilQY2ll LCBQQUJfUEVYX0FNQVBfUEVYX1dJTl9MKElkeCksDQo+IChVSU5UMzIpQnVzQWRkcik7DQo+ID4g KyAgICBQY2lMc0dlbjRXcml0ZTMyICgoVUlOVE4pUGNpZSwgUEFCX1BFWF9BTUFQX1BFWF9XSU5f SChJZHgpLA0KPiA+ICsoQnVzQWRkciA+PjMyKSk7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0K PiA+ICAgLyoqDQo+ID4gICAgIEhlbHBlciBmdW5jdGlvbiB0byBzZXQtdXAgUENJZSBjb250cm9s bGVyDQo+ID4NCj4gPiBAQCAtNDExLDE2ICs1NTMsNDcgQEAgUGNpZVNldHVwQ250cmwgKA0KPiA+ ICAgew0KPiA+ICAgICBVSU5UMzIgVmFsOw0KPiA+DQo+ID4gLSAgLy8gUENJZSBMYXllcnNjYXBl IENvbnRyb2xsZXIgU2V0dXANCj4gPiAtICBQY2llTHNTZXR1cEF0dSAoUGNpZSwgQ2ZnMEJhc2Us IENmZzFCYXNlLCBNZW1CYXNlLCBNZW02NEJhc2UsDQo+ID4gSW9CYXNlKTsNCj4gPiAtDQo+ID4g LSAgLy8gUHJvZ3JhbSBDbGFzcyBjb2RlIGZvciBMYXllcnNjYXBlIFBDSWUgY29udHJvbGxlcg0K PiA+IC0gIE1taW9Xcml0ZTMyICgoVUlOVE4pUGNpZSArIFBDSV9EQklfUk9fV1JfRU4sIDEpOw0K PiA+IC0gIFZhbCA9IE1taW9SZWFkMzIgKChVSU5UTilQY2llICsgUENJX0NMQVNTX0RFVklDRSk7 DQo+ID4gLSAgVmFsICY9IH4oQ0xBU1NfQ09ERV9NQVNLIDw8IENMQVNTX0NPREVfU0hJRlQpOw0K PiA+IC0gIFZhbCB8PSAoUENJX0NMQVNTX0JSSURHRV9QQ0kgPDwgQ0xBU1NfQ09ERV9TSElGVCk7 DQo+ID4gLSAgTW1pb1dyaXRlMzIgKChVSU5UTilQY2llICsgUENJX0NMQVNTX0RFVklDRSwgVmFs KTsNCj4gPiAtICBNbWlvV3JpdGUzMiAoKFVJTlROKVBjaWUgKyBQQ0lfREJJX1JPX1dSX0VOLCAw KTsNCj4gPiArICBpZiAoUENJX0xTX0dFTjRfQ1RSTCkgew0KPiA+ICsgICAgLy8gUENJZSBMc0dl bjQgQ29udHJvbGxlciBTZXR1cA0KPiA+ICsNCj4gPiArICAgIC8vRml4IENsYXNzIENvZGUNCj4g PiArICAgIFZhbCA9IFBjaUxzR2VuNFJlYWQzMiAoKFVJTlROKVBjaWUsIEdQRVhfQ0xBU1NDT0RF KTsNCj4gPiArICAgIFZhbCAmPSB+KEdQRVhfQ0xBU1NDT0RFX01BU0sgPDwgR1BFWF9DTEFTU0NP REVfU0hJRlQpOw0KPiA+ICsgICAgVmFsIHw9IFBDSV9DTEFTU19CUklER0VfUENJIDw8IEdQRVhf Q0xBU1NDT0RFX1NISUZUOw0KPiA+ICsgICAgUGNpTHNHZW40V3JpdGUzMiAoKFVJTlROKVBjaWUs IEdQRVhfQ0xBU1NDT0RFLCBWYWwpOw0KPiA+ICsNCj4gPiArICAgIC8vIEVuYWJsZSBBUElPIGFu ZCBNZW1vcnkvSU8vQ0ZHIFdpbmRvd3MNCj4gPiArICAgIFZhbCA9IFBjaUxzR2VuNFJlYWQzMiAo KFVJTlROKVBjaWUsIFBBQl9BWElfUElPX0NUUkwgKDApKTsNCj4gPiArICAgIFZhbCB8PSBBUElP X0VOIHwgTUVNX1dJTl9FTiB8IElPX1dJTl9FTiB8IENGR19XSU5fRU47DQo+ID4gKyAgICBQY2lM c0dlbjRXcml0ZTMyICgoVUlOVE4pUGNpZSwgUEFCX0FYSV9QSU9fQ1RSTCAoMCksIFZhbCk7DQo+ ID4gKw0KPiA+ICsgICAgLy8gTHNHZW40IEluYm91bmQgV2luZG93IFNldHVwDQo+ID4gKyAgICBQ Y2lTZXR1cEluQm91bmRXaW4gKFBjaWUsIDAsIFBBQl9BWElfVFlQRV9NRU0sIDAgLCAwLCBTSVpF XzFUQik7DQo+ID4gKw0KPiA+ICsgICAgLy8gTHNHZW40IE91dGJvdW5kIFdpbmRvdyBTZXR1cA0K PiA+ICsgICAgUGNpZUxzR2VuNFNldHVwQXR1IChQY2llLCBDZmcwQmFzZSwgQ2ZnMUJhc2UsIE1l bUJhc2UsIE1lbTY0QmFzZSwNCj4gPiArIElvQmFzZSk7DQo+ID4gKw0KPiA+ICsgICAgLy8gRW5h YmxlIEFNQkEgJiBQRVggUElPDQo+ID4gKyAgICBWYWwgPSBQY2lMc0dlbjRSZWFkMzIgKChVSU5U TilQY2llLCBQQUJfQ1RSTCk7DQo+ID4gKyAgICBWYWwgfD0gUEFCX0NUUkxfQVBJT19FTiB8IFBB Ql9DVFJMX1BQSU9fRU47DQo+ID4gKyAgICBQY2lMc0dlbjRXcml0ZTMyICgoVUlOVE4pUGNpZSwg UEFCX0NUUkwsIFZhbCk7DQo+ID4gKw0KPiA+ICsgICAgVmFsID0gUGNpTHNHZW40UmVhZDMyICgo VUlOVE4pUGNpZSwgUEFCX1BFWF9QSU9fQ1RSTCgwKSk7DQo+ID4gKyAgICBWYWwgfD0gUFBJT19F TjsNCj4gPiArICAgIFBjaUxzR2VuNFdyaXRlMzIgKChVSU5UTilQY2llLCBQQUJfUEVYX1BJT19D VFJMKDApLCBWYWwpOw0KPiA+ICsNCj4gPiArICB9IGVsc2Ugew0KPiA+ICsgICAgLy8gUENJZSBM YXllcnNjYXBlIENvbnRyb2xsZXIgU2V0dXANCj4gPiArICAgIFBjaWVMc1NldHVwQXR1IChQY2ll LCBDZmcwQmFzZSwgQ2ZnMUJhc2UsIE1lbUJhc2UsIE1lbTY0QmFzZSwNCj4gPiArIElvQmFzZSk7 DQo+ID4gKw0KPiA+ICsgICAgLy8gUHJvZ3JhbSBDbGFzcyBjb2RlIGZvciBMYXllcnNjYXBlIFBD SWUgY29udHJvbGxlcg0KPiA+ICsgICAgTW1pb1dyaXRlMzIgKChVSU5UTilQY2llICsgUENJX0RC SV9ST19XUl9FTiwgMSk7DQo+ID4gKyAgICBWYWwgPSBNbWlvUmVhZDMyICgoVUlOVE4pUGNpZSAr IFBDSV9DTEFTU19ERVZJQ0UpOw0KPiA+ICsgICAgVmFsICY9IH4oQ0xBU1NfQ09ERV9NQVNLIDw8 IENMQVNTX0NPREVfU0hJRlQpOw0KPiA+ICsgICAgVmFsIHw9IChQQ0lfQ0xBU1NfQlJJREdFX1BD SSA8PCBDTEFTU19DT0RFX1NISUZUKTsNCj4gPiArICAgIE1taW9Xcml0ZTMyICgoVUlOVE4pUGNp ZSArIFBDSV9DTEFTU19ERVZJQ0UsIFZhbCk7DQo+ID4gKyAgICBNbWlvV3JpdGUzMiAoKFVJTlRO KVBjaWUgKyBQQ0lfREJJX1JPX1dSX0VOLCAwKTsgIH0NCj4gPiAgIH0NCj4gPg0KPiA+ICAgLyoq DQo+ID4NCg0K