From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Stone Subject: [PATCH 4/7] drm: Introduce helper for replacing blob properties Date: Mon, 20 Apr 2015 19:22:53 +0100 Message-ID: <1429554176-9865-5-git-send-email-daniels@collabora.com> References: <1429554176-9865-1-git-send-email-daniels@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [93.93.135.160]) by gabe.freedesktop.org (Postfix) with ESMTP id 65C496E395 for ; Mon, 20 Apr 2015 11:23:23 -0700 (PDT) In-Reply-To: <1429554176-9865-1-git-send-email-daniels@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Dave Airlie List-Id: dri-devel@lists.freedesktop.org SW50cm9kdWNlIGEgY29tbW9uIGhlbHBlciBmb3IgdGhlIHBhdHRlcm4gb2Y6CiAgLSBhbGxvY2F0 ZSBuZXcgYmxvYiBwcm9wZXJ0eQogIC0gcG90ZW50aWFsbHkgZnJlZSBvbGQgYmxvYiBwcm9wZXJ0 eQogIC0gcmVwbGFjZSBjb250ZW50IG9mIGluZGljYXRpdmUgcHJvcGVydHkgd2l0aCBuZXcgYmxv YiBJRAogIC0gY2hhbmdlIG1lbWJlciBwb2ludGVyIG9uIG1vZGVzZXQgb2JqZWN0CgpTaWduZWQt b2ZmLWJ5OiBEYW5pZWwgU3RvbmUgPGRhbmllbHNAY29sbGFib3JhLmNvbT4KQ2M6IERhdmUgQWly bGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMg fCAxNTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgMTA2IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRj LmMKaW5kZXggYWFlMGQ4NC4uZWQ5MzQxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKQEAgLTQyMzcsNiArNDIz Nyw4MyBAQCBzdGF0aWMgdm9pZCBkcm1fcHJvcGVydHlfZGVzdHJveV9ibG9iKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiB9CiAKIC8qKgorICogZHJtX3Byb3BlcnR5X3JlcGxhY2VfZ2xvYmFsX2Js b2IgLSBhdG9taWNhbGx5IHJlcGxhY2UgZXhpc3RpbmcgYmxvYiBwcm9wZXJ0eQorICogQGRldjog ZHJtIGRldmljZQorICogQHJlcGxhY2U6IGxvY2F0aW9uIG9mIGJsb2IgcHJvcGVydHkgcG9pbnRl ciB0byBiZSByZXBsYWNlZAorICogQGxlbmd0aDogbGVuZ3RoIG9mIGRhdGEgZm9yIG5ldyBibG9i LCBvciAwIGZvciBubyBkYXRhCisgKiBAZGF0YTogY29udGVudCBmb3IgbmV3IGJsb2IsIG9yIE5V TEwgZm9yIG5vIGRhdGEKKyAqIEBvYmpfaG9sZHNfaWQ6IG9wdGlvbmFsIG9iamVjdCBmb3IgcHJv cGVydHkgaG9sZGluZyBibG9iIElECisgKiBAaG9sZHNfaWQ6IG9wdGlvbmFsIHByb3BlcnR5IGhv bGRpbmcgYmxvYiBJRAorICogQHJldHVybiAwIG9uIHN1Y2Nlc3Mgb3IgZXJyb3Igb24gZmFpbHVy ZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBhdG9taWNhbGx5IHJlcGxhY2UgYSBnbG9iYWwg cHJvcGVydHkgaW4gdGhlIGJsb2IgbGlzdCwKKyAqIG9wdGlvbmFsbHkgdXBkYXRpbmcgYSBwcm9w ZXJ0eSB3aGljaCBob2xkcyB0aGUgSUQgb2YgdGhhdCBwcm9wZXJ0eS4gSXQgaXMKKyAqIGd1YXJh bnRlZWQgdG8gYmUgYXRvbWljOiBubyBjYWxsZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHNlZSBpbnRl cm1lZGlhdGUKKyAqIHJlc3VsdHMsIGFuZCBlaXRoZXIgdGhlIGVudGlyZSBvcGVyYXRpb24gd2ls bCBzdWNjZWVkIGFuZCBjbGVhbiB1cCB0aGUKKyAqIHByZXZpb3VzIHByb3BlcnR5LCBvciBpdCB3 aWxsIGZhaWwgYW5kIHRoZSBzdGF0ZSB3aWxsIGJlIHVuY2hhbmdlZC4KKyAqCisgKiBJZiBsZW5n dGggaXMgMCBvciBkYXRhIGlzIE5VTEwsIG5vIG5ldyBibG9iIHdpbGwgYmUgY3JlYXRlZCwgYW5k IHRoZSBob2xkaW5nCisgKiBwcm9wZXJ0eSwgaWYgc3BlY2lmaWVkLCB3aWxsIGJlIHNldCB0byAw LgorICoKKyAqIEFjY2VzcyB0byB0aGUgcmVwbGFjZSBwb2ludGVyIGlzIGFzc3VtZWQgdG8gYmUg cHJvdGVjdGVkIGJ5IHRoZSBjYWxsZXIsIGUuZy4KKyAqIGJ5IGhvbGRpbmcgdGhlIHJlbGV2YW50 IG1vZGVzZXR0aW5nIG9iamVjdCBsb2NrIGZvciBpdHMgcGFyZW50LgorICoKKyAqIEZvciBleGFt cGxlLCBhIGRybV9jb25uZWN0b3IgaGFzIGEgJ1BBVEgnIHByb3BlcnR5LCB3aGljaCBjb250YWlu cyB0aGUgSUQKKyAqIG9mIGEgYmxvYiBwcm9wZXJ0eSB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgTVNU IHBhdGggaW5mb3JtYXRpb24uIENhbGxpbmcgdGhpcworICogZnVuY3Rpb24gd2l0aCByZXBsYWNl IHBvaW50aW5nIHRvIHRoZSBjb25uZWN0b3IncyBwYXRoX2Jsb2JfcHRyLCBsZW5ndGggYW5kCisg KiBkYXRhIHNldCBmb3IgdGhlIG5ldyBwYXRoIGluZm9ybWF0aW9uLCBvYmpfaG9sZHNfaWQgc2V0 IHRvIHRoZSBjb25uZWN0b3IncworICogYmFzZSBvYmplY3QsIGFuZCBwcm9wX2hvbGRzX2lkIHNl dCB0byB0aGUgcGF0aCBwcm9wZXJ0eSBuYW1lLCB3aWxsIHBlcmZvcm0KKyAqIGEgY29tcGxldGVs eSBhdG9taWMgdXBkYXRlLiBUaGUgYWNjZXNzIHRvIHBhdGhfYmxvYl9wdHIgaXMgcHJvdGVjdGVk IGJ5IHRoZQorICogY2FsbGVyIGhvbGRpbmcgYSBsb2NrIG9uIHRoZSBjb25uZWN0b3IuCisgKi8K K3N0YXRpYyBpbnQgZHJtX3Byb3BlcnR5X3JlcGxhY2VfZ2xvYmFsX2Jsb2Ioc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICoqcmVwbGFjZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9tb2RlX29iamVjdCAq b2JqX2hvbGRzX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wX2hvbGRzX2lkKQoreworCXN0cnVjdCBkcm1fcHJv cGVydHlfYmxvYiAqbmV3X2Jsb2IgPSBOVUxMOworCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAq b2xkX2Jsb2IgPSBOVUxMOworCWludCByZXQ7CisKKwlXQVJOX09OKHJlcGxhY2UgPT0gTlVMTCk7 CisKKwlvbGRfYmxvYiA9ICpyZXBsYWNlOworCisJaWYgKGxlbmd0aCAmJiBkYXRhKSB7CisJCW5l d19ibG9iID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9ibG9iKGRldiwgbGVuZ3RoLCBkYXRhKTsKKwkJ aWYgKCFuZXdfYmxvYikKKwkJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIFRoaXMgZG9lcyBu b3QgbmVlZCB0byBiZSBzeW5jaHJvbmlzZWQgd2l0aCBibG9iX2xvY2ssIGFzIHRoZQorCSAqIGdl dF9wcm9wZXJ0aWVzIGlvY3RsIGxvY2tzIGFsbCBtb2Rlc2V0dGluZyBvYmplY3RzLCBhbmQKKwkg KiBvYmpfaG9sZHNfaWQgbXVzdCBiZSBsb2NrZWQgYmVmb3JlIGNhbGxpbmcgaGVyZSwgc28gd2Ug Y2Fubm90CisJICogaGF2ZSBpdHMgdmFsdWUgb3V0IG9mIHN5bmMgd2l0aCB0aGUgbGlzdCBtZW1i ZXJzaGlwIG1vZGlmaWVkCisJICogYmVsb3cgdW5kZXIgYmxvYl9sb2NrLiAqLworCWlmIChvYmpf aG9sZHNfaWQpIHsKKwkJcmV0ID0gZHJtX29iamVjdF9wcm9wZXJ0eV9zZXRfdmFsdWUob2JqX2hv bGRzX2lkLAorCQkJCQkJICAgIHByb3BfaG9sZHNfaWQsCisJCQkJCQkgICAgbmV3X2Jsb2IgPwor CQkJCQkJICAgICAgICBuZXdfYmxvYi0+YmFzZS5pZCA6IDApOworCQlpZiAocmV0ICE9IDApCisJ CQlnb3RvIGVycl9jcmVhdGVkOworCX0KKworCWlmIChvbGRfYmxvYikKKwkJZHJtX3Byb3BlcnR5 X2Rlc3Ryb3lfYmxvYihkZXYsIG9sZF9ibG9iKTsKKworCSpyZXBsYWNlID0gbmV3X2Jsb2I7CisK KwlyZXR1cm4gMDsKKworZXJyX2NyZWF0ZWQ6CisJZHJtX3Byb3BlcnR5X2Rlc3Ryb3lfYmxvYihk ZXYsIG5ld19ibG9iKTsKKwlyZXR1cm4gcmV0OworfQorCisvKioKICAqIGRybV9tb2RlX2dldGJs b2JfaW9jdGwgLSBnZXQgdGhlIGNvbnRlbnRzIG9mIGEgYmxvYiBwcm9wZXJ0eSB2YWx1ZQogICog QGRldjogRFJNIGRldmljZQogICogQGRhdGE6IGlvY3RsIGRhdGEKQEAgLTQyODUsNyArNDM2Miw3 IEBAIGRvbmU6CiAvKioKICAqIGRybV9tb2RlX2Nvbm5lY3Rvcl9zZXRfcGF0aF9wcm9wZXJ0eSAt IHNldCB0aWxlIHByb3BlcnR5IG9uIGNvbm5lY3RvcgogICogQGNvbm5lY3RvcjogY29ubmVjdG9y IHRvIHNldCBwcm9wZXJ0eSBvbi4KLSAqIEBwYXRoOiBwYXRoIHRvIHVzZSBmb3IgcHJvcGVydHku CisgKiBAcGF0aDogcGF0aCB0byB1c2UgZm9yIHByb3BlcnR5OyBtdXN0IG5vdCBiZSBOVUxMLgog ICoKICAqIFRoaXMgY3JlYXRlcyBhIHByb3BlcnR5IHRvIGV4cG9zZSB0byB1c2Vyc3BhY2UgdG8g c3BlY2lmeSBhCiAgKiBjb25uZWN0b3IgcGF0aC4gVGhpcyBpcyBtYWlubHkgdXNlZCBmb3IgRGlz cGxheVBvcnQgTVNUIHdoZXJlCkBAIC00Mjk5LDIwICs0Mzc2LDE0IEBAIGludCBkcm1fbW9kZV9j b25uZWN0b3Jfc2V0X3BhdGhfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKIAkJCQkJIGNvbnN0IGNoYXIgKnBhdGgpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNvbm5lY3Rvci0+ZGV2OwotCXNpemVfdCBzaXplID0gc3RybGVuKHBhdGgpICsgMTsKIAlpbnQg cmV0OwogCi0JaWYgKGNvbm5lY3Rvci0+cGF0aF9ibG9iX3B0cikKLQkJZHJtX3Byb3BlcnR5X2Rl c3Ryb3lfYmxvYihkZXYsIGNvbm5lY3Rvci0+cGF0aF9ibG9iX3B0cik7Ci0KLQljb25uZWN0b3It PnBhdGhfYmxvYl9wdHIgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2Jsb2IoY29ubmVjdG9yLT5kZXYs Ci0JCQkJCQkJICAgIHNpemUsIHBhdGgpOwotCWlmICghY29ubmVjdG9yLT5wYXRoX2Jsb2JfcHRy KQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCXJldCA9IGRybV9vYmplY3RfcHJvcGVydHlfc2V0X3Zh bHVlKCZjb25uZWN0b3ItPmJhc2UsCi0JCQkJCSAgICBkZXYtPm1vZGVfY29uZmlnLnBhdGhfcHJv cGVydHksCi0JCQkJCSAgICBjb25uZWN0b3ItPnBhdGhfYmxvYl9wdHItPmJhc2UuaWQpOworCXJl dCA9IGRybV9wcm9wZXJ0eV9yZXBsYWNlX2dsb2JhbF9ibG9iKGRldiwKKwkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubmVjdG9yLT5wYXRoX2Jsb2JfcHRyLAorCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihwYXRoKSArIDEsCisJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwKKwkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubmVjdG9yLT5iYXNlLAorCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+bW9kZV9jb25maWcucGF0aF9wcm9w ZXJ0eSk7CiAJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX21vZGVfY29ubmVjdG9y X3NldF9wYXRoX3Byb3BlcnR5KTsKQEAgLTQzMzEsMTYgKzQ0MDIsMTYgQEAgRVhQT1JUX1NZTUJP TChkcm1fbW9kZV9jb25uZWN0b3Jfc2V0X3BhdGhfcHJvcGVydHkpOwogaW50IGRybV9tb2RlX2Nv bm5lY3Rvcl9zZXRfdGlsZV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKLQlpbnQgcmV0 LCBzaXplOwogCWNoYXIgdGlsZVsyNTZdOwotCi0JaWYgKGNvbm5lY3Rvci0+dGlsZV9ibG9iX3B0 cikKLQkJZHJtX3Byb3BlcnR5X2Rlc3Ryb3lfYmxvYihkZXYsIGNvbm5lY3Rvci0+dGlsZV9ibG9i X3B0cik7CisJaW50IHJldDsKIAogCWlmICghY29ubmVjdG9yLT5oYXNfdGlsZSkgewotCQljb25u ZWN0b3ItPnRpbGVfYmxvYl9wdHIgPSBOVUxMOwotCQlyZXQgPSBkcm1fb2JqZWN0X3Byb3BlcnR5 X3NldF92YWx1ZSgmY29ubmVjdG9yLT5iYXNlLAotCQkJCQkJICAgIGRldi0+bW9kZV9jb25maWcu dGlsZV9wcm9wZXJ0eSwgMCk7CisJCXJldCAgPSBkcm1fcHJvcGVydHlfcmVwbGFjZV9nbG9iYWxf YmxvYihkZXYsCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29u bmVjdG9yLT50aWxlX2Jsb2JfcHRyLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMCwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29ubmVjdG9y LT5iYXNlLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5t b2RlX2NvbmZpZy50aWxlX3Byb3BlcnR5KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKQEAgLTQzNDks MTYgKzQ0MjAsMTMgQEAgaW50IGRybV9tb2RlX2Nvbm5lY3Rvcl9zZXRfdGlsZV9wcm9wZXJ0eShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQkgY29ubmVjdG9yLT5udW1faF90aWxl LCBjb25uZWN0b3ItPm51bV92X3RpbGUsCiAJCSBjb25uZWN0b3ItPnRpbGVfaF9sb2MsIGNvbm5l Y3Rvci0+dGlsZV92X2xvYywKIAkJIGNvbm5lY3Rvci0+dGlsZV9oX3NpemUsIGNvbm5lY3Rvci0+ dGlsZV92X3NpemUpOwotCXNpemUgPSBzdHJsZW4odGlsZSkgKyAxOwogCi0JY29ubmVjdG9yLT50 aWxlX2Jsb2JfcHRyID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9ibG9iKGNvbm5lY3Rvci0+ZGV2LAot CQkJCQkJCSAgICBzaXplLCB0aWxlKTsKLQlpZiAoIWNvbm5lY3Rvci0+dGlsZV9ibG9iX3B0cikK LQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlyZXQgPSBkcm1fb2JqZWN0X3Byb3BlcnR5X3NldF92YWx1 ZSgmY29ubmVjdG9yLT5iYXNlLAotCQkJCQkgICAgZGV2LT5tb2RlX2NvbmZpZy50aWxlX3Byb3Bl cnR5LAotCQkJCQkgICAgY29ubmVjdG9yLT50aWxlX2Jsb2JfcHRyLT5iYXNlLmlkKTsKKwlyZXQg PSBkcm1fcHJvcGVydHlfcmVwbGFjZV9nbG9iYWxfYmxvYihkZXYsCisJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm5lY3Rvci0+dGlsZV9ibG9iX3B0ciwKKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4odGlsZSkgKyAxLAorCSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGUsCisJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbm5lY3Rvci0+YmFzZSwKKwkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXYtPm1vZGVfY29uZmlnLnRpbGVfcHJvcGVy dHkpOwogCXJldHVybiByZXQ7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9tb2RlX2Nvbm5lY3Rvcl9z ZXRfdGlsZV9wcm9wZXJ0eSk7CkBAIC00Mzc4LDMzICs0NDQ2LDIyIEBAIGludCBkcm1fbW9kZV9j b25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKIAkJCQkJICAgIGNvbnN0IHN0cnVjdCBlZGlkICplZGlkKQogewogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKLQlzaXplX3Qgc2l6ZTsKKwlzaXplX3Qgc2l6 ZSA9IDA7CiAJaW50IHJldDsKIAogCS8qIGlnbm9yZSByZXF1ZXN0cyB0byBzZXQgZWRpZCB3aGVu IG92ZXJyaWRkZW4gKi8KIAlpZiAoY29ubmVjdG9yLT5vdmVycmlkZV9lZGlkKQogCQlyZXR1cm4g MDsKIAotCWlmIChjb25uZWN0b3ItPmVkaWRfYmxvYl9wdHIpCi0JCWRybV9wcm9wZXJ0eV9kZXN0 cm95X2Jsb2IoZGV2LCBjb25uZWN0b3ItPmVkaWRfYmxvYl9wdHIpOwotCi0JLyogRGVsZXRlIGVk aWQsIHdoZW4gdGhlcmUgaXMgbm9uZS4gKi8KLQlpZiAoIWVkaWQpIHsKLQkJY29ubmVjdG9yLT5l ZGlkX2Jsb2JfcHRyID0gTlVMTDsKLQkJcmV0ID0gZHJtX29iamVjdF9wcm9wZXJ0eV9zZXRfdmFs dWUoJmNvbm5lY3Rvci0+YmFzZSwgZGV2LT5tb2RlX2NvbmZpZy5lZGlkX3Byb3BlcnR5LCAwKTsK LQkJcmV0dXJuIHJldDsKLQl9Ci0KLQlzaXplID0gRURJRF9MRU5HVEggKiAoMSArIGVkaWQtPmV4 dGVuc2lvbnMpOwotCWNvbm5lY3Rvci0+ZWRpZF9ibG9iX3B0ciA9IGRybV9wcm9wZXJ0eV9jcmVh dGVfYmxvYihjb25uZWN0b3ItPmRldiwKLQkJCQkJCQkgICAgc2l6ZSwgZWRpZCk7Ci0JaWYgKCFj b25uZWN0b3ItPmVkaWRfYmxvYl9wdHIpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JcmV0ID0gZHJt X29iamVjdF9wcm9wZXJ0eV9zZXRfdmFsdWUoJmNvbm5lY3Rvci0+YmFzZSwKLQkJCQkJICAgICAg IGRldi0+bW9kZV9jb25maWcuZWRpZF9wcm9wZXJ0eSwKLQkJCQkJICAgICAgIGNvbm5lY3Rvci0+ ZWRpZF9ibG9iX3B0ci0+YmFzZS5pZCk7CisJaWYgKGVkaWQpCisJCXNpemUgPSBFRElEX0xFTkdU SCArICgxICsgZWRpZC0+ZXh0ZW5zaW9ucyk7CiAKKwlyZXQgPSBkcm1fcHJvcGVydHlfcmVwbGFj ZV9nbG9iYWxfYmxvYihkZXYsCisJCQkJCSAgICAgICAmY29ubmVjdG9yLT5lZGlkX2Jsb2JfcHRy LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUsCisJICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpZCwKKwkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmY29ubmVjdG9yLT5iYXNlLAorCSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRldi0+bW9kZV9jb25maWcuZWRpZF9wcm9wZXJ0eSk7 CiAJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX21vZGVfY29ubmVjdG9yX3VwZGF0 ZV9lZGlkX3Byb3BlcnR5KTsKLS0gCjIuMy41CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=