From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH 01/15] drm/amdgpu: Add encoder atomic check Date: Thu, 19 Sep 2019 19:37:31 -0400 Message-ID: <772d09cefa1adbcea9ab1fcebf225c96457bdf74.camel@redhat.com> References: <0dba0e8b72c146cc1d27c8895b1c732e719fc371.1568833906.git.mikita.lipski@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <0dba0e8b72c146cc1d27c8895b1c732e719fc371.1568833906.git.mikita.lipski-5C7GfCeVMHo@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: mikita.lipski-5C7GfCeVMHo@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org T2ssIHNvIHJldmlld2luZyB0aGlzIGlzIGtpbmQgb2YgZGlmZmljdWx0IGJlY2F1c2UgdGhpcyBz ZXJpZXMgZG9lc24ndCBhcHBseQp0byBkcm0tdGlwLCBhbmQgYWxzbyBkb2Vzbid0IG1ha2UgYW55 IG1lbnRpb24gb2Ygd2hhdCBicmFuY2ggaXQncyBzdXBwb3NlZCB0bwphcHBseSB0by4gU28gdGhl cmUncyBubyB3YXkgZm9yIG1lIHRvIGFwcGx5IGFueSBvZiB0aGVzZSBjaGFuZ2VzIGluIG15IHRy ZWUgdG8KZ2V0IGFuIGlkZWEgb2YgaG93IHRoaW5ncyBsb29rIG92ZXJhbGwgd2l0aCB0aGVzZSBw YXRjaGVzIGFwcGxpZWQuIENvdWxkIHlvdQpwbGVhc2UgYmFzZSB0aGUgbmV4dCBzZXJpZXMgb24g dG9wIG9mIGRybS10aXA/CgpJbiB0aGUgbWVhbiB0aW1lLCBJJ3ZlIGxlZnQgYXMgbXVjaCBmZWVk YmFjayBhcyBJIGNhbiBiZWxvdzoKCgpGb3Igc3RhcnRlcnMsIHRoaXMgcGF0Y2ggc2hvdWxkIGJl IGNvbWJpbmVkIHdpdGggdGhlIG5leHQgcGF0Y2ggaW4gdGhlIHNlcmllcwpzaW5jZSB5b3UgcmVh bGx5IGNhbid0IHVzZSBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIHdpdGhvdXQgdXNp bmcKZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoKS4gTW9yZSBkb3duIGJlbG93CgpP biBXZWQsIDIwMTktMDktMTggYXQgMTY6MjYgLTA0MDAsIG1pa2l0YS5saXBza2lAYW1kLmNvbSB3 cm90ZToKPiBGcm9tOiBNaWtpdGEgTGlwc2tpIDxtaWtpdGEubGlwc2tpQGFtZC5jb20+Cj4gCj4g W3doeV0KPiBJbiBvcmRlciB0byBjb21wbHkgd2l0aCBuZXcgTVNUIGF0b21pYyBjaGVjawo+IHdl IGhhdmUgdG8gZmluZCBhbmQgYWRkIFZDUEkgc2xvdHMgdG8gdGhlIHN0YXRlCj4gZHVyaW5nIGF0 b21pYyBjaGVjayB3aGVuZXZlciB0aGVpciBpcyBhIGNoYW5nZSBvbgo+IG1vZGUgb3IgY29ubmVj dG9yLgo+IFtob3ddCj4gLSBWZXJpZnkgdGhhdCBpdCBpcyBhIE1TVCBjb25uZWN0aW9uCj4gLSBD b252ZXJ0IG5ldyBzdHJlYW0ncyBjbG9jayBhbmQgYnBwCj4gLSBDYWxjdWxhdGUgUEJOIGJhc2Vk IG9uIHN0cmVhbSBwYXJhbWV0ZXJzCj4gLSBGaW5kIGFuZCBhZGQgVkNQSSBzbG90cyB0byB0aGUg c3RhdGUKPiAKPiBDYzogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNvbT4KPiBTaWduZWQtb2Zm LWJ5OiBNaWtpdGEgTGlwc2tpIDxtaWtpdGEubGlwc2tpQGFtZC5jb20+Cj4gLS0tCj4gIC4uLi9n cHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyB8IDU5ICsrKysrKysrKysr KysrKysrKysKPiAgMSBmaWxlIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+ IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+IGlu ZGV4IDdiMGNhMmUxZWQ4Yi4uZDcwMGI5NjJkMzM4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4gQEAgLTQ0MzIsNiArNDQz Miw2NSBAQCBzdGF0aWMgaW50IGRtX2VuY29kZXJfaGVscGVyX2F0b21pY19jaGVjayhzdHJ1Y3QK PiBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCQkgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPiAgCQkJCQkgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlCj4gKmNvbm5f c3RhdGUpCj4gIHsKPiArCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNydGNfc3Rh dGUtPnN0YXRlOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGNvbm5fc3Rh dGUtPmNvbm5lY3RvcjsKPiArCXN0cnVjdCBhbWRncHVfZG1fY29ubmVjdG9yICphY29ubmVjdG9y ID0KPiB0b19hbWRncHVfZG1fY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gKwlzdHJ1Y3QgZG1fY3J0 Y19zdGF0ZSAqZG1fbmV3X2NydGNfc3RhdGUgPQo+IHRvX2RtX2NydGNfc3RhdGUoY3J0Y19zdGF0 ZSk7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZj cnRjX3N0YXRlLQo+ID5hZGp1c3RlZF9tb2RlOwo+ICsJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xv Z3lfbWdyICptc3RfbWdyOwo+ICsJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqbXN0X3BvcnQ7Cj4g KwlpbnQgcGJuLCBzbG90cyxjbG9jaywgYnBwID0gMDsKPiArCj4gKwlpZiAoIWRtX25ld19jcnRj X3N0YXRlKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmICghYWNvbm5lY3RvciB8fCAhYWNvbm5l Y3Rvci0+cG9ydCkKPiArCQlyZXR1cm4gMDsKCi4uLmluIHdoYXQgc2l0dWF0aW9uIHdvdWxkIGFj b25uZWN0b3IgZXZlciBiZSBOVUxMPyBTYW1lIGZvciBhY29ubmVjdG9yLT5wb3J0LCAKdGhlIGRy bV9kcF9tc3RfcG9ydCBzdGF5cyBhcm91bmQgdW50aWwgdGhlIGRybV9jb25uZWN0b3IgaXMgZGVz dHJveWVkLgo+ICsKPiArCW1zdF9wb3J0ID0gYWNvbm5lY3Rvci0+cG9ydDsKPiArCW1zdF9tZ3Ig PSAmYWNvbm5lY3Rvci0+bXN0X3BvcnQtPm1zdF9tZ3I7Cj4gKwo+ICsJaWYgKCFtc3RfbWdyLT5t c3Rfc3RhdGUpCj4gKwkJcmV0dXJuIDA7CgpJJ20gY29uZnVzZWQgaGVyZSwgd2hhdCBpcyB0aGUg cHVycG9zZSBvZiB0aGlzIGNoZWNrPyBtc3RfbWdyLT5tc3Rfc3RhdGUKc2hvdWxkbid0IGJlIHRv dWNoZWQgZGlyZWN0bHkgZXZlciwgYXMgaXQgcmVmZXJzIHRvIHRoZSBjdXJyZW50bHkgY29tbWl0 dGVkCm1nciBzdGF0ZS4gdGhlIHdheSB0byByZXRyaWV2ZSB0aGUgbWdyJ3MgYXRvbWljIHN0YXRl IGlzOgoKaHR0cHM6Ly8wMS5vcmcvbGludXhncmFwaGljcy9nZngtZG9jcy9kcm0vZ3B1L2RybS1r bXMtaGVscGVycy5odG1sI2MuZHJtX2F0b21pY19nZXRfbXN0X3RvcG9sb2d5X3N0YXRlCgpFdmVu IHRoZW4gdGhvdWdoLCB0aGVyZSdzIG5vIGFjdHVhbCBuZWVkIHRvIGdyYWIgdGhlIG1zdF9zdGF0 ZSBoZXJlIG1hbnVhbGx5Lgpkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cygpIGRvZXMgdGhp cyBmb3IgeW91Cgo+ICsKPiArCWlmICghY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkICYm ICFjcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJc3dpdGNo IChjb252ZXJ0X2NvbG9yX2RlcHRoX2Zyb21fZGlzcGxheV9pbmZvKGNvbm5lY3RvciwgY29ubl9z dGF0ZSkpCj4gewo+ICsJY2FzZSBDT0xPUl9ERVBUSF82NjY6Cj4gKwkJYnBwID0gNjsKPiArCQli cmVhazsKPiArCWNhc2UgQ09MT1JfREVQVEhfODg4Ogo+ICsJCWJwcCA9IDg7Cj4gKwkJYnJlYWs7 Cj4gKwljYXNlIENPTE9SX0RFUFRIXzEwMTAxMDoKPiArCQlicHAgPSAxMDsKPiArCQlicmVhazsK PiArCWNhc2UgQ09MT1JfREVQVEhfMTIxMjEyOgo+ICsJCWJwcCA9IDEyOwo+ICsJCWJyZWFrOwo+ ICsJY2FzZSBDT0xPUl9ERVBUSF8xNDE0MTQ6Cj4gKwkJYnBwID0gMTQ7Cj4gKwkJYnJlYWs7Cj4g KwljYXNlIENPTE9SX0RFUFRIXzE2MTYxNjoKPiArCQlicHAgPSAxNjsKPiArCQlicmVhazsKPiAr CWRlZmF1bHQ6Cj4gKwkJQVNTRVJUKGJwcCAhPSAwKTsKPiArCQlicmVhazsKPiArCX0KPiArCj4g KwlicHAgKj0gMzsKPiArCWNsb2NrID0gYWRqdXN0ZWRfbW9kZS0+Y2xvY2s7Cj4gKwlwYm4gPSBk cm1fZHBfY2FsY19wYm5fbW9kZShjbG9jaywgYnBwKTsKCkkgbWlnaHQgaGF2ZSBmb3Jnb3R0ZW4g dG8gbWVudGlvbiB0aGlzIGluIHRoZSBkb2N1bWVudGF0aW9uIChJJ2xsIGRvdWJsZSBjaGVjawph ZnRlciBzZW5kaW5nIHRoaXMgb3V0IGFuZCBmaXggaXQgaWYgSSBkaWQuLi4pLCBidXQgaXQncyBh IGdvb2QgaWRlYSB0byBvbmx5CnJlY2FsY3VsYXRlIHRoZSBQQk4gd2hlbiAhZHJtX2F0b21pY19z dGF0ZS0+ZHVwbGljYXRlZC4gVGhlIHJlYXNvbiBmb3IgdGhpcyBpcwp0aGF0IHdoZW4gd2UncmUg cmVzdW1pbmcgdGhlIHN5c3RlbSBmcm9tIFMzLCB0aGVyZSdzIGEgY2hhbmNlIHRoYXQgTVNUCnRv cG9sb2dpZXMgd2hpY2ggd2VyZSBwcmV2aW91c2x5IGNvbm5lY3RlZCB0byB0aGUgc3lzdGVtIG1p Z2h0IG5vIGxvbmdlciBiZQpwcmVzZW50IG9yIG1heSBoYXZlIGNoYW5nZWQuCgpXaGVuIHJlc3Vt aW5nIGZyb20gUzMsIG9yIGFueSBvdGhlciBzaXR1YXRpb24gd2hlcmUgdGhlIEdQVSBuZWVkcyB0 byBzYXZlIGFuZApyZXN0b3JlIGl0J3MgYXRvbWljIHN0YXRlLCB0aGUgZ2VuZXJhbCBleHBlY3Rh dGlvbiBpcyB0aGF0IHRoZSBzdGF0ZSB0aGF0IHdhcwpzYXZlZCBpcyBiYXNpY2FsbHkgaWRlbnRp Y2FsIHRvIHRoZSBzdGF0ZSB0aGF0IHdhcyByZXN1bWVkIHNpbmNlIGEgZGlmZmVyZW50CnN0YXRl IHdvbid0IGhhdmUgdGhlIGd1YXJhbnRlZSBvZiBwYXNzaW5nIHRoZSBhdG9taWMgY2hlY2suIEFu IGV4YW1wbGUKc2NlbmFyaW8gKG5vdGUgdGhhdCB3ZSBkb24ndCByZXByb2JlIHRvcG9sb2dpZXMg YWZ0ZXIgcmVzdW1lIHlldCwgYnV0IHdlIHdpbGwKYmUgZG9pbmcgdGhpcyB2ZXJ5IHNvb24pOgoK ICogTVNUIGNvbm5lY3RvciBEUC00IHN0YXJ0cyBvZmYgd2l0aCBhIGJwcCBvZiA4CiAqIFRoZSBH UFUgaGFzIGEgVkNQSSB0YWJsZSB0aGF0IGlzIGN1cnJlbnRseSBmdWxsLCBhbmQgaW5jbHVkZXMg YW4gYWN0aXZlCiAgIGFsbG9jYXRpb24gZm9ywqBEUC00LgogKiBUaGUgc3lzdGVtIGdvZXMgaW50 byBTMywgYW5kIHRoZSBHUFUgaXMgc3VzcGVuZGVkIGFuZCB0aGUgYXRvbWljIHN0YXRlCiAgIHNh dmVkICh0aGlzIHNldHMgc3RhdGUtPmR1cGxpY2F0ZWQgdG8gdHJ1ZSkKICogV2hpbGUgdGhlIHN5 c3RlbSBpcyBzdGlsbCBpbiBTMywgdGhlIHVzZXIgcGx1Z3MgaW4gYSBtb25pdG9yIHRoYXQgaXMK ICAgaWRlbnRpY2FsLCBleGNlcHQgZm9yIHRoZSBmYWN0IGl0IGhhcyAxNmJwcAogKiBUaGUgc3lz dGVtIHJlc3VtZXMsIGFuZCB0aGUgR1BVIGJlZ2lucyByZXN1bWluZy4gYW1kZ3B1IGdvZXMgdG8g cmVzdG9yZSB0aGUKICAgYXRvbWljIHN0YXRlIGZyb20gYmVmb3JlIGVudGVyaW5nIFMzCiAqIEJl Y2F1c2UgRFAtNCBub3cgaGFzIGEgYnBwIG9mIDE2LCB3ZSB1c2UgdGhhdCBpbnN0ZWFkIG9mIHRo ZSBwcmV2aW91cyA4YnBwCiAgIGZyb20gYmVmb3JlIGFuZCBlbmQgdXAgd2l0aCBhIFZDUEkgYWxs b2NhdGlvbiB0aGF0IGlzIHR3aWNlIGFzIGxhcmdlIGFzCiAgIGJlZm9yZQogKiBUaGUgbmV3IHR3 aWNlLWFzLWxhcmdlIFZDUEkgYWxsb2NhdGlvbiBkb2VzIG5vdCBmaXQgYWxvbmcgd2l0aCB0aGUg cmVzdCBvZgogICB0aGUgYWxsb2NhdGlvbnMsIGFuZCBjYXVzZXMgdGhlIGF0b21pY19jaGVjayBk dXJpbmcgcmVzdW1lIHRvIGZhaWwgKG5vdGUKICAgdGhhdCBkdXJpbmcgcmVzdW1lLCBpdCdzIGV4 cGVjdGVkIHRoYXQgdGhlIGRyaXZlciBkb2VzIHdoYXRldmVyIGl0IHRha2VzIHRvCiAgIG1ha2Ug dGhlIGF0b21pY19jaGVjayBwYXNzKQoKQ29weWluZyB0aGUgUEJOIHZhbHVlIGFzLWlzIGZyb20g dGhlIGR1cGxpY2F0ZWQgYXRvbWljIHN0YXRlIHdoZW4gc3RhdGUtCj5kdXBsaWNhdGVkID09IHRy dWUgaW5zdGVhZCBvZiByZWNhbGN1bGF0aW5nIGl0IGFsbG93cyB1cyB0byBhdm9pZCB0aGlzIGJ5 Cm1ha2luZyBzdXJlIHRoYXQgcmVnYXJkbGVzcyBvZiBjaGFuZ2VzIHdpdGggdGhlIGNvbm5lY3Rv ciwgd2Ugc3RpbGwgZW5kIHVwCnJlc3RvcmluZyB0aGUgc2FtZSBWQ1BJIGFsbG9jYXRpb25zIHRo YXQgd2UgaGFkIGJlZm9yZS4KCk5vdGUtdGhpcyBkb2VzIHBvdGVudGlhbGx5IGxlYXZlIHVzIHdp dGggdGhlIHBvc3NpYmlsaXR5IHRoYXQgd2UgY291bGQgaW4KZmFjdCwgcmVzdW1lIGFuZCBlbmQg dXAgcmVzdG9yaW5nIGFuIGF0b21pYyBzdGF0ZSB3aXRoIGFuIGluY29ycmVjdCBWQ1BJCnRhYmxl LiBJIGRvbid0IHRoaW5rIHdlJ3ZlIHJlYWxseSBmaWd1cmVkIG91dCBhbnkgd2F5IGFyb3VuZCB0 aGlzLCBhbmQgd2l0aApzdXNwZW5kL3Jlc3VtZSBpdCdzIGV4cGVjdGVkIHRoYXQgdGhlIGRyaXZl ciBpcyBhYmxlIHRvIGNvcGUgd2l0aCBicmVha2FnZXMKbGlrZSB0aGlzIHVudGlsIGFub3RoZXIg YXRvbWljIG1vZGVzZXQgaGFwcGVucyB0byBjb3JyZWN0IHRoaW5ncy4gU28gZm9yIG5vdywKdGhh dCdzIE9LLgoKSSdkIHJlYWxseSByZWNvbW1lbmQgbG9va2luZyBhdCBub3V2ZWF1J3MgaW1wbGVt ZW50YXRpb24gb2YgdGhpcyBhcyBhbgpleGFtcGxlLCBzcGVjaWZpY2FsbHkgbnY1MF9tc3RvX2F0 b21pY19jaGVjaygpLgoKPiArCXNsb3RzID0gZHJtX2RwX2F0b21pY19maW5kX3ZjcGlfc2xvdHMo c3RhdGUsCj4gKwkJCQkJCW1zdF9tZ3IsCj4gKwkJCQkJCW1zdF9wb3J0LAo+ICsJCQkJCQlwYm4p Owo+ICsJaWYgKHNsb3RzIDwgMCkgewo+ICsJCURSTV9ERUJVR19LTVMoImZhaWxlZCBmaW5kaW5n IHZjcGkgc2xvdHM6JWRcbiIsIHNsb3RzKTsKCkkgdGhpbmsgeW91IG1lYW50IERSTV9ERUJVR19B VE9NSUMoKSBoZXJlCgpBbHNvLCB0aGlzIGlzIHN0aWxsIGEgYmlnIHN0ZXAgaW4gdGhlIHJpZ2h0 IGRpcmVjdGlvbiBidXQgdGhlcmUncyBhIGJpdCBtb3JlCm1pc3NpbmcgaGVyZS4gVGhpcyBjb2Rl IG9ubHkgY2hlY2tzIGlmIHNsb3RzICE9IDAgYW5kIHRoZW4gZHJvcHMgdGhlIHZhbHVlLgpMYXRl ciwgZG1faGVscGVyc19kcF9tc3Rfd3JpdGVfcGF5bG9hZF9hbGxvY2F0aW9uX3RhYmxlKCkgY2Fs Y3VsYXRlcyB0aGUgVkNQSQphbGxvY2F0aW9uIHRoYXQgYWN0dWFsbHkgZ2V0cyB1c2VkIGluIHRo ZSBjb21taXQgaW4gdGhlIGF0b21pYyBjb21taXQgdXNpbmcKdGhlIGRlcHJlY2F0ZWQgZHJtX2Rw X2ZpbmRfdmNwaV9zbG90cygpIGhlbHBlci4KCldoYXQgd2Ugd2FudCBoZXJlIGluc3RlYWQgaXMg dG8ganVzdCBkcm9wIHRoZSB1c2FnZSBvZgpkcm1fZHBfZmluZF92Y3BpX3Nsb3RzKCkgZW50aXJl bHksIHN0b3JlIHRoZSBWQ1BJIHNsb3QgYWxsb2NhdGlvbiByZXR1cm5lZCBieQpkcm1fZHBfYXRv bWljX2ZpbmRfdmNwaV9zbG90cygpIGluIHRoZSBkcml2ZXIncyBhdG9taWMgc3RhdGUsIHRoZW4g dXNlIHRoYXQKdmFsdWUgd2hlbiBwZXJmb3JtaW5nIHRoZSBhY3R1YWwgVkNQSSBhbGxvY2F0aW9u IGluCmRtX2hlbHBlcnNfZHBfbXN0X3dyaXRlX3BheWxvYWRfYWxsb2NhdGlvbl90YWJsZSgpIHVz aW5nCmRybV9kcF9tc3RfYWxsb2NhdGVfdmNwaSgpLiBNYXliZSBzdHJ1Y3QgZGNfc3RyZWFtX3N0 YXRlIGlzIGEgZ29vZCBwbGFjZSB0bwphZGQgdGhpcz8gKGZlZWwgZnJlZSB0byBzdG9yZSB0aGUg cGJuIGFzIHdlbGwgdGhlcmUsIHRvIHNhdmUgYSByZWR1bmRhbnQKZHJtX2RwX2NhbGNfcGJuX21v ZGUoKSBjYWxsKS4KCj4gKwkJcmV0dXJuIHNsb3RzOwo+ICsJfQo+ICAJcmV0dXJuIDA7Cj4gIH0K PiAgCi0tIApDaGVlcnMsCglMeXVkZSBQYXVsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2FtZC1nZng=