From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.120; helo=mga04.intel.com; envelope-from=siyuan.fu@intel.com; receiver=edk2-devel@lists.01.org Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 2C4F621A143EF for ; Tue, 29 Jan 2019 05:06:29 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Jan 2019 05:06:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,537,1539673200"; d="scan'208";a="139755313" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga004.fm.intel.com with ESMTP; 29 Jan 2019 05:06:28 -0800 Received: from fmsmsx114.amr.corp.intel.com (10.18.116.8) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 29 Jan 2019 05:06:28 -0800 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by FMSMSX114.amr.corp.intel.com (10.18.116.8) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 29 Jan 2019 05:06:27 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.194]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.110]) with mapi id 14.03.0415.000; Tue, 29 Jan 2019 21:06:26 +0800 From: "Fu, Siyuan" To: "Tomas Pilar (tpilar)" , "Wu, Jiaxin" , Laszlo Ersek , "edk2-devel@lists.01.org" CC: "Ye, Ting" Thread-Topic: [edk2] Network Stack Budgeting Thread-Index: AQHUswuHflmTSIZRT0GRThV4ftMA96W8f6AAgAAFHoCAAGJEgIAA3z4AgAANYgCAAAkvAIAAB4QAgAA46ICAAA8rAIAA+62AgAA5I4CAA8xroIAA3iyAgAGL/YD///4BAIAApbHw Date: Tue, 29 Jan 2019 13:06:25 +0000 Message-ID: References: <6029fb15-3820-0f05-f02a-577e99592bbc@solarflare.com> <32137552-e2b0-4392-17c7-dedaa1f05244@redhat.com> <09017041-d418-1186-9942-dfa70d82c4d6@solarflare.com> <67f8fb4a-5e1b-8bbc-90d4-670ff7e3bfe8@redhat.com> <5185c0b2-031f-ec50-b273-2665d83ef38a@solarflare.com> <923ebd9f-ef26-c96d-37cc-5cc76f88fea1@solarflare.com> <770c5b55-32b1-c2f3-f3de-b25de5f2b37d@solarflare.com> <841c4437-ad73-64d5-0eb8-cfc0220cc55d@solarflare.com> <895558F6EA4E3B41AC93A00D163B727416ECCDAA@SHSMSX107.ccr.corp.intel.com> <642a0352-e098-dc90-c9aa-89443a7dde04@solarflare.com> <8ef796a4-c3f1-d97a-03c8-add7ff6430b6@solarflare.com> <197303c9-8af5-6092-afe1-404cf86dd800@solarflare.com> In-Reply-To: <197303c9-8af5-6092-afe1-404cf86dd800@solarflare.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYWE0M2ZhOTMtNjBmZS00YmQ0LWE4YWYtY2QyMGRjZTUyZTlhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiMWZNWjlJN055YjNNYmNyTloxVWxuNWJ2NmxpaG91M2lhNm1LTWgrUGIzNXoxczVaMlRyc1FLbkZ0cjBDZEROYyJ9 dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: Network Stack Budgeting X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jan 2019 13:06:29 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksIFRvbWFzDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogVG9tYXMg UGlsYXIgKHRwaWxhcikgW21haWx0bzp0cGlsYXJAc29sYXJmbGFyZS5jb21dDQo+IFNlbnQ6IFR1 ZXNkYXksIEphbnVhcnkgMjksIDIwMTkgNjo1NCBQTQ0KPiBUbzogRnUsIFNpeXVhbiA8c2l5dWFu LmZ1QGludGVsLmNvbT47IFd1LCBKaWF4aW4gPGppYXhpbi53dUBpbnRlbC5jb20+OyBMYXN6bG8N Cj4gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4g Q2M6IFllLCBUaW5nIDx0aW5nLnllQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyXSBO ZXR3b3JrIFN0YWNrIEJ1ZGdldGluZw0KPiANCj4gDQo+IA0KPiBPbiAyOS8wMS8yMDE5IDAzOjIw LCBGdSwgU2l5dWFuIHdyb3RlOg0KPiA+IEhpLCBUb21hcw0KPiA+DQo+ID4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IFRvbWFzIFBpbGFyICh0cGlsYXIpIFttYWlsdG86 dHBpbGFyQHNvbGFyZmxhcmUuY29tXQ0KPiA+PiBTZW50OiBNb25kYXksIEphbnVhcnkgMjgsIDIw MTkgNzoyNCBQTQ0KPiA+PiBUbzogRnUsIFNpeXVhbiA8c2l5dWFuLmZ1QGludGVsLmNvbT47IFd1 LCBKaWF4aW4gPGppYXhpbi53dUBpbnRlbC5jb20+Ow0KPiBMYXN6bG8NCj4gPj4gRXJzZWsgPGxl cnNla0ByZWRoYXQuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4gQ2M6IFllLCBU aW5nIDx0aW5nLnllQGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IFtlZGsyXSBOZXR3b3Jr IFN0YWNrIEJ1ZGdldGluZw0KPiA+Pg0KPiA+PiBIaSBTaXl1YW4sDQo+ID4+DQo+ID4+IEkgaGFk IHRvIGRvIHNvbWUgdHdlYWtzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHBlb3BsZSBpbiB0aGUgd2ls ZCB3YW50IHRvIFBYRQ0KPiA+PiBib290IHdob2xlIFdEUyBpbnN0YWxsYXRpb25zIHdoaWNoIGFy ZSB1cHdhcmRzIG9mIDMwME1CLg0KPiA+Pg0KPiA+PiBJIGhhdmUgYW4gaW50ZXJuYWwgc2V0IG9m IHF1ZXVlcyB3aGVyZSB0aGUgTklDIHJlY2VpdmVzIGludG8uIFNucC5SZWNlaXZlKCkNCj4gPj4g d2lsbCBnZXQgYSBwYWNrZXQgZnJvbSB0aGlzIHN0b3JlLiBJIGhhZCB0byBpbXBsZW1lbnQgYSBz ZXBhcmF0ZSBxdWV1ZSBmb3INCj4gPj4gdW5pY2FzdC9tdWx0aWNhc3QvYnJvYWRjYXN0IHRyYWZm aWMgc28gdGhhdCBJIGNvdWxkIHJlcHJpb3JpdGlzZSBhbmQNCj4gZGVsaXZlcg0KPiA+PiB1bmlj YXN0IHRyYWZmaWMgd2hpbGUgdW5kZXIgQVJQIHNwYW0uIEkgdGllZCBpbnRlcm5hbCBwb2xsIHRv IHJlY2VpdmUgYW5kDQo+ID4+IHRyYW5zbWl0LCBzbyBTbnAuUmVjZWl2ZSgpIHdpbGwgcG9sbCB0 aGUgTklDIGFuZCB0aGVuIGRlcXVldWUgYSBwYWNrZXQNCj4gd2hpbGUNCj4gPj4gU25wLlRyYW5z bWl0KCkgd2lsbCB0cmFuc21pdCB0aGUgcGFja2V0IGFuZCB0aGVuIHBvbGwgdGhlIE5JQyB0byBn ZXQgYQ0KPiA+PiBjb21wbGV0aW9uLiBJIGFsc28gaW1wbGVtZW50ZWQgYSBidXN5IHBvbGwgZm9y IDEwMHVzIG9yIHVudGlsIHRoZSBuZXh0DQo+IHBhY2tldA0KPiA+PiBjb21lcyBpbiB3aGVuIHRo ZSBOSUMgaXMgcG9sbGVkLg0KPiA+IEkgc2VlIHNvbWUgcHJvYmxlbXMgaGVyZS4gQm90aCBTbnAu UmVjZWl2ZSgpIGFuZCBTbnAuVHJhbnNtaXQoKSBzaG91bGQgYmUNCj4gbm9uLWJsb2NraW5nDQo+ ID4gaW50ZXJmYWNlIGluIGN1cnJlbnQgZGVzaWduIGFuZCBVRUZJIHNwZWMsIGJ1dCBpdCdzIG5v dCB0cnVlIGluIHlvdXIgZHJpdmVyLg0KPiA+IEZvciBSZWNlaXZlKCksIGl0IGNvdWxkIHBvbGwg dGhlIE5JQyBvbmx5IG9uY2UgYW5kIHJldHVybiBlaXRoZXIgYSByZWNlaXZlZA0KPiBwYWNrZXQN Cj4gPiBvciBhbiBlcnJvciwgaXQgc2hvdWxkIG5vdCBkbyBhbnkgYmxvY2tpbmcgcG9sbCB0byB3 YWl0IGZvciBhIHBhY2tldC4NCj4gT24gc29tZSBwbGF0Zm9ybXMgKHRmdHAgY2xpZW50cyksIGlm IHRoZSBTbnAuUmVjZWl2ZSgpIHJldHVybnMgRUZJX05PVF9SRUFEWQ0KPiB0aGV5IGRvIG5vdCBw b2xsIHRoZSBOSUMgdW50aWwgdGhlIG5leHQgTW5wU3lzdGVtUG9sbCgpLiBIZW5jZSB0aGUgZGVs YXkNCj4gYmVmb3JlIHJldHVybmluZyBFRklfTk9UX1JFQURZIGluIGNhc2UgdGhlIHBhY2tldCBp cyBzdGlsbCBpbmNvbWluZy4NCg0KT0ssIHRoYXQncyByZWFsbHkgbm90IGdvb2QgcHJhY3RpY2Uu DQoNCj4gPiBGb3IgVHJhbnNtaXQoKSwgaXQganVzdCBuZWVkIHRvIHB1dCB0aGUgcGFja2V0IGlu dG8gdGhlIFRYIHF1ZXVlIGFuZCByZXR1cm4NCj4gZGlyZWN0bHksDQo+ID4gd2l0aG91dCBjaGVj a2luZyBpZiB0aGUgVFggaXMgY29tcGxldGVkLg0KPiA+IEluc3RlYWQgb2YgdGhhdCwgU25wLkdl dFN0YXR1cygpIHNob3VsZCBiZQ0KPiA+IHVzZWQgdG8gY2hlY2sgaWYgdGhlIHBhY2tldCBoYXMg cmVhbGx5IGJlZW4gc2VudCBvdXQuDQo+IEkndmUgc2VlbiBxdWl0ZSBhIGZldyBwbGF0Zm9ybXMg d2hlcmUgR2V0U3RhdHVzIHdhcyBvbmx5IGNhbGxlZCBieSB0aGUNCj4gTW5wU3lzdGVtUG9sbCgp IGFuZCB0aGUgYXBwbGljYXRpb24gd291bGQgbm90IGNhbGwgaXQuIFRoaXMgbWVhbnMgb3VyIGhh cmR3YXJlDQo+IHJpbmdzIGFyZSBzdHVmZmVkIHdpdGggY29tcGxldGlvbnMgYW5kIHdlIHN0b3Ag YmVpbmcgYWJsZSB0byB0cmFuc21pdC4gWWVzLA0KPiB5b3UgY291bGQgc2F5IHRoYXQgd2Ugc2hv dWxkIHNvbHZlIHRoZSBhcHBsaWNhdGlvbiwgYnV0IHVuZm9ydHVuYXRlbHkgSSBjYW4ndA0KPiBk byB0aGF0Lg0KDQpUaGUgYXBwbGljYXRpb24gZG9lc24ndCBuZWVkIHRvIGNhbGwgU25wLkdldFN0 YXR1cygpIHRvIHJlY3ljbGUgdGhlIFRYIGJ1ZmZlciwgdGhlDQpNbnAuVHJhbnNtaXQoKSB3aWxs IGRvIHRoaXMgYXV0b21hdGljYWxseSB3aGVuIGl0IGZvdW5kIHRoZSBTTlAncyBUWCBidWZmZXIg aXMgZnVsbC4NClNlZSBNbnBTeW5jU2VuZFBhY2tldCgpIGFuZCBNbnBSZWN5Y2xlVHhCdWYoKS4g DQoNCj4gPg0KPiA+IE1heSBJIGtub3cgaG93IGRpZCB5b3UgY29udHJvbCB0aGUgMTAwdXMgdGlt ZW91dCBvZiB0aGUgYnVzeSBwb2xsIChieSB3aGljaA0KPiBBUEk/KSwNCj4gPiBhbmQgd2hhdCdz IHRoZSBUUEwgb2YgdGhpcyBidXN5IHBvbGw/DQo+ID4NCj4gQ3JlYXRlIGEgdGltZW91dCB0aW1l ciB3aXRoIHZhbHVlIG9mIDEwMDAuIFRoZW4gYnVzeSBwb2xsIGluIGEgbG9vcCB1bnRpbA0KPiBw YWNrZXQgaXMgcmVjZWl2ZWQgb3IgYSB0aW1lciBpcyB0cmlnZ2VyZWQuDQo+IFRoaXMgcnVucyBh dCBUUExfQ0FMTEJBQ0sgd2hpbGUgdGhlIEVmeFBvbGwgZnVuY3Rpb24gaXRzZWxmIHJ1bnMgYXQg VFBMX05PVElGWS4NCj4gDQo+IC0tDQo+IMKgIC8qIFNldCB0aGUgcG9sbCBtb2RlcmF0aW9uIHRp bWVvdXQgdG8gMTAwdXMgKi8NCj4gwqAgZ0JTLT5TZXRUaW1lcihOZXREZXYtPlBvbGxNb2RlcmF0 b3JUaW1lciwgVGltZXJSZWxhdGl2ZSwgMTAwMCk7DQo+IA0KPiDCoCB3aGlsZSAoIUludGVycnVw dFN0YXR1cykgew0KPiDCoMKgwqAgRWZ4UG9sbChOVUxMLCBOZXREZXYtPkVmeCk7DQo+IMKgwqDC oCBJbnRlcnJ1cHRTdGF0dXMgPSBFZnhTdGF0dXMoTmV0RGV2LT5FZngpOw0KPiANCj4gwqDCoMKg IGlmIChnQlMtPkNoZWNrRXZlbnQoTmV0RGV2LT5Qb2xsTW9kZXJhdG9yVGltZXIpKQ0KPiDCoMKg wqDCoMKgIHJldHVybiBJbnRlcnJ1cHRTdGF0dXM7DQo+IMKgIH0NCj4gDQo+IMKgIHJldHVybiBJ bnRlcnJ1cHRTdGF0dXM7DQo+IC0tDQoNClRoaXMgaXMgZXhhY3RseSB0aGUgY2FzZSB3aGF0IEkg d29ycmllZCBhYm91dC4gU29tZSBwbGF0Zm9ybSBoYXMgYSBtaW5pbXVtIHRpbWVyDQppbnRlcnZh bCAobGlrZSAxbXMgb3IgMTBtcyksIHNvIGlmIHlvdSBzZXQgYSB0aW1lciBpbnRlcnZhbCBzaG9y dGVyIHRoYW4gdGhhdCwNCml0IHdpbGwgYWN0dWFsbHkgYmUgc2lnbmFsZWQgYWZ0ZXIgdGhlIG1p bmltdW0gdmFsdWUuIFBsZWFzZSBjaGVjayBpZiB5b3VyDQpwbGF0Zm9ybSBjb3VsZCBzdXBwb3J0 IGEgc3VjaCBhIHNob3J0IHRpbWVvdXQgKDEwMHVzKS4NCg0KPiANCj4gPj4gT3RoZXJ3aXNlIEkg aGF2ZSBzZWVuIGEgcGF0aG9sb2dpY2FsIGNhc2Ugd2hlcmUgdGhlIFRGVFAgY2xpZW50IHdvdWxk IHB1bGwNCj4gb25lDQo+ID4+IHBhY2tldCBwZXIgc2Vjb25kIGJ1dCB0aGUgVEZUUF9SRVRSQU5T TUlUIGludGVydmFsIG9uIHRoZSBzZXJ2ZXIgd2FzIGFsc28NCj4gb25lDQo+ID4+IHNlY29uZCBh bmQgZXZlcnl0aGluZyB3YXMgYXdmdWwuDQo+ID4gV2h5IFRGVFAgY2xpZW50IGp1c3QgcHVsbCBv bmUgcGFja2V0IHBlciBzZWNvbmQ/IEkgdGhpbmsgaXTigJlzIG5vdCBjb3JyZWN0DQo+IGFuZCBp dA0KPiA+IGNvdWxkIHVzZSB0aGUgcG9sbCgpIGZ1bmN0aW9uIHRvIGFjY2VsZXJhdGUgdGhlIHJl Y2VpdmUuIFdoeSB5b3UgdHJ5aW5nIHRvDQo+IHNvbHZlIGENCj4gPiBURlRQIGxheWVyIHByb2Js ZW0gaW4gU05QIGxheWVyPyBJdCBicmVha3MgdGhlIGRlc2lnbiBwcmluY2lwbGUgb2YgbmV0d29y aw0KPiBsYXllciBtb2RlbC4NCj4gWWVzLCBJIGFwcHJlY2lhdGUgdGhlIHByaW5jaXBsZS4gSG93 ZXZlciwgaW4gcHJhY3RpY2Ugd2UgZG9uJ3QgZ2V0IHRvIHNlbGwNCj4gYWRhcHRlcnMgdGhhdCBk byBub3QgUFhFIGJvb3QgYW5kIGl0J3MgcG9pbnRsZXNzIHRvIGFyZ3VlIHdpdGggY3VzdG9tZXJz IHRoYXQNCj4gdGhleSBoYXZlIGEgcnViYmlzaCBURlRQIGNsaWVudCBpbXBsZW1lbnRhdGlvbi4g U28gd2UgcHV0IGluIHdvcmthcm91bmRzIGludG8NCj4gdGhlIGRyaXZlci4NCg0KT0sgSSB1bmRl cnN0YW5kIHlvdXIgc2l0dWF0aW9uIG5vdy4gVGVjaG5pY2FsbHkgaXQgd2lsbCBiZSBiZXR0ZXIg dG8gZml4IHRoZQ0KcHJvYmxlbSBpbiBURlRQIGNsaWVudCwgc28gSSBzdGlsbCBzdWdnZXN0IHlv dSB0byBjb25maXJtIHRoaXMgd2l0aCB5b3VyIGN1c3RvbWVyDQpvciB0aGUgVEZUUCBhcHBsaWNh dGlvbiBvd25lci4gVGhpcyB3b3JrYXJvdW5kIGluIHlvdXIgU05QIGRyaXZlciB3aWxsIHB1dCB5 b3UNCmluIHRoZSByaXNrIHRoYXQgYSBub3JtYWwgYXBwbGljYXRpb24gd2hpY2ggZm9sbG93IFVF Rkkgc3BlYyBtYXkgbm90IHdvcmsgY29ycmVjdGx5DQp3aXRoIHlvdSwgc28gSSB0aGluayB5b3Ug c2hvdWxkIG9ubHkgY29uc2lkZXIgdGhpcyBtZXRob2QgaWYgeW91IGNhbiBjb25maXJtDQp0aGUg VEZUUCBjbGllbnQgaXMgdGhlIG9ubHkgYXBwbGljYXRpb24gbGF5ZXIgY2xpZW50IHlvdSBuZWVk IHRvIHNlcnZlLg0KDQpCZXN0IFJlZ2FyZHMsDQpTaXl1YW4NCg0KPiA+PiBJbiB0aGVvcnkgdGhl IGJ1c3kgcG9sbCBtb2RlcmF0b3IgbWlnaHQgY2F1c2UgYW4gaXNzdWUgaW4gYSBwYXRob2xvZ2lj YWwNCj4gY2FzZSwNCj4gPj4gaWYgaXQgc3RhbGxzIHRoZSBtYWNoaW5lIGZvciAxMDB1cyBmb3Ig ZWFjaCBwYWNrZXQgLSB3aXRoIDEwMCBwYWNrZXRzIHBlcg0KPiA+PiBzZWNvbmQgdGhpcyB3b3Vs ZCBlYXQgb25seSAxMG1zLg0KPiA+IE5vdCBvbmx5IDEwbXMsIGl0J3MgYXQgbGVhc3QgMTBtcywg YW5kIGluIHRoZW9yeS4gSWYgeW91IGhhdmUgbXVsdGlwbGUgTklDcw0KPiBpbiB0aGUNCj4gPiBz eXN0ZW0sIHRoaXMgdGltZSB3aWxsIGRvdWJsZS4gSWYgc29tZW9uZSB0cmllcyB0byBwb2xsIHRo ZSBOSUMsIHRoZSB0aW1lDQo+IHdpbGwgaW5jcmVhc2UNCj4gPiBzaWduaWZpY2FudGx5LiBJdCBh bHNvIGRlcGVuZHMgb24gd2hvIHlvdSBtZWFzdXJlIHRoZSAxMDB1cyB0aW1lb3V0LCBJIGRpZA0K PiBzZWUgc29tZQ0KPiA+IHBsYXRmb3JtIHdoaWNoIGhhcyBhIG1pbmltdW0gdGltZXIgaW50ZXJ2 YWwgbGltaXRhdGlvbiwgdGhhdCB5b3UgdGhvdWdodCB5b3UNCj4gYXJlIHVzaW5nDQo+ID4gYSAx MDB1cyB0aW1lb3V0IGJ1dCBpdOKAmXMgYWN0dWFsbHkgMW1zIG9yIGV2ZW4gMTBtcy4NCj4gPg0K PiA+IFNvIG15IHN1Z2dlc3Rpb24gaXMgZG8gTk9UIGFkZCBhbnkgYnVzeSB3YWl0IGluIFNOUCBs YXllciBBUEksIGtlZXAgaXQgYXMNCj4gdW5ibG9ja2luZywNCj4gPiBhbmQgdGhlIHRyeSB0byBz b2x2ZSB0aGUgYXBwbGljYXRpb24gbGF5ZXIgcHJvYmxlbSBpbiBhcHBsaWNhdGlvbiBsYXllci4N Cj4gSSdsbCB0cnkgZHJvcHBpbmcgdGhlIGJ1c3kgcG9sbCBhbmQgc2VlIHdoZXRoZXIgdGhhdCBo ZWxwcw0KPiANCj4gQ2hlZXJzLA0KPiBUb20NCj4gPg0KPiA+IEJlc3QgUmVnYXJkcywNCj4gPiBT aXl1YW4NCj4gPg0KPiA+PiBDaGVlcnMsDQo+ID4+IFRvbQ0KPiA+Pg0KPiA+PiBPbiAyNy8wMS8y MDE5IDE0OjI4LCBGdSwgU2l5dWFuIHdyb3RlOg0KPiA+Pj4gSGksIFRvbQ0KPiA+Pj4NCj4gPj4+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IGVkazItZGV2ZWwgW21h aWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbiBCZWhhbGYgT2YNCj4gPj4g VG9tYXMNCj4gPj4+PiBQaWxhciAodHBpbGFyKQ0KPiA+Pj4+IFNlbnQ6IEZyaWRheSwgSmFudWFy eSAyNSwgMjAxOSA4OjA5IFBNDQo+ID4+Pj4gVG86IFd1LCBKaWF4aW4gPGppYXhpbi53dUBpbnRl bC5jb20+OyBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPjsNCj4gPj4gZWRrMi0NCj4g Pj4+PiBkZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4+PiBDYzogWWUsIFRpbmcgPHRpbmcueWVAaW50 ZWwuY29tPg0KPiA+Pj4+IFN1YmplY3Q6IFJlOiBbZWRrMl0gTmV0d29yayBTdGFjayBCdWRnZXRp bmcNCj4gPj4+Pg0KPiA+Pj4+IFllYWgsIHRoYXQgbWFrZXMgc2Vuc2UgSSBzdXBwb3NlLiBUaGUg ZW5kIHJlc3VsdCBpcyBob3dldmVyIHRoYXQgdGhlDQo+ID4+IG5ldHdvcmsNCj4gPj4+PiBkZXZp Y2UgaXMgJ29wZW5lZCcgYXMgc29vbiBhcyBDb25uZWN0Q29udHJvbGxlcigpIGlzIGNhbGxlZCBy YXRoZXIgdGhhbg0KPiA+PiB3aGVuDQo+ID4+Pj4gc29tZW9uZSB3YW50cyB0byBkbyBuZXR3b3Jr aW5nLiBUaGlzIHNlZW1zIHdyb25nIGFuZCBkaXJlY3RseSBsZWFkcyB0byBhDQo+ID4+IERvUw0K PiA+Pj4+IG9mIGEgcGxhdGZvcm0gaW4gY2FzZSBvZiBoZWF2eSBuZXR3b3JrIGxvYWQgKHVubGVz cyB3ZSBpbXBsZW1lbnQNCj4gYnVkZ2V0aW5nDQo+ID4+IGluDQo+ID4+Pj4gdGhlIG5ldHdvcmsg ZHJpdmVyLCB3aGljaCBpcyBhIHJlYWxseSBub3Qgd2hhdCBpdCBzaG91bGQgYmUgZG9pbmcpLg0K PiA+Pj4gSXQncyB0cnVlIHRoYXQgYSBjb25maWd1cmVkIE1OUCB3aWxsIHN0YXJ0IGEgYmFja2dy b3VuZCBzeXN0ZW0gcG9sbCB0bw0KPiA+PiByZWNlaXZlDQo+ID4+PiBuZXR3b3JrIHBhY2tldHMs IGJ1dCBub3JtYWxseSBpdCB3b24ndCBsZWFkIHRvIGEgRG9TLCBiZWNhdXNlIHRoZSByZWNlaXZl DQo+ID4+IGZyZXF1ZW5jeQ0KPiA+Pj4gaXMgYWN0dWFsbHkgdmVyeSBsb3cuIFRoZSBNTlAgZHJp dmVyIG9ubHkgdHJpZXMgdG8gcmVjZWl2ZSAxIHBhY2tldCBmcm9tDQo+IFNOUA0KPiA+PiBmb3Ig ZXZlcnkNCj4gPj4+IDEwIG1pbGxpc2Vjb25kcyAoc2VlIE1OUF9TWVNfUE9MTF9JTlRFUlZBTCwg TW5wU3lzdGVtUG9sbCgpIGFuZCByZWxhdGVkDQo+ID4+IHRpbWVyIGV2ZW50KS4NCj4gPj4+IFNv IG5vIG1hdHRlciBob3cgaGVhdnkgdGhlIG5ldHdvcmsgaXMsIE1OUCBkcml2ZXIgKGFuZCB1cHBl ciBsYXllciBzdGFjaykNCj4gPj4gd2lsbA0KPiA+Pj4gb25seSBwcm9jZXNzIGF0IG1vc3QgMTAw IHBhY2tldHMgcGVyIHNlY29uZCwgYWxsIG90aGVyIHBhY2tldHMgc2hvdWxkIGJlDQo+ID4+IGRy b3BwZWQNCj4gPj4+IGJ5IFVOREkgZHJpdmVyIGRpcmVjdGx5Lg0KPiA+Pj4NCj4gPj4+IFNvIGlm IHRoZXJlIGlzIG5vYm9keSBkb2luZyBidXN5IG5ldHdvcmsgcmVjZWl2aW5nLCB0aGUgbmV0d29y ayBzdGFjayBjb3N0DQo+ID4+IHdpbGwgYmUNCj4gPj4+IGF0IG1vc3QgMTAwIHBhY2tldHMgcGVy IE5JQyBkZXZpY2UgYW5kIHBlciBzZWNvbmQuDQo+ID4+Pg0KPiA+Pj4gSW4geW91ciBmaXJzdCBl bWFpbCB5b3UgbWVudGlvbmVkICJzb21lIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyB0byBteQ0K PiA+PiBuZXR3b3JrIGRyaXZlciIsDQo+ID4+PiBtYXkgSSBrbm93IHdoYXQncyB0aGUgaW1wcm92 ZW1lbnQgbWV0aG9kIHlvdSBhcmUgdXNpbmc/DQo+ID4+Pg0KPiA+Pj4gQmVzdCBSZWdhcmRzLA0K PiA+Pj4gU2l5dWFuDQo+ID4+Pg0KPiA+Pj4+IEhvdyBkbyB5b3Ugc3VnZ2VzdCB3ZSBzb2x2ZSB0 aGlzIHByb2JsZW0/DQo+ID4+Pj4NCj4gPj4+PiBDaGVlcnMsDQo+ID4+Pj4gVG9tDQo+ID4+Pj4N Cj4gPj4+PiBPbiAyNS8wMS8yMDE5IDA4OjQ0LCBXdSwgSmlheGluIHdyb3RlOg0KPiA+Pj4+PiBI aSBUb20sDQo+ID4+Pj4+DQo+ID4+Pj4+IE9uZSB0aGluZyBJIHdhbnQgdG8gaGlnaGxpZ2h0IGlz IHRoYXQgb3VyIGRlc2lnbiBvZiBuZXR3b3JrIHN0YWNrIGlzIG5vdA0KPiA+Pj4+IG9ubHkgZm9y IHRoZSBQWEUvSFRUUCBib290IHRyaWdnZWQgaW4gQm9vdE1hbmFnZXIsIGJ1dCBhbHNvIHRvIG1h a2Ugc3VyZQ0KPiA+PiBpdCdzDQo+ID4+Pj4gd29ya2FibGUgb25jZSB0aGVyZSBpcyBhbnkgTU5Q IGluc3RhbmNlIGNvbmZpZ3VyZWQgYnkgdXBwZXIgZHJpdmVycw0KPiA+Pj4+IChBUlAvSVB2NC9J UHY2KS4NCj4gPj4+Pj4gVGFrZSBBUlAvSVAgYXMgYW4gZXhhbXBsZSwgb25jZSBBUlAvSVAgYXJl IHN0YXJ0ZWQsIHdlIG5lZWQgYSBoZWFydGJlYXQNCj4gdG8NCj4gPj4+PiBwcm9jZXNzIGFueSBB UlAgcmVxdWVzdHMsIHdoaWNoIGlzIHJlcXVpcmVkIGJ5IEFSUCBmdW5jdGlvbmFsaXR5LiBJbiBz dWNoDQo+IGENCj4gPj4+PiBjYXNlLCBTTlAgbXVzdCBiZSBzdGFydGVkIHRvIG1ha2UgQVJQL0lQ IGRyaXZlcnMgd29ya3Mgd2VsbC4NCj4gPj4+Pj4gVGhhbmtzLA0KPiA+Pj4+PiBKaWF4aW4NCj4g Pj4+Pj4NCj4gPj4+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4+PiBGcm9t OiBlZGsyLWRldmVsIFttYWlsdG86ZWRrMi1kZXZlbC1ib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24g QmVoYWxmIE9mDQo+ID4+Pj4+PiBUb21hcyBQaWxhciAodHBpbGFyKQ0KPiA+Pj4+Pj4gU2VudDog RnJpZGF5LCBKYW51YXJ5IDI1LCAyMDE5IDE6NDMgQU0NCj4gPj4+Pj4+IFRvOiBMYXN6bG8gRXJz ZWsgPGxlcnNla0ByZWRoYXQuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4+Pj4+ IFN1YmplY3Q6IFJlOiBbZWRrMl0gTmV0d29yayBTdGFjayBCdWRnZXRpbmcNCj4gPj4+Pj4+DQo+ ID4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IE9uIDI0LzAxLzIwMTkgMTY6NDksIExhc3psbyBF cnNlayB3cm90ZToNCj4gPj4+Pj4+PiBPbiAwMS8yNC8xOSAxNDoyNSwgVG9tYXMgUGlsYXIgKHRw aWxhcikgd3JvdGU6DQo+ID4+Pj4+Pj4+IEhtbSwNCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gTW5w LT5Db25maWd1cmUoKSB3aWxsIGV2ZW50dWFsbHkgY2FsbCBNbnBTdGFydFNucCgpLg0KPiA+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+PiBBIGdyZXAgZm9yIE1ucC0+Q29uZmlndXJlIHNob3dzIHRoYXQ6DQo+ ID4+Pj4+Pj4+ICogQXJwRHhlIHBlcmZvcm1zIHRoaXMgb24gRHJpdmVyQmluZGluZy5TdGFydCgp DQo+ID4+Pj4+Pj4+ICogSXA2RHhlIHBlcmZvcm1zIHRoaXMgb24gRHJpdmVyQmluZGluZy5TdGFy dCgpDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IElwdjQgYW5kIERuc0RoY3AgZG8gdGhpcyBhcyBh IHBhcnQgb2YgdGhlaXIgQ29uZmlndXJlKCkgdGhleSBleHBvc2UNCj4gaW4NCj4gPj4+PiB0aGUN Cj4gPj4+Pj4+IEFQSS4NCj4gPj4+Pj4+PiBZZXMsIHRoYXQgbWFrZXMgc2Vuc2UuIEFsbCBvZiB0 aGUgYWJvdmUgZHJpdmVycyBhcmUgVUVGSSBkcml2ZXJzIHRoYXQNCj4gPj4+Pj4+PiBmb2xsb3cg dGhlIFVFRkkgZHJpdmVyIG1vZGVsLCBBSVVJLiBBcyBsb25nIGFzIHRoZSBjb250cm9sbGVyIGlz IG5vdA0KPiA+Pj4+Pj4+IGNvbm5lY3RlZCBmcm9tIEJEUywgbm8gQmluZGluZ1N0YXJ0KCkgZnVu Y3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBpbg0KPiB0aGVzZS4NCj4gPj4+Pj4+IEFoLCBidXQgSSB3 b3VsZCBleHBlY3QgdGhlIEJEUyB0byBjYWxsIENvbm5lY3RDb250cm9sbGVyKCkgb24gdGhlIE5J QywNCj4gPj4gYnV0DQo+ID4+Pj4gSQ0KPiA+Pj4+Pj4gd291bGQgbm90IGV4cGVjdCB0aGUgbmV0 d29yayBzdGFjayB0byBiZSBzdGFydGVkIHVubGVzcyB0aGUgZGV2aWNlIGlzDQo+ID4+Pj4+PiBh Y3R1YWxseSBjaG9zZW4gZm9yIFBYRSBib290aW5nLiBJbiBvdGhlciB3b3JkcywgdGhlIGFib3Zl IHByb3RvY29scw0KPiA+PiBzaG91bGQNCj4gPj4+Pj4+IGZvbGxvdyB0aGUgZXhhbXBsZSBvZiBF RklfRE5TNF9QUk9UT0NPTCB0aGF0IGJpbmRzIGFnYWluc3QgdGhlIGRldmljZQ0KPiA+Pj4+Pj4g ZHVyaW5nIEJEUyBidXQgLkNvbmZpZ3VyZSgpIGlzIG5vdCBhdXRvbWF0aWNhbGx5IGNhbGxlZCBi eQ0KPiA+Pj4+Pj4gRHJpdmVyQmluZGluZy5TdGFydCgpLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IC5D b25maWd1cmUoKSBzaG91bGQgYmUgY2FsbGVkIGJ5IHRoZSBCb290TWFuYWdlciBpZiBuZXR3b3Jr aW5nIGlzDQo+ID4+IGFjdHVhbGx5DQo+ID4+Pj4gdG8NCj4gPj4+Pj4+IGJlIGRvbmUuIFRoYXQg aW4gdHVybiB3aWxsIGNvbmZpZ3VyZSBNbnAgYW5kIHN0YXJ0IFNucC4NCj4gPj4+Pj4+DQo+ID4+ Pj4+PiBDaGVlcnMsDQo+ID4+Pj4+PiBUb20NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+Pj4+Pj4gZWRrMi1kZXZl bCBtYWlsaW5nIGxpc3QNCj4gPj4+Pj4+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4+Pj4+ PiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCj4gPj4+ PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+Pj4+ IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4+Pj4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcN Cj4gPj4+PiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwN Cg0K