From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0620.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe4a::620]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B0C52817B2 for ; Mon, 9 Jan 2017 08:37:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=4MabIgStpGMlu6NDpNZixwqks7cf09ypDU5/LT95DUI=; b=PrwxNNX4/DtzQKdnmf/+YuQjlaoM0oCNhJwgY9z8dHEhOlZ/nXokFqOMrbXUHhPPEbamuQsgz4wd9s9Zk039LNsPBsUJZmFaBSBJ1KuTio1gXlUgqOnGld+A7ft6vgXnAtO84z0hfkSOHHEQGFGyqGuFBMRrTYjTBCphrvG2WUs= Received: from DM5PR12MB1243.namprd12.prod.outlook.com (10.168.237.22) by BLUPR12MB0659.namprd12.prod.outlook.com (10.163.217.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.829.7; Mon, 9 Jan 2017 16:37:40 +0000 Received: from DM5PR12MB1243.namprd12.prod.outlook.com ([10.168.237.22]) by DM5PR12MB1243.namprd12.prod.outlook.com ([10.168.237.22]) with mapi id 15.01.0829.013; Mon, 9 Jan 2017 16:37:39 +0000 From: "Duran, Leo" To: 'Laszlo Ersek' , "'Gao, Liming'" , "Justen, Jordan L" , "edk2-devel@lists.01.org" CC: "Singh, Brijesh" , "Fan, Jeff" , "Kinney, Michael D" , "Ma, Maurice" , "Agyeman, Prince" , "Ni, Ruiyu" , "Steele, Kelly" , "Wei, David" , "Guo, Mang" Thread-Topic: [PATCH v3 0/4] BaseIoFifoLib Thread-Index: AQHSZ52cOmPc+CcC30G0SQfvf+/kGaEq9c2AgABWXgCAAEV48IAAnvoAgAERYuCAAjq6gIAAuKcQgAARV4CAABalwA== Date: Mon, 9 Jan 2017 16:37:38 +0000 Message-ID: References: <1483652965-14357-1-git-send-email-leo.duran@amd.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CA2BD@shsmsx102.ccr.corp.intel.com> <9bf84287-cdec-b5c0-26c6-16f5cd1e453f@redhat.com> <148375017874.13659.3185969071926290103@jljusten-ivb> <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CAC20@shsmsx102.ccr.corp.intel.com> <07b6ae9d-fa79-6e9e-2320-8cbef093d8a7@redhat.com> In-Reply-To: <07b6ae9d-fa79-6e9e-2320-8cbef093d8a7@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=leo.duran@amd.com; x-originating-ip: [165.204.77.1] x-microsoft-exchange-diagnostics: 1; BLUPR12MB0659; 7:TRKlNUQeRLTmuz6KHuOlcfFd+h1D+NBWgXNT04mUiUKZBwlFEMXucwPU1UEiQJMgUYVRTS61X0C1UuKgqCdb0KkJ3i0bG7tCwzK7lHocpn4K2u3KNfrGllQdU85wIauw5oPG+2lyvCJQTSBGJF9DEvRtA2TiSeoYAdIvQc+fjWoaOInts3Nl+egkkOpXllnPIgieTzjGZzC8vhBJXkKUsyKaxtJSNpqNy0OyN/BdLSPGyLnHeyr6hLGcUmUlDEWUq51WuxAP18sqNAa+B4H565+9Da1gRfo3nBfeTe0Xys4hlTGRoV721WU18S6sWYcweORdEZpPtHRir6QONy/CUJIpoe7Dv80sqA2i/EXI1XbMPF5US1mPnuuE6dG5Zo/Smhj2G+rtWMfpxdT/8BuSQhraHY0TrEVkBSdz/0bGcwYCgxPACkduDxmpgJzJs1DbR/JFzf4wKlSVRdd8O/d50g==; 20:VrJZ1yj1NIeRgY8lhT5Vx8TYzHZokqeYADhrteEu4IDwDOh74cyIi1J+YW4lRnjjIAWq3i3qRjIEDK9PPBXmlwdwTvlNR8jKijsJtyaIDjYcyqIxb5FSz43q6dfWMVNeIOtM3p6ksvSEvU3q+bw41kP3Gh/C0CC3AWSjo48O+OPHHQHfgNSB/2cQ5j/6h4BLZHiHnZtPRc74u+Q/wReoBt5VIyUGlz2r5wYoDd+aqoaGX5zmaX0X6LWdDZ/OwEo9 x-forefront-antispam-report: SFV:SKI; SCL:-1SFV:NSPM; SFS:(10009020)(6009001)(6029001)(7916002)(39410400002)(39850400002)(39450400003)(39840400002)(39860400002)(199003)(189002)(13464003)(24454002)(377424004)(377454003)(305945005)(92566002)(38730400001)(33656002)(7736002)(97736004)(6436002)(2900100001)(6506006)(2950100002)(102836003)(3846002)(5001770100001)(6116002)(9686003)(122556002)(4326007)(99286003)(55016002)(54906002)(8936002)(3280700002)(3660700001)(5660300001)(25786008)(7696004)(81166006)(81156014)(8676002)(189998001)(76176999)(50986999)(68736007)(86362001)(101416001)(54356999)(106356001)(93886004)(7416002)(2906002)(74316002)(106116001)(66066001)(77096006)(105586002)(229853002)(491001)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR12MB0659; H:DM5PR12MB1243.namprd12.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; x-ms-office365-filtering-correlation-id: 5069116b-24a1-4508-e24b-08d438add33d x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:BLUPR12MB0659; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(767451399110)(162533806227266)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123558021)(20161123555025)(20161123562025)(20161123564025)(6072148); SRVR:BLUPR12MB0659; BCL:0; PCL:0; RULEID:; SRVR:BLUPR12MB0659; x-forefront-prvs: 0182DBBB05 received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2017 16:37:38.7725 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR12MB0659 Subject: Re: [PATCH v3 0/4] BaseIoFifoLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jan 2017 16:37:41 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIFtt YWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IE1vbmRheSwgSmFudWFyeSAwOSwgMjAx NyA5OjE0IEFNDQo+IFRvOiBEdXJhbiwgTGVvIDxsZW8uZHVyYW5AYW1kLmNvbT47ICdHYW8sIExp bWluZycNCj4gPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgSnVzdGVuLCBKb3JkYW4gTCA8am9yZGFu LmwuanVzdGVuQGludGVsLmNvbT47DQo+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnIDxlZGsyLWRl dmVsQG1sMDEuMDEub3JnPg0KPiBDYzogU2luZ2gsIEJyaWplc2ggPGJyaWplc2guc2luZ2hAYW1k LmNvbT47IEZhbiwgSmVmZiA8amVmZi5mYW5AaW50ZWwuY29tPjsNCj4gS2lubmV5LCBNaWNoYWVs IEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgTWEsIE1hdXJpY2UNCj4gPG1hdXJpY2Uu bWFAaW50ZWwuY29tPjsgQWd5ZW1hbiwgUHJpbmNlIDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+ Ow0KPiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IFN0ZWVsZSwgS2VsbHkgPGtlbGx5 LnN0ZWVsZUBpbnRlbC5jb20+OyBXZWksDQo+IERhdmlkIDxkYXZpZC53ZWlAaW50ZWwuY29tPjsg R3VvLCBNYW5nIDxtYW5nLmd1b0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjMg MC80XSBCYXNlSW9GaWZvTGliDQo+IA0KPiBPbiAwMS8wOS8xNyAxNToyMiwgRHVyYW4sIExlbyB3 cm90ZToNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBH YW8sIExpbWluZyBbbWFpbHRvOmxpbWluZy5nYW9AaW50ZWwuY29tXQ0KPiA+PiBTZW50OiBTdW5k YXksIEphbnVhcnkgMDgsIDIwMTcgOToxMSBQTQ0KPiA+PiBUbzogRHVyYW4sIExlbyA8bGVvLmR1 cmFuQGFtZC5jb20+OyBKdXN0ZW4sIEpvcmRhbiBMDQo+ID4+IDxqb3JkYW4ubC5qdXN0ZW5AaW50 ZWwuY29tPjsgJ0xhc3psbyBFcnNlaycgPGxlcnNla0ByZWRoYXQuY29tPjsNCj4gPj4gZWRrMi0g ZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4+IENjOiBTaW5naCwgQnJpamVzaCA8YnJpamVzaC5zaW5n aEBhbWQuY29tPjsgRmFuLCBKZWZmDQo+ID4+IDxqZWZmLmZhbkBpbnRlbC5jb20+OyBLaW5uZXks IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiA+PiBNYSwgTWF1cmlj ZSA8bWF1cmljZS5tYUBpbnRlbC5jb20+OyBBZ3llbWFuLCBQcmluY2UNCj4gPj4gPHByaW5jZS5h Z3llbWFuQGludGVsLmNvbT47IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPjsgU3RlZWxl LA0KPiA+PiBLZWxseSA8a2VsbHkuc3RlZWxlQGludGVsLmNvbT47IFdlaSwgRGF2aWQgPGRhdmlk LndlaUBpbnRlbC5jb20+Ow0KPiA+PiBHdW8sIE1hbmcgPG1hbmcuZ3VvQGludGVsLmNvbT4NCj4g Pj4gU3ViamVjdDogUkU6IFtQQVRDSCB2MyAwLzRdIEJhc2VJb0ZpZm9MaWINCj4gPj4NCj4gPj4g TGVvOg0KPiA+PiAgIElvTGliIExpYnJhcnkgY2xhc3MgaXMgZGVzaWduZWQgZnJvbSB0aGUgZnVu Y3Rpb25hbGl0eSwgbm90IGNvZGUNCj4gPj4gaW1wbGVtZW50YXRpb24uIFNvLCBtYW55IElPIG9w ZXJhdGlvbnMgYXJlIGluY2x1ZGVkIGluIHRoaXMgbGlicmFyeQ0KPiA+PiBjbGFzcy4gSWYgZGV2 ZWxvcGVycyB3YW50IHRvIHVzZSBJTyBBUEksIHRoZXkgb25seSBuZWVkIHRvIGNoZWNrIElvTGli DQo+IGxpYnJhcnkgY2xhc3MuDQo+ID4+IEFmdGVyIGFkZCBuZXcgQVBJcywgd2UgbmVlZCB0byB1 cGRhdGUgYWxsIElvTGliIGxpYnJhcnkgaW5zdGFuY2VzIHRvDQo+ID4+IGltcGxlbWVudCB0aGVt LiBBbmQsIGlmIGFueSBsaWJyYXJ5IEFQSSBpbXBsZW1lbnRhdGlvbiBoYXMgdGhlDQo+ID4+IGRp ZmZlcmVudCB2ZXJzaW9uLCB0aGUgZnVsbCBsaWJyYXJ5IGluc3RhbmNlIHdpbGwgaGF2ZSB0byBi ZSBjb3BpZWQNCj4gPj4gdG8gYW5vdGhlciBpbnN0YW5jZS4gSSBrbm93IHlvdXIgY29uY2VybiBp cyB0byBkdXBsaWNhdGUgdGhlIGxpYnJhcnkNCj4gPj4gaW1wbGVtZW50YXRpb24uIEJ1dCwgSSB0 aGluayB0aGlzIGlzIHRoZSBzZXBhcmF0ZSB0b3BpYyB0byBvcHRpbWl6ZQ0KPiA+PiB0aGUgbGli cmFyeSBpbXBsZW1lbnRhdGlvbiBhbmQgcmV1c2UgdGhlIHNhbWUgc291cmNlIGZpbGUuIE90aGVy DQo+ID4+IGxpYnJhcnkgaW5zdGFuY2VzIG1heSBoYXZlIHRoZSBzYW1lIGlzc3VlLiBTbywgSSBz dWdnZXN0IHlvdSBzdWJtaXQNCj4gPj4gYnVnemlsbGEgZm9yIHRoaXMgb3B0aW1pemF0aW9uIHJl cXVlc3QuIFdlIHdpbGwgZmlndXJlIG91dCB0aGUgc29sdXRpb24gYW5kDQo+IHJldmlldyBpdCBp biB0aGlzIG1haWwgbGlzdC4NCj4gPj4NCj4gPj4gVGhhbmtzDQo+ID4+IExpbWluZw0KPiA+IFtE dXJhbiwgTGVvXQ0KPiA+IEhpIExpbWluZywNCj4gPg0KPiA+IEknbSBub3Qgc3VyZSBJIGZvbGxv dyB3aGF0IHlvdSBtZWFuIGJ5IGFuICdvcHRpbWl6YXRpb24gcmVxdWVzdCcuDQo+IA0KPiBJIHRo aW5rIHVuZGVyICJvcHRpbWl6YXRpb24iLCBMaW1pbmcgbWVhbnMgZWxpbWluYXRpbmcgY29kZSBk dXBsaWNhdGlvbg0KPiBiZXR3ZWVuIElvTGliIGxpYnJhcnkgaW5zdGFuY2VzLiBUaGF0IGlzLCBp ZiBJIHVuZGVyc3RhbmQgY29ycmVjdGx5LCBMaW1pbmcgYW5kDQo+IEpvcmRhbiBzdWdnZXN0IHRo YXQgeW91IGZpcnN0IGFkZCB0aGUgbmV3IGludGVyZmFjZXMgdG8gdGhlIElvTGliIGNsYXNzIGhl YWRlciwNCj4gYWRkICgtLT4gZHVwbGljYXRlKSB0aGUgaW1wbGVtZW50YXRpb24gdG8gYWxsIGxp YnJhcnkgaW5zdGFuY2VzLCB0aGVuIGZpbGUgYSBCWg0KPiBhYm91dCBlbGltaW5hdGluZyBjb2Rl IGR1cGxpY2F0aW9uIGJldHdlZW4gdGhlIGxpYnJhcnkgaW5zdGFuY2VzLg0KPiANCj4gVGhpcyBp cyBteSB1bmRlcnN0YW5kaW5nIGFueXdheS4NCj4gDQo+IFRoYW5rcw0KPiBMYXN6bG8NCj4gDQpb RHVyYW4sIExlb10gIFRoYW5rcyBMYXpsby4uLiBVbmZvcnR1bmF0ZWx5IHRoZSAnYXNrJyBpcyBz dGlsbCBub3QgY2xlYXIgdG8gbWUuDQpMaW1pbmcsICBJIHdvdWxkIGFwcHJlY2lhdGUgc29tZSBj bGFyaWZpY2F0aW9uLg0KDQpUaGFua3MsDQpMZW8NCg0KPiANCj4gPiBBdCBwcmVzZW50IElvTEli IGRvZXMgKm5vdCogaW5jbHVkZSB0aGUgRmlmbyByb3V0aW5lcyB0aGF0IEkndmUgcmVmZXJyZWQg dG8sDQo+IHNvIEknbSBzaW1wbHkgcHJvcG9zaW5nIHRvIHdyYXAgdGhlIEZpZm8gcm91dGluZXMg aW50byBpbiBhIGxpYnJhcnkuDQo+ID4gTW9yZW92ZXIsIGFzIHlvdSBqdXN0IHNhaWQsIEnigJlt IGFsc28gcHJvcG9zaW5nIG5vdCB1c2luZyBJb0xpYiB0byBhdm9pZA0KPiBoYXZpbmcgdG8gZHVw bGljYXRlIGFsbCBvZiB0aGUgZnVuY3Rpb25hbGl0eSBpbiBJb0xpYi4NCj4gPg0KPiA+IENhbiB5 b3UgcGxlYXNlIGdpdmUgbWUgYSBiaXQgbW9yZSBkZXRhaWwgYXMgdG8gd2hhdCB0aGUgJ29wdGlt aXphdGlvbg0KPiByZXF1ZXN0JyB3b3VsZCBiZT8NCj4gPiAoaS5lLiwgc2hvdWxkIHRoYXQgcmVx dWVzdCByZWFkIGV4YWN0bHkgYXMgSSd2ZSBwcm9wb3NlZCBzbyBmYXIsDQo+ID4gcHJvcG9zaW5n IHRoZSBjcmVhdGlvbiBvZiBhbiBJb0ZpZm9MaWI/KSBJJ2xsIHN1Ym1pdCBCdWd6aWxsYSBvbmNl IEkgYmV0dGVyDQo+IHVuZGVyc3RhbmQgd2hhdCBuZWVkcyB0byBiZSBpbiBpdC4NCj4gPg0KPiA+ IFRoYW5rcywNCj4gPiBMZW8NCj4gPg0KPiA+DQo+ID4NCj4gPj4+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4+PiBGcm9tOiBEdXJhbiwgTGVvIFttYWlsdG86bGVvLmR1cmFuQGFtZC5j b21dDQo+ID4+PiBTZW50OiBTdW5kYXksIEphbnVhcnkgMDgsIDIwMTcgMToxNyBBTQ0KPiA+Pj4g VG86IEp1c3RlbiwgSm9yZGFuIEwgPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+OyAnTGFzemxv IEVyc2VrJw0KPiA+Pj4gPGxlcnNla0ByZWRoYXQuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5n YW9AaW50ZWwuY29tPjsgZWRrMi0NCj4gPj4+IGRldmVsQGxpc3RzLjAxLm9yZw0KPiA+Pj4gQ2M6 IFNpbmdoLCBCcmlqZXNoIDxicmlqZXNoLnNpbmdoQGFtZC5jb20+OyBGYW4sIEplZmYNCj4gPj4+ IDxqZWZmLmZhbkBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA+Pj4gPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPjsgTWEsIE1hdXJpY2UgPG1hdXJpY2UubWFAaW50ZWwuY29tPjsN Cj4gPj4+IEFneWVtYW4sIFByaW5jZSA8cHJpbmNlLmFneWVtYW5AaW50ZWwuY29tPjsgTmksIFJ1 aXl1DQo+ID4+PiA8cnVpeXUubmlAaW50ZWwuY29tPjsgU3RlZWxlLCBLZWxseSA8a2VsbHkuc3Rl ZWxlQGludGVsLmNvbT47IFdlaSwNCj4gPj4+IERhdmlkIDxkYXZpZC53ZWlAaW50ZWwuY29tPjsg R3VvLCBNYW5nIDxtYW5nLmd1b0BpbnRlbC5jb20+DQo+ID4+PiBTdWJqZWN0OiBSRTogW1BBVENI IHYzIDAvNF0gQmFzZUlvRmlmb0xpYg0KPiA+Pj4NCj4gPj4+IEpvcmRhbiwgTGltaW5nLCBldCBh bCwNCj4gPj4+DQo+ID4+PiBJdCB0dXJucyBvdXQgdGhhdCB0aGUgcnVudGltZSBlbmFibGVtZW50 IG9mIFNFViBmZWF0dXJlIHRoYXQgSQ0KPiA+Pj4gcmVmZXJyZWQgdG8gY2FuIGJlIGRldGVjdGVk IGluIGhhcmR3YXJlOyBzbyBpbnN0ZWFkIG9mIHJlcXVpcmluZw0KPiA+Pj4gJ2RyaXZlcicgY29k ZSB0byBzZXQgYSBkeW5hbWljIFBDRCwgdGhlIG92ZXJyaWRlIEZpZm8gcm91dGluZXMgY291bGQN Cj4gPj4+IGRvIGEgcnVudGltZSBjaGVjayBsaWtlIHRoaXM6DQo+ID4+Pg0KPiA+Pj4gLy8gSW4g b3ZlcnJpZGUgdmVyc2lvbiBvZiB0aGUgRmlmbyBsaWJyYXJ5DQo+ID4+PiBmaWZvX2ZvbygpDQo+ ID4+PiB7DQo+ID4+PiAJSWYgKFNFVl9FbmFibGVkKCkpIHsNCj4gPj4+IAkJLy8gZG9uJ3QgdXNl IFJFUCBpbnMvb3V0cw0KPiA+Pj4gCX0gZWxzZSB7DQo+ID4+PiAJCS8vIHVzZSBSRVAgaW5zL291 dHMNCj4gPj4+IAl9DQo+ID4+PiB9DQo+ID4+PiBJbiBlc3NlbmNlIHdlIGFscmVhZHkgaGF2ZSBh IGhhcmR3YXJlLWJhc2VkIGR5bmFtaWMgUENELCBzbyB0aGUgaWRlYQ0KPiA+Pj4gaXMgdG8gbGV2 ZXJhZ2UgaXQuDQo+ID4+Pg0KPiA+Pj4gQW5kIHNpbmNlIHdlJ3JlIGludGVyZXN0ZWQgaW4gb3Zl cnJpZGluZyBqdXN0IHRoZSBGaWZvIHJvdXRpbmVzLCBpdA0KPiA+Pj4gd291bGQgbWFrZSBiZXR0 ZXIgc2Vuc2UgdG8ga2VlcCB0aGVtIGluIGEgc2VwYXJhdGUgbGlicmFyeSAoYXMNCj4gPj4+IHBy b3Bvc2VkIGluDQo+ID4+IHRoZSBwYXRjaCBzZXQpLg0KPiA+Pj4gTGVvLg0KPiA+Pj4NCj4gPj4+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IEpvcmRhbiBKdXN0ZW4g W21haWx0bzpqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tXQ0KPiA+Pj4+IFNlbnQ6IEZyaWRheSwg SmFudWFyeSAwNiwgMjAxNyA2OjUwIFBNDQo+ID4+Pj4gVG86IER1cmFuLCBMZW8gPGxlby5kdXJh bkBhbWQuY29tPjsgJ0xhc3psbyBFcnNlaycNCj4gPj4+PiA8bGVyc2VrQHJlZGhhdC5jb20+OyBH YW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+Ow0KPiA+Pj4+IGVkazItZGV2ZWxAbGlz dHMuMDEub3JnDQo+ID4+Pj4gQ2M6IFNpbmdoLCBCcmlqZXNoIDxicmlqZXNoLnNpbmdoQGFtZC5j b20+OyBGYW4sIEplZmYNCj4gPj4+PiA8amVmZi5mYW5AaW50ZWwuY29tPjsgS2lubmV5LCBNaWNo YWVsIEQNCj4gPj4+PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBNYSwgTWF1cmljZQ0K PiA8bWF1cmljZS5tYUBpbnRlbC5jb20+Ow0KPiA+Pj4+IEFneWVtYW4sIFByaW5jZSA8cHJpbmNl LmFneWVtYW5AaW50ZWwuY29tPjsgTmksIFJ1aXl1DQo+ID4+Pj4gPHJ1aXl1Lm5pQGludGVsLmNv bT47IFN0ZWVsZSwgS2VsbHkgPGtlbGx5LnN0ZWVsZUBpbnRlbC5jb20+OyBXZWksDQo+ID4+Pj4g RGF2aWQgPGRhdmlkLndlaUBpbnRlbC5jb20+OyBHdW8sIE1hbmcgPG1hbmcuZ3VvQGludGVsLmNv bT4NCj4gPj4+PiBTdWJqZWN0OiBSRTogW1BBVENIIHYzIDAvNF0gQmFzZUlvRmlmb0xpYg0KPiA+ Pj4+DQo+ID4+Pj4gT24gMjAxNy0wMS0wNiAwNzoyMzo0NywgRHVyYW4sIExlbyB3cm90ZToNCj4g Pj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+ Pj4+PiBGcm9tOiBMYXN6bG8gRXJzZWsgW21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gPj4+ Pj4+IFNlbnQ6IEZyaWRheSwgSmFudWFyeSAwNiwgMjAxNyA1OjEyIEFNDQo+ID4+Pj4+PiBUbzog R2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgRHVyYW4sIExlbw0KPiA+Pj4+Pj4g PGxlby5kdXJhbkBhbWQuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4+Pj4+IDxl ZGsyLWRldmVsQG1sMDEuMDEub3JnPg0KPiA+Pj4+Pj4gQ2M6IFNpbmdoLCBCcmlqZXNoIDxicmlq ZXNoLnNpbmdoQGFtZC5jb20+OyBKdXN0ZW4sIEpvcmRhbiBMDQo+ID4+Pj4+PiA8am9yZGFuLmwu anVzdGVuQGludGVsLmNvbT47IEZhbiwgSmVmZiA8amVmZi5mYW5AaW50ZWwuY29tPjsNCj4gPj4+ Pj4+IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IE1hLCBN YXVyaWNlDQo+ID4+Pj4+PiA8bWF1cmljZS5tYUBpbnRlbC5jb20+OyBBZ3llbWFuLCBQcmluY2UN Cj4gPj4+PiA8cHJpbmNlLmFneWVtYW5AaW50ZWwuY29tPjsNCj4gPj4+Pj4+IE5pLCBSdWl5dSA8 cnVpeXUubmlAaW50ZWwuY29tPjsgU3RlZWxlLCBLZWxseQ0KPiA+Pj4+Pj4gPGtlbGx5LnN0ZWVs ZUBpbnRlbC5jb20+OyBXZWksIERhdmlkIDxkYXZpZC53ZWlAaW50ZWwuY29tPjsgR3VvLA0KPiA+ Pj4+Pj4gTWFuZyA8bWFuZy5ndW9AaW50ZWwuY29tPg0KPiA+Pj4+Pj4gU3ViamVjdDogUmU6IFtQ QVRDSCB2MyAwLzRdIEJhc2VJb0ZpZm9MaWINCj4gPj4+Pj4+DQo+ID4+Pj4+PiBPbiAwMS8wNi8x NyAwNzowMiwgR2FvLCBMaW1pbmcgd3JvdGU6DQo+ID4+Pj4+Pj4gTGVvOg0KPiA+Pj4+Pj4+IEZp Zm9JbyBpcyBvbmUgd2lkdGggdHlwZSBvZiBFRklfQ1BVX0lPX1BST1RPQ09MX1dJRFRILiBTbywN Cj4gaG93DQo+ID4+Pj4+Pj4gYWJvdXQgYWRkIG5ldyBBUElzIGludG8gSW9MaWIgdG9nZXRoZXIg d2l0aCBvdGhlciBJbyBBUElzPyBJZg0KPiA+Pj4+Pj4+IHNvLCBubyBuZXcgbGlicmFyeSBjbGFz cyBpcyByZXF1aXJlZC4gUGxhdGZvcm0gRFNDIGZpbGVzIGFyZSBub3QNCj4gPj4+Pj4+PiByZXF1 aXJlZCB0byBiZSBjaGFuZ2VkLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEJ1dCB0aGVuIGFsbCBvZiB0 aGUgSW9MaWIgaW5zdGFuY2VzIHdpbGwgaGF2ZSB0byBiZSBleHRlbmRlZCB0b286DQo+ID4+Pj4+ Pg0KPiA+Pj4+Pj4gSW50ZWxGcmFtZXdvcmtQa2cvTGlicmFyeS9EeGVJb0xpYkNwdUlvL0R4ZUlv TGliQ3B1SW8uaW5mDQo+ID4+Pj4+PiBNZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMv QmFzZUlvTGliSW50cmluc2ljLmluZg0KPiA+Pj4+Pj4gTWRlUGtnL0xpYnJhcnkvRHhlSW9MaWJD cHVJbzIvRHhlSW9MaWJDcHVJbzIuaW5mDQo+ID4+Pj4+PiBNZGVQa2cvTGlicmFyeS9EeGVJb0xp YkVzYWwvRHhlSW9MaWJFc2FsLmluZg0KPiA+Pj4+Pj4gTWRlUGtnL0xpYnJhcnkvUGVpSW9MaWJD cHVJby9QZWlJb0xpYkNwdUlvLmluZg0KPiA+Pj4+Pj4gTWRlUGtnL0xpYnJhcnkvU21tSW9MaWJT bW1DcHVJbzIvU21tSW9MaWJTbW1DcHVJbzIuaW5mDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gVGhhbmtz LA0KPiA+Pj4+Pj4gTGFzemxvDQo+ID4+Pj4+Pg0KPiA+Pj4+PiBbRHVyYW4sIExlb10gQ29ycmVj dC4NCj4gPj4+Pj4gQXMgSSBtZW50aW9uZWQsIG9uZSBvZiB0aGUgcmVhc29ucyBmb3IgdGhlIG5l dyBJb0ZpZm8gbGlicmFyeSBpcw0KPiA+Pj4+PiB0byBiZSBhYmxlIHRvIG92ZXJyaWRlIGl0IHdp dGhvdXQgaGF2aW5nIHRvIGR1cGxpY2F0ZSB0aGUgY29tcGxldGUNCj4gSW9MaWIuDQo+ID4+Pj4+ DQo+ID4+Pj4NCj4gPj4+PiBJIGFncmVlIHdpdGggTGltaW5nIGFib3V0IGFkZGluZyB0aGUgZnVu Y3Rpb25zIHRvIElvTGliIGluc3RlYWQuDQo+ID4+Pj4NCj4gPj4+PiBQZXJoYXBzIGEgUENEIGNv dWxkIGJlIGFkZGVkIHRvIGNvbnRyb2wgaWYgcmVwIGkvbyBpbnN0cnVjdGlvbnMgYXJlDQo+ID4+ Pj4gdXNlZC4NCj4gPj4+Pg0KPiA+Pj4+IC1Kb3JkYW4NCg0K