From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 19/38] drm/i915: Allow contexts to share a single timeline across all engines Date: Tue, 5 Mar 2019 15:54:25 +0000 Message-ID: References: <20190301140404.26690-1-chris@chris-wilson.co.uk> <20190301140404.26690-19-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 53C5589E3B for ; Tue, 5 Mar 2019 15:54:28 +0000 (UTC) In-Reply-To: <20190301140404.26690-19-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAxLzAzLzIwMTkgMTQ6MDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBQcmV2aW91c2x5LCBv dXIgdmlldyBoYXMgYmVlbiBhbHdheXMgdG8gcnVuIHRoZSBlbmdpbmVzIGluZGVwZW5kZW50bHkK PiB3aXRoaW4gYSBjb250ZXh0LiAoTXVsdGlwbGUgZW5naW5lcyBoYXBwZW5lZCBiZWZvcmUgd2Ug aGFkIGNvbnRleHRzIGFuZAo+IHRpbWVsaW5lcywgc28gdGhleSBhbHdheXMgb3BlcmF0ZWQgaW5k ZXBlbmRlbnRseSBhbmQgdGhhdCBiZWhhdmlvdXIKPiBwZXJzaXN0ZWQgaW50byBjb250ZXh0cy4p IEhvd2V2ZXIsIGF0IHRoZSB1c2VyIGxldmVsIHRoZSBjb250ZXh0IG9mdGVuCj4gcmVwcmVzZW50 cyBhIHNpbmdsZSB0aW1lbGluZSAoZS5nLiBHTCBjb250ZXh0cykgYW5kIHVzZXJzcGFjZSBtdXN0 Cj4gZW5zdXJlIHRoYXQgdGhlIGluZGl2aWR1YWwgZW5naW5lcyBhcmUgc2VyaWFsaXNlZCB0byBw cmVzZW50IHRoYXQKPiBvcmRlcmluZyB0byB0aGUgY2xpZW50IChvciBmb3Jnb3QgYWJvdXQgdGhp cyBkZXRhaWwgZW50aXJlbHkgYW5kIGhvcGUgbm8KPiBvbmUgbm90aWNlcyAtIGEgZmFpciBwbG95 IGlmIHRoZSBjbGllbnQgY2FuIG9ubHkgZGlyZWN0bHkgY29udHJvbCBvbmUKPiBlbmdpbmUgdGhl bXNlbHZlcyA7KQo+IAo+IEluIHRoZSBuZXh0IHBhdGNoLCB3ZSB3aWxsIHdhbnQgdG8gY29uc3Ry dWN0IGEgc2V0IG9mIGVuZ2luZXMgdGhhdAo+IG9wZXJhdGUgYXMgb25lLCB0aGF0IGhhdmUgYSBz aW5nbGUgdGltZWxpbmUgaW50ZXJ3b3ZlbiBiZXR3ZWVuIHRoZW0sIHRvCj4gcHJlc2VudCBhIHNp bmdsZSB2aXJ0dWFsIGVuZ2luZSB0byB0aGUgdXNlci4gKFRoZXkgc3VibWl0IHRvIHRoZSB2aXJ0 dWFsCj4gZW5naW5lLCB0aGVuIHdlIGRlY2lkZSB3aGljaCBlbmdpbmUgdG8gZXhlY3V0ZSBvbiBi YXNlZC4pCj4gCj4gVG8gdGhhdCBlbmQsIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBjcmVhdGUgY29u dGV4dHMgd2hpY2ggaGF2ZSBhIHNpbmdsZQo+IHRpbWVsaW5lIChmZW5jZSBjb250ZXh0KSBzaGFy ZWQgYmV0d2VlbiBhbGwgZW5naW5lcywgcmF0aGVyIHRoYW4gbXVsdGlwbGUKPiB0aW1lbGluZXMu Cj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAg ICAgfCAzMiArKysrKysrKysrKystLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuaCAgICAgICB8ICAzICsrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl cXVlc3QuYyAgICAgICAgICAgfCAxMCArKysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmggICAgICAgICAgIHwgIDUgKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3N3X2ZlbmNlLmMgICAgICAgICAgfCAzOSArKysrKysrKysrKysrKysrLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmggICAgICAgICAgfCAxMyArKysrKystCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICAgfCAgNSArKy0K PiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8IDE5ICsr KysrLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5j IHwgIDIgKy0KPiAgIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICAg ICB8ICAzICstCj4gICAxMCBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwgMjcgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGlu ZGV4IGY4ODNkOTk2NTNhMy4uZDhlMjIyODYzNmJhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0yMzksNiArMjM5LDkgQEAgc3RhdGljIHZvaWQgaTkx NV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAJCQlj ZS0+b3BzLT5kZXN0cm95KGNlKTsKPiAgIAl9Cj4gICAKPiArCWlmIChjdHgtPnRpbWVsaW5lKQo+ ICsJCWk5MTVfdGltZWxpbmVfcHV0KGN0eC0+dGltZWxpbmUpOwo+ICsKPiAgIAlrZnJlZShjdHgt Pm5hbWUpOwo+ICAgCXB1dF9waWQoY3R4LT5waWQpOwo+ICAgCj4gQEAgLTQ3OCwxMiArNDgxLDE3 IEBAIHN0YXRpYyB2b2lkIF9fYXNzaWduX3BwZ3R0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gICBpOTE1X2dl bV9jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJ CXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdikKPiArCQkJc3RydWN0IGRy bV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2LAo+ICsJCQl1bnNpZ25lZCBpbnQgZmxhZ3Mp Cj4gICB7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgIAo+ICAgCWxvY2tk ZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ICsJaWYg KGZsYWdzICYgSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19TSU5HTEVfVElNRUxJTkUgJiYKPiAr CSAgICAhSEFTX0VYRUNMSVNUUyhkZXZfcHJpdikpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZB TCk7Cj4gKwo+ICAgCS8qIFJlYXAgdGhlIG1vc3Qgc3RhbGUgY29udGV4dCAqLwo+ICAgCWNvbnRl eHRzX2ZyZWVfZmlyc3QoZGV2X3ByaXYpOwo+ICAgCj4gQEAgLTUwNiw2ICs1MTQsMTggQEAgaTkx NV9nZW1fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAgCQlpOTE1X3BwZ3R0X3B1dChwcGd0dCk7Cj4gICAJfQo+ICAgCj4gKwlpZiAoZmxhZ3MgJiBJ OTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1NJTkdMRV9USU1FTElORSkgewo+ICsJCXN0cnVjdCBp OTE1X3RpbWVsaW5lICp0aW1lbGluZTsKPiArCj4gKwkJdGltZWxpbmUgPSBpOTE1X3RpbWVsaW5l X2NyZWF0ZShkZXZfcHJpdiwgY3R4LT5uYW1lLCBOVUxMKTsKPiArCQlpZiAoSVNfRVJSKHRpbWVs aW5lKSkgewo+ICsJCQlfX2Rlc3Ryb3lfaHdfY29udGV4dChjdHgsIGZpbGVfcHJpdik7Cj4gKwkJ CXJldHVybiBFUlJfQ0FTVCh0aW1lbGluZSk7Cj4gKwkJfQo+ICsKPiArCQljdHgtPnRpbWVsaW5l ID0gdGltZWxpbmU7Cj4gKwl9Cj4gKwo+ICAgCXRyYWNlX2k5MTVfY29udGV4dF9jcmVhdGUoY3R4 KTsKPiAgIAo+ICAgCXJldHVybiBjdHg7Cj4gQEAgLTUzNCw3ICs1NTQsNyBAQCBpOTE1X2dlbV9j b250ZXh0X2NyZWF0ZV9ndnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlpZiAocmV0KQo+ ICAgCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgCj4gLQljdHggPSBpOTE1X2dlbV9jcmVhdGVf Y29udGV4dCh0b19pOTE1KGRldiksIE5VTEwpOwo+ICsJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2Nv bnRleHQodG9faTkxNShkZXYpLCBOVUxMLCAwKTsKPiAgIAlpZiAoSVNfRVJSKGN0eCkpCj4gICAJ CWdvdG8gb3V0Owo+ICAgCj4gQEAgLTU3MCw3ICs1OTAsNyBAQCBpOTE1X2dlbV9jb250ZXh0X2Ny ZWF0ZV9rZXJuZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCBwcmlvKQo+ICAg CXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJaW50IGVycjsKPiAgIAo+IC0JY3R4 ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgTlVMTCk7Cj4gKwljdHggPSBpOTE1X2dl bV9jcmVhdGVfY29udGV4dChpOTE1LCBOVUxMLCAwKTsKPiAgIAlpZiAoSVNfRVJSKGN0eCkpCj4g ICAJCXJldHVybiBjdHg7Cj4gICAKPiBAQCAtNzAyLDcgKzcyMiw3IEBAIGludCBpOTE1X2dlbV9j b250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJaWRyX2luaXRf YmFzZSgmZmlsZV9wcml2LT52bV9pZHIsIDEpOwo+ICAgCj4gICAJbXV0ZXhfbG9jaygmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1 LCBmaWxlX3ByaXYpOwo+ICsJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmls ZV9wcml2LCAwKTsKPiAgIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ ICAgCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQlpZHJfZGVzdHJveSgmZmlsZV9wcml2LT5jb250 ZXh0X2lkcik7Cj4gQEAgLTgxOCw3ICs4MzgsNyBAQCBsYXN0X3JlcXVlc3Rfb25fZW5naW5lKHN0 cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwKPiAgIAo+ICAgCXJxID0gaTkxNV9hY3RpdmVf cmVxdWVzdF9yYXcoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCj4gICAJCQkJICAgICAmZW5naW5l LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWlmIChycSAmJiBycS0+ZW5naW5lID09IGVu Z2luZSkgewo+ICsJaWYgKHJxICYmIHJxLT5lbmdpbmUtPm1hc2sgJiBlbmdpbmUtPm1hc2spIHsK PiAgIAkJR0VNX1RSQUNFKCJsYXN0IHJlcXVlc3QgZm9yICVzIG9uIGVuZ2luZSAlczogJWxseDol bGx1XG4iLAo+ICAgCQkJICB0aW1lbGluZS0+bmFtZSwgZW5naW5lLT5uYW1lLAo+ICAgCQkJICBy cS0+ZmVuY2UuY29udGV4dCwgcnEtPmZlbmNlLnNlcW5vKTsKPiBAQCAtMTQ3Niw3ICsxNDk2LDcg QEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IC0J Y3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZV9wcml2KTsKPiArCWN0eCA9 IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGVfcHJpdiwgYXJncy0+ZmxhZ3MpOwo+ ICAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWlmIChJU19FUlIoY3R4 KSkKPiAgIAkJcmV0dXJuIFBUUl9FUlIoY3R4KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5oCj4gaW5kZXggOTdjZjlkM2QwN2FlLi5lMWYyNzBjMDk4ZjAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4gQEAgLTQzLDYgKzQzLDcgQEAg c3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gICBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRl Owo+ICAgc3RydWN0IGk5MTVfaHdfcHBndHQ7Cj4gICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0Owo+ICtz dHJ1Y3QgaTkxNV90aW1lbGluZTsKPiAgIHN0cnVjdCBpOTE1X3ZtYTsKPiAgIHN0cnVjdCBpbnRl bF9yaW5nOwo+ICAgCj4gQEAgLTc4LDYgKzc5LDggQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg ewo+ICAgCS8qKiBmaWxlX3ByaXY6IG93bmluZyBmaWxlIGRlc2NyaXB0b3IgKi8KPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXY7Cj4gICAKPiArCXN0cnVjdCBpOTE1 X3RpbWVsaW5lICp0aW1lbGluZTsKPiArCj4gICAJLyoqCj4gICAJICogQHBwZ3R0OiB1bmlxdWUg YWRkcmVzcyBzcGFjZSAoR1RUKQo+ICAgCSAqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmMKPiBpbmRleCA5ZDExMWVlZGFkNWEuLmUwODA3YTYxZGNmNCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVxdWVzdC5jCj4gQEAgLTEwNDUsOCArMTA0NSwxNCBAQCB2b2lkIGk5MTVfcmVx dWVzdF9hZGQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAlwcmV2ID0gaTkxNV9h Y3RpdmVfcmVxdWVzdF9yYXcoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCj4gICAJCQkJICAgICAg ICZyZXF1ZXN0LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlpZiAocHJldiAmJiAhaTkx NV9yZXF1ZXN0X2NvbXBsZXRlZChwcmV2KSkgewo+IC0JCWk5MTVfc3dfZmVuY2VfYXdhaXRfc3df ZmVuY2UoJnJlcXVlc3QtPnN1Ym1pdCwgJnByZXYtPnN1Ym1pdCwKPiAtCQkJCQkgICAgICZyZXF1 ZXN0LT5zdWJtaXRxKTsKPiArCQlpZiAoaXNfcG93ZXJfb2ZfMihwcmV2LT5lbmdpbmUtPm1hc2sg fCBlbmdpbmUtPm1hc2spKQo+ICsJCQlpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlKCZyZXF1 ZXN0LT5zdWJtaXQsCj4gKwkJCQkJCSAgICAgJnByZXYtPnN1Ym1pdCwKPiArCQkJCQkJICAgICAm cmVxdWVzdC0+c3VibWl0cSk7Cj4gKwkJZWxzZQo+ICsJCQlfX2k5MTVfc3dfZmVuY2VfYXdhaXRf ZG1hX2ZlbmNlKCZyZXF1ZXN0LT5zdWJtaXQsCj4gKwkJCQkJCQkmcHJldi0+ZmVuY2UsCj4gKwkJ CQkJCQkmcmVxdWVzdC0+ZG1hcSk7CgpEcm9wIGEgY29tbWVudCBoZXJlIGV4cGxhaW5pbmcgd2hh dCdzIGhhcHBlbmluZyBpbiB0aGlzIGlmIGJsb2NrLgoKVGhlIHN1YnRsZXR5IG9mIHdoeSB3ZSBu ZWVkIGEgc3BlY2lhbCBmbGF2b3VycyBvZiBhd2FpdCBoZWxwZXIsIG5ldyAKd2hpY2ggdXNlIHRo ZSBidWlsdGluIGNhbGwgYmFjayBzdG9yYWdlLCB2cyB1c2luZyB0aGUgZXhpc3Rpbmcgb25lcyAK d2hpY2ggYWxsb2NhdGUgdGhhdCwgdG90YWxseSBlc2NhcGVzIG1lIGF0IHRoZSBtb21lbnQuCgpJ dCdzIHByb2JhYmx5IGEgZ29vZCBpZGVhIHRvIHB1dCBhIHBhcmFncmFwaCBpbiB0aGUgY29tbWl0 IG1lc3NhZ2UgCmV4cGxhaW5pbmcgd2hhdCBuZXcgc3cgZmVuY2UgZmFjaWxpdHkgbmVlZHMgdG8g YmUgYWRkZWQgdG8gaW1wbGVtZW50IAp0aGlzIGFuZCB3aHkuCgo+ICAgCQlpZiAoZW5naW5lLT5z Y2hlZHVsZSkKPiAgIAkJCV9faTkxNV9zY2hlZF9ub2RlX2FkZF9kZXBlbmRlbmN5KCZyZXF1ZXN0 LT5zY2hlZCwKPiAgIAkJCQkJCQkgJnByZXYtPnNjaGVkLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVxdWVzdC5oCj4gaW5kZXggM2UwZDYyZDM1MjI2Li5kNDExMzA3NGE4ZjYgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IEBAIC0xMjgsNyArMTI4LDEwIEBAIHN0cnVjdCBp OTE1X3JlcXVlc3Qgewo+ICAgCSAqIEl0IGlzIHVzZWQgYnkgdGhlIGRyaXZlciB0byB0aGVuIHF1 ZXVlIHRoZSByZXF1ZXN0IGZvciBleGVjdXRpb24uCj4gICAJICovCj4gICAJc3RydWN0IGk5MTVf c3dfZmVuY2Ugc3VibWl0Owo+IC0Jd2FpdF9xdWV1ZV9lbnRyeV90IHN1Ym1pdHE7Cj4gKwl1bmlv biB7Cj4gKwkJd2FpdF9xdWV1ZV9lbnRyeV90IHN1Ym1pdHE7Cj4gKwkJc3RydWN0IGk5MTVfc3df ZG1hX2ZlbmNlX2NiIGRtYXE7Cj4gKwl9OwoKVW5pb24gZGVzZXJ2ZXMgYSBjb21tZW50IGFzIHdl bGwgSSB0aGluaywgbGlrZSB0aGlzIGlzIGZvciB0aGF0IGFuZCB0aGF0IAppcyBmb3IgdGhpcywg YW5kIG9ubHkgb25lIGNhbiBiZSBpbiB1c2UgYXQgYSB0aW1lIGJlY2F1c2Ugb2YgdGhlIHRoaXJk IAp0aGluZy4KCj4gICAJc3RydWN0IGxpc3RfaGVhZCBleGVjdXRlX2NiOwo+ICAgCj4gICAJLyoK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5jCj4gaW5kZXggOGQxNDAwZDM3OGQ3Li41 Mzg3YWFmZDM0MjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19m ZW5jZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5jCj4gQEAg LTM1OSwxMSArMzU5LDYgQEAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwKHN0 cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKPiAgIAlyZXR1cm4gX19pOTE1X3N3X2ZlbmNlX2F3 YWl0X3N3X2ZlbmNlKGZlbmNlLCBzaWduYWxlciwgTlVMTCwgZ2ZwKTsKPiAgIH0KPiAgIAo+IC1z dHJ1Y3QgaTkxNV9zd19kbWFfZmVuY2VfY2Igewo+IC0Jc3RydWN0IGRtYV9mZW5jZV9jYiBiYXNl Owo+IC0Jc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlOwo+IC19Owo+IC0KPiAgIHN0cnVjdCBp OTE1X3N3X2RtYV9mZW5jZV9jYl90aW1lciB7Cj4gICAJc3RydWN0IGk5MTVfc3dfZG1hX2ZlbmNl X2NiIGJhc2U7Cj4gICAJc3RydWN0IGRtYV9mZW5jZSAqZG1hOwo+IEBAIC00ODAsNiArNDc1LDQw IEBAIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X2RtYV9mZW5jZShzdHJ1Y3QgaTkxNV9zd19mZW5j ZSAqZmVuY2UsCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgdm9pZCBfX2Rt YV9pOTE1X3N3X2ZlbmNlX3dha2Uoc3RydWN0IGRtYV9mZW5jZSAqZG1hLAo+ICsJCQkJICAgICBz dHJ1Y3QgZG1hX2ZlbmNlX2NiICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9zd19kbWFfZmVu Y2VfY2IgKmNiID0gY29udGFpbmVyX29mKGRhdGEsIHR5cGVvZigqY2IpLCBiYXNlKTsKPiArCj4g KwlpOTE1X3N3X2ZlbmNlX2NvbXBsZXRlKGNiLT5mZW5jZSk7Cj4gK30KPiArCj4gK2ludCBfX2k5 MTVfc3dfZmVuY2VfYXdhaXRfZG1hX2ZlbmNlKHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwK PiArCQkJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpkbWEsCj4gKwkJCQkgICAgc3RydWN0IGk5MTVf c3dfZG1hX2ZlbmNlX2NiICpjYikKPiArewo+ICsJaW50IHJldDsKPiArCj4gKwlkZWJ1Z19mZW5j ZV9hc3NlcnQoZmVuY2UpOwo+ICsKPiArCWlmIChkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZG1hKSkK PiArCQlyZXR1cm4gMDsKPiArCj4gKwljYi0+ZmVuY2UgPSBmZW5jZTsKPiArCWk5MTVfc3dfZmVu Y2VfYXdhaXQoZmVuY2UpOwo+ICsKPiArCXJldCA9IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZG1h LCAmY2ItPmJhc2UsIF9fZG1hX2k5MTVfc3dfZmVuY2Vfd2FrZSk7Cj4gKwlpZiAocmV0ID09IDAp IHsKPiArCQlyZXQgPSAxOwo+ICsJfSBlbHNlIHsKPiArCQlpOTE1X3N3X2ZlbmNlX2NvbXBsZXRl KGZlbmNlKTsKPiArCQlpZiAocmV0ID09IC1FTk9FTlQpIC8qIGZlbmNlIGFscmVhZHkgc2lnbmFs ZWQgKi8KPiArCQkJcmV0ID0gMDsKPiArCX0KPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ ICAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRpb24oc3RydWN0IGk5MTVfc3dfZmVu Y2UgKmZlbmNlLAo+ICAgCQkJCSAgICBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2LAo+ ICAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyAqZXhjbHVkZSwKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5oCj4gaW5kZXggNmRlYzllMWQxMTAyLi45Y2I1YzNiMzA3 YTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5oCj4gQEAgLTksMTQgKzks MTMgQEAKPiAgICNpZm5kZWYgX0k5MTVfU1dfRkVOQ0VfSF8KPiAgICNkZWZpbmUgX0k5MTVfU1df RkVOQ0VfSF8KPiAgIAo+ICsjaW5jbHVkZSA8bGludXgvZG1hLWZlbmNlLmg+Cj4gICAjaW5jbHVk ZSA8bGludXgvZ2ZwLmg+Cj4gICAjaW5jbHVkZSA8bGludXgva3JlZi5oPgo+ICAgI2luY2x1ZGUg PGxpbnV4L25vdGlmaWVyLmg+IC8qIGZvciBOT1RJRllfRE9ORSAqLwo+ICAgI2luY2x1ZGUgPGxp bnV4L3dhaXQuaD4KPiAgIAo+ICAgc3RydWN0IGNvbXBsZXRpb247Cj4gLXN0cnVjdCBkbWFfZmVu Y2U7Cj4gLXN0cnVjdCBkbWFfZmVuY2Vfb3BzOwo+ICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVj dDsKPiAgIAo+ICAgc3RydWN0IGk5MTVfc3dfZmVuY2Ugewo+IEBAIC02OCwxMCArNjcsMjAgQEAg aW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2Uoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZl bmNlLAo+ICAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwKHN0cnVjdCBpOTE1 X3N3X2ZlbmNlICpmZW5jZSwKPiAgIAkJCQkgICAgIHN0cnVjdCBpOTE1X3N3X2ZlbmNlICphZnRl ciwKPiAgIAkJCQkgICAgIGdmcF90IGdmcCk7Cj4gKwo+ICtzdHJ1Y3QgaTkxNV9zd19kbWFfZmVu Y2VfY2Igewo+ICsJc3RydWN0IGRtYV9mZW5jZV9jYiBiYXNlOwo+ICsJc3RydWN0IGk5MTVfc3df ZmVuY2UgKmZlbmNlOwo+ICt9Owo+ICsKPiAraW50IF9faTkxNV9zd19mZW5jZV9hd2FpdF9kbWFf ZmVuY2Uoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlLAo+ICsJCQkJICAgIHN0cnVjdCBkbWFf ZmVuY2UgKmRtYSwKPiArCQkJCSAgICBzdHJ1Y3QgaTkxNV9zd19kbWFfZmVuY2VfY2IgKmNiKTsK PiAgIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X2RtYV9mZW5jZShzdHJ1Y3QgaTkxNV9zd19mZW5j ZSAqZmVuY2UsCj4gICAJCQkJICBzdHJ1Y3QgZG1hX2ZlbmNlICpkbWEsCj4gICAJCQkJICB1bnNp Z25lZCBsb25nIHRpbWVvdXQsCj4gICAJCQkJICBnZnBfdCBnZnApOwo+ICsKPiAgIGludCBpOTE1 X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwK PiAgIAkJCQkgICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdiwKPiAgIAkJCQkgICAg Y29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgKmV4Y2x1ZGUsCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKPiBpbmRleCA1MGE3Yzg3NzA1YzguLmQ1MGEzM2M1NzhjNSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4gQEAgLTI4NTMsNyArMjg1MywxMCBAQCBzdGF0aWMgaW50IGV4ZWNs aXN0c19jb250ZXh0X2RlZmVycmVkX2FsbG9jKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs Cj4gICAJCWdvdG8gZXJyb3JfZGVyZWZfb2JqOwo+ICAgCX0KPiAgIAo+IC0JdGltZWxpbmUgPSBp OTE1X3RpbWVsaW5lX2NyZWF0ZShjdHgtPmk5MTUsIGN0eC0+bmFtZSwgTlVMTCk7Cj4gKwlpZiAo Y3R4LT50aW1lbGluZSkKPiArCQl0aW1lbGluZSA9IGk5MTVfdGltZWxpbmVfZ2V0KGN0eC0+dGlt ZWxpbmUpOwo+ICsJZWxzZQo+ICsJCXRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9jcmVhdGUoY3R4 LT5pOTE1LCBjdHgtPm5hbWUsIE5VTEwpOwo+ICAgCWlmIChJU19FUlIodGltZWxpbmUpKSB7Cj4g ICAJCXJldCA9IFBUUl9FUlIodGltZWxpbmUpOwo+ICAgCQlnb3RvIGVycm9yX2RlcmVmX29iajsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2Nv bnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0 LmMKPiBpbmRleCA5MTMzYWZjMDMxMzUuLjE1ZjAxNmNhOGUwZCAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC03Niw3 ICs3Niw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9ub3Bfc3dpdGNoKHZvaWQgKmFyZykKPiAgIAl9Cj4g ICAKPiAgIAlmb3IgKG4gPSAwOyBuIDwgbmN0eDsgbisrKSB7Cj4gLQkJY3R4W25dID0gaTkxNV9n ZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJCWN0eFtuXSA9 IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2LCAwKTsKPiAg IAkJaWYgKElTX0VSUihjdHhbbl0pKSB7Cj4gICAJCQllcnIgPSBQVFJfRVJSKGN0eFtuXSk7Cj4g ICAJCQlnb3RvIG91dF91bmxvY2s7Cj4gQEAgLTUyNiw3ICs1MjYsOCBAQCBzdGF0aWMgaW50IGln dF9jdHhfZXhlYyh2b2lkICphcmcpCj4gICAJCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 Owo+ICAgCQkJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gICAKPiAtCQkJY3R4ID0gaTkxNV9n ZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJCQljdHggPSBp OTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LAo+ICsJCQkJCQkgICAgICBmaWxlLT5kcml2ZXJf cHJpdiwgMCk7Cj4gICAJCQlpZiAoSVNfRVJSKGN0eCkpIHsKPiAgIAkJCQllcnIgPSBQVFJfRVJS KGN0eCk7Cj4gICAJCQkJZ290byBvdXRfdW5sb2NrOwo+IEBAIC02MjMsNyArNjI0LDggQEAgc3Rh dGljIGludCBpZ3Rfc2hhcmVkX2N0eF9leGVjKHZvaWQgKmFyZykKPiAgIAkJaWYgKGVycikKPiAg IAkJCWdvdG8gb3V0X3VubG9jazsKPiAgIAo+IC0JCXBhcmVudCA9IGk5MTVfZ2VtX2NyZWF0ZV9j b250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKPiArCQlwYXJlbnQgPSBpOTE1X2dlbV9j cmVhdGVfY29udGV4dChpOTE1LAo+ICsJCQkJCQkgZmlsZS0+ZHJpdmVyX3ByaXYsIDApOwo+ICAg CQlpZiAoSVNfRVJSKHBhcmVudCkpIHsKPiAgIAkJCWVyciA9IFBUUl9FUlIocGFyZW50KTsKPiAg IAkJCWlmIChlcnIgPT0gLUVOT0RFVikgLyogbm8gbG9naWNhbCBjdHggc3VwcG9ydCAqLwo+IEBA IC02NDUsNyArNjQ3LDggQEAgc3RhdGljIGludCBpZ3Rfc2hhcmVkX2N0eF9leGVjKHZvaWQgKmFy ZykKPiAgIAkJCWlmIChjdHgpCj4gICAJCQkJX19kZXN0cm95X2h3X2NvbnRleHQoY3R4LCBmaWxl LT5kcml2ZXJfcHJpdik7Cj4gICAKPiAtCQkJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQo aTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJCQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29u dGV4dChpOTE1LAo+ICsJCQkJCQkgICAgICBmaWxlLT5kcml2ZXJfcHJpdiwgMCk7Cj4gICAJCQlp ZiAoSVNfRVJSKGN0eCkpIHsKPiAgIAkJCQllcnIgPSBQVFJfRVJSKGN0eCk7Cj4gICAJCQkJZ290 byBvdXRfdW5sb2NrOwo+IEBAIC0xMDkxLDcgKzEwOTQsNyBAQCBfX2lndF9jdHhfc3NldShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAo+ICAgCW11dGV4X2xvY2soJmk5MTUtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gLQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChp OTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gKwljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4 dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdiwgMCk7Cj4gICAJaWYgKElTX0VSUihjdHgpKSB7Cj4g ICAJCXJldCA9IFBUUl9FUlIoY3R4KTsKPiAgIAkJZ290byBvdXRfdW5sb2NrOwo+IEBAIC0xMjAx LDcgKzEyMDQsNyBAQCBzdGF0aWMgaW50IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJnKQo+ICAg CWlmIChlcnIpCj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiAgIAo+IC0JY3R4ID0gaTkxNV9nZW1f Y3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJY3R4ID0gaTkxNV9n ZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYsIDApOwo+ICAgCWlmIChJ U19FUlIoY3R4KSkgewo+ICAgCQllcnIgPSBQVFJfRVJSKGN0eCk7Cj4gICAJCWdvdG8gb3V0X3Vu bG9jazsKPiBAQCAtMTUyNywxMyArMTUzMCwxMyBAQCBzdGF0aWMgaW50IGlndF92bV9pc29sYXRp b24odm9pZCAqYXJnKQo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiAgIAo+ IC0JY3R4X2EgPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJp dik7Cj4gKwljdHhfYSA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZl cl9wcml2LCAwKTsKPiAgIAlpZiAoSVNfRVJSKGN0eF9hKSkgewo+ICAgCQllcnIgPSBQVFJfRVJS KGN0eF9hKTsKPiAgIAkJZ290byBvdXRfdW5sb2NrOwo+ICAgCX0KPiAgIAo+IC0JY3R4X2IgPSBp OTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gKwljdHhf YiA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2LCAwKTsK PiAgIAlpZiAoSVNfRVJSKGN0eF9iKSkgewo+ICAgCQllcnIgPSBQVFJfRVJSKGN0eF9iKTsKPiAg IAkJZ290byBvdXRfdW5sb2NrOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19jb250ZXh0LmMKPiBpbmRleCA1ZWRkZjlmY2ZlOGEuLjVkMGZmMjI5M2FiYyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiBAQCAt OTUsNyArOTUsNyBAQCBsaXZlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgIHsKPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+IC0JcmV0dXJuIGk5MTVfZ2VtX2NyZWF0ZV9j b250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKPiArCXJldHVybiBpOTE1X2dlbV9jcmVh dGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdiwgMCk7Cj4gICB9Cj4gICAKPiAgIHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gaW5kZXggZWVjNjM1ZmIy ZTFjLi40NTFkMmYzNjgzMGIgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gQEAgLTE0NTIsOCArMTQ1 Miw5IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IHsKPiAgIAlfX3Uz MiBjdHhfaWQ7IC8qIG91dHB1dDogaWQgb2YgbmV3IGNvbnRleHQqLwo+ICAgCV9fdTMyIGZsYWdz Owo+ICAgI2RlZmluZSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TCSgx dSA8PCAwKQo+ICsjZGVmaW5lIEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfU0lOR0xFX1RJTUVM SU5FCSgxdSA8PCAxKQoKQW5kIHNvbWUga2VybmVsIGRvYyBwbGVhc2UuCgo+ICAgI2RlZmluZSBJ OTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VOS05PV04gXAo+IC0JKC0oSTkxNV9DT05URVhUX0NS RUFURV9GTEFHU19VU0VfRVhURU5TSU9OUyA8PCAxKSkKPiArCSgtKEk5MTVfQ09OVEVYVF9DUkVB VEVfRkxBR1NfU0lOR0xFX1RJTUVMSU5FIDw8IDEpKQo+ICAgCV9fdTY0IGV4dGVuc2lvbnM7Cj4g ICB9Owo+ICAgCj4gCgpMb29rIGZpbmUsIG5vIGNvbXBsYWludHMsIGFwYXJ0IGZyb20gbmVlZGlu ZyBoZWxwIHRvIHJlbWluZCBtZSBob3cgc29tZSAKdGhpbmdzIHdvcmsuCgpSZWdhcmRzLAoKVHZy dGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==