From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 5/7] drm/i915: Use the plane state for cursor updates. Date: Thu, 7 Jan 2016 14:29:49 +0200 Message-ID: <20160107122949.GX4437@intel.com> References: <1452164052-21752-1-git-send-email-maarten.lankhorst@linux.intel.com> <1452164052-21752-6-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 1DEEE8A398 for ; Thu, 7 Jan 2016 04:29:53 -0800 (PST) Content-Disposition: inline In-Reply-To: <1452164052-21752-6-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKYW4gMDcsIDIwMTYgYXQgMTE6NTQ6MTBBTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gQ3Vyc29yIHBsYW5lcyBncmFiIHRoZSBzdGF0ZSBmcm9tIHBsYW5lLT5zdGF0 ZSBpbnN0ZWFkIG9mIHRoZSBzdGF0ZQo+IHRoYXQgd2FzIHBhc3NlZC4gVGhlIG9ubHkgdXBkYXRl cyBhcmUgYXRvbWljIG5vdywgc28gdXNlIHRoZSBwbGFuZV9zdGF0ZQo+IHRoYXQncyBwYXNzZWQg aW4uCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hv cnN0QGxpbnV4LmludGVsLmNvbT4KCkFnYWluIGNsYXNoZXMgYSBiaXQgd2l0aCBteSBwZW5kaW5n IHN0dWZmLiBCdXQgbGlrZSBzYWlkLCBJIGNhbgpyZWJhc2UuCgpSZXZpZXdlZC1ieTogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDkyICsrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgNDYg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4 IDdlYTQ5ZDVlMmNlMC4uZjdjMjkzNjM4ZGY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IEBAIC0xMDA3NiwxNiArMTAwNzYsMTcgQEAgc3RhdGljIGJvb2wgaGFzd2Vs bF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlyZXR1cm4gdHJ1 ZTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaTg0NV91cGRhdGVfY3Vyc29yKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywgdTMyIGJhc2UsIGJvb2wgb24pCj4gK3N0YXRpYyB2b2lkIGk4NDVfdXBkYXRl X2N1cnNvcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHUzMiBiYXNlLAo+ICsJCQkgICAgICAgY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAl1aW50MzJfdCBjbnRsID0gMCwgc2l6 ZSA9IDA7Cj4gIAo+IC0JaWYgKG9uKSB7Cj4gLQkJdW5zaWduZWQgaW50IHdpZHRoID0gaW50ZWxf Y3J0Yy0+YmFzZS5jdXJzb3ItPnN0YXRlLT5jcnRjX3c7Cj4gLQkJdW5zaWduZWQgaW50IGhlaWdo dCA9IGludGVsX2NydGMtPmJhc2UuY3Vyc29yLT5zdGF0ZS0+Y3J0Y19oOwo+ICsJaWYgKHBsYW5l X3N0YXRlICYmIHBsYW5lX3N0YXRlLT52aXNpYmxlKSB7Cj4gKwkJdW5zaWduZWQgaW50IHdpZHRo ID0gcGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193Owo+ICsJCXVuc2lnbmVkIGludCBoZWlnaHQgPSBw bGFuZV9zdGF0ZS0+YmFzZS5jcnRjX2g7Cj4gIAkJdW5zaWduZWQgaW50IHN0cmlkZSA9IHJvdW5k dXBfcG93X29mX3R3byh3aWR0aCkgKiA0Owo+ICAKPiAgCQlzd2l0Y2ggKHN0cmlkZSkgewo+IEBA IC0xMDEzOCw3ICsxMDEzOSw4IEBAIHN0YXRpYyB2b2lkIGk4NDVfdXBkYXRlX2N1cnNvcihzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsIHUzMiBiYXNlLCBib29sIG9uKQo+ICAJfQo+ICB9Cj4gIAo+IC1z dGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9jcnRjICpjcnRjLCB1MzIg YmFzZSwgYm9vbCBvbikKPiArc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfY3Vyc29yKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywgdTMyIGJhc2UsCj4gKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMTAxNDYsOSArMTAxNDgsOSBAQCBzdGF0aWMgdm9pZCBpOXh4 X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9jcnRjICpjcnRjLCB1MzIgYmFzZSwgYm9vbCBvbikK PiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCXVpbnQzMl90IGNudGwgPSAwOwo+ ICAKPiAtCWlmIChvbikgewo+ICsJaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT52aXNp YmxlKSB7Cj4gIAkJY250bCA9IE1DVVJTT1JfR0FNTUFfRU5BQkxFOwo+IC0JCXN3aXRjaCAoaW50 ZWxfY3J0Yy0+YmFzZS5jdXJzb3ItPnN0YXRlLT5jcnRjX3cpIHsKPiArCQlzd2l0Y2ggKHBsYW5l X3N0YXRlLT5iYXNlLmNydGNfdykgewo+ICAJCQljYXNlIDY0Ogo+ICAJCQkJY250bCB8PSBDVVJT T1JfTU9ERV82NF9BUkdCX0FYOwo+ICAJCQkJYnJlYWs7Cj4gQEAgLTEwMTU5LDE3ICsxMDE2MSwx NyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9jcnRjICpjcnRj LCB1MzIgYmFzZSwgYm9vbCBvbikKPiAgCQkJCWNudGwgfD0gQ1VSU09SX01PREVfMjU2X0FSR0Jf QVg7Cj4gIAkJCQlicmVhazsKPiAgCQkJZGVmYXVsdDoKPiAtCQkJCU1JU1NJTkdfQ0FTRShpbnRl bF9jcnRjLT5iYXNlLmN1cnNvci0+c3RhdGUtPmNydGNfdyk7Cj4gKwkJCQlNSVNTSU5HX0NBU0Uo cGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193KTsKPiAgCQkJCXJldHVybjsKPiAgCQl9Cj4gIAkJY250 bCB8PSBwaXBlIDw8IDI4OyAvKiBDb25uZWN0IHRvIGNvcnJlY3QgcGlwZSAqLwo+ICAKPiAgCQlp ZiAoSEFTX0RESShkZXYpKQo+ICAJCQljbnRsIHw9IENVUlNPUl9QSVBFX0NTQ19FTkFCTEU7Cj4g LQl9Cj4gIAo+IC0JaWYgKGNydGMtPmN1cnNvci0+c3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1f Uk9UQVRFXzE4MCkpCj4gLQkJY250bCB8PSBDVVJTT1JfUk9UQVRFXzE4MDsKPiArCQlpZiAocGxh bmVfc3RhdGUtPmJhc2Uucm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkKPiArCQkJY250 bCB8PSBDVVJTT1JfUk9UQVRFXzE4MDsKPiArCX0KPiAgCj4gIAlpZiAoaW50ZWxfY3J0Yy0+Y3Vy c29yX2NudGwgIT0gY250bCkgewo+ICAJCUk5MTVfV1JJVEUoQ1VSQ05UUihwaXBlKSwgY250bCk7 Cj4gQEAgLTEwMTg2LDQ0ICsxMDE4OCw0NSBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9jdXJz b3Ioc3RydWN0IGRybV9jcnRjICpjcnRjLCB1MzIgYmFzZSwgYm9vbCBvbikKPiAgCj4gIC8qIElm IG5vLXBhcnQgb2YgdGhlIGN1cnNvciBpcyB2aXNpYmxlIG9uIHRoZSBmcmFtZWJ1ZmZlciwgdGhl biB0aGUgR1BVIG1heSBoYW5nLi4uICovCj4gIHN0YXRpYyB2b2lkIGludGVsX2NydGNfdXBkYXRl X2N1cnNvcihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gLQkJCQkgICAgIGJvb2wgb24pCj4gKwkJ CQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsK PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJaW50IHBpcGUgPSBp bnRlbF9jcnRjLT5waXBlOwo+IC0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqY3Vyc29yX3N0YXRl ID0gY3J0Yy0+Y3Vyc29yLT5zdGF0ZTsKPiAtCWludCB4ID0gY3Vyc29yX3N0YXRlLT5jcnRjX3g7 Cj4gLQlpbnQgeSA9IGN1cnNvcl9zdGF0ZS0+Y3J0Y195Owo+IC0JdTMyIGJhc2UgPSAwLCBwb3Mg PSAwOwo+ICsJdTMyIGJhc2UgPSBpbnRlbF9jcnRjLT5jdXJzb3JfYWRkcjsKPiArCXUzMiBwb3Mg PSAwOwo+ICAKPiAtCWJhc2UgPSBpbnRlbF9jcnRjLT5jdXJzb3JfYWRkcjsKPiArCWlmIChwbGFu ZV9zdGF0ZSkgewo+ICsJCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2UuY3J0Y194Owo+ICsJCWlu dCB5ID0gcGxhbmVfc3RhdGUtPmJhc2UuY3J0Y195Owo+ICAKPiAtCWlmICh4IDwgMCkgewo+IC0J CXBvcyB8PSBDVVJTT1JfUE9TX1NJR04gPDwgQ1VSU09SX1hfU0hJRlQ7Cj4gLQkJeCA9IC14Owo+ IC0JfQo+IC0JcG9zIHw9IHggPDwgQ1VSU09SX1hfU0hJRlQ7Cj4gKwkJaWYgKHggPCAwKSB7Cj4g KwkJCXBvcyB8PSBDVVJTT1JfUE9TX1NJR04gPDwgQ1VSU09SX1hfU0hJRlQ7Cj4gKwkJCXggPSAt eDsKPiArCQl9Cj4gKwkJcG9zIHw9IHggPDwgQ1VSU09SX1hfU0hJRlQ7Cj4gIAo+IC0JaWYgKHkg PCAwKSB7Cj4gLQkJcG9zIHw9IENVUlNPUl9QT1NfU0lHTiA8PCBDVVJTT1JfWV9TSElGVDsKPiAt CQl5ID0gLXk7Cj4gKwkJaWYgKHkgPCAwKSB7Cj4gKwkJCXBvcyB8PSBDVVJTT1JfUE9TX1NJR04g PDwgQ1VSU09SX1lfU0hJRlQ7Cj4gKwkJCXkgPSAteTsKPiArCQl9Cj4gKwkJcG9zIHw9IHkgPDwg Q1VSU09SX1lfU0hJRlQ7Cj4gKwo+ICsJCS8qIElMSysgZG8gdGhpcyBhdXRvbWFnaWNhbGx5ICov Cj4gKwkJaWYgKEhBU19HTUNIX0RJU1BMQVkoZGV2KSAmJgo+ICsJCSAgICBwbGFuZV9zdGF0ZS0+ YmFzZS5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKSB7Cj4gKwkJCWJhc2UgKz0gKHBs YW5lX3N0YXRlLT5iYXNlLmNydGNfaCAqCj4gKwkJCQkgcGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193 IC0gMSkgKiA0Owo+ICsJCX0KPiAgCX0KPiAtCXBvcyB8PSB5IDw8IENVUlNPUl9ZX1NISUZUOwo+ ICAKPiAgCUk5MTVfV1JJVEUoQ1VSUE9TKHBpcGUpLCBwb3MpOwo+ICAKPiAtCS8qIElMSysgZG8g dGhpcyBhdXRvbWFnaWNhbGx5ICovCj4gLQlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXYpICYmCj4g LQkgICAgY3J0Yy0+Y3Vyc29yLT5zdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgw KSkgewo+IC0JCWJhc2UgKz0gKGN1cnNvcl9zdGF0ZS0+Y3J0Y19oICoKPiAtCQkJIGN1cnNvcl9z dGF0ZS0+Y3J0Y193IC0gMSkgKiA0Owo+IC0JfQo+IC0KPiAgCWlmIChJU184NDVHKGRldikgfHwg SVNfSTg2NUcoZGV2KSkKPiAtCQlpODQ1X3VwZGF0ZV9jdXJzb3IoY3J0YywgYmFzZSwgb24pOwo+ ICsJCWk4NDVfdXBkYXRlX2N1cnNvcihjcnRjLCBiYXNlLCBwbGFuZV9zdGF0ZSk7Cj4gIAllbHNl Cj4gLQkJaTl4eF91cGRhdGVfY3Vyc29yKGNydGMsIGJhc2UsIG9uKTsKPiArCQlpOXh4X3VwZGF0 ZV9jdXJzb3IoY3J0YywgYmFzZSwgcGxhbmVfc3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9v bCBjdXJzb3Jfc2l6ZV9vayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+IEBAIC0xNDE4MCwyMiAr MTQxODMsMjAgQEAgaW50ZWxfZGlzYWJsZV9jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Yyk7Cj4gIAo+ICAJaW50ZWxfY3J0Yy0+Y3Vyc29yX2FkZHIgPSAwOwo+IC0JaW50ZWxfY3J0 Y191cGRhdGVfY3Vyc29yKGNydGMsIGZhbHNlKTsKPiArCWludGVsX2NydGNfdXBkYXRlX2N1cnNv cihjcnRjLCBOVUxMKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAtaW50ZWxfY29tbWl0X2N1 cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAtCQkJICBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnN0YXRlKQo+ICtpbnRlbF91cGRhdGVfY3Vyc29yX3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUp Cj4gIHsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHN0YXRlLT5iYXNlLmNydGM7Cj4gKwlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBjcnRjX3N0YXRlLT5iYXNlLmNydGM7Cj4gKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29i aihzdGF0ZS0+YmFzZS5mYik7Cj4gIAl1aW50MzJfdCBhZGRyOwo+ICAKPiAtCWNydGMgPSBjcnRj ID8gY3J0YyA6IHBsYW5lLT5jcnRjOwo+IC0JaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gLQo+ICAJaWYgKCFvYmopCj4gIAkJYWRkciA9IDA7Cj4gIAllbHNlIGlmICghSU5URUxf SU5GTyhkZXYpLT5jdXJzb3JfbmVlZHNfcGh5c2ljYWwpCj4gQEAgLTE0MjA0LDggKzE0MjA1LDcg QEAgaW50ZWxfY29tbWl0X2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAg CQlhZGRyID0gb2JqLT5waHlzX2hhbmRsZS0+YnVzYWRkcjsKPiAgCj4gIAlpbnRlbF9jcnRjLT5j dXJzb3JfYWRkciA9IGFkZHI7Cj4gLQo+IC0JaW50ZWxfY3J0Y191cGRhdGVfY3Vyc29yKGNydGMs IHN0YXRlLT52aXNpYmxlKTsKPiArCWludGVsX2NydGNfdXBkYXRlX2N1cnNvcihjcnRjLCBzdGF0 ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lICppbnRlbF9jdXJzb3JfcGxh bmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gQEAgLTE0MjMxLDcgKzE0MjMxLDcg QEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX2N1cnNvcl9wbGFuZV9jcmVhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCWN1cnNvci0+cGxhbmUgPSBwaXBlOwo+ICAJY3Vyc29y LT5mcm9udGJ1ZmZlcl9iaXQgPSBJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IocGlwZSk7Cj4gIAlj dXJzb3ItPmNoZWNrX3BsYW5lID0gaW50ZWxfY2hlY2tfY3Vyc29yX3BsYW5lOwo+IC0JY3Vyc29y LT5jb21taXRfcGxhbmUgPSBpbnRlbF9jb21taXRfY3Vyc29yX3BsYW5lOwo+ICsJY3Vyc29yLT51 cGRhdGVfcGxhbmUgPSBpbnRlbF91cGRhdGVfY3Vyc29yX3BsYW5lOwo+ICAJY3Vyc29yLT5kaXNh YmxlX3BsYW5lID0gaW50ZWxfZGlzYWJsZV9jdXJzb3JfcGxhbmU7Cj4gIAo+ICAJZHJtX3VuaXZl cnNhbF9wbGFuZV9pbml0KGRldiwgJmN1cnNvci0+YmFzZSwgMCwKPiAtLSAKPiAyLjEuMAo+IAo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAK VmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=