From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liviu Dudau Subject: Re: [PATCH 2/3] drm: Create a format/modifier blob Date: Wed, 3 May 2017 14:15:15 +0100 Message-ID: <20170503131515.GI28653@e110455-lin.cambridge.arm.com> References: <20170503051428.4734-1-ben@bwidawsk.net> <20170503051428.4734-2-ben@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170503051428.4734-2-ben@bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ben Widawsky Cc: Intel GFX , "Kristian H . Kristensen" , Daniel Stone , DRI Development List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXkgMDIsIDIwMTcgYXQgMTA6MTQ6MjdQTSAtMDcwMCwgQmVuIFdpZGF3c2t5IHdy b3RlOgo+IFVwZGF0ZWQgYmxvYiBsYXlvdXQgKFJvYiwgRGFuaWVsLCBLcmlzdGlhbiwgeGVycGkp Cj4gCj4gQ2M6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KPiBDYzogRGFuaWVsIFN0 b25lIDxkYW5pZWxzQGNvbGxhYm9yYS5jb20+Cj4gQ2M6IEtyaXN0aWFuIEguIEtyaXN0ZW5zZW4g PGhvZWdzYmVyZ0BnbWFpbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQmVuIFdpZGF3c2t5IDxiZW5A YndpZGF3c2submV0Pgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVfY29uZmlnLmMg fCAgIDcgKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYyAgICAgICB8IDExOSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL2RybS9kcm1fbW9k ZV9jb25maWcuaCAgICAgfCAgIDYgKysKPiAgaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oICAg ICAgIHwgIDI2ICsrKysrKysrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDE1OCBpbnNlcnRpb25zKCsp Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcuYwo+IGluZGV4IGQ5ODYyMjU5YTJhNy4uNmJm YmMzODM5ZGY1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcuYwo+IEBAIC0zMzcsNiAr MzM3LDEzIEBAIHN0YXRpYyBpbnQgZHJtX21vZGVfY3JlYXRlX3N0YW5kYXJkX3Byb3BlcnRpZXMo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlyZXR1cm4gLUVOT01FTTsKPiAgCWRldi0+bW9k ZV9jb25maWcuZ2FtbWFfbHV0X3NpemVfcHJvcGVydHkgPSBwcm9wOwo+ICAKPiArCXByb3AgPSBk cm1fcHJvcGVydHlfY3JlYXRlKGRldiwKPiArCQkJCSAgIERSTV9NT0RFX1BST1BfSU1NVVRBQkxF IHwgRFJNX01PREVfUFJPUF9CTE9CLAo+ICsJCQkJICAgIklOX0ZPUk1BVFMiLCAwKTsKPiArCWlm ICghcHJvcCkKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCWRldi0+bW9kZV9jb25maWcubW9kaWZp ZXJzID0gcHJvcDsKPiArCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4g aW5kZXggMjg2ZTE4Mzg5MWU1Li4yZTg5ZTBlNzM0MzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9wbGFuZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5jCj4g QEAgLTYyLDYgKzYyLDExNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGRybV9udW1fcGxhbmVzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlyZXR1cm4gbnVtOwo+ICB9Cj4gIAo+ICtzdHJ1Y3Qg ZHJtX2Zvcm1hdF9tb2RpZmllcl9ibG9iIHsKPiArI2RlZmluZSBGT1JNQVRfQkxPQl9DVVJSRU5U IDEKPiArCS8qIFZlcnNpb24gb2YgdGhpcyBibG9iIGZvcm1hdCAqLwo+ICsJdTMyIHZlcnNpb247 Cj4gKwo+ICsJLyogRmxhZ3MgKi8KPiArCXUzMiBmbGFnczsKPiArCj4gKwkvKiBOdW1iZXIgb2Yg Zm91cmNjIGZvcm1hdHMgc3VwcG9ydGVkICovCj4gKwl1MzIgY291bnRfZm9ybWF0czsKPiArCj4g KwkvKiBXaGVyZSBpbiB0aGlzIGJsb2IgdGhlIGZvcm1hdHMgZXhpc3QgKGluIGJ5dGVzKSAqLwo+ ICsJdTMyIGZvcm1hdHNfb2Zmc2V0Owo+ICsKPiArCS8qIE51bWJlciBvZiBkcm1fZm9ybWF0X21v ZGlmaWVycyAqLwo+ICsJdTMyIGNvdW50X21vZGlmaWVyczsKPiArCj4gKwkvKiBXaGVyZSBpbiB0 aGlzIGJsb2IgdGhlIG1vZGlmaWVycyBleGlzdCAoaW4gYnl0ZXMpICovCj4gKwl1MzIgbW9kaWZp ZXJzX29mZnNldDsKPiArCj4gKwkvKiB1MzIgZm9ybWF0c1tdICovCj4gKwkvKiBzdHJ1Y3QgZHJt X2Zvcm1hdF9tb2RpZmllciBtb2RpZmllcnNbXSAqLwo+ICt9IF9fcGFja2VkOwo+ICsKPiArc3Rh dGljIGlubGluZSB1MzIgKgo+ICtmb3JtYXRzX3B0cihzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2RpZmll cl9ibG9iICpibG9iKQo+ICt7Cj4gKwlyZXR1cm4gKHUzMiAqKSgoKGNoYXIgKilibG9iKSArIGJs b2ItPmZvcm1hdHNfb2Zmc2V0KTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJt X2Zvcm1hdF9tb2RpZmllciAqCj4gK21vZGlmaWVyc19wdHIoc3RydWN0IGRybV9mb3JtYXRfbW9k aWZpZXJfYmxvYiAqYmxvYikKPiArewo+ICsJcmV0dXJuIChzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2Rp ZmllciAqKSgoKGNoYXIgKilibG9iKSArIGJsb2ItPm1vZGlmaWVyc19vZmZzZXQpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IGNyZWF0ZV9pbl9mb3JtYXRfYmxvYihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiArCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX3Bs YW5lX2Z1bmNzICpmdW5jcywKPiArCQkJCSBjb25zdCB1aW50MzJfdCAqZm9ybWF0cywgdW5zaWdu ZWQgaW50IGZvcm1hdF9jb3VudCwKPiArCQkJCSBjb25zdCB1aW50NjRfdCAqZm9ybWF0X21vZGlm aWVycykKCldoeSBkbyB5b3UgaGF2ZSB0byBwYXNzIHRoZSBmb3JtYXRfbW9kaWZpZXJzIGFnYWlu IHdoZW4geW91IGhhdmUgcGxhbmUtPm1vZGlmaWVycz8KT3IgdGhlIHJldmVyc2UgcXVlc3Rpb246 IHdoeSBkbyB5b3UgbmVlZCBwbGFuZS0+bW9kaWZpZXJzIHdoZW4geW91IGFyZSBwYXNzaW5nIHRo ZQptb2RpZmllcnMgYXMgcGFyYW1ldGVycyBhbGwgdGhlIHRpbWU/Cgo+ICt7Cj4gKwljb25zdCBz dHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPSAmZGV2LT5tb2RlX2NvbmZpZzsKPiArCWNv bnN0IHVpbnQ2NF90ICp0ZW1wX21vZGlmaWVycyA9IGZvcm1hdF9tb2RpZmllcnM7Cj4gKwl1bnNp Z25lZCBpbnQgZm9ybWF0X21vZGlmaWVyX2NvdW50ID0gMDsKPiArCXN0cnVjdCBkcm1fcHJvcGVy dHlfYmxvYiAqYmxvYiA9IE5VTEw7Cj4gKwlzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2RpZmllciAqbW9k Owo+ICsJc2l6ZV90IGJsb2Jfc2l6ZSA9IDAsIGZvcm1hdHNfc2l6ZSwgbW9kaWZpZXJzX3NpemU7 Cj4gKwlzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2RpZmllcl9ibG9iICpibG9iX2RhdGE7Cj4gKwlpbnQg aSwgaiwgcmV0ID0gMDsKPiArCj4gKwlpZiAoZm9ybWF0X21vZGlmaWVycykKPiArCQl3aGlsZSAo KnRlbXBfbW9kaWZpZXJzKysgIT0gRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRCkKPiArCQkJZm9ybWF0 X21vZGlmaWVyX2NvdW50Kys7Cj4gKwo+ICsJZm9ybWF0c19zaXplID0gc2l6ZW9mKF9fdTMyKSAq IGZvcm1hdF9jb3VudDsKPiArCWlmIChXQVJOX09OKCFmb3JtYXRzX3NpemUpKSB7Cj4gKwkJLyog MCBmb3JtYXRzIGFyZSBuZXZlciBleHBlY3RlZCAqLwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsK PiArCW1vZGlmaWVyc19zaXplID0KPiArCQlzaXplb2Yoc3RydWN0IGRybV9mb3JtYXRfbW9kaWZp ZXIpICogZm9ybWF0X21vZGlmaWVyX2NvdW50Owo+ICsKPiArCWJsb2Jfc2l6ZSA9IEFMSUdOKHNp emVvZihzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2RpZmllcl9ibG9iKSwgOCk7Cj4gKwlibG9iX3NpemUg Kz0gQUxJR04oZm9ybWF0c19zaXplLCA4KTsKPiArCWJsb2Jfc2l6ZSArPSBtb2RpZmllcnNfc2l6 ZTsKPiArCj4gKwlibG9iID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9ibG9iKGRldiwgYmxvYl9zaXpl LCBOVUxMKTsKPiArCWlmIChJU19FUlIoYmxvYikpCj4gKwkJcmV0dXJuIC0xOwo+ICsKPiArCWJs b2JfZGF0YSA9IChzdHJ1Y3QgZHJtX2Zvcm1hdF9tb2RpZmllcl9ibG9iICopYmxvYi0+ZGF0YTsK PiArCWJsb2JfZGF0YS0+dmVyc2lvbiA9IEZPUk1BVF9CTE9CX0NVUlJFTlQ7Cj4gKwlibG9iX2Rh dGEtPmNvdW50X2Zvcm1hdHMgPSBmb3JtYXRfY291bnQ7Cj4gKwlibG9iX2RhdGEtPmZvcm1hdHNf b2Zmc2V0ID0gc2l6ZW9mKHN0cnVjdCBkcm1fZm9ybWF0X21vZGlmaWVyX2Jsb2IpOwo+ICsJYmxv Yl9kYXRhLT5jb3VudF9tb2RpZmllcnMgPSBmb3JtYXRfbW9kaWZpZXJfY291bnQ7Cj4gKwo+ICsJ LyogTW9kaWZpZXJzIG9mZnNldCBpcyBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3Qgd2l0aCBhIDY0IGJp dCBmaWVsZCBzbyBpdAo+ICsJICogc2hvdWxkIGJlIG5hdHVyYWxseSBhbGlnbmVkIHRvIDhCLgo+ ICsJICovCj4gKwlibG9iX2RhdGEtPm1vZGlmaWVyc19vZmZzZXQgPQo+ICsJCUFMSUdOKGJsb2Jf ZGF0YS0+Zm9ybWF0c19vZmZzZXQgKyBmb3JtYXRzX3NpemUsIDgpOwo+ICsKPiArCW1lbWNweShm b3JtYXRzX3B0cihibG9iX2RhdGEpLCBmb3JtYXRzLCBmb3JtYXRzX3NpemUpOwo+ICsKPiArCS8q IElmIHdlIGNhbid0IGRldGVybWluZSBzdXBwb3J0LCBqdXN0IGJhaWwgKi8KPiArCWlmICghZnVu Y3MtPmZvcm1hdF9tb2Rfc3VwcG9ydGVkKQo+ICsJCWdvdG8gZG9uZTsKPiArCj4gKwltb2QgPSBt b2RpZmllcnNfcHRyKGJsb2JfZGF0YSk7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgZm9ybWF0X21vZGlm aWVyX2NvdW50OyBpKyspIHsKPiArCQlmb3IgKGogPSAwOyBqIDwgZm9ybWF0X2NvdW50OyBqKysp IHsKPiArCQkJaWYgKGZ1bmNzLT5mb3JtYXRfbW9kX3N1cHBvcnRlZChwbGFuZSwgZm9ybWF0c1tq XSwKPiArCQkJCQkJCWZvcm1hdF9tb2RpZmllcnNbaV0pKSB7Cj4gKwkJCQltb2QtPmZvcm1hdHMg fD0gMSA8PCBqOwo+ICsJCQl9Cj4gKwkJfQo+ICsKPiArCQltb2QtPm1vZGlmaWVyID0gZm9ybWF0 X21vZGlmaWVyc1tpXTsKPiArCQltb2QtPm9mZnNldCA9IDA7Cj4gKwkJbW9kLT5wYWQgPSAwOwo+ ICsJCW1vZCsrOwo+ICsJfQo+ICsKPiArZG9uZToKPiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3Bl cnR5KCZwbGFuZS0+YmFzZSwgY29uZmlnLT5tb2RpZmllcnMsCj4gKwkJCQkgICBibG9iLT5iYXNl LmlkKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICAvKioKPiAgICogZHJtX3VuaXZl cnNhbF9wbGFuZV9pbml0IC0gSW5pdGlhbGl6ZSBhIG5ldyB1bml2ZXJzYWwgcGxhbmUgb2JqZWN0 Cj4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiBAQCAtMTMwLDYgKzI0MSwxMCBAQCBpbnQgZHJtX3Vu aXZlcnNhbF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAo+ICAJCXJldHVybiAtRU5PTUVNOwo+ICAJfQo+ICAKPiArCS8qIEZpcnN0IGRy aXZlciB0byBuZWVkIG1vcmUgdGhhbiA2NCBmb3JtYXRzIG5lZWRzIHRvIGZpeCB0aGlzICovCj4g KwlpZiAoV0FSTl9PTihmb3JtYXRfY291bnQgPiA2NCkpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g KwoKQXBwbHlpbmcgdGhpcyBwYXRjaCBtYWtlcyB0aGUgYWJvdmUgY2hlY2sgYXBwZWFyIHR3aWNl IGluIGRybV91bml2ZXJzYWxfcGxhbmVfaW5pdCgpIGZ1bmN0aW9uLgoKPiAgCWlmIChuYW1lKSB7 Cj4gIAkJdmFfbGlzdCBhcDsKPiAgCj4gQEAgLTE3Nyw2ICsyOTIsMTAgQEAgaW50IGRybV91bml2 ZXJzYWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiAgCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIGNv bmZpZy0+cHJvcF9zcmNfaCwgMCk7Cj4gIAl9Cj4gIAo+ICsJaWYgKGNvbmZpZy0+YWxsb3dfZmJf bW9kaWZpZXJzKQo+ICsJCWNyZWF0ZV9pbl9mb3JtYXRfYmxvYihkZXYsIHBsYW5lLCBmdW5jcywg Zm9ybWF0cywgZm9ybWF0X2NvdW50LAo+ICsJCQkJICAgICAgZm9ybWF0X21vZGlmaWVycyk7Cj4g Kwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fdW5pdmVyc2FsX3BsYW5l X2luaXQpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaCBiL2lu Y2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5oCj4gaW5kZXggNDI5ODE3MTExODliLi4wMzc3NmU2 NTk4MTEgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmgKPiArKysg Yi9pbmNsdWRlL2RybS9kcm1fbW9kZV9jb25maWcuaAo+IEBAIC03NTcsNiArNzU3LDEyIEBAIHN0 cnVjdCBkcm1fbW9kZV9jb25maWcgewo+ICAJICovCj4gIAlib29sIGFsbG93X2ZiX21vZGlmaWVy czsKPiAgCj4gKwkvKioKPiArCSAqIEBtb2RpZmllcnM6IFBsYW5lIHByb3BlcnR5IHRvIGxpc3Qg c3VwcG9ydCBtb2RpZmllci9mb3JtYXQKPiArCSAqIGNvbWJpbmF0aW9uLgoKQ29tbWVudCBzYXlz ICJQbGFuZSBwcm9wZXJ0eSIgeWV0IHRoaXMgaXMgc3RydWN0IGRybV9tb2RlX2NvbmZpZy4KCj4g KwkgKi8KPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKm1vZGlmaWVyczsKPiArCj4gIAkvKiBjdXJz b3Igc2l6ZSAqLwo+ICAJdWludDMyX3QgY3Vyc29yX3dpZHRoLCBjdXJzb3JfaGVpZ2h0Owo+ICAK PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oIGIvaW5jbHVkZS91YXBp L2RybS9kcm1fbW9kZS5oCj4gaW5kZXggOGM2N2ZjMDNkNTNkLi5kY2RkMDRjNTU3OTIgMTAwNjQ0 Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4gKysrIGIvaW5jbHVkZS91YXBp L2RybS9kcm1fbW9kZS5oCj4gQEAgLTY2NSw2ICs2NjUsMzIgQEAgc3RydWN0IGRybV9tb2RlX2F0 b21pYyB7Cj4gIAlfX3U2NCB1c2VyX2RhdGE7Cj4gIH07Cj4gIAo+ICtzdHJ1Y3QgZHJtX2Zvcm1h dF9tb2RpZmllciB7Cj4gKyAgICAgICAvKiBCaXRtYXNrIG9mIGZvcm1hdHMgaW4gZ2V0X3BsYW5l IGZvcm1hdCBsaXN0IHRoaXMgaW5mbyBhcHBsaWVzIHRvLiBUaGUKCllvdSBoYXZlIHNvbWUgdW51 c3VhbCBpbmRlbnQgb2YgdGhlIGNvbW1lbnQgaGVyZS4gQWxzbyB0aGUgZmlsZSB1c2VzIGEgZGlm ZmVyZW50CnN0eWxlIGZvciBtdWx0aS1saW5lIGNvbW1lbnRzLgoKPiArCSogb2Zmc2V0IGFsbG93 cyBhIHNsaWRpbmcgd2luZG93IG9mIHdoaWNoIDY0IGZvcm1hdHMgKGJpdHMpLgo+ICsJKgo+ICsJ KiBTb21lIGV4YW1wbGVzOgo+ICsJKiBJbiB0b2RheSdzIHdvcmxkIHdpdGggPCA2NSBmb3JtYXRz LCBhbmQgZm9ybWF0cyAwLCBhbmQgMiBhcmUKPiArCSogc3VwcG9ydGVkCj4gKwkqIDB4MDAwMDAw MDAwMDAwMDAwNQo+ICsJKgkJICBeLW9mZnNldCA9IDAsIGZvcm1hdHMgPSA1Cj4gKwkqCj4gKwkq IElmIHRoZSBudW1iZXIgZm9ybWF0cyBncmV3IHRvIDEyOCwgYW5kIGZvcm1hdHMgOTgtMTAyIGFy ZQo+ICsJKiBzdXBwb3J0ZWQgd2l0aCB0aGUgbW9kaWZpZXI6Cj4gKwkqCj4gKwkqIDB4MDAwMDAw M2MwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwCj4gKwkqCQkgIF4KPiArCSoJCSAgfF9fb2Zmc2V0 ID0gNjQsIGZvcm1hdHMgPSAweDNjMDAwMDAwMDAKPiArCSoKPiArCSovCj4gKyAgICAgICB1aW50 NjRfdCBmb3JtYXRzOwo+ICsgICAgICAgdWludDMyX3Qgb2Zmc2V0Owo+ICsgICAgICAgdWludDMy X3QgcGFkOwoKcy9wYWQvX19wYWQvIG9yIHMvcGFkL19fcmVzZXJ2ZWQvID8KCj4gKwo+ICsgICAg ICAgLyogVGhpcyBtb2RpZmllciBjYW4gYmUgdXNlZCB3aXRoIHRoZSBmb3JtYXQgZm9yIHRoaXMg cGxhbmUuICovCgpJJ20gaGF2aW5nIHRyb3VibGUgcGFyc2luZyB0aGUgY29tbWVudC4gSG93IGFi b3V0OiAiVGhlIG1vZGlmaWVyIHRoYXQgYXBwbGllcyB0byB0aGUKZ2V0X3BsYW5lIGZvcm1hdCBs aXN0IGJpdG1hc2suIiA/CgpCZXN0IHJlZ2FyZHMsCkxpdml1Cgo+ICsgICAgICAgdWludDY0X3Qg bW9kaWZpZXI7Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICAvKioKPiAgICogQ3JlYXRlIGEgbmV3ICdi bG9iJyBkYXRhIHByb3BlcnR5LCBjb3B5aW5nIGxlbmd0aCBieXRlcyBmcm9tIGRhdGEgcG9pbnRl ciwKPiAgICogYW5kIHJldHVybmluZyBuZXcgYmxvYiBJRC4KPiAtLSAKPiAyLjEyLjIKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIAo9 PT09PT09PT09PT09PT09PT09PQp8IEkgd291bGQgbGlrZSB0byB8CnwgZml4IHRoZSB3b3JsZCwg IHwKfCBidXQgdGhleSdyZSBub3QgfAp8IGdpdmluZyBtZSB0aGUgICB8CiBcIHNvdXJjZSBjb2Rl ISAgLwogIC0tLS0tLS0tLS0tLS0tLQogICAgwq9cXyjjg4QpXy/CrwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK