From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [CI 10/21] drm/i915: Mark up all locked waiters Date: Tue, 13 Sep 2016 13:59:48 +0300 Message-ID: <87mvjc6p5n.fsf@gaia.fi.intel.com> References: <20160909131201.16673-1-chris@chris-wilson.co.uk> <20160909131201.16673-10-chris@chris-wilson.co.uk> <1473707859.2435.56.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 95B6C6E025 for ; Tue, 13 Sep 2016 11:00:52 +0000 (UTC) In-Reply-To: <1473707859.2435.56.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Zanoni, Paulo R" , "intel-gfx@lists.freedesktop.org" , "chris@chris-wilson.co.uk" List-Id: intel-gfx@lists.freedesktop.org Ilphbm9uaSwgUGF1bG8gUiIgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4gd3JpdGVzOgoKPiBI aQo+Cj4gRW0gU2V4LCAyMDE2LTA5LTA5IMOgcyAxNDoxMSArMDEwMCwgQ2hyaXMgV2lsc29uIGVz Y3JldmV1Ogo+PiBJbiB0aGUgbmV4dCBwYXRjaCB3ZSB3YW50IHRvIGhhbmRsZSByZXNldCBkaXJl Y3RseSBieSBhIGxvY2tlZCB3YWl0ZXIKPj4gaW4KPj4gb3JkZXIgdG8gYXZvaWQgaXNzdWVzIHdp dGggcmV0dXJuaW5nIGJlZm9yZSB0aGUgcmVzZXQgaXMgaGFuZGxlZC4gVG8KPj4gaGFuZGxlIHRo ZSByZXNldCwgd2UgbXVzdCBmaXJzdCBrbm93IHdoZXRoZXIgd2UgaG9sZCB0aGUKPj4gc3RydWN0 X211dGV4Lgo+PiBJZiB3ZSBkbyBub3QgaG9sZCB0aGUgc3RydWN0X210dWV4IHdlIGNhbiBub3Qg cGVyZm9ybSB0aGUgcmVzZXQsIGJ1dAo+PiB3ZSBkbwo+PiBub3QgYmxvY2sgdGhlIHJlc2V0IHdv cmtlciBlaXRoZXIgKGFuZCBzbyB3ZSBjYW4ganVzdCBjb250aW51ZSB0bwo+PiB3YWl0IGZvcgo+ PiByZXF1ZXN0IGNvbXBsZXRpb24pIC0gb3RoZXJ3aXNlIHdlIG11c3QgcmVsaW5xdWlzaCB0aGUg bXV0ZXguCj4+IAo+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KPj4gUmV2aWV3ZWQtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFA aW50ZWwuY29tPgo+PiAtLS0KPj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu Y8KgwqDCoMKgwqDCoHzCoMKgNCArKystCj4+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uY8KgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqA3ICsrKysrLS0KPj4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jwqDCoMKgwqB8wqDCoDggKysrKysrLS0KPj4gwqBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuY8KgwqDCoMKgwqDCoHzCoMKgMiArLQo+PiDC oGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuY8KgwqB8IDE1ICsrKysrKysr KysrKy0tLQo+PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaMKgwqB8 IDExICsrKysrKysrLS0tCj4+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5r ZXIuYyB8wqDCoDIgKy0KPj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmPCoMKgfMKgwqAzICsrLQo+PiDCoDggZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwg MTQgZGVsZXRpb25zKC0pCj4+IAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ PiBpbmRleCA2MjBlN2RhYTEzM2IuLjY0NzAyY2M2OGUzYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gQEAgLTQ4MDMsNyArNDgwMyw5IEBAIGk5MTVfZHJvcF9jYWNo ZXNfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4+IMKgCQlyZXR1cm4gcmV0Owo+PiDCoAo+PiDC oAlpZiAodmFsICYgRFJPUF9BQ1RJVkUpIHsKPj4gLQkJcmV0ID0gaTkxNV9nZW1fd2FpdF9mb3Jf aWRsZShkZXZfcHJpdiwKPj4gSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUpOwo+PiArCQlyZXQgPSBp OTE1X2dlbV93YWl0X2Zvcl9pZGxlKGRldl9wcml2LAo+PiArCQkJCQnCoMKgwqDCoMKgSTkxNV9X QUlUX0lOVEVSUlVQVElCTEUKPj4gfAo+PiArCQkJCQnCoMKgwqDCoMKgSTkxNV9XQUlUX0xPQ0tF RCk7Cj4+IMKgCQlpZiAocmV0KQo+PiDCoAkJCWdvdG8gdW5sb2NrOwo+PiDCoAl9Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBpbmRleCA0NjE3MjUwYzMwMDAuLjIzMDY5YTJkMjg1MCAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IEBAIC0yODAyLDcgKzI4MDIsOCBAQCBf X2k5MTVfZ2VtX29iamVjdF9zeW5jKHN0cnVjdAo+PiBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8s Cj4+IMKgCj4+IMKgCWlmICghaTkxNS5zZW1hcGhvcmVzKSB7Cj4+IMKgCQlyZXQgPSBpOTE1X3dh aXRfcmVxdWVzdChmcm9tLAo+PiAtCQkJCQlmcm9tLT5pOTE1LQo+PiA+bW0uaW50ZXJydXB0aWJs ZSwKPj4gKwkJCQkJZnJvbS0+aTkxNS0+bW0uaW50ZXJydXB0aWJsZSAKPj4gfAo+PiArCQkJCQlJ OTE1X1dBSVRfTE9DS0VELAo+PiDCoAkJCQkJTlVMTCwKPj4gwqAJCQkJCU5PX1dBSVRCT09TVCk7 Cj4+IMKgCQlpZiAocmV0KQo+PiBAQCAtNDMwNCw3ICs0MzA1LDkgQEAgaW50IGk5MTVfZ2VtX3N1 c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gwqAJaWYgKHJldCkKPj4gwqAJCWdvdG8g ZXJyOwo+PiDCoAo+PiAtCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoZGV2X3ByaXYsCj4+ IEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFKTsKPj4gKwlyZXQgPSBpOTE1X2dlbV93YWl0X2Zvcl9p ZGxlKGRldl9wcml2LAo+PiArCQkJCcKgwqDCoMKgwqBJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8 Cj4+ICsJCQkJwqDCoMKgwqDCoEk5MTVfV0FJVF9MT0NLRUQpOwo+PiDCoAlpZiAocmV0KQo+PiDC oAkJZ290byBlcnI7Cj4+IMKgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ldmljdC5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3Qu Ywo+PiBpbmRleCAxMDMwODUyNDY5NzUuLjViNmY4MWMxZGJjYSAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZpY3QuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCj4+IEBAIC0xNzAsNyArMTcwLDkgQEAgc2VhcmNoX2Fn YWluOgo+PiDCoAlpZiAocmV0KQo+PiDCoAkJcmV0dXJuIHJldDsKPj4gwqAKPj4gLQlyZXQgPSBp OTE1X2dlbV93YWl0X2Zvcl9pZGxlKGRldl9wcml2LAo+PiBJOTE1X1dBSVRfSU5URVJSVVBUSUJM RSk7Cj4+ICsJcmV0ID0gaTkxNV9nZW1fd2FpdF9mb3JfaWRsZShkZXZfcHJpdiwKPj4gKwkJCQnC oMKgwqDCoMKgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAo+PiArCQkJCcKgwqDCoMKgwqBJOTE1 X1dBSVRfTE9DS0VEKTsKPj4gwqAJaWYgKHJldCkKPj4gwqAJCXJldHVybiByZXQ7Cj4+IMKgCj4+ IEBAIC0yNzUsNyArMjc3LDkgQEAgaW50IGk5MTVfZ2VtX2V2aWN0X3ZtKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UKPj4gKnZtLCBib29sIGRvX2lkbGUpCj4+IMKgCQkJCXJldHVybiByZXQ7Cj4+ IMKgCQl9Cj4+IMKgCj4+IC0JCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoZGV2X3ByaXYs Cj4+IEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFKTsKPj4gKwkJcmV0ID0gaTkxNV9nZW1fd2FpdF9m b3JfaWRsZShkZXZfcHJpdiwKPj4gKwkJCQkJwqDCoMKgwqDCoEk5MTVfV0FJVF9JTlRFUlJVUFRJ QkxFCj4+IHwKPj4gKwkJCQkJwqDCoMKgwqDCoEk5MTVfV0FJVF9MT0NLRUQpOwo+PiDCoAkJaWYg KHJldCkKPj4gwqAJCQlyZXR1cm4gcmV0Owo+PiDCoAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+PiBpbmRleCA5YmNhYzUyYjgyNjguLmYzYzY4NzZkYTUyMSAxMDA2NDQKPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPj4gQEAgLTI2ODMsNyArMjY4Myw3IEBAIHZv aWQgaTkxNV9nZW1fZ3R0X2ZpbmlzaF9vYmplY3Qoc3RydWN0Cj4+IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKPj4gwqAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsK Pj4gwqAKPj4gwqAJaWYgKHVubGlrZWx5KGdndHQtPmRvX2lkbGVfbWFwcykpIHsKPj4gLQkJaWYg KGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoZGV2X3ByaXYsIDApKSB7Cj4+ICsJCWlmIChpOTE1X2dl bV93YWl0X2Zvcl9pZGxlKGRldl9wcml2LAo+PiBJOTE1X1dBSVRfTE9DS0VEKSkgewo+PiDCoAkJ CURSTV9FUlJPUigiRmFpbGVkIHRvIHdhaXQgZm9yIGlkbGU7IFZUJ2QgbWF5Cj4+IGhhbmcuXG4i KTsKPj4gwqAJCQkvKiBXYWl0IGEgYml0LCBpbiBob3BlcyBpdCBhdm9pZHMgdGhlIGhhbmcKPj4g Ki8KPj4gwqAJCQl1ZGVsYXkoMTApOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f cmVxdWVzdC5jCj4+IGluZGV4IGY0YzE1ZjMxOWQwOC4uNWY4OTgwMWU2YTE2IDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4+IEBAIC0yNjAsNyArMjYwLDkg QEAgc3RhdGljIGludCBpOTE1X2dlbV9pbml0X3NlcW5vKHN0cnVjdAo+PiBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIHNlcW5vKQo+PiDCoAo+PiDCoAkvKiBDYXJlZnVsbHkgcmV0aXJl IGFsbCByZXF1ZXN0cyB3aXRob3V0IHdyaXRpbmcgdG8gdGhlCj4+IHJpbmdzICovCj4+IMKgCWZv cl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KSB7Cj4+IC0JCXJldCA9IGludGVsX2VuZ2lu ZV9pZGxlKGVuZ2luZSwKPj4gSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUpOwo+PiArCQlyZXQgPSBp bnRlbF9lbmdpbmVfaWRsZShlbmdpbmUsCj4+ICsJCQkJCUk5MTVfV0FJVF9JTlRFUlJVUFRJQkxF IHwKPj4gKwkJCQkJSTkxNV9XQUlUX0xPQ0tFRCk7Cj4+IMKgCQlpZiAocmV0KQo+PiDCoAkJCXJl dHVybiByZXQ7Cj4+IMKgCX0KPj4gQEAgLTYyNSw2ICs2MjcsMTAgQEAgaW50IGk5MTVfd2FpdF9y ZXF1ZXN0KHN0cnVjdAo+PiBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+PiDCoAlpbnQgcmV0 ID0gMDsKPj4gwqAKPj4gwqAJbWlnaHRfc2xlZXAoKTsKPj4gKyNpZiBJU19FTkFCTEVEKENPTkZJ R19MT0NLREVQKQo+PiArCUdFTV9CVUdfT04oISFsb2NrZGVwX2lzX2hlbGQoJnJlcS0+aTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCkKPj4gIT0KPj4gKwkJwqDCoMKgISEoZmxhZ3MgJiBJOTE1X1dBSVRf TE9DS0VEKSk7Cj4+ICsjZW5kaWYKPgo+IEknbSBoaXR0aW5nIHRoaXMgb24gbXkgU0tMLiBJdCB1 c3VhbGx5IGhhcHBlbnMgcmlnaHQgYWZ0ZXIgdGhlIGxvZ2luLAo+IHdoZW4gSSBjbGljayB0aGUg dGVybWluYWwgaWNvbiBvbiB0aGUgdG9vbGJhciBpbiBvcmRlciB0byBvcGVuIGl0IChvbgo+IENp bm5hbW9uKS4gV2hlbiBpdCBkb2Vzbid0IGhhcHBlbiBhdCB0aGF0IHRpbWUsIEkganVzdCBvcGVu IGEgYnJvd3Nlcgo+IGFuZCBicm93c2UgZm9yIGxpa2UgMzAgc2Vjb25kcyB1bnRpbCBpdCBoYXBw ZW5zLgo+Cj4gSSBkaWQgbWFudWFsIHJldmVydHMgb2YgdGhpcyBzZXJpZXMgdXAgdG8gdGhpcyBw YXRjaCBhbmQgb2J2aW91c2x5IHRoZQo+IHByb2JsZW0gZ29lcyBhd2F5IChubyBtb3JlIEdFTV9C VUdfT04gdG8gaGl0KS4gSSBkaWRuJ3QgdHJ5IHRvIGRvIGEKPiByZWFsIGJpc2VjdCB0byBjaGVj ayBpZiB0aGlzIGlzIHRoZSBmaXJzdCBiYWQgY29tbWl0IG9yIGlmIGl0J3MKPiBzb21ldGhpbmcg bGF0ZXIgb24gdGhlIHNlcmllcy4gSXQgY291bGQgZXZlbiBiZSBhbiBvbGRlciBwcm9ibGVtIHRo YXQKPiBqdXN0IGdvdCBleHBvc2VkIGJ5IHRoZSBuZXcgQlVHKCkuIEknbSBhdmFpbGFibGUgdG8g dGVzdCBwYXRjaGVzLCBqdXN0Cj4gc2VuZCB0aGVtIHRvIG1lLgoKTm8gcGF0Y2hlcyB5ZXQgYnV0 IHRoZXJlIGlzIGEgY29tbWVudCBvbiAKaW50ZWxfcHJlcGFyZV9wbGFuZV9mYigpIHRoYXQgc2F5 cyB0aGF0IGl0IG11c3QgYmUgY2FsbGVkIHdpdGggbXV0ZXgKaGVsZC4KClF1aXRlIGxpa2VseSB0 aGUgbmV3IEdFTV9CVUdfT04gY2F0Y2hlcyB0aGlzIG5vdCBiZWluZyB0cnVlLgoKLU1pa2EKCj4K PiBIZXJlJ3MgdGhlIGJhY2t0cmFjZToKPgo+IFvCoMKgwqA3MS4zNDEyNzJdIC0tLS0tLS0tLS0t LVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQo+IFvCoMKgwqA3MS4zNDEzMDVdIGtlcm5lbCBCVUcg YXQKPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmM6NzYzIQo+IFvCoMKg wqA3MS4zNDEzMzFdIGludmFsaWQgb3Bjb2RlOiAwMDAwIFsjMV0gU01QCj4gW8KgwqDCoDcxLjM0 MTM0OF0gTW9kdWxlcyBsaW5rZWQgaW46IHNuZF9oZGFfY29kZWNfaGRtaQo+IHNuZF9oZGFfY29k ZWNfcmVhbHRlayBzbmRfaGRhX2NvZGVjX2dlbmVyaWMgc25kX3NvY19za2wgc25kX3NvY19za2xf aXBjCj4gc25kX3NvY19zc3RfbWF0Y2ggc25kX2hkYV9leHRfY29yZSBzbmRfc29jX3NzdF9kc3Ag c25kX3NvY19zc3RfaXBjCj4gbmxzX3V0ZjggbmxzX2NwNDM3IHZmYXQgZmF0IGVmaV9wc3RvcmUg ZWZpdmFycyBpd2xtdm0gc2cgc25kX2hkYV9pbnRlbAo+IGk5MTUgaXdsd2lmaSBzbmRfaGRhX2Nv ZGVjIHNuZF9od2RlcCBzbmRfaGRhX2NvcmUgZHJtX2ttc19oZWxwZXIgaWRtYTY0Cj4gdmlydF9k bWEgc3lzY29weWFyZWEgc3lzZmlsbHJlY3Qgc3lzaW1nYmx0IGZiX3N5c19mb3BzIGRybQo+IGlu dGVsX2xwc3NfcGNpIGludGVsX3BjaF90aGVybWFsIHdtaSBpbnRlbF9scHNzX2FjcGkgaW50ZWxf bHBzcwo+IGludGVsX2hpZCBhY3BpX3BhZCBzcGFyc2Vfa2V5bWFwIHNkaGNpX3BjaSBwaW5jdHJs X3N1bnJpc2Vwb2ludAo+IHBpbmN0cmxfaW50ZWwKPiBbwqDCoMKgNzEuMzQxNjA4XSBDUFU6IDMg UElEOiAzMDI1IENvbW06IFhvcmcgVGFpbnRlZDoKPiBHwqDCoMKgwqDCoFXCoMKgwqDCoMKgwqDC oMKgwqDCoDQuOC4wLXJjNXB6KyAjNTIKPiBbwqDCoMKgNzEuMzQxNjM3XSBIYXJkd2FyZSBuYW1l OiBJbnRlbCBDb3Jwb3JhdGlvbiBTa3lsYWtlIENsaWVudAo+IHBsYXRmb3JtL1NreWxha2UgWSBM UEREUjMgUlZQMywgQklPUyBTS0xTRTJSMS44NkMuQjA3NC5SMDAuMTUwMjI0MDYwNwo+IDAyLzI0 LzIwMTUKPiBbwqDCoMKgNzEuMzQxNjg0XSB0YXNrOiBmZmZmODgwMTY1MDA2MTQwIHRhc2suc3Rh Y2s6IGZmZmY4ODAxNjQzOTQwMDAKPiBbwqDCoMKgNzEuMzQxNzA4XSBSSVA6IDAwMTA6WzxmZmZm ZmZmZmEwMWQwMzc3Pl3CoMKgWzxmZmZmZmZmZmEwMWQwMzc3Pl0KPiBpOTE1X3dhaXRfcmVxdWVz dCsweDQxNy8weDhlMCBbaTkxNV0KPiBbwqDCoMKgNzEuMzQxNzc1XSBSU1A6IDAwMTg6ZmZmZjg4 MDE2NDM5NzkyOMKgwqBFRkxBR1M6IDAwMDEwMjAyCj4gW8KgwqDCoDcxLjM0MTc5NV0gUkFYOiAw MDAwMDAwMDAwMDAwMDAwIFJCWDogMDAwMDAwMDAwMDAwMDAwMCBSQ1g6Cj4gZmZmZmZmZmZmZmZm ZmZmZgo+IFvCoMKgwqA3MS4zNDE4MjFdIFJEWDogMDAwMDAwMDAwMDAwMDQwMSBSU0k6IGZmZmY4 ODAxNjU4OTAwZDAgUkRJOgo+IGZmZmY4ODAxNjUwMDY4ZDgKPiBbwqDCoMKgNzEuMzQxODQ5XSBS QlA6IGZmZmY4ODAxNjQzOTc5ZDggUjA4OiAwMDAwMDAwMDAwMDAwMDAzIFIwOToKPiAwMDAwMDAw MDAwMDAwMDAwCj4gW8KgwqDCoDcxLjM0MTg3NV0gUjEwOiAwMDAwMDAwMDAwMDAwMDAxIFIxMTog MDAwMDAwMDAwMDAwMDAwMCBSMTI6Cj4gMDAwMDAwMDAwMDAwMDAwMQo+IFvCoMKgwqA3MS4zNDE5 MTNdIFIxMzogMDAwMDAwMDAwMDAwMDAwMCBSMTQ6IDAwMDAwMDAwMDAwMDAwMDEgUjE1Ogo+IGZm ZmY4ODAxNTliMTI1YzAKPiBbwqDCoMKgNzEuMzQxOTQwXSBGUzrCoMKgMDAwMDdmYTQ5MjJlY2E0 MCgwMDAwKSBHUzpmZmZmODgwMTZkNGMwMDAwKDAwMDApCj4ga25sR1M6MDAwMDAwMDAwMDAwMDAw MAo+IFvCoMKgwqA3MS4zNDE5NzBdIENTOsKgwqAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDog MDAwMDAwMDA4MDA1MDAzMwo+IFvCoMKgwqA3MS4zNDE5OTJdIENSMjogMDAwMDU2MGI5OWEwNzAw MCBDUjM6IDAwMDAwMDAxNjQxZWIwMDAgQ1I0Ogo+IDAwMDAwMDAwMDAzNDA2ZTAKPiBbwqDCoMKg NzEuMzQyMDE5XSBEUjA6IDAwMDAwMDAwMDAwMDAwMDAgRFIxOiAwMDAwMDAwMDAwMDAwMDAwIERS MjoKPiAwMDAwMDAwMDAwMDAwMDAwCj4gW8KgwqDCoDcxLjM0MjA0Nl0gRFIzOiAwMDAwMDAwMDAw MDAwMDAwIERSNjogMDAwMDAwMDBmZmZlMGZmMCBEUjc6Cj4gMDAwMDAwMDAwMDAwMDQwMAo+IFvC oMKgwqA3MS4zNDIwNzNdIFN0YWNrOgo+IFvCoMKgwqA3MS4zNDIwODNdwqDCoDAwMDAwMDAwMDAw MDAwNDYgMDAwMDAwMDAwMDAwMDAwNCBmZmZmODgwMTAwMDAwMDIwCj4gZmZmZmZmZmY4MjdiNDBl MAo+IFvCoMKgwqA3MS4zNDIxMjJdwqDCoGZmZmZmZmZmZmZmZmZmZmYgZmZmZjg4MDE2NTAwNjg4 OCAwMDAwMDAwMDAwMDAwMDAxCj4gMDAwMDAwMDAwMDAwMDAwMAo+IFvCoMKgwqA3MS4zNDIxNTZd wqDCoGZmZmY4ODAxNjUwMDYxNDAgZmZmZmZmZmY4MTBkNTU2MCBmZmZmODgwMTY0Mzk3OTc4Cj4g ZmZmZjg4MDE2NDM5Nzk3OAo+IFvCoMKgwqA3MS4zNDIxOTBdIENhbGwgVHJhY2U6Cj4gW8KgwqDC oDcxLjM0MjIwNV3CoMKgWzxmZmZmZmZmZjgxMGQ1NTYwPl0gPyBwcmVwYXJlX3RvX3dhaXRfZXZl bnQrMHhmMC8weGYwCj4gW8KgwqDCoDcxLjM0MjI2N13CoMKgWzxmZmZmZmZmZmEwMWQwODk4Pl0g aTkxNV9mZW5jZV93YWl0KzB4NTgvMHhiMCBbaTkxNV0KPiBbwqDCoMKgNzEuMzQyMjk0XcKgwqBb PGZmZmZmZmZmODE1NWU2Y2Y+XSBmZW5jZV93YWl0X3RpbWVvdXQrMHg4Zi8weDJhMAo+IFvCoMKg wqA3MS4zNDIzMTddwqDCoFs8ZmZmZmZmZmY4MTU2MDFjYz5dCj4gcmVzZXJ2YXRpb25fb2JqZWN0 X3dhaXRfdGltZW91dF9yY3UrMHgxYmMvMHg1NzAKPiBbwqDCoMKgNzEuMzQyMzQ2XcKgwqBbPGZm ZmZmZmZmODE1NjAwYWY+XSA/Cj4gcmVzZXJ2YXRpb25fb2JqZWN0X3dhaXRfdGltZW91dF9yY3Ur MHg5Zi8weDU3MAo+IFvCoMKgwqA3MS4zNDIzOTldwqDCoFs8ZmZmZmZmZmZhMDIxOGZjYT5dIGlu dGVsX3ByZXBhcmVfcGxhbmVfZmIrMHhjYS8weDJmMAo+IFtpOTE1XQo+IFvCoMKgwqA3MS4zNDI0 MjZdwqDCoFs8ZmZmZmZmZmY4MTEyMTI0Nz5dID8gX19tb2R1bGVfYWRkcmVzcysweDI3LzB4ZjAK PiBbwqDCoMKgNzEuMzQyNDU1XcKgwqBbPGZmZmZmZmZmYTAwZTM1MjE+XQo+IGRybV9hdG9taWNf aGVscGVyX3ByZXBhcmVfcGxhbmVzKzB4NjEvMHhmMCBbZHJtX2ttc19oZWxwZXJdCj4gW8KgwqDC oDcxLjM0MjUxMF3CoMKgWzxmZmZmZmZmZmEwMjExNWFlPl0gaW50ZWxfYXRvbWljX2NvbW1pdCsw eDI1ZS8weDRlMAo+IFtpOTE1XQo+IFvCoMKgwqA3MS4zNDI1NDldwqDCoFs8ZmZmZmZmZmZhMDA5 MjlkMj5dIGRybV9hdG9taWNfY29tbWl0KzB4NTIvMHg2MCBbZHJtXQo+IFvCoMKgwqA3MS4zNDI1 OTJdwqDCoFs8ZmZmZmZmZmZhMDBlNDQ4Nz5dCj4gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3Bs YW5lKzB4ZTcvMHgxMzAgW2RybV9rbXNfaGVscGVyXQo+IFvCoMKgwqA3MS4zNDI2MzNdwqDCoFs8 ZmZmZmZmZmZhMDA4NGUxOT5dIF9fc2V0cGxhbmVfaW50ZXJuYWwrMHgxYjkvMHgyYTAKPiBbZHJt XQo+IFvCoMKgwqA3MS4zNDI2NjddwqDCoFs8ZmZmZmZmZmZhMDA4NTAxNz5dCj4gZHJtX21vZGVf Y3Vyc29yX3VuaXZlcnNhbCsweDExNy8weDIwMCBbZHJtXQo+IFvCoMKgwqA3MS4zNDI3MDNdwqDC oFs8ZmZmZmZmZmZhMDA4NTE4ND5dIGRybV9tb2RlX2N1cnNvcl9jb21tb24rMHg4NC8weDE4MAo+ IFtkcm1dCj4gW8KgwqDCoDcxLjM0MjczOF3CoMKgWzxmZmZmZmZmZmEwMDg2YTk5Pl0gZHJtX21v ZGVfY3Vyc29yMl9pb2N0bCsweDkvMHgxMAo+IFtkcm1dCj4gW8KgwqDCoDcxLjM0Mjc5M13CoMKg WzxmZmZmZmZmZmEwMDdiZTQ5Pl0gZHJtX2lvY3RsKzB4Mzg5LzB4NGUwIFtkcm1dCj4gW8KgwqDC oDcxLjM0MjgyM13CoMKgWzxmZmZmZmZmZmEwMDg2YTkwPl0gPyBkcm1fbW9kZV9jdXJzb3JfaW9j dGwrMHg0MC8weDQwCj4gW2RybV0KPiBbwqDCoMKgNzEuMzQyODUwXcKgwqBbPGZmZmZmZmZmODEy NGVhNDk+XSA/IG1udHB1dF9ub19leHBpcmUrMHg4OS8weDNjMAo+IFvCoMKgwqA3MS4zNDI4NzNd wqDCoFs8ZmZmZmZmZmY4MTI0ZTljMD5dID8gbW50X2dldF9jb3VudCsweDYwLzB4NjAKPiBbwqDC oMKgNzEuMzQyODk2XcKgwqBbPGZmZmZmZmZmODEyM2U4MWY+XSBkb192ZnNfaW9jdGwrMHg4Zi8w eDY5MAo+IFvCoMKgwqA3MS4zNDI5MjZdwqDCoFs8ZmZmZmZmZmY4MTBhZDc4ND5dID8gdGFza193 b3JrX3J1bisweDk0LzB4YjAKPiBbwqDCoMKgNzEuMzQyOTQ4XcKgwqBbPGZmZmZmZmZmODEwZGYy NGQ+XSA/Cj4gdHJhY2VfaGFyZGlycXNfb25fY2FsbGVyKzB4ZWQvMHgxYjAKPiBbwqDCoMKgNzEu MzQyOTc0XcKgwqBbPGZmZmZmZmZmODEyM2VlOTQ+XSBTeVNfaW9jdGwrMHg3NC8weDgwCj4gW8Kg wqDCoDcxLjM0Mjk5NV3CoMKgWzxmZmZmZmZmZjgxOTNmOGU1Pl0KPiBlbnRyeV9TWVNDQUxMXzY0 X2Zhc3RwYXRoKzB4MTgvMHhhOAo+IFvCoMKgwqA3MS4zNDMwMTldIENvZGU6IGYwIGUwIDQ4IDg1 IGRiIDc0IDE4IDQ4IDhiIDAzIDQ4IDhiIDdiIDA4IDQ4IDgzIGMzCj4gMTggNGMgODkgZmUgZmYg ZDAgNDggOGIgMDMgNDggODUgYzAgNzUgZWIgNjUgZmYgMGQgNWUgYzEgZTMgNWYgZTkgM2EgZmUK PiBmZiBmZiA8MGY+IDBiIDY1IDQ4IDhiIDA0IDI1IDQwIGM1IDAwIDAwIDQ4IGM3IDgwIGE4IDEx IDAwIDAwIDc5IDAzIDFkwqAKPiBbwqDCoMKgNzEuMzQzMTk1XSBSSVDCoMKgWzxmZmZmZmZmZmEw MWQwMzc3Pl0gaTkxNV93YWl0X3JlcXVlc3QrMHg0MTcvMHg4ZTAKPiBbaTkxNV0KPiBbwqDCoMKg NzEuMzQzMjQ2XcKgwqBSU1AgPGZmZmY4ODAxNjQzOTc5Mjg+Cj4gW8KgwqDCoDcxLjM2Njc4Nl0g LS0tWyBlbmQgdHJhY2UgNzE1ZGJhZTcxN2QyMTg3ZiBdLS0tCj4KPiBSZW1lbWJlciB0aGF0IHRo aXMgbWFrZXMgdGhlIGRlc2t0b3AgMTAwJSB1bnVzYWJsZS4KPgo+IFRoYW5rcywKPiBQYXVsbwo+ Cj4+IMKgCj4+IMKgCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKQo+PiDCoAkJ cmV0dXJuIDA7Cj4+IEBAIC02NjcsNyArNjczLDggQEAgaW50IGk5MTVfd2FpdF9yZXF1ZXN0KHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdAo+PiAqcmVxLAo+PiDCoAkJZ290byBjb21wbGV0ZTsK Pj4gwqAKPj4gwqAJc2V0X2N1cnJlbnRfc3RhdGUoc3RhdGUpOwo+PiAtCWFkZF93YWl0X3F1ZXVl KCZyZXEtPmk5MTUtPmdwdV9lcnJvci53YWl0X3F1ZXVlLCAmcmVzZXQpOwo+PiArCWlmIChmbGFn cyAmIEk5MTVfV0FJVF9MT0NLRUQpCj4+ICsJCWFkZF93YWl0X3F1ZXVlKCZyZXEtPmk5MTUtPmdw dV9lcnJvci53YWl0X3F1ZXVlLAo+PiAmcmVzZXQpOwo+PiDCoAo+PiDCoAlpbnRlbF93YWl0X2lu aXQoJndhaXQsIHJlcS0+ZmVuY2Uuc2Vxbm8pOwo+PiDCoAlpZiAoaW50ZWxfZW5naW5lX2FkZF93 YWl0KHJlcS0+ZW5naW5lLCAmd2FpdCkpCj4+IEBAIC03MDcsMTAgKzcxNCwxMiBAQCB3YWtldXA6 Cj4+IMKgCQlpZiAoaTkxNV9zcGluX3JlcXVlc3QocmVxLCBzdGF0ZSwgMikpCj4+IMKgCQkJYnJl YWs7Cj4+IMKgCX0KPj4gLQlyZW1vdmVfd2FpdF9xdWV1ZSgmcmVxLT5pOTE1LT5ncHVfZXJyb3Iu d2FpdF9xdWV1ZSwgJnJlc2V0KTsKPj4gwqAKPj4gwqAJaW50ZWxfZW5naW5lX3JlbW92ZV93YWl0 KHJlcS0+ZW5naW5lLCAmd2FpdCk7Cj4+ICsJaWYgKGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCkK Pj4gKwkJcmVtb3ZlX3dhaXRfcXVldWUoJnJlcS0+aTkxNS0+Z3B1X2Vycm9yLndhaXRfcXVldWUs Cj4+ICZyZXNldCk7Cj4+IMKgCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKPj4g Kwo+PiDCoGNvbXBsZXRlOgo+PiDCoAl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X3dhaXRfZW5kKHJl cSk7Cj4+IMKgCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPj4g aW5kZXggNDc5ODk2ZWY3OTFlLi5kZWYzNTcyMWU5ZWQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPj4gQEAgLTIyMiw3ICsyMjIsOCBAQCBpbnQgaTkxNV93 YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0Cj4+ICpyZXEsCj4+IMKgCQnC oMKgwqDCoMKgwqBzNjQgKnRpbWVvdXQsCj4+IMKgCQnCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxf cnBzX2NsaWVudCAqcnBzKQo+PiDCoAlfX2F0dHJpYnV0ZV9fKChub25udWxsKDEpKSk7Cj4+IC0j ZGVmaW5lIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIEJJVCgwKQo+PiArI2RlZmluZSBJOTE1X1dB SVRfSU5URVJSVVBUSUJMRQlCSVQoMCkKPj4gKyNkZWZpbmUgSTkxNV9XQUlUX0xPQ0tFRAlCSVQo MSkgLyogc3RydWN0X211dGV4IGhlbGQsIGhhbmRsZQo+PiBHUFUgcmVzZXQgKi8KPj4gwqAKPj4g wqBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MKPj4gKmVuZ2luZSk7Cj4+IMKgCj4+IEBAIC01NzYsNyArNTc3LDkgQEAgaTkxNV9n ZW1fYWN0aXZlX3dhaXQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZQo+PiAqYWN0aXZlLCBz dHJ1Y3QgbXV0ZXggKm11dGV4KQo+PiDCoAlpZiAoIXJlcXVlc3QpCj4+IMKgCQlyZXR1cm4gMDsK Pj4gwqAKPj4gLQlyZXR1cm4gaTkxNV93YWl0X3JlcXVlc3QocmVxdWVzdCwgSTkxNV9XQUlUX0lO VEVSUlVQVElCTEUsCj4+IE5VTEwsIE5VTEwpOwo+PiArCXJldHVybiBpOTE1X3dhaXRfcmVxdWVz dChyZXF1ZXN0LAo+PiArCQkJCcKgSTkxNV9XQUlUX0lOVEVSUlVQVElCTEUgfAo+PiBJOTE1X1dB SVRfTE9DS0VELAo+PiArCQkJCcKgTlVMTCwgTlVMTCk7Cj4+IMKgfQo+PiDCoAo+PiDCoC8qKgo+ PiBAQCAtNjM5LDcgKzY0Miw5IEBAIGk5MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoc3RydWN0IGk5MTVf Z2VtX2FjdGl2ZQo+PiAqYWN0aXZlLAo+PiDCoAlpZiAoIXJlcXVlc3QpCj4+IMKgCQlyZXR1cm4g MDsKPj4gwqAKPj4gLQlyZXQgPSBpOTE1X3dhaXRfcmVxdWVzdChyZXF1ZXN0LCBJOTE1X1dBSVRf SU5URVJSVVBUSUJMRSwKPj4gTlVMTCwgTlVMTCk7Cj4+ICsJcmV0ID0gaTkxNV93YWl0X3JlcXVl c3QocmVxdWVzdCwKPj4gKwkJCQlJOTE1X1dBSVRfSU5URVJSVVBUSUJMRSB8Cj4+IEk5MTVfV0FJ VF9MT0NLRUQsCj4+ICsJCQkJTlVMTCwgTlVMTCk7Cj4+IMKgCWlmIChyZXQpCj4+IMKgCQlyZXR1 cm4gcmV0Owo+PiDCoAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fc2hyaW5rZXIuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2Vy LmMKPj4gaW5kZXggMzVhMDVmNGM1MWMxLi4xYzIzN2QwMmYzMGIgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYwo+PiBAQCAtNDE0LDcgKzQxNCw3IEBAIGk5 MTVfZ2VtX3Nocmlua2VyX3ZtYXAoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwKPj4gdW5zaWdu ZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyCj4+IMKgCQlyZXR1cm4gTk9USUZZX0RPTkU7Cj4+IMKg Cj4+IMKgCS8qIEZvcmNlIGV2ZXJ5dGhpbmcgb250byB0aGUgaW5hY3RpdmUgbGlzdHMgKi8KPj4g LQlyZXQgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGRldl9wcml2LCAwKTsKPj4gKwlyZXQgPSBp OTE1X2dlbV93YWl0X2Zvcl9pZGxlKGRldl9wcml2LCBJOTE1X1dBSVRfTE9DS0VEKTsKPj4gwqAJ aWYgKHJldCkKPj4gwqAJCWdvdG8gb3V0Owo+PiDCoAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCj4+IGluZGV4IGE1YmYxODg3NzA2OC4uODY4N2E4NGE3ZmYzIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4+IEBAIC0yMjIz LDcgKzIyMjMsOCBAQCBzdGF0aWMgaW50IHdhaXRfZm9yX3NwYWNlKHN0cnVjdAo+PiBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgYnl0ZXMpCj4+IMKgCWlmIChXQVJOX09OKCZ0YXJnZXQt PnJpbmdfbGluayA9PSAmcmluZy0+cmVxdWVzdF9saXN0KSkKPj4gwqAJCXJldHVybiAtRU5PU1BD Owo+PiDCoAo+PiAtCXJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KHRhcmdldCwgSTkxNV9XQUlUX0lO VEVSUlVQVElCTEUsCj4+ICsJcmV0ID0gaTkxNV93YWl0X3JlcXVlc3QodGFyZ2V0LAo+PiArCQkJ CUk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFIHwKPj4gSTkxNV9XQUlUX0xPQ0tFRCwKPj4gwqAJCQkJ TlVMTCwgTk9fV0FJVEJPT1NUKTsKPj4gwqAJaWYgKHJldCkKPj4gwqAJCXJldHVybiByZXQ7Cj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1n ZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=