From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH 3/7] drm/i915: Move vblank evasion to commit (v3) Date: Tue, 9 Dec 2014 11:53:39 -0800 Message-ID: <1418154823-10819-4-git-send-email-matthew.d.roper@intel.com> References: <1418154823-10819-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id B227D6E29D for ; Tue, 9 Dec 2014 11:54:14 -0800 (PST) In-Reply-To: <1418154823-10819-1-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org TW92ZSB0aGUgdmJsYW5rIGV2YXNpb24gdXAgZnJvbSB0aGUgbG93LWxldmVsLCBody1zcGVjaWZp Ywp1cGRhdGVfcGxhbmUoKSBoYW5kbGVycyB0byB0aGUgZ2VuZXJhbCBwbGFuZSBjb21taXQgb3Bl cmF0aW9uLgpFdmVyeXRoaW5nIGluc2lkZSBjb21taXQgc2hvdWxkIG5vdyBiZSBub24tc2xlZXBp bmcsIHNvIHRoaXMgYnJpbmdzIHVzCmNsb3NlciB0byBob3cgdmJsYW5rIGV2YXNpb24gd2lsbCBi ZWhhdmUgb25jZSB3ZSBtb3ZlIG92ZXIgdG8gYXRvbWljLgoKdjI6CiAtIFJlc3RvcmUgbG9zdCBp bnRlbF9jcnRjLT5hY3RpdmUgY2hlY2sgb24gdmJsYW5rIGV2YXNpb24KCnYzOgogLSBSZXBsYWNl IGFzc2VydF9waXBlX2VuYWJsZWQoKSBpbiBpbnRlbF9kaXNhYmxlX3ByaW1hcnlfaHdfcGxhbmUo KQogICB3aXRoIGFuIGludGVsX2NydGMtPmFjdGl2ZSB0ZXN0OyBpdCB0dXJucyBvdXQgYXNzZXJ0 X3BpcGVfZW5hYmxlZCgpCiAgIGdyYWJzIHNvbWUgbXV0ZXhlcyBhbmQgY2FuIHNsZWVwLCB3aGlj aCB3ZSBjYW4ndCBkbyB3aXRoIGludGVycnVwdHMKICAgZGlzYWJsZWQuCgpTaWduZWQtb2ZmLWJ5 OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDEzICsrKysrKysrKystCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgNCArKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYyAgfCA0MiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K IDMgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDQ5MjkwMDYuLjM3MGJkZDAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTIxNjUsNyArMjE2NSw4IEBAIHN0YXRp YyB2b2lkIGludGVsX2Rpc2FibGVfcHJpbWFyeV9od19wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKIAotCWFzc2VydF9waXBlX2VuYWJsZWQoZGV2X3ByaXYsIGludGVsX2NydGMtPnBpcGUpOwor CWlmIChXQVJOX09OKCFpbnRlbF9jcnRjLT5hY3RpdmUpKQorCQlyZXR1cm47CiAKIAlpZiAoIWlu dGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCkKIAkJcmV0dXJuOwpAQCAtMTE4NjEsNiArMTE4NjIs MTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRj ICpjcnRjKQogCiAJaWYgKGludGVsX2NydGMtPmF0b21pYy51cGRhdGVfd20pCiAJCWludGVsX3Vw ZGF0ZV93YXRlcm1hcmtzKGNydGMpOworCisJLyogUGVyZm9ybSB2YmxhbmsgZXZhc2lvbiBhcm91 bmQgY29tbWl0IG9wZXJhdGlvbiAqLworCWlmIChpbnRlbF9jcnRjLT5hY3RpdmUpCisJCWludGVs X2NydGMtPmF0b21pYy5ldmFkZSA9CisJCQlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRlbF9j cnRjLAorCQkJCQkJJmludGVsX2NydGMtPmF0b21pYy5zdGFydF92YmxfY291bnQpOwogfQogCiBz dGF0aWMgdm9pZCBpbnRlbF9maW5pc2hfY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRj KQpAQCAtMTE4NjgsNiArMTE4NzUsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmluaXNoX2NydGNf Y29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y3J0Yy0+ZGV2OwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKIAorCWlmIChpbnRlbF9jcnRjLT5hdG9taWMuZXZhZGUpCisJCWludGVsX3BpcGVf dXBkYXRlX2VuZChpbnRlbF9jcnRjLAorCQkJCSAgICAgIGludGVsX2NydGMtPmF0b21pYy5zdGFy dF92YmxfY291bnQpOworCiAJaWYgKGludGVsX2NydGMtPmF0b21pYy53YWl0X3ZibGFuaykKIAkJ aW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgaW50ZWxfY3J0Yy0+cGlwZSk7CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKaW5kZXggYjI1MjBmZC4uN2VmZmE0NiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKQEAgLTQyOCw2ICs0MjgsMTAgQEAgc3RydWN0IHNrbF9waXBlX3dtIHsKICAqIGFu ZCB0aHVzIGNhbid0IGJlIHJ1biB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQuCiAgKi8KIHN0cnVj dCBpbnRlbF9jcnRjX2F0b21pY19jb21taXQgeworCS8qIHZibGFuayBldmFzaW9uICovCisJYm9v bCBldmFkZTsKKwl1bnNpZ25lZCBzdGFydF92YmxfY291bnQ7CisKIAkvKiBTbGVlcGFibGUgb3Bl cmF0aW9ucyB0byBwZXJmb3JtIGJlZm9yZSBjb21taXQgKi8KIAlib29sIHdhaXRfZm9yX2ZsaXBz OwogCWJvb2wgZGlzYWJsZV9mYmM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCmluZGV4 IDBhMmJlNzguLmY5NDk3YzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3Nwcml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC00 MTIsOCArNDEyLDYgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAl1MzIgc3ByY3RsOwogCXVuc2lnbmVkIGxvbmcgc3By c3VyZl9vZmZzZXQsIGxpbmVhcl9vZmZzZXQ7CiAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0 X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKLQl1MzIgc3RhcnRfdmJsX2NvdW50Owot CWJvb2wgYXRvbWljX3VwZGF0ZTsKIAogCXNwcmN0bCA9IEk5MTVfUkVBRChTUENOVFIocGlwZSwg cGxhbmUpKTsKIApAQCAtNTAyLDggKzUwMCw2IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGRy bV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCWxpbmVhcl9vZmZzZXQg Kz0gc3JjX2ggKiBmYi0+cGl0Y2hlc1swXSArIHNyY193ICogcGl4ZWxfc2l6ZTsKIAl9CiAKLQlh dG9taWNfdXBkYXRlID0gaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoaW50ZWxfY3J0YywgJnN0YXJ0 X3ZibF9jb3VudCk7Ci0KIAlpbnRlbF91cGRhdGVfcHJpbWFyeV9wbGFuZShpbnRlbF9jcnRjKTsK IAogCWlmIChJU19DSEVSUllWSUVXKGRldikgJiYgcGlwZSA9PSBQSVBFX0IpCkBAIC01MjUsOSAr NTIxLDYgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKIAkJICAgc3Byc3VyZl9vZmZzZXQpOwogCiAJaW50ZWxfZmx1c2hf cHJpbWFyeV9wbGFuZShkZXZfcHJpdiwgaW50ZWxfY3J0Yy0+cGxhbmUpOwotCi0JaWYgKGF0b21p Y191cGRhdGUpCi0JCWludGVsX3BpcGVfdXBkYXRlX2VuZChpbnRlbF9jcnRjLCBzdGFydF92Ymxf Y291bnQpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNTM5LDEwICs1MzIsNiBAQCB2bHZfZGlzYWJs ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJ aW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKIAlpbnQgcGxhbmUgPSBpbnRlbF9wbGFuZS0+ cGxhbmU7Ci0JdTMyIHN0YXJ0X3ZibF9jb3VudDsKLQlib29sIGF0b21pY191cGRhdGU7Ci0KLQlh dG9taWNfdXBkYXRlID0gaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoaW50ZWxfY3J0YywgJnN0YXJ0 X3ZibF9jb3VudCk7CiAKIAlpbnRlbF91cGRhdGVfcHJpbWFyeV9wbGFuZShpbnRlbF9jcnRjKTsK IApAQCAtNTUzLDkgKzU0Miw2IEBAIHZsdl9kaXNhYmxlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjKQogCiAJaW50ZWxfZmx1c2hfcHJpbWFyeV9w bGFuZShkZXZfcHJpdiwgaW50ZWxfY3J0Yy0+cGxhbmUpOwogCi0JaWYgKGF0b21pY191cGRhdGUp Ci0JCWludGVsX3BpcGVfdXBkYXRlX2VuZChpbnRlbF9jcnRjLCBzdGFydF92YmxfY291bnQpOwot CiAJaW50ZWxfdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzKGRwbGFuZSwgY3J0YywgMCwgMCwgMCwg ZmFsc2UsIGZhbHNlKTsKIH0KIApAQCAtNjI2LDggKzYxMiw2IEBAIGl2Yl91cGRhdGVfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAl1MzIgc3By Y3RsLCBzcHJzY2FsZSA9IDA7CiAJdW5zaWduZWQgbG9uZyBzcHJzdXJmX29mZnNldCwgbGluZWFy X29mZnNldDsKIAlpbnQgcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhl bF9mb3JtYXQsIDApOwotCXUzMiBzdGFydF92YmxfY291bnQ7Ci0JYm9vbCBhdG9taWNfdXBkYXRl OwogCiAJc3ByY3RsID0gSTkxNV9SRUFEKFNQUkNUTChwaXBlKSk7CiAKQEAgLTcxMSw4ICs2OTUs NiBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCiAJCX0KIAl9CiAKLQlhdG9taWNfdXBkYXRlID0gaW50ZWxfcGlwZV91cGRh dGVfc3RhcnQoaW50ZWxfY3J0YywgJnN0YXJ0X3ZibF9jb3VudCk7Ci0KIAlpbnRlbF91cGRhdGVf cHJpbWFyeV9wbGFuZShpbnRlbF9jcnRjKTsKIAogCUk5MTVfV1JJVEUoU1BSU1RSSURFKHBpcGUp LCBmYi0+cGl0Y2hlc1swXSk7CkBAIC03MzUsOSArNzE3LDYgQEAgaXZiX3VwZGF0ZV9wbGFuZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkgICBpOTE1 X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIHNwcnN1cmZfb2Zmc2V0KTsKIAogCWludGVsX2Zs dXNoX3ByaW1hcnlfcGxhbmUoZGV2X3ByaXYsIGludGVsX2NydGMtPnBsYW5lKTsKLQotCWlmIChh dG9taWNfdXBkYXRlKQotCQlpbnRlbF9waXBlX3VwZGF0ZV9lbmQoaW50ZWxfY3J0Yywgc3RhcnRf dmJsX2NvdW50KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTc0OCwxMCArNzI3LDYgQEAgaXZiX2Rp c2FibGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmUpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj KTsKIAlpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwotCXUzMiBzdGFydF92YmxfY291bnQ7 Ci0JYm9vbCBhdG9taWNfdXBkYXRlOwotCi0JYXRvbWljX3VwZGF0ZSA9IGludGVsX3BpcGVfdXBk YXRlX3N0YXJ0KGludGVsX2NydGMsICZzdGFydF92YmxfY291bnQpOwogCiAJaW50ZWxfdXBkYXRl X3ByaW1hcnlfcGxhbmUoaW50ZWxfY3J0Yyk7CiAKQEAgLTc2NCw5ICs3MzksNiBAQCBpdmJfZGlz YWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRj KQogCiAJaW50ZWxfZmx1c2hfcHJpbWFyeV9wbGFuZShkZXZfcHJpdiwgaW50ZWxfY3J0Yy0+cGxh bmUpOwogCi0JaWYgKGF0b21pY191cGRhdGUpCi0JCWludGVsX3BpcGVfdXBkYXRlX2VuZChpbnRl bF9jcnRjLCBzdGFydF92YmxfY291bnQpOwotCiAJLyoKIAkgKiBBdm9pZCB1bmRlcnJ1bnMgd2hl biBkaXNhYmxpbmcgdGhlIHNwcml0ZS4KIAkgKiBGSVhNRSByZW1vdmUgb25jZSB3YXRlcm1hcmsg dXBkYXRlcyBhcmUgZG9uZSBwcm9wZXJseS4KQEAgLTg0Niw4ICs4MTgsNiBAQCBpbGtfdXBkYXRl X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ dW5zaWduZWQgbG9uZyBkdnNzdXJmX29mZnNldCwgbGluZWFyX29mZnNldDsKIAl1MzIgZHZzY250 ciwgZHZzc2NhbGU7CiAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+ cGl4ZWxfZm9ybWF0LCAwKTsKLQl1MzIgc3RhcnRfdmJsX2NvdW50OwotCWJvb2wgYXRvbWljX3Vw ZGF0ZTsKIAogCWR2c2NudHIgPSBJOTE1X1JFQUQoRFZTQ05UUihwaXBlKSk7CiAKQEAgLTkyMiw4 ICs4OTIsNiBAQCBpbGtfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJCWxpbmVhcl9vZmZzZXQgKz0gc3JjX2ggKiBmYi0+cGl0Y2hl c1swXSArIHNyY193ICogcGl4ZWxfc2l6ZTsKIAl9CiAKLQlhdG9taWNfdXBkYXRlID0gaW50ZWxf cGlwZV91cGRhdGVfc3RhcnQoaW50ZWxfY3J0YywgJnN0YXJ0X3ZibF9jb3VudCk7Ci0KIAlpbnRl bF91cGRhdGVfcHJpbWFyeV9wbGFuZShpbnRlbF9jcnRjKTsKIAogCUk5MTVfV1JJVEUoRFZTU1RS SURFKHBpcGUpLCBmYi0+cGl0Y2hlc1swXSk7CkBAIC05NDEsOSArOTA5LDYgQEAgaWxrX3VwZGF0 ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAog CQkgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIGR2c3N1cmZfb2Zmc2V0KTsKIAog CWludGVsX2ZsdXNoX3ByaW1hcnlfcGxhbmUoZGV2X3ByaXYsIGludGVsX2NydGMtPnBsYW5lKTsK LQotCWlmIChhdG9taWNfdXBkYXRlKQotCQlpbnRlbF9waXBlX3VwZGF0ZV9lbmQoaW50ZWxfY3J0 Yywgc3RhcnRfdmJsX2NvdW50KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTk1NCwxMCArOTE5LDYg QEAgaWxrX2Rpc2FibGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxf cGxhbmUocGxhbmUpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjKTsKIAlpbnQgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwotCXUzMiBzdGFydF92 YmxfY291bnQ7Ci0JYm9vbCBhdG9taWNfdXBkYXRlOwotCi0JYXRvbWljX3VwZGF0ZSA9IGludGVs X3BpcGVfdXBkYXRlX3N0YXJ0KGludGVsX2NydGMsICZzdGFydF92YmxfY291bnQpOwogCiAJaW50 ZWxfdXBkYXRlX3ByaW1hcnlfcGxhbmUoaW50ZWxfY3J0Yyk7CiAKQEAgLTk2OSw5ICs5MzAsNiBA QCBpbGtfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9j cnRjICpjcnRjKQogCiAJaW50ZWxfZmx1c2hfcHJpbWFyeV9wbGFuZShkZXZfcHJpdiwgaW50ZWxf Y3J0Yy0+cGxhbmUpOwogCi0JaWYgKGF0b21pY191cGRhdGUpCi0JCWludGVsX3BpcGVfdXBkYXRl X2VuZChpbnRlbF9jcnRjLCBzdGFydF92YmxfY291bnQpOwotCiAJLyoKIAkgKiBBdm9pZCB1bmRl cnJ1bnMgd2hlbiBkaXNhYmxpbmcgdGhlIHNwcml0ZS4KIAkgKiBGSVhNRSByZW1vdmUgb25jZSB3 YXRlcm1hcmsgdXBkYXRlcyBhcmUgZG9uZSBwcm9wZXJseS4KLS0gCjEuOC41LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==