From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8790DC433EF for ; Thu, 14 Oct 2021 19:44:48 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 2248660E96 for ; Thu, 14 Oct 2021 19:44:48 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 2248660E96 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CC5646EC3C; Thu, 14 Oct 2021 19:44:43 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2A8806EC3A; Thu, 14 Oct 2021 19:44:41 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10137"; a="228060833" X-IronPort-AV: E=Sophos;i="5.85,373,1624345200"; d="scan'208";a="228060833" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Oct 2021 12:44:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,373,1624345200"; d="scan'208";a="461316993" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga002.jf.intel.com with ESMTP; 14 Oct 2021 12:44:29 -0700 Received: from bgsmsx603.gar.corp.intel.com (10.109.78.82) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 14 Oct 2021 12:44:28 -0700 Received: from bgsmsx604.gar.corp.intel.com (10.67.234.6) by BGSMSX603.gar.corp.intel.com (10.109.78.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Fri, 15 Oct 2021 01:14:26 +0530 Received: from bgsmsx604.gar.corp.intel.com ([10.67.234.6]) by BGSMSX604.gar.corp.intel.com ([10.67.234.6]) with mapi id 15.01.2242.012; Fri, 15 Oct 2021 01:14:26 +0530 From: "Shankar, Uma" To: Pekka Paalanen CC: "harry.wentland@amd.com" , "ville.syrjala@linux.intel.com" , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "brian.starkey@arm.com" , "sebastian@sebastianwick.net" , "Shashank.Sharma@amd.com" Subject: RE: [RFC v2 01/22] drm: RFC for Plane Color Hardware Pipeline Thread-Topic: [RFC v2 01/22] drm: RFC for Plane Color Hardware Pipeline Thread-Index: AQHXo2JKczsaELBrPkmGEyuwyN6iXqvPBXOAgADt7XCAAILkAIACoyuw Date: Thu, 14 Oct 2021 19:44:25 +0000 Message-ID: <8c1d39bf5d034595aafd8937df259547@intel.com> References: <20210906213904.27918-1-uma.shankar@intel.com> <20210906213904.27918-2-uma.shankar@intel.com> <20211006155559.606521de@eldfell> <92af78eb53c04d67ac66b77f8b098cc0@intel.com> <20211013113046.7ace2dbd@eldfell> In-Reply-To: <20211013113046.7ace2dbd@eldfell> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 x-originating-ip: [10.223.10.1] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGVra2EgUGFhbGFuZW4g PHBwYWFsYW5lbkBnbWFpbC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAxMywgMjAy MSAyOjAxIFBNDQo+IFRvOiBTaGFua2FyLCBVbWEgPHVtYS5zaGFua2FyQGludGVsLmNvbT4NCj4g Q2M6IGhhcnJ5LndlbnRsYW5kQGFtZC5jb207IHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t OyBpbnRlbC0gDQo+IGdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmc7IA0KPiBicmlhbi5zdGFya2V5QGFybS5jb207IHNlYmFzdGlhbkBzZWJh c3RpYW53aWNrLm5ldDsgDQo+IFNoYXNoYW5rLlNoYXJtYUBhbWQuY29tDQo+IFN1YmplY3Q6IFJl OiBbUkZDIHYyIDAxLzIyXSBkcm06IFJGQyBmb3IgUGxhbmUgQ29sb3IgSGFyZHdhcmUgUGlwZWxp bmUNCj4gDQo+IE9uIFR1ZSwgMTIgT2N0IDIwMjEgMjA6NTg6MjcgKzAwMDANCj4gIlNoYW5rYXIs IFVtYSIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4gd3JvdGU6DQo+IA0KPiA+ID4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFBla2thIFBhYWxhbmVuIDxwcGFhbGFuZW5A Z21haWwuY29tPg0KPiA+ID4gU2VudDogVHVlc2RheSwgT2N0b2JlciAxMiwgMjAyMSA0OjAxIFBN DQo+ID4gPiBUbzogU2hhbmthciwgVW1hIDx1bWEuc2hhbmthckBpbnRlbC5jb20+DQo+ID4gPiBD YzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgDQo+ID4gPiBkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnOyBoYXJyeS53ZW50bGFuZEBhbWQuY29tOyANCj4gPiA+IHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tOyBicmlhbi5zdGFya2V5QGFybS5jb207IA0KPiA+ID4g c2ViYXN0aWFuQHNlYmFzdGlhbndpY2submV0OyBTaGFzaGFuay5TaGFybWFAYW1kLmNvbQ0KPiA+ ID4gU3ViamVjdDogUmU6IFtSRkMgdjIgMDEvMjJdIGRybTogUkZDIGZvciBQbGFuZSBDb2xvciBI YXJkd2FyZSANCj4gPiA+IFBpcGVsaW5lDQo+ID4gPg0KPiA+ID4gT24gVHVlLCAgNyBTZXAgMjAy MSAwMzowODo0MyArMDUzMCBVbWEgU2hhbmthciANCj4gPiA+IDx1bWEuc2hhbmthckBpbnRlbC5j b20+IHdyb3RlOg0KPiA+ID4NCj4gPiA+ID4gVGhpcyBpcyBhIFJGQyBwcm9wb3NhbCBmb3IgcGxh bmUgY29sb3IgaGFyZHdhcmUgYmxvY2tzLg0KPiA+ID4gPiBJdCBleHBvc2VzIHRoZSBwcm9wZXJ0 eSBpbnRlcmZhY2UgdG8gdXNlcnNwYWNlIGFuZCBjYWxscyBvdXQgdGhlIA0KPiA+ID4gPiBkZXRh aWxzIG9yIGludGVyZmFjZXMgY3JlYXRlZCBhbmQgdGhlIGludGVuZGVkIHB1cnBvc2UuDQo+ID4g PiA+DQo+ID4gPiA+IENyZWRpdHM6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51 eC5pbnRlbC5jb20+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hh bmthckBpbnRlbC5jb20+DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiAgRG9jdW1lbnRhdGlvbi9ncHUv cmZjL2RybV9jb2xvcl9waXBlbGluZS5yc3QgfCAxNjcNCj4gPiA+ID4gKysrKysrKysrKysrKysr KysrKw0KPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDE2NyBpbnNlcnRpb25zKCspICBjcmVhdGUg bW9kZSAxMDA2NDQgDQo+ID4gPiA+IERvY3VtZW50YXRpb24vZ3B1L3JmYy9kcm1fY29sb3JfcGlw ZWxpbmUucnN0DQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dw dS9yZmMvZHJtX2NvbG9yX3BpcGVsaW5lLnJzdA0KPiA+ID4gPiBiL0RvY3VtZW50YXRpb24vZ3B1 L3JmYy9kcm1fY29sb3JfcGlwZWxpbmUucnN0DQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMGQxY2E4NTg3ODNiDQo+ID4gPiA+IC0tLSAv ZGV2L251bGwNCj4gPiA+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvcmZjL2RybV9jb2xvcl9w aXBlbGluZS5yc3QNCj4gPiA+ID4gQEAgLTAsMCArMSwxNjcgQEANCj4gPiA+ID4gKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ICtEaXNw bGF5IENvbG9yIFBpcGVsaW5lOiBQcm9wb3NlZCBEUk0gUHJvcGVydGllcw0KPiANCj4gLi4uDQo+ IA0KPiA+ID4gPiArUHJvcG9zYWwgaXMgdG8gaGF2ZSBiZWxvdyBwcm9wZXJ0aWVzIGZvciBhIHBs YW5lOg0KPiA+ID4gPiArDQo+ID4gPiA+ICsqIFBsYW5lIERlZ2FtbWEgb3IgUHJlLUN1cnZlOg0K PiA+ID4gPiArCSogVGhpcyB3aWxsIGJlIHVzZWQgdG8gbGluZWFyaXplIHRoZSBpbnB1dCBmcmFt ZWJ1ZmZlciBkYXRhLg0KPiA+ID4gPiArCSogSXQgd2lsbCBhcHBseSB0aGUgcmV2ZXJzZSBvZiB0 aGUgY29sb3IgdHJhbnNmZXIgZnVuY3Rpb24uDQo+ID4gPiA+ICsJKiBJdCBjYW4gYmUgYSBkZWdh bW1hIGN1cnZlIG9yIE9FVEYgZm9yIEhEUi4NCj4gPiA+DQo+ID4gPiBBcyB5b3Ugd2FudCB0byBw cm9kdWNlIGxpZ2h0LWxpbmVhciB2YWx1ZXMsIHlvdSB1c2UgRU9URiBvciBpbnZlcnNlIE9FVEYu DQo+ID4gPg0KPiA+ID4gVGhlIHRlcm0gT0VURiBoYXMgYSBidWlsdC1pbiBhc3N1bXB0aW9uIHRo YXQgdGhhdCBoYXBwZW5zIGluIGEgY2FtZXJhOg0KPiA+ID4gaXQgdGFrZXMgaW4gbGlnaHQgYW5k IHByb2R1Y2VzIGFuZCBlbGVjdHJpY2FsIHNpZ25hbC4gTGF0ZWx5IEkgDQo+ID4gPiBoYXZlIHBl cnNvbmFsbHkgc3RhcnRlZCB0YWxraW5nIGFib3V0IG5vbi1saW5lYXIgZW5jb2Rpbmcgb2YgY29s b3IgDQo+ID4gPiB2YWx1ZXMsIHNpbmNlIEVPVEYgaXMgb2Z0ZW4gYXNzb2NpYXRlZCB3aXRoIGRp c3BsYXlzIGlmIG5vdGhpbmcgDQo+ID4gPiBlbHNlIGlzIHNhaWQgKHRha2luZw0KPiBpbiBhbiBl bGVjdHJpY2FsIHNpZ25hbCBhbmQgcHJvZHVjaW5nIGxpZ2h0KS4NCj4gPiA+DQo+ID4gPiBTbyB0 aGlzIHdvdWxkIGJlIGRlY29kaW5nIHRoZSBjb2xvciB2YWx1ZXMgaW50byBsaWdodC1saW5lYXIg Y29sb3IgDQo+ID4gPiB2YWx1ZXMuIFRoYXQgaXMgd2hhdCBhbiBFT1RGIGRvZXMsIHllcywgYnV0 IEkgZmVlbCB0aGVyZSBpcyBhIA0KPiA+ID4gbnVhbmNlZCBkaWZmZXJlbmNlLiBBIHBpZWNlIG9m IGVxdWlwbWVudCBpbXBsZW1lbnRzIGFuIEVPVEYgYnkgDQo+ID4gPiB0dXJuaW5nIGFuIGVsZWN0 cmljYWwgc2lnbmFsIGludG8gbGlnaHQsIGhlbmNlIEVPVEYgb2Z0ZW4gcmVmZXJzIA0KPiA+ID4g dG8gc3BlY2lmaWMgZXF1aXBtZW50LiBZb3UgY291bGQgdGFsayBhYm91dCBjb250ZW50IEVPVEYg dG8gZGVub3RlIA0KPiA+ID4gY29udGVudCB2YWx1ZSBlbmNvZGluZywgYXMgb3Bwb3NlZCB0byBv dXRwdXQgb3IgZGlzcGxheSBFT1RGLCBidXQgDQo+ID4gPiB0aGF0IG1pZ2h0IGJlIGNvbmZ1c2lu ZyBpZiB5b3UgbG9vayBhdCBlLmcuIHRoZSBkaWFncmFtcyBpbg0KPiA+ID4gQlQuMjEwMDogaXMg aXQgdGhlIEVPVEYNCj4gb3IgaXMgaXQgdGhlIGludmVyc2UgT0VURj8gSXMgdGhlIChpbnZlcnNl PykgT09URiBpbmNsdWRlZD8NCj4gPiA+DQo+ID4gPiBTbyBJIHRyeSB0byBzaWRlLXN0ZXAgdGhv c2UgcXVlc3Rpb25zIGJ5IHRhbGtpbmcgYWJvdXQgZW5jb2RpbmcuDQo+ID4NCj4gPiBUaGUgaWRl YSBoZXJlIGlzIHRoYXQgZnJhbWUgYnVmZmVyIHByZXNlbnRlZCB0byBkaXNwbGF5IHBsYW5lIGVu Z2luZSANCj4gPiB3aWxsIGJlIG5vbi0NCj4gbGluZWFyLg0KPiA+IFNvIG91dHB1dCBvZiBhIG1l ZGlhIGRlY29kZSBzaG91bGQgcmVzdWx0IGluIGNvbnRlbnQgd2l0aCBFT1RGIGFwcGxpZWQuDQo+ IA0KPiBIaSwNCj4gDQo+IHN1cmUsIGJ1dCB0aGUgcXVlc3Rpb24gaXM6IHdoaWNoIEVPVEYuIFRo ZXJlIGNhbiBiZSBtYW55IGRpZmZlcmVudCANCj4gdGhpbmdzIGNhbGxlZCAiRU9URiIgaW4gYSBz aW5nbGUgcGlwZWxpbmUsIGFuZCB0aGVuIGl0J3MgdXAgdG8gdGhlIA0KPiBkb2N1bWVudCB3cml0 ZXIgdG8gbWFrZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0uIENvbXBhcmluZyB0d28gDQo+ IGRvY3VtZW50cyB3aXRoIGRpZmZlcmVudCBjb252ZW50aW9ucyBjYXVzZXMgYSBsb3Qgb2YgY29u ZnVzaW9uIGluIG15IA0KPiBwZXJzb25hbCBleHBlcmllbmNlLCBzbyBpdCBpcyBnb29kIHRvIGRl ZmluZSB0aGUgY29uY2VwdHMgbW9yZSBjYXJlZnVsbHkuDQoNCkhpIFBla2thLA0KSSB0aGluayB5 b3UgaGF2ZSBnaXZlbiBzb21lIG5pY2UgaW5wdXRzIHRvIHJlYWxseSBkZWVwIGRpdmUgYW5kIGRv Y3VtZW50IGhlcmUuDQpXaWxsIHVwZGF0ZSB0aGlzIHdpdGggdGhlIHJpZ2h0IGV4cGVjdGF0aW9u cyB3cnQgd2hhdCB0cmFuc2ZlciBmdW5jdGlvbnMgdG8gYmUgdXNlZCBhdCB2YXJpb3VzIHN0YWdl cyBpbiB0aGUgb3BlcmF0aW9uIHBpcGVsaW5lLg0KDQo+ID4gU28gb3V0cHV0IG9mIGEgbWVkaWEg ZGVjb2RlIHNob3VsZCByZXN1bHQgaW4gY29udGVudCB3aXRoIEVPVEYgYXBwbGllZC4NCj4gDQo+ IEkgc3VzcGVjdCB5b3UgaGF2ZSBpdCBiYWNrd2FyZHMuIE1lZGlhIGRlY29kZSBwcm9kdWNlcyBl bGVjdHJpY2FsDQo+IChub24tbGluZWFyKSBwaXhlbCBjb2xvciB2YWx1ZXMuIElmIEVPVEYgd2Fz IGFwcGxpZWQsIHRoZXkgd291bGQgYmUgDQo+IGxpbmVhciBpbnN0ZWFkIChhbmQgcmVxdWlyZSBt b3JlIG1lbW9yeSB0byBhY2hpZXZlIHRoZSBzYW1lIHZpc3VhbCBwcmVjaXNpb24pLg0KPiANCj4g SWYgeW91IHdhbnQgdG8gcHV0IGl0IHRoaXMgd2F5LCB5b3UgY291bGQgc2F5ICJ3aXRoIGludmVy c2UgRU9URiANCj4gYXBwbGllZCIsIGJ1dCB0aGF0IG1pZ2h0IGJlIHNsaWdodGx5IGNvbmZ1c2lu ZyBiZWNhdXNlIGl0IGlzIGFscmVhZHkgDQo+IGJha2VkIGluIHRvIHRoZSB2aWRlbywgaXQncyBu b3Qgc29tZXRoaW5nIGEgbWVkaWEgZGVjb2RlciBoYXMgdG8gDQo+IHNwZWNpZmljYWxseSBhcHBs eSwgSSB0aGluay4gSG93ZXZlciwgdGhlIChpbnZlcnNlKSBFT1RGIGluIHRoaXMgY2FzZSBpcyB0 aGUgY29udGVudCBFT1RGLCBub3QgdGhlIGRpc3BsYXkgRU9URi4NCj4gDQo+IElmIGNvbnRlbnQg YW5kIGRpc3BsYXkgRU9URiBkaWZmZXIsIHRoZW4gb25lIG11c3QgYXBwbHkgZmlyc3QgY29udGVu dCANCj4gRU9URiBhbmQgdGhlbiBpbnZlcnNlIGRpc3BsYXkgRU9URiB0byBnZXQgdmFsdWVzIHRo YXQgYXJlIGNvcnJlY3RseSANCj4gZW5jb2RlZCBmb3IgdGhlIGRpc3BsYXkuIChUaGlzIGlzIG5l Y2Vzc2FyeSBidXQgbm90IHN1ZmZpY2llbnQgaW4NCj4gZ2VuZXJhbC4pIE1pbmQsIHRoYXQgdGhp cyBpcyBub3QgYW4gT09URiBub3IgYW4gYXJ0aXN0aWMgYWRqdXN0bWVudCwgDQo+IHRoaXMgaXMg cHVyZWx5IGEgdmFsdWUgZW5jb2RpbmcgY29udmVyc2lvbi4NCj4NCjANCg0KR290IGl0LCB0aGFu a3MgZm9yIGNvcnJlY3RpbmcuIFdpbGwgYWxzbyBkbyBzb21lIG1vcmUgc3R1ZHkgYXJvdW5kIHRo aXMgYW5kIHVwZGF0ZS4NCg0KPiA+IFBsYXliYWNrIHRyYW5zZmVyIGZ1bmN0aW9uIChFT1RGKTog aW52ZXJzZSBPRVRGIHBsdXMgcmVuZGVyaW5nIGludGVudCBnYW1tYS4NCj4gDQo+IERvZXMgInJl bmRlcmluZyBpbnRlbnQgZ2FtbWEiIHJlZmVyIHRvIGFydGlzdGljIGFkanVzdG1lbnRzLCBub3Qg T09URj8NCj4gXQ0KDQpUaGlzIGlkZWFsbHkgc2hvdWxkIGJlIE9PVEYgYWRqdXN0bWVudHMgaGVy ZS4NCg0KPiBjZi4gQlQuMjEwMCBBbm5leCAxLCAiVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRo ZSBPRVRGLCB0aGUgRU9URiBhbmQgDQo+IHRoZSBPT1RGIiwgYWx0aG91Z2ggSSBmaW5kIHRob3Nl IGRpYWdyYW1zIHNvbWV3aGF0IGNvbmZ1c2luZyBzdGlsbC4gSXQgDQo+IGRvZXMgbm90IHNlZW0g dG8gY2xlYXJseSBhY2NvdW50IGZvciB0cmFuc21pc3Npb24gbm9uLWxpbmVhciBlbmNvZGluZyBi ZWluZyBkaWZmZXJlbnQgZnJvbSB0aGUgZGlzcGxheSBFT1RGLg0KPiANCj4gRGlmZmVyZW50IGRv Y3VtZW50cyB1c2UgT09URiB0byByZWZlciB0byBkaWZmZXJlbnQgdGhpbmdzLiBUaGVuIHRoZXJl IA0KPiBpcyBhbHNvIHRoZSBmdW5kYW1lbnRhbCBkaWZmZXJlbmNlIGJldHdlZW4gUFEgYW5kIEhM RyBzeXN0ZW1zLCB3aGVyZSANCj4gT09URiBpcyBieSBkZWZpbml0aW9uIGluIGRpZmZlcmVudCBw bGFjZXMgb2YgdGhlIGNhbWVyYS10cmFuc21pc3Npb24tZGlzcGxheSBwaXBlbGluZS4NCg0KQWdy ZWUgdGhpcyBpcyBhIGJpdCBjb25mdXNpbmcsIEkgYWRtaXQgSSB3YXMgbXVjaCBtb3JlIGNvbmZ1 c2VkIHRoYW4gd2hhdCB5b3Ugd2VyZSBmb3Igc3VyZS4NCldpbGwgZG8gc29tZSByZXNlYXJjaCB0 byBnZXQgbXkgdW5kZXJzdGFuZGluZyBpbiBwbGFjZS4gVGhhbmtzIGZvciBhbGwgdGhlIGlucHV0 cy4NCg0KPiA+DQo+ID4gVG8gbWFrZSBpdCBsaW5lYXIsIHdlIHNob3VsZCBhcHBseSB0aGUgT0VU Ri4gQ29uZnVzaW9uIGlzIHdoZXRoZXIgDQo+ID4gT0VURiBpcyBlcXVpdmFsZW50IHRvIGludmVy c2UgRU9URiwgd2UgY291bGQgY2hlY2sgdGhpcyBvbmUgb3V0IHRvIGNvbmZpcm0uDQo+IA0KPiBP RVRGIGRvZXMgbm90IG1ha2UgYW55dGhpbmcgbGluZWFyLiBCeSBkZWZpbml0aW9uLCBPRVRGIGNv bnZlcnRzIA0KPiBvcHRpY2FsIChsaW5lYXIpIHZhbHVlcyBpbnRvIGVsZWN0cmljYWwgKHByYWN0 aWNhbGx5IGFsd2F5cyBub24tbGluZWFybHkgZW5jb2RlZCkgdmFsdWVzLg0KPiANCj4gWWVzLCBF T1RGIGlzIGFsbW9zdCBhbHdheXMgbm90IGVxdWFsIHRvIGludmVyc2UgT0VURiBiZWNhdXNlIG9m IHRoZSANCj4gZXhpc3RlbmNlIG9mIE9PVEYuIFRoZSBhcHBsaWVzIHRvIGludmVyc2UgRU9URiB2 cy4gT0VURiBhcyB3ZWxsLg0KPiANCj4gRnJvbSB3aGF0IEkgaGF2ZSBsZWFybmVkLCBpdCBpcyB1 bmV4cGVjdGVkIHRvIGFzc3VtZSB0aGF0IGludmVyc2Ugb2YgDQo+IG9uZSBpcyB0aGUgb3RoZXIu IFRoYXQgd2lsbCBjYXVzZSBjb25mdXNpb24uIFRoZXJlZm9yZSwgaWYgeW91IG1lYW4gDQo+IHRo ZSBpbnZlcnNlLCBzcGVsbCBpdCBvdXQgYXMgaW52ZXJzZS4gSSB1c2VkIHRvIG1ha2UgdGhpcyBz YW1lIA0KPiBtaXN0YWtlLCBhbmQgc29tZSBvZiBpdCBtYXkgc3RpbGwgYmUgbGVmdCBpbiBodHRw czovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvcHEvY29sb3ItYW5kLWhkciAuDQoNCkdvdCBpdC4N Cg0KPiA+DQo+ID4gSGVyZSBzaW5jZSB0aGUgdmFsdWVzIGZvciB0aGUgcHJlLWN1cnZlIChvciBk ZWdhbW1hIGFzIHdlIGhhdmUgDQo+ID4gY2FsbGVkIGl0IGluIHBhc3QpLCBhY2NlcHRzIHByb2dy YW1tYWJsZSBsdXQgdmFsdWVzIHdoaWNoIG1ha2VzIGl0IA0KPiA+IGZsZXhpYmxlIGVub3VnaCB0 bw0KPiBhY2NvbW1vZGF0ZSBhbnkgdmFsdWVzLg0KPiA+IFRoaXMgd2lsbCBob2xkIGZvciBIRFIg YXMgd2VsbCBhcyB0cmFkaXRpb25hbCBnYW1tYSBlbmNvZGVkIFNSR0IgZGF0YSBhcyB3ZWxsLg0K PiANCj4gWWVzLg0KPiANCj4gPiA+ID4gKwkqIFRoaXMgbGluZWFyIGRhdGEgY2FuIGJlIGZ1cnRo ZXIgYWN0ZWQgb24gYnkgdGhlIGZvbGxvd2luZw0KPiA+ID4gPiArCSogY29sb3IgaGFyZHdhcmUg YmxvY2tzIGluIHRoZSBkaXNwbGF5IGhhcmR3YXJlIHBpcGVsaW5lDQo+ID4gPg0KPiA+ID4gSSB0 aGluayB0aGlzIGFuZCB0aGUgYWJvdmUgZGVzY3JpcHRpb24gdGllcyB0aGUgaW50ZW5kZWQgdXNl IGRvd24gDQo+ID4gPiB0b28gbXVjaC4gVGhpcyBpcyBvbmUgcG9zc2libGUgd2F5IHRvIHVzZSBk ZWdhbW1hLCB5ZXMsIGJ1dCB0aGVyZSANCj4gPiA+IG1heSBiZSBvdGhlcnMuIFBhcnRpY3VsYXJs eSBpZiBDVE0gY2FuIGJlIHJlcGxhY2VkIHdpdGggYSAzRCBMVVQsIA0KPiA+ID4gdGhlbiB0aGUg ZGVnYW1tYSBpcyBtb3JlIGxpa2VseSBhIHNoYXBlciAobm9uLWxpbmVhciBhZGp1c3RtZW50IHRv IA0KPiA+ID4gM0QgTFVUIHRhcA0KPiBwb3NpdGlvbnMpLg0KPiA+DQo+ID4gWWVhaCBhZ3JlZSwg dGhpcyBpcyBqdXN0IG9uZSBvZiB0aGUgdXNlY2FzZXMuIEl0cyBqdXN0IGEgbHV0IHRhYmxlIA0K PiA+IHdoaWNoIGNhbiBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyBhcyB3ZWxsIGFuZCBpcyBu b3QganVzdCBsaW1pdGVkIA0KPiA+IHRvIGENCj4gbGluZWFyaXphdGlvbiBvcGVyYXRpb24uIEkg d2lsbCB1cGRhdGUgdGhpcy4NCj4gPg0KPiA+ID4gSSB3b3VsZCBwcmVmZXIgdGhlIG5hbWUgcHJl LWN1cnZlIHRvIHVuZGVybGluZSB0aGF0IHRoaXMgY2FuIGJlIA0KPiA+ID4gd2hhdGV2ZXIgb25l IHdhbnRzIGl0IHRvIGJlLCBidXQgSSB1bmRlcnN0YW5kIHRoYXQgcGVvcGxlIG1heSBiZSANCj4g PiA+IG1vcmUgZmFtaWxpYXINCj4gd2l0aCB0aGUgbmFtZSBkZWdhbW1hLg0KPiA+DQo+ID4gSSBm ZWVsIHByZS1jdXJ2ZSBzaG91bGQgYmUgZmluZSBidXQgeWVhaCBpdCBkZXZpYXRlcyBmcm9tIG5h bWluZyBvZiANCj4gPiBsZWdhY3kgY3J0Yy9waXBlDQo+IGNvbG9yIHByb3BlcnRpZXMuDQo+ID4g TWF5IGJlIHdlIGNhbiBzdGF5IHdpdGggbGVnYWN5IG5hbWluZyB3aXRoIG1vcmUgZG9jdW1lbnRh dGlvbiB0byANCj4gPiBoYXZlIGl0cw0KPiB1c2VjYXNlcyBjbGVhcmx5IGNhbGxlZCBvdXQuDQo+ IA0KPiBUaGF0IGlzIGZpbmUgYnkgbWUuDQo+IA0KPiA+ID4gPiArDQo+ID4gPiA+ICtVQVBJIE5h bWU6IFBMQU5FX0RFR0FNTUFfTU9ERQ0KPiA+ID4gPiArRGVzY3JpcHRpb246IEVudW0gcHJvcGVy dHkgd2l0aCB2YWx1ZXMgYXMgYmxvYl9pZCdzIHdoaWNoIA0KPiA+ID4gPiArYWR2ZXJ0aXplcw0K PiA+ID4gPiB0aGUNCj4gPiA+DQo+ID4gPiBJcyBlbnVtIHdpdGggYmxvYiBpZCB2YWx1ZXMgZXZl biBhIHRoaW5nPw0KPiA+DQo+ID4gWWVhaCB3ZSBjb3VsZCBoYXZlLiBUaGlzIGlzIGEgZHluYW1p YyBlbnVtIGNyZWF0ZWQgd2l0aCBibG9icy4gRWFjaCANCj4gPiBlbnRyeSBjb250YWlucyB0aGUg ZGF0YSBzdHJ1Y3R1cmUgdG8gZXh0cmFjdCB0aGUgZnVsbCBjb2xvciANCj4gPiBjYXBhYmlsaXRp ZXMgb2YgdGhlIGhhcmR3YXJlLiBJdOKAmXMgYSB2ZXJ5IGludGVyZXN0aW5nIHBsYXkgd2l0aCAN Cj4gPiBibG9icyAoQHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tIGJyYWluY2hpbGQpDQo+ IA0KPiBZZXMsIEkgdGhpbmsgSSBjYW4gaW1hZ2luZSBob3cgdGhhdCB3b3Jrcy4gVGhlIGJsb2Jz IGFyZSBjcmVhdGVkIA0KPiBpbW11dGFibGUsIHVuYWJsZSB0byBjaGFuZ2Ugb25jZSB0aGUgcGxh bmUgaGFzIGJlZW4gYWR2ZXJ0aXNlZCB0byANCj4gdXNlcnNwYWNlLCBiZWNhdXNlIHRoZWlyIElE cyBhcmUgdXNlZCBhcyBlbnVtIHZhbHVlcy4gQnV0IHRoYXQgaXMgb2ssIA0KPiBiZWNhdXNlIHRo ZSBibG9iIGRlc2NyaWJlcyBjYXBhYmlsaXRpZXMgdGhhdCBjYW5ub3QgY2hhbmdlIGR1cmluZyB0 aGUgDQo+IGRldmljZSdzIGxpZmV0aW1lLi4uIG9yIGNhbiB0aGV5PyBXaGF0IGlmIHlvdSB3b3Vs ZCB3YW50IHRvIGV4dGVuZCB0aGUgDQo+IGJsb2IgZm9ybWF0LCBkbyB5b3UgbmVlZCBhIEtNUyBj bGllbnQgY2FwIHRvIGNoYW5nZSB0aGUgZm9ybWF0IHdoaWNoIA0KPiB3b3VsZCBiZSBpbXBvc3Np YmxlIGJlY2F1c2UgeW91IGNhbid0IGNoYW5nZSBhbiBlbnVtIGRlZmluaXRpb24gYWZ0ZXIgaXQg aGFzIGJlZW4gaW5zdGFsbGVkIHNvIHlvdSBjYW5ub3Qgc3dhcCB0aGUgYmxvYiB0byBhIG5ldyBv bmU/DQo+IA0KPiBUaGlzIGFsc28gcmVsaWVzIG9uIGVudW1zIGJlaW5nIGlkZW50aWZpZWQgYnkg dGhlaXIgc3RyaW5nIG5hbWVzLCANCj4gYmVjYXVzZSB0aGUgbnVtZXJpY2FsIHZhbHVlIGlzIG5v dCBhIGNvbnN0YW50IGJ1dCBhIGJsb2IgSUQgYW5kIGdldHMgDQo+IGRldGVybWluZWQgd2hlbiB0 aGUgaW1tdXRhYmxlIGJsb2IgaXMgY3JlYXRlZC4NCj4gDQo+IERpZCBJIHVuZGVyc3RhbmQgY29y cmVjdGx5Pw0KDQpZZXMgdGhhdOKAmXMgcmlnaHQuIFdlIGFyZSBub3QgZXhwZWN0aW5nIHRoZXNl IHN0cnVjdHVyZXMgdG8gY2hhbmdlIGFzIHRoZXkgcmVwcmVzZW50IHRoZSBwbGF0Zm9ybXMgY2Fw YWJpbGl0aWVzLg0KDQo+IEFzIGEgdXNlcnNwYWNlIGRldmVsb3BlciwgSSBjYW4gdG90YWxseSB3 b3JrIHdpdGggdGhhdC4NCj4gDQo+ID4gPiA+ICsJICAgIHBvc3NpYmxlIGRlZ2FtbWEgbW9kZXMg YW5kIGx1dCByYW5nZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybS4NCj4gPiA+ID4gKwkgICAg VGhpcyAgYWxsb3dzIHVzZXJzcGFjZSB0byBxdWVyeSBhbmQgZ2V0IHRoZSBwbGFuZSBkZWdhbW1h IGNvbG9yDQo+ID4gPiA+ICsJICAgIGNhcHMgYW5kIGNob29zZSB0aGUgYXBwcm9wcmlhdGUgZGVn YW1tYSBtb2RlIGFuZCBjcmVhdGUgbHV0IHZhbHVlcw0KPiA+ID4gPiArCSAgICBhY2NvcmRpbmds eS4NCj4gPiA+DQo+ID4gPiBJIGFncmVlIHRoYXQgc29tZSBzb3J0IG9mICJtb2RlIiBzd2l0Y2gg aXMgbmVjZXNzYXJ5LCBhbmQgDQo+ID4gPiBhZHZlcnRpc2VtZW50IG9mIGNhcGFiaWxpdGllcyBh cyB3ZWxsLg0KPiA+ID4NCj4gPg0KPiA+IFRoaXMgZW51bSB3aXRoIGJsb2IgaWQncyBpcyBhbiBp bnRlcmVzdGluZyB3YXkgdG8gYWR2ZXJ0aXNlIHNlZ21lbnRlZCBsdXQgdGFibGVzLg0KPiA+DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK1VBUEkgTmFtZTogUExBTkVfREVHQU1NQV9MVVQNCj4gPiA+ID4g K0Rlc2NyaXB0aW9uOiBCbG9iIHByb3BlcnR5IHdoaWNoIGFsbG93cyBhIHVzZXJzcGFjZSB0byBw cm92aWRlIExVVCB2YWx1ZXMNCj4gPiA+ID4gKwkgICAgIHRvIGFwcGx5IGRlZ2FtbWEgY3VydmUg dXNpbmcgdGhlIGgvdyBwbGFuZSBkZWdhbW1hIHByb2Nlc3NpbmcNCj4gPiA+ID4gKwkgICAgIGVu Z2luZSwgdGhlcmVieSBtYWtpbmcgdGhlIGNvbnRlbnQgYXMgbGluZWFyIGZvciBmdXJ0aGVyIGNv bG9yDQo+ID4gPiA+ICsJICAgICBwcm9jZXNzaW5nLiBVc2Vyc3BhY2UgZ2V0cyB0aGUgc2l6ZSBv ZiBMVVQgYW5kIHByZWNpc2lvbiBldGMNCj4gPiA+ID4gKwkgICAgIGZyb20gUExBTkVfREVHQU1B X01PREVfUFJPUEVSVFkNCj4gPiA+DQo+ID4gPiBTbyBhbGwgZGVnYW1tYSBtb2RlcyB3aWxsIGFs d2F5cyBiZSBzb21lIGtpbmQgb2YgTFVUPyBUaGF0IG1heSBiZSANCj4gPiA+IGEgYml0IHJlc3Ry aWN0aXZlLCBhcyBJIHVuZGVyc3RhbmQgQU1EIG1heSBoYXZlIHByZWRlZmluZWQgb3IgDQo+ID4g PiBwYXJhbWV0ZXJpc2VkIGN1cnZlcyB0aGF0IGFyZSBub3QgTFVUcy4gU28gdGhlcmUgc2hvdWxk IGJlIHJvb20gDQo+ID4gPiBmb3IgYW4gYXJiaXRyYXJ5IHN0cnVjdHVyZSBvZiBwYXJhbWV0ZXJz LCB3aGljaCBjYW4gYmUgcGFzc2VkIGluIA0KPiA+ID4gYXMgYSBibG9iIGlkLCBhbmQgdGhlIGNv bnRlbnRzIGRlZmluZWQgYnkgdGhlIGRlZ2FtbWEgbW9kZS4NCj4gPg0KPiA+IEZvciBJbnRlbCdz IGhhcmR3YXJlIHRoZXNlIGFyZSBsdXRzIGJ1dCB5ZWFoIEFNRCBoYXJkd2FyZSBzZWVtcyB0byAN Cj4gPiBoYXZlIHRoZXNlIGFzIGZpeGVkIGZ1bmN0aW9uIHVuaXRzLiBXZSBzaG91bGQgdGhpbmsg b2YgYSB3YXkgdG8gaGF2ZSANCj4gPiB0aGlzIG9wdGlvbiBhcyB3ZWxsIGluIHRoZSBVQVBJLiBX ZSBjb3VsZCBleHRlbmQgdGhlIERFR0FNTUFfTU9ERSANCj4gPiBwcm9wZXJ0eSB0byBoYXZlIGFs bCB0aGUgaW5mbywgYW5kIERFR0FNTUFfTFVUX1BST1BFUlRZIG1heSBub3QgYmUgDQo+ID4gbmVl ZGVkIGJhc2VkIG9uIHNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMgcGFzc2VkIHZpYSBERUdBTU1BX01P REUuIFRoaXMgDQo+ID4gY2FuIGJlDQo+IG9uZSB3YXkgdG8gaGF2ZSByb29tIGZvciBib3RoLg0K PiA+IEBoYXJyeS53ZW50bGFuZEBhbWQuY29tIHRob3VnaHRzID8NCj4gDQo+IFllYWgsIHRob3Vn aCBJIGRvbid0IHRoaW5rIHlvdSBjYW4gdXNlIERFR0FNTUFfTU9ERSBwcm9wZXJ0eSB0byBwYXNz IA0KPiBwYXJhbWV0ZXJzIHRvIGZpeGVkLWZ1bmN0aW9uIGN1cnZlcy4gVGhlIHBhcmFtZXRlcnMg bmVlZCBhbm90aGVyIA0KPiBwcm9wZXJ0eS4gV291bGQgYmUgbmF0dXJhbCB0byB1c2UgdGhlIG90 aGVyIHByb3BlcnR5IGZvciBMVVQgZGF0YSB3aGVuIG1vZGUgaXQgc2V0IHRvIExVVC4NCj4gDQo+ IEEgdHJpdmlhbCBhbmQgbWFkZS11cCBleGFtcGxlIG9mIGEgcGFyYW1ldGVyaXNlZCBmaXhlZC1m dW5jdGlvbiBjdXJ2ZSANCj4gaXMgcG93KHgsIGdhbW1hKSwgd2hlcmUgZ2FtbWEgaXMgdGhlIHBh cmFtZXRlci4NCg0KV2UgY2FuIG1heWJlIGhhdmUgYSBwYXJhbGxlbCBwcm9wZXJ0eSBhcyB3ZWxs IHdpdGggcHJvcGVyIGRvY3VtZW50YXRpb24gaWYgdGhpcyBoZWxwcyB3aXRoIGZsZXhpYmlsaXR5 IGZvciB2YXJ5aW5nIGhhcmR3YXJlIHZlbmRvcnMuIFVBUEkgZG9jdW1lbnQgd2lsbCBsaXN0IHdo YXQgdG8gdXNlIGFuZCB3aGVuLg0KTWF5IGJlIHBsYXRmb3JtIHdpbGwgbm90IGV2ZW4gbGlzdCB0 aGUgb3RoZXIgb25lIHdoaWNoIG1heSBtYWtlIHRoaW5ncyBsZXNzIGNvbXBsaWNhdGVkIHRvIHVz ZXJzcGFjZS4NCg0KPiA+ID4NCj4gPiA+IExVVCBzaXplLCBwcmVjaXNpb24sIGFuZCBvdGhlciBk ZXRhaWxzIG9mIGVhY2ggZGVnYW1tYSBtb2RlIHdvdWxkIA0KPiA+ID4gYmUgZ29vZCB0byBleHBv c2Ugc29tZWhvdy4gSSBraW5kIG9mIGV4cGVjdGVkIHRob3NlIHdvdWxkIGhhdmUgDQo+ID4gPiBi ZWVuIGV4cG9zZWQgdGhyb3VnaCB0aGUgYWJvdmUgbWVudGlvbmVkICJlbnVtIHdpdGggYmxvYiBp ZCANCj4gPiA+IHZhbHVlcyIgd2hlcmUgZWFjaCBibG9iIGNvbnRlbnQgc3RydWN0dXJlIGlzIGRl ZmluZWQgYnkgdGhlIHJlc3BlY3RpdmUgZW51bSB2YWx1ZS4NCj4gPg0KPiA+IFllcywgeW91IGFy ZSBzcG90IG9uIGhlcmUuDQo+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPiArKiBQbGFuZSBDVE0NCj4g PiA+ID4gKwkqIFRoaXMgaXMgYSBQcm9wZXJ0eSB0byBwcm9ncmFtIHRoZSBjb2xvciB0cmFuc2Zv cm1hdGlvbiBtYXRyaXguDQo+ID4gPg0KPiA+ID4gTm8gbW9kZSBwcm9wZXJ0eSBoZXJlPyBJcyB0 aGVyZSBhbnkgaGFyZHdhcmUgd2l0aCBzb21ldGhpbmcgZWxzZSANCj4gPiA+IHRoYW4gYSBtYXRy aXggYXQgdGhpcyBwb2ludD8NCj4gPg0KPiA+IE5vdCB0aGF0IEkgYW0gYXdhcmUgb2YuDQo+ID4N Cj4gPiA+IFNob3VsZCB3ZSBhc3N1bWUgdGhlcmUgd2lsbCBiZSBoYXJkd2FyZSB3aXRoIHNvbWV0 aGluZyBlbHNlLCBhbmQgDQo+ID4gPiBoYXZlIGEgQ1NDIG1vZGUgcHJvcGVydHkgd2l0aCBvbmx5 IGEgc2luZ2xlIGVudW0gdmFsdWUgZGVmaW5lZCBzbyBmYXI6DQo+ID4gPiAibWF0cml4Ij8gT3Ig ZG8gd2Ugc2F5IFBMQU5FX0NUTSBpcyBhIG1hdHJpeCBhbmQgaWYgeW91IGhhdmUgDQo+ID4gPiBz b21ldGhpbmcgZWxzZSBpbiBoYXJkd2FyZSwgdGhlbiBpbnZlbnQgYSBuZXcgcHJvcGVydHkgZm9y IGl0Pw0KPiA+DQo+ID4gSSB0aGluayB0aGlzIHNob3VsZCBiZSBnb29kIGFzIHdlIGhhdmUgdGhp cyBmb3IgY3J0YyB3aXRoIG5vIG9uZSBjb21wbGFpbmluZy4NCj4gPiBUaGVyZSBtYXkgYmUgaGFy ZHdhcmUgd2l0aCBmaXhlZCBmdW5jdGlvbiBvcGVyYXRpb24gZm9yIHRoZSBDU0MgYnV0IA0KPiA+ IHRoZW4gaXRzIG5vdCBhIG1hdHJpeCBhbmQgaXQgd291bGQgYmUgcHJldHR5IGhhcmR3YXJlIGRl cGVuZGVudCwgc28gDQo+ID4gd2UgY2FuIGxlYXZlIHRoYXQgZnJvbSBhIGdlbmVyaWMgVUFQSS4N Cj4gDQo+IE9rLiBBbmQgaWYgdGhhdCBldmVudHVhbGx5IHR1cm5zIG91dCB0byBiZSBhIG1pc3Rh a2UsIGl0J3MgZWFzeSB0byANCj4gaW52ZW50IG1vcmUgcHJvcGVydGllcy4NCg0KSSBmZWVsIHRo YXQgaXMgd2hhdCB3b3VsZCBiZSByZXF1aXJlZC4gVGhpcyBpcyBqdXN0IGFub3RoZXIgaW5zdGFu Y2Ugb2Ygd2hhdCB3ZSBoYXZlIGF0IGNydGMgbGV2ZWwuDQoNCj4gPiA+ID4gKwkqIFRoaXMgY2Fu IGJlIHVzZWQgdG8gcGVyZm9ybSBhIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gbGlrZQ0KPiA+ID4g PiArCSogQlQyMDIwIHRvIEJUNzA5IG9yIEJUNjAxIGV0Yy4NCj4gPiA+ID4gKwkqIFRoaXMgYmxv Y2sgaXMgZ2VuZXJhbGx5IGtlcHQgYWZ0ZXIgdGhlIGRlZ2FtbWEgdW5pdCBzbyB0aGF0DQo+ID4g Pg0KPiA+ID4gTm90ICJnZW5lcmFsbHkiLiBJZiBibG9ja3MgY2FuIGNoYW5nZSBwbGFjZXMsIHRo ZW4gaXQgYmVjb21lcyANCj4gPiA+IGludHJhY3RhYmxlIGZvciBnZW5lcmljIHVzZXJzcGFjZSB0 byBwcm9ncmFtLg0KPiA+DQo+ID4gU3VyZSwgd2lsbCBkcm9wIHRoaXMgd29yZGluZyBoZXJlLiBC dXQgb25lIG9wZW4gd2lsbCBzdGlsbCByZW1haW4gDQo+ID4gZm9yIHVzZXJzcGFjZSwgYXMgdG8g aG93IGl0IGdldHMgdGhlIHBpcGVsaW5lIGR5bmFtaWNhbGx5IGZvciBhIHJlc3BlY3RpdmUgaGFy ZHdhcmUuDQo+ID4gQ3VycmVudGx5IHdlIGhhdmUgYXNzdW1lZCB0aGF0IHRoaXMgd291bGQgYmUg dGhlIGxvZ2ljYWwgZml4ZWQgb3JkZXIgDQo+ID4gb2YgaGFyZHdhcmUgdW5pdHMuDQo+IA0KPiBJ ZiB3ZSBjYW5ub3QgbW9kZWwgdGhlIGFic3RyYWN0IEtNUyBwaXBlbGluZSBhcyBhIGZpeGVkIG9y ZGVyIG9mIHVuaXRzIA0KPiAod2hlcmUgZWFjaCB1bml0IG1heSBleGlzdCBvciBub3QpLCB3ZSBu ZWVkIHRvIHRha2UgYSBmZXcgc3RlcHMgYmFjayANCj4gaGVyZSBhbmQgbG9vayBhdCB3aGF0IGRv IHdlIGFjdHVhbGx5IHdhbnQgdG8gZXhwb3NlLiBUaGF0IGlzIGEgbXVjaCANCj4gYmlnZ2VyIGRl c2lnbiBwcm9ibGVtIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgbm90IGV2ZW4gY29uc2lkZXJpbmcu DQoNCkkgdGhpbmsgbW9zdCBvZiB0aGUgaGFyZHdhcmUgdmVuZG9yIHBsYXRmb3JtcyBoYXZlIHRo aXMgcGlwZWxpbmUsIHNvIHdlIGNhbiBpbXBsZW1lbnQgdGhlIHByb3BlcnRpZXMgd2hpY2ggaW5j bHVkZSBhbGwgdGhlIHBvc3NpYmxlIGhhcmR3YXJlIGJsb2Nrcy4gSWYgY2VydGFpbiB1bml0cyBk b24ndCBleGlzdCwgdGhlIHJlc3BlY3RpdmUgcHJvcGVydGllcyBzaG91bGQgbm90IGJlIGV4cG9z ZWQgd2hpY2ggd2lsbCBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIHVzZXJzcGFjZS4NCg0KPiA+ID4g PiArCSogbGluZWFyIGRhdGEgY2FuIGJlIGZlZCB0byBpdCBmb3IgY29udmVyc2lvbi4NCj4gPiA+ ID4gKw0KPiA+ID4gPiArVUFQSSBOYW1lOiBQTEFORV9DVE0NCj4gPiA+ID4gK0Rlc2NyaXB0aW9u OiBCbG9iIHByb3BlcnR5IHdoaWNoIGFsbG93cyBhIHVzZXJzcGFjZSB0byBwcm92aWRlIA0KPiA+ ID4gPiArQ1RNDQo+IGNvZWZmaWNpZW50cw0KPiA+ID4gPiArCSAgICAgdG8gZG8gY29sb3Igc3Bh Y2UgY29udmVyc2lvbiBvciBhbnkgb3RoZXIgZW5oYW5jZW1lbnQgYnkgZG9pbmcgYQ0KPiA+ID4g PiArCSAgICAgbWF0cml4IG11bHRpcGxpY2F0aW9uIHVzaW5nIHRoZSBoL3cgQ1RNIHByb2Nlc3Np bmcgZW5naW5lDQo+ID4gPiA+ICsNCj4gPiA+DQo+ID4gPiBTcGVha2luZyBvZiBjb2xvciBzcGFj ZSBjb252ZXJzaW9ucywgd2Ugc2hvdWxkIHByb2JhYmx5IGRlZmluZSANCj4gPiA+IHdoYXQgaGFw cGVucyB0byBvdXQtb2YtcmFuZ2UgY29sb3IgdmFsdWVzLiBDb252ZXJ0aW5nIGNvbG9yIGludG8g DQo+ID4gPiBzbWFsbGVyIGdhbXV0IG9yIHNtYWxsZXIgZHluYW1pYyByYW5nZSBhbHdheXMgaGFz IHRoZSByaXNrIG9mIA0KPiA+ID4gZW5kaW5nIHVwIHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcy4g SSBzdXBwb3NlIHRob3NlIGdldCBzaW1wbHkgDQo+ID4gPiBjbGlwcGVkIGluZGVwZW5kZW50bHkg b24gZWFjaA0KPiBjb2xvciBjaGFubmVsLCByaWdodD8NCj4gPg0KPiA+IFdlIGhhdmUgc3RhbmRh cmQgbWF0cml4IHRvIGNvbnZlcnQgY29sb3JzcGFjZXMuIFRoaXMgaXMganVzdCB0aGUgDQo+ID4g cHJvcGVydHkgb2YgdGhlIGNvbG9yc3BhY2UsIEkgZ3Vlc3MgY2xpcHBpbmcgd2lsbCBiZSB0aGUg b25seSBvcHRpb24gDQo+ID4gaGVyZSAoaXJyZXNwZWN0aXZlIG9mIGhhcmR3YXJlKQ0KPiA+DQo+ ID4gPiBTdWNoIGNsaXBwaW5nIGNhbiBjaGFuZ2UgaHVlLCBzbyB1c2Vyc3BhY2Ugd291bGQgYmUg YmV0dGVyIGF2b2lkIA0KPiA+ID4gdHJpZ2dlcmluZyBjbGlwcGluZyBhdCBhbGwsIGJ1dCB3ZSBz dGlsbCBuZWVkIHRvIGtub3cgd2hhdCB3b3VsZCANCj4gPiA+IGhhcHBlbiB3aXRoIG91dC0NCj4g b2YtcmFuZ2UgdmFsdWVzLg0KPiA+ID4NCj4gPiA+IFdlIHdvdWxkIGFsc28gbmVlZCB0byBrbm93 IHdoZW4gY2xpcHBpbmcgd2lsbCBoYXBwZW4uIElmIEZQMTYNCj4gPiA+IChoYWxmLWZsb2F0KSBG QiBwcm9kdWNlcyBvdXQtb2YtcmFuZ2UgdmFsdWVzIGFuZCBkZWdhbW1hIHN0YWdlIGlzIA0KPiA+ ID4gbm90IHVzZWQsIHdpbGwgdGhlIENUTSBzZWUgb3JpZ2luYWwgb3IgY2xpcHBlZCB2YWx1ZXM/ IE9yIGlzIHRoYXQgDQo+ID4gPiBzb21ldGhpbmcgd2UgaGF2ZSB0byBkZWZpbmUgYXMgaGFyZHdh cmUtc3BlY2lmaWM/DQo+ID4gPg0KPiA+ID4gR2VuZXJpYyB1c2Vyc3BhY2Ugd2lsbCB0cnkgaGFy ZCB0byBhdm9pZCB0cmlnZ2VyaW5nIA0KPiA+ID4gaGFyZHdhcmUtc3BlY2lmaWMgYmVoYXZpb3Vy LCBzbyB5b3UgY2FuIGV4cGVjdCBzdWNoIGJlaGF2aW91ciB0byBnbyB1bnVzZWQuDQo+ID4NCj4g PiBIZXJlIGhhcmR3YXJlIHNob3VsZCBqdXN0IG9wZXJhdGUgb24gdGhlIG1hdHJpeCB2YWx1ZXMg cHJvZ3JhbW1lZC4NCj4gPiBUaGlzIHNob3VsZCBiZSB0aGUgbGltaXRhdGlvbiBvZiB0aGUgY29s b3Igc3BhY2UgY29udmVyc2lvbiANCj4gPiBvcGVyYXRpb24gYW5kIGhhcmR3YXJlIG1heSBub3Qg aGF2ZSBhbnkgcm9sZSB0byBwbGF5IGFwYXJ0IGZyb20ganVzdCANCj4gPiBob25vcmluZyB0aGUg bWF0cml4IHZhbHVlcyBhbmQgcHJvZHVjaW5nIHRoZSByZXN1bHRhbnQgb3V0cHV0Lg0KPiANCj4g SSdtIG5vdCB0YWxraW5nIGFib3V0IHRoZSBtYXRyaXggdmFsdWVzLiBJJ20gdGFsa2luZyBhYm91 dCB0aGUgdmFsdWVzIA0KPiBvcmlnaW5hdGluZyBmcm9tIHRoZSBGQiwgYXJlIHRoZXkgY2xpcHBl ZCBvciBub3QsIGJlZm9yZSBiZWluZyBwcm9jZXNzZWQgYnkgdGhlIG1hdHJpeD8NCj4gDQo+IFVz ZXJzcGFjZSBjb3VsZCB3YW50IHRvIHVzZSB0aGUgbWF0cml4IHRvIGJyaW5nIG91dC1vZi1yYW5n ZSBGQiB2YWx1ZXMgDQo+IGludG8gcmFuZ2UsIGJ1dCB0aGF0IHBsYW4gY2Fubm90IHdvcmsgaWYg dGhlIEZCIHZhbHVlcyBnZXQgY2xpcHBlZCBhbHJlYWR5IGJlZm9yZSB0aGUgbWF0cml4Lg0KPiAN Cj4gSSByZWZlcnJlZCB0byBGUDE2IGZvcm1hdCBleHBsaWNpdGx5IGJlY2F1c2UgdGhhdCBmb3Jt YXQgY2FuIGV4cHJlc3MgDQo+IHZhbHVlcyBvdXRzaWRlIG9mIHRoZSB1c3VhbCBbMC4wLCAxLjBd IHJhbmdlIGluIGEgZnJhbWVidWZmZXIuDQo+IA0KPiBPZiBjb3Vyc2UsIHRoZSBtYXRyaXggdmFs dWVzIHRoZW1zZWx2ZXMgaGF2ZSBzb21lIGxpbWl0cyB0b28sIGFuZCANCj4gdXNlcnNwYWNlIHNo b3VsZCBzb21laG93IGJlIGF3YXJlIG9mIHRoZW0uDQoNCkFGQUlLLCB0aGUgdmFsdWVzIHdpbGwg bm90IGJlIGNsaXBwZWQgYmVmb3JlIGJlaW5nIHN1Ym1pdHRlZCB0byBDU0MgYmxvY2tzLg0KQnV0 IHRoaXMgY2FuIGJlIGNvbmZpcm1lZCB0byBub3QgbGVhdmUgYW55IG1pc2NvbmNlcHRpb24gaGVy ZS4NCg0KPiA+DQo+ID4gPiA+ICsqIFBsYW5lIEdhbW1hIG9yIFBvc3QtQ3VydmUNCj4gPiA+ID4g KwkqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcGVyZm9ybSAyIG9wZXJhdGlvbnM6DQo+ID4gPiA+ICsJ CSogbm9uLWxpbmVyYWxpemUgdGhlIGZyYW1lYnVmZmVyIGRhdGEuIENhbiBiZSB1c2VkIGZvcg0K PiA+ID4gPiArCQkqIG5vbiBsaW5lYXIgYmxlbmRpbmcuIEl0IGNhbiBiZSBhIGdhbW1hIGN1cnZl IG9yIEVPVEYNCj4gPiA+ID4gKwkJKiBmb3IgSERSLg0KPiA+ID4gPiArCQkqIFBlcmZvcm0gVG9u ZSBNYXBwaW5nIG9wZXJhdGlvbi4gVGhpcyBpcyBhbiBvcGVyYXRpb24NCj4gPiA+ID4gKwkJKiBk b25lIHdoZW4gYmxlbmRpbmcgaXMgZG9uZSB3aXRoIEhEUiBhbmQgU0RSIGNvbnRlbnQuDQo+ID4g Pg0KPiA+ID4gSSBsaWtlIHRoaXMgd29yZGluZyBiZXR0ZXIgdGhhbiB0aGUgd29yZGluZyBmb3Ig cHJlLWN1cnZlOiAiY2FuIiwgDQo+ID4gPiBub3QgIndpbGwiLiBJdCBsZWF2ZXMgcm9vbSBmb3Ig Y3JlYXRpdmUgdXNlIG9mIHRoaXMgcHJvY2Vzc2luZyBibG9jay4NCj4gPg0KPiA+IE9rIHRoYW5r cywgd2lsbCB1cGRhdGUgcHJlLWN1cnZlIHNlY3Rpb24gYXMgd2VsbC4NCj4gPg0KPiA+ID4NCj4g PiA+IFRvbmUtbWFwcGluZyBpcyBuZWVkZWQgYWx3YXlzIHdoZW4gZHluYW1pYyByYW5nZSBkaWZm ZXJzLCBzbyBhbHNvIA0KPiA+ID4gZm9yIEhEUiB0byBIRFIsIG5vdCBqdXN0IFNEUiB0by9mcm9t IEhEUi4NCj4gPg0KPiA+IFllcyBjb3JyZWN0LCB3aWxsIHVwZGF0ZS4NCj4gPg0KPiA+ID4gPiAr DQo+ID4gPiA+ICtVQVBJIE5hbWU6IFBMQU5FX0dBTU1BX01PREUNCj4gPiA+ID4gK0Rlc2NyaXB0 aW9uOiBFbnVtIHByb3BlcnR5IHdpdGggdmFsdWVzIGFzIGJsb2JfaWQncyB3aGljaCBhZHZlcnRp emVzIHRoZQ0KPiA+ID4gPiArCSAgICBwb3NzaWJsZSBnYW1tYSBtb2RlcyBhbmQgbHV0IHJhbmdl cyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLg0KPiA+ID4gPiArCSAgICBUaGlzICBhbGxvd3Mg dXNlcnNwYWNlIHRvIHF1ZXJ5IGFuZCBnZXQgdGhlIHBsYW5lIGdhbW1hIGNvbG9yDQo+ID4gPiA+ ICsJICAgIGNhcHMgYW5kIGNob29zZSB0aGUgYXBwcm9wcmlhdGUgZ2FtbWEgbW9kZSBhbmQgY3Jl YXRlIGx1dCB2YWx1ZXMNCj4gPiA+ID4gKwkgICAgYWNjb3JkaW5nbHkuDQo+ID4gPiA+ICsNCj4g PiA+ID4gK1VBUEkgTmFtZTogUExBTkVfR0FNTUFfTFVUDQo+ID4gPiA+ICtEZXNjcmlwdGlvbjog QmxvYiBwcm9wZXJ0eSB3aGljaCBhbGxvd3MgYSB1c2Vyc3BhY2UgdG8gcHJvdmlkZSBMVVQgdmFs dWVzDQo+ID4gPiA+ICsJICAgICB0byBhcHBseSBnYW1tYSBjdXJ2ZSBvciBwZXJmb3JtIHRvbmUg bWFwcGluZyB1c2luZyB0aGUgaC93IHBsYW5lDQo+ID4gPiA+ICsJICAgICBnYW1tYSBwcm9jZXNz aW5nIGVuZ2luZSwgdGhlcmVieSBtYWtpbmcgdGhlIGNvbnRlbnQgYXMgbGluZWFyDQo+ID4gPiA+ ICsJICAgICBmb3IgZnVydGhlciBjb2xvciBwcm9jZXNzaW5nLiBVc2Vyc3BhY2UgZ2V0cyB0aGUg c2l6ZSBvZiBMVVQgYW5kDQo+ID4gPiA+ICsJICAgICBwcmVjaXNpb24gZXRjIGZyb20gUExBTkVf R0FNQV9NT0RFX1BST1BFUlRZDQo+ID4gPg0KPiA+ID4gVGhlIHNhbWUgY29tbWVudHMgaGVyZSBh cyB3aXRoIERFR0FNTUEuDQo+ID4NCj4gPiBOb3RlZC4NCj4gPg0KPiA+ID4gPiArDQo+ID4gPiA+ ICtUaGlzIGlzIHBhcnQgb2Ygb25lIHBsYW5lIGVuZ2luZS4gRGF0YSBmcm9tIG11bHRpcGxlIHBs YW5lcyANCj4gPiA+ID4gK3dpbGwgYmUgdGhlbiBmZWQgdG8gcGlwZSB3aGVyZSBpdCB3aWxsIGdl dCBibGVuZGVkLiBUaGVyZSBpcyBhIA0KPiA+ID4gPiArc2ltaWxhciBzZXQgb2YgcHJvcGVydGll cyBhdmFpbGFibGUgYXQgY3J0YyBsZXZlbCB3aGljaCBhY3RzIG9uIHRoaXMgYmxlbmRlZCBkYXRh Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICtCZWxvdyBpcyBhIHNhbXBsZSB1c2VjYXNlOg0KPiA+ID4g PiArDQo+ID4gPiA+ICsgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU kCAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAg 4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQDQo+ID4gPiDilIzi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJANCj4gPiA+ID4gKyAg4pSC RkIxICAgICAgICAg4pSCICAgICAg4pSCRGVnYW1tYSBCbG9ja+KUgiAgICAg4pSCIENUTSBNYXRy aXggIOKUgiAgICAg4pSCIEdhbW1hIEJsb2NrIOKUgg0KPiA+ID4gPiArICDilIIgICAgICAgICAg ICDilJzilIDilIDilIDilIDilIDilrrilIJMaW5lYXJpemUtICAg4pSc4pSA4pSA4pSA4pSA4pa6 4pSCIEJUNzA5IHRvICAgIOKUnOKUgOKUgOKUgOKUgOKWuuKUgiBTRFIgdG8gSERSDQo+IOKUgg0K PiA+ID4gPiArICDilIJCVDcwOSBTRFIgICDilIIgICAgICDilIJCVDcwOSBpbnZlcnNl4pSCICAg ICDilIIgQlQyMDIwICAgICAg4pSCICAgICDilIIgVG9uZQ0KPiA+ID4gTWFwcGluZ+KUnOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUkA0KPiA+ID4gPiArICDilJTilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilJggICAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilJggICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUmA0KPiA+ID4g4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSYICAgICAgICDilIINCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIN Cj4gPiA+ID4gKyAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAg ICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAgICDilIzi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJANCj4gPiA+IOKUjOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAgICAg4pSCDQo+ID4gPiA+ ICsgIOKUgkZCMiAgICAgICAgIOKUgiAgICAgIOKUgkRlZ2FtbWEgQmxvY2vilIIgICAgIOKUgiBD VE0gTWF0cml4ICDilIIgICAgIOKUgiBHYW1tYSBCbG9jayDilIINCj4g4pSCDQo+ID4gPiA+ICsg IOKUgiAgICAgICAgICAgIOKUnOKUgOKUgOKUgOKUgOKUgOKWuuKUgkxpbmVhcml6ZS0gICDilJzi lIDilIDilIDilIDilrrilIIgQlQ2MDEgdG8gICAg4pSc4pSA4pSA4pSA4pSA4pa64pSCIFNEUiB0 byBIRFINCj4gPiA+IOKUnOKUgOKUgOKUgOKUgOKUgOKUkCAg4pSCDQo+ID4gPiA+ICsgIOKUgkJU NjAxIFNEUiAgIOKUgiAgICAgIOKUgkJUNjAxIGludmVyc2XilIIgICAgIOKUgiBCVDIwMjAgICAg ICDilIIgICAgIOKUgiBUb25lIE1hcHBpbmfilIIgICAgIOKUgg0KPiDilIINCj4gPiA+ID4gKyAg 4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICAg4pSU4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICDilJTilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilJgNCj4gPiA+IOKUlOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAg4pSCICDilIINCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICDilIIgIOKUgg0KPiA+ID4gPiArICDilIzilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilJAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilJAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUkA0KPiA+ID4g4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSQICAgICDilIIgIOKUgg0KPiA+ID4gPiArICDilIJGQjMgICAgICAgICDilIIgICAgICDi lIJEZWdhbW1hIEJsb2Nr4pSCICAgICDilIIgQ1RNIE1hdHJpeCAg4pSCICAgICDilIIgR2FtbWEg QmxvY2sg4pSCICAgICDilIINCj4g4pSCDQo+ID4gPiA+ICsgIOKUgiAgICAgICAgICAgIOKUnOKU gOKUgOKUgOKUgOKUgOKWuuKUgkxpbmVhcml6ZS0gICDilJzilIDilIDilIDilIDilrrilIIgTk9Q IChEYXRhIGlu4pSc4pSA4pSA4pSA4pSA4pa64pSCIE5PUCAoRGF0YQ0KPiA+ID4gaW7ilJzilIDi lIDilIDilJAg4pSCICDilIINCj4gPiA+ID4gKyAg4pSCQlQyMDIwIEhEUiAg4pSCICAgICAg4pSC SERSIE9FVEYgICAgIOKUgiAgICAg4pSCIEJUMjAyMCkgICAgIOKUgiAgICAg4pSCIEhEUikgICAg ICAgIOKUgiAgIOKUgiDilIIgIOKUgg0KPiA+ID4gPiArICDilJTilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilJggICAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilJggICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUmA0KPiA+ID4g4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSYICAg4pSCIOKUgiAg4pSCDQo+ID4gPg0KPiA+ID4gRU9URiwgbm90IE9FVEYsIHNpbmNlIGl0 IGlzIGNvbnZlcnRpbmcgRSB0byBPLCBlbGVjdHJpY2FsIHRvIG9wdGljYWwuDQo+ID4NCj4gPiBJ IHRoaW5rIG1lZGlhIGRlY29kZSB3b3VsZCBoYXZlIGdpdmVuIGEgRU9URiBhcHBsaWVkIGRhdGEg dG8gYmUgDQo+ID4gZGlyZWN0bHkgY29uc3VtZWQgYnkgZGlzcGxheSBzaW5rIChpbiBjYXNlIHdl IGhhdmUgY2hvc2VuIGEgZGlzcGxheSBwYXNzIHRocm91Z2gpLg0KPiBOb3Qgc3VyZSBoZXJlIHRo b3VnaCwgaXTigJlzIGEgYml0IGNvbmZ1c2luZy4NCj4gDQo+IEkgaG9wZSBJIG1hbmFnZWQgdG8g ZXhwbGFpbiB0aGlzIGVhcmxpZXIgaW4gdGhpcyBlbWFpbC4NCj4gDQo+IERpc3BsYXkgc2lua3Mg ImFsd2F5cyIgdXNlIG5vbi1saW5lYXJseSBlbmNvZGVkIHZhbHVlcywgYmVjYXVzZSBpdCANCj4g c2F2ZXMgYmFuZHdpZHRoIHdpdGhvdXQgbG9zaW5nIHZpc3VhbCBxdWFsaXR5LiBGb3IgdGhlIHNh bWUgcmVhc29uLCANCj4gaW1hZ2VzIHRlbmQgdG8gYmUgc3RvcmVkIHdpdGggbm9uLWxpbmVhciB2 YWx1ZSBlbmNvZGluZyB3aGVuZXZlciBwb3NzaWJsZS4NCg0KWWVhaCwgdGhhbmtzIGZvciB0aGUg ZXhwbGFuYXRpb24gYW5kIHVzZWZ1bCBwb2ludGVycy4gV2lsbCB3b3JrIG9uIGl0IHRvIHB1dCB0 aGUgcmlnaHQgZXhwZWN0YXRpb25zIGluIHRoZSBkb2N1bWVudC4NCg0KVGhhbmtzIFBla2thIGZv ciB0aGUgdmFsdWFibGUgZmVlZGJhY2suDQoNClJlZ2FyZHMsDQpVbWEgU2hhbmthcg0KPiANCj4g VGhhbmtzLA0KPiBwcQ0KPiANCj4gPiA+ID4gKw0KPiA+ID4gPiArIOKUgiDilIIgIOKUgg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsg4pSCIOKUgiAg4pSCDQo+ID4gPiA+ICsNCj4gPiA+ID4gK+KUgiDi lIIgIOKUgg0KPiA+ID4gPg0KPiA+ID4NCj4gK+KUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gA0KPiA+ID4g4pSA4pSADQo+ID4gPiA+ICvilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilLTilIDilLTilIDilIDilJgNCj4gPiA+ID4gK+KUgg0KPiA+ID4gPiAr4pSCIOKUjOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAgIOKUjOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkA0KPiA+ID4gPiAr4pSCIOKUgiBDUlRDIERl Z2FtbWHilIIgICAgICDilIIgQ1JUQyBDVE0gICAg4pSCICAgICAg4pSCIENSVEMgR2FtbWEgICAg 4pSCDQo+ID4gPiA+ICvilJTilIDilKQgVXNlIHRvIG1ha2Ug4pSc4pSA4pSA4pSA4pSA4pSA4pa6 4pSCIFVzZSBmb3IgYW55IOKUnOKUgOKUgOKUgOKUgOKUgOKWuuKUgiBVc2UgZm9yIFRvbmUgDQo+ ID4gPiA+ICvilJzilIDilIDilIDilIDilIDilroNCj4gPiA+IFRPIFBvcnQNCj4gPiA+ID4gKyAg 4pSCIGRhdGEgbGluZWFyIOKUgiAgICAgIOKUgiBDb2xvciBTcGFjZSDilIIgICAgICDilIIgTWFw cGluZy9hcHBseSDilIINCj4gPiA+ID4gKyAg4pSCIGFmdGVyIGJsZW5kIOKUgiAgICAgIOKUgiBD b252ZXJzaW9uICDilIIgICAgICDilIIgdHJhbnNmZXIgZnVuYyDilIINCj4gPiA+ID4gKyAg4pSU 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICAg4pSU4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICAg4pSU4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYDQo+ID4gPg0KPiA+ID4gQmxlbmRp bmcgZG9lcyBub3QgY2hhbmdlIHdoZXRoZXIgdGhlIGRhdGEgaXMgbGluZWFyIG9yIG5vdC4gSSAN Cj4gPiA+IHN1cHBvc2UgaW4gdGhpcyBleGFtcGxlLCBDUlRDIGRlZ2FtbWEgYW5kIENUTSB3b3Vs ZCBiZSANCj4gPiA+IHBhc3N0aHJvdWdoLCBhbmQgZ2FtbWEgd291bGQgYmUgdGhlIGludmVyc2Ug ZGlzcGxheSBFT1RGIGZvciANCj4gPiA+IGVuY29kaW5nIGNvbG9yIHZhbHVlcyBpbnRvDQo+IHdo YXQgdGhlIG1vbml0b3IgZXhwZWN0cy4NCj4gPg0KPiA+IFllYWgsIHdpbGwgdXBkYXRlIHRoaXMg dG8gbWFrZSBpdCBjbGVhci4NCj4gPg0KPiA+ID4gPiArDQo+ID4gPiA+ICsNCj4gPiA+ID4gK1Ro aXMgcGF0Y2ggc2VyaWVzIGFkZHMgcHJvcGVydGllcyBmb3IgcGxhbmUgY29sb3IgZmVhdHVyZXMu IEl0IA0KPiA+ID4gPiArYWRkcyBwcm9wZXJ0aWVzIGZvciBkZWdhbW1hIHVzZWQgdG8gbGluZWFy aXplIGRhdGEgYW5kIENTQyB1c2VkIA0KPiA+ID4gPiArZm9yIGdhbXV0IGNvbnZlcnNpb24uIEl0 IGFsc28gaW5jbHVkZXMgR2FtbWEgc3VwcG9ydCB1c2VkIHRvIA0KPiA+ID4gPiArYWdhaW4gbm9u LWxpbmVhcml6ZSBkYXRhIGFzIHBlciBwYW5lbCBzdXBwb3J0ZWQgY29sb3Igc3BhY2UuDQo+ID4g PiA+ICtUaGVzZSBjYW4gYmUgdXRpbGl6ZSBieSB1c2VyIHNwYWNlIHRvIGNvbnZlcnQgcGxhbmVz IGZyb20gb25lIA0KPiA+ID4gPiArZm9ybWF0IHRvIGFub3RoZXIsIG9uZSBjb2xvciBzcGFjZSB0 byBhbm90aGVyIGV0Yy4NCj4gPiA+DQo+ID4gPiBGV0lXLCB0aGlzIGlzIGV4YWN0bHkgdGhlIHN0 cnVjdHVyZSBJIGhhdmUgYXNzdW1lZCBpbiB0aGUgV2VzdG9uIENNJkhEUiB3b3JrLg0KPiA+DQo+ ID4gVGhpcyBpcyBncmVhdCB0byBoZWFyIHRoYXQgd2UgYXJlIGFsaWduZWQgd3J0IGhvdyB0aGUg cGlwZWxpbmUgc2hvdWxkIHdvcmsuDQo+ID4NCj4gPiBUaGFua3MgUGVra2EgZm9yIHRha2luZyB0 aW1lIG91dCBhbmQgcHJvdmlkaW5nIHRoZSBmZWVkYmFjay4NCj4gPg0KPiA+IEBoYXJyeS53ZW50 bGFuZEBhbWQuY29tIFdlIGNhbiB3b3JrIHRvZ2V0aGVyIGFuZCBidWlsZCBvdXIgZGVzaWduIHRv IA0KPiA+IGFjY29tbW9kYXRlIGJvdGggSW50ZWwgYW5kIEFNRCdzIGhhcmR3YXJlIG5lZWRzLiBU aGlzIHdpbGwgYWxzbyBtYWtlIA0KPiA+IHRoaW5ncyBnZW5lcmljIGVub3VnaCBmb3IgYW55IG90 aGVyIGhhcmR3YXJlIHZlbmRvciBhcyB3ZWxsLg0KPiA+DQo+ID4gVGhhbmtzICYgUmVnYXJkcywN Cj4gPiBVbWEgU2hhbmthcg0KPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4gK1VzZXJzcGFjZSBjYW4g dGFrZSBzbWFydCBibGVuZGluZyBkZWNpc2lvbnMgYW5kIHV0aWxpemUgdGhlc2UgDQo+ID4gPiA+ ICtoYXJkd2FyZSBzdXBwb3J0ZWQgcGxhbmUgY29sb3IgZmVhdHVyZXMgdG8gZ2V0IGFjY3VyYXRl IGNvbG9yIA0KPiA+ID4gPiArcHJvZmlsZS4gVGhlIHNhbWUgY2FuIGhlbHAgaW4gY29uc2lzdGVu dCBjb2xvciBxdWFsaXR5IGZyb20gDQo+ID4gPiA+ICtzb3VyY2UgdG8gcGFuZWwgdGFraW5nIGFk dmFudGFnZSBvZiBhZHZhbmNlZCBjb2xvciBmZWF0dXJlcyBpbiBoYXJkd2FyZS4NCj4gPiA+ID4g Kw0KPiA+ID4gPiArVGhlc2UgcGF0Y2hlcyBhZGQgdGhlIHByb3BlcnR5IGludGVyZmFjZXMgYW5k IGVuYWJsZSBoZWxwZXIgZnVuY3Rpb25zLg0KPiA+ID4gPiArVGhpcyBzZXJpZXMgYWRkcyBJbnRl bCdzIFhFX0xQRCBodyBzcGVjaWZpYyBwbGFuZSBnYW1tYSBmZWF0dXJlLg0KPiA+ID4gPiArV2Ug Y2FuIGJ1aWxkIHVwIGFuZCBhZGQgb3RoZXIgcGxhdGZvcm0vaGFyZHdhcmUgc3BlY2lmaWMgDQo+ ID4gPiA+ICtpbXBsZW1lbnRhdGlvbiBvbiB0b3Agb2YgdGhpcyBzZXJpZXMuDQo+ID4gPiA+ICsN Cj4gPiA+ID4gK0NyZWRpdHM6IFNwZWNpYWwgbWVudGlvbiBhbmQgY3JlZGl0cyB0byBWaWxsZSBT eXJqYWxhIGZvciANCj4gPiA+ID4gK2NvbWluZyB1cCB3aXRoIGEgZGVzaWduIGZvciB0aGlzIGZl YXR1cmUgYW5kIGlucHV0cy4gVGhpcyANCj4gPiA+ID4gK3NlcmllcyBpcyBiYXNlZCBvbiBoaXMg b3JpZ2luYWwgZGVzaWduIGFuZCBpZGVhLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBUaGFua3MsDQo+ ID4gPiBwcQ0KDQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D2BAC433F5 for ; Thu, 14 Oct 2021 19:44:46 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B637861073 for ; Thu, 14 Oct 2021 19:44:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org B637861073 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0EC536EC40; Thu, 14 Oct 2021 19:44:44 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2A8806EC3A; Thu, 14 Oct 2021 19:44:41 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10137"; a="228060833" X-IronPort-AV: E=Sophos;i="5.85,373,1624345200"; d="scan'208";a="228060833" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Oct 2021 12:44:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,373,1624345200"; d="scan'208";a="461316993" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga002.jf.intel.com with ESMTP; 14 Oct 2021 12:44:29 -0700 Received: from bgsmsx603.gar.corp.intel.com (10.109.78.82) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 14 Oct 2021 12:44:28 -0700 Received: from bgsmsx604.gar.corp.intel.com (10.67.234.6) by BGSMSX603.gar.corp.intel.com (10.109.78.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Fri, 15 Oct 2021 01:14:26 +0530 Received: from bgsmsx604.gar.corp.intel.com ([10.67.234.6]) by BGSMSX604.gar.corp.intel.com ([10.67.234.6]) with mapi id 15.01.2242.012; Fri, 15 Oct 2021 01:14:26 +0530 From: "Shankar, Uma" To: Pekka Paalanen CC: "harry.wentland@amd.com" , "ville.syrjala@linux.intel.com" , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "brian.starkey@arm.com" , "sebastian@sebastianwick.net" , "Shashank.Sharma@amd.com" Thread-Topic: [RFC v2 01/22] drm: RFC for Plane Color Hardware Pipeline Thread-Index: AQHXo2JKczsaELBrPkmGEyuwyN6iXqvPBXOAgADt7XCAAILkAIACoyuw Date: Thu, 14 Oct 2021 19:44:25 +0000 Message-ID: <8c1d39bf5d034595aafd8937df259547@intel.com> References: <20210906213904.27918-1-uma.shankar@intel.com> <20210906213904.27918-2-uma.shankar@intel.com> <20211006155559.606521de@eldfell> <92af78eb53c04d67ac66b77f8b098cc0@intel.com> <20211013113046.7ace2dbd@eldfell> In-Reply-To: <20211013113046.7ace2dbd@eldfell> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.200.16 x-originating-ip: [10.223.10.1] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Intel-gfx] [RFC v2 01/22] drm: RFC for Plane Color Hardware Pipeline X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGVra2EgUGFhbGFuZW4g PHBwYWFsYW5lbkBnbWFpbC5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAxMywgMjAy MSAyOjAxIFBNDQo+IFRvOiBTaGFua2FyLCBVbWEgPHVtYS5zaGFua2FyQGludGVsLmNvbT4NCj4g Q2M6IGhhcnJ5LndlbnRsYW5kQGFtZC5jb207IHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t OyBpbnRlbC0gDQo+IGdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmc7IA0KPiBicmlhbi5zdGFya2V5QGFybS5jb207IHNlYmFzdGlhbkBzZWJh c3RpYW53aWNrLm5ldDsgDQo+IFNoYXNoYW5rLlNoYXJtYUBhbWQuY29tDQo+IFN1YmplY3Q6IFJl OiBbUkZDIHYyIDAxLzIyXSBkcm06IFJGQyBmb3IgUGxhbmUgQ29sb3IgSGFyZHdhcmUgUGlwZWxp bmUNCj4gDQo+IE9uIFR1ZSwgMTIgT2N0IDIwMjEgMjA6NTg6MjcgKzAwMDANCj4gIlNoYW5rYXIs IFVtYSIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4gd3JvdGU6DQo+IA0KPiA+ID4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFBla2thIFBhYWxhbmVuIDxwcGFhbGFuZW5A Z21haWwuY29tPg0KPiA+ID4gU2VudDogVHVlc2RheSwgT2N0b2JlciAxMiwgMjAyMSA0OjAxIFBN DQo+ID4gPiBUbzogU2hhbmthciwgVW1hIDx1bWEuc2hhbmthckBpbnRlbC5jb20+DQo+ID4gPiBD YzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgDQo+ID4gPiBkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnOyBoYXJyeS53ZW50bGFuZEBhbWQuY29tOyANCj4gPiA+IHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tOyBicmlhbi5zdGFya2V5QGFybS5jb207IA0KPiA+ID4g c2ViYXN0aWFuQHNlYmFzdGlhbndpY2submV0OyBTaGFzaGFuay5TaGFybWFAYW1kLmNvbQ0KPiA+ ID4gU3ViamVjdDogUmU6IFtSRkMgdjIgMDEvMjJdIGRybTogUkZDIGZvciBQbGFuZSBDb2xvciBI YXJkd2FyZSANCj4gPiA+IFBpcGVsaW5lDQo+ID4gPg0KPiA+ID4gT24gVHVlLCAgNyBTZXAgMjAy MSAwMzowODo0MyArMDUzMCBVbWEgU2hhbmthciANCj4gPiA+IDx1bWEuc2hhbmthckBpbnRlbC5j b20+IHdyb3RlOg0KPiA+ID4NCj4gPiA+ID4gVGhpcyBpcyBhIFJGQyBwcm9wb3NhbCBmb3IgcGxh bmUgY29sb3IgaGFyZHdhcmUgYmxvY2tzLg0KPiA+ID4gPiBJdCBleHBvc2VzIHRoZSBwcm9wZXJ0 eSBpbnRlcmZhY2UgdG8gdXNlcnNwYWNlIGFuZCBjYWxscyBvdXQgdGhlIA0KPiA+ID4gPiBkZXRh aWxzIG9yIGludGVyZmFjZXMgY3JlYXRlZCBhbmQgdGhlIGludGVuZGVkIHB1cnBvc2UuDQo+ID4g PiA+DQo+ID4gPiA+IENyZWRpdHM6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51 eC5pbnRlbC5jb20+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hh bmthckBpbnRlbC5jb20+DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiAgRG9jdW1lbnRhdGlvbi9ncHUv cmZjL2RybV9jb2xvcl9waXBlbGluZS5yc3QgfCAxNjcNCj4gPiA+ID4gKysrKysrKysrKysrKysr KysrKw0KPiA+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDE2NyBpbnNlcnRpb25zKCspICBjcmVhdGUg bW9kZSAxMDA2NDQgDQo+ID4gPiA+IERvY3VtZW50YXRpb24vZ3B1L3JmYy9kcm1fY29sb3JfcGlw ZWxpbmUucnN0DQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dw dS9yZmMvZHJtX2NvbG9yX3BpcGVsaW5lLnJzdA0KPiA+ID4gPiBiL0RvY3VtZW50YXRpb24vZ3B1 L3JmYy9kcm1fY29sb3JfcGlwZWxpbmUucnN0DQo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uMGQxY2E4NTg3ODNiDQo+ID4gPiA+IC0tLSAv ZGV2L251bGwNCj4gPiA+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvcmZjL2RybV9jb2xvcl9w aXBlbGluZS5yc3QNCj4gPiA+ID4gQEAgLTAsMCArMSwxNjcgQEANCj4gPiA+ID4gKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+ICtEaXNw bGF5IENvbG9yIFBpcGVsaW5lOiBQcm9wb3NlZCBEUk0gUHJvcGVydGllcw0KPiANCj4gLi4uDQo+ IA0KPiA+ID4gPiArUHJvcG9zYWwgaXMgdG8gaGF2ZSBiZWxvdyBwcm9wZXJ0aWVzIGZvciBhIHBs YW5lOg0KPiA+ID4gPiArDQo+ID4gPiA+ICsqIFBsYW5lIERlZ2FtbWEgb3IgUHJlLUN1cnZlOg0K PiA+ID4gPiArCSogVGhpcyB3aWxsIGJlIHVzZWQgdG8gbGluZWFyaXplIHRoZSBpbnB1dCBmcmFt ZWJ1ZmZlciBkYXRhLg0KPiA+ID4gPiArCSogSXQgd2lsbCBhcHBseSB0aGUgcmV2ZXJzZSBvZiB0 aGUgY29sb3IgdHJhbnNmZXIgZnVuY3Rpb24uDQo+ID4gPiA+ICsJKiBJdCBjYW4gYmUgYSBkZWdh bW1hIGN1cnZlIG9yIE9FVEYgZm9yIEhEUi4NCj4gPiA+DQo+ID4gPiBBcyB5b3Ugd2FudCB0byBw cm9kdWNlIGxpZ2h0LWxpbmVhciB2YWx1ZXMsIHlvdSB1c2UgRU9URiBvciBpbnZlcnNlIE9FVEYu DQo+ID4gPg0KPiA+ID4gVGhlIHRlcm0gT0VURiBoYXMgYSBidWlsdC1pbiBhc3N1bXB0aW9uIHRo YXQgdGhhdCBoYXBwZW5zIGluIGEgY2FtZXJhOg0KPiA+ID4gaXQgdGFrZXMgaW4gbGlnaHQgYW5k IHByb2R1Y2VzIGFuZCBlbGVjdHJpY2FsIHNpZ25hbC4gTGF0ZWx5IEkgDQo+ID4gPiBoYXZlIHBl cnNvbmFsbHkgc3RhcnRlZCB0YWxraW5nIGFib3V0IG5vbi1saW5lYXIgZW5jb2Rpbmcgb2YgY29s b3IgDQo+ID4gPiB2YWx1ZXMsIHNpbmNlIEVPVEYgaXMgb2Z0ZW4gYXNzb2NpYXRlZCB3aXRoIGRp c3BsYXlzIGlmIG5vdGhpbmcgDQo+ID4gPiBlbHNlIGlzIHNhaWQgKHRha2luZw0KPiBpbiBhbiBl bGVjdHJpY2FsIHNpZ25hbCBhbmQgcHJvZHVjaW5nIGxpZ2h0KS4NCj4gPiA+DQo+ID4gPiBTbyB0 aGlzIHdvdWxkIGJlIGRlY29kaW5nIHRoZSBjb2xvciB2YWx1ZXMgaW50byBsaWdodC1saW5lYXIg Y29sb3IgDQo+ID4gPiB2YWx1ZXMuIFRoYXQgaXMgd2hhdCBhbiBFT1RGIGRvZXMsIHllcywgYnV0 IEkgZmVlbCB0aGVyZSBpcyBhIA0KPiA+ID4gbnVhbmNlZCBkaWZmZXJlbmNlLiBBIHBpZWNlIG9m IGVxdWlwbWVudCBpbXBsZW1lbnRzIGFuIEVPVEYgYnkgDQo+ID4gPiB0dXJuaW5nIGFuIGVsZWN0 cmljYWwgc2lnbmFsIGludG8gbGlnaHQsIGhlbmNlIEVPVEYgb2Z0ZW4gcmVmZXJzIA0KPiA+ID4g dG8gc3BlY2lmaWMgZXF1aXBtZW50LiBZb3UgY291bGQgdGFsayBhYm91dCBjb250ZW50IEVPVEYg dG8gZGVub3RlIA0KPiA+ID4gY29udGVudCB2YWx1ZSBlbmNvZGluZywgYXMgb3Bwb3NlZCB0byBv dXRwdXQgb3IgZGlzcGxheSBFT1RGLCBidXQgDQo+ID4gPiB0aGF0IG1pZ2h0IGJlIGNvbmZ1c2lu ZyBpZiB5b3UgbG9vayBhdCBlLmcuIHRoZSBkaWFncmFtcyBpbg0KPiA+ID4gQlQuMjEwMDogaXMg aXQgdGhlIEVPVEYNCj4gb3IgaXMgaXQgdGhlIGludmVyc2UgT0VURj8gSXMgdGhlIChpbnZlcnNl PykgT09URiBpbmNsdWRlZD8NCj4gPiA+DQo+ID4gPiBTbyBJIHRyeSB0byBzaWRlLXN0ZXAgdGhv c2UgcXVlc3Rpb25zIGJ5IHRhbGtpbmcgYWJvdXQgZW5jb2RpbmcuDQo+ID4NCj4gPiBUaGUgaWRl YSBoZXJlIGlzIHRoYXQgZnJhbWUgYnVmZmVyIHByZXNlbnRlZCB0byBkaXNwbGF5IHBsYW5lIGVu Z2luZSANCj4gPiB3aWxsIGJlIG5vbi0NCj4gbGluZWFyLg0KPiA+IFNvIG91dHB1dCBvZiBhIG1l ZGlhIGRlY29kZSBzaG91bGQgcmVzdWx0IGluIGNvbnRlbnQgd2l0aCBFT1RGIGFwcGxpZWQuDQo+ IA0KPiBIaSwNCj4gDQo+IHN1cmUsIGJ1dCB0aGUgcXVlc3Rpb24gaXM6IHdoaWNoIEVPVEYuIFRo ZXJlIGNhbiBiZSBtYW55IGRpZmZlcmVudCANCj4gdGhpbmdzIGNhbGxlZCAiRU9URiIgaW4gYSBz aW5nbGUgcGlwZWxpbmUsIGFuZCB0aGVuIGl0J3MgdXAgdG8gdGhlIA0KPiBkb2N1bWVudCB3cml0 ZXIgdG8gbWFrZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZW0uIENvbXBhcmluZyB0d28gDQo+ IGRvY3VtZW50cyB3aXRoIGRpZmZlcmVudCBjb252ZW50aW9ucyBjYXVzZXMgYSBsb3Qgb2YgY29u ZnVzaW9uIGluIG15IA0KPiBwZXJzb25hbCBleHBlcmllbmNlLCBzbyBpdCBpcyBnb29kIHRvIGRl ZmluZSB0aGUgY29uY2VwdHMgbW9yZSBjYXJlZnVsbHkuDQoNCkhpIFBla2thLA0KSSB0aGluayB5 b3UgaGF2ZSBnaXZlbiBzb21lIG5pY2UgaW5wdXRzIHRvIHJlYWxseSBkZWVwIGRpdmUgYW5kIGRv Y3VtZW50IGhlcmUuDQpXaWxsIHVwZGF0ZSB0aGlzIHdpdGggdGhlIHJpZ2h0IGV4cGVjdGF0aW9u cyB3cnQgd2hhdCB0cmFuc2ZlciBmdW5jdGlvbnMgdG8gYmUgdXNlZCBhdCB2YXJpb3VzIHN0YWdl cyBpbiB0aGUgb3BlcmF0aW9uIHBpcGVsaW5lLg0KDQo+ID4gU28gb3V0cHV0IG9mIGEgbWVkaWEg ZGVjb2RlIHNob3VsZCByZXN1bHQgaW4gY29udGVudCB3aXRoIEVPVEYgYXBwbGllZC4NCj4gDQo+ IEkgc3VzcGVjdCB5b3UgaGF2ZSBpdCBiYWNrd2FyZHMuIE1lZGlhIGRlY29kZSBwcm9kdWNlcyBl bGVjdHJpY2FsDQo+IChub24tbGluZWFyKSBwaXhlbCBjb2xvciB2YWx1ZXMuIElmIEVPVEYgd2Fz IGFwcGxpZWQsIHRoZXkgd291bGQgYmUgDQo+IGxpbmVhciBpbnN0ZWFkIChhbmQgcmVxdWlyZSBt b3JlIG1lbW9yeSB0byBhY2hpZXZlIHRoZSBzYW1lIHZpc3VhbCBwcmVjaXNpb24pLg0KPiANCj4g SWYgeW91IHdhbnQgdG8gcHV0IGl0IHRoaXMgd2F5LCB5b3UgY291bGQgc2F5ICJ3aXRoIGludmVy c2UgRU9URiANCj4gYXBwbGllZCIsIGJ1dCB0aGF0IG1pZ2h0IGJlIHNsaWdodGx5IGNvbmZ1c2lu ZyBiZWNhdXNlIGl0IGlzIGFscmVhZHkgDQo+IGJha2VkIGluIHRvIHRoZSB2aWRlbywgaXQncyBu b3Qgc29tZXRoaW5nIGEgbWVkaWEgZGVjb2RlciBoYXMgdG8gDQo+IHNwZWNpZmljYWxseSBhcHBs eSwgSSB0aGluay4gSG93ZXZlciwgdGhlIChpbnZlcnNlKSBFT1RGIGluIHRoaXMgY2FzZSBpcyB0 aGUgY29udGVudCBFT1RGLCBub3QgdGhlIGRpc3BsYXkgRU9URi4NCj4gDQo+IElmIGNvbnRlbnQg YW5kIGRpc3BsYXkgRU9URiBkaWZmZXIsIHRoZW4gb25lIG11c3QgYXBwbHkgZmlyc3QgY29udGVu dCANCj4gRU9URiBhbmQgdGhlbiBpbnZlcnNlIGRpc3BsYXkgRU9URiB0byBnZXQgdmFsdWVzIHRo YXQgYXJlIGNvcnJlY3RseSANCj4gZW5jb2RlZCBmb3IgdGhlIGRpc3BsYXkuIChUaGlzIGlzIG5l Y2Vzc2FyeSBidXQgbm90IHN1ZmZpY2llbnQgaW4NCj4gZ2VuZXJhbC4pIE1pbmQsIHRoYXQgdGhp cyBpcyBub3QgYW4gT09URiBub3IgYW4gYXJ0aXN0aWMgYWRqdXN0bWVudCwgDQo+IHRoaXMgaXMg cHVyZWx5IGEgdmFsdWUgZW5jb2RpbmcgY29udmVyc2lvbi4NCj4NCjANCg0KR290IGl0LCB0aGFu a3MgZm9yIGNvcnJlY3RpbmcuIFdpbGwgYWxzbyBkbyBzb21lIG1vcmUgc3R1ZHkgYXJvdW5kIHRo aXMgYW5kIHVwZGF0ZS4NCg0KPiA+IFBsYXliYWNrIHRyYW5zZmVyIGZ1bmN0aW9uIChFT1RGKTog aW52ZXJzZSBPRVRGIHBsdXMgcmVuZGVyaW5nIGludGVudCBnYW1tYS4NCj4gDQo+IERvZXMgInJl bmRlcmluZyBpbnRlbnQgZ2FtbWEiIHJlZmVyIHRvIGFydGlzdGljIGFkanVzdG1lbnRzLCBub3Qg T09URj8NCj4gXQ0KDQpUaGlzIGlkZWFsbHkgc2hvdWxkIGJlIE9PVEYgYWRqdXN0bWVudHMgaGVy ZS4NCg0KPiBjZi4gQlQuMjEwMCBBbm5leCAxLCAiVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRo ZSBPRVRGLCB0aGUgRU9URiBhbmQgDQo+IHRoZSBPT1RGIiwgYWx0aG91Z2ggSSBmaW5kIHRob3Nl IGRpYWdyYW1zIHNvbWV3aGF0IGNvbmZ1c2luZyBzdGlsbC4gSXQgDQo+IGRvZXMgbm90IHNlZW0g dG8gY2xlYXJseSBhY2NvdW50IGZvciB0cmFuc21pc3Npb24gbm9uLWxpbmVhciBlbmNvZGluZyBi ZWluZyBkaWZmZXJlbnQgZnJvbSB0aGUgZGlzcGxheSBFT1RGLg0KPiANCj4gRGlmZmVyZW50IGRv Y3VtZW50cyB1c2UgT09URiB0byByZWZlciB0byBkaWZmZXJlbnQgdGhpbmdzLiBUaGVuIHRoZXJl IA0KPiBpcyBhbHNvIHRoZSBmdW5kYW1lbnRhbCBkaWZmZXJlbmNlIGJldHdlZW4gUFEgYW5kIEhM RyBzeXN0ZW1zLCB3aGVyZSANCj4gT09URiBpcyBieSBkZWZpbml0aW9uIGluIGRpZmZlcmVudCBw bGFjZXMgb2YgdGhlIGNhbWVyYS10cmFuc21pc3Npb24tZGlzcGxheSBwaXBlbGluZS4NCg0KQWdy ZWUgdGhpcyBpcyBhIGJpdCBjb25mdXNpbmcsIEkgYWRtaXQgSSB3YXMgbXVjaCBtb3JlIGNvbmZ1 c2VkIHRoYW4gd2hhdCB5b3Ugd2VyZSBmb3Igc3VyZS4NCldpbGwgZG8gc29tZSByZXNlYXJjaCB0 byBnZXQgbXkgdW5kZXJzdGFuZGluZyBpbiBwbGFjZS4gVGhhbmtzIGZvciBhbGwgdGhlIGlucHV0 cy4NCg0KPiA+DQo+ID4gVG8gbWFrZSBpdCBsaW5lYXIsIHdlIHNob3VsZCBhcHBseSB0aGUgT0VU Ri4gQ29uZnVzaW9uIGlzIHdoZXRoZXIgDQo+ID4gT0VURiBpcyBlcXVpdmFsZW50IHRvIGludmVy c2UgRU9URiwgd2UgY291bGQgY2hlY2sgdGhpcyBvbmUgb3V0IHRvIGNvbmZpcm0uDQo+IA0KPiBP RVRGIGRvZXMgbm90IG1ha2UgYW55dGhpbmcgbGluZWFyLiBCeSBkZWZpbml0aW9uLCBPRVRGIGNv bnZlcnRzIA0KPiBvcHRpY2FsIChsaW5lYXIpIHZhbHVlcyBpbnRvIGVsZWN0cmljYWwgKHByYWN0 aWNhbGx5IGFsd2F5cyBub24tbGluZWFybHkgZW5jb2RlZCkgdmFsdWVzLg0KPiANCj4gWWVzLCBF T1RGIGlzIGFsbW9zdCBhbHdheXMgbm90IGVxdWFsIHRvIGludmVyc2UgT0VURiBiZWNhdXNlIG9m IHRoZSANCj4gZXhpc3RlbmNlIG9mIE9PVEYuIFRoZSBhcHBsaWVzIHRvIGludmVyc2UgRU9URiB2 cy4gT0VURiBhcyB3ZWxsLg0KPiANCj4gRnJvbSB3aGF0IEkgaGF2ZSBsZWFybmVkLCBpdCBpcyB1 bmV4cGVjdGVkIHRvIGFzc3VtZSB0aGF0IGludmVyc2Ugb2YgDQo+IG9uZSBpcyB0aGUgb3RoZXIu IFRoYXQgd2lsbCBjYXVzZSBjb25mdXNpb24uIFRoZXJlZm9yZSwgaWYgeW91IG1lYW4gDQo+IHRo ZSBpbnZlcnNlLCBzcGVsbCBpdCBvdXQgYXMgaW52ZXJzZS4gSSB1c2VkIHRvIG1ha2UgdGhpcyBz YW1lIA0KPiBtaXN0YWtlLCBhbmQgc29tZSBvZiBpdCBtYXkgc3RpbGwgYmUgbGVmdCBpbiBodHRw czovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvcHEvY29sb3ItYW5kLWhkciAuDQoNCkdvdCBpdC4N Cg0KPiA+DQo+ID4gSGVyZSBzaW5jZSB0aGUgdmFsdWVzIGZvciB0aGUgcHJlLWN1cnZlIChvciBk ZWdhbW1hIGFzIHdlIGhhdmUgDQo+ID4gY2FsbGVkIGl0IGluIHBhc3QpLCBhY2NlcHRzIHByb2dy YW1tYWJsZSBsdXQgdmFsdWVzIHdoaWNoIG1ha2VzIGl0IA0KPiA+IGZsZXhpYmxlIGVub3VnaCB0 bw0KPiBhY2NvbW1vZGF0ZSBhbnkgdmFsdWVzLg0KPiA+IFRoaXMgd2lsbCBob2xkIGZvciBIRFIg YXMgd2VsbCBhcyB0cmFkaXRpb25hbCBnYW1tYSBlbmNvZGVkIFNSR0IgZGF0YSBhcyB3ZWxsLg0K PiANCj4gWWVzLg0KPiANCj4gPiA+ID4gKwkqIFRoaXMgbGluZWFyIGRhdGEgY2FuIGJlIGZ1cnRo ZXIgYWN0ZWQgb24gYnkgdGhlIGZvbGxvd2luZw0KPiA+ID4gPiArCSogY29sb3IgaGFyZHdhcmUg YmxvY2tzIGluIHRoZSBkaXNwbGF5IGhhcmR3YXJlIHBpcGVsaW5lDQo+ID4gPg0KPiA+ID4gSSB0 aGluayB0aGlzIGFuZCB0aGUgYWJvdmUgZGVzY3JpcHRpb24gdGllcyB0aGUgaW50ZW5kZWQgdXNl IGRvd24gDQo+ID4gPiB0b28gbXVjaC4gVGhpcyBpcyBvbmUgcG9zc2libGUgd2F5IHRvIHVzZSBk ZWdhbW1hLCB5ZXMsIGJ1dCB0aGVyZSANCj4gPiA+IG1heSBiZSBvdGhlcnMuIFBhcnRpY3VsYXJs eSBpZiBDVE0gY2FuIGJlIHJlcGxhY2VkIHdpdGggYSAzRCBMVVQsIA0KPiA+ID4gdGhlbiB0aGUg ZGVnYW1tYSBpcyBtb3JlIGxpa2VseSBhIHNoYXBlciAobm9uLWxpbmVhciBhZGp1c3RtZW50IHRv IA0KPiA+ID4gM0QgTFVUIHRhcA0KPiBwb3NpdGlvbnMpLg0KPiA+DQo+ID4gWWVhaCBhZ3JlZSwg dGhpcyBpcyBqdXN0IG9uZSBvZiB0aGUgdXNlY2FzZXMuIEl0cyBqdXN0IGEgbHV0IHRhYmxlIA0K PiA+IHdoaWNoIGNhbiBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyBhcyB3ZWxsIGFuZCBpcyBu b3QganVzdCBsaW1pdGVkIA0KPiA+IHRvIGENCj4gbGluZWFyaXphdGlvbiBvcGVyYXRpb24uIEkg d2lsbCB1cGRhdGUgdGhpcy4NCj4gPg0KPiA+ID4gSSB3b3VsZCBwcmVmZXIgdGhlIG5hbWUgcHJl LWN1cnZlIHRvIHVuZGVybGluZSB0aGF0IHRoaXMgY2FuIGJlIA0KPiA+ID4gd2hhdGV2ZXIgb25l IHdhbnRzIGl0IHRvIGJlLCBidXQgSSB1bmRlcnN0YW5kIHRoYXQgcGVvcGxlIG1heSBiZSANCj4g PiA+IG1vcmUgZmFtaWxpYXINCj4gd2l0aCB0aGUgbmFtZSBkZWdhbW1hLg0KPiA+DQo+ID4gSSBm ZWVsIHByZS1jdXJ2ZSBzaG91bGQgYmUgZmluZSBidXQgeWVhaCBpdCBkZXZpYXRlcyBmcm9tIG5h bWluZyBvZiANCj4gPiBsZWdhY3kgY3J0Yy9waXBlDQo+IGNvbG9yIHByb3BlcnRpZXMuDQo+ID4g TWF5IGJlIHdlIGNhbiBzdGF5IHdpdGggbGVnYWN5IG5hbWluZyB3aXRoIG1vcmUgZG9jdW1lbnRh dGlvbiB0byANCj4gPiBoYXZlIGl0cw0KPiB1c2VjYXNlcyBjbGVhcmx5IGNhbGxlZCBvdXQuDQo+ IA0KPiBUaGF0IGlzIGZpbmUgYnkgbWUuDQo+IA0KPiA+ID4gPiArDQo+ID4gPiA+ICtVQVBJIE5h bWU6IFBMQU5FX0RFR0FNTUFfTU9ERQ0KPiA+ID4gPiArRGVzY3JpcHRpb246IEVudW0gcHJvcGVy dHkgd2l0aCB2YWx1ZXMgYXMgYmxvYl9pZCdzIHdoaWNoIA0KPiA+ID4gPiArYWR2ZXJ0aXplcw0K PiA+ID4gPiB0aGUNCj4gPiA+DQo+ID4gPiBJcyBlbnVtIHdpdGggYmxvYiBpZCB2YWx1ZXMgZXZl biBhIHRoaW5nPw0KPiA+DQo+ID4gWWVhaCB3ZSBjb3VsZCBoYXZlLiBUaGlzIGlzIGEgZHluYW1p YyBlbnVtIGNyZWF0ZWQgd2l0aCBibG9icy4gRWFjaCANCj4gPiBlbnRyeSBjb250YWlucyB0aGUg ZGF0YSBzdHJ1Y3R1cmUgdG8gZXh0cmFjdCB0aGUgZnVsbCBjb2xvciANCj4gPiBjYXBhYmlsaXRp ZXMgb2YgdGhlIGhhcmR3YXJlLiBJdOKAmXMgYSB2ZXJ5IGludGVyZXN0aW5nIHBsYXkgd2l0aCAN Cj4gPiBibG9icyAoQHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tIGJyYWluY2hpbGQpDQo+ IA0KPiBZZXMsIEkgdGhpbmsgSSBjYW4gaW1hZ2luZSBob3cgdGhhdCB3b3Jrcy4gVGhlIGJsb2Jz IGFyZSBjcmVhdGVkIA0KPiBpbW11dGFibGUsIHVuYWJsZSB0byBjaGFuZ2Ugb25jZSB0aGUgcGxh bmUgaGFzIGJlZW4gYWR2ZXJ0aXNlZCB0byANCj4gdXNlcnNwYWNlLCBiZWNhdXNlIHRoZWlyIElE cyBhcmUgdXNlZCBhcyBlbnVtIHZhbHVlcy4gQnV0IHRoYXQgaXMgb2ssIA0KPiBiZWNhdXNlIHRo ZSBibG9iIGRlc2NyaWJlcyBjYXBhYmlsaXRpZXMgdGhhdCBjYW5ub3QgY2hhbmdlIGR1cmluZyB0 aGUgDQo+IGRldmljZSdzIGxpZmV0aW1lLi4uIG9yIGNhbiB0aGV5PyBXaGF0IGlmIHlvdSB3b3Vs ZCB3YW50IHRvIGV4dGVuZCB0aGUgDQo+IGJsb2IgZm9ybWF0LCBkbyB5b3UgbmVlZCBhIEtNUyBj bGllbnQgY2FwIHRvIGNoYW5nZSB0aGUgZm9ybWF0IHdoaWNoIA0KPiB3b3VsZCBiZSBpbXBvc3Np YmxlIGJlY2F1c2UgeW91IGNhbid0IGNoYW5nZSBhbiBlbnVtIGRlZmluaXRpb24gYWZ0ZXIgaXQg aGFzIGJlZW4gaW5zdGFsbGVkIHNvIHlvdSBjYW5ub3Qgc3dhcCB0aGUgYmxvYiB0byBhIG5ldyBv bmU/DQo+IA0KPiBUaGlzIGFsc28gcmVsaWVzIG9uIGVudW1zIGJlaW5nIGlkZW50aWZpZWQgYnkg dGhlaXIgc3RyaW5nIG5hbWVzLCANCj4gYmVjYXVzZSB0aGUgbnVtZXJpY2FsIHZhbHVlIGlzIG5v dCBhIGNvbnN0YW50IGJ1dCBhIGJsb2IgSUQgYW5kIGdldHMgDQo+IGRldGVybWluZWQgd2hlbiB0 aGUgaW1tdXRhYmxlIGJsb2IgaXMgY3JlYXRlZC4NCj4gDQo+IERpZCBJIHVuZGVyc3RhbmQgY29y cmVjdGx5Pw0KDQpZZXMgdGhhdOKAmXMgcmlnaHQuIFdlIGFyZSBub3QgZXhwZWN0aW5nIHRoZXNl IHN0cnVjdHVyZXMgdG8gY2hhbmdlIGFzIHRoZXkgcmVwcmVzZW50IHRoZSBwbGF0Zm9ybXMgY2Fw YWJpbGl0aWVzLg0KDQo+IEFzIGEgdXNlcnNwYWNlIGRldmVsb3BlciwgSSBjYW4gdG90YWxseSB3 b3JrIHdpdGggdGhhdC4NCj4gDQo+ID4gPiA+ICsJICAgIHBvc3NpYmxlIGRlZ2FtbWEgbW9kZXMg YW5kIGx1dCByYW5nZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybS4NCj4gPiA+ID4gKwkgICAg VGhpcyAgYWxsb3dzIHVzZXJzcGFjZSB0byBxdWVyeSBhbmQgZ2V0IHRoZSBwbGFuZSBkZWdhbW1h IGNvbG9yDQo+ID4gPiA+ICsJICAgIGNhcHMgYW5kIGNob29zZSB0aGUgYXBwcm9wcmlhdGUgZGVn YW1tYSBtb2RlIGFuZCBjcmVhdGUgbHV0IHZhbHVlcw0KPiA+ID4gPiArCSAgICBhY2NvcmRpbmds eS4NCj4gPiA+DQo+ID4gPiBJIGFncmVlIHRoYXQgc29tZSBzb3J0IG9mICJtb2RlIiBzd2l0Y2gg aXMgbmVjZXNzYXJ5LCBhbmQgDQo+ID4gPiBhZHZlcnRpc2VtZW50IG9mIGNhcGFiaWxpdGllcyBh cyB3ZWxsLg0KPiA+ID4NCj4gPg0KPiA+IFRoaXMgZW51bSB3aXRoIGJsb2IgaWQncyBpcyBhbiBp bnRlcmVzdGluZyB3YXkgdG8gYWR2ZXJ0aXNlIHNlZ21lbnRlZCBsdXQgdGFibGVzLg0KPiA+DQo+ ID4gPiA+ICsNCj4gPiA+ID4gK1VBUEkgTmFtZTogUExBTkVfREVHQU1NQV9MVVQNCj4gPiA+ID4g K0Rlc2NyaXB0aW9uOiBCbG9iIHByb3BlcnR5IHdoaWNoIGFsbG93cyBhIHVzZXJzcGFjZSB0byBw cm92aWRlIExVVCB2YWx1ZXMNCj4gPiA+ID4gKwkgICAgIHRvIGFwcGx5IGRlZ2FtbWEgY3VydmUg dXNpbmcgdGhlIGgvdyBwbGFuZSBkZWdhbW1hIHByb2Nlc3NpbmcNCj4gPiA+ID4gKwkgICAgIGVu Z2luZSwgdGhlcmVieSBtYWtpbmcgdGhlIGNvbnRlbnQgYXMgbGluZWFyIGZvciBmdXJ0aGVyIGNv bG9yDQo+ID4gPiA+ICsJICAgICBwcm9jZXNzaW5nLiBVc2Vyc3BhY2UgZ2V0cyB0aGUgc2l6ZSBv ZiBMVVQgYW5kIHByZWNpc2lvbiBldGMNCj4gPiA+ID4gKwkgICAgIGZyb20gUExBTkVfREVHQU1B X01PREVfUFJPUEVSVFkNCj4gPiA+DQo+ID4gPiBTbyBhbGwgZGVnYW1tYSBtb2RlcyB3aWxsIGFs d2F5cyBiZSBzb21lIGtpbmQgb2YgTFVUPyBUaGF0IG1heSBiZSANCj4gPiA+IGEgYml0IHJlc3Ry aWN0aXZlLCBhcyBJIHVuZGVyc3RhbmQgQU1EIG1heSBoYXZlIHByZWRlZmluZWQgb3IgDQo+ID4g PiBwYXJhbWV0ZXJpc2VkIGN1cnZlcyB0aGF0IGFyZSBub3QgTFVUcy4gU28gdGhlcmUgc2hvdWxk IGJlIHJvb20gDQo+ID4gPiBmb3IgYW4gYXJiaXRyYXJ5IHN0cnVjdHVyZSBvZiBwYXJhbWV0ZXJz LCB3aGljaCBjYW4gYmUgcGFzc2VkIGluIA0KPiA+ID4gYXMgYSBibG9iIGlkLCBhbmQgdGhlIGNv bnRlbnRzIGRlZmluZWQgYnkgdGhlIGRlZ2FtbWEgbW9kZS4NCj4gPg0KPiA+IEZvciBJbnRlbCdz IGhhcmR3YXJlIHRoZXNlIGFyZSBsdXRzIGJ1dCB5ZWFoIEFNRCBoYXJkd2FyZSBzZWVtcyB0byAN Cj4gPiBoYXZlIHRoZXNlIGFzIGZpeGVkIGZ1bmN0aW9uIHVuaXRzLiBXZSBzaG91bGQgdGhpbmsg b2YgYSB3YXkgdG8gaGF2ZSANCj4gPiB0aGlzIG9wdGlvbiBhcyB3ZWxsIGluIHRoZSBVQVBJLiBX ZSBjb3VsZCBleHRlbmQgdGhlIERFR0FNTUFfTU9ERSANCj4gPiBwcm9wZXJ0eSB0byBoYXZlIGFs bCB0aGUgaW5mbywgYW5kIERFR0FNTUFfTFVUX1BST1BFUlRZIG1heSBub3QgYmUgDQo+ID4gbmVl ZGVkIGJhc2VkIG9uIHNvbWUgb2YgdGhlIGF0dHJpYnV0ZXMgcGFzc2VkIHZpYSBERUdBTU1BX01P REUuIFRoaXMgDQo+ID4gY2FuIGJlDQo+IG9uZSB3YXkgdG8gaGF2ZSByb29tIGZvciBib3RoLg0K PiA+IEBoYXJyeS53ZW50bGFuZEBhbWQuY29tIHRob3VnaHRzID8NCj4gDQo+IFllYWgsIHRob3Vn aCBJIGRvbid0IHRoaW5rIHlvdSBjYW4gdXNlIERFR0FNTUFfTU9ERSBwcm9wZXJ0eSB0byBwYXNz IA0KPiBwYXJhbWV0ZXJzIHRvIGZpeGVkLWZ1bmN0aW9uIGN1cnZlcy4gVGhlIHBhcmFtZXRlcnMg bmVlZCBhbm90aGVyIA0KPiBwcm9wZXJ0eS4gV291bGQgYmUgbmF0dXJhbCB0byB1c2UgdGhlIG90 aGVyIHByb3BlcnR5IGZvciBMVVQgZGF0YSB3aGVuIG1vZGUgaXQgc2V0IHRvIExVVC4NCj4gDQo+ IEEgdHJpdmlhbCBhbmQgbWFkZS11cCBleGFtcGxlIG9mIGEgcGFyYW1ldGVyaXNlZCBmaXhlZC1m dW5jdGlvbiBjdXJ2ZSANCj4gaXMgcG93KHgsIGdhbW1hKSwgd2hlcmUgZ2FtbWEgaXMgdGhlIHBh cmFtZXRlci4NCg0KV2UgY2FuIG1heWJlIGhhdmUgYSBwYXJhbGxlbCBwcm9wZXJ0eSBhcyB3ZWxs IHdpdGggcHJvcGVyIGRvY3VtZW50YXRpb24gaWYgdGhpcyBoZWxwcyB3aXRoIGZsZXhpYmlsaXR5 IGZvciB2YXJ5aW5nIGhhcmR3YXJlIHZlbmRvcnMuIFVBUEkgZG9jdW1lbnQgd2lsbCBsaXN0IHdo YXQgdG8gdXNlIGFuZCB3aGVuLg0KTWF5IGJlIHBsYXRmb3JtIHdpbGwgbm90IGV2ZW4gbGlzdCB0 aGUgb3RoZXIgb25lIHdoaWNoIG1heSBtYWtlIHRoaW5ncyBsZXNzIGNvbXBsaWNhdGVkIHRvIHVz ZXJzcGFjZS4NCg0KPiA+ID4NCj4gPiA+IExVVCBzaXplLCBwcmVjaXNpb24sIGFuZCBvdGhlciBk ZXRhaWxzIG9mIGVhY2ggZGVnYW1tYSBtb2RlIHdvdWxkIA0KPiA+ID4gYmUgZ29vZCB0byBleHBv c2Ugc29tZWhvdy4gSSBraW5kIG9mIGV4cGVjdGVkIHRob3NlIHdvdWxkIGhhdmUgDQo+ID4gPiBi ZWVuIGV4cG9zZWQgdGhyb3VnaCB0aGUgYWJvdmUgbWVudGlvbmVkICJlbnVtIHdpdGggYmxvYiBp ZCANCj4gPiA+IHZhbHVlcyIgd2hlcmUgZWFjaCBibG9iIGNvbnRlbnQgc3RydWN0dXJlIGlzIGRl ZmluZWQgYnkgdGhlIHJlc3BlY3RpdmUgZW51bSB2YWx1ZS4NCj4gPg0KPiA+IFllcywgeW91IGFy ZSBzcG90IG9uIGhlcmUuDQo+ID4NCj4gPiA+ID4gKw0KPiA+ID4gPiArKiBQbGFuZSBDVE0NCj4g PiA+ID4gKwkqIFRoaXMgaXMgYSBQcm9wZXJ0eSB0byBwcm9ncmFtIHRoZSBjb2xvciB0cmFuc2Zv cm1hdGlvbiBtYXRyaXguDQo+ID4gPg0KPiA+ID4gTm8gbW9kZSBwcm9wZXJ0eSBoZXJlPyBJcyB0 aGVyZSBhbnkgaGFyZHdhcmUgd2l0aCBzb21ldGhpbmcgZWxzZSANCj4gPiA+IHRoYW4gYSBtYXRy aXggYXQgdGhpcyBwb2ludD8NCj4gPg0KPiA+IE5vdCB0aGF0IEkgYW0gYXdhcmUgb2YuDQo+ID4N Cj4gPiA+IFNob3VsZCB3ZSBhc3N1bWUgdGhlcmUgd2lsbCBiZSBoYXJkd2FyZSB3aXRoIHNvbWV0 aGluZyBlbHNlLCBhbmQgDQo+ID4gPiBoYXZlIGEgQ1NDIG1vZGUgcHJvcGVydHkgd2l0aCBvbmx5 IGEgc2luZ2xlIGVudW0gdmFsdWUgZGVmaW5lZCBzbyBmYXI6DQo+ID4gPiAibWF0cml4Ij8gT3Ig ZG8gd2Ugc2F5IFBMQU5FX0NUTSBpcyBhIG1hdHJpeCBhbmQgaWYgeW91IGhhdmUgDQo+ID4gPiBz b21ldGhpbmcgZWxzZSBpbiBoYXJkd2FyZSwgdGhlbiBpbnZlbnQgYSBuZXcgcHJvcGVydHkgZm9y IGl0Pw0KPiA+DQo+ID4gSSB0aGluayB0aGlzIHNob3VsZCBiZSBnb29kIGFzIHdlIGhhdmUgdGhp cyBmb3IgY3J0YyB3aXRoIG5vIG9uZSBjb21wbGFpbmluZy4NCj4gPiBUaGVyZSBtYXkgYmUgaGFy ZHdhcmUgd2l0aCBmaXhlZCBmdW5jdGlvbiBvcGVyYXRpb24gZm9yIHRoZSBDU0MgYnV0IA0KPiA+ IHRoZW4gaXRzIG5vdCBhIG1hdHJpeCBhbmQgaXQgd291bGQgYmUgcHJldHR5IGhhcmR3YXJlIGRl cGVuZGVudCwgc28gDQo+ID4gd2UgY2FuIGxlYXZlIHRoYXQgZnJvbSBhIGdlbmVyaWMgVUFQSS4N Cj4gDQo+IE9rLiBBbmQgaWYgdGhhdCBldmVudHVhbGx5IHR1cm5zIG91dCB0byBiZSBhIG1pc3Rh a2UsIGl0J3MgZWFzeSB0byANCj4gaW52ZW50IG1vcmUgcHJvcGVydGllcy4NCg0KSSBmZWVsIHRo YXQgaXMgd2hhdCB3b3VsZCBiZSByZXF1aXJlZC4gVGhpcyBpcyBqdXN0IGFub3RoZXIgaW5zdGFu Y2Ugb2Ygd2hhdCB3ZSBoYXZlIGF0IGNydGMgbGV2ZWwuDQoNCj4gPiA+ID4gKwkqIFRoaXMgY2Fu IGJlIHVzZWQgdG8gcGVyZm9ybSBhIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gbGlrZQ0KPiA+ID4g PiArCSogQlQyMDIwIHRvIEJUNzA5IG9yIEJUNjAxIGV0Yy4NCj4gPiA+ID4gKwkqIFRoaXMgYmxv Y2sgaXMgZ2VuZXJhbGx5IGtlcHQgYWZ0ZXIgdGhlIGRlZ2FtbWEgdW5pdCBzbyB0aGF0DQo+ID4g Pg0KPiA+ID4gTm90ICJnZW5lcmFsbHkiLiBJZiBibG9ja3MgY2FuIGNoYW5nZSBwbGFjZXMsIHRo ZW4gaXQgYmVjb21lcyANCj4gPiA+IGludHJhY3RhYmxlIGZvciBnZW5lcmljIHVzZXJzcGFjZSB0 byBwcm9ncmFtLg0KPiA+DQo+ID4gU3VyZSwgd2lsbCBkcm9wIHRoaXMgd29yZGluZyBoZXJlLiBC dXQgb25lIG9wZW4gd2lsbCBzdGlsbCByZW1haW4gDQo+ID4gZm9yIHVzZXJzcGFjZSwgYXMgdG8g aG93IGl0IGdldHMgdGhlIHBpcGVsaW5lIGR5bmFtaWNhbGx5IGZvciBhIHJlc3BlY3RpdmUgaGFy ZHdhcmUuDQo+ID4gQ3VycmVudGx5IHdlIGhhdmUgYXNzdW1lZCB0aGF0IHRoaXMgd291bGQgYmUg dGhlIGxvZ2ljYWwgZml4ZWQgb3JkZXIgDQo+ID4gb2YgaGFyZHdhcmUgdW5pdHMuDQo+IA0KPiBJ ZiB3ZSBjYW5ub3QgbW9kZWwgdGhlIGFic3RyYWN0IEtNUyBwaXBlbGluZSBhcyBhIGZpeGVkIG9y ZGVyIG9mIHVuaXRzIA0KPiAod2hlcmUgZWFjaCB1bml0IG1heSBleGlzdCBvciBub3QpLCB3ZSBu ZWVkIHRvIHRha2UgYSBmZXcgc3RlcHMgYmFjayANCj4gaGVyZSBhbmQgbG9vayBhdCB3aGF0IGRv IHdlIGFjdHVhbGx5IHdhbnQgdG8gZXhwb3NlLiBUaGF0IGlzIGEgbXVjaCANCj4gYmlnZ2VyIGRl c2lnbiBwcm9ibGVtIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgbm90IGV2ZW4gY29uc2lkZXJpbmcu DQoNCkkgdGhpbmsgbW9zdCBvZiB0aGUgaGFyZHdhcmUgdmVuZG9yIHBsYXRmb3JtcyBoYXZlIHRo aXMgcGlwZWxpbmUsIHNvIHdlIGNhbiBpbXBsZW1lbnQgdGhlIHByb3BlcnRpZXMgd2hpY2ggaW5j bHVkZSBhbGwgdGhlIHBvc3NpYmxlIGhhcmR3YXJlIGJsb2Nrcy4gSWYgY2VydGFpbiB1bml0cyBk b24ndCBleGlzdCwgdGhlIHJlc3BlY3RpdmUgcHJvcGVydGllcyBzaG91bGQgbm90IGJlIGV4cG9z ZWQgd2hpY2ggd2lsbCBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIHVzZXJzcGFjZS4NCg0KPiA+ID4g PiArCSogbGluZWFyIGRhdGEgY2FuIGJlIGZlZCB0byBpdCBmb3IgY29udmVyc2lvbi4NCj4gPiA+ ID4gKw0KPiA+ID4gPiArVUFQSSBOYW1lOiBQTEFORV9DVE0NCj4gPiA+ID4gK0Rlc2NyaXB0aW9u OiBCbG9iIHByb3BlcnR5IHdoaWNoIGFsbG93cyBhIHVzZXJzcGFjZSB0byBwcm92aWRlIA0KPiA+ ID4gPiArQ1RNDQo+IGNvZWZmaWNpZW50cw0KPiA+ID4gPiArCSAgICAgdG8gZG8gY29sb3Igc3Bh Y2UgY29udmVyc2lvbiBvciBhbnkgb3RoZXIgZW5oYW5jZW1lbnQgYnkgZG9pbmcgYQ0KPiA+ID4g PiArCSAgICAgbWF0cml4IG11bHRpcGxpY2F0aW9uIHVzaW5nIHRoZSBoL3cgQ1RNIHByb2Nlc3Np bmcgZW5naW5lDQo+ID4gPiA+ICsNCj4gPiA+DQo+ID4gPiBTcGVha2luZyBvZiBjb2xvciBzcGFj ZSBjb252ZXJzaW9ucywgd2Ugc2hvdWxkIHByb2JhYmx5IGRlZmluZSANCj4gPiA+IHdoYXQgaGFw cGVucyB0byBvdXQtb2YtcmFuZ2UgY29sb3IgdmFsdWVzLiBDb252ZXJ0aW5nIGNvbG9yIGludG8g DQo+ID4gPiBzbWFsbGVyIGdhbXV0IG9yIHNtYWxsZXIgZHluYW1pYyByYW5nZSBhbHdheXMgaGFz IHRoZSByaXNrIG9mIA0KPiA+ID4gZW5kaW5nIHVwIHdpdGggb3V0LW9mLXJhbmdlIHZhbHVlcy4g SSBzdXBwb3NlIHRob3NlIGdldCBzaW1wbHkgDQo+ID4gPiBjbGlwcGVkIGluZGVwZW5kZW50bHkg b24gZWFjaA0KPiBjb2xvciBjaGFubmVsLCByaWdodD8NCj4gPg0KPiA+IFdlIGhhdmUgc3RhbmRh cmQgbWF0cml4IHRvIGNvbnZlcnQgY29sb3JzcGFjZXMuIFRoaXMgaXMganVzdCB0aGUgDQo+ID4g cHJvcGVydHkgb2YgdGhlIGNvbG9yc3BhY2UsIEkgZ3Vlc3MgY2xpcHBpbmcgd2lsbCBiZSB0aGUg b25seSBvcHRpb24gDQo+ID4gaGVyZSAoaXJyZXNwZWN0aXZlIG9mIGhhcmR3YXJlKQ0KPiA+DQo+ ID4gPiBTdWNoIGNsaXBwaW5nIGNhbiBjaGFuZ2UgaHVlLCBzbyB1c2Vyc3BhY2Ugd291bGQgYmUg YmV0dGVyIGF2b2lkIA0KPiA+ID4gdHJpZ2dlcmluZyBjbGlwcGluZyBhdCBhbGwsIGJ1dCB3ZSBz dGlsbCBuZWVkIHRvIGtub3cgd2hhdCB3b3VsZCANCj4gPiA+IGhhcHBlbiB3aXRoIG91dC0NCj4g b2YtcmFuZ2UgdmFsdWVzLg0KPiA+ID4NCj4gPiA+IFdlIHdvdWxkIGFsc28gbmVlZCB0byBrbm93 IHdoZW4gY2xpcHBpbmcgd2lsbCBoYXBwZW4uIElmIEZQMTYNCj4gPiA+IChoYWxmLWZsb2F0KSBG QiBwcm9kdWNlcyBvdXQtb2YtcmFuZ2UgdmFsdWVzIGFuZCBkZWdhbW1hIHN0YWdlIGlzIA0KPiA+ ID4gbm90IHVzZWQsIHdpbGwgdGhlIENUTSBzZWUgb3JpZ2luYWwgb3IgY2xpcHBlZCB2YWx1ZXM/ IE9yIGlzIHRoYXQgDQo+ID4gPiBzb21ldGhpbmcgd2UgaGF2ZSB0byBkZWZpbmUgYXMgaGFyZHdh cmUtc3BlY2lmaWM/DQo+ID4gPg0KPiA+ID4gR2VuZXJpYyB1c2Vyc3BhY2Ugd2lsbCB0cnkgaGFy ZCB0byBhdm9pZCB0cmlnZ2VyaW5nIA0KPiA+ID4gaGFyZHdhcmUtc3BlY2lmaWMgYmVoYXZpb3Vy LCBzbyB5b3UgY2FuIGV4cGVjdCBzdWNoIGJlaGF2aW91ciB0byBnbyB1bnVzZWQuDQo+ID4NCj4g PiBIZXJlIGhhcmR3YXJlIHNob3VsZCBqdXN0IG9wZXJhdGUgb24gdGhlIG1hdHJpeCB2YWx1ZXMg cHJvZ3JhbW1lZC4NCj4gPiBUaGlzIHNob3VsZCBiZSB0aGUgbGltaXRhdGlvbiBvZiB0aGUgY29s b3Igc3BhY2UgY29udmVyc2lvbiANCj4gPiBvcGVyYXRpb24gYW5kIGhhcmR3YXJlIG1heSBub3Qg aGF2ZSBhbnkgcm9sZSB0byBwbGF5IGFwYXJ0IGZyb20ganVzdCANCj4gPiBob25vcmluZyB0aGUg bWF0cml4IHZhbHVlcyBhbmQgcHJvZHVjaW5nIHRoZSByZXN1bHRhbnQgb3V0cHV0Lg0KPiANCj4g SSdtIG5vdCB0YWxraW5nIGFib3V0IHRoZSBtYXRyaXggdmFsdWVzLiBJJ20gdGFsa2luZyBhYm91 dCB0aGUgdmFsdWVzIA0KPiBvcmlnaW5hdGluZyBmcm9tIHRoZSBGQiwgYXJlIHRoZXkgY2xpcHBl ZCBvciBub3QsIGJlZm9yZSBiZWluZyBwcm9jZXNzZWQgYnkgdGhlIG1hdHJpeD8NCj4gDQo+IFVz ZXJzcGFjZSBjb3VsZCB3YW50IHRvIHVzZSB0aGUgbWF0cml4IHRvIGJyaW5nIG91dC1vZi1yYW5n ZSBGQiB2YWx1ZXMgDQo+IGludG8gcmFuZ2UsIGJ1dCB0aGF0IHBsYW4gY2Fubm90IHdvcmsgaWYg dGhlIEZCIHZhbHVlcyBnZXQgY2xpcHBlZCBhbHJlYWR5IGJlZm9yZSB0aGUgbWF0cml4Lg0KPiAN Cj4gSSByZWZlcnJlZCB0byBGUDE2IGZvcm1hdCBleHBsaWNpdGx5IGJlY2F1c2UgdGhhdCBmb3Jt YXQgY2FuIGV4cHJlc3MgDQo+IHZhbHVlcyBvdXRzaWRlIG9mIHRoZSB1c3VhbCBbMC4wLCAxLjBd IHJhbmdlIGluIGEgZnJhbWVidWZmZXIuDQo+IA0KPiBPZiBjb3Vyc2UsIHRoZSBtYXRyaXggdmFs dWVzIHRoZW1zZWx2ZXMgaGF2ZSBzb21lIGxpbWl0cyB0b28sIGFuZCANCj4gdXNlcnNwYWNlIHNo b3VsZCBzb21laG93IGJlIGF3YXJlIG9mIHRoZW0uDQoNCkFGQUlLLCB0aGUgdmFsdWVzIHdpbGwg bm90IGJlIGNsaXBwZWQgYmVmb3JlIGJlaW5nIHN1Ym1pdHRlZCB0byBDU0MgYmxvY2tzLg0KQnV0 IHRoaXMgY2FuIGJlIGNvbmZpcm1lZCB0byBub3QgbGVhdmUgYW55IG1pc2NvbmNlcHRpb24gaGVy ZS4NCg0KPiA+DQo+ID4gPiA+ICsqIFBsYW5lIEdhbW1hIG9yIFBvc3QtQ3VydmUNCj4gPiA+ID4g KwkqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcGVyZm9ybSAyIG9wZXJhdGlvbnM6DQo+ID4gPiA+ICsJ CSogbm9uLWxpbmVyYWxpemUgdGhlIGZyYW1lYnVmZmVyIGRhdGEuIENhbiBiZSB1c2VkIGZvcg0K PiA+ID4gPiArCQkqIG5vbiBsaW5lYXIgYmxlbmRpbmcuIEl0IGNhbiBiZSBhIGdhbW1hIGN1cnZl IG9yIEVPVEYNCj4gPiA+ID4gKwkJKiBmb3IgSERSLg0KPiA+ID4gPiArCQkqIFBlcmZvcm0gVG9u ZSBNYXBwaW5nIG9wZXJhdGlvbi4gVGhpcyBpcyBhbiBvcGVyYXRpb24NCj4gPiA+ID4gKwkJKiBk b25lIHdoZW4gYmxlbmRpbmcgaXMgZG9uZSB3aXRoIEhEUiBhbmQgU0RSIGNvbnRlbnQuDQo+ID4g Pg0KPiA+ID4gSSBsaWtlIHRoaXMgd29yZGluZyBiZXR0ZXIgdGhhbiB0aGUgd29yZGluZyBmb3Ig cHJlLWN1cnZlOiAiY2FuIiwgDQo+ID4gPiBub3QgIndpbGwiLiBJdCBsZWF2ZXMgcm9vbSBmb3Ig Y3JlYXRpdmUgdXNlIG9mIHRoaXMgcHJvY2Vzc2luZyBibG9jay4NCj4gPg0KPiA+IE9rIHRoYW5r cywgd2lsbCB1cGRhdGUgcHJlLWN1cnZlIHNlY3Rpb24gYXMgd2VsbC4NCj4gPg0KPiA+ID4NCj4g PiA+IFRvbmUtbWFwcGluZyBpcyBuZWVkZWQgYWx3YXlzIHdoZW4gZHluYW1pYyByYW5nZSBkaWZm ZXJzLCBzbyBhbHNvIA0KPiA+ID4gZm9yIEhEUiB0byBIRFIsIG5vdCBqdXN0IFNEUiB0by9mcm9t IEhEUi4NCj4gPg0KPiA+IFllcyBjb3JyZWN0LCB3aWxsIHVwZGF0ZS4NCj4gPg0KPiA+ID4gPiAr DQo+ID4gPiA+ICtVQVBJIE5hbWU6IFBMQU5FX0dBTU1BX01PREUNCj4gPiA+ID4gK0Rlc2NyaXB0 aW9uOiBFbnVtIHByb3BlcnR5IHdpdGggdmFsdWVzIGFzIGJsb2JfaWQncyB3aGljaCBhZHZlcnRp emVzIHRoZQ0KPiA+ID4gPiArCSAgICBwb3NzaWJsZSBnYW1tYSBtb2RlcyBhbmQgbHV0IHJhbmdl cyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLg0KPiA+ID4gPiArCSAgICBUaGlzICBhbGxvd3Mg dXNlcnNwYWNlIHRvIHF1ZXJ5IGFuZCBnZXQgdGhlIHBsYW5lIGdhbW1hIGNvbG9yDQo+ID4gPiA+ ICsJICAgIGNhcHMgYW5kIGNob29zZSB0aGUgYXBwcm9wcmlhdGUgZ2FtbWEgbW9kZSBhbmQgY3Jl YXRlIGx1dCB2YWx1ZXMNCj4gPiA+ID4gKwkgICAgYWNjb3JkaW5nbHkuDQo+ID4gPiA+ICsNCj4g PiA+ID4gK1VBUEkgTmFtZTogUExBTkVfR0FNTUFfTFVUDQo+ID4gPiA+ICtEZXNjcmlwdGlvbjog QmxvYiBwcm9wZXJ0eSB3aGljaCBhbGxvd3MgYSB1c2Vyc3BhY2UgdG8gcHJvdmlkZSBMVVQgdmFs dWVzDQo+ID4gPiA+ICsJICAgICB0byBhcHBseSBnYW1tYSBjdXJ2ZSBvciBwZXJmb3JtIHRvbmUg bWFwcGluZyB1c2luZyB0aGUgaC93IHBsYW5lDQo+ID4gPiA+ICsJICAgICBnYW1tYSBwcm9jZXNz aW5nIGVuZ2luZSwgdGhlcmVieSBtYWtpbmcgdGhlIGNvbnRlbnQgYXMgbGluZWFyDQo+ID4gPiA+ ICsJICAgICBmb3IgZnVydGhlciBjb2xvciBwcm9jZXNzaW5nLiBVc2Vyc3BhY2UgZ2V0cyB0aGUg c2l6ZSBvZiBMVVQgYW5kDQo+ID4gPiA+ICsJICAgICBwcmVjaXNpb24gZXRjIGZyb20gUExBTkVf R0FNQV9NT0RFX1BST1BFUlRZDQo+ID4gPg0KPiA+ID4gVGhlIHNhbWUgY29tbWVudHMgaGVyZSBh cyB3aXRoIERFR0FNTUEuDQo+ID4NCj4gPiBOb3RlZC4NCj4gPg0KPiA+ID4gPiArDQo+ID4gPiA+ ICtUaGlzIGlzIHBhcnQgb2Ygb25lIHBsYW5lIGVuZ2luZS4gRGF0YSBmcm9tIG11bHRpcGxlIHBs YW5lcyANCj4gPiA+ID4gK3dpbGwgYmUgdGhlbiBmZWQgdG8gcGlwZSB3aGVyZSBpdCB3aWxsIGdl dCBibGVuZGVkLiBUaGVyZSBpcyBhIA0KPiA+ID4gPiArc2ltaWxhciBzZXQgb2YgcHJvcGVydGll cyBhdmFpbGFibGUgYXQgY3J0YyBsZXZlbCB3aGljaCBhY3RzIG9uIHRoaXMgYmxlbmRlZCBkYXRh Lg0KPiA+ID4gPiArDQo+ID4gPiA+ICtCZWxvdyBpcyBhIHNhbXBsZSB1c2VjYXNlOg0KPiA+ID4g PiArDQo+ID4gPiA+ICsgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU kCAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAg 4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQDQo+ID4gPiDilIzi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJANCj4gPiA+ID4gKyAg4pSC RkIxICAgICAgICAg4pSCICAgICAg4pSCRGVnYW1tYSBCbG9ja+KUgiAgICAg4pSCIENUTSBNYXRy aXggIOKUgiAgICAg4pSCIEdhbW1hIEJsb2NrIOKUgg0KPiA+ID4gPiArICDilIIgICAgICAgICAg ICDilJzilIDilIDilIDilIDilIDilrrilIJMaW5lYXJpemUtICAg4pSc4pSA4pSA4pSA4pSA4pa6 4pSCIEJUNzA5IHRvICAgIOKUnOKUgOKUgOKUgOKUgOKWuuKUgiBTRFIgdG8gSERSDQo+IOKUgg0K PiA+ID4gPiArICDilIJCVDcwOSBTRFIgICDilIIgICAgICDilIJCVDcwOSBpbnZlcnNl4pSCICAg ICDilIIgQlQyMDIwICAgICAg4pSCICAgICDilIIgVG9uZQ0KPiA+ID4gTWFwcGluZ+KUnOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUkA0KPiA+ID4gPiArICDilJTilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilJggICAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilJggICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUmA0KPiA+ID4g4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSYICAgICAgICDilIINCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIN Cj4gPiA+ID4gKyAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAg ICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAgICDilIzi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJANCj4gPiA+IOKUjOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAgICAg4pSCDQo+ID4gPiA+ ICsgIOKUgkZCMiAgICAgICAgIOKUgiAgICAgIOKUgkRlZ2FtbWEgQmxvY2vilIIgICAgIOKUgiBD VE0gTWF0cml4ICDilIIgICAgIOKUgiBHYW1tYSBCbG9jayDilIINCj4g4pSCDQo+ID4gPiA+ICsg IOKUgiAgICAgICAgICAgIOKUnOKUgOKUgOKUgOKUgOKUgOKWuuKUgkxpbmVhcml6ZS0gICDilJzi lIDilIDilIDilIDilrrilIIgQlQ2MDEgdG8gICAg4pSc4pSA4pSA4pSA4pSA4pa64pSCIFNEUiB0 byBIRFINCj4gPiA+IOKUnOKUgOKUgOKUgOKUgOKUgOKUkCAg4pSCDQo+ID4gPiA+ICsgIOKUgkJU NjAxIFNEUiAgIOKUgiAgICAgIOKUgkJUNjAxIGludmVyc2XilIIgICAgIOKUgiBCVDIwMjAgICAg ICDilIIgICAgIOKUgiBUb25lIE1hcHBpbmfilIIgICAgIOKUgg0KPiDilIINCj4gPiA+ID4gKyAg 4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICAg4pSU4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICDilJTilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilJgNCj4gPiA+IOKUlOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAg4pSCICDilIINCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICDilIIgIOKUgg0KPiA+ID4gPiArICDilIzilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilJAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilJAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUkA0KPiA+ID4g4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSQICAgICDilIIgIOKUgg0KPiA+ID4gPiArICDilIJGQjMgICAgICAgICDilIIgICAgICDi lIJEZWdhbW1hIEJsb2Nr4pSCICAgICDilIIgQ1RNIE1hdHJpeCAg4pSCICAgICDilIIgR2FtbWEg QmxvY2sg4pSCICAgICDilIINCj4g4pSCDQo+ID4gPiA+ICsgIOKUgiAgICAgICAgICAgIOKUnOKU gOKUgOKUgOKUgOKUgOKWuuKUgkxpbmVhcml6ZS0gICDilJzilIDilIDilIDilIDilrrilIIgTk9Q IChEYXRhIGlu4pSc4pSA4pSA4pSA4pSA4pa64pSCIE5PUCAoRGF0YQ0KPiA+ID4gaW7ilJzilIDi lIDilIDilJAg4pSCICDilIINCj4gPiA+ID4gKyAg4pSCQlQyMDIwIEhEUiAg4pSCICAgICAg4pSC SERSIE9FVEYgICAgIOKUgiAgICAg4pSCIEJUMjAyMCkgICAgIOKUgiAgICAg4pSCIEhEUikgICAg ICAgIOKUgiAgIOKUgiDilIIgIOKUgg0KPiA+ID4gPiArICDilJTilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilJggICAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilJggICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUmA0KPiA+ID4g4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSYICAg4pSCIOKUgiAg4pSCDQo+ID4gPg0KPiA+ID4gRU9URiwgbm90IE9FVEYsIHNpbmNlIGl0 IGlzIGNvbnZlcnRpbmcgRSB0byBPLCBlbGVjdHJpY2FsIHRvIG9wdGljYWwuDQo+ID4NCj4gPiBJ IHRoaW5rIG1lZGlhIGRlY29kZSB3b3VsZCBoYXZlIGdpdmVuIGEgRU9URiBhcHBsaWVkIGRhdGEg dG8gYmUgDQo+ID4gZGlyZWN0bHkgY29uc3VtZWQgYnkgZGlzcGxheSBzaW5rIChpbiBjYXNlIHdl IGhhdmUgY2hvc2VuIGEgZGlzcGxheSBwYXNzIHRocm91Z2gpLg0KPiBOb3Qgc3VyZSBoZXJlIHRo b3VnaCwgaXTigJlzIGEgYml0IGNvbmZ1c2luZy4NCj4gDQo+IEkgaG9wZSBJIG1hbmFnZWQgdG8g ZXhwbGFpbiB0aGlzIGVhcmxpZXIgaW4gdGhpcyBlbWFpbC4NCj4gDQo+IERpc3BsYXkgc2lua3Mg ImFsd2F5cyIgdXNlIG5vbi1saW5lYXJseSBlbmNvZGVkIHZhbHVlcywgYmVjYXVzZSBpdCANCj4g c2F2ZXMgYmFuZHdpZHRoIHdpdGhvdXQgbG9zaW5nIHZpc3VhbCBxdWFsaXR5LiBGb3IgdGhlIHNh bWUgcmVhc29uLCANCj4gaW1hZ2VzIHRlbmQgdG8gYmUgc3RvcmVkIHdpdGggbm9uLWxpbmVhciB2 YWx1ZSBlbmNvZGluZyB3aGVuZXZlciBwb3NzaWJsZS4NCg0KWWVhaCwgdGhhbmtzIGZvciB0aGUg ZXhwbGFuYXRpb24gYW5kIHVzZWZ1bCBwb2ludGVycy4gV2lsbCB3b3JrIG9uIGl0IHRvIHB1dCB0 aGUgcmlnaHQgZXhwZWN0YXRpb25zIGluIHRoZSBkb2N1bWVudC4NCg0KVGhhbmtzIFBla2thIGZv ciB0aGUgdmFsdWFibGUgZmVlZGJhY2suDQoNClJlZ2FyZHMsDQpVbWEgU2hhbmthcg0KPiANCj4g VGhhbmtzLA0KPiBwcQ0KPiANCj4gPiA+ID4gKw0KPiA+ID4gPiArIOKUgiDilIIgIOKUgg0KPiA+ ID4gPiArDQo+ID4gPiA+ICsg4pSCIOKUgiAg4pSCDQo+ID4gPiA+ICsNCj4gPiA+ID4gK+KUgiDi lIIgIOKUgg0KPiA+ID4gPg0KPiA+ID4NCj4gK+KUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gA0KPiA+ID4g4pSA4pSADQo+ID4gPiA+ICvilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilLTilIDilLTilIDilIDilJgNCj4gPiA+ID4gK+KUgg0KPiA+ID4gPiAr4pSCIOKUjOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAgIOKUjOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkA0KPiA+ID4gPiAr4pSCIOKUgiBDUlRDIERl Z2FtbWHilIIgICAgICDilIIgQ1JUQyBDVE0gICAg4pSCICAgICAg4pSCIENSVEMgR2FtbWEgICAg 4pSCDQo+ID4gPiA+ICvilJTilIDilKQgVXNlIHRvIG1ha2Ug4pSc4pSA4pSA4pSA4pSA4pSA4pa6 4pSCIFVzZSBmb3IgYW55IOKUnOKUgOKUgOKUgOKUgOKUgOKWuuKUgiBVc2UgZm9yIFRvbmUgDQo+ ID4gPiA+ICvilJzilIDilIDilIDilIDilIDilroNCj4gPiA+IFRPIFBvcnQNCj4gPiA+ID4gKyAg 4pSCIGRhdGEgbGluZWFyIOKUgiAgICAgIOKUgiBDb2xvciBTcGFjZSDilIIgICAgICDilIIgTWFw cGluZy9hcHBseSDilIINCj4gPiA+ID4gKyAg4pSCIGFmdGVyIGJsZW5kIOKUgiAgICAgIOKUgiBD b252ZXJzaW9uICDilIIgICAgICDilIIgdHJhbnNmZXIgZnVuYyDilIINCj4gPiA+ID4gKyAg4pSU 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICAg4pSU4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYICAgICAg4pSU4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYDQo+ID4gPg0KPiA+ID4gQmxlbmRp bmcgZG9lcyBub3QgY2hhbmdlIHdoZXRoZXIgdGhlIGRhdGEgaXMgbGluZWFyIG9yIG5vdC4gSSAN Cj4gPiA+IHN1cHBvc2UgaW4gdGhpcyBleGFtcGxlLCBDUlRDIGRlZ2FtbWEgYW5kIENUTSB3b3Vs ZCBiZSANCj4gPiA+IHBhc3N0aHJvdWdoLCBhbmQgZ2FtbWEgd291bGQgYmUgdGhlIGludmVyc2Ug ZGlzcGxheSBFT1RGIGZvciANCj4gPiA+IGVuY29kaW5nIGNvbG9yIHZhbHVlcyBpbnRvDQo+IHdo YXQgdGhlIG1vbml0b3IgZXhwZWN0cy4NCj4gPg0KPiA+IFllYWgsIHdpbGwgdXBkYXRlIHRoaXMg dG8gbWFrZSBpdCBjbGVhci4NCj4gPg0KPiA+ID4gPiArDQo+ID4gPiA+ICsNCj4gPiA+ID4gK1Ro aXMgcGF0Y2ggc2VyaWVzIGFkZHMgcHJvcGVydGllcyBmb3IgcGxhbmUgY29sb3IgZmVhdHVyZXMu IEl0IA0KPiA+ID4gPiArYWRkcyBwcm9wZXJ0aWVzIGZvciBkZWdhbW1hIHVzZWQgdG8gbGluZWFy aXplIGRhdGEgYW5kIENTQyB1c2VkIA0KPiA+ID4gPiArZm9yIGdhbXV0IGNvbnZlcnNpb24uIEl0 IGFsc28gaW5jbHVkZXMgR2FtbWEgc3VwcG9ydCB1c2VkIHRvIA0KPiA+ID4gPiArYWdhaW4gbm9u LWxpbmVhcml6ZSBkYXRhIGFzIHBlciBwYW5lbCBzdXBwb3J0ZWQgY29sb3Igc3BhY2UuDQo+ID4g PiA+ICtUaGVzZSBjYW4gYmUgdXRpbGl6ZSBieSB1c2VyIHNwYWNlIHRvIGNvbnZlcnQgcGxhbmVz IGZyb20gb25lIA0KPiA+ID4gPiArZm9ybWF0IHRvIGFub3RoZXIsIG9uZSBjb2xvciBzcGFjZSB0 byBhbm90aGVyIGV0Yy4NCj4gPiA+DQo+ID4gPiBGV0lXLCB0aGlzIGlzIGV4YWN0bHkgdGhlIHN0 cnVjdHVyZSBJIGhhdmUgYXNzdW1lZCBpbiB0aGUgV2VzdG9uIENNJkhEUiB3b3JrLg0KPiA+DQo+ ID4gVGhpcyBpcyBncmVhdCB0byBoZWFyIHRoYXQgd2UgYXJlIGFsaWduZWQgd3J0IGhvdyB0aGUg cGlwZWxpbmUgc2hvdWxkIHdvcmsuDQo+ID4NCj4gPiBUaGFua3MgUGVra2EgZm9yIHRha2luZyB0 aW1lIG91dCBhbmQgcHJvdmlkaW5nIHRoZSBmZWVkYmFjay4NCj4gPg0KPiA+IEBoYXJyeS53ZW50 bGFuZEBhbWQuY29tIFdlIGNhbiB3b3JrIHRvZ2V0aGVyIGFuZCBidWlsZCBvdXIgZGVzaWduIHRv IA0KPiA+IGFjY29tbW9kYXRlIGJvdGggSW50ZWwgYW5kIEFNRCdzIGhhcmR3YXJlIG5lZWRzLiBU aGlzIHdpbGwgYWxzbyBtYWtlIA0KPiA+IHRoaW5ncyBnZW5lcmljIGVub3VnaCBmb3IgYW55IG90 aGVyIGhhcmR3YXJlIHZlbmRvciBhcyB3ZWxsLg0KPiA+DQo+ID4gVGhhbmtzICYgUmVnYXJkcywN Cj4gPiBVbWEgU2hhbmthcg0KPiA+DQo+ID4gPiA+ICsNCj4gPiA+ID4gK1VzZXJzcGFjZSBjYW4g dGFrZSBzbWFydCBibGVuZGluZyBkZWNpc2lvbnMgYW5kIHV0aWxpemUgdGhlc2UgDQo+ID4gPiA+ ICtoYXJkd2FyZSBzdXBwb3J0ZWQgcGxhbmUgY29sb3IgZmVhdHVyZXMgdG8gZ2V0IGFjY3VyYXRl IGNvbG9yIA0KPiA+ID4gPiArcHJvZmlsZS4gVGhlIHNhbWUgY2FuIGhlbHAgaW4gY29uc2lzdGVu dCBjb2xvciBxdWFsaXR5IGZyb20gDQo+ID4gPiA+ICtzb3VyY2UgdG8gcGFuZWwgdGFraW5nIGFk dmFudGFnZSBvZiBhZHZhbmNlZCBjb2xvciBmZWF0dXJlcyBpbiBoYXJkd2FyZS4NCj4gPiA+ID4g Kw0KPiA+ID4gPiArVGhlc2UgcGF0Y2hlcyBhZGQgdGhlIHByb3BlcnR5IGludGVyZmFjZXMgYW5k IGVuYWJsZSBoZWxwZXIgZnVuY3Rpb25zLg0KPiA+ID4gPiArVGhpcyBzZXJpZXMgYWRkcyBJbnRl bCdzIFhFX0xQRCBodyBzcGVjaWZpYyBwbGFuZSBnYW1tYSBmZWF0dXJlLg0KPiA+ID4gPiArV2Ug Y2FuIGJ1aWxkIHVwIGFuZCBhZGQgb3RoZXIgcGxhdGZvcm0vaGFyZHdhcmUgc3BlY2lmaWMgDQo+ ID4gPiA+ICtpbXBsZW1lbnRhdGlvbiBvbiB0b3Agb2YgdGhpcyBzZXJpZXMuDQo+ID4gPiA+ICsN Cj4gPiA+ID4gK0NyZWRpdHM6IFNwZWNpYWwgbWVudGlvbiBhbmQgY3JlZGl0cyB0byBWaWxsZSBT eXJqYWxhIGZvciANCj4gPiA+ID4gK2NvbWluZyB1cCB3aXRoIGEgZGVzaWduIGZvciB0aGlzIGZl YXR1cmUgYW5kIGlucHV0cy4gVGhpcyANCj4gPiA+ID4gK3NlcmllcyBpcyBiYXNlZCBvbiBoaXMg b3JpZ2luYWwgZGVzaWduIGFuZCBpZGVhLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBUaGFua3MsDQo+ ID4gPiBwcQ0KDQo=