From mboxrd@z Thu Jan 1 00:00:00 1970 From: Uma Shankar Subject: [v7 2/2] drm/i915: Attach colorspace property and enable modeset Date: Mon, 28 Jan 2019 14:14:13 +0530 Message-ID: <1548665053-25210-3-git-send-email-uma.shankar@intel.com> References: <1548665053-25210-1-git-send-email-uma.shankar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1548665053-25210-1-git-send-email-uma.shankar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: ville.syrjala@intel.com, emil.l.velikov@gmail.com, Uma Shankar , maarten.lankhorst@intel.com List-Id: dri-devel@lists.freedesktop.org VGhpcyBwYXRjaCBhdHRhY2hlcyB0aGUgY29sb3JzcGFjZSBjb25uZWN0b3IgcHJvcGVydHkgdG8g dGhlCmhkbWkgY29ubmVjdG9yLiBCYXNlZCBvbiBjb2xvcnNwYWNlIGNoYW5nZSwgbW9kZXNldCB3 aWxsIGJlCnRyaWdnZXJlZCB0byBzd2l0Y2ggdG8gbmV3IGNvbG9yc3BhY2UuCgpCYXNlZCBvbiBj b2xvcnNwYWNlIHByb3BlcnR5IHZhbHVlIGNyZWF0ZSBhbiBpbmZvZnJhbWUKd2l0aCBhcHByb3By aWF0ZSBjb2xvcnNwYWNlLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHNlbmQgYW4KaW5mb2ZyYW1lIHBh Y2tldCB3aXRoIHByb3BlciBjb2xvcnNwYWNlIHZhbHVlIHNldCB3aGljaAp3aWxsIGhlbHAgdG8g ZW5hYmxlIHdpZGVyIGNvbG9yIGdhbXV0IGxpa2UgQlQyMDIwIG9uIHNpbmsuCgpUaGlzIHBhdGNo IGF0dGFjaGVzIGFuZCBlbmFibGVzIEhETUkgY29sb3JzcGFjZSwgRFAgd2lsbCBiZQp0YWtlbiBj YXJlIHNlcGFyYXRlbHkuCgp2MjogTWVyZ2VkIHRoZSBjaGFuZ2VzIG9mIGNyZWF0aW5nIGluZm9m cmFtZSBhcyB3ZWxsIHRvIHRoaXMKcGF0Y2ggYXMgcGVyIE1hYXJ0ZW4ncyBzdWdnZXN0aW9uLgoK djM6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJvbSBTaGFzaGFuay4gU2VwYXJhdGVkIEhE TUkKYW5kIERQIGNvbG9yc3BhY2VzIGFzIHN1Z2dlc3RlZCBieSBWaWxsZSBhbmQgTWFhcnRlbi4K CnY0OiBBZGRyZXNzZWQgQ2hyaXMgYW5kIFZpbGxlJ3MgcmV2aWV3IGNvbW1lbnRzLCBhbmQgY3Jl YXRlZCBhCmNvbW1vbiBjb2xvcnNwYWNlIHByb3BlcnR5IGZvciBEUCBhbmQgSERNSSwgZmlsdGVy ZWQgdGhlIGxpc3QKYmFzZWQgb24gdGhlIGNvbG9yc3BhY2VzIHN1cHBvcnRlZCBieSB0aGUgcmVz cGVjdGl2ZSBwcm90b2NvbApzdGFuZGFyZC4gSGFuZGxlIHRoZSBkZWZhdWx0IGNhc2UgcHJvcGVy bHkuCgp2NTogQWRkZWQgUGxhdGZvcm0gc3BlY2lmaWMgY29sb3JzcGFjZSBlbnVtcyBhbmQgY2Fs bGVkIHRoZQpwcm9wZXJ0eSBjcmVhdGlvbiBoZWxwZXIgdXNpbmcgdGhlIHNhbWUuCgp2NjogQWRk cmVzc2VkIFNoYXNoYW5rJ3MgcmV2aWV3IGNvbW1lbnRzLgoKdjc6IFJlYmFzZQoKU2lnbmVkLW9m Zi1ieTogVW1hIFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFNo YXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYyAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Nvbm5lY3Rvci5jIHwgNjMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgfCAgMSArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgICAgICB8IDE5ICsrKysrKysrKysKIDQgZmlsZXMg Y2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F0b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMK aW5kZXggMTYyNjNhZC4uNzZiNzExNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYXRvbWljLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMK QEAgLTEyNCw2ICsxMjQsNyBAQCBpbnQgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3JfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uLAogCSAqLwogCWlmIChuZXdfY29ubl9zdGF0 ZS0+Zm9yY2VfYXVkaW8gIT0gb2xkX2Nvbm5fc3RhdGUtPmZvcmNlX2F1ZGlvIHx8CiAJICAgIG5l d19jb25uX3N0YXRlLT5icm9hZGNhc3RfcmdiICE9IG9sZF9jb25uX3N0YXRlLT5icm9hZGNhc3Rf cmdiIHx8CisJICAgIG5ld19zdGF0ZS0+Y29sb3JzcGFjZSAhPSBvbGRfc3RhdGUtPmNvbG9yc3Bh Y2UgfHwKIAkgICAgbmV3X2Nvbm5fc3RhdGUtPmJhc2UucGljdHVyZV9hc3BlY3RfcmF0aW8gIT0g b2xkX2Nvbm5fc3RhdGUtPmJhc2UucGljdHVyZV9hc3BlY3RfcmF0aW8gfHwKIAkgICAgbmV3X2Nv bm5fc3RhdGUtPmJhc2UuY29udGVudF90eXBlICE9IG9sZF9jb25uX3N0YXRlLT5iYXNlLmNvbnRl bnRfdHlwZSB8fAogCSAgICBuZXdfY29ubl9zdGF0ZS0+YmFzZS5zY2FsaW5nX21vZGUgIT0gb2xk X2Nvbm5fc3RhdGUtPmJhc2Uuc2NhbGluZ19tb2RlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9j b25uZWN0b3IuYwppbmRleCBlZTE2NzU4Li4xMTRmY2YyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb25uZWN0b3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9jb25uZWN0b3IuYwpAQCAtMzAsNiArMzAsNDggQEAKICNpbmNsdWRlICJpbnRlbF9kcnYu aCIKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcm9w X2VudW1fbGlzdCBnZW4xMF9oZG1pX2NvbG9yc3BhY2VzW10gPSB7CisJLyogRm9yIERlZmF1bHQg Y2FzZSwgZHJpdmVyIHdpbGwgc2V0IHRoZSBjb2xvcnNwYWNlICovCisJeyBDT0xPUklNRVRSWV9E RUZBVUxULCAiRGVmYXVsdCIgfSwKKwkvKiBTdGFuZGFyZCBEZWZpbml0aW9uIENvbG9yaW1ldHJ5 IGJhc2VkIG9uIENFQSA4NjEgKi8KKwl7IENPTE9SSU1FVFJZX0lUVV82MDEsICJJVFVfNjAxIiB9 LAorCXsgQ09MT1JJTUVUUllfSVRVXzcwOSwgIklUVV83MDkiIH0sCisJLyogU3RhbmRhcmQgRGVm aW5pdGlvbiBDb2xvcmltZXRyeSBiYXNlZCBvbiBJRUMgNjE5NjYtMi00ICovCisJeyBDT0xPUklN RVRSWV9YVl9ZQ0NfNjAxLCAiWFZfWUNDXzYwMSIgfSwKKwkvKiBIaWdoIERlZmluaXRpb24gQ29s b3JpbWV0cnkgYmFzZWQgb24gSUVDIDYxOTY2LTItNCAqLworCXsgQ09MT1JJTUVUUllfWFZfWUND XzcwOSwgIlhWX1lDQ183MDkiIH0sCisJLyogQ29sb3JpbWV0cnkgYmFzZWQgb24gSUVDIDYxOTY2 LTItMS9BbWVuZG1lbnQgMSAqLworCXsgQ09MT1JJTUVUUllfU19ZQ0NfNjAxLCAiU19ZQ0NfNjAx IiB9LAorCS8qIENvbG9yaW1ldHJ5IGJhc2VkIG9uIElFQyA2MTk2Ni0yLTUgWzMzXSAqLworCXsg Q09MT1JJTUVUUllfT1BZQ0NfNjAxLCAib3BZQ0NfNjAxIiB9LAorCS8qIENvbG9yaW1ldHJ5IGJh c2VkIG9uIElFQyA2MTk2Ni0yLTUgKi8KKwl7IENPTE9SSU1FVFJZX09QUkdCLCAib3BSR0IiIH0s CisJLyogQ29sb3JpbWV0cnkgYmFzZWQgb24gSVRVLVIgQlQuMjAyMCAqLworCXsgQ09MT1JJTUVU UllfQlQyMDIwX1JHQiwgIkJUMjAyMF9SR0IiIH0sCisJLyogQ29sb3JpbWV0cnkgYmFzZWQgb24g SVRVLVIgQlQuMjAyMCAqLworCXsgQ09MT1JJTUVUUllfQlQyMDIwX1lDQywgIkJUMjAyMF9ZQ0Mi IH0sCisJLyogQ29sb3JpbWV0cnkgYmFzZWQgb24gSVRVLVIgQlQuMjAyMCAqLworCXsgQ09MT1JJ TUVUUllfQlQyMDIwX0NZQ0MsICJCVDIwMjBfQ1lDQyIgfSwKK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX3Byb3BfZW51bV9saXN0IGxlZ2FjeV9oZG1pX2NvbG9yc3BhY2VzW10gPSB7CisJ LyogRm9yIERlZmF1bHQgY2FzZSwgZHJpdmVyIHdpbGwgc2V0IHRoZSBjb2xvcnNwYWNlICovCisJ eyBDT0xPUklNRVRSWV9ERUZBVUxULCAiRGVmYXVsdCIgfSwKKwkvKiBTdGFuZGFyZCBEZWZpbml0 aW9uIENvbG9yaW1ldHJ5IGJhc2VkIG9uIENFQSA4NjEgKi8KKwl7IENPTE9SSU1FVFJZX0lUVV82 MDEsICJJVFVfNjAxIiB9LAorCXsgQ09MT1JJTUVUUllfSVRVXzcwOSwgIklUVV83MDkiIH0sCisJ LyogU3RhbmRhcmQgRGVmaW5pdGlvbiBDb2xvcmltZXRyeSBiYXNlZCBvbiBJRUMgNjE5NjYtMi00 ICovCisJeyBDT0xPUklNRVRSWV9YVl9ZQ0NfNjAxLCAiWFZfWUNDXzYwMSIgfSwKKwkvKiBIaWdo IERlZmluaXRpb24gQ29sb3JpbWV0cnkgYmFzZWQgb24gSUVDIDYxOTY2LTItNCAqLworCXsgQ09M T1JJTUVUUllfWFZfWUNDXzcwOSwgIlhWX1lDQ183MDkiIH0sCisJLyogQ29sb3JpbWV0cnkgYmFz ZWQgb24gSUVDIDYxOTY2LTItMS9BbWVuZG1lbnQgMSAqLworCXsgQ09MT1JJTUVUUllfU19ZQ0Nf NjAxLCAiU19ZQ0NfNjAxIiB9LAorCS8qIENvbG9yaW1ldHJ5IGJhc2VkIG9uIElFQyA2MTk2Ni0y LTUgWzMzXSAqLworCXsgQ09MT1JJTUVUUllfT1BZQ0NfNjAxLCAib3BZQ0NfNjAxIiB9LAorCS8q IENvbG9yaW1ldHJ5IGJhc2VkIG9uIElFQyA2MTk2Ni0yLTUgKi8KKwl7IENPTE9SSU1FVFJZX09Q UkdCLCAib3BSR0IiIH0sCit9OworCiBpbnQgaW50ZWxfY29ubmVjdG9yX2luaXQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewogCXN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5l Y3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKQEAgLTI2NSwzICszMDcsMjQgQEAgaW50IGludGVsX2Rk Y19nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCWNvbm5lY3Rv ci0+ZGV2LT5tb2RlX2NvbmZpZy5hc3BlY3RfcmF0aW9fcHJvcGVydHksCiAJCQlEUk1fTU9ERV9Q SUNUVVJFX0FTUEVDVF9OT05FKTsKIH0KKwordm9pZAoraW50ZWxfYXR0YWNoX2NvbG9yc3BhY2Vf cHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTApIHsKKwkJaWYgKCFkcm1fbW9kZV9jcmVhdGVfY29sb3JzcGFjZV9wcm9wZXJ0eShjb25uZWN0 b3IsCisJCQlnZW4xMF9oZG1pX2NvbG9yc3BhY2VzLAorCQkJQVJSQVlfU0laRShnZW4xMF9oZG1p X2NvbG9yc3BhY2VzKSkpCisJCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY29ubmVjdG9y LT5iYXNlLAorCQkJCWNvbm5lY3Rvci0+Y29sb3JzcGFjZV9wcm9wZXJ0eSwgMCk7CisJfSBlbHNl IHsKKwkJaWYgKCFkcm1fbW9kZV9jcmVhdGVfY29sb3JzcGFjZV9wcm9wZXJ0eShjb25uZWN0b3Is CisJCQlsZWdhY3lfaGRtaV9jb2xvcnNwYWNlcywKKwkJCUFSUkFZX1NJWkUobGVnYWN5X2hkbWlf Y29sb3JzcGFjZXMpKSkKKwkJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjb25uZWN0b3It PmJhc2UsCisJCQkJY29ubmVjdG9yLT5jb2xvcnNwYWNlX3Byb3BlcnR5LCAwKTsKKwl9Cit9CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDg1YjkxM2UuLjUxNzhhOWEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCkBAIC0xNzgzLDYgKzE3ODMsNyBAQCBpbnQgaW50ZWxfY29ubmVjdG9y X3VwZGF0ZV9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogdm9pZCBpbnRl bF9hdHRhY2hfZm9yY2VfYXVkaW9fcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3Rvcik7CiB2b2lkIGludGVsX2F0dGFjaF9icm9hZGNhc3RfcmdiX3Byb3BlcnR5KHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwogdm9pZCBpbnRlbF9hdHRhY2hfYXNwZWN0X3JhdGlv X3Byb3BlcnR5KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwordm9pZCBpbnRlbF9h dHRhY2hfY29sb3JzcGFjZV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KTsKIAogLyogaW50ZWxfY3NyLmMgKi8KIHZvaWQgaW50ZWxfY3NyX3Vjb2RlX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKaW5kZXggOTdh OThlMS4uN2I3OTQ4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRt aS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwpAQCAtNDk4LDYgKzQ5 OCwyNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX3NldF9hdmlfaW5mb2ZyYW1lKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAogCWVsc2UKIAkJZnJhbWUuYXZpLmNvbG9yc3BhY2UgPSBI RE1JX0NPTE9SU1BBQ0VfUkdCOwogCisJaWYgKGNvbm5fc3RhdGUtPmNvbG9yc3BhY2UgPT0gQ09M T1JJTUVUUllfREVGQVVMVCkgeworCQkvKiBTZXQgSVRVIDcwOSBhcyBkZWZhdWx0IGZvciBIRE1J ICovCisJCWZyYW1lLmF2aS5jb2xvcmltZXRyeSA9IENPTE9SSU1FVFJZX0lUVV83MDk7CisJfSBl bHNlIGlmIChjb25uX3N0YXRlLT5jb2xvcnNwYWNlIDwgQ09MT1JJTUVUUllfWFZfWUNDXzYwMSkg eworCQlmcmFtZS5hdmkuY29sb3JpbWV0cnkgPSBjb25uX3N0YXRlLT5jb2xvcnNwYWNlOworCX0g ZWxzZSB7CisJCWZyYW1lLmF2aS5jb2xvcmltZXRyeSA9IEhETUlfQ09MT1JJTUVUUllfRVhURU5E RUQ7CisJCS8qCisJCSAqIFN0YXJ0aW5nIGZyb20gZXh0ZW5kZWQgbGlzdCB3aGVyZSBDT0xPUklN RVRSWV9YVl9ZQ0NfNjAxCisJCSAqIGlzIHRoZSBmaXJzdCBleHRlbmRlZCBtb2RlIGFuZCBpdHMg dmFsdWUgaXMgMCBhcyBwZXIgSERNSQorCQkgKiBzcGVjaWZpY2F0aW9uLgorCQkgKiBUT0RPOiBU aGlzIG5lZWRzIHRvIGJlIGV4dGVuZGVkIGZvciBMU1BDT04gaW1wbGVtZW50YXRpb24KKwkJICog YXMgd2VsbC4gV2lsbCBiZSBpbXBsZW1lbnRlZCBzZXBhcmF0ZWx5LgorCQkgKi8KKwkJZnJhbWUu YXZpLmV4dGVuZGVkX2NvbG9yaW1ldHJ5ID0gY29ubl9zdGF0ZS0+Y29sb3JzcGFjZSAtCisJCQlD T0xPUklNRVRSWV9YVl9ZQ0NfNjAxOworCX0KKwogCWRybV9oZG1pX2F2aV9pbmZvZnJhbWVfcXVh bnRfcmFuZ2UoJmZyYW1lLmF2aSwKIAkJCQkJICAgY29ubl9zdGF0ZS0+Y29ubmVjdG9yLAogCQkJ CQkgICBhZGp1c3RlZF9tb2RlLApAQCAtMjE0Nyw2ICsyMTY1LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfaGRtaV9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJaW50ZWxf YXR0YWNoX2ZvcmNlX2F1ZGlvX3Byb3BlcnR5KGNvbm5lY3Rvcik7CiAJaW50ZWxfYXR0YWNoX2Jy b2FkY2FzdF9yZ2JfcHJvcGVydHkoY29ubmVjdG9yKTsKIAlpbnRlbF9hdHRhY2hfYXNwZWN0X3Jh dGlvX3Byb3BlcnR5KGNvbm5lY3Rvcik7CisJaW50ZWxfYXR0YWNoX2NvbG9yc3BhY2VfcHJvcGVy dHkoY29ubmVjdG9yKTsKIAlkcm1fY29ubmVjdG9yX2F0dGFjaF9jb250ZW50X3R5cGVfcHJvcGVy dHkoY29ubmVjdG9yKTsKIAljb25uZWN0b3ItPnN0YXRlLT5waWN0dXJlX2FzcGVjdF9yYXRpbyA9 IEhETUlfUElDVFVSRV9BU1BFQ1RfTk9ORTsKIAotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=