From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Ripard Subject: [RFC PATCH 03/20] drm/fourcc: Pass the format_info pointer to drm_format_plane_cpp Date: Tue, 19 Mar 2019 22:57:08 +0100 Message-ID: <6e5850afb02cc2851fe3229122fb3cb4869dc108.1553032382.git-series.maxime.ripard@bootlin.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by gabe.freedesktop.org (Postfix) with ESMTPS id 044BE89B96 for ; Tue, 19 Mar 2019 21:57:41 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , David Airlie , Maarten Lankhorst , Sean Paul , Maxime Ripard , Mauro Carvalho Chehab Cc: Sakari Ailus , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Paul Kocialkowski , Hans Verkuil , Laurent Pinchart , Thomas Petazzoni , linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org U28gZmFyLCB0aGUgZHJtX2Zvcm1hdF9wbGFuZV9jcHAgZnVuY3Rpb24gd2FzIG9wZXJhdGluZyBv biB0aGUgZm9ybWF0J3MKZm91cmNjIGFuZCB3YXMgZG9pbmcgYSBsb29rdXAgdG8gcmV0cmlldmUg dGhlIGRybV9mb3JtYXRfaW5mbyBzdHJ1Y3R1cmUgYW5kCnJldHVybiB0aGUgY3BwLgoKSG93ZXZl ciwgdGhpcyBpcyBpbmVmZmljaWVudCBzaW5jZSBpbiBtb3N0IGNhc2VzLCB3ZSB3aWxsIGhhdmUg dGhlCmRybV9mb3JtYXRfaW5mbyBwb2ludGVyIGFscmVhZHkgYXZhaWxhYmxlIHNvIHdlIHNob3Vs ZG4ndCBoYXZlIHRvIHBlcmZvcm0gYQpuZXcgbG9va3VwLiBTb21lIGRybV9mb3VyY2MgZnVuY3Rp b25zIGFsc28gYWxyZWFkeSBvcGVyYXRlIG9uIHRoZQpkcm1fZm9ybWF0X2luZm8gcG9pbnRlciBm b3IgdGhhdCByZWFzb24sIHNvIHRoZSBBUEkgaXMgcXVpdGUgaW5jb25zaXN0ZW50CnRoZXJlLgoK TGV0J3MgZm9sbG93IHRoZSBsYXR0ZXIgcGF0dGVybiBhbmQgcmVtb3ZlIHRoZSBleHRyYSBsb29r dXAgd2hpbGUgYmVpbmcgYQpiaXQgbW9yZSBjb25zaXN0ZW50LgoKU2lnbmVkLW9mZi1ieTogTWF4 aW1lIFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBib290bGluLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYyAgICAgICAgIHwgNCArKystCiBkcml2ZXJzL2dwdS9k cm0vYXJtL21hbGlkcF9ody5jICAgICAgICAgICAgICAgIHwgNCArKystCiBkcml2ZXJzL2dwdS9k cm0vY2lycnVzL2NpcnJ1c19mYmRldi5jICAgICAgICAgIHwgNCArKystCiBkcml2ZXJzL2dwdS9k cm0vY2lycnVzL2NpcnJ1c19tYWluLmMgICAgICAgICAgIHwgNCArKystCiBkcml2ZXJzL2dwdS9k cm0vZHJtX2NsaWVudC5jICAgICAgICAgICAgICAgICAgIHwgMyArKy0KIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fZmJfaGVscGVyLmMgICAgICAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL2dwdS9kcm0v ZHJtX2ZvdXJjYy5jICAgICAgICAgICAgICAgICAgIHwgNyArKy0tLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgICAgICAgIHwgMyArKy0KIGRyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHJtX2ZiLmMgICAgICAgICAgfCAyICstCiBkcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvbWRwNS9tZHA1X2NydGMuYyAgICAgIHwgMyArKy0KIGRyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9tZHA1L21kcDVfc21wLmMgICAgICAgfCAyICstCiBkcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9mYi5jICAgICAgICAgICAgICAgICAgIHwgMiArLQogZHJpdmVycy9ncHUvZHJtL3JhZGVv bi9yYWRlb25fZmIuYyAgICAgICAgICAgICB8IDQgKysrLQogZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL3JvY2tjaGlwX2RybV9mYi5jICAgICB8IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9zdG0vbHRk Yy5jICAgICAgICAgICAgICAgICAgICAgfCAyICstCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZmIu YyAgICAgICAgICAgICAgICAgICAgIHwgMiArLQogZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29y ZS90aW55ZHJtLWhlbHBlcnMuYyB8IDIgKy0KIGRyaXZlcnMvZ3B1L2RybS96dGUvenhfcGxhbmUu YyAgICAgICAgICAgICAgICAgfCAyICstCiBpbmNsdWRlL2RybS9kcm1fZm91cmNjLmggICAgICAg ICAgICAgICAgICAgICAgIHwgMiArLQogMTkgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygr KSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmIuYwpp bmRleCA1Y2JkZTc0Yjk3ZGQuLjQ4MTcwYTg0M2I0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2ZiLmMKQEAgLTEyMyw2ICsxMjMsOCBAQCBzdGF0aWMgaW50IGFtZGdwdWZiX2Ny ZWF0ZV9waW5uZWRfb2JqZWN0KHN0cnVjdCBhbWRncHVfZmJkZXYgKnJmYmRldiwKIAkJCQkJIHN0 cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKIAkJCQkJIHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqKmdvYmpfcCkKIHsKKwljb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvID0g ZHJtX2dldF9mb3JtYXRfaW5mbyhkZXYsCisJCQkJCQkJCSBtb2RlX2NtZCk7CiAJc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYgPSByZmJkZXYtPmFkZXY7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpnb2JqID0gTlVMTDsKIAlzdHJ1Y3QgYW1kZ3B1X2JvICphYm8gPSBOVUxMOwpAQCAtMTMzLDcg KzEzNSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1ZmJfY3JlYXRlX3Bpbm5lZF9vYmplY3Qoc3RydWN0 IGFtZGdwdV9mYmRldiAqcmZiZGV2LAogCWludCBoZWlnaHQgPSBtb2RlX2NtZC0+aGVpZ2h0Owog CXUzMiBjcHA7CiAKLQljcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChtb2RlX2NtZC0+cGl4ZWxf Zm9ybWF0LCAwKTsKKwljcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChpbmZvLCAwKTsKIAogCS8q IG5lZWQgdG8gYWxpZ24gcGl0Y2ggd2l0aCBjcnRjIGxpbWl0cyAqLwogCW1vZGVfY21kLT5waXRj aGVzWzBdID0gYW1kZ3B1X2FsaWduX3BpdGNoKGFkZXYsIG1vZGVfY21kLT53aWR0aCwgY3BwLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9tYWxpZHBfaHcuYyBiL2RyaXZlcnMvZ3B1 L2RybS9hcm0vbWFsaWRwX2h3LmMKaW5kZXggYjliZWQxMTM4ZmEzLi4wNzk3MWFkNTNiMjkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vbWFsaWRwX2h3LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FybS9tYWxpZHBfaHcuYwpAQCAtMzI2LDEyICszMjYsMTQgQEAgc3RhdGljIHZvaWQg bWFsaWRwNTAwX21vZGVzZXQoc3RydWN0IG1hbGlkcF9od19kZXZpY2UgKmh3ZGV2LCBzdHJ1Y3Qg dmlkZW9tb2RlICoKIAogc3RhdGljIGludCBtYWxpZHA1MDBfcm90bWVtX3JlcXVpcmVkKHN0cnVj dCBtYWxpZHBfaHdfZGV2aWNlICpod2RldiwgdTE2IHcsIHUxNiBoLCB1MzIgZm10KQogeworCWNv bnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm8gPSBkcm1fZm9ybWF0X2luZm8oZm10KTsK KwogCS8qCiAJICogRWFjaCBsYXllciBuZWVkcyBlbm91Z2ggcm90YXRpb24gbWVtb3J5IHRvIGZp dCA4IGxpbmVzCiAJICogd29ydGggb2YgcGl4ZWwgZGF0YS4gUmVxdWlyZWQgc2l6ZSBpcyB0aGVu OgogCSAqICAgIHNpemUgPSByb3RhdGVkX3dpZHRoICogKGJwcCAvIDgpICogODsKIAkgKi8KLQly ZXR1cm4gdyAqIGRybV9mb3JtYXRfcGxhbmVfY3BwKGZtdCwgMCkgKiA4OworCXJldHVybiB3ICog ZHJtX2Zvcm1hdF9wbGFuZV9jcHAoaW5mbywgMCkgKiA4OwogfQogCiBzdGF0aWMgdm9pZCBtYWxp ZHA1MDBfc2Vfd3JpdGVfcHBfY29lZmZ0YWIoc3RydWN0IG1hbGlkcF9od19kZXZpY2UgKmh3ZGV2 LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfZmJkZXYuYyBiL2Ry aXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX2ZiZGV2LmMKaW5kZXggMzlkZjYyYWNhYzY5Li43 NTk4NDdiYWZkYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX2Zi ZGV2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXNfZmJkZXYuYwpAQCAtMTM3 LDYgKzEzNyw4IEBAIHN0YXRpYyBpbnQgY2lycnVzZmJfY3JlYXRlX29iamVjdChzdHJ1Y3QgY2ly cnVzX2ZiZGV2ICphZmJkZXYsCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2Nt ZDIgKm1vZGVfY21kLAogCQkJICAgICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKmdvYmpfcCkK IHsKKwljb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvID0gZHJtX2dldF9mb3JtYXRf aW5mbyhkZXYsCisJCQkJCQkJCSBtb2RlX2NtZCk7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGFmYmRldi0+aGVscGVyLmRldjsKIAlzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2RldiA9IGRldi0+ ZGV2X3ByaXZhdGU7CiAJdTMyIGJwcDsKQEAgLTE0NCw3ICsxNDYsNyBAQCBzdGF0aWMgaW50IGNp cnJ1c2ZiX2NyZWF0ZV9vYmplY3Qoc3RydWN0IGNpcnJ1c19mYmRldiAqYWZiZGV2LAogCXN0cnVj dCBkcm1fZ2VtX29iamVjdCAqZ29iajsKIAlpbnQgcmV0ID0gMDsKIAotCWJwcCA9IGRybV9mb3Jt YXRfcGxhbmVfY3BwKG1vZGVfY21kLT5waXhlbF9mb3JtYXQsIDApICogODsKKwlicHAgPSBkcm1f Zm9ybWF0X3BsYW5lX2NwcChpbmZvLCAwKSAqIDg7CiAKIAlpZiAoIWNpcnJ1c19jaGVja19mcmFt ZWJ1ZmZlcihjZGV2LCBtb2RlX2NtZC0+d2lkdGgsIG1vZGVfY21kLT5oZWlnaHQsCiAJCQkJICAg ICAgYnBwLCBtb2RlX2NtZC0+cGl0Y2hlc1swXSkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vY2lycnVzL2NpcnJ1c19tYWluLmMgYi9kcml2ZXJzL2dwdS9kcm0vY2lycnVzL2NpcnJ1c19t YWluLmMKaW5kZXggNTdmOGZlNmQwMjBiLi42NmQwZDJjNTIxMWQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9jaXJydXMvY2lycnVzX21haW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vY2ly cnVzL2NpcnJ1c19tYWluLmMKQEAgLTQxLDEzICs0MSwxNSBAQCBjaXJydXNfdXNlcl9mcmFtZWJ1 ZmZlcl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAgICAgICBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbHAsCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1v ZGVfY21kKQogeworCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm8gPSBkcm1fZ2V0 X2Zvcm1hdF9pbmZvKGRldiwKKwkJCQkJCQkJIG1vZGVfY21kKTsKIAlzdHJ1Y3QgY2lycnVzX2Rl dmljZSAqY2RldiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv Ymo7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7CiAJdTMyIGJwcDsKIAlpbnQgcmV0Owog Ci0JYnBwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAobW9kZV9jbWQtPnBpeGVsX2Zvcm1hdCwgMCkg KiA4OworCWJwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGluZm8sIDApICogODsKIAogCWlmICgh Y2lycnVzX2NoZWNrX2ZyYW1lYnVmZmVyKGNkZXYsIG1vZGVfY21kLT53aWR0aCwgbW9kZV9jbWQt PmhlaWdodCwKIAkJCQkgICAgICBicHAsIG1vZGVfY21kLT5waXRjaGVzWzBdKSkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ns aWVudC5jCmluZGV4IDliMmJkMjhkZGUwYS4uMzA1ZDZkZDVkMjAxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50 LmMKQEAgLTI0Miw2ICsyNDIsNyBAQCBzdGF0aWMgdm9pZCBkcm1fY2xpZW50X2J1ZmZlcl9kZWxl dGUoc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXIpCiBzdGF0aWMgc3RydWN0IGRybV9j bGllbnRfYnVmZmVyICoKIGRybV9jbGllbnRfYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJtX2NsaWVu dF9kZXYgKmNsaWVudCwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0LCB1MzIgZm9ybWF0KQogeworCWNv bnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm8gPSBkcm1fZm9ybWF0X2luZm8oZm9ybWF0 KTsKIAlzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIgZHVtYl9hcmdzID0geyB9OwogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjbGllbnQtPmRldjsKIAlzdHJ1Y3QgZHJtX2NsaWVudF9idWZm ZXIgKmJ1ZmZlcjsKQEAgLTI1Nyw3ICsyNTgsNyBAQCBkcm1fY2xpZW50X2J1ZmZlcl9jcmVhdGUo c3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCwgdQog CiAJZHVtYl9hcmdzLndpZHRoID0gd2lkdGg7CiAJZHVtYl9hcmdzLmhlaWdodCA9IGhlaWdodDsK LQlkdW1iX2FyZ3MuYnBwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZm9ybWF0LCAwKSAqIDg7CisJ ZHVtYl9hcmdzLmJwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGluZm8sIDApICogODsKIAlyZXQg PSBkcm1fbW9kZV9jcmVhdGVfZHVtYihkZXYsICZkdW1iX2FyZ3MsIGNsaWVudC0+ZmlsZSk7CiAJ aWYgKHJldCkKIAkJZ290byBlcnJfZGVsZXRlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKaW5kZXgg MDRkMjNjYjQzMGJmLi4yNTdhOWM5OTUwNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fZmJfaGVscGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwpAQCAt NzY4LDcgKzc2OCw3IEBAIHN0YXRpYyB2b2lkIGRybV9mYl9oZWxwZXJfZGlydHlfYmxpdF9yZWFs KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCQkJCSAgc3RydWN0IGRybV9jbGlw X3JlY3QgKmNsaXApCiB7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBmYl9oZWxwZXIt PmZiOwotCXVuc2lnbmVkIGludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+Zm9ybWF0 LT5mb3JtYXQsIDApOworCXVuc2lnbmVkIGludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChm Yi0+Zm9ybWF0LCAwKTsKIAlzaXplX3Qgb2Zmc2V0ID0gY2xpcC0+eTEgKiBmYi0+cGl0Y2hlc1sw XSArIGNsaXAtPngxICogY3BwOwogCXZvaWQgKnNyYyA9IGZiX2hlbHBlci0+ZmJkZXYtPnNjcmVl bl9idWZmZXIgKyBvZmZzZXQ7CiAJdm9pZCAqZHN0ID0gZmJfaGVscGVyLT5idWZmZXItPnZhZGRy ICsgb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMKaW5kZXggMDRiZTMzMGI3Y2FlLi5kOGFkYTRjYjY4 OWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9mb3VyY2MuYwpAQCAtMzA3LDE3ICszMDcsMTQgQEAgRVhQT1JUX1NZTUJP TChkcm1fZ2V0X2Zvcm1hdF9pbmZvKTsKIAogLyoqCiAgKiBkcm1fZm9ybWF0X3BsYW5lX2NwcCAt IGRldGVybWluZSB0aGUgYnl0ZXMgcGVyIHBpeGVsIHZhbHVlCi0gKiBAZm9ybWF0OiBwaXhlbCBm b3JtYXQgKERSTV9GT1JNQVRfKikKKyAqIEBmb3JtYXQ6IHBpeGVsIGZvcm1hdCBpbmZvCiAgKiBA cGxhbmU6IHBsYW5lIGluZGV4CiAgKgogICogUmV0dXJuczoKICAqIFRoZSBieXRlcyBwZXIgcGl4 ZWwgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgcGxhbmUuCiAgKi8KLWludCBkcm1fZm9ybWF0X3Bs YW5lX2NwcCh1aW50MzJfdCBmb3JtYXQsIGludCBwbGFuZSkKK2ludCBkcm1fZm9ybWF0X3BsYW5l X2NwcChjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvLCBpbnQgcGxhbmUpCiB7Ci0J Y29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbzsKLQotCWluZm8gPSBkcm1fZm9ybWF0 X2luZm8oZm9ybWF0KTsKIAlpZiAoIWluZm8gfHwgcGxhbmUgPj0gaW5mby0+bnVtX3BsYW5lcykK IAkJcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nw cml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggYjU2YTFh OWFkMDFkLi5lZTBlOTliMTM1MzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Nwcml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBA IC0yOTcsNyArMjk3LDggQEAgc2tsX3BsYW5lX21heF9zdHJpZGUoc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwKIAkJICAgICB1MzIgcGl4ZWxfZm9ybWF0LCB1NjQgbW9kaWZpZXIsCiAJCSAgICAg dW5zaWduZWQgaW50IHJvdGF0aW9uKQogewotCWludCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2Nw cChwaXhlbF9mb3JtYXQsIDApOworCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmluZm8g PSBkcm1fZm9ybWF0X2luZm8ocGl4ZWxfZm9ybWF0KTsKKwlpbnQgY3BwID0gZHJtX2Zvcm1hdF9w bGFuZV9jcHAoaW5mbywgMCk7CiAKIAkvKgogCSAqICJUaGUgc3RyaWRlIGluIGJ5dGVzIG11c3Qg bm90IGV4Y2VlZCB0aGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9mYi5jCmluZGV4IDY4 ZmRlZjhiMTJiZC4uYWY5MGM4NGU5ZTAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2RybV9mYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJt X2ZiLmMKQEAgLTEwNCw3ICsxMDQsNyBAQCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICptdGtfZHJt X21vZGVfZmJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKCFnZW0pCiAJCXJl dHVybiBFUlJfUFRSKC1FTk9FTlQpOwogCi0JYnBwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoY21k LT5waXhlbF9mb3JtYXQsIDApOworCWJwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGluZm8sIDAp OwogCXNpemUgPSAoaGVpZ2h0IC0gMSkgKiBjbWQtPnBpdGNoZXNbMF0gKyB3aWR0aCAqIGJwcDsK IAlzaXplICs9IGNtZC0+b2Zmc2V0c1swXTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL21kcDUvbWRwNV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRw NS9tZHA1X2NydGMuYwppbmRleCBiMGNmNjNjNGUzZDcuLmFhZGFlMjFmODgxOCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9jcnRjLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9jcnRjLmMKQEAgLTc4Miw2ICs3ODIsNyBAQCBz dGF0aWMgdm9pZCBnZXRfcm9pKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdWludDMyX3QgKnJvaV93 LCB1aW50MzJfdCAqcm9pX2gpCiAKIHN0YXRpYyB2b2lkIG1kcDVfY3J0Y19yZXN0b3JlX2N1cnNv cihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CisJY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5m byAqaW5mbyA9IGRybV9mb3JtYXRfaW5mbyhEUk1fRk9STUFUX0FSR0I4ODg4KTsKIAlzdHJ1Y3Qg bWRwNV9jcnRjX3N0YXRlICptZHA1X2NzdGF0ZSA9IHRvX21kcDVfY3J0Y19zdGF0ZShjcnRjLT5z dGF0ZSk7CiAJc3RydWN0IG1kcDVfY3J0YyAqbWRwNV9jcnRjID0gdG9fbWRwNV9jcnRjKGNydGMp OwogCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKGNydGMpOwpAQCAtODAwLDcg KzgwMSw3IEBAIHN0YXRpYyB2b2lkIG1kcDVfY3J0Y19yZXN0b3JlX2N1cnNvcihzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCiAJd2lkdGggPSBtZHA1X2NydGMtPmN1cnNvci53aWR0aDsKIAloZWlnaHQg PSBtZHA1X2NydGMtPmN1cnNvci5oZWlnaHQ7CiAKLQlzdHJpZGUgPSB3aWR0aCAqIGRybV9mb3Jt YXRfcGxhbmVfY3BwKERSTV9GT1JNQVRfQVJHQjg4ODgsIDApOworCXN0cmlkZSA9IHdpZHRoICog ZHJtX2Zvcm1hdF9wbGFuZV9jcHAoaW5mbywgMCk7CiAKIAlnZXRfcm9pKGNydGMsICZyb2lfdywg JnJvaV9oKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRw NV9zbXAuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfc21wLmMKaW5kZXgg YjMwYjJmNGVmYzYwLi4wM2Q1MDNkOGMzYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9tZHA1L21kcDVfc21wLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21k cDUvbWRwNV9zbXAuYwpAQCAtMTU4LDcgKzE1OCw3IEBAIHVpbnQzMl90IG1kcDVfc21wX2NhbGN1 bGF0ZShzdHJ1Y3QgbWRwNV9zbXAgKnNtcCwKIAlmb3IgKGkgPSAwOyBpIDwgbnBsYW5lczsgaSsr KSB7CiAJCWludCBuLCBmZXRjaF9zdHJpZGUsIGNwcDsKIAotCQljcHAgPSBkcm1fZm9ybWF0X3Bs YW5lX2NwcChmbXQsIGkpOworCQljcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChpbmZvLCBpKTsK IAkJZmV0Y2hfc3RyaWRlID0gd2lkdGggKiBjcHAgLyAoaSA/IGhzdWIgOiAxKTsKIAogCQluID0g RElWX1JPVU5EX1VQKGZldGNoX3N0cmlkZSAqIG5saW5lcywgc21wLT5ibGtfc2l6ZSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL21z bS9tc21fZmIuYwppbmRleCBmNjljMGFmZDZlYzYuLmVlOTEwNThjNzk3NCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9mYi5jCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg Km1zbV9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXVuc2lnbmVk IGludCBtaW5fc2l6ZTsKIAogCQltaW5fc2l6ZSA9IChoZWlnaHQgLSAxKSAqIG1vZGVfY21kLT5w aXRjaGVzW2ldCi0JCQkgKyB3aWR0aCAqIGRybV9mb3JtYXRfcGxhbmVfY3BwKG1vZGVfY21kLT5w aXhlbF9mb3JtYXQsIGkpCisJCQkgKyB3aWR0aCAqIGRybV9mb3JtYXRfcGxhbmVfY3BwKGluZm8s IGkpCiAJCQkgKyBtb2RlX2NtZC0+b2Zmc2V0c1tpXTsKIAogCQlpZiAoYm9zW2ldLT5zaXplIDwg bWluX3NpemUpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2Zi LmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9mYi5jCmluZGV4IDExNzkwMzQwMjRh ZS4uODhmYzFhNmUyZTQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVv bl9mYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2ZiLmMKQEAgLTEyNSw2 ICsxMjUsOCBAQCBzdGF0aWMgaW50IHJhZGVvbmZiX2NyZWF0ZV9waW5uZWRfb2JqZWN0KHN0cnVj dCByYWRlb25fZmJkZXYgKnJmYmRldiwKIAkJCQkJIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICpt b2RlX2NtZCwKIAkJCQkJIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKmdvYmpfcCkKIHsKKwljb25z dCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvID0gZHJtX2dldF9mb3JtYXRfaW5mbyhkZXYs CisJCQkJCQkJCSBtb2RlX2NtZCk7CiAJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSByZmJk ZXYtPnJkZXY7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnb2JqID0gTlVMTDsKIAlzdHJ1Y3Qg cmFkZW9uX2JvICpyYm8gPSBOVUxMOwpAQCAtMTM1LDcgKzEzNyw3IEBAIHN0YXRpYyBpbnQgcmFk ZW9uZmJfY3JlYXRlX3Bpbm5lZF9vYmplY3Qoc3RydWN0IHJhZGVvbl9mYmRldiAqcmZiZGV2LAog CWludCBoZWlnaHQgPSBtb2RlX2NtZC0+aGVpZ2h0OwogCXUzMiBjcHA7CiAKLQljcHAgPSBkcm1f Zm9ybWF0X3BsYW5lX2NwcChtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCAwKTsKKwljcHAgPSBkcm1f Zm9ybWF0X3BsYW5lX2NwcChpbmZvLCAwKTsKIAogCS8qIG5lZWQgdG8gYWxpZ24gcGl0Y2ggd2l0 aCBjcnRjIGxpbWl0cyAqLwogCW1vZGVfY21kLT5waXRjaGVzWzBdID0gcmFkZW9uX2FsaWduX3Bp dGNoKHJkZXYsIG1vZGVfY21kLT53aWR0aCwgY3BwLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L3JvY2tjaGlwX2RybV9mYi5jCmluZGV4IGMzMThmYWUyODU4MS4uYzYwMmNiMmY0ZDNjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9mYi5jCkBAIC05OCw3ICs5OCw3 IEBAIHJvY2tjaGlwX3VzZXJfZmJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCiAJCW1pbl9zaXplID0gKGhlaWdodCAtIDEpICogbW9k ZV9jbWQtPnBpdGNoZXNbaV0gKwogCQkJbW9kZV9jbWQtPm9mZnNldHNbaV0gKwotCQkJd2lkdGgg KiBkcm1fZm9ybWF0X3BsYW5lX2NwcChtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0LCBpKTsKKwkJCXdp ZHRoICogZHJtX2Zvcm1hdF9wbGFuZV9jcHAoaW5mbywgaSk7CiAKIAkJaWYgKG9iai0+c2l6ZSA8 IG1pbl9zaXplKSB7CiAJCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9zdG0vbHRkYy5jIGIvZHJpdmVycy9ncHUvZHJtL3N0bS9s dGRjLmMKaW5kZXggYjE3NDFhOWQ1YmUyLi5iMjI2ZGY3ZGJmNmYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9zdG0vbHRkYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9zdG0vbHRkYy5jCkBA IC03NzksNyArNzc5LDcgQEAgc3RhdGljIHZvaWQgbHRkY19wbGFuZV9hdG9taWNfdXBkYXRlKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCiAJLyogQ29uZmlndXJlcyB0aGUgY29sb3IgZnJhbWUg YnVmZmVyIHBpdGNoIGluIGJ5dGVzICYgbGluZSBsZW5ndGggKi8KIAlwaXRjaF9pbl9ieXRlcyA9 IGZiLT5waXRjaGVzWzBdOwotCWxpbmVfbGVuZ3RoID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmIt PmZvcm1hdC0+Zm9ybWF0LCAwKSAqCisJbGluZV9sZW5ndGggPSBkcm1fZm9ybWF0X3BsYW5lX2Nw cChmYi0+Zm9ybWF0LCAwKSAqCiAJCSAgICAgICh4MSAtIHgwICsgMSkgKyAobGRldi0+Y2Fwcy5i dXNfd2lkdGggPj4gMykgLSAxOwogCXZhbCA9ICgocGl0Y2hfaW5fYnl0ZXMgPDwgMTYpIHwgbGlu ZV9sZW5ndGgpOwogCXJlZ191cGRhdGVfYml0cyhsZGV2LT5yZWdzLCBMVERDX0wxQ0ZCTFIgKyBs b2ZzLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2ZiLmMgYi9kcml2ZXJzL2dw dS9kcm0vdGVncmEvZmIuYwppbmRleCBkZGYyYzc2NGYyNGMuLjBhOTc0NThiMjg2YSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Rl Z3JhL2ZiLmMKQEAgLTE0OSw3ICsxNDksNyBAQCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICp0ZWdy YV9mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKIAkJCWdvdG8gdW5yZWZlcmVuY2U7 CiAJCX0KIAotCQlicHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChjbWQtPnBpeGVsX2Zvcm1hdCwg aSk7CisJCWJwcCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGluZm8sIGkpOwogCiAJCXNpemUgPSAo aGVpZ2h0IC0gMSkgKiBjbWQtPnBpdGNoZXNbaV0gKwogCQkgICAgICAgd2lkdGggKiBicHAgKyBj bWQtPm9mZnNldHNbaV07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueWRybS9jb3Jl L3Rpbnlkcm0taGVscGVycy5jIGIvZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS90aW55ZHJt LWhlbHBlcnMuYwppbmRleCAyNzM3YjZmZGFkYzguLjU3ZGRhOWQxYTQ1ZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3Rpbnlkcm0vY29yZS90aW55ZHJtLWhlbHBlcnMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vdGlueWRybS9jb3JlL3Rpbnlkcm0taGVscGVycy5jCkBAIC0zNiw3ICszNiw3 IEBAIE1PRFVMRV9QQVJNX0RFU0Moc3BpX21heCwgIlNldCBhIGxvd2VyIFNQSSBtYXggdHJhbnNm ZXIgc2l6ZSIpOwogdm9pZCB0aW55ZHJtX21lbWNweSh2b2lkICpkc3QsIHZvaWQgKnZhZGRyLCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkJICAgIHN0cnVjdCBkcm1fcmVjdCAqY2xpcCkK IHsKLQl1bnNpZ25lZCBpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPmZvcm1hdC0+ Zm9ybWF0LCAwKTsKKwl1bnNpZ25lZCBpbnQgY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmIt PmZvcm1hdCwgMCk7CiAJdW5zaWduZWQgaW50IHBpdGNoID0gZmItPnBpdGNoZXNbMF07CiAJdm9p ZCAqc3JjID0gdmFkZHIgKyAoY2xpcC0+eTEgKiBwaXRjaCkgKyAoY2xpcC0+eDEgKiBjcHApOwog CXNpemVfdCBsZW4gPSAoY2xpcC0+eDIgLSBjbGlwLT54MSkgKiBjcHA7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0venRlL3p4X3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3Bs YW5lLmMKaW5kZXggYzZhOGJlNDQ0MzAwLi40MWJkMGRiNGU4NzYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS96dGUvenhfcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0venRlL3p4X3Bs YW5lLmMKQEAgLTIyMiw3ICsyMjIsNyBAQCBzdGF0aWMgdm9pZCB6eF92bF9wbGFuZV9hdG9taWNf dXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQljbWFfb2JqID0gZHJtX2ZiX2NtYV9n ZXRfZ2VtX29iaihmYiwgaSk7CiAJCXBhZGRyID0gY21hX29iai0+cGFkZHIgKyBmYi0+b2Zmc2V0 c1tpXTsKIAkJcGFkZHIgKz0gc3JjX3kgKiBmYi0+cGl0Y2hlc1tpXTsKLQkJcGFkZHIgKz0gc3Jj X3ggKiBkcm1fZm9ybWF0X3BsYW5lX2NwcChmb3JtYXQsIGkpOworCQlwYWRkciArPSBzcmNfeCAq IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5mb3JtYXQsIGkpOwogCQl6eF93cml0ZWwocGFkZHJf cmVnLCBwYWRkcik7CiAJCXBhZGRyX3JlZyArPSA0OwogCX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybV9mb3VyY2MuaCBiL2luY2x1ZGUvZHJtL2RybV9mb3VyY2MuaAppbmRleCBlZWVjNDQ5 ZDZjNmEuLjk3YTU4ZjNlNzQ2MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2ZvdXJjYy5o CisrKyBiL2luY2x1ZGUvZHJtL2RybV9mb3VyY2MuaApAQCAtMjY4LDcgKzI2OCw3IEBAIGRybV9n ZXRfZm9ybWF0X2luZm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIHVpbnQzMl90IGRybV9tb2Rl X2xlZ2FjeV9mYl9mb3JtYXQodWludDMyX3QgYnBwLCB1aW50MzJfdCBkZXB0aCk7CiB1aW50MzJf dCBkcm1fZHJpdmVyX2xlZ2FjeV9mYl9mb3JtYXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJ CQkgICAgIHVpbnQzMl90IGJwcCwgdWludDMyX3QgZGVwdGgpOwotaW50IGRybV9mb3JtYXRfcGxh bmVfY3BwKHVpbnQzMl90IGZvcm1hdCwgaW50IHBsYW5lKTsKK2ludCBkcm1fZm9ybWF0X3BsYW5l X2NwcChjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvLCBpbnQgcGxhbmUpOwogaW50 IGRybV9mb3JtYXRfcGxhbmVfd2lkdGgoaW50IHdpZHRoLCB1aW50MzJfdCBmb3JtYXQsIGludCBw bGFuZSk7CiBpbnQgZHJtX2Zvcm1hdF9wbGFuZV9oZWlnaHQoaW50IGhlaWdodCwgdWludDMyX3Qg Zm9ybWF0LCBpbnQgcGxhbmUpOwogdW5zaWduZWQgaW50IGRybV9mb3JtYXRfaW5mb19ibG9ja193 aWR0aChjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICppbmZvLAotLSAKZ2l0LXNlcmllcyAw LjkuMQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=