From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v4] displif: add ABI for para-virtual display Date: Tue, 4 Apr 2017 15:38:24 -0400 Message-ID: <20170404193824.GA29986@char.us.oracle.com> References: <1490000192-17467-1-git-send-email-andr2000@gmail.com> <1490000192-17467-2-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cvUHs-0001lK-Mx for xen-devel@lists.xenproject.org; Tue, 04 Apr 2017 19:38:44 +0000 Content-Disposition: inline In-Reply-To: <1490000192-17467-2-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Andrushchenko Cc: lars.kurth@citrix.com, Oleksandr Andrushchenko , vlad.babchuk@gmail.com, julien.grall@arm.com, andrii.anisov@gmail.com, olekstysh@gmail.com, al1img@gmail.com, Oleksandr Grytsov , xen-devel@lists.xenproject.org, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org CkhleSEKCkkgb25seSBoYWQgbWlub3IgY29tbWVudHMgLSBhbmQgaWYgeW91IGFyZSBPSyB3aXRo IHRoZW0gSSBjYW4gYWxzbwpwdXQgdGhlbSBpbiB0aGUgcGF0Y2ggd2hlbiBjaGVja2luZyB0aGVt IGluIChvciBpZiB5b3Ugd2FudCB5b3UgY2FuCnJlcG9zdCBpdCByaWdodCBhd2F5IGFuZCBJIHdp bGwgY2hlY2sgaW4gdGhlIG5ldyB2ZXJzaW9uKS4KCj4gCj4gLS0tCj4gQ2hhbmdlcyBzaW5jZSB2 MzoKPiAgKiBhZGQgY2xhcmlmaWNhdGlvbiBvbiBidWZmZXIncyBzaXplL2RlcHRoL2Zvcm1hdCBh bmQKPiAgICBjb25uZWN0b3IncyByZXNvbHV0aW9uCj4gICogbW92ZSBiZV9hbGxvYyBmZWF0dXJl IGludG8gZG9tYWluJ3MgY29uZmlndXJhdGlvbgo+ICAgIHRvIGFsbG93IG1vcmUgdXNlLWNhc2Vz IGFuZCBmcmVlZG9tIChlLmcuIGZvciAxOjEKPiAgICBtYXBwZWQgZG9tYWlucyB0aGVyZSBtYXkg YmUgbm8gbmVlZCB0byByZXF1ZXN0IGJhY2tlbmQKPiAgICB0byBhbGxvY2F0ZSBidWZmZXJzLCB3 aGlsZSBmb3IgdGhlIHJlc3QgaXQgbWF5IG1ha2UgbW9yZQo+ICAgIHNlbnNlKQo+ICAqIHJlbmFt ZSBYZW5TdG9yZSBlbnRyaWVzOgo+ICAgICAgY3RybC1yaW5nLXJlZiAtPiByZXEtcmluZy1yZWYK PiAgICAgIGN0cmwtY2hhbm5lbCAtPiByZXEtZXZlbnQtY2hhbm5lbAo+ICAgICAgZXZlbnQtcmlu Zy1yZWYgLT4gZXZ0LXJpbmctcmVmCj4gICAgICBldmVudC1jaGFubmVsIC0+IGV2dC1ldmVudC1j aGFubmVsCj4gICogaGF2ZSAyIHNlcGFyYXRlIHNlY3Rpb25zIGZvciByZXEvcmVzcCBhbmQgZXZ0 IHRyYW5zcG9ydAo+ICAgIHBhcmFtZXRlcnMKPiAgKiBmaXggYW5kIGV4dGVuZCByZWNvdmVyeSBm bG93IGRlc2NyaXB0aW9uCj4gICogcmVzZXJ2ZSByZXF1ZXN0IGNvZGVzIGZvciBmdXR1cmUgZmJp ZiBpbnRlZ3JhdGlvbiBpZiBuZWVkIGJlCj4gICAgKHJlcXVlc3QgY29kZXMgWzA7IDE1XSBhcmUg cmVzZXJ2ZWQpCj4gICogZXJyb3Igb24gYXR0ZW1wdCB0byBjcmVhdGUgbXVsdGlwbGUgYnVmZmVy cyB3aXRoIHNhbWUgY29va2llKHMpCj4gICogY2xhcmlmaWNhdGlvbiBvZiBwYWdlIGRpcmVjdG9y eSB1c2FnZSBmb3IgYmVfYWxsb2MgZmVhdHVyZQo+ICAqIGFkZCBlZGl0b3IncyBibG9jawo+IAo+ IENoYW5nZXMgc2luY2UgdjI6Cj4gICogdXBkYXRlZCBYZW5TdG9yZSBjb25maWd1cmF0aW9uIHRl bXBsYXRlL3BhdHRlcm4KPiAgKiBhZGRlZCAiUmVjb3ZlcnkgZmxvdyIgdG8gc3RhdGUgZGlhZ3Jh bSBkZXNjcmlwdGlvbgo+ICAqIHJlbmFtZWQgZ3JlZl9kaXJlY3Rvcnlfc3RhcnQgdG8gZ3JlZl9k aXJlY3RvcnkKPiAgKiBhZGRlZCBtaXNzaW5nICJ2ZXJzaW9ucyIgYW5kICJ2ZXJzaW9uIiBzdHJp bmcgY29uc3RhbnRzCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAgKiBmaXhlZCB4ZW5kaXNwbF9l dmVudF9wYWdlIHBhZGRpbmcgc2l6ZQo+ICAqIGFkZGVkIHZlcnNpb25pbmcgc3VwcG9ydAo+ICAq IGV4cGxpY2l0bHkgZGVmaW5lIHZhbHVlIHR5cGVzIGZvciBYZW5TdG9yZSBmaWVsZHMKPiAgKiB0 ZXh0IGRlY29yYXRpb24gcmUtd29yawo+ICAqIGFkZGVkIG9mZnNldHMgdG8gQVNDSUkgYm94IG5v dGF0aW9uCj4gCj4gQ2hhbmdlcyBzaW5jZSBpbml0aWFsOgo+ICAqIERSTSBjaGFuZ2VkIHRvIERJ U1BMLCBwcm90b2NvbCBtYWRlIGdlbmVyaWMKPiAgKiBtYWpvciByZS13b3JrIGFkZHJlc3Npbmcg aXNzdWVzIHJhaXNlZCBmb3Igc25kaWYKPiAKPiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgR3J5 dHNvdiA8b2xla3NhbmRyX2dyeXRzb3ZAZXBhbS5jb20+Cj4gU2lnbmVkLW9mZi1ieTogT2xla3Nh bmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+IC0t LQo+ICB4ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oIHwgODQ3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgMSBmaWxlIGNoYW5nZWQsIDg0NyBpbnNlcnRp b25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxp Zi5oCj4gCj4gZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9kaXNwbGlmLmggYi94 ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwMDAwMDAuLmFjNTVjNGZlOGJiZQo+IC0tLSAvZGV2L251bGwKPiArKysgYi94 ZW4vaW5jbHVkZS9wdWJsaWMvaW8vZGlzcGxpZi5oCj4gQEAgLTAsMCArMSw4NDcgQEAKPiArLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgo+ICsgKiBkaXNwbGlmLmgKPiArICoKPiArICogVW5pZmllZCBk aXNwbGF5IGRldmljZSBJL08gaW50ZXJmYWNlIGZvciBYZW4gZ3Vlc3QgT1Nlcy4KPiArICoKPiAr ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEgY29weQo+ICsgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8KPiArICogZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbiB0aGUKPiArICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCj4gKyAqIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl IGlzCj4gKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg VEhFCj4gKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIENvcHlyaWdo dCAoQykgMjAxNi0yMDE3IEVQQU0gU3lzdGVtcyBJbmMuCj4gKyAqCj4gKyAqIEF1dGhvcnM6IE9s ZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4K PiArICogICAgICAgICAgT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtzYW5kcl9ncnl0c292QGVwYW0u Y29tPgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX19YRU5fUFVCTElDX0lPX0RJU1BMSUZfSF9fCj4g KyNkZWZpbmUgX19YRU5fUFVCTElDX0lPX0RJU1BMSUZfSF9fCj4gKwo+ICsjaW5jbHVkZSAicmlu Zy5oIgo+ICsjaW5jbHVkZSAiLi4vZ3JhbnRfdGFibGUuaCIKPiArCj4gKy8qCj4gKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKPiArICogICAgICAgICAgICAgICAgICBNYWluIGZlYXR1cmVzIHByb3Zp ZGVkIGJ5IHRoZSBwcm90b2NvbAo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIFRoaXMg cHJvdG9jb2wgYWltcyB0byBwcm92aWRlIGEgdW5pZmllZCBwcm90b2NvbCB3aGljaCBmaXRzIG1v cmUKPiArICogc29waGlzdGljYXRlZCB1c2UtY2FzZXMgdGhhbiBhIGZyYW1lYnVmZmVyIGRldmlj ZSBjYW4gaGFuZGxlLiBBdCB0aGUKPiArICogbW9tZW50IGJhc2ljIGZ1bmN0aW9uYWxpdHkgaXMg c3VwcG9ydGVkIHdpdGggdGhlIGludGVudGlvbiB0byBiZSBleHRlbmRlZDoKPiArICogIG8gbXVs dGlwbGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkL2Rlc3Ryb3llZCBmcmFtZWJ1ZmZlcnMKPiArICog IG8gYnVmZmVycyBvZiBhcmJpdHJhcnkgc2l6ZXMKPiArICogIG8gYnVmZmVyIGFsbG9jYXRpb24g YXQgZWl0aGVyIGJhY2sgb3IgZnJvbnQgZW5kCj4gKyAqICBvIGJldHRlciBjb25maWd1cmF0aW9u IG9wdGlvbnMgaW5jbHVkaW5nIG11bHRpcGxlIGRpc3BsYXkgc3VwcG9ydAo+ICsgKgo+ICsgKiBO b3RlOiBleGlzdGluZyBmYmlmIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggZGlzcGxpZiBydW5u aW5nIGF0IHRoZQo+ICsgKiBzYW1lIHRpbWUsIGUuZy4gb24gTGludXggb25lIHByb3ZpZGVzIGZy YW1lYnVmZmVyIGFuZCBhbm90aGVyIERSTS9LTVMKPiArICoKPiArICogTm90ZTogZGlzcGxheSBy ZXNvbHV0aW9uIChYZW5TdG9yZSdzICJyZXNvbHV0aW9uIiBwcm9wZXJ0eSkgZGVmaW5lcwo+ICsg KiB2aXNpYmxlIGFyZWEgb2YgdGhlIHZpcnR1YWwgZGlzcGxheS4gQXQgdGhlIHNhbWUgdGltZSBy ZXNvbHV0aW9uIG9mCj4gKyAqIHRoZSBkaXNwbGF5IGFuZCBmcmFtZSBidWZmZXJzIG1heSBkaWZm ZXI6IGJ1ZmZlcnMgY2FuIGJlIHNtYWxsZXIsIGVxdWFsCj4gKyAqIG9yIGJpZ2dlciB0aGFuIHRo ZSB2aXNpYmxlIGFyZWEuIFRoaXMgaXMgdG8gZW5hYmxlIHVzZS1jYXNlcywgd2hlcmUgYmFja2Vu ZAo+ICsgKiBtYXkgZG8gc29tZSBwb3N0LXByb2Nlc3Npbmcgb2YgdGhlIGRpc3BsYXkgYW5kIGZy YW1lIGJ1ZmZlcnMgc3VwcGxpZWQsCj4gKyAqIGUuZy4gdGhvc2UgYnVmZmVycyBjYW4gYmUganVz dCBhIHBhcnQgb2YgdGhlIGZpbmFsIGNvbXBvc2l0aW9uLgo+ICsgKgo+ICsgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uIG9mIGltcHJv dmVtZW50cwo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIEZ1dHVyZSBleHRlbnNpb25z IHRvIHRoZSBleGlzdGluZyBwcm90b2NvbCBtYXkgaW5jbHVkZToKPiArICogIG8gZGlzcGxheS9j b25uZWN0b3IgY2xvbmluZwo+ICsgKiAgbyBhbGxvY2F0aW9uIG9mIG9iamVjdHMgb3RoZXIgdGhh biBkaXNwbGF5IGJ1ZmZlcnMKPiArICogIG8gcGxhbmUvb3ZlcmxheSBzdXBwb3J0Cj4gKyAqICBv IHNjYWxpbmcgc3VwcG9ydAo+ICsgKiAgbyByb3RhdGlvbiBzdXBwb3J0Cj4gKyAqCj4gKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKPiArICogICAgICAgICAgICAgICAgICBGZWF0dXJlIGFuZCBQYXJh bWV0ZXIgTmVnb3RpYXRpb24KPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKgo+ICsgKiBG cm9udC0+YmFjayBub3RpZmljYXRpb25zOiB3aGVuIGVucXVldWluZyBhIG5ldyByZXF1ZXN0LCBz ZW5kaW5nIGEKPiArICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHhl bmRpc3BsX3JlcSAoaS5lLiwgdGhlIGdlbmVyaWMKPiArICogaG9sZC1vZmYgbWVjaGFuaXNtIHBy b3ZpZGVkIGJ5IHRoZSByaW5nIG1hY3JvcykuIEJhY2tlbmRzIG11c3Qgc2V0Cj4gKyAqIHhlbmRp c3BsX3JlcSBhcHByb3ByaWF0ZWx5IChlLmcuLCB1c2luZyBSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9S RVFVRVNUUygpKS4KPiArICoKPiArICogQmFjay0+ZnJvbnQgbm90aWZpY2F0aW9uczogd2hlbiBl bnF1ZXVpbmcgYSBuZXcgcmVzcG9uc2UsIHNlbmRpbmcgYQo+ICsgKiBub3RpZmljYXRpb24gY2Fu IGJlIG1hZGUgY29uZGl0aW9uYWwgb24geGVuZGlzcGxfcmVzcCAoaS5lLiwgdGhlIGdlbmVyaWMK PiArICogaG9sZC1vZmYgbWVjaGFuaXNtIHByb3ZpZGVkIGJ5IHRoZSByaW5nIG1hY3JvcykuIEZy b250ZW5kcyBtdXN0IHNldAo+ICsgKiB4ZW5kaXNwbF9yZXNwIGFwcHJvcHJpYXRlbHkgKGUuZy4s IHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFU1BPTlNFUygpKS4KPiArICoKPiArICogVGhl IHR3byBoYWx2ZXMgb2YgYSBwYXJhLXZpcnR1YWwgZGlzcGxheSBkcml2ZXIgdXRpbGl6ZSBub2Rl cyB3aXRoaW4KPiArICogWGVuU3RvcmUgdG8gY29tbXVuaWNhdGUgY2FwYWJpbGl0aWVzIGFuZCB0 byBuZWdvdGlhdGUgb3BlcmF0aW5nIHBhcmFtZXRlcnMuCj4gKyAqIFRoaXMgc2VjdGlvbiBlbnVt ZXJhdGVzIHRoZXNlIG5vZGVzIHdoaWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBh bmQKPiArICogYmFja2VuZCBwb3J0aW9ucyBvZiBYZW5TdG9yZSwgZm9sbG93aW5nIHRoZSBYZW5C dXMgY29udmVudGlvbi4KPiArICoKPiArICogQWxsIGRhdGEgaW4gWGVuU3RvcmUgaXMgc3RvcmVk IGFzIHN0cmluZ3MuIE5vZGVzIHNwZWNpZnlpbmcgbnVtZXJpYwo+ICsgKiB2YWx1ZXMgYXJlIGVu Y29kZWQgaW4gZGVjaW1hbC4gSW50ZWdlciB2YWx1ZSByYW5nZXMgbGlzdGVkIGJlbG93IGFyZQo+ ICsgKiBleHByZXNzZWQgYXMgZml4ZWQgc2l6ZWQgaW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIHN0 b3JpbmcgdGhlIGNvbnZlcnNpb24KPiArICogb2YgYSBwcm9wZXJseSBmb3JtYXRlZCBub2RlIHN0 cmluZywgd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLgo+ICsgKgo+ICsgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgRXhhbXBsZSBjb25maWd1cmF0 aW9uCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICoKPiArICogTm90ZTogZGVwZW5kaW5n IG9uIHRoZSB1c2UtY2FzZSBiYWNrZW5kIGNhbiBleHBvc2UgbW9yZSBkaXNwbGF5IGNvbm5lY3Rv cnMKPiArICogdGhhbiB0aGUgdW5kZXJseWluZyBIVyBwaHlzaWNhbGx5IGhhcyBieSBlbXBsb3lp bmcgU1cgZ3JhcGhpY3MgY29tcG9zaXRvcnMKPiArICoKPiArICogVGhpcyBpcyBhbiBleGFtcGxl IG9mIGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvbmZpZ3VyYXRpb246Cj4gKyAqCj4gKyAqLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJhY2tlbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiArICoKPiArICogL2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3Bs LzEvMC9mcm9udGVuZC1pZCA9ICIxIgo+ICsgKiAvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92ZGlz cGwvMS8wL2Zyb250ZW5kID0gIi9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAiCj4gKyAq IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZkaXNwbC8xLzAvc3RhdGUgPSAiNCIKPiArICogL2xv Y2FsL2RvbWFpbi8wL2JhY2tlbmQvdmRpc3BsLzEvMC92ZXJzaW9ucyA9ICIxLDIiCj4gKyAqCj4g KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZyb250ZW5kIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICogL2xvY2FsL2RvbWFpbi8xL2Rldmlj ZS92ZGlzcGwvMC9iYWNrZW5kLWlkID0gIjAiCj4gKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2Uv dmRpc3BsLzAvYmFja2VuZCA9ICIvbG9jYWwvZG9tYWluLzAvYmFja2VuZC92ZGlzcGwvMS8wIgo+ ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wL3N0YXRlID0gIjQiCj4gKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvdmVyc2lvbiA9ICIxIgo+ICsgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wL2JlX2FsbG9jID0gIjEiCgoKVGhpcyBjb3VsZCBiZSBj aGFuZ2VkIHRvICctJy4gQXMgaW4gImJlLWFsbG9jIiBpbnN0ZWFkIG9mICJiZV9hbGxvYyIKPiAr ICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDb25uZWN0b3IgMCBjb25maWd1cmF0 aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsgKgo+ICsgKiAvbG9jYWwvZG9tYWluLzEv ZGV2aWNlL3ZkaXNwbC8wLzAvcmVzb2x1dGlvbiA9ICIxOTIweDEwODAiCj4gKyAqIC9sb2NhbC9k b21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMC9yZXEtcmluZy1yZWYgPSAiMjgzMiIKPiArICogL2xv Y2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8wL3JlcS1ldmVudC1jaGFubmVsID0gIjE1Igo+ ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzAvZXZ0LXJpbmctcmVmID0gIjM4 NyIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8wL2V2dC1ldmVudC1jaGFu bmVsID0gIjE2Igo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbm5lY3Rv ciAxIGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMS9yZXNvbHV0aW9uID0gIjgwMHg2MDAiCj4g KyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdmRpc3BsLzAvMS9yZXEtcmluZy1yZWYgPSAiMjgz MyIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8xL3JlcS1ldmVudC1jaGFu bmVsID0gIjE3Igo+ICsgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZkaXNwbC8wLzEvZXZ0LXJp bmctcmVmID0gIjM4OCIKPiArICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92ZGlzcGwvMC8xL2V2 dC1ldmVudC1jaGFubmVsID0gIjE4Igo+ICsgKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4g KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tlbmQgWGVuQnVzIE5vZGVzCj4gKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSBQcm90b2NvbCB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICsg Kgo+ICsgKiB2ZXJzaW9ucwo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8c3RyaW5nPgo+ICsg Kgo+ICsgKiAgICAgIExpc3Qgb2YgWEVORElTUExfTElTVF9TRVBBUkFUT1Igc2VwYXJhdGVkIHBy b3RvY29sIHZlcnNpb25zIHN1cHBvcnRlZAo+ICsgKiAgICAgIGJ5IHRoZSBiYWNrZW5kLiBGb3Ig ZXhhbXBsZSAiMSwyLDMiLgo+ICsgKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250ZW5kIFhlbkJ1cyBOb2Rlcwo+ICsgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCj4gKyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gQWRkcmVzc2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiAr ICogZG9tLWlkCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MTZfdD4KPiArICoKPiAr ICogICAgICBEb21haW4gaWRlbnRpZmllci4KPiArICoKPiArICogZGV2LWlkCj4gKyAqICAgICAg VmFsdWVzOiAgICAgICAgIDx1aW50MTZfdD4KPiArICoKPiArICogICAgICBEZXZpY2UgaWRlbnRp Zmllci4KPiArICoKPiArICogY29ubi1pZHgKPiArICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVp bnQ4X3Q+Cj4gKyAqCj4gKyAqICAgICAgWmVybyBiYXNlZCBjb250aWdvdXMgaW5kZXggb2YgdGhl IGNvbm5lY3Rvci4KPiArICogICAgICAvbG9jYWwvZG9tYWluLzxkb20taWQ+L2RldmljZS92ZGlz cGwvPGRldi1pZD4vPGNvbm4taWR4Pi8uLi4KPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSBQcm90b2NvbCB2ZXJzaW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+ICsgKgo+ICsgKiB2ZXJzaW9uCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+ Cj4gKyAqCj4gKyAqICAgICAgUHJvdG9jb2wgdmVyc2lvbiwgY2hvc2VuIGFtb25nIHRoZSBvbmVz IHN1cHBvcnRlZCBieSB0aGUgYmFja2VuZC4KPiArICoKPiArICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIEJhY2tlbmQgYnVmZmVyIGFsbG9jYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+ICsgKgo+ICsgKiBiZV9hbGxvYwo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICAiMCIsICIx Igo+ICsgKgo+ICsgKiAgICAgIElmIHZhbHVlIGlzIHNldCB0byAiMSIsIHRoZW4gYmFja2VuZCBj YW4gYmUgYSBidWZmZXIgcHJvdmlkZXIvYWxsb2NhdG9yCj4gKyAqICAgICAgZm9yIHRoaXMgZG9t YWluIGR1cmluZyBYRU5ESVNQTF9PUF9EQlVGX0NSRUFURSBvcGVyYXRpb24gKHNlZSBiZWxvdwo+ ICsgKiAgICAgIGZvciBuZWdvdGlhdGlvbikuCj4gKyAqICAgICAgSWYgdmFsdWUgaXMgbm90ICIx IiBvciBvbWl0dGVkIGZyb250ZW5kIG11c3QgYWxsb2NhdGUgYnVmZmVycyBpdHNlbGYuCj4gKyAq Cj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIHNldHRpbmdzIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICogcmVzb2x1dGlvbgo+ICsgKiAg ICAgIFZhbHVlczogICAgICAgICA8d2lkdGgsIHVpbnQzMl90Png8aGVpZ2h0LCB1aW50MzJfdD4K PiArICoKPiArICogICAgICBXaWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBjb25uZWN0b3IgaW4gcGl4 ZWxzIHNlcGFyYXRlZCBieQo+ICsgKiAgICAgIFhFTkRJU1BMX1JFU09MVVRJT05fU0VQQVJBVE9S LiBUaGlzIGRlZmluZXMgdmlzaWJsZSBhcmVhIG9mIHRoZQo+ICsgKiAgICAgIGRpc3BsYXkuCj4g KyAqCj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tIENvbm5lY3RvciBSZXF1ZXN0IFRyYW5zcG9ydCBQ YXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICogVGhpcyBjb21tdW5pY2F0 aW9uIHBhdGggaXMgdXNlZCB0byBkZWxpdmVyIHJlcXVlc3RzIGZyb20gZnJvbnRlbmQgdG8gYmFj a2VuZAo+ICsgKiBhbmQgZ2V0IHRoZSBjb3JyZXNwb25kaW5nIHJlc3BvbnNlcyBmcm9tIGJhY2tl bmQgdG8gZnJvbnRlbmQsCj4gKyAqIHNldCB1cCBwZXIgY29ubmVjdG9yLgo+ICsgKgo+ICsgKiBy ZXEtZXZlbnQtY2hhbm5lbAo+ICsgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDMyX3Q+Cj4g KyAqCj4gKyAqICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIFhlbiBjb25uZWN0b3IncyBjb250 cm9sIGV2ZW50IGNoYW5uZWwKPiArICogICAgICB1c2VkIHRvIHNpZ25hbCBhY3Rpdml0eSBpbiB0 aGUgcmluZyBidWZmZXIuCj4gKyAqCj4gKyAqIHJlcS1yaW5nLXJlZgo+ICsgKiAgICAgIFZhbHVl czogICAgICAgICA8dWludDMyX3Q+Cj4gKyAqCj4gKyAqICAgICAgVGhlIFhlbiBncmFudCByZWZl cmVuY2UgZ3JhbnRpbmcgcGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwCj4gKyAqICAg ICAgYSBzb2xlIHBhZ2UgaW4gYSBzaW5nbGUgcGFnZSBzaXplZCBjb25uZWN0b3IncyBjb250cm9s IHJpbmcgYnVmZmVyLgoKUGVyaGFwcyBzL2luIGEgc2luZ2xlIHBhZ2Ugc2l6ZWQvb2YvID8KCgo+ ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0tLS0gQ29ubmVjdG9yIEV2ZW50IFRyYW5zcG9ydCBQ YXJhbWV0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyAqCj4gKyAqIFRoaXMgY29tbXVuaWNh dGlvbiBwYXRoIGlzIHVzZWQgdG8gZGVsaXZlciBhc3luY2hyb25vdXMgZXZlbnRzIGZyb20gYmFj a2VuZAo+ICsgKiB0byBmcm9udGVuZCwgc2V0IHVwIHBlciBjb25uZWN0b3IuCj4gKyAqCj4gKyAq IGV2dC1ldmVudC1jaGFubmVsCj4gKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4K PiArICoKPiArICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgWGVuIGNvbm5lY3RvcidzIGV2 ZW50IGNoYW5uZWwKPiArICogICAgICB1c2VkIHRvIHNpZ25hbCBhY3Rpdml0eSBpbiB0aGUgcmlu ZyBidWZmZXIuCj4gKyAqCj4gKyAqIGV2dC1yaW5nLXJlZgo+ICsgKiAgICAgIFZhbHVlczogICAg ICAgICA8dWludDMyX3Q+Cj4gKyAqCj4gKyAqICAgICAgVGhlIFhlbiBncmFudCByZWZlcmVuY2Ug Z3JhbnRpbmcgcGVybWlzc2lvbiBmb3IgdGhlIGJhY2tlbmQgdG8gbWFwCj4gKyAqICAgICAgYSBz b2xlIHBhZ2UgaW4gYSBzaW5nbGUgcGFnZSBzaXplZCBjb25uZWN0b3IncyBldmVudCByaW5nIGJ1 ZmZlci4KClRoZSBzYW1lIGhlcmU/IHMvaW4gYSBzaW5nbGUgcGFnZSBzaXplZC9vZi8KPiArICov Cj4gKwo+ICsvKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNUQVRFIERJQUdSQU1TCj4gKyAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK PiArICoKPiArICogVG9vbCBzdGFjayBjcmVhdGVzIGZyb250IGFuZCBiYWNrIHN0YXRlIG5vZGVz IHdpdGggaW5pdGlhbCBzdGF0ZQo+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZy4KPiArICog VG9vbCBzdGFjayBjcmVhdGVzIGFuZCBzZXRzIHVwIGZyb250ZW5kIGRpc3BsYXkgY29uZmlndXJh dGlvbgo+ICsgKiBub2RlcyBwZXIgZG9tYWluLgo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tIE5vcm1hbCBmbG93IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gKyAqCj4gKyAqIEZyb250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNr Cj4gKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgICA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Cj4gKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nICAg ICAgICAgICAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZwo+ICsgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG8gUXVlcnkgYmFja2VuZCBkZXZpY2UgaWRlbnRpZmljYXRp b24KPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuCj4g KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBPcGVuIGFuZCB2YWxp ZGF0ZSBiYWNrZW5kIGRldmljZS4KPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFYKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFhlbmJ1c1N0YXRlSW5pdFdhaXQKPiArICoKPiArICogbyBRdWVyeSBmcm9udGVuZCBjb25maWd1 cmF0aW9uCj4gKyAqIG8gQWxsb2NhdGUgYW5kIGluaXRpYWxpemUKPiArICogICBldmVudCBjaGFu bmVscyBwZXIgY29uZmlndXJlZAo+ICsgKiAgIGNvbm5lY3Rvci4KPiArICogbyBQdWJsaXNoIHRy YW5zcG9ydCBwYXJhbWV0ZXJzCj4gKyAqICAgdGhhdCB3aWxsIGJlIGluIGVmZmVjdCBkdXJpbmcK PiArICogICB0aGlzIGNvbm5lY3Rpb24uCj4gKyAqICAgICAgICAgICAgICB8Cj4gKyAqICAgICAg ICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICBWCj4gKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlz ZWQKPiArICoKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIFF1 ZXJ5IGZyb250ZW5kIHRyYW5zcG9ydCBwYXJhbWV0ZXJzLgo+ICsgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG8gQ29ubmVjdCB0byB0aGUgZXZlbnQgY2hhbm5lbHMuCj4g KyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAo+ICsg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKPiArICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWCj4gKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNvbm5lY3RlZAo+ ICsgKgo+ICsgKiAgbyBDcmVhdGUgYW5kIGluaXRpYWxpemUgT1MKPiArICogICAgdmlydHVhbCBk aXNwbGF5IGNvbm5lY3RvcnMKPiArICogICAgYXMgcGVyIGNvbmZpZ3VyYXRpb24uCj4gKyAqICAg ICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICB8Cj4gKyAqICAgICAgICAgICAgICBWCj4g KyAqIFhlbmJ1c1N0YXRlQ29ubmVjdGVkCj4gKyAqCj4gKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZVVua25vd24KPiArICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2VkCj4gKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NpbmcKPiArICogbyBSZW1v dmUgdmlydHVhbCBkaXNwbGF5IGRldmljZQo+ICsgKiBvIFJlbW92ZSBldmVudCBjaGFubmVscwo+ ICsgKiAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAgICAgfAo+ICsgKiAgICAgICAgICAg ICAgVgo+ICsgKiBYZW5idXNTdGF0ZUNsb3NlZAo+ICsgKgo+ICsgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gUmVjb3ZlcnkgZmxvdyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCj4gKyAqCj4gKyAqIEluIGNhc2Ugb2YgZnJvbnRlbmQgdW5yZWNvdmVyYWJsZSBlcnJvcnMg YmFja2VuZCBoYW5kbGVzIHRoYXQgYXMKPiArICogaWYgZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBY ZW5idXNTdGF0ZUNsb3NlZCBzdGF0ZS4KPiArICoKPiArICogSW4gY2FzZSBvZiBiYWNrZW5kIHVu cmVjb3ZlcmFibGUgZXJyb3JzIGZyb250ZW5kIHRyaWVzIHJlbW92aW5nCj4gKyAqIHRoZSB2aXJ0 dWFsaXplZCBkZXZpY2UuIElmIHRoaXMgaXMgcG9zc2libGUgYXQgdGhlIG1vbWVudCBvZiBlcnJv ciwKPiArICogdGhlbiBmcm9udGVuZCBnb2VzIGludG8gdGhlIFhlbmJ1c1N0YXRlSW5pdGlhbGlz aW5nIHN0YXRlIGFuZCBpcyByZWFkeSBmb3IKPiArICogbmV3IGNvbm5lY3Rpb24gd2l0aCBiYWNr ZW5kLiBJZiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlIGlzIHN0aWxsIGluIHVzZSBhbmQKPiArICog Y2Fubm90IGJlIHJlbW92ZWQsIHRoZW4gZnJvbnRlbmQgZ29lcyBpbnRvIHRoZSBYZW5idXNTdGF0 ZVJlY29uZmlndXJpbmcgc3RhdGUKPiArICogdW50aWwgZWl0aGVyIHRoZSB2aXJ0dWFsaXplZCBk ZXZpY2UgcmVtb3ZlZCBvciBiYWNrZW5kIGluaXRpYXRlcyBhIG5ldwoKcy9yZW1vdmVkL2lzIHJl bW92ZWQvCgo+ICsgKiBjb25uZWN0aW9uLiBPbiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlIHJlbW92 YWwgZnJvbnRlbmQgZ29lcyBpbnRvIHRoZQo+ICsgKiBYZW5idXNTdGF0ZUluaXRpYWxpc2luZyBz dGF0ZS4KPiArICoKPiArICogTm90ZSBvbiBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgc3RhdGUg b2YgdGhlIGZyb250ZW5kOiBpZiBiYWNrZW5kIGhhcwo+ICsgKiB1bnJlY292ZXJhYmxlIGVycm9y cyB0aGVuIGZyb250ZW5kIGNhbm5vdCBzZW5kIHJlcXVlc3RzIHRvIHRoZSBiYWNrZW5kCj4gKyAq IGFuZCB0aHVzIGNhbm5vdCBwcm92aWRlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHZpcnR1YWxpemVk IGRldmljZSBhbnltb3JlLgo+ICsgKiBBZnRlciBiYWNrZW5kIGlzIGJhY2sgdG8gbm9ybWFsIHRo ZSB2aXJ0dWFsaXplZCBkZXZpY2UgbWF5IHN0aWxsIGhvbGQgc29tZQo+ICsgKiBzdGF0ZTogY29u ZmlndXJhdGlvbiBpbiB1c2UsIGFsbG9jYXRlZCBidWZmZXJzLCBjbGllbnQgYXBwbGljYXRpb24g c3RhdGUgZXRjLgo+ICsgKiBTbywgaW4gbW9zdCBjYXNlcywgdGhpcyB3aWxsIHJlcXVpcmUgZnJv bnRlbmQgdG8gaW1wbGVtZW50IGNvbXBsZXggcmVjb3ZlcnkKCnMvU28sIGluL0luLwo+ICsgKiBy ZWNvbm5lY3QgbG9naWMuIEluc3RlYWQsIGJ5IGdvaW5nIGludG8gWGVuYnVzU3RhdGVSZWNvbmZp Z3VyaW5nIHN0YXRlLAo+ICsgKiBmcm9udGVuZCB3aWxsIG1ha2Ugc3VyZSBubyBuZXcgY2xpZW50 cyBvZiB0aGUgdmlydHVhbGl6ZWQgZGV2aWNlIGFyZQo+ICsgKiBhY2NlcHRlZCwgYWxsb3cgZXhp c3RpbmcgY2xpZW50KHMpIHRvIGV4aXQgZ3JhY2VmdWxseSBieSBzaWduYWxpbmcgZXJyb3IKPiAr ICogc3RhdGUgZXRjLgo+ICsgKiBPbmNlIGFsbCB0aGUgY2xpZW50cyBhcmUgZ29uZSBmcm9udGVu ZCBjYW4gcmVpbml0aWFsaXplIHRoZSB2aXJ0dWFsaXplZAo+ICsgKiBkZXZpY2UgYW5kIGdldCBp bnRvIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nIHN0YXRlIGFnYWluIHNpZ25hbGluZyB0aGUKPiAr ICogYmFja2VuZCB0aGF0IGEgbmV3IGNvbm5lY3Rpb24gY2FuIGJlIG1hZGUuCj4gKyAqCj4gKyAq IFRoZXJlIGFyZSBtdWx0aXBsZSBjb25kaXRpb25zIHBvc3NpYmxlIHVuZGVyIHdoaWNoIGZyb250 ZW5kIHdpbGwgZ28gZnJvbQo+ICsgKiBYZW5idXNTdGF0ZVJlY29uZmlndXJpbmcgaW50byBYZW5i dXNTdGF0ZUluaXRpYWxpc2luZywgc29tZSBvZiB0aGVtIGFyZSBPUwo+ICsgKiBzcGVjaWZpYy4g Rm9yIGV4YW1wbGU6Cj4gKyAqIDEuIFRoZSB1bmRlcmx5aW5nIE9TIGZyYW1ld29yayBtYXkgcHJv dmlkZSBjYWxsYmFja3MgdG8gc2lnbmFsIHRoYXQgdGhlIGxhc3QKPiArICogICAgY2xpZW50IG9m IHRoZSB2aXJ0dWFsaXplZCBkZXZpY2UgaGFzIGdvbmUgYW5kIHRoZSBkZXZpY2UgY2FuIGJlIHJl bW92ZWQKPiArICogMi4gRnJvbnRlbmQgY2FuIHNjaGVkdWxlIGEgZGVmZXJyZWQgd29yayAodGlt ZXIvdGFza2xldC93b3JrcXVldWUpCj4gKyAqICAgIHRvIHBlcmlvZGljYWxseSBjaGVjayBpZiB0 aGlzIGlzIHRoZSByaWdodCB0aW1lIHRvIHJlLXRyeSByZW1vdmFsIG9mCj4gKyAqICAgIHRoZSB2 aXJ0dWFsaXplZCBkZXZpY2UuCj4gKyAqIDMuIEJ5IGFueSBvdGhlciBtZWFucy4KPiArICoKPiAr ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UkVRVUVTVCBDT0RFUwo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqIFJlcXVlc3QgY29k ZXMgWzA7IDE1XSBhcmUgcmVzZXJ2ZWQgYW5kIG11c3Qgbm90IGJlIHVzZWQKPiArICovCj4gKwo+ ICsjZGVmaW5lIFhFTkRJU1BMX09QX0RCVUZfQ1JFQVRFICAgICAgIDB4MTAKPiArI2RlZmluZSBY RU5ESVNQTF9PUF9EQlVGX0RFU1RST1kgICAgICAweDExCj4gKyNkZWZpbmUgWEVORElTUExfT1Bf RkJfQVRUQUNIICAgICAgICAgMHgxMgo+ICsjZGVmaW5lIFhFTkRJU1BMX09QX0ZCX0RFVEFDSCAg ICAgICAgIDB4MTMKPiArI2RlZmluZSBYRU5ESVNQTF9PUF9TRVRfQ09ORklHICAgICAgICAweDE0 Cj4gKyNkZWZpbmUgWEVORElTUExfT1BfUEdfRkxJUCAgICAgICAgICAgMHgxNQo+ICsKPiArLyoK PiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVWRU5UIENPREVTCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICovCj4gKyNk ZWZpbmUgWEVORElTUExfRVZUX1BHX0ZMSVAgICAgICAgICAgMHgwMAo+ICsKPiArLyoKPiArICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgo+ICsgKiAgICAgICAgICAgICAgIFhFTlNUT1JFIEZJRUxEIEFO RCBQQVRIIE5BTUUgU1RSSU5HUywgSEVMUEVSUwo+ICsgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4g KyAqLwo+ICsjZGVmaW5lIFhFTkRJU1BMX0RSSVZFUl9OQU1FICAgICAgICAgICJ2ZGlzcGwiCj4g Kwo+ICsjZGVmaW5lIFhFTkRJU1BMX0xJU1RfU0VQQVJBVE9SICAgICAgICIsIgo+ICsjZGVmaW5l IFhFTkRJU1BMX1JFU09MVVRJT05fU0VQQVJBVE9SICJ4Igo+ICsKPiArI2RlZmluZSBYRU5ESVNQ TF9GSUVMRF9CRV9WRVJTSU9OUyAgICAidmVyc2lvbnMiCj4gKyNkZWZpbmUgWEVORElTUExfRklF TERfRkVfVkVSU0lPTiAgICAgInZlcnNpb24iCj4gKyNkZWZpbmUgWEVORElTUExfRklFTERfUkVR X1JJTkdfUkVGICAgInJlcS1yaW5nLXJlZiIKPiArI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9SRVFf Q0hBTk5FTCAgICAicmVxLWV2ZW50LWNoYW5uZWwiCj4gKyNkZWZpbmUgWEVORElTUExfRklFTERf RVZUX1JJTkdfUkVGICAgImV2dC1yaW5nLXJlZiIKPiArI2RlZmluZSBYRU5ESVNQTF9GSUVMRF9F VlRfQ0hBTk5FTCAgICAiZXZ0LWV2ZW50LWNoYW5uZWwiCj4gKyNkZWZpbmUgWEVORElTUExfRklF TERfUkVTT0xVVElPTiAgICAgInJlc29sdXRpb24iCj4gKyNkZWZpbmUgWEVORElTUExfRklFTERf QkVfQUxMT0MgICAgICAgImJlX2FsbG9jIgoKcy9iZV9hbGxvYy9iZS1hbGxvYy8gPwoKCj4gKwo+ ICsvKgo+ICsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICBTVEFUVVMgUkVUVVJOIENPREVTCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICoK PiArICogU3RhdHVzIHJldHVybiBjb2RlIGlzIHplcm8gb24gc3VjY2VzcyBhbmQgLVhFTl9FWFgg b24gZmFpbHVyZS4KPiArICoKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEFzc3VtcHRpb25zCj4gKyAqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKPiArICogbyB1c2FnZSBvZiBncmFudCByZWZlcmVuY2UgMCBhcyBpbnZhbGlkIGdyYW50IHJl ZmVyZW5jZToKPiArICogICBncmFudCByZWZlcmVuY2UgMCBpcyB2YWxpZCwgYnV0IG5ldmVyIGV4 cG9zZWQgdG8gYSBQViBkcml2ZXIsCj4gKyAqICAgYmVjYXVzZSBvZiB0aGUgZmFjdCBpdCBpcyBh bHJlYWR5IGluIHVzZS9yZXNlcnZlZCBieSB0aGUgUFYgY29uc29sZS4KPiArICogbyBhbGwgcmVm ZXJlbmNlcyBpbiB0aGlzIGRvY3VtZW50IHRvIHBhZ2Ugc2l6ZXMgbXVzdCBiZSB0cmVhdGVkCj4g KyAqICAgYXMgcGFnZXMgb2Ygc2l6ZSBYRU5fUEFHRV9TSVpFIHVubGVzcyBvdGhlcndpc2Ugbm90 ZWQuCj4gKyAqCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICogICAgICAgRGVzY3JpcHRp b24gb2YgdGhlIHByb3RvY29sIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVyCj4g KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKPiArICoKPiArICogVGhlIHR3byBoYWx2ZXMgb2YgYSBQ YXJhLXZpcnR1YWwgZGlzcGxheSBkcml2ZXIgY29tbXVuaWNhdGUgd2l0aAo+ICsgKiBlYWNoIG90 aGVyIHVzaW5nIHNoYXJlZCBwYWdlcyBhbmQgZXZlbnQgY2hhbm5lbHMuCj4gKyAqIFNoYXJlZCBw YWdlIGNvbnRhaW5zIGEgcmluZyB3aXRoIHJlcXVlc3QvcmVzcG9uc2UgcGFja2V0cy4KPiArICoK PiArICogQWxsIHJlc2VydmVkIGZpZWxkcyBpbiB0aGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJl IDAuCj4gKyAqIERpc3BsYXkgYnVmZmVycydzIGNvb2tpZSBvZiB2YWx1ZSAwIHRyZWF0ZWQgYXMg aW52YWxpZC4KCnMvdHJlYXRlZC9pcyB0cmVhdGVkLwo+ICsgKiBGcmFtZWJ1ZmZlcidzIGNvb2tp ZSBvZiB2YWx1ZSAwIHRyZWF0ZWQgYXMgaW52YWxpZC4KCnMvdHJlYXRlZC9pcyB0cmVhdGVkLwo+ ICsgKgo+ICsgKiBGb3IgYWxsIHJlcXVlc3QvcmVzcG9uc2UvZXZlbnQgcGFja2V0cyB0aGF0IHVz ZSBjb29raWVzOgo+ICsgKiAgIGRidWZfY29va2llIC0gdWludDY0X3QsIHVuaXF1ZSB0byBndWVz dCBkb21haW4gdmFsdWUgdXNlZCBieSB0aGUgYmFja2VuZAo+ICsgKiAgICAgdG8gbWFwIHJlbW90 ZSBkaXNwbGF5IGJ1ZmZlciB0byBpdHMgbG9jYWwgb25lCj4gKyAqICAgZmJfY29va2llIC0gdWlu dDY0X3QsIHVuaXF1ZSB0byBndWVzdCBkb21haW4gdmFsdWUgdXNlZCBieSB0aGUgYmFja2VuZAo+ ICsgKiAgICAgdG8gbWFwIHJlbW90ZSBmcmFtZWJ1ZmZlciB0byBpdHMgbG9jYWwgb25lCj4gKyAq Cj4gKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZXF1ZXN0cyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArICoKPiArICogQWxsIHJlcXVlc3RzL3Jlc3Bv bnNlcywgd2hpY2ggYXJlIG5vdCBjb25uZWN0b3Igc3BlY2lmaWMsIG11c3QgYmUgc2VudCBvdmVy Cj4gKyAqIGNvbnRyb2wgcmluZyBvZiB0aGUgY29ubmVjdG9yIHdpdGggaW5kZXggMC4KCnMvd2l0 aCBpbmRleCAwL3doaWNoIGhhcyB0aGUgaW5kZXggdmFsdWUgb2YgMC8gPwoKW2FuZCBmb3IgdGhl IGZvdXIgb3RoZXIgcGxhY2VzXS4gVGhlICd3aXRoIGluZGV4IDAnIGdvdCBtZSB0aGlua2luZyB0 aGF0IHRoZQpzdHJ1Y3R1cmUgaGFzIHRvIGhhdmUgc29tZSBpbmRleCAwLiBCdXQgeW91IG1lYW4g dGhhdCBpdCBzaG91bGQgZ28gb3ZlcjoKCi9sb2NhbC9kb21haW4vPGRvbS1pZD4vZGV2aWNlL3Zk aXNwbC88ZGV2LWlkPi8wL3JlcS1yaW5nLXJlZgoKUGVyaGFwcyBpbmNsdWRlIHRoYXQ/IExpa2U6 CgoiCmNvbnRyb2wgcmluZyBvZiB0aGUgY29ubmVjdG9yIHdoaWNoIGhhcyB0aGUgaW5kZXggdmFs dWUgb2YgMDoKL2xvY2FsL2RvbWFpbi88ZG9tLWlkPi9kZXZpY2UvdmRpc3BsLzxkZXYtaWQ+LzAv cmVxLXJpbmctcmVmCgoiPwoKPiArICoKPiArICogQWxsIHJlcXVlc3QgcGFja2V0cyBoYXZlIHRo ZSBzYW1lIGxlbmd0aCAoNjQgb2N0ZXRzKQo+ICsgKiBBbGwgcmVxdWVzdCBwYWNrZXRzIGhhdmUg Y29tbW9uIGhlYWRlcjoKPiArICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAg ICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAo+ICsgKiArLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsK PiArICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAg fCAgIHJlc2VydmVkICAgICB8IDQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCA4Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiAgIGlkIC0gdWludDE2X3QsIHByaXZhdGUgZ3Vl c3QgdmFsdWUsIGVjaG9lZCBpbiByZXNwb25zZQo+ICsgKiAgIG9wZXJhdGlvbiAtIHVpbnQ4X3Qs IG9wZXJhdGlvbiBjb2RlLCBYRU5ESVNQTF9PUF8/Pz8KPiArICoKPiArICogUmVxdWVzdCBkYnVm IGNyZWF0aW9uIC0gcmVxdWVzdCBjcmVhdGlvbiBvZiBhIGRpc3BsYXkgYnVmZmVyLgo+ICsgKiAg ICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAg IDMgICAgICAgIG9jdGV0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAg aWQgICAgICAgICAgICAgICAgfF9PUF9EQlVGX0NSRUFURSB8ICAgcmVzZXJ2ZWQgICAgIHwgNAo+ ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz ZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKPiArICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r Cj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgIGRidWZfY29va2llIGxvdyAzMi1iaXQgICAg ICAgICAgICAgICAgICAgICAgfCAxMgo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICogfCAgICAgICAg ICAgICAgICAgICAgICAgZGJ1Zl9jb29raWUgaGlnaCAzMi1iaXQgICAgICAgICAgICAgICAgICAg ICB8IDE2Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHdpZHRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAKPiArICogKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNAo+ICsgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKPiArICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnBwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IDI4Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBidWZmZXJfc3ogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzIK PiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNgo+ICsgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZfZGlyZWN0b3J5ICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDQwCj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgNDQKPiArICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAo+ICsgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKPiArICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDY0Cj4gKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKwo+ICsgKgo+ ICsgKiBNdXN0IGJlIHNlbnQgb3ZlciBjb250cm9sIHJpbmcgb2YgdGhlIGNvbm5lY3RvciB3aXRo IGluZGV4IDAuCj4gKyAqIEFsbCB1bnVzZWQgYml0cyBpbiBmbGFncyBmaWVsZCBtdXN0IGJlIHNl dCB0byAwLgo+ICsgKgo+ICsgKiBBbiBhdHRlbXB0IHRvIGNyZWF0ZSBtdWx0aXBsZSBkaXNwbGF5 IGJ1ZmZlcnMgd2l0aCB0aGUgc2FtZSBkYnVmX2Nvb2tpZSBpcwo+ICsgKiBhbiBlcnJvci4gZGJ1 Zl9jb29raWUgY2FuIGJlIHJlLXVzZWQgYWZ0ZXIgZGVzdHJveWluZyB0aGUgY29ycmVzcG9uZGlu Zwo+ICsgKiBkaXNwbGF5IGJ1ZmZlci4KPiArICoKPiArICogV2lkdGggYW5kIGhlaWdodCBvZiB0 aGUgZGlzcGxheSBidWZmZXJzIGNhbiBiZSBzbWFsbGVyLCBlcXVhbCBvciBiaWdnZXIKPiArICog dGhhbiB0aGUgY29ubmVjdG9yJ3MgcmVzb2x1dGlvbi4gRGVwdGgvcGl4ZWwgZm9ybWF0IG9mIHRo ZSBpbmRpdmlkdWFsCj4gKyAqIGJ1ZmZlcnMgY2FuIGRpZmZlciBhcyB3ZWxsLgo+ICsgKgo+ICsg KiB3aWR0aCAtIHVpbnQzMl90LCB3aWR0aCBpbiBwaXhlbHMKPiArICogaGVpZ2h0IC0gdWludDMy X3QsIGhlaWdodCBpbiBwaXhlbHMKPiArICogYnBwIC0gdWludDMyX3QsIGJpdHMgcGVyIHBpeGVs Cj4gKyAqIGJ1ZmZlcl9zeiAtIHVpbnQzMl90LCBidWZmZXIgc2l6ZSB0byBiZSBhbGxvY2F0ZWQs IG9jdGV0cwo+ICsgKiBmbGFncyAtIHVpbnQzMl90LCBmbGFncyBvZiB0aGUgb3BlcmF0aW9uCj4g KyAqICAgbyBYRU5ESVNQTF9EQlVGX0ZMR19SRVFfQUxMT0MgLSBpZiBzZXQsIHRoZW4gYmFja2Vu ZCBpcyByZXF1ZXN0ZWQKPiArICogICAgIHRvIGFsbG9jYXRlIHRoZSBidWZmZXIgd2l0aCB0aGUg cGFyYW1ldGVycyBwcm92aWRlZCBpbiB0aGlzIHJlcXVlc3QuCj4gKyAqICAgICBQYWdlIGRpcmVj dG9yeSBpcyBoYW5kbGVkIGFzIGZvbGxvd3M6Cj4gKyAqICAgICAgIEZyb250ZW5kIG9uIHJlcXVl c3Q6Cj4gKyAqICAgICAgICAgbyBhbGxvY2F0ZXMgcGFnZXMgZm9yIHRoZSBkaXJlY3RvcnkgKGdy ZWZfZGlyZWN0b3J5LAo+ICsgKiAgICAgICAgICAgZ3JlZl9kaXJfbmV4dF9wYWdlKHMpCj4gKyAq ICAgICAgICAgbyBncmFudHMgcGVybWlzc2lvbnMgZm9yIHRoZSBwYWdlcyBvZiB0aGUgZGlyZWN0 b3J5CgouLiB0byB0aGUgYmFja2VuZC4KPiArICogICAgICAgICBvIHNldHMgZ3JlZl9kaXJfbmV4 dF9wYWdlIGZpZWxkcwo+ICsgKiAgICAgICBCYWNrZW5kIG9uIHJlc3BvbnNlOgo+ICsgKiAgICAg ICAgIG8gZ3JhbnRzIHBlcm1pc3Npb25zIGZvciB0aGUgcGFnZXMgb2YgdGhlIGJ1ZmZlciBhbGxv Y2F0ZWQKCi4uIHRvIHRoZSBmcm9udGVuZAo+ICsgKiAgICAgICAgIG8gZmlsbHMgaW4gcGFnZSBk aXJlY3Rvcnkgd2l0aCBncmFudCByZWZlcmVuY2VzCj4gKyAqICAgICAgICAgICAoZ3JlZltdIGlu IHN0cnVjdCB4ZW5kaXNwbF9wYWdlX2RpcmVjdG9yeWdyZWYpCgpzL2RpcmVjdG9yeWdyZWYveGVu ZGlzcGxfcGFnZV9kaXJlY3RvcnkKCj4gKyAqIGdyZWZfZGlyZWN0b3J5IC0gZ3JhbnRfcmVmX3Qs IGEgcmVmZXJlbmNlIHRvIHRoZSBmaXJzdCBzaGFyZWQgcGFnZQo+ICsgKiAgIGRlc2NyaWJpbmcg c2hhcmVkIGJ1ZmZlciByZWZlcmVuY2VzLiBBdCBsZWFzdCBvbmUgcGFnZSBleGlzdHMuIElmIHNo YXJlZAo+ICsgKiAgIGJ1ZmZlciBzaXplIChidWZmZXJfc3opIGV4Y2VlZHMgd2hhdCBjYW4gYmUg YWRkcmVzc2VkIGJ5IHRoaXMgc2luZ2xlIHBhZ2UsCj4gKyAqICAgdGhlbiByZWZlcmVuY2UgdG8g dGhlIG5leHQgcGFnZSBtdXN0IGJlIHN1cHBsaWVkIChzZWUgZ3JlZl9kaXJfbmV4dF9wYWdlCj4g KyAqICAgYmVsb3cpCj4gKyAqLwo+ICsKCi4uIHNuaXAuLgo+ICsgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgQmFjayB0byBmcm9udCBldmVudHMgZGVs aXZlcnkKPiArICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgo+ICsgKiBJbiBvcmRlciB0byBkZWxpdmVy IGFzeW5jaHJvbm91cyBldmVudHMgZnJvbSBiYWNrIHRvIGZyb250IGEgc2hhcmVkIHBhZ2UgaXMK PiArICogYWxsb2NhdGVkIGJ5IGZyb250IGFuZCBpdHMgZ3JhbnRlZCByZWZlcmVuY2UgcHJvcGFn YXRlZCB0byBiYWNrIHZpYQo+ICsgKiBYZW5TdG9yZSBlbnRyaWVzIChldmVudC1YWFgpLgoKCnMv ZXZlbnQtWFhYWC8uLiB0aGUgcmlnaHQgbmFtZT8vCgo+ICsgKiBUaGlzIHBhZ2UgaGFzIGEgY29t bW9uIGhlYWRlciB1c2VkIGJ5IGJvdGggZnJvbnQgYW5kIGJhY2sgdG8gc3luY2hyb25pemUKPiAr ICogYWNjZXNzIGFuZCBjb250cm9sIGV2ZW50J3MgcmluZyBidWZmZXIsIHdoaWxlIGJhY2sgYmVp bmcgYSBwcm9kdWNlciBvZiB0aGUKPiArICogZXZlbnRzIGFuZCBmcm9udCBiZWluZyBhIGNvbnN1 bWVyLiBUaGUgcmVzdCBvZiB0aGUgcGFnZSBhZnRlciB0aGUgaGVhZGVyCj4gKyAqIGlzIHVzZWQg Zm9yIGV2ZW50IHBhY2tldHMuCj4gKyAqCj4gKyAqIFVwb24gcmVjZXB0aW9uIG9mIGFuIGV2ZW50 KHMpIGZyb250IG1heSBjb25maXJtIGl0cyByZWNlcHRpb24KPiArICogZm9yIGVpdGhlciBlYWNo IGV2ZW50LCBncm91cCBvZiBldmVudHMgb3Igbm9uZS4KPiArICovCj4gKwo+ICtzdHJ1Y3QgeGVu ZGlzcGxfZXZlbnRfcGFnZSB7Cj4gKyAgICB1aW50MzJfdCBpbl9jb25zOwo+ICsgICAgdWludDMy X3QgaW5fcHJvZDsKPiArICAgIHVpbnQ4X3QgcmVzZXJ2ZWRbNTZdOwo+ICt9Owo+ICsKPiArI2Rl ZmluZSBYRU5ESVNQTF9FVkVOVF9QQUdFX1NJWkUgNDA5Ngo+ICsjZGVmaW5lIFhFTkRJU1BMX0lO X1JJTkdfT0ZGUyAoc2l6ZW9mKHN0cnVjdCB4ZW5kaXNwbF9ldmVudF9wYWdlKSkKPiArI2RlZmlu ZSBYRU5ESVNQTF9JTl9SSU5HX1NJWkUgKFhFTkRJU1BMX0VWRU5UX1BBR0VfU0laRSAtIFhFTkRJ U1BMX0lOX1JJTkdfT0ZGUykKPiArI2RlZmluZSBYRU5ESVNQTF9JTl9SSU5HX0xFTiAoWEVORElT UExfSU5fUklOR19TSVpFIC8gc2l6ZW9mKHN0cnVjdCB4ZW5kaXNwbF9ldnQpKQo+ICsjZGVmaW5l IFhFTkRJU1BMX0lOX1JJTkcocGFnZSkgXAo+ICsJKChzdHJ1Y3QgeGVuZGlzcGxfZXZ0ICopKChj aGFyICopKHBhZ2UpICsgWEVORElTUExfSU5fUklOR19PRkZTKSkKPiArI2RlZmluZSBYRU5ESVNQ TF9JTl9SSU5HX1JFRihwYWdlLCBpZHgpIFwKPiArCShYRU5ESVNQTF9JTl9SSU5HKChwYWdlKSlb KGlkeCkgJSBYRU5ESVNQTF9JTl9SSU5HX0xFTl0pCj4gKwo+ICsjZW5kaWYgLyogX19YRU5fUFVC TElDX0lPX0RJU1BMSUZfSF9fICovCj4gKwo+ICsvKgo+ICsgKiBMb2NhbCB2YXJpYWJsZXM6Cj4g KyAqIG1vZGU6IEMKPiArICogYy1maWxlLXN0eWxlOiAiQlNEIgo+ICsgKiBjLWJhc2ljLW9mZnNl dDogNAo+ICsgKiB0YWItd2lkdGg6IDQKPiArICogaW5kZW50LXRhYnMtbW9kZTogbmlsCj4gKyAq IEVuZDoKPiArICovCj4gLS0gCj4gMi43LjQKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=