From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniele Ceraolo Spurio Subject: Re: [PATCH v2 3/8] drm/i915/uc: Unify uc_fw status tracking Date: Wed, 24 Jul 2019 09:37:52 -0700 Message-ID: <8fd309ea-2624-8d8c-9eae-da7ce8d81c0d@intel.com> References: <20190724022153.8927-1-daniele.ceraolospurio@intel.com> <20190724022153.8927-4-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 883036E5F0 for ; Wed, 24 Jul 2019 16:37:53 +0000 (UTC) In-Reply-To: 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: Michal Wajdeczko , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiA3LzI0LzIwMTkgNTozNSBBTSwgTWljaGFsIFdhamRlY3prbyB3cm90ZToKPiBPbiBXZWQs IDI0IEp1bCAyMDE5IDA0OjIxOjQ4ICswMjAwLCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIAo+IDxk YW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPiB3cm90ZToKPgo+PiBXZSBjdXJyZW50bHkg dHJhY2sgZmV0Y2ggYW5kIGxvYWQgc3RhdHVzIHNlcGFyYXRlbHksIGJ1dCB0aGUgMiBhcmUKPj4g YWN0dWFsbHkgc2VxdWVudGlhbCBpbiB0aGUgdWMgbGlmZXRpbWUgKGZldGNoIG11c3QgY29tcGxl dGUgYmVmb3JlIHdlCj4+IGNhbiBhdHRlbXB0IHRoZSBsb2FkISkuIFVuaWZ5aW5nIHRoZSAyIHZh cmlhYmxlcyB3ZSBjYW4gYmV0dGVyIGZvbGxvdwo+PiB0aGUgc2VxdWVudGlhbCBzdGF0ZXMgYW5k IGltcHJvdmUgb3VyIHRyYWNrbmcgb2YgdGhlIHVDIHN0YXRlLgo+Pgo+PiBBbHNvLCBzcHJpbmts ZSBzb21lIEdFTV9CVUdfT04gdG8gbWFrZSBzdXJlIHdlIHRyYW5zaXRpb24gY29ycmVjdGx5Cj4+ IGJldHdlZW4gc3RhdGVzLgo+Pgo+PiB2MjogcmVuYW1lIHN0YXRlcywgYWRkIHRoZSBydW5uaW5n IHN0YXRlIChNaWNoYWwpLCBkcm9wIHNvbWUgbG9ncyBpbgo+PiDCoMKgwqAgdGhlIGZldGNoIHBh dGggKE1pY2hhbCwgQ2hyaXMpCj4+Cj4+IFN1Z2dlc3RlZC1ieTogTWljaGFsIFdhamRlY3prbyA8 bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IERhbmllbGUgQ2Vy YW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4+IENjOiBNaWNo YWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPj4gQ2M6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+PiAtLS0KPj4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC91Yy9pbnRlbF9ndWMuaMKgwqDCoMKgwqDCoMKgIHzCoCA0ICstCj4+IMKgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3LmPCoMKgwqDCoCB8wqAgNiArLQo+ PiDCoC4uLi9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyB8wqAgMiAr LQo+PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5jwqDCoMKgwqDCoMKg wqAgfMKgIDggKy0KPj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuaMKg wqDCoMKgwqDCoMKgIHzCoCA1ICsrCj4+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfdWMuY8KgwqDCoMKgwqDCoMKgwqAgfCAxMCArLS0KPj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC91Yy9pbnRlbF91Y19mdy5jwqDCoMKgwqDCoCB8IDg2ICsrKysrKystLS0tLS0tLS0tLS0K Pj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5owqDCoMKgwqDCoCB8 IDU4ICsrKysrKysrLS0tLS0KPj4gwqA4IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyks IDkwIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjLmggCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxf Z3VjLmgKPj4gaW5kZXggNjg1MjM1MjM4MWNlLi5mNTFjNGMzYzFkMGIgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5oCj4+IEBAIC0xNjksOSArMTY5LDkgQEAgaW50 IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cj4+IMKgaW50IGludGVs X2d1Y19yZXN1bWUoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKPj4gwqBzdHJ1Y3QgaTkxNV92bWEg KmludGVsX2d1Y19hbGxvY2F0ZV92bWEoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgCj4+IHNp emUpOwo+PiAtc3RhdGljIGlubGluZSBib29sIGludGVsX2d1Y19pc19sb2FkZWQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjKQo+PiArc3RhdGljIGlubGluZSBib29sIGludGVsX2d1Y19pc19ydW5uaW5n KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4gwqB7Cj4+IC3CoMKgwqAgcmV0dXJuIGludGVsX3Vj X2Z3X2lzX2xvYWRlZCgmZ3VjLT5mdyk7Cj4+ICvCoMKgwqAgcmV0dXJuIGludGVsX3VjX2Z3X2lz X3J1bm5pbmcoJmd1Yy0+ZncpOwo+PiDCoH0KPj4gc3RhdGljIGlubGluZSBpbnQgaW50ZWxfZ3Vj X3Nhbml0aXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L3VjL2ludGVsX2d1Y19mdy5jCj4+IGluZGV4IGEwMjdkZWI4MDMzMC4uMDg1ZTc4NDJl ZjhhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf ZncuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYwo+ PiBAQCAtMjMyLDUgKzIzMiw5IEBAIHN0YXRpYyBpbnQgZ3VjX2Z3X3hmZXIoc3RydWN0IGludGVs X3VjX2Z3ICpndWNfZncpCj4+IMKgICovCj4+IMKgaW50IGludGVsX2d1Y19md191cGxvYWQoc3Ry dWN0IGludGVsX2d1YyAqZ3VjKQo+PiDCoHsKPj4gLcKgwqDCoCByZXR1cm4gaW50ZWxfdWNfZndf dXBsb2FkKCZndWMtPmZ3LCBndWNfZndfeGZlcik7Cj4+ICvCoMKgwqAgaW50IHJldCA9IGludGVs X3VjX2Z3X3VwbG9hZCgmZ3VjLT5mdywgZ3VjX2Z3X3hmZXIpOwo+PiArwqDCoMKgIGlmICghcmV0 KQo+PiArwqDCoMKgwqDCoMKgwqAgZ3VjLT5mdy5zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9S VU5OSU5HOwo+Cj4gd2Ugc2hvdWxkIGFscmVhZHkga25vdyB0aGF0IGluIGd1Y19md194ZmVyL2d1 Y194ZmVyX3Vjb2RlCj4gc2VlIGJlbG93IGZvciBkZXRhaWxzCj4KPj4gKwo+PiArwqDCoMKgIHJl dHVybiByZXQ7Cj4+IMKgfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4+IGluZGV4IGEwZjJhMDEzNjViYy4uYjQyMzhmZTE2 YTAzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNf c3VibWlzc2lvbi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19zdWJtaXNzaW9uLmMKPj4gQEAgLTk0MSw3ICs5NDEsNyBAQCBzdGF0aWMgdm9pZCBfX2d1Y19j bGllbnRfZGlzYWJsZShzdHJ1Y3QgCj4+IGludGVsX2d1Y19jbGllbnQgKmNsaWVudCkKPj4gwqDC oMKgwqDCoCAqIHRoZSBjYXNlLCBpbnN0ZWFkIG9mIHRyeWluZyAoaW4gdmFpbikgdG8gY29tbXVu aWNhdGUgd2l0aCBpdCwgCj4+IGxldCdzCj4+IMKgwqDCoMKgwqAgKiBqdXN0IGNsZWFudXAgdGhl IGRvb3JiZWxsIEhXIGFuZCBvdXIgaW50ZXJuYWwgc3RhdGUuCj4+IMKgwqDCoMKgwqAgKi8KPj4g LcKgwqDCoCBpZiAoaW50ZWxfZ3VjX2lzX2xvYWRlZChjbGllbnQtPmd1YykpCj4+ICvCoMKgwqAg aWYgKGludGVsX2d1Y19pc19ydW5uaW5nKGNsaWVudC0+Z3VjKSkKPj4gwqDCoMKgwqDCoMKgwqDC oCBkZXN0cm95X2Rvb3JiZWxsKGNsaWVudCk7Cj4+IMKgwqDCoMKgIGVsc2UKPj4gwqDCoMKgwqDC oMKgwqDCoCBfX2ZpbmlfZG9vcmJlbGwoY2xpZW50KTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2h1Yy5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2h1Yy5jCj4+IGluZGV4IGFiNmMxNTY0YjZhNy4uNzgwNGVhNWY2OTljIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuYwo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuYwo+PiBAQCAtMTE3LDgg KzExNyw4IEBAIGludCBpbnRlbF9odWNfYXV0aChzdHJ1Y3QgaW50ZWxfaHVjICpodWMpCj4+IMKg wqDCoMKgIHN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZndC0+dWMuZ3VjOwo+PiDCoMKgwqDCoCBp bnQgcmV0Owo+PiAtwqDCoMKgIGlmIChodWMtPmZ3LmxvYWRfc3RhdHVzICE9IElOVEVMX1VDX0ZJ Uk1XQVJFX1NVQ0NFU1MpCj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0VYRUM7Cj4+ICvC oMKgwqAgR0VNX0JVR19PTighaW50ZWxfdWNfZndfaXNfbG9hZGVkKCZodWMtPmZ3KSk7Cj4+ICvC oMKgwqAgR0VNX0JVR19PTihpbnRlbF9odWNfaXNfYXV0aGVudGljYXRlZChodWMpKTsKPj4gwqDC oMKgwqByZXQgPSBpbnRlbF9ndWNfYXV0aF9odWMoZ3VjLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGh1Yy0+cnNhX2RhdGEp KTsKPj4gQEAgLTEzOCwxMCArMTM4LDEyIEBAIGludCBpbnRlbF9odWNfYXV0aChzdHJ1Y3QgaW50 ZWxfaHVjICpodWMpCj4+IMKgwqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOwo+PiDCoMKgwqDCoCB9 Cj4+ICvCoMKgwqAgaHVjLT5mdy5zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9SVU5OSU5HOwo+ PiArCj4+IMKgwqDCoMKgIHJldHVybiAwOwo+PiBmYWlsOgo+PiAtwqDCoMKgIGh1Yy0+ZncubG9h ZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOwo+PiArwqDCoMKgIGh1Yy0+Zncuc3Rh dHVzID0gSU5URUxfVUNfRklSTVdBUkVfTE9BRF9GQUlMOwo+PiDCoMKgwqDCoERSTV9FUlJPUigi SHVDOiBBdXRoZW50aWNhdGlvbiBmYWlsZWQgJWRcbiIsIHJldCk7Cj4+IMKgwqDCoMKgIHJldHVy biByZXQ7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9o dWMuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9odWMuaAo+PiBpbmRl eCA5ZmEzZDQ2MjlmMmUuLmVhMzQwZjg1YmM0NiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfaHVjLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfaHVjLmgKPj4gQEAgLTU2LDQgKzU2LDkgQEAgc3RhdGljIGlubGluZSBpbnQg aW50ZWxfaHVjX3Nhbml0aXplKHN0cnVjdCAKPj4gaW50ZWxfaHVjICpodWMpCj4+IMKgwqDCoMKg IHJldHVybiAwOwo+PiDCoH0KPj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9odWNfaXNfYXV0 aGVudGljYXRlZChzdHJ1Y3QgaW50ZWxfaHVjICpodWMpCj4+ICt7Cj4+ICvCoMKgwqAgcmV0dXJu IGludGVsX3VjX2Z3X2lzX3J1bm5pbmcoJmh1Yy0+ZncpOwo+PiArfQo+PiArCj4+IMKgI2VuZGlm Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Yy5jIAo+ PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjLmMKPj4gaW5kZXggZDYwYzU2 ZmQ3MmU1Li5iNzYxODA5OTQ2YjEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX3VjLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfdWMuYwo+PiBAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgaW50ZWxfdWNfZmluaV9odyhzdHJ1 Y3QgaW50ZWxfdWMgKnVjKQo+PiDCoHsKPj4gwqDCoMKgwqAgc3RydWN0IGludGVsX2d1YyAqZ3Vj ID0gJnVjLT5ndWM7Cj4+IC3CoMKgwqAgaWYgKCFpbnRlbF9ndWNfaXNfbG9hZGVkKGd1YykpCj4+ ICvCoMKgwqAgaWYgKCFpbnRlbF9ndWNfaXNfcnVubmluZyhndWMpKQo+PiDCoMKgwqDCoMKgwqDC oMKgIHJldHVybjsKPj4gwqDCoMKgwqBHRU1fQlVHX09OKCFpbnRlbF91Y19md19zdXBwb3J0ZWQo Jmd1Yy0+ZncpKTsKPj4gQEAgLTU4MSw3ICs1ODEsNyBAQCB2b2lkIGludGVsX3VjX3Jlc2V0X3By ZXBhcmUoc3RydWN0IGludGVsX3VjICp1YykKPj4gwqB7Cj4+IMKgwqDCoMKgIHN0cnVjdCBpbnRl bF9ndWMgKmd1YyA9ICZ1Yy0+Z3VjOwo+PiAtwqDCoMKgIGlmICghaW50ZWxfZ3VjX2lzX2xvYWRl ZChndWMpKQo+PiArwqDCoMKgIGlmICghaW50ZWxfZ3VjX2lzX3J1bm5pbmcoZ3VjKSkKPj4gwqDC oMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+IMKgwqDCoMKgZ3VjX3N0b3BfY29tbXVuaWNhdGlvbihn dWMpOwo+PiBAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgaW50ZWxfdWNfcnVudGltZV9zdXNwZW5k KHN0cnVjdCBpbnRlbF91YyAqdWMpCj4+IMKgwqDCoMKgIHN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9 ICZ1Yy0+Z3VjOwo+PiDCoMKgwqDCoCBpbnQgZXJyOwo+PiAtwqDCoMKgIGlmICghaW50ZWxfZ3Vj X2lzX2xvYWRlZChndWMpKQo+PiArwqDCoMKgIGlmICghaW50ZWxfZ3VjX2lzX3J1bm5pbmcoZ3Vj KSkKPj4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+IMKgwqDCoMKgZXJyID0gaW50ZWxfZ3Vj X3N1c3BlbmQoZ3VjKTsKPj4gQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIGludGVsX3VjX3N1c3Bl bmQoc3RydWN0IGludGVsX3VjICp1YykKPj4gwqDCoMKgwqAgc3RydWN0IGludGVsX2d1YyAqZ3Vj ID0gJnVjLT5ndWM7Cj4+IMKgwqDCoMKgIGludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+PiAtwqDC oMKgIGlmICghaW50ZWxfZ3VjX2lzX2xvYWRlZChndWMpKQo+PiArwqDCoMKgIGlmICghaW50ZWxf Z3VjX2lzX3J1bm5pbmcoZ3VjKSkKPj4gwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47Cj4+IMKgwqDC oMKgd2l0aF9pbnRlbF9ydW50aW1lX3BtKCZ1Y190b19ndCh1YyktPmk5MTUtPnJ1bnRpbWVfcG0s IHdha2VyZWYpCj4+IEBAIC02MjAsNyArNjIwLDcgQEAgaW50IGludGVsX3VjX3Jlc3VtZShzdHJ1 Y3QgaW50ZWxfdWMgKnVjKQo+PiDCoMKgwqDCoCBzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmdWMt Pmd1YzsKPj4gwqDCoMKgwqAgaW50IGVycjsKPj4gLcKgwqDCoCBpZiAoIWludGVsX2d1Y19pc19s b2FkZWQoZ3VjKSkKPj4gK8KgwqDCoCBpZiAoIWludGVsX2d1Y19pc19ydW5uaW5nKGd1YykpCj4+ IMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4+IMKgwqDCoMKgZ3VjX2VuYWJsZV9jb21tdW5p Y2F0aW9uKGd1Yyk7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF91Y19mdy5jIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3 LmMKPj4gaW5kZXggNDgxMDBkZmY0NjZkLi45ZmM3MmMyZTUwZDEgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuYwo+PiBAQCAtMTMwLDcgKzEzMCw3IEBAIF9f dWNfZndfc2VsZWN0KHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncsIGVudW0gCj4+IGludGVsX3Bs YXRmb3JtIHAsIHU4IHJldikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZndfYmxvYnNbaV0uZmlyc3RfcmV2KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1Y19m dy0+cGF0aCA9IE5VTEw7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVjX2Z3LT5mZXRjaF9z dGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT1RfU1VQUE9SVEVEOwo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1Y19mdy0+c3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NVUFBPUlRF RDsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gwqDCoMKgwqDCoMKgwqDC oCB9Cj4+IMKgwqDCoMKgIH0KPj4gQEAgLTEzOSwxNSArMTM5LDEzIEBAIF9fdWNfZndfc2VsZWN0 KHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncsIGVudW0gCj4+IGludGVsX3BsYXRmb3JtIHAsIHU4 IHJldikKPj4gwqBzdGF0aWMgdm9pZAo+PiDCoHVjX2Z3X3NlbGVjdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSwgc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPj4gwqB7Cj4+IC3CoMKg wqAgR0VNX0JVR19PTih1Y19mdy0+ZmV0Y2hfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1VO SU5JVElBTElaRUQpOwo+PiArwqDCoMKgIEdFTV9CVUdfT04odWNfZnctPnN0YXR1cyAhPSBJTlRF TF9VQ19GSVJNV0FSRV9VTklOSVRJQUxJWkVEKTsKPj4gwqDCoMKgwqBpZiAoIUhBU19HVF9VQyhp OTE1KSkgewo+PiAtwqDCoMKgwqDCoMKgwqAgdWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VD X0ZJUk1XQVJFX05PVF9TVVBQT1JURUQ7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1Y19mdy0+c3RhdHVz ID0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NVUFBPUlRFRDsKPj4gwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm47Cj4+IMKgwqDCoMKgIH0KPj4gLcKgwqDCoCB1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5U RUxfVUNfRklSTVdBUkVfTk9UX1NUQVJURUQ7Cj4+IC0KPj4gwqDCoMKgwqAgaWYgKHVubGlrZWx5 KGk5MTVfbW9kcGFyYW1zLmd1Y19maXJtd2FyZV9wYXRoICYmCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHVjX2Z3LT50eXBlID09IElOVEVMX1VDX0ZXX1RZUEVfR1VDKSkKPj4gwqDCoMKg wqDCoMKgwqDCoCB1Y19mdy0+cGF0aCA9IGk5MTVfbW9kcGFyYW1zLmd1Y19maXJtd2FyZV9wYXRo Owo+PiBAQCAtMTU2LDYgKzE1NCw4IEBAIHVjX2Z3X3NlbGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwgCj4+IHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCj4+IMKgwqDCoMKgwqDC oMKgwqAgdWNfZnctPnBhdGggPSBpOTE1X21vZHBhcmFtcy5odWNfZmlybXdhcmVfcGF0aDsKPj4g wqDCoMKgwqAgZWxzZQo+PiDCoMKgwqDCoMKgwqDCoMKgIF9fdWNfZndfc2VsZWN0KHVjX2Z3LCBJ TlRFTF9JTkZPKGk5MTUpLT5wbGF0Zm9ybSwgCj4+IElOVEVMX1JFVklEKGk5MTUpKTsKPj4gKwo+ PiArwqDCoMKgIHVjX2Z3LT5zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9TRUxFQ1RJT05fRE9O RTsKPj4gwqB9Cj4+IC8qKgo+PiBAQCAtMTcyLDE0ICsxNzIsMTMgQEAgdm9pZCBpbnRlbF91Y19m d19pbml0X2Vhcmx5KHN0cnVjdCAKPj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBpbnRlbF91Y19md190eXBlIHR5cGUpCj4+ IMKgewo+PiDCoMKgwqDCoCAvKgo+PiAtwqDCoMKgwqAgKiB3ZSB1c2UgRklSTVdBUkVfVU5JTklU SUFMSVpFRCB0byBkZXRlY3QgY2hlY2tzIGFnYWluc3QgCj4+IGZldGNoX3N0YXR1cwo+PiArwqDC oMKgwqAgKiB3ZSB1c2UgRklSTVdBUkVfVU5JTklUSUFMSVpFRCB0byBkZXRlY3QgY2hlY2tzIGFn YWluc3QgCj4+IHVjX2Z3LT5zdGF0dXMKPj4gwqDCoMKgwqDCoCAqIGJlZm9yZSB3ZSdyZSBsb29r ZWQgYXQgdGhlIEhXIGNhcHMgdG8gc2VlIGlmIHdlIGhhdmUgdWMgc3VwcG9ydAo+PiDCoMKgwqDC oMKgICovCj4+IMKgwqDCoMKgIEJVSUxEX0JVR19PTihJTlRFTF9VQ19GSVJNV0FSRV9VTklOSVRJ QUxJWkVEKTsKPj4gwqDCoMKgwqB1Y19mdy0+cGF0aCA9IE5VTEw7Cj4+IC3CoMKgwqAgdWNfZnct PmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1VOSU5JVElBTElaRUQ7Cj4+IC3CoMKg wqAgdWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NUQVJURUQ7Cj4+ ICvCoMKgwqAgdWNfZnctPnN0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1VOSU5JVElBTElaRUQ7 Cj4+IMKgwqDCoMKgIHVjX2Z3LT50eXBlID0gdHlwZTsKPj4gwqDCoMKgwqB1Y19md19zZWxlY3Qo aTkxNSwgdWNfZncpOwo+PiBAQCAtMjA0LDI5ICsyMDMsMTEgQEAgdm9pZCBpbnRlbF91Y19md19m ZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAKPj4gKmRldl9wcml2LAo+PiDCoMKgwqDCoCBp bnQgZXJyOwo+PiDCoMKgwqDCoEdFTV9CVUdfT04oIWludGVsX3VjX2Z3X3N1cHBvcnRlZCh1Y19m dykpOwo+PiAtCj4+IC3CoMKgwqAgaWYgKCF1Y19mdy0+cGF0aCkgewo+PiAtwqDCoMKgwqDCoMKg wqAgZGV2X2luZm8oZGV2X3ByaXYtPmRybS5kZXYsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgIiVzOiBObyBmaXJtd2FyZSB3YXMgZGVmaW5lZCBmb3IgJXMhXG4iLAo+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksCj4+IC0g aW50ZWxfcGxhdGZvcm1fbmFtZShJTlRFTF9JTkZPKGRldl9wcml2KS0+cGxhdGZvcm0pKTsKPj4g LcKgwqDCoMKgwqDCoMKgIHJldHVybjsKPj4gLcKgwqDCoCB9Cj4+IC0KPj4gLcKgwqDCoCBEUk1f REVCVUdfRFJJVkVSKCIlcyBmdyBmZXRjaCAlc1xuIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpbnRlbF91Y19md190eXBlX3JlcHIodWNfZnctPnR5cGUpLCB1Y19mdy0+cGF0aCk7Cj4+ IC0KPj4gLcKgwqDCoCB1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfUEVO RElORzsKPj4gLcKgwqDCoCBEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBmZXRjaCAlc1xuIiwKPj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF91Y19md190eXBlX3JlcHIodWNfZnctPnR5 cGUpLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVsX3VjX2Z3X3N0YXR1c19yZXBy KHVjX2Z3LT5mZXRjaF9zdGF0dXMpKTsKPj4gK8KgwqDCoCBHRU1fQlVHX09OKCFpbnRlbF91Y19m d19pc19zZWxlY3RlZCh1Y19mdykpOwo+PiDCoMKgwqDCoGVyciA9IHJlcXVlc3RfZmlybXdhcmUo JmZ3LCB1Y19mdy0+cGF0aCwgJnBkZXYtPmRldik7Cj4+IC3CoMKgwqAgaWYgKGVycikgewo+PiAt wqDCoMKgwqDCoMKgwqAgRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgcmVxdWVzdF9maXJtd2FyZSBl cnI9JWRcbiIsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF91Y19m d190eXBlX3JlcHIodWNfZnctPnR5cGUpLCBlcnIpOwo+PiArwqDCoMKgIGlmIChlcnIpCj4+IMKg wqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOwo+PiAtwqDCoMKgIH0KPj4gwqDCoMKgwqBEUk1fREVC VUdfRFJJVkVSKCIlcyBmdyBzaXplICV6dSBwdHIgJXBcbiIsCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksIGZ3LT5zaXplLCBm dyk7Cj4+IEBAIC0zMjgsMTkgKzMwOSwxMyBAQCB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlIAo+PiAqZGV2X3ByaXYsCj4+IMKgwqDCoMKgdWNfZnctPm9iaiA9 IG9iajsKPj4gwqDCoMKgwqAgdWNfZnctPnNpemUgPSBmdy0+c2l6ZTsKPj4gLcKgwqDCoCB1Y19m dy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUzsKPj4gLcKgwqDCoCBE Uk1fREVCVUdfRFJJVkVSKCIlcyBmdyBmZXRjaCAlc1xuIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpbnRlbF91Y19md190eXBlX3JlcHIodWNfZnctPnR5cGUpLAo+PiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGludGVsX3VjX2Z3X3N0YXR1c19yZXByKHVjX2Z3LT5mZXRjaF9zdGF0 dXMpKTsKPj4gK8KgwqDCoCB1Y19mdy0+c3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfQVZBSUxB QkxFOwo+PiDCoMKgwqDCoHJlbGVhc2VfZmlybXdhcmUoZncpOwo+PiDCoMKgwqDCoCByZXR1cm47 Cj4+IGZhaWw6Cj4+IC3CoMKgwqAgdWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1X QVJFX0ZBSUw7Cj4+IC3CoMKgwqAgRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgZmV0Y2ggJXNcbiIs Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3 LT50eXBlKSwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF91Y19md19zdGF0dXNf cmVwcih1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7Cj4+ICvCoMKgwqAgdWNfZnctPnN0YXR1cyA9IElO VEVMX1VDX0ZJUk1XQVJFX0ZFVENIX0ZBSUw7Cj4+IMKgwqDCoMKgRFJNX1dBUk4oIiVzOiBGYWls ZWQgdG8gZmV0Y2ggZmlybXdhcmUgJXMgKGVycm9yICVkKVxuIiwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksIHVjX2Z3LT5wYXRoLCBlcnIp Owo+PiBAQCAtMzk2LDE0ICszNzEsMTEgQEAgaW50IGludGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3Qg aW50ZWxfdWNfZncgKnVjX2Z3LAo+PiDCoMKgwqDCoCBEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBs b2FkICVzXG4iLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF91Y19md190eXBl X3JlcHIodWNfZnctPnR5cGUpLCB1Y19mdy0+cGF0aCk7Cj4+IC3CoMKgwqAgaWYgKHVjX2Z3LT5m ZXRjaF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykKPj4gLcKgwqDCoMKgwqDC oMKgIHJldHVybiAtRU5PRVhFQzsKPj4gLQo+PiAtwqDCoMKgIHVjX2Z3LT5sb2FkX3N0YXR1cyA9 IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7Cj4+IC3CoMKgwqAgRFJNX0RFQlVHX0RSSVZFUigi JXMgZncgbG9hZCAlc1xuIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF91Y19m d190eXBlX3JlcHIodWNfZnctPnR5cGUpLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlu dGVsX3VjX2Z3X3N0YXR1c19yZXByKHVjX2Z3LT5sb2FkX3N0YXR1cykpOwo+PiArwqDCoMKgIC8q IG1ha2Ugc3VyZSB0aGUgc3RhdHVzIHdhcyBjbGVhcmVkIHRoZSBsYXN0IHRpbWUgd2UgcmVzZXQg dGhlIAo+PiB1YyAqLwo+PiArwqDCoMKgIEdFTV9CVUdfT04oaW50ZWxfdWNfZndfaXNfbG9hZGVk KHVjX2Z3KSk7Cj4+ICvCoMKgwqAgaWYgKCFpbnRlbF91Y19md19pc19hdmFpbGFibGUodWNfZncp KQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9FWEVDOwo+PiDCoMKgwqDCoCAvKiBDYWxs IGN1c3RvbSBsb2FkZXIgKi8KPj4gwqDCoMKgwqAgaW50ZWxfdWNfZndfZ2d0dF9iaW5kKHVjX2Z3 KTsKPj4gwqDCoMKgwqAgZXJyID0geGZlcih1Y19mdyk7Cj4+IEBAIC00MTEsMTAgKzM4Myw5IEBA IGludCBpbnRlbF91Y19md191cGxvYWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKPj4gwqDC oMKgwqAgaWYgKGVycikKPj4gwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWw7Cj4+IC3CoMKgwqAg dWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUzsKPj4gLcKgwqDC oCBEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBsb2FkICVzXG4iLAo+PiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+dHlwZSksCj4+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIodWNfZnctPmxvYWRfc3Rh dHVzKSk7Cj4+ICvCoMKgwqAgdWNfZnctPnN0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0xPQURF RDsKPgo+IG1heWJlIHdlIGNhbiBzbGlnaHRseSBtb2RpZnkgeGZlciBmdW5jdGlvbiBhZ3JlZW1l bnQgYW5kIHVzZQo+IC1FSU5QUk9HUkVTUyB0byBpbmRpY2F0ZSB3aGV0aGVyIGZ3IGlzIGp1c3Qg bG9hZGVkIChIdUMpIG9yCj4gaXMgYWxyZWFkeSBhdXRoZW50aWNhdGVkIGFuZCBydW5uaW5nIChH dUMpOgo+Cj4gwqDCoMKgwqBpZiAoIWVycikKPiDCoMKgwqDCoMKgwqDCoCB1Y19mdy0+c3RhdHVz ID0gSU5URUxfVUNfRklSTVdBUkVfUlVOTklORzsKPiDCoMKgwqDCoGVsc2UgaWYgKGVyciA9PSAt RUlOUFJPR1JFU1MpCj4gwqDCoMKgwqDCoMKgwqAgdWNfZnctPnN0YXR1cyA9IElOVEVMX1VDX0ZJ Uk1XQVJFX0xPQURFRDsKPiDCoMKgwqDCoGVsc2UKPiDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWw7 Cj4KCkkndmUgcHVycG9zZWx5IGtlcHQgdGhlIFJVTk5JTkcgc3RhdGUgb3V0c2lkZSBiZWNhdXNl IGluIHBhdGNoIDggSSBtb3ZlIAp0aGUgd2FpdCBvdXRzaWRlIHRoZSB4ZmVyLCBzbyB0aGUgc3dp dGNoIHRvIHRoZSBydW5uaW5nIHN0YXRlIHdpbGwgYmUgCmRvbmUgb3V0c2lkZSBvZiBoZXJlIGZv ciBib3RoIHVDLiBTZWVtZWQgbGlrZSBsZXNzIGNodXJuIHRvIGdvIGRpcmVjdGx5IAp3aXRoIHRo YXQuCgo+PiArwqDCoMKgIERSTV9ERUJVR19EUklWRVIoIiVzIGZ3IGxvYWQgY29tcGxldGVkXG4i LAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19m dy0+dHlwZSkpOwo+PiDCoMKgwqDCoERSTV9JTkZPKCIlczogTG9hZGVkIGZpcm13YXJlICVzICh2 ZXJzaW9uICV1LiV1KVxuIiwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGludGVsX3VjX2Z3X3R5cGVf cmVwcih1Y19mdy0+dHlwZSksCj4+IEBAIC00MjQsMTAgKzM5NSw5IEBAIGludCBpbnRlbF91Y19m d191cGxvYWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKPj4gwqDCoMKgwqAgcmV0dXJuIDA7 Cj4+IGZhaWw6Cj4+IC3CoMKgwqAgdWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdB UkVfRkFJTDsKPj4gLcKgwqDCoCBEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBsb2FkICVzXG4iLAo+ PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+ dHlwZSksCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ZWxfdWNfZndfc3RhdHVzX3Jl cHIodWNfZnctPmxvYWRfc3RhdHVzKSk7Cj4+ICvCoMKgwqAgdWNfZnctPnN0YXR1cyA9IElOVEVM X1VDX0ZJUk1XQVJFX0xPQURfRkFJTDsKPj4gK8KgwqDCoCBEUk1fREVCVUdfRFJJVkVSKCIlcyBm dyBsb2FkIGZhaWxlZFxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnRlbF91Y19m d190eXBlX3JlcHIodWNfZnctPnR5cGUpKTsKPj4gwqDCoMKgwqBEUk1fV0FSTigiJXM6IEZhaWxl ZCB0byBsb2FkIGZpcm13YXJlICVzIChlcnJvciAlZClcbiIsCj4+IMKgwqDCoMKgwqDCoMKgwqDC oCBpbnRlbF91Y19md190eXBlX3JlcHIodWNfZnctPnR5cGUpLCB1Y19mdy0+cGF0aCwgZXJyKTsK Pj4gQEAgLTQzOSw3ICs0MDksMTAgQEAgaW50IGludGVsX3VjX2Z3X2luaXQoc3RydWN0IGludGVs X3VjX2Z3ICp1Y19mdykKPj4gwqB7Cj4+IMKgwqDCoMKgIGludCBlcnI7Cj4+IC3CoMKgwqAgaWYg KHVjX2Z3LT5mZXRjaF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykKPj4gK8Kg wqDCoCAvKiB0aGlzIHNob3VsZCBoYXBwZW4gYmVmb3JlIHRoZSBsb2FkISAqLwo+PiArwqDCoMKg IEdFTV9CVUdfT04oaW50ZWxfdWNfZndfaXNfbG9hZGVkKHVjX2Z3KSk7Cj4+ICsKPj4gK8KgwqDC oCBpZiAoIWludGVsX3VjX2Z3X2lzX2F2YWlsYWJsZSh1Y19mdykpCj4+IMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIC1FTk9FWEVDOwo+PiDCoMKgwqDCoGVyciA9IGk5MTVfZ2VtX29iamVjdF9waW5f cGFnZXModWNfZnctPm9iaik7Cj4+IEBAIC00NTIsNyArNDI1LDcgQEAgaW50IGludGVsX3VjX2Z3 X2luaXQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPj4gdm9pZCBpbnRlbF91Y19md19maW5p KHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCj4+IMKgewo+PiAtwqDCoMKgIGlmICh1Y19mdy0+ ZmV0Y2hfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCj4+ICvCoMKgwqAgaWYg KCFpbnRlbF91Y19md19pc19hdmFpbGFibGUodWNfZncpKQo+PiDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybjsKPj4gwqDCoMKgwqBpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXModWNfZnctPm9iaik7 Cj4+IEBAIC00ODYsNyArNDU5LDcgQEAgdm9pZCBpbnRlbF91Y19md19jbGVhbnVwX2ZldGNoKHN0 cnVjdCBpbnRlbF91Y19mdyAKPj4gKnVjX2Z3KQo+PiDCoMKgwqDCoCBpZiAob2JqKQo+PiDCoMKg wqDCoMKgwqDCoMKgIGk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPj4gLcKgwqDCoCB1Y19mdy0+ ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NUQVJURUQ7Cj4+ICvCoMKgwqAg dWNfZnctPnN0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1NFTEVDVElPTl9ET05FOwo+PiDCoH0K Pj4gLyoqCj4+IEBAIC01MDAsOSArNDczLDggQEAgdm9pZCBpbnRlbF91Y19md19kdW1wKGNvbnN0 IHN0cnVjdCBpbnRlbF91Y19mdyAKPj4gKnVjX2Z3LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCj4+ IMKgewo+PiDCoMKgwqDCoCBkcm1fcHJpbnRmKHAsICIlcyBmaXJtd2FyZTogJXNcbiIsCj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSwg dWNfZnctPnBhdGgpOwo+PiAtwqDCoMKgIGRybV9wcmludGYocCwgIlx0c3RhdHVzOiBmZXRjaCAl cywgbG9hZCAlc1xuIiwKPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgIGludGVsX3VjX2Z3X3N0YXR1 c19yZXByKHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50 ZWxfdWNfZndfc3RhdHVzX3JlcHIodWNfZnctPmxvYWRfc3RhdHVzKSk7Cj4+ICvCoMKgwqAgZHJt X3ByaW50ZihwLCAiXHRzdGF0dXM6ICVzXG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50 ZWxfdWNfZndfc3RhdHVzX3JlcHIodWNfZnctPnN0YXR1cykpOwo+PiDCoMKgwqDCoCBkcm1fcHJp bnRmKHAsICJcdHZlcnNpb246IHdhbnRlZCAldS4ldSwgZm91bmQgJXUuJXVcbiIsCj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgdWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5taW5vcl92 ZXJfd2FudGVkLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVjX2Z3LT5tYWpvcl92ZXJfZm91 bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF91Y19mdy5oCj4+IGluZGV4IGMyODY4ZWYxNWVkYS4uZWNkZWM0MzIwMjYwIDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5oCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmgKPj4gQEAgLTM1 LDEyICszNSwxNCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKPj4gwqAjZGVmaW5lIElOVEVM X1VDX0ZJUk1XQVJFX1VSTCAKPj4gImh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51 eC9rZXJuZWwvZ2l0L2Zpcm13YXJlL2xpbnV4LWZpcm13YXJlLmdpdC90cmVlL2k5MTUiCj4+IGVu dW0gaW50ZWxfdWNfZndfc3RhdHVzIHsKPj4gLcKgwqDCoCBJTlRFTF9VQ19GSVJNV0FSRV9OT1Rf U1VQUE9SVEVEID0gLTIsIC8qIG5vIHVjIEhXICovCj4+IC3CoMKgwqAgSU5URUxfVUNfRklSTVdB UkVfRkFJTCA9IC0xLAo+PiArwqDCoMKgIElOVEVMX1VDX0ZJUk1XQVJFX0xPQURfRkFJTCA9IC0z LAo+PiArwqDCoMKgIElOVEVMX1VDX0ZJUk1XQVJFX0ZFVENIX0ZBSUwgPSAtMiwKPj4gK8KgwqDC oCBJTlRFTF9VQ19GSVJNV0FSRV9OT1RfU1VQUE9SVEVEID0gLTEsIC8qIG5vIHVjIEhXICovCj4+ IMKgwqDCoMKgIElOVEVMX1VDX0ZJUk1XQVJFX1VOSU5JVElBTElaRUQgPSAwLCAvKiB1c2VkIHRv IGNhdGNoIGNoZWNrcyAKPj4gZG9uZSB0b28gZWFybHkgKi8KPj4gLcKgwqDCoCBJTlRFTF9VQ19G SVJNV0FSRV9OT1RfU1RBUlRFRCA9IDEsCj4+IC3CoMKgwqAgSU5URUxfVUNfRklSTVdBUkVfUEVO RElORywKPj4gLcKgwqDCoCBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTCj4+ICvCoMKgwqAgSU5U RUxfVUNfRklSTVdBUkVfU0VMRUNUSU9OX0RPTkUsIC8qIHNlbGVjdGlvbiBpbmNsdWRlIHRoZSAi bm8gCj4+IEZXIiBjYXNlICovCj4KPiB3aHkgZG8geW91IHdhbnQgdG8ga2VlcCAiTm8gRlciIGNh c2UgaGVyZSA/Cj4gd2hlbiB3ZSBrbm93IHRoYXQgdGhlcmUgaXMgbm8gZncsIHdlIHNob3VsZCBu b3QgYXR0ZW1wdCB0byBmZXRjaCBpdC4KPiBzbyB0aGlzIGlzIGRpZmZlcmVudCBzdGF0ZSB0aGFu ICJmdyB3YXMgc2VsZWN0ZWQsIGF3YWl0aW5nIGZldGNoIgoKV2UgbmVlZCBhIHdheSB0byBkaWZm ZXJlbnRpYXRlIGZvciB0aGUgbG9nZ2luZyBhbmQgSSBkaWRuJ3Qgd2FudCBhbiAKZXh0cmEgc3Rh dGUgc2luY2Ugd2UgY2hlY2sgZnctPnBhdGggYW55d2F5IHRvIG1ha2Ugc3VyZSB0aGUgZncgd2Fz IAphY3R1YWxseSBzZWxlY3RlZC4KCj4KPj4gK8KgwqDCoCBJTlRFTF9VQ19GSVJNV0FSRV9BVkFJ TEFCTEUsIC8qIGZldGNoIGRvbmUgKi8KPj4gK8KgwqDCoCBJTlRFTF9VQ19GSVJNV0FSRV9MT0FE RUQsIC8qIGRtYSB4ZmVyIGRvbmUgKi8KPj4gK8KgwqDCoCBJTlRFTF9VQ19GSVJNV0FSRV9SVU5O SU5HIC8qIGZ3IGluaXQvYXV0aCBkb25lICovCj4+IMKgfTsKPj4gZW51bSBpbnRlbF91Y19md190 eXBlIHsKPj4gQEAgLTU3LDggKzU5LDcgQEAgc3RydWN0IGludGVsX3VjX2Z3IHsKPj4gwqDCoMKg wqAgY29uc3QgY2hhciAqcGF0aDsKPj4gwqDCoMKgwqAgc2l6ZV90IHNpemU7Cj4+IMKgwqDCoMKg IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4+IC3CoMKgwqAgZW51bSBpbnRlbF91 Y19md19zdGF0dXMgZmV0Y2hfc3RhdHVzOwo+PiAtwqDCoMKgIGVudW0gaW50ZWxfdWNfZndfc3Rh dHVzIGxvYWRfc3RhdHVzOwo+PiArwqDCoMKgIGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1 czsKPj4gwqDCoMKgwqAvKgo+PiDCoMKgwqDCoMKgICogVGhlIGZpcm13YXJlIGJ1aWxkIHByb2Nl c3Mgd2lsbCBnZW5lcmF0ZSBhIHZlcnNpb24gaGVhZGVyIAo+PiBmaWxlIHdpdGggbWFqb3IgYW5k Cj4+IEBAIC04MywxOCArODQsMjIgQEAgc3RhdGljIGlubGluZQo+PiDCoGNvbnN0IGNoYXIgKmlu dGVsX3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cykKPj4g wqB7Cj4+IMKgwqDCoMKgIHN3aXRjaCAoc3RhdHVzKSB7Cj4+ICvCoMKgwqAgY2FzZSBJTlRFTF9V Q19GSVJNV0FSRV9MT0FEX0ZBSUw6Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gIkxPQUQgRkFJ TCI7Cj4+ICvCoMKgwqAgY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9GRVRDSF9GQUlMOgo+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuICJGRVRDSCBGQUlMIjsKPj4gwqDCoMKgwqAgY2FzZSBJTlRFTF9V Q19GSVJNV0FSRV9OT1RfU1VQUE9SVEVEOgo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuICJOL0Eg LSB1YyBIVyBub3QgYXZhaWxhYmxlIjsKPj4gLcKgwqDCoCBjYXNlIElOVEVMX1VDX0ZJUk1XQVJF X0ZBSUw6Cj4+IC3CoMKgwqDCoMKgwqDCoCByZXR1cm4gIkZBSUwiOwo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuICJOL0EiOwo+PiDCoMKgwqDCoCBjYXNlIElOVEVMX1VDX0ZJUk1XQVJFX1VOSU5J VElBTElaRUQ6Cj4+IMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICJVTklOSVRJQUxJWkVEIjsKPj4g LcKgwqDCoCBjYXNlIElOVEVMX1VDX0ZJUk1XQVJFX05PVF9TVEFSVEVEOgo+PiAtwqDCoMKgwqDC oMKgwqAgcmV0dXJuICJOT1RfU1RBUlRFRCI7Cj4+IC3CoMKgwqAgY2FzZSBJTlRFTF9VQ19GSVJN V0FSRV9QRU5ESU5HOgo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuICJQRU5ESU5HIjsKPj4gLcKg wqDCoCBjYXNlIElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M6Cj4+IC3CoMKgwqDCoMKgwqDCoCBy ZXR1cm4gIlNVQ0NFU1MiOwo+PiArwqDCoMKgIGNhc2UgSU5URUxfVUNfRklSTVdBUkVfU0VMRUNU SU9OX0RPTkU6Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gIlNFTEVDVElPTiBET05FIjsKPgo+ IG5pdDogdGhpcyBpcyBub3QgbXkgZmF2b3JpdGUsIHdoYXQgd2FzIHdyb25nIHdpdGgKPiAiUEVO RElORyIgKGtub3duLCBhd2FpdGluZyBmZXRjaC9sb2FkLCBsb29rIGl0J3MgdHJhbnNpZW50IHN0 YXRlISkKPiAiU0VMRUNURUQiIChzaG9ydGVyLCBhcHBsaWVzIHRvIHRoaXMgZncgb2JqZWN0IHZz IHN0ZXApCgpJIHdhbnRlZCB0byBoaWdobGlnaHQgdGhlIGZhY3QgdGhhdCB0aGUgc2VsZWN0aW9u IGluY2x1ZGVkIHRoZSAibm8gRlciIApjYXNlLCB0aGUgZncgd2Fzbid0IG5lY2Vzc2FyaWx5ICJz ZWxlY3RlZCIuIFdlIGp1c3Qga25vdyB0aGF0IHdlJ3ZlIHJ1biAKdGhyb3VnaCB0aGUgc2VsZWN0 aW9uIGNvZGUuCgo+Cj4+ICvCoMKgwqAgY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9BVkFJTEFCTEU6 Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gIkFWQUlMQUJMRSI7Cj4+ICvCoMKgwqAgY2FzZSBJ TlRFTF9VQ19GSVJNV0FSRV9MT0FERUQ6Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gIkxPQURF RCI7Cj4+ICvCoMKgwqAgY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9SVU5OSU5HOgo+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuICJSVU5OSU5HIjsKPj4gwqDCoMKgwqAgfQo+PiDCoMKgwqDCoCByZXR1 cm4gIjxpbnZhbGlkPiI7Cj4+IMKgfQo+PiBAQCAtMTEzLDI1ICsxMTgsMzYgQEAgc3RhdGljIGlu bGluZSBjb25zdCBjaGFyIAo+PiAqaW50ZWxfdWNfZndfdHlwZV9yZXByKGVudW0gaW50ZWxfdWNf ZndfdHlwZSB0eXBlKQo+PiBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxfdWNfZndfaXNfc2VsZWN0 ZWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPj4gwqB7Cj4+ICvCoMKgwqAgR0VNX0JVR19P Tih1Y19mdy0+cGF0aCAmJiB1Y19mdy0+c3RhdHVzIDwgCj4+IElOVEVMX1VDX0ZJUk1XQVJFX1NF TEVDVElPTl9ET05FKTsKPj4gwqDCoMKgwqAgcmV0dXJuIHVjX2Z3LT5wYXRoICE9IE5VTEw7Cj4+ IMKgfQo+PiArc3RhdGljIGlubGluZSBib29sIGludGVsX3VjX2Z3X2lzX2F2YWlsYWJsZShzdHJ1 Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQo+PiArewo+PiArwqDCoMKgIHJldHVybiB1Y19mdy0+c3Rh dHVzID49IElOVEVMX1VDX0ZJUk1XQVJFX0FWQUlMQUJMRTsKPj4gK30KPj4gKwo+PiDCoHN0YXRp YyBpbmxpbmUgYm9vbCBpbnRlbF91Y19md19pc19sb2FkZWQoc3RydWN0IGludGVsX3VjX2Z3ICp1 Y19mdykKPj4gwqB7Cj4+IC3CoMKgwqAgcmV0dXJuIHVjX2Z3LT5sb2FkX3N0YXR1cyA9PSBJTlRF TF9VQ19GSVJNV0FSRV9TVUNDRVNTOwo+PiArwqDCoMKgIHJldHVybiB1Y19mdy0+c3RhdHVzID49 IElOVEVMX1VDX0ZJUk1XQVJFX0xPQURFRDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZSBi b29sIGludGVsX3VjX2Z3X2lzX3J1bm5pbmcoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKPj4g K3sKPj4gK8KgwqDCoCByZXR1cm4gdWNfZnctPnN0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9S VU5OSU5HOwo+PiDCoH0KPj4gc3RhdGljIGlubGluZSBib29sIGludGVsX3VjX2Z3X3N1cHBvcnRl ZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQo+PiDCoHsKPj4gwqDCoMKgwqAgLyogc2hvdWxk bid0IGNhbGwgdGhpcyBiZWZvcmUgY2hlY2tpbmcgaHcvYmxvYiBhdmFpbGFiaWxpdHkgKi8KPj4g LcKgwqDCoCBHRU1fQlVHX09OKHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdB UkVfVU5JTklUSUFMSVpFRCk7Cj4+IC3CoMKgwqAgcmV0dXJuIHVjX2Z3LT5mZXRjaF9zdGF0dXMg IT0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NVUFBPUlRFRDsKPj4gK8KgwqDCoCBHRU1fQlVHX09O KHVjX2Z3LT5zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfVU5JTklUSUFMSVpFRCk7Cj4KPiBz aG91bGRuJ3Qgd2UgaGF2ZSB0aGlzIGNoZWNrIG9uIGFsbCB1Y19md19pc194eHgoKSBmdW5jdGlv bnMgPwo+CgpJIGNhbiBhZGQgdGhhdCBpbi4KCkRhbmllbGUKCj4+ICvCoMKgwqAgcmV0dXJuIHVj X2Z3LT5zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfTk9UX1NVUFBPUlRFRDsKPj4gwqB9Cj4+ IHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF91Y19md19zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfdWNf ZncgKnVjX2Z3KQo+PiDCoHsKPj4gwqDCoMKgwqAgaWYgKGludGVsX3VjX2Z3X2lzX2xvYWRlZCh1 Y19mdykpCj4+IC3CoMKgwqDCoMKgwqDCoCB1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19G SVJNV0FSRV9QRU5ESU5HOwo+PiArwqDCoMKgwqDCoMKgwqAgdWNfZnctPnN0YXR1cyA9IElOVEVM X1VDX0ZJUk1XQVJFX0FWQUlMQUJMRTsKPj4gwqB9Cj4+IC8qKgo+PiBAQCAtMTQ0LDcgKzE2MCw3 IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF91Y19md19zYW5pdGl6ZShzdHJ1Y3QgCj4+IGlu dGVsX3VjX2Z3ICp1Y19mdykKPj4gwqAgKi8KPj4gwqBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF91 Y19md19nZXRfdXBsb2FkX3NpemUoc3RydWN0IGludGVsX3VjX2Z3IAo+PiAqdWNfZncpCj4+IMKg ewo+PiAtwqDCoMKgIGlmICh1Y19mdy0+ZmV0Y2hfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJF X1NVQ0NFU1MpCj4+ICvCoMKgwqAgaWYgKCFpbnRlbF91Y19md19pc19hdmFpbGFibGUodWNfZncp KQo+PiDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOwo+PiDCoMKgwqDCoHJldHVybiB1Y19mdy0+ aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeA==