From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v7 06/19] drm/i915/dp: Compute DSC pipe config in atomic check Date: Fri, 2 Nov 2018 19:51:03 +0200 Message-ID: <20181102175103.GU9144@intel.com> References: <20181102064659.8991-1-manasi.d.navare@intel.com> <20181102064659.8991-7-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181102064659.8991-7-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBOb3YgMDEsIDIwMTggYXQgMTE6NDY6NDZQTSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBEU0MgcGFyYW1zIGxpa2UgdGhlIGVuYWJsZSwgY29tcHJlc3NlZCBicHAsIHNsaWNl IGNvdW50IGFuZAo+IGRzY19zcGxpdCBhcmUgYWRkZWQgdG8gdGhlIGludGVsX2NydGNfc3RhdGUu IFRoZXNlIHBhcmFtZXRlcnMKPiBhcmUgc2V0IGJhc2VkIG9uIHRoZSByZXF1ZXN0ZWQgbW9kZSBh bmQgYXZhaWxhYmxlIGxpbmsgcGFyYW1ldGVycwo+IGR1cmluZyB0aGUgcGlwZSBjb25maWd1cmF0 aW9uIGluIGF0b21pYyBjaGVjayBwaGFzZS4KPiBUaGVzZSB2YWx1ZXMgYXJlIHRoZW4gbGF0ZXIg dXNlZCB0byBwb3B1bGF0ZSB0aGUgcmVtYWluaW5nIERTQwo+IGFuZCBSQyBwYXJhbWV0ZXJzIGJl Zm9yZSBlbmJhbGluZyBEU0MgaW4gYXRvbWljIGNvbW1pdC4KPiAKPiB2MTA6Cj4gKiBBZGQgYSBo ZWxwZXIgZm9yIGRwX2RzYyBzdXBwb3J0IChWaWxsZSkKPiAqIFNldCBwaXBlX2NvbmZpZyB0byBt YXggYnBwLCBsaW5rIHBhcmFtcyBmb3IgRFNDIGZvciBub3cgKFZpbGxlKQo+ICogQ29tcHV0ZSBi cHAgLSB1c2UgZHAgZHNjIHN1cHBvcnQgaGVscGVyIChWaWxsZSkKPiB2OToKPiAqIFJlYmFzZSBv biB0b3Agb2YgZHJtLXRpcCB0aGF0IG5vdyB1c2VzIGZhc3RfbmFycm93IGNvbmZpZwo+IGZvciBl ZHAgKE1hbmFzaSkKPiB2ODoKPiAqIENoZWNrIGZvciBEU0MgYnBjIG5vdCAwIChtYW5hc2kpCj4g Cj4gdjc6Cj4gKiBGaXggaW5kZW50YXRpb24gaW4gY29tcHV0ZV9tX24gKE1hbmFzaSkKPiAKPiB2 NiAoRnJvbSBHYXVyYXYpOgo+ICogUmVtb3ZlIGZ1bmN0aW9uIGNhbGwgb2YgaW50ZWxfZHBfY29t cHV0ZV9kc2NfcGFyYW1zKCkgYW5kCj4gaW52b2tlIGludGVsX2RwX2NvbXB1dGVfZHNjX3BhcmFt cygpIGluIHRoZSBwYXRjaCB3aGVyZQo+IGl0IGlzIGRlZmluZWQgdG8gZml4IGNvbXBpbGF0aW9u IHdhcm5pbmcgKEdhdXJhdikKPiAKPiB2NToKPiBBZGQgZHJtX2RzY19jZmcgaW4gaW50ZWxfY3J0 Y19zdGF0ZSAoTWFuYXNpKQo+IAo+IHY0Ogo+ICogUmViYXNlIG9uIHJlZmFjdG9yaW5nIG9mIGlu dGVsX2RwX2NvbXB1dGVfY29uZmlnIG9uIHRpcCAoTWFuYXNpKQo+ICogQWRkIGEgY29tbWVudCB3 aHkgd2UgbmVlZCB0byBjaGVjayBQU1Igd2hpbGUgZW5hYmxpbmcgRFNDIChHYXVyYXYpCj4gCj4g djM6Cj4gKiBDaGVjayBQUFIgPiBtYXhfY2RjbG9jayB0byB1c2UgMiBWRFNDIGluc3RhbmNlcyAo VmlsbGUpCj4gCj4gdjI6Cj4gKiBBZGQgaWYtZWxzZSBmb3IgZURQL0RQIChHYXVyYXYpCj4gCj4g Q2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IFZpbGxl IFN5cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IENjOiBBbnVzaGEgU3Jp dmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+Cj4gQ2M6IEdhdXJhdiBLIFNpbmdoIDxn YXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8 bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogQW51c2hhIFNyaXZhdHNh IDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgo+IEFja2VkLWJ5OiBKYW5pIE5pa3VsYSA8amFu aS5uaWt1bGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgfCAgMjAgKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmggfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAg IHwgMTcyICsrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcF9tc3QuYyAgfCAgIDIgKy0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxNjcgaW5zZXJ0 aW9ucygrKSwgMzAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+IGluZGV4IGIyMTlkNTg1ODE2MC4uNDc3ZTUzYzM3MzUzIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC02NDQyLDcgKzY0NDIsNyBAQCBzdGF0aWMgaW50 IGlyb25sYWtlX2ZkaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YywKPiAgCj4gIAlwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzID0gbGFuZTsKPiAgCj4gLQlpbnRlbF9s aW5rX2NvbXB1dGVfbV9uKHBpcGVfY29uZmlnLT5waXBlX2JwcCwgbGFuZSwgZmRpX2RvdGNsb2Nr LAo+ICsJaW50ZWxfbGlua19jb21wdXRlX21fbihwaXBlX2NvbmZpZy0+cGlwZV9icHAsIDAsIGxh bmUsIGZkaV9kb3RjbG9jaywKPiAgCQkJICAgICAgIGxpbmtfYncsICZwaXBlX2NvbmZpZy0+ZmRp X21fbiwgZmFsc2UpOwo+ICAKPiAgCXJldCA9IGlyb25sYWtlX2NoZWNrX2ZkaV9sYW5lcyhkZXYs IGludGVsX2NydGMtPnBpcGUsIHBpcGVfY29uZmlnKTsKPiBAQCAtNjY3OSwxNyArNjY3OSwyNSBA QCBzdGF0aWMgdm9pZCBjb21wdXRlX21fbih1bnNpZ25lZCBpbnQgbSwgdW5zaWduZWQgaW50IG4s Cj4gIH0KPiAgCj4gIHZvaWQKPiAtaW50ZWxfbGlua19jb21wdXRlX21fbihpbnQgYml0c19wZXJf cGl4ZWwsIGludCBubGFuZXMsCj4gK2ludGVsX2xpbmtfY29tcHV0ZV9tX24oaW50IGJpdHNfcGVy X3BpeGVsLCB1aW50MTZfdCBjb21wcmVzc2VkX2JwcCwKPiArCQkgICAgICAgaW50IG5sYW5lcywK PiAgCQkgICAgICAgaW50IHBpeGVsX2Nsb2NrLCBpbnQgbGlua19jbG9jaywKPiAgCQkgICAgICAg c3RydWN0IGludGVsX2xpbmtfbV9uICptX24sCj4gIAkJICAgICAgIGJvb2wgY29uc3RhbnRfbikK PiAgewo+ICAJbV9uLT50dSA9IDY0Owo+ICAKPiAtCWNvbXB1dGVfbV9uKGJpdHNfcGVyX3BpeGVs ICogcGl4ZWxfY2xvY2ssCj4gLQkJICAgIGxpbmtfY2xvY2sgKiBubGFuZXMgKiA4LAo+IC0JCSAg ICAmbV9uLT5nbWNoX20sICZtX24tPmdtY2hfbiwKPiAtCQkgICAgY29uc3RhbnRfbik7Cj4gKwkv KiBGb3IgRFNDLCBEYXRhIE0vTiBjYWxjdWxhdGlvbiB1c2VzIGNvbXByZXNzZWQgQlBQICovCj4g KwlpZiAoY29tcHJlc3NlZF9icHApCj4gKwkJY29tcHV0ZV9tX24oY29tcHJlc3NlZF9icHAgKiBw aXhlbF9jbG9jaywKPiArCQkJICAgIGxpbmtfY2xvY2sgKiBubGFuZXMgKiA4LAo+ICsJCQkgICAg Jm1fbi0+Z21jaF9tLCAmbV9uLT5nbWNoX24sCj4gKwkJCSAgICBjb25zdGFudF9uKTsKPiArCWVs c2UKPiArCQljb21wdXRlX21fbihiaXRzX3Blcl9waXhlbCAqIHBpeGVsX2Nsb2NrLAo+ICsJCQkg ICAgbGlua19jbG9jayAqIG5sYW5lcyAqIDgsCj4gKwkJCSAgICAmbV9uLT5nbWNoX20sICZtX24t PmdtY2hfbiwKPiArCQkJICAgIGNvbnN0YW50X24pOwo+ICAKPiAgCWNvbXB1dGVfbV9uKHBpeGVs X2Nsb2NrLCBsaW5rX2Nsb2NrLAo+ICAJCSAgICAmbV9uLT5saW5rX20sICZtX24tPmxpbmtfbiwK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oCj4gaW5kZXggNWQ1MGRlY2JjYmI1Li5i MGIyM2UxZTkzOTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oCj4gQEAg LTQwNyw3ICs0MDcsOCBAQCBzdHJ1Y3QgaW50ZWxfbGlua19tX24gewo+ICAJICAgICAoX19pKSsr KSBcCj4gIAkJZm9yX2VhY2hfaWYocGxhbmUpCj4gIAo+IC12b2lkIGludGVsX2xpbmtfY29tcHV0 ZV9tX24oaW50IGJwcCwgaW50IG5sYW5lcywKPiArdm9pZCBpbnRlbF9saW5rX2NvbXB1dGVfbV9u KGludCBicHAsIHVpbnQxNl90IGNvbXByZXNzZWRfYnBwLAo+ICsJCQkgICAgaW50IG5sYW5lcywK PiAgCQkJICAgIGludCBwaXhlbF9jbG9jaywgaW50IGxpbmtfY2xvY2ssCj4gIAkJCSAgICBzdHJ1 Y3QgaW50ZWxfbGlua19tX24gKm1fbiwKPiAgCQkJICAgIGJvb2wgY29uc3RhbnRfbik7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggYjM5YjRiZGE4ZTQwLi4xYjEwZTI3YjNlMmIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtNDcsNiArNDcsOCBAQAo+ICAKPiAgLyog RFAgRFNDIHNtYWxsIGpvaW5lciBoYXMgMiBGSUZPcyBlYWNoIG9mIDY0MCB4IDYgYnl0ZXMgKi8K PiAgI2RlZmluZSBEUF9EU0NfTUFYX1NNQUxMX0pPSU5FUl9SQU1fQlVGRkVSCTYxNDQwCj4gKyNk ZWZpbmUgRFBfRFNDX01JTl9TVVBQT1JURURfQlBDCQk4Cj4gKyNkZWZpbmUgRFBfRFNDX01BWF9T VVBQT1JURURfQlBDCQkxMAo+ICAKPiAgLyogRFAgRFNDIHRocm91Z2hwdXQgdmFsdWVzIHVzZWQg Zm9yIHNsaWNlIGNvdW50IGNhbGN1bGF0aW9ucyBLUGl4ZWxzL3MgKi8KPiAgI2RlZmluZSBEUF9E U0NfUEVBS19QSVhFTF9SQVRFCQkJMjcyMDAwMAo+IEBAIC0xODQwLDYgKzE4NDIsMjkgQEAgc3Ry dWN0IGxpbmtfY29uZmlnX2xpbWl0cyB7Cj4gIAlpbnQgbWluX2JwcCwgbWF4X2JwcDsKPiAgfTsK PiAgCj4gK3N0YXRpYyBib29sIGludGVsX2RwX3NvdXJjZV9zdXBwb3J0c19kc2Moc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKPiArCQkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnKWEKCm5pdApjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZQoK c2FtZSBhbGwgb3ZlciB0aGUgc2VyaWVzLgoKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gKwo+ICsJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPCAxMCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwlpZiAocGlwZV9jb25maWct PmNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfQSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ ICsJcmV0dXJuIHRydWU7CgpyZXR1cm4gR0VOID49IDEwICYmIHRyYW5zY29kZXIgIT0gQTsKd291 bGQgc2VlbSBlYXNpZXIgdG8gcGFyc2UuCgpBbmQgdW50aWwgd2UgZ2V0IEZFQyB0aGlzIHNlZW1z IGxpa2UgaXQgbmVlZHMgdG8gc2F5Ci8qIEZJWE1FIEZFQyBuZWVkZWQgKi8KaWYgKCFpc19lZHAo KSkKCXJldHVybiBmYWxzZTsKCm90aGVyd2lzZSBJIHByZXN1bWUgd2UnbGwgdHJ5IHRvIGVuYWJs ZSBEU0Mgd2l0aG91dCBGRUMgYW5kIHRoYXQKd29uJ3QgZW5kIHdlbGwuCgo+ICt9Cj4gKwo+ICtz dGF0aWMgYm9vbCBpbnRlbF9kcF9zdXBwb3J0c19kc2Moc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKPiArCQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICt7Cj4g KwlpZiAoIWludGVsX2RwX3NvdXJjZV9zdXBwb3J0c19kc2MoaW50ZWxfZHAsIHBpcGVfY29uZmln KSB8fAo+ICsJICAgICFkcm1fZHBfc2lua19zdXBwb3J0c19kc2MoaW50ZWxfZHAtPmRzY19kcGNk KSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gIHN0 YXRpYyBpbnQgaW50ZWxfZHBfY29tcHV0ZV9icHAoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiAgCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+IEBAIC0x ODYzLDYgKzE4ODgsMTUgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21wdXRlX2JwcChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCX0KPiAgCX0KPiAgCj4gKwkvKiBJZiBEU0MgaXMgc3Vw cG9ydGVkLCB1c2UgdGhlIG1heCB2YWx1ZSByZXBvcnRlZCBieSBwYW5lbCAqLwo+ICsJaWYgKGlu dGVsX2RwX3N1cHBvcnRzX2RzYyhpbnRlbF9kcCwgcGlwZV9jb25maWcpKSB7Cj4gKwkJYnBjID0g bWluX3QodTgsCj4gKwkJCSAgICBkcm1fZHBfZHNjX3NpbmtfbWF4X2NvbG9yX2RlcHRoKGludGVs X2RwLT5kc2NfZHBjZCksCj4gKwkJCSAgICBEUF9EU0NfTUFYX1NVUFBPUlRFRF9CUEMpOwo+ICsJ CWlmIChicGMpCj4gKwkJCWJwcCA9IG1pbihicHAsIDMqYnBjKTsKPiArCX0KPiArCj4gIAlyZXR1 cm4gYnBwOwo+ICB9Cj4gIAo+IEBAIC0xOTIzLDEyICsxOTU3LDEwIEBAIGludGVsX2RwX2NvbXB1 dGVfbGlua19jb25maWdfd2lkZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCQkJbGlu a19jbG9jayA9IGludGVsX2RwLT5jb21tb25fcmF0ZXNbY2xvY2tdOwo+ICAJCQkJbGlua19hdmFp bCA9IGludGVsX2RwX21heF9kYXRhX3JhdGUobGlua19jbG9jaywKPiAgCQkJCQkJCQkgICAgbGFu ZV9jb3VudCk7Cj4gLQo+ICAJCQkJaWYgKG1vZGVfcmF0ZSA8PSBsaW5rX2F2YWlsKSB7Cj4gIAkJ CQkJcGlwZV9jb25maWctPmxhbmVfY291bnQgPSBsYW5lX2NvdW50Owo+ICAJCQkJCXBpcGVfY29u ZmlnLT5waXBlX2JwcCA9IGJwcDsKPiAgCQkJCQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IGxp bmtfY2xvY2s7Cj4gLQo+ICAJCQkJCXJldHVybiB0cnVlOwo+ICAJCQkJfQo+ICAJCQl9Cj4gQEAg LTE5NTksMTIgKzE5OTEsMTAgQEAgaW50ZWxfZHBfY29tcHV0ZV9saW5rX2NvbmZpZ19mYXN0KHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCQlsaW5rX2Nsb2NrID0gaW50ZWxfZHAtPmNv bW1vbl9yYXRlc1tjbG9ja107Cj4gIAkJCQlsaW5rX2F2YWlsID0gaW50ZWxfZHBfbWF4X2RhdGFf cmF0ZShsaW5rX2Nsb2NrLAo+ICAJCQkJCQkJCSAgICBsYW5lX2NvdW50KTsKPiAtCj4gIAkJCQlp ZiAobW9kZV9yYXRlIDw9IGxpbmtfYXZhaWwpIHsKPiAgCQkJCQlwaXBlX2NvbmZpZy0+bGFuZV9j b3VudCA9IGxhbmVfY291bnQ7Cj4gIAkJCQkJcGlwZV9jb25maWctPnBpcGVfYnBwID0gYnBwOwo+ ICAJCQkJCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gbGlua19jbG9jazsKPiAtCgpMZWZ0b3Zl ciBjaGFuZ2VzLiBJbmNyZWFzZXMgdGhlIGNoYW5jZSBvZiBjb25mbGljdHMuCgo+ICAJCQkJCXJl dHVybiB0cnVlOwo+ICAJCQkJfQo+ICAJCQl9Cj4gQEAgLTE5NzQsNiArMjAwNCw4MSBAQCBpbnRl bF9kcF9jb21wdXRlX2xpbmtfY29uZmlnX2Zhc3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiAgCXJldHVybiBmYWxzZTsKPiAgfQo+ICAKPiArc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2Nv bXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gKwkJCQkJc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICsJCQkJCWNvbnN0IHN0cnVjdCBsaW5rX2Nv bmZpZ19saW1pdHMgKmxpbWl0cykKPiArewo+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq ZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiAr CXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGU7Cj4gKwl1MTYgZHNjX21heF9vdXRwdXRfYnBwID0gMDsKPiArCXU4 IGRzY19kcF9zbGljZV9jb3VudCA9IDA7Cj4gKwo+ICsJaWYgKCFpbnRlbF9kcF9zdXBwb3J0c19k c2MoaW50ZWxfZHAsIHBpcGVfY29uZmlnKSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJLyog RFNDIG5vdCBzdXBwb3J0ZWQgZm9yIERTQyBzaW5rIEJQQyA8IDggKi8KPiArCWlmIChsaW1pdHMt Pm1heF9icHAgPCAzICogRFBfRFNDX01JTl9TVVBQT1JURURfQlBDKSB7Cj4gKwkJRFJNX0RFQlVH X0tNUygiTm8gRFNDIHN1cHBvcnQgZm9yIGxlc3MgdGhhbiA4YnBjXG4iKTsKPiArCQlyZXR1cm4g ZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIEZvciBub3cgZW5hYmxlIERTQyBmb3IgbWF4 IGJwcCwgbWF4IGxpbmsgcmF0ZSwgbWF4IGxhbmUgY291bnQuCj4gKwkgKiBPcHRpbWl6ZSB0aGlz IGxhdGVyIGZvciB0aGUgbWluaW11bSBwb3NzaWJsZSBsaW5rIHJhdGUvbGFuZSBjb3VudAo+ICsJ ICogd2l0aCBEU0MgZW5hYmxlZCBmb3IgdGhlIHJlcXVlc3RlZCBtb2RlLgo+ICsJICovCj4gKwlw aXBlX2NvbmZpZy0+cGlwZV9icHAgPSBsaW1pdHMtPm1heF9icHA7Cj4gKwlwaXBlX2NvbmZpZy0+ cG9ydF9jbG9jayA9IGludGVsX2RwLT5jb21tb25fcmF0ZXNbbGltaXRzLT5tYXhfY2xvY2tdOwo+ ICsJcGlwZV9jb25maWctPmxhbmVfY291bnQgPSBsaW1pdHMtPm1heF9sYW5lX2NvdW50Owo+ICsK PiArCWlmIChpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKSB7Cj4gKwkJcGlwZV9jb25maWctPmRz Y19wYXJhbXMuY29tcHJlc3NlZF9icHAgPQo+ICsJCQlkcm1fZWRwX2RzY19zaW5rX291dHB1dF9i cHAoaW50ZWxfZHAtPmRzY19kcGNkKSA+PiA0Owo+ICsJCXBpcGVfY29uZmlnLT5kc2NfcGFyYW1z LnNsaWNlX2NvdW50ID0KPiArCQkJZHJtX2RwX2RzY19zaW5rX21heF9zbGljZV9jb3VudChpbnRl bF9kcC0+ZHNjX2RwY2QsCj4gKwkJCQkJCQl0cnVlKTsKPiArCX0gZWxzZSB7Cj4gKwkJZHNjX21h eF9vdXRwdXRfYnBwID0KPiArCQkJaW50ZWxfZHBfZHNjX2dldF9vdXRwdXRfYnBwKHBpcGVfY29u ZmlnLT5wb3J0X2Nsb2NrLAo+ICsJCQkJCQkgICAgcGlwZV9jb25maWctPmxhbmVfY291bnQsCj4g KwkJCQkJCSAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ICsJCQkJCQkgICAgYWRqdXN0 ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSk7Cj4gKwkJZHNjX2RwX3NsaWNlX2NvdW50ID0KPiArCQkJ aW50ZWxfZHBfZHNjX2dldF9zbGljZV9jb3VudChpbnRlbF9kcCwKPiArCQkJCQkJICAgICBhZGp1 c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ICsJCQkJCQkgICAgIGFkanVzdGVkX21vZGUtPmNydGNf aGRpc3BsYXkpOwo+ICsJCWlmICghKGRzY19tYXhfb3V0cHV0X2JwcCAmJiBkc2NfZHBfc2xpY2Vf Y291bnQpKSB7Cj4gKwkJCURSTV9ERUJVR19LTVMoIkNvbXByZXNzZWQgQlBQL1NsaWNlIENvdW50 IG5vdCBzdXBwb3J0ZWRcbiIpOwo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwkJfQo+ICsJCXBpcGVf Y29uZmlnLT5kc2NfcGFyYW1zLmNvbXByZXNzZWRfYnBwID0gZHNjX21heF9vdXRwdXRfYnBwID4+ IDQ7Cj4gKwkJcGlwZV9jb25maWctPmRzY19wYXJhbXMuc2xpY2VfY291bnQgPSBkc2NfZHBfc2xp Y2VfY291bnQ7Cj4gKwl9Cj4gKwkvKgo+ICsJICogVkRTQyBlbmdpbmUgb3BlcmF0ZXMgYXQgMSBQ aXhlbCBwZXIgY2xvY2ssIHNvIGlmIHBlYWsgcGl4ZWwgcmF0ZQo+ICsJICogaXMgZ3JlYXRlciB0 aGFuIHRoZSBtYXhpbXVtIENkY2xvY2sgYW5kIGlmIHNsaWNlIGNvdW50IGlzIGV2ZW4KPiArCSAq IHRoZW4gd2UgbmVlZCB0byB1c2UgMiBWRFNDIGluc3RhbmNlcy4KPiArCSAqLwo+ICsJcGlwZV9j b25maWctPmRzY19wYXJhbXMuZHNjX3NwbGl0ID0gZmFsc2U7CgpUaGlzIHdpbGwgYmUgZmFsc2Ug YWxyZWFkeSwgbm8gbmVlZCB0byBzZXQgYWdhaW4uCgo+ICsJaWYgKGFkanVzdGVkX21vZGUtPmNy dGNfY2xvY2sgPiBkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEpIHsKPiArCQlpZiAocGlwZV9jb25m aWctPmRzY19wYXJhbXMuc2xpY2VfY291bnQgPiAxKSB7Cj4gKwkJCXBpcGVfY29uZmlnLT5kc2Nf cGFyYW1zLmRzY19zcGxpdCA9IHRydWU7Cj4gKwkJfSBlbHNlIHsKPiArCQkJRFJNX0RFQlVHX0tN UygiQ2Fubm90IHNwbGl0IHN0cmVhbSB0byB1c2UgMiBWRFNDIGluc3RhbmNlc1xuIik7Cj4gKwkJ CXJldHVybiBmYWxzZTsKPiArCQl9Cj4gKwl9Cj4gKwlwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5j b21wcmVzc2lvbl9lbmFibGUgPSB0cnVlOwo+ICsJRFJNX0RFQlVHX0tNUygiRFAgRFNDIGNvbXB1 dGVkIHdpdGggSW5wdXQgQnBwID0gJWQgIgo+ICsJCSAgICAgICJDb21wcmVzc2VkIEJwcCA9ICVk IFNsaWNlIENvdW50ID0gJWRcbiIsCj4gKwkJICAgICAgcGlwZV9jb25maWctPnBpcGVfYnBwLAo+ ICsJCSAgICAgIHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLmNvbXByZXNzZWRfYnBwLAo+ICsJCSAg ICAgIHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLnNsaWNlX2NvdW50KTsKPiArCj4gKwlyZXR1cm4g dHJ1ZTsKPiArfQo+ICsKPiAgc3RhdGljIGJvb2wKPiAgaW50ZWxfZHBfY29tcHV0ZV9saW5rX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJICAgICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gQEAgLTE5ODIsNiArMjA4Nyw3IEBAIGludGVs X2RwX2NvbXB1dGVfbGlua19jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g IAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5i YXNlKTsKPiAgCXN0cnVjdCBsaW5rX2NvbmZpZ19saW1pdHMgbGltaXRzOwo+ICAJaW50IGNvbW1v bl9sZW47Cj4gKwlib29sIHJldCA9IGZhbHNlOwo+ICAKPiAgCWNvbW1vbl9sZW4gPSBpbnRlbF9k cF9jb21tb25fbGVuX3JhdGVfbGltaXQoaW50ZWxfZHAsCj4gIAkJCQkJCSAgICBpbnRlbF9kcC0+ bWF4X2xpbmtfcmF0ZSk7Cj4gQEAgLTE5OTUsOCArMjEwMSwxMiBAQCBpbnRlbF9kcF9jb21wdXRl X2xpbmtfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJbGltaXRzLm1p bl9sYW5lX2NvdW50ID0gMTsKPiAgCWxpbWl0cy5tYXhfbGFuZV9jb3VudCA9IGludGVsX2RwX21h eF9sYW5lX2NvdW50KGludGVsX2RwKTsKPiAgCj4gLQlsaW1pdHMubWluX2JwcCA9IDYgKiAzOwo+ ICAJbGltaXRzLm1heF9icHAgPSBpbnRlbF9kcF9jb21wdXRlX2JwcChpbnRlbF9kcCwgcGlwZV9j b25maWcpOwo+ICsJaWYgKGludGVsX2RwX3N1cHBvcnRzX2RzYyhpbnRlbF9kcCwgcGlwZV9jb25m aWcpICYmCj4gKwkgICAgbGltaXRzLm1heF9icHAgPj0gRFBfRFNDX01JTl9TVVBQT1JURURfQlBD KjMpCj4gKwkJbGltaXRzLm1pbl9icHAgPSBEUF9EU0NfTUlOX1NVUFBPUlRFRF9CUEMgKiAzOwo+ ICsJZWxzZQo+ICsJCWxpbWl0cy5taW5fYnBwID0gNiAqIDM7Cj4gIAo+ICAJaWYgKGludGVsX2Rw X2lzX2VkcChpbnRlbF9kcCkgJiYgaW50ZWxfZHAtPmVkcF9kcGNkWzBdIDwgRFBfRURQXzE0KSB7 Cj4gIAkJLyoKPiBAQCAtMjAyMCw3ICsyMTMwLDcgQEAgaW50ZWxfZHBfY29tcHV0ZV9saW5rX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkgICAgICBpbnRlbF9kcC0+ Y29tbW9uX3JhdGVzW2xpbWl0cy5tYXhfY2xvY2tdLAo+ICAJCSAgICAgIGxpbWl0cy5tYXhfYnBw LCBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrKTsKPiAgCj4gLQlpZiAoaW50ZWxfZHBfaXNfZWRw KGludGVsX2RwKSkgewo+ICsJaWYgKGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpCj4gIAkJLyoK PiAgCQkgKiBPcHRpbWl6ZSBmb3IgZmFzdCBhbmQgbmFycm93LiBlRFAgMS4zIHNlY3Rpb24gMy4z IGFuZCBlRFAgMS40Cj4gIAkJICogc2VjdGlvbiBBLjE6ICJJdCBpcyByZWNvbW1lbmRlZCB0aGF0 IHRoZSBtaW5pbXVtIG51bWJlciBvZgo+IEBAIC0yMDMwLDI2ICsyMTQwLDQyIEBAIGludGVsX2Rw X2NvbXB1dGVfbGlua19jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJ ICogTm90ZSB0aGF0IHdlIHVzZSB0aGUgbWF4IGNsb2NrIGFuZCBsYW5lIGNvdW50IGZvciBlRFAg MS4zIGFuZAo+ICAJCSAqIGVhcmxpZXIsIGFuZCBmYXN0IHZzLiB3aWRlIGlzIGlycmVsZXZhbnQu Cj4gIAkJICovCj4gLQkJaWYgKCFpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnX2Zhc3QoaW50 ZWxfZHAsIHBpcGVfY29uZmlnLAo+IC0JCQkJCQkgICAgICAgJmxpbWl0cykpCj4gLQkJCXJldHVy biBmYWxzZTsKPiAtCX0gZWxzZSB7Cj4gKwkJcmV0ID0gaW50ZWxfZHBfY29tcHV0ZV9saW5rX2Nv bmZpZ19mYXN0KGludGVsX2RwLCBwaXBlX2NvbmZpZywKPiArCQkJCQkJCSZsaW1pdHMpOwo+ICsJ ZWxzZQo+ICAJCS8qIE9wdGltaXplIGZvciBzbG93IGFuZCB3aWRlLiAqLwo+IC0JCWlmICghaW50 ZWxfZHBfY29tcHV0ZV9saW5rX2NvbmZpZ193aWRlKGludGVsX2RwLCBwaXBlX2NvbmZpZywKPiAt CQkJCQkJICAgICAgICZsaW1pdHMpKQo+ICsJCXJldCA9IGludGVsX2RwX2NvbXB1dGVfbGlua19j b25maWdfd2lkZShpbnRlbF9kcCwgcGlwZV9jb25maWcsCj4gKwkJCQkJCQkmbGltaXRzKTsKPiAr Cj4gKwkvKiBlbmFibGUgY29tcHJlc3Npb24gaWYgdGhlIG1vZGUgZG9lc24ndCBmaXQgYXZhaWxh YmxlIEJXICovCj4gKwlpZiAoIXJldCkgewo+ICsJCWlmICghaW50ZWxfZHBfZHNjX2NvbXB1dGVf Y29uZmlnKGludGVsX2RwLCBwaXBlX2NvbmZpZywKPiArCQkJCQkJICZsaW1pdHMpKQo+ICAJCQly ZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+IC0JRFJNX0RFQlVHX0tNUygiRFAgbGFuZSBjb3VudCAl ZCBjbG9jayAlZCBicHAgJWRcbiIsCj4gLQkJICAgICAgcGlwZV9jb25maWctPmxhbmVfY291bnQs IHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrLAo+IC0JCSAgICAgIHBpcGVfY29uZmlnLT5waXBlX2Jw cCk7Cj4gKwlpZiAocGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3Npb25fZW5hYmxlKSB7 Cj4gKwkJRFJNX0RFQlVHX0tNUygiRFAgbGFuZSBjb3VudCAlZCBjbG9jayAlZCBJbnB1dCBicHAg JWQgQ29tcHJlc3NlZCBicHAgJWRcbiIsCj4gKwkJCSAgICAgIHBpcGVfY29uZmlnLT5sYW5lX2Nv dW50LCBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiArCQkJICAgICAgcGlwZV9jb25maWctPnBp cGVfYnBwLAo+ICsJCQkgICAgICBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2VkX2Jw cCk7Cj4gIAo+IC0JRFJNX0RFQlVHX0tNUygiRFAgbGluayByYXRlIHJlcXVpcmVkICVpIGF2YWls YWJsZSAlaVxuIiwKPiAtCQkgICAgICBpbnRlbF9kcF9saW5rX3JlcXVpcmVkKGFkanVzdGVkX21v ZGUtPmNydGNfY2xvY2ssCj4gLQkJCQkJICAgICBwaXBlX2NvbmZpZy0+cGlwZV9icHApLAo+IC0J CSAgICAgIGludGVsX2RwX21heF9kYXRhX3JhdGUocGlwZV9jb25maWctPnBvcnRfY2xvY2ssCj4g LQkJCQkJICAgICBwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCkpOwo+ICsJCURSTV9ERUJVR19LTVMo IkRQIGxpbmsgcmF0ZSByZXF1aXJlZCAlaSBhdmFpbGFibGUgJWlcbiIsCj4gKwkJCSAgICAgIGlu dGVsX2RwX2xpbmtfcmVxdWlyZWQoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPiArCQkJCQkJ ICAgICBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2VkX2JwcCksCj4gKwkJCSAgICAg IGludGVsX2RwX21heF9kYXRhX3JhdGUocGlwZV9jb25maWctPnBvcnRfY2xvY2ssCj4gKwkJCQkJ CSAgICAgcGlwZV9jb25maWctPmxhbmVfY291bnQpKTsKPiArCX0gZWxzZSB7Cj4gKwkJRFJNX0RF QlVHX0tNUygiRFAgbGFuZSBjb3VudCAlZCBjbG9jayAlZCBicHAgJWRcbiIsCj4gKwkJCSAgICAg IHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LCBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiArCQkJ ICAgICAgcGlwZV9jb25maWctPnBpcGVfYnBwKTsKPiAgCj4gKwkJRFJNX0RFQlVHX0tNUygiRFAg bGluayByYXRlIHJlcXVpcmVkICVpIGF2YWlsYWJsZSAlaVxuIiwKPiArCQkJICAgICAgaW50ZWxf ZHBfbGlua19yZXF1aXJlZChhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ICsJCQkJCQkgICAg IHBpcGVfY29uZmlnLT5waXBlX2JwcCksCj4gKwkJCSAgICAgIGludGVsX2RwX21heF9kYXRhX3Jh dGUocGlwZV9jb25maWctPnBvcnRfY2xvY2ssCj4gKwkJCQkJCSAgICAgcGlwZV9jb25maWctPmxh bmVfY291bnQpKTsKPiArCX0KPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+IEBAIC0yMTMzLDcg KzIyNTksOSBAQCBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiAgCQkJaW50ZWxfY29ubl9zdGF0ZS0+YnJvYWRjYXN0X3JnYiA9PSBJTlRFTF9C Uk9BRENBU1RfUkdCX0xJTUlURUQ7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfbGlua19jb21wdXRlX21f bihwaXBlX2NvbmZpZy0+cGlwZV9icHAsIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+ICsJaW50 ZWxfbGlua19jb21wdXRlX21fbihwaXBlX2NvbmZpZy0+cGlwZV9icHAsCj4gKwkJCSAgICAgICBw aXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2VkX2JwcCwKPiArCQkJICAgICAgIHBpcGVf Y29uZmlnLT5sYW5lX2NvdW50LAo+ICAJCQkgICAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9j aywKPiAgCQkJICAgICAgIHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrLAo+ICAJCQkgICAgICAgJnBp cGVfY29uZmlnLT5kcF9tX24sCj4gQEAgLTIxNDIsNyArMjI3MCw3IEBAIGludGVsX2RwX2NvbXB1 dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJaWYgKGludGVsX2Nv bm5lY3Rvci0+cGFuZWwuZG93bmNsb2NrX21vZGUgIT0gTlVMTCAmJgo+ICAJCWRldl9wcml2LT5k cnJzLnR5cGUgPT0gU0VBTUxFU1NfRFJSU19TVVBQT1JUKSB7Cj4gIAkJCXBpcGVfY29uZmlnLT5o YXNfZHJycyA9IHRydWU7Cj4gLQkJCWludGVsX2xpbmtfY29tcHV0ZV9tX24ocGlwZV9jb25maWct PnBpcGVfYnBwLAo+ICsJCQlpbnRlbF9saW5rX2NvbXB1dGVfbV9uKHBpcGVfY29uZmlnLT5waXBl X2JwcCwgMCwKPiAgCQkJCQkgICAgICAgcGlwZV9jb25maWctPmxhbmVfY291bnQsCj4gIAkJCQkJ ICAgICAgIGludGVsX2Nvbm5lY3Rvci0+cGFuZWwuZG93bmNsb2NrX21vZGUtPmNsb2NrLAo+ICAJ CQkJCSAgICAgICBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcF9tc3QuYwo+IGluZGV4IDhiNzFkNjRlYmQ5ZC4uZTAyY2FlZGQ0NDNjIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMKPiBAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgYm9v bCBpbnRlbF9kcF9tc3RfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWludGVsX2xpbmtfY29tcHV0ZV9tX24oYnBwLCBsYW5l X2NvdW50LAo+ICsJaW50ZWxfbGlua19jb21wdXRlX21fbihicHAsIDAsIGxhbmVfY291bnQsCj4g IAkJCSAgICAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ICAJCQkgICAgICAgcGlwZV9j b25maWctPnBvcnRfY2xvY2ssCj4gIAkJCSAgICAgICAmcGlwZV9jb25maWctPmRwX21fbiwKPiAt LSAKPiAyLjE4LjAKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==