From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marc Zyngier Subject: Re: [PATCH v2 02/17] arm64: vgic-v3: Add ICV_BPR1_EL1 handler Date: Tue, 27 Mar 2018 12:38:45 +0100 Message-ID: References: <22c55d3f-ea39-4ece-b9f8-9007f776cde5@arm.com> <5b0854f4-a630-8b62-313c-843e98a73dba@caviumnetworks.com> <1874e4c5-85a5-2952-9dac-78804445d5cc@arm.com> <89277ead-19e1-7902-3f4a-ea5554e4ad53@caviumnetworks.com> <5e10a25f-516a-9a72-fdb3-f96a433562c7@arm.com> <5b29892e-7581-513c-7fc1-565b82ed6336@caviumnetworks.com> <314008c4-cb7a-e42a-ecb0-46dedd8f8676@arm.com> <17217d4e-8731-5306-0bdd-fe7a65db5d6c@caviumnetworks.com> <35bfc608-aa36-e2ee-41df-2d353fc36df4@arm.com> <19cfacda-ed14-1589-bb06-fd6a9c879c6d@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f0mwE-0005Fv-Oa for xen-devel@lists.xenproject.org; Tue, 27 Mar 2018 11:38:50 +0000 In-Reply-To: <19cfacda-ed14-1589-bb06-fd6a9c879c6d@caviumnetworks.com> Content-Language: en-GB List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Manish Jaggi , Manish Jaggi , xen-devel@lists.xenproject.org, julien.grall@arm.com, sstabellini@kernel.org, andre.przywara@arm.com List-Id: xen-devel@lists.xenproject.org T24gMjcvMDMvMTggMTI6MjcsIE1hbmlzaCBKYWdnaSB3cm90ZToKPiAKPiAKPiBPbiAwMy8yNy8y MDE4IDA0OjU1IFBNLCBNYXJjIFp5bmdpZXIgd3JvdGU6Cj4+IE9uIDI3LzAzLzE4IDEyOjE1LCBN YW5pc2ggSmFnZ2kgd3JvdGU6Cj4+Pgo+Pj4gT24gMDMvMjcvMjAxOCAwNDo0MSBQTSwgTWFyYyBa eW5naWVyIHdyb3RlOgo+Pj4+IE9uIDI3LzAzLzE4IDEyOjA3LCBNYW5pc2ggSmFnZ2kgd3JvdGU6 Cj4+Pj4+IE9uIDAzLzI3LzIwMTggMDQ6MzUgUE0sIE1hcmMgWnluZ2llciB3cm90ZToKPj4+Pj4+ IE9uIDI3LzAzLzE4IDExOjU2LCBNYW5pc2ggSmFnZ2kgd3JvdGU6Cj4+Pj4+Pj4gT24gMDMvMjcv MjAxOCAwNDoxNSBQTSwgTWFyYyBaeW5naWVyIHdyb3RlOgo+Pj4+Pj4+PiBPbiAyNy8wMy8xOCAx MTozNSwgTWFuaXNoIEphZ2dpIHdyb3RlOgo+Pj4+Pj4+Pj4gT24gMDMvMjcvMjAxOCAwNDowMCBQ TSwgTWFyYyBaeW5naWVyIHdyb3RlOgo+Pj4+Pj4+Pj4+IE9uIDI3LzAzLzE4IDEwOjA3LCBNYW5p c2ggSmFnZ2kgd3JvdGU6Cj4+Pj4+Pj4+Pj4+IFRoaXMgcGF0Y2ggaXMgcG9ydGVkIHRvIHhlbiBm cm9tIGxpbnV4IGNvbW1pdAo+Pj4+Pj4+Pj4+PiBkNzBjN2IzMWE2MGYyNDU4ZjM1YzIyNjEzMWYy YTAxYTdhOThiNmNmCj4+Pj4+Pj4+Pj4+IEtWTTogYXJtNjQ6IHZnaWMtdjM6IEFkZCBJQ1ZfQlBS MV9FTDEgaGFuZGxlcgo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+PiBBZGQgYSBoYW5kbGVyIGZvciBy ZWFkaW5nL3dyaXRpbmcgdGhlIGd1ZXN0J3MgdmlldyBvZiB0aGUgSUNDX0JQUjFfRUwxCj4+Pj4+ Pj4+Pj4+IHJlZ2lzdGVyLCB3aGljaCBpcyBsb2NhdGVkIGluIHRoZSBJQ0hfVk1DUl9FTDIuQlBS MSBmaWVsZC4KPj4+Pj4+Pj4+Pj4KPj4+Pj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTWFuaXNoIEph Z2dpIDxtYW5pc2guamFnZ2lAY2F2aXVtLmNvbT4KPj4+Pj4+Pj4+Pj4gLS0tCj4+Pj4+Pj4+Pj4+ ICAgICAgIHhlbi9hcmNoL2FybS9hcm02NC92Z2ljLXYzLXNyLmMgICAgIHwgNzAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+Pj4+Pj4+PiAgICAgICB4ZW4vaW5jbHVk ZS9hc20tYXJtL2FybTY0L3N5c3JlZ3MuaCB8ICAxICsKPj4+Pj4+Pj4+Pj4gICAgICAgeGVuL2lu Y2x1ZGUvYXNtLWFybS9naWNfdjNfZGVmcy5oICAgfCAgNiArKysrCj4+Pj4+Pj4+Pj4+ICAgICAg IDMgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKQo+Pj4+Pj4+Pj4+Pgo+Pj4+Pj4+Pj4+ PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FybTY0L3ZnaWMtdjMtc3IuYyBiL3hlbi9hcmNo L2FybS9hcm02NC92Z2ljLXYzLXNyLmMKPj4+Pj4+Pj4+Pj4gaW5kZXggMzlhYjFlZDZjYS4uZWQ0 MjU0YWNmOSAxMDA2NDQKPj4+Pj4+Pj4+Pj4gLS0tIGEveGVuL2FyY2gvYXJtL2FybTY0L3ZnaWMt djMtc3IuYwo+Pj4+Pj4+Pj4+PiArKysgYi94ZW4vYXJjaC9hcm0vYXJtNjQvdmdpYy12My1zci5j Cj4+Pj4+Pj4+Pj4+IEBAIC0xOCwxMCArMTgsNzYgQEAKPj4+Pj4+Pj4+Pj4gICAgICAgICovCj4+ Pj4+Pj4+Pj4+ICAgICAgIAo+Pj4+Pj4+Pj4+PiAgICAgICAjaW5jbHVkZSA8YXNtL2N1cnJlbnQu aD4KPj4+Pj4+Pj4+Pj4gKyNpbmNsdWRlIDxhc20vZ2ljX3YzX2RlZnMuaD4KPj4+Pj4+Pj4+Pj4g ICAgICAgI2luY2x1ZGUgPGFzbS9yZWdzLmg+Cj4+Pj4+Pj4+Pj4+ICAgICAgICNpbmNsdWRlIDxh c20vc3lzdGVtLmg+Cj4+Pj4+Pj4+Pj4+ICAgICAgICNpbmNsdWRlIDxhc20vdHJhcHMuaD4KPj4+ Pj4+Pj4+Pj4gICAgICAgCj4+Pj4+Pj4+Pj4+ICsjZGVmaW5lIHZ0cl90b19ucl9wcmVfYml0cyh2 KSAgICAgKCgoKHVpbnQzMl90KSh2KSA+PiAyNikgJiA3KSArIDEpCj4+Pj4+Pj4+Pj4+ICsKPj4+ Pj4+Pj4+Pj4gK3N0YXRpYyBpbnQgdmdpY192M19icHJfbWluKHZvaWQpCj4+Pj4+Pj4+Pj4+ICt7 Cj4+Pj4+Pj4+Pj4+ICsgICAgLyogU2VlIFBzZXVkb2NvZGUgZm9yIFZQcmlvcml0eUdyb3VwICov Cj4+Pj4+Pj4+Pj4+ICsgICAgcmV0dXJuIDggLSB2dHJfdG9fbnJfcHJlX2JpdHMoUkVBRF9TWVNS RUczMihJQ0hfVlRSX0VMMikpOwo+Pj4+Pj4+Pj4+PiArfQo+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+ Pj4+ICtzdGF0aWMgdW5zaWduZWQgaW50IHZnaWNfdjNfZ2V0X2JwcjAodWludDMyX3Qgdm1jcikK Pj4+Pj4+Pj4+Pj4gK3sKPj4+Pj4+Pj4+Pj4gKyAgICByZXR1cm4gKHZtY3IgJiBJQ0hfVk1DUl9C UFIwX01BU0spID4+IElDSF9WTUNSX0JQUjBfU0hJRlQ7Cj4+Pj4+Pj4+Pj4+ICt9Cj4+Pj4+Pj4+ Pj4+ICsKPj4+Pj4+Pj4+Pj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgdmdpY192M19nZXRfYnByMSh1 aW50MzJfdCB2bWNyKQo+Pj4+Pj4+Pj4+PiArewo+Pj4+Pj4+Pj4+PiArICAgIHVuc2lnbmVkIGlu dCBicHI7Cj4+Pj4+Pj4+Pj4+ICsKPj4+Pj4+Pj4+Pj4gKyAgICBpZiAoIHZtY3IgJiBJQ0hfVk1D Ul9DQlBSX01BU0sgKQo+Pj4+Pj4+Pj4+PiArICAgIHsKPj4+Pj4+Pj4+Pj4gKyAgICAgICAgYnBy ID0gdmdpY192M19nZXRfYnByMCh2bWNyKTsKPj4+Pj4+Pj4+Pj4gKyAgICAgICAgaWYgKCBicHIg PCA3ICkKPj4+Pj4+Pj4+Pj4gKyAgICAgICAgICAgIGJwcisrOwo+Pj4+Pj4+Pj4+PiArICAgIH0K Pj4+Pj4+Pj4+Pj4gKyAgICBlbHNlCj4+Pj4+Pj4+Pj4+ICsgICAgICAgIGJwciA9ICh2bWNyICYg SUNIX1ZNQ1JfQlBSMV9NQVNLKSA+PiBJQ0hfVk1DUl9CUFIxX1NISUZUOwo+Pj4+Pj4+Pj4+PiAr Cj4+Pj4+Pj4+Pj4+ICsgICAgcmV0dXJuIGJwcjsKPj4+Pj4+Pj4+Pj4gK30KPj4+Pj4+Pj4+Pj4g Kwo+Pj4+Pj4+Pj4+PiArc3RhdGljIHZvaWQgdmdpY192M19yZWFkX2JwcjEoc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MsIGludCByZWdpZHgpCj4+Pj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+Pj4+ICsg ICAgdWludDMyX3Qgdm1jciA9IFJFQURfU1lTUkVHMzIoSUNIX1ZNQ1JfRUwyKTsKPj4+Pj4+Pj4+ Pj4gKwo+Pj4+Pj4+Pj4+PiArICAgIHNldF91c2VyX3JlZyhyZWdzLCByZWdpZHgsIHZnaWNfdjNf Z2V0X2JwcjEodm1jcikpOwo+Pj4+Pj4+Pj4+PiArfQo+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+ ICtzdGF0aWMgdm9pZCB2Z2ljX3YzX3dyaXRlX2JwcjEoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MsIGludCByZWdpZHgpCj4+Pj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+Pj4+ICsgICAgcmVnaXN0ZXJf dCB2YWwgPSBnZXRfdXNlcl9yZWcocmVncywgcmVnaWR4KTsKPj4+Pj4+Pj4+Pj4gKyAgICB1aW50 OF90IGJwcl9taW4gPSB2Z2ljX3YzX2Jwcl9taW4oKTsKPj4+Pj4+Pj4+Pj4gKyAgICB1aW50MzJf dCB2bWNyID0gUkVBRF9TWVNSRUczMihJQ0hfVk1DUl9FTDIpOwo+Pj4+Pj4+Pj4+PiArCj4+Pj4+ Pj4+Pj4+ICsgICAgaWYgKCB2bWNyICYgSUNIX1ZNQ1JfQ0JQUl9NQVNLICkKPj4+Pj4+Pj4+Pj4g KyAgICAgICAgcmV0dXJuOwo+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+Pj4+ICsgICAgLyogRW5mb3Jj ZSBCUFIgbGltaXRpbmcgKi8KPj4+Pj4+Pj4+Pj4gKyAgICBpZiAoIHZhbCA8IGJwcl9taW4gKQo+ Pj4+Pj4+Pj4+PiArICAgICAgICB2YWwgPSBicHJfbWluOwo+Pj4+Pj4+Pj4+PiArCj4+Pj4+Pj4+ Pj4+ICsgICAgdmFsIDw8PSBJQ0hfVk1DUl9CUFIxX1NISUZUOwo+Pj4+Pj4+Pj4+PiArICAgIHZh bCAmPSBJQ0hfVk1DUl9CUFIxX01BU0s7Cj4+Pj4+Pj4+Pj4+ICsgICAgdm1jciAmPSB+SUNIX1ZN Q1JfQlBSMV9NQVNLOwo+Pj4+Pj4+Pj4+PiArICAgIHZtY3IgfD0gdmFsOwo+Pj4+Pj4+Pj4+PiAr Cj4+Pj4+Pj4+Pj4+ICsgICAgV1JJVEVfU1lTUkVHMzIodm1jciwgSUNIX1ZNQ1JfRUwyKTsKPj4+ Pj4+Pj4+Pj4gK30KPj4+Pj4+Pj4+Pj4gKwo+Pj4+Pj4+Pj4+PiArc3RhdGljIHZvaWQgdnJlZ19l bXVsYXRlX2JwcjEoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGNvbnN0IHVuaW9uIGhzciBo c3IpCj4+Pj4+Pj4+Pj4+ICt7Cj4+Pj4+Pj4+Pj4+ICsgICAgaWYgKCBoc3Iuc3lzcmVnLnJlYWQg KQo+Pj4+Pj4+Pj4+PiArICAgICAgICB2Z2ljX3YzX3JlYWRfYnByMShyZWdzLCBoc3Iuc3lzcmVn LnJlZyk7Cj4+Pj4+Pj4+Pj4+ICsgICAgZWxzZQo+Pj4+Pj4+Pj4+PiArICAgICAgICB2Z2ljX3Yz X3dyaXRlX2JwcjEocmVncywgaHNyLnN5c3JlZy5yZWcpOwo+Pj4+Pj4+Pj4+PiArfQo+Pj4+Pj4+ Pj4+PiArCj4+Pj4+Pj4+Pj4+ICAgICAgIC8qCj4+Pj4+Pj4+Pj4+ICAgICAgICAqIHJldHVybnMg dHJ1ZSBpZiB0aGUgcmVnaXN0ZXIgaXMgZW11bGF0ZWQuCj4+Pj4+Pj4+Pj4+ICAgICAgICAqLwo+ Pj4+Pj4+Pj4+PiBAQCAtNDAsNiArMTA2LDEwIEBAIGJvb2wgdmdpY192M19oYW5kbGVfY3B1aWZf YWNjZXNzKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+Pj4+Pj4+Pj4+PiAgICAgICAKPj4+ Pj4+Pj4+Pj4gICAgICAgICAgIHN3aXRjaCAoIGhzci5iaXRzICYgSFNSX1NZU1JFR19SRUdTX01B U0sgKQo+Pj4+Pj4+Pj4+PiAgICAgICAgICAgewo+Pj4+Pj4+Pj4+PiArICAgIGNhc2UgSFNSX1NZ U1JFR19JQ0NfQlBSMV9FTDE6Cj4+Pj4+Pj4+Pj4+ICsgICAgICAgICB2cmVnX2VtdWxhdGVfYnBy MShyZWdzLCBoc3IpOwo+Pj4+Pj4+Pj4+PiArICAgICAgICAgYnJlYWs7Cj4+Pj4+Pj4+Pj4gV2hh dCBpcyB0aGUgcmF0aW9uYWwgZm9yIGluZGlyZWN0aW5nIHRocm91Z2ggYSBmdW5jdGlvbiBhbmQg bW92aW5nIHRoZQo+Pj4+Pj4+Pj4+IHJlYWRpbmcgb2YgVk1DUiB0byB0aGUgbGVhZiBmdW5jdGlv bnM/IEkgYXBwcmVjaWF0ZSB0aGF0IHRoaXMgZG9lc24ndAo+Pj4+Pj4+Pj4+IGNoYW5nZSBtdWNo LCBidXQgc2luY2UgdGhpcyBpcyBhIHBvcnQgb2YgZXhpc3RpbmcgY29kZSwgaXQgd2lsbCBtYWtl Cj4+Pj4+Pj4+Pj4gbW9yZSBjb21wbGV4IHRoZSBwb3J0IG9mIHBvdGVudGlhbCBmaXhlcy4KPj4+ Pj4+Pj4+IEkgdXNlZCB4ZW4gdGVtcGxhdGUgb2YgaGFuZGxpbmcgc3lzcmVnIHRyYXBzCj4+Pj4+ Pj4+PiBJZiB5b3Ugc2VlIHRoZSBmaWxlIHhlbi9hcmNoL2FybS9hcm02NC9zeXNyZWcuYwo+Pj4+ Pj4+Pj4gYSBoYW5kbGVfWFhYIGZ1bmN0aW9uIGlzIHVzZWQgdGhyb3VnaG91dC4uLgo+Pj4+Pj4+ PiBTdXJlLCBidXQgdGhpcyBpcyBub3Qgc3lzcmVnLmMuIFRoaXMgaXMgYSBzZXBhcmF0ZSBmaWxl IGZvciBhIHJlYXNvbgo+Pj4+Pj4+PiAoaS5lLiBpdCBpcyBpbXBvcnRlZCBjb2RlKS4gQW55d2F5 LCB0aGF0J3MgZm9yIHRoZSBYZW4gbWFpbnRhaW5lcnMgdG8KPj4+Pj4+Pj4gZGVjaWRlLgo+Pj4+ Pj4+Pgo+Pj4+Pj4+PiBNb3JlIGltcG9ydGFudGx5LCBteSBvdGhlciBxdWVzdGlvbiBzdGlsbCBz dGFuZDogbW9zdCB0cmFwIGZ1bmN0aW9ucyBkbwo+Pj4+Pj4+PiByZXF1aXJlIFZNQ1IgYXMgYW4g aW5wdXQuIFdoeSBtb3ZpbmcgaXQgdG8gdGhlIGxlYWYgZnVuY3Rpb25zPwo+Pj4+Pj4+IFNhbWUg cmVhc29uLCBJIHdhcyBrZWVwaW5nIHRoZSBpbnRlcmZhY2Ugc2FtZSBvZiBhbGwgaGFuZGxlX1hY WCBmdW5jdGlvbnMKPj4+Pj4+PiBoYW5kbGVfWFhYKHJlZ3MsIGhzciwgLi4uKQo+Pj4+Pj4+Cj4+ Pj4+Pj4gRG8geW91IHdhbnQgbWUgdG8gY2hhbmdlIGJvdGggdG8gbWF0Y2ggd2l0aCB5b3VyIHBh dGNoIG9yIGl0IGlzIG9rPwo+Pj4+Pj4gTXkgcHJlZmVyZW5jZSB3b3VsZCBiZSB0byBrZWVwIHRo ZSBjb2RlIGFzIGluaXRpYWxseSB3cml0dGVuLCBhcyB5b3UncmUKPj4+Pj4+IHBvaW50bGVzc2x5 IGNoYW5naW5nIHRoZSBmbG93LiBBZ2FpbiwgdGhhdCdzIGZvciB0aGUgbWFpbnRhaW5lcnMgdG8K Pj4+Pj4+IGNvbW1lbnQsIGJ1dCB5b3Ugc2hvdWxkIGF0IHRoZSB2ZXJ5IGxlYXN0IGluZGljYXRl IHRoYXQgY2hhbmdlIGluIHRoZQo+Pj4+Pj4gY29tbWl0IGxvZy4KPj4+Pj4gSSBkaWQgaW4gdGhl IGNvdmVyIGxldHRlcgo+Pj4+IHdoaWNoLCBjcnVjaWFsbHksIGRvZXNuJ3QgZW5kLXVwIGluIHRo ZSBjb21taXQuIE9oIHdlbGwuCj4+PiBJIGFtIHdvcmtpbmcgb24gdG8gYWRkcmVzcyB0aGUgdHdv IHBvaW50cywgd2lsbCBzZW5kIHYzIGxhdGVyIHRvZGF5Lgo+Pj4gLSB3aWxsIHJlbW92ZSBlbXVs YXRlIGZ1bmN0aW9ucwo+Pj4gLSBhbmQgcGFzcyB2bWNyIGFzIGEgcGFyYW0uCj4+Pgo+Pj4gV2ls bCBpdCBiZSBwb3NzaWJsZSB0byByZXZpZXcgdGhlIHJlbWFpbmluZyBwYXJ0IG9mIHRoZSBjb2Rl LCBzbyB0aGF0IEkKPj4+IGNhbiBhZGRyZXNzCj4+PiBvdGhlciBjb21tZW50cyBpbiB2MyBhcyB3 ZWxsLgo+PiBJIHN1Z2dlc3QgeW91IHdhaXQgdW50aWwgc29tZSBvdGhlciBmb2xrcyBoYXZlIGEg Y2hhbmNlIHRvIHByb3Blcmx5Cj4+IHJldmlldyB0aGUgc2VyaWVzLiBZb3Ugb25seSBwb3N0ZWQg dGhlIHN0dWZmIHRoaXMgbW9ybmluZywgZ2l2ZSB0aGVtIGEKPj4gY2hhbmNlLiBBIHdlZWsgYmV0 d2VlbiB0d28gdmVyc2lvbnMgaXMgcHJvYmFibHkgdGhlIHJpZ2h0IHRpbWluZy4KPiBYZW4gNC4x MSB3aW5kb3cgY2xvc2VzIHRoaXMgd2Vlaywgc28gSSBoYXZlIG9ubHkgZmV3IGRheXMuCj4gSSBh bSBob3BpbmcgdG8gZ2V0IHlvdXIgYWNrIGJlZm9yZSB0aGF0LgpNeSBBY2sgaXMgbm90IHRoZSBt YWludGFpbmVycycgKHdoaWNoIHlvdSdkIG5lZWQgYW55d2F5KSwgYW5kIHlvdXIKc2VyaWVzIGlz IG5vdCB0aGUgb25seSBvbmUgSSBuZWVkIHRvIHJldmlldy4gSSBkb24ndCBwbGFuIG9uIGhhdmlu Zwphbm90aGVyIGxvb2sgYXQgaXQgdGhpcyB3ZWVrIGFueXdheS4KCkFzIGZvciB0aGUgWGVuIGRl YWRsaW5lLCBJJ20gc3VyZSB0aGVyZSB3aWxsIGJlIGFub3RoZXIgb25lLgoKCU0uCi0tIApKYXp6 IGlzIG5vdCBkZWFkLiBJdCBqdXN0IHNtZWxscyBmdW5ueS4uLgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==