From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [CI 01/13] drm/i915: Split GEM object type definition to its own header Date: Wed, 22 May 2019 17:49:48 +0300 Message-ID: <87r28q7ddf.fsf@intel.com> References: <20190522082104.5117-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 0C2C9897E7 for ; Wed, 22 May 2019 14:46:32 +0000 (UTC) In-Reply-To: <20190522082104.5117-1-chris@chris-wilson.co.uk> 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 T24gV2VkLCAyMiBNYXkgMjAxOSwgQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+IHdyb3RlOgo+IEZvciBjb252ZW5pZW5jZSBpbiBhdm9pZGluZyBpbmxpbmUgc3BhZ2hldHRp LCBrZWVwIHRoZSB0eXBlIGRlZmluaXRpb24KPiBhcyBhIHNlcGFyYXRlIGhlYWRlci4KPgo+IFNp Z25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IFJl dmlld2VkLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+Cj4gQWNrZWQt Ynk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBBY2tlZC1ieTogSmFu aSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KCll1cCwgYXBwbGllcyB0byB0aGUgZW50 aXJlIHNlcmllcy4KCkJSLApKYW5pLgoKCj4gQWNrZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9v bmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL01ha2VmaWxlLmhlYWRlci10ZXN0IHwgIDE2ICsKPiAgLi4uL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmggIHwgMjg1ICsrKysrKysrKysrKysrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oICB8ICAgMSArCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgMyArLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9iYXRjaF9wb29sLmggICAgfCAgIDMgKy0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggICAgICAgICAgIHwgICAxICsKPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fb2JqZWN0LmggICAgICAgIHwgMjk1ICstLS0t LS0tLS0tLS0tLS0tLQo+ICA5IGZpbGVzIGNoYW5nZWQsIDMxMiBpbnNlcnRpb25zKCspLCAyOTQg ZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vTWFrZWZpbGUKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9NYWtlZmlsZS5oZWFkZXItdGVzdAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZQo+IGluZGV4IDY4MTA2ZmUzNWEwNC4uOTYzNDRjOWEwNzI2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKPiBAQCAtODUsNiArODUsNyBAQCBndC0kKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkg Kz0gXAo+ICBpOTE1LXkgKz0gJChndC15KQo+ICAKPiAgIyBHRU0gKEdyYXBoaWNzIEV4ZWN1dGlv biBNYW5hZ2VtZW50KSBjb2RlCj4gK29iai15ICs9IGdlbS8KPiAgaTkxNS15ICs9IFwKPiAgCSAg aTkxNV9hY3RpdmUubyBcCj4gIAkgIGk5MTVfY21kX3BhcnNlci5vIFwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z2VtL01ha2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAu LjA3ZTdiOGI4NDBlYQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vTWFrZWZpbGUKPiBAQCAtMCwwICsxIEBACj4gK2luY2x1ZGUgJChzcmMpL01ha2VmaWxl LmhlYWRlci10ZXN0ICMgRXh0cmEgaGVhZGVyIHRlc3RzCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9NYWtlZmlsZS5oZWFkZXItdGVzdCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9NYWtlZmlsZS5oZWFkZXItdGVzdAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMDAwMDAwLi42MWUwNmNiYjRiMzIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL01ha2VmaWxlLmhlYWRlci10ZXN0Cj4gQEAgLTAsMCArMSwx NiBAQAo+ICsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiArIyBDb3B5cmlnaHQgwqkg MjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsKPiArIyBUZXN0IHRoZSBoZWFkZXJzIGFyZSBjb21w aWxhYmxlIGFzIHN0YW5kYWxvbmUgdW5pdHMKPiAraGVhZGVyX3Rlc3QgOj0gJChub3RkaXIgJCh3 aWxkY2FyZCAkKHNyYykvKi5oKSkKPiArCj4gK3F1aWV0X2NtZF9oZWFkZXJfdGVzdCA9IEhEUlRF U1QgJEAKPiArICAgICAgY21kX2hlYWRlcl90ZXN0ID0gZWNobyAiXCNpbmNsdWRlIFwiJCg8Rilc IiIgPiAkQAo+ICsKPiAraGVhZGVyX3Rlc3RfJS5jOiAlLmgKPiArCSQoY2FsbCBjbWQsaGVhZGVy X3Rlc3QpCj4gKwo+ICtleHRyYS0kKENPTkZJR19EUk1fSTkxNV9XRVJST1IpICs9IFwKPiArCSQo Zm9yZWFjaCBoLCQoaGVhZGVyX3Rlc3QpLCQocGF0c3Vic3QgJS5oLGhlYWRlcl90ZXN0XyUubywk KGgpKSkKPiArCj4gK2NsZWFuLWZpbGVzICs9ICQoZm9yZWFjaCBoLCQoaGVhZGVyX3Rlc3QpLCQo cGF0c3Vic3QgJS5oLGhlYWRlcl90ZXN0XyUuYywkKGgpKSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmZlM2IyYTI3NzVmNwo+IC0tLSAvZGV2L251bGwKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKPiBA QCAtMCwwICsxLDI4NSBAQAo+ICsvKgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlU Cj4gKyAqCj4gKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ ICsKPiArI2lmbmRlZiBfX0k5MTVfR0VNX09CSkVDVF9UWVBFU19IX18KPiArI2RlZmluZSBfX0k5 MTVfR0VNX09CSkVDVF9UWVBFU19IX18KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9yZXNlcnZhdGlv bi5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Cj4gKwo+ICsjaW5jbHVkZSAiaTkx NV9hY3RpdmUuaCIKPiArI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiArCj4gK3N0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0Owo+ICsKPiArLyoKPiArICogc3RydWN0IGk5MTVfbHV0X2hhbmRs ZSB0cmFja3MgdGhlIGZhc3QgbG9va3VwcyBmcm9tIGhhbmRsZSB0byB2bWEgdXNlZAo+ICsgKiBm b3IgZXhlY2J1Zi4gQWx0aG91Z2ggd2UgdXNlIGEgcmFkaXh0cmVlIGZvciB0aGF0IG1hcHBpbmcs IGluIG9yZGVyIHRvCj4gKyAqIHJlbW92ZSB0aGVtIGFzIHRoZSBvYmplY3Qgb3IgY29udGV4dCBp cyBjbG9zZWQsIHdlIG5lZWQgYSBzZWNvbmRhcnkgbGlzdAo+ICsgKiBhbmQgYSB0cmFuc2xhdGlv biBlbnRyeSAoaTkxNV9sdXRfaGFuZGxlKS4KPiArICovCj4gK3N0cnVjdCBpOTE1X2x1dF9oYW5k bGUgewo+ICsJc3RydWN0IGxpc3RfaGVhZCBvYmpfbGluazsKPiArCXN0cnVjdCBsaXN0X2hlYWQg Y3R4X2xpbms7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICsJdTMyIGhhbmRs ZTsKPiArfTsKPiArCj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0X29wcyB7Cj4gKwl1bnNp Z25lZCBpbnQgZmxhZ3M7Cj4gKyNkZWZpbmUgSTkxNV9HRU1fT0JKRUNUX0hBU19TVFJVQ1RfUEFH RQlCSVQoMCkKPiArI2RlZmluZSBJOTE1X0dFTV9PQkpFQ1RfSVNfU0hSSU5LQUJMRQlCSVQoMSkK PiArI2RlZmluZSBJOTE1X0dFTV9PQkpFQ1RfSVNfUFJPWFkJQklUKDIpCj4gKyNkZWZpbmUgSTkx NV9HRU1fT0JKRUNUX0FTWU5DX0NBTkNFTAlCSVQoMykKPiArCj4gKwkvKiBJbnRlcmZhY2UgYmV0 d2VlbiB0aGUgR0VNIG9iamVjdCBhbmQgaXRzIGJhY2tpbmcgc3RvcmFnZS4KPiArCSAqIGdldF9w YWdlcygpIGlzIGNhbGxlZCBvbmNlIHByaW9yIHRvIHRoZSB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQg c2V0Cj4gKwkgKiBvZiBwYWdlcyBiZWZvcmUgdG8gYmluZGluZyB0aGVtIGludG8gdGhlIEdUVCwg YW5kIHB1dF9wYWdlcygpIGlzCj4gKwkgKiBjYWxsZWQgYWZ0ZXIgd2Ugbm8gbG9uZ2VyIG5lZWQg dGhlbS4gQXMgd2UgZXhwZWN0IHRoZXJlIHRvIGJlCj4gKwkgKiBhc3NvY2lhdGVkIGNvc3Qgd2l0 aCBtaWdyYXRpbmcgcGFnZXMgYmV0d2VlbiB0aGUgYmFja2luZyBzdG9yYWdlCj4gKwkgKiBhbmQg bWFraW5nIHRoZW0gYXZhaWxhYmxlIGZvciB0aGUgR1BVIChlLmcuIGNsZmx1c2gpLCB3ZSBtYXkg aG9sZAo+ICsJICogb250byB0aGUgcGFnZXMgYWZ0ZXIgdGhleSBhcmUgbm8gbG9uZ2VyIHJlZmVy ZW5jZWQgYnkgdGhlIEdQVQo+ICsJICogaW4gY2FzZSB0aGV5IG1heSBiZSB1c2VkIGFnYWluIHNo b3J0bHkgKGZvciBleGFtcGxlIG1pZ3JhdGluZyB0aGUKPiArCSAqIHBhZ2VzIHRvIGEgZGlmZmVy ZW50IG1lbW9yeSBkb21haW4gd2l0aGluIHRoZSBHVFQpLiBwdXRfcGFnZXMoKQo+ICsJICogd2ls bCB0aGVyZWZvcmUgbW9zdCBsaWtlbHkgYmUgY2FsbGVkIHdoZW4gdGhlIG9iamVjdCBpdHNlbGYg aXMKPiArCSAqIGJlaW5nIHJlbGVhc2VkIG9yIHVuZGVyIG1lbW9yeSBwcmVzc3VyZSAod2hlcmUg d2UgYXR0ZW1wdCB0bwo+ICsJICogcmVhcCBwYWdlcyBmb3IgdGhlIHNocmlua2VyKS4KPiArCSAq Lwo+ICsJaW50ICgqZ2V0X3BhZ2VzKShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsK PiArCXZvaWQgKCpwdXRfcGFnZXMpKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g KwkJCSAgc3RydWN0IHNnX3RhYmxlICpwYWdlcyk7Cj4gKwo+ICsJaW50ICgqcHdyaXRlKShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCSAgICAgIGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9nZW1fcHdyaXRlICphcmcpOwo+ICsKPiArCWludCAoKmRtYWJ1Zl9leHBvcnQpKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+ICsJdm9pZCAoKnJlbGVhc2UpKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+ICt9Owo+ICsKPiArc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3Qgewo+ICsJc3RydWN0IGRybV9nZW1fb2JqZWN0IGJhc2U7Cj4gKwo+ICsJY29uc3Qg c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3BzICpvcHM7Cj4gKwo+ICsJc3RydWN0IHsKPiAr CQkvKioKPiArCQkgKiBAdm1hLmxvY2s6IHByb3RlY3QgdGhlIGxpc3QvdHJlZSBvZiB2bWFzCj4g KwkJICovCj4gKwkJc3BpbmxvY2tfdCBsb2NrOwo+ICsKPiArCQkvKioKPiArCQkgKiBAdm1hLmxp c3Q6IExpc3Qgb2YgVk1BcyBiYWNrZWQgYnkgdGhpcyBvYmplY3QKPiArCQkgKgo+ICsJCSAqIFRo ZSBWTUEgb24gdGhpcyBsaXN0IGFyZSBvcmRlcmVkIGJ5IHR5cGUsIGFsbCBHR1RUIHZtYSBhcmUK PiArCQkgKiBwbGFjZWQgYXQgdGhlIGhlYWQgYW5kIGFsbCBwcEdUVCB2bWEgYXJlIHBsYWNlZCBh dCB0aGUgdGFpbC4KPiArCQkgKiBUaGUgZGlmZmVyZW50IHR5cGVzIG9mIEdHVFQgdm1hIGFyZSB1 bm9yZGVyZWQgYmV0d2Vlbgo+ICsJCSAqIHRoZW1zZWx2ZXMsIHVzZSB0aGUgQHZtYS50cmVlICh3 aGljaCBoYXMgYSBkZWZpbmVkIG9yZGVyCj4gKwkJICogYmV0d2VlbiBhbGwgVk1BKSB0byBxdWlj a2x5IGZpbmQgYW4gZXhhY3QgbWF0Y2guCj4gKwkJICovCj4gKwkJc3RydWN0IGxpc3RfaGVhZCBs aXN0Owo+ICsKPiArCQkvKioKPiArCQkgKiBAdm1hLnRyZWU6IE9yZGVyZWQgdHJlZSBvZiBWTUFz IGJhY2tlZCBieSB0aGlzIG9iamVjdAo+ICsJCSAqCj4gKwkJICogQWxsIFZNQSBjcmVhdGVkIGZv ciB0aGlzIG9iamVjdCBhcmUgcGxhY2VkIGluIHRoZSBAdm1hLnRyZWUKPiArCQkgKiBmb3IgZmFz dCByZXRyaWV2YWwgdmlhIGEgYmluYXJ5IHNlYXJjaCBpbgo+ICsJCSAqIGk5MTVfdm1hX2luc3Rh bmNlKCkuIFRoZXkgYXJlIGFsc28gYWRkZWQgdG8gQHZtYS5saXN0IGZvcgo+ICsJCSAqIGVhc3kg aXRlcmF0aW9uLgo+ICsJCSAqLwo+ICsJCXN0cnVjdCByYl9yb290IHRyZWU7Cj4gKwl9IHZtYTsK PiArCj4gKwkvKioKPiArCSAqIEBsdXRfbGlzdDogTGlzdCBvZiB2bWEgbG9va3VwIGVudHJpZXMg aW4gdXNlIGZvciB0aGlzIG9iamVjdC4KPiArCSAqCj4gKwkgKiBJZiB0aGlzIG9iamVjdCBpcyBj bG9zZWQsIHdlIG5lZWQgdG8gcmVtb3ZlIGFsbCBvZiBpdHMgVk1BIGZyb20KPiArCSAqIHRoZSBm YXN0IGxvb2t1cCBpbmRleCBpbiBhc3NvY2lhdGVkIGNvbnRleHRzOyBAbHV0X2xpc3QgcHJvdmlk ZXMKPiArCSAqIHRoaXMgdHJhbnNsYXRpb24gZnJvbSBvYmplY3QgdG8gY29udGV4dC0+aGFuZGxl c192bWEuCj4gKwkgKi8KPiArCXN0cnVjdCBsaXN0X2hlYWQgbHV0X2xpc3Q7Cj4gKwo+ICsJLyoq IFN0b2xlbiBtZW1vcnkgZm9yIHRoaXMgb2JqZWN0LCBpbnN0ZWFkIG9mIGJlaW5nIGJhY2tlZCBi eSBzaG1lbS4gKi8KPiArCXN0cnVjdCBkcm1fbW1fbm9kZSAqc3RvbGVuOwo+ICsJdW5pb24gewo+ ICsJCXN0cnVjdCByY3VfaGVhZCByY3U7Cj4gKwkJc3RydWN0IGxsaXN0X25vZGUgZnJlZWQ7Cj4g Kwl9Owo+ICsKPiArCS8qKgo+ICsJICogV2hldGhlciB0aGUgb2JqZWN0IGlzIGN1cnJlbnRseSBp biB0aGUgR0dUVCBtbWFwLgo+ICsJICovCj4gKwl1bnNpZ25lZCBpbnQgdXNlcmZhdWx0X2NvdW50 Owo+ICsJc3RydWN0IGxpc3RfaGVhZCB1c2VyZmF1bHRfbGluazsKPiArCj4gKwlzdHJ1Y3QgbGlz dF9oZWFkIGJhdGNoX3Bvb2xfbGluazsKPiArCUk5MTVfU0VMRlRFU1RfREVDTEFSRShzdHJ1Y3Qg bGlzdF9oZWFkIHN0X2xpbmspOwo+ICsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwo+ICsJ LyoqCj4gKwkgKiBIYXZlIHdlIHRha2VuIGEgcmVmZXJlbmNlIGZvciB0aGUgb2JqZWN0IGZvciBp bmNvbXBsZXRlIEdQVQo+ICsJICogYWN0aXZpdHk/Cj4gKwkgKi8KPiArI2RlZmluZSBJOTE1X0JP X0FDVElWRV9SRUYgMAo+ICsKPiArCS8qCj4gKwkgKiBJcyB0aGUgb2JqZWN0IHRvIGJlIG1hcHBl ZCBhcyByZWFkLW9ubHkgdG8gdGhlIEdQVQo+ICsJICogT25seSBob25vdXJlZCBpZiBoYXJkd2Fy ZSBoYXMgcmVsZXZhbnQgcHRlIGJpdAo+ICsJICovCj4gKwl1bnNpZ25lZCBpbnQgY2FjaGVfbGV2 ZWw6MzsKPiArCXVuc2lnbmVkIGludCBjYWNoZV9jb2hlcmVudDoyOwo+ICsjZGVmaW5lIEk5MTVf Qk9fQ0FDSEVfQ09IRVJFTlRfRk9SX1JFQUQgQklUKDApCj4gKyNkZWZpbmUgSTkxNV9CT19DQUNI RV9DT0hFUkVOVF9GT1JfV1JJVEUgQklUKDEpCj4gKwl1bnNpZ25lZCBpbnQgY2FjaGVfZGlydHk6 MTsKPiArCj4gKwkvKioKPiArCSAqIEByZWFkX2RvbWFpbnM6IFJlYWQgbWVtb3J5IGRvbWFpbnMu Cj4gKwkgKgo+ICsJICogVGhlc2UgbW9uaXRvciB3aGljaCBjYWNoZXMgY29udGFpbiByZWFkL3dy aXRlIGRhdGEgcmVsYXRlZCB0byB0aGUKPiArCSAqIG9iamVjdC4gV2hlbiB0cmFuc2l0aW9uaW5n IGZyb20gb25lIHNldCBvZiBkb21haW5zIHRvIGFub3RoZXIsCj4gKwkgKiB0aGUgZHJpdmVyIGlz IGNhbGxlZCB0byBlbnN1cmUgdGhhdCBjYWNoZXMgYXJlIHN1aXRhYmx5IGZsdXNoZWQgYW5kCj4g KwkgKiBpbnZhbGlkYXRlZC4KPiArCSAqLwo+ICsJdTE2IHJlYWRfZG9tYWluczsKPiArCj4gKwkv KioKPiArCSAqIEB3cml0ZV9kb21haW46IENvcnJlc3BvbmRpbmcgdW5pcXVlIHdyaXRlIG1lbW9y eSBkb21haW4uCj4gKwkgKi8KPiArCXUxNiB3cml0ZV9kb21haW47Cj4gKwo+ICsJYXRvbWljX3Qg ZnJvbnRidWZmZXJfYml0czsKPiArCXVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9nZ3R0X29yaWdp bjsgLyogd3JpdGUgb25jZSAqLwo+ICsJc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgZnJvbnRi dWZmZXJfd3JpdGU7Cj4gKwo+ICsJLyoqIEN1cnJlbnQgdGlsaW5nIHN0cmlkZSBmb3IgdGhlIG9i amVjdCwgaWYgaXQncyB0aWxlZC4gKi8KPiArCXVuc2lnbmVkIGludCB0aWxpbmdfYW5kX3N0cmlk ZTsKPiArI2RlZmluZSBGRU5DRV9NSU5JTVVNX1NUUklERSAxMjggLyogU2VlIGk5MTVfdGlsaW5n X29rKCkgKi8KPiArI2RlZmluZSBUSUxJTkdfTUFTSyAoRkVOQ0VfTUlOSU1VTV9TVFJJREUgLSAx KQo+ICsjZGVmaW5lIFNUUklERV9NQVNLICh+VElMSU5HX01BU0spCj4gKwo+ICsJLyoqIENvdW50 IG9mIFZNQSBhY3R1YWxseSBib3VuZCBieSB0aGlzIG9iamVjdCAqLwo+ICsJdW5zaWduZWQgaW50 IGJpbmRfY291bnQ7Cj4gKwl1bnNpZ25lZCBpbnQgYWN0aXZlX2NvdW50Owo+ICsJLyoqIENvdW50 IG9mIGhvdyBtYW55IGdsb2JhbCBWTUEgYXJlIGN1cnJlbnRseSBwaW5uZWQgZm9yIHVzZSBieSBI VyAqLwo+ICsJdW5zaWduZWQgaW50IHBpbl9nbG9iYWw7Cj4gKwo+ICsJc3RydWN0IHsKPiArCQlz dHJ1Y3QgbXV0ZXggbG9jazsgLyogcHJvdGVjdHMgdGhlIHBhZ2VzIGFuZCB0aGVpciB1c2UgKi8K PiArCQlhdG9taWNfdCBwYWdlc19waW5fY291bnQ7Cj4gKwo+ICsJCXN0cnVjdCBzZ190YWJsZSAq cGFnZXM7Cj4gKwkJdm9pZCAqbWFwcGluZzsKPiArCj4gKwkJLyogVE9ETzogd2hhY2sgc29tZSBv ZiB0aGlzIGludG8gdGhlIGVycm9yIHN0YXRlICovCj4gKwkJc3RydWN0IGk5MTVfcGFnZV9zaXpl cyB7Cj4gKwkJCS8qKgo+ICsJCQkgKiBUaGUgc2cgbWFzayBvZiB0aGUgcGFnZXMgc2dfdGFibGUu IGkuZSB0aGUgbWFzayBvZgo+ICsJCQkgKiBvZiB0aGUgbGVuZ3RocyBmb3IgZWFjaCBzZyBlbnRy eS4KPiArCQkJICovCj4gKwkJCXVuc2lnbmVkIGludCBwaHlzOwo+ICsKPiArCQkJLyoqCj4gKwkJ CSAqIFRoZSBndHQgcGFnZSBzaXplcyB3ZSBhcmUgYWxsb3dlZCB0byB1c2UgZ2l2ZW4gdGhlCj4g KwkJCSAqIHNnIG1hc2sgYW5kIHRoZSBzdXBwb3J0ZWQgcGFnZSBzaXplcy4gVGhpcyB3aWxsCj4g KwkJCSAqIGV4cHJlc3MgdGhlIHNtYWxsZXN0IHVuaXQgd2UgY2FuIHVzZSBmb3IgdGhlIHdob2xl Cj4gKwkJCSAqIG9iamVjdCwgYXMgd2VsbCBhcyB0aGUgbGFyZ2VyIHNpemVzIHdlIG1heSBiZSBh YmxlCj4gKwkJCSAqIHRvIHVzZSBvcHBvcnR1bmlzdGljYWxseS4KPiArCQkJICovCj4gKwkJCXVu c2lnbmVkIGludCBzZzsKPiArCj4gKwkJCS8qKgo+ICsJCQkgKiBUaGUgYWN0dWFsIGd0dCBwYWdl IHNpemUgdXNhZ2UuIFNpbmNlIHdlIGNhbiBoYXZlCj4gKwkJCSAqIG11bHRpcGxlIHZtYSBhc3Nv Y2lhdGVkIHdpdGggdGhpcyBvYmplY3Qgd2UgbmVlZCB0bwo+ICsJCQkgKiBwcmV2ZW50IGFueSB0 cmFtcGxpbmcgb2Ygc3RhdGUsIGhlbmNlIGEgY29weSBvZiB0aGlzCj4gKwkJCSAqIHN0cnVjdCBh bHNvIGxpdmVzIGluIGVhY2ggdm1hLCB0aGVyZWZvcmUgdGhlIGd0dAo+ICsJCQkgKiB2YWx1ZSBo ZXJlIHNob3VsZCBvbmx5IGJlIHJlYWQvd3JpdGUgdGhyb3VnaCB0aGUgdm1hLgo+ICsJCQkgKi8K PiArCQkJdW5zaWduZWQgaW50IGd0dDsKPiArCQl9IHBhZ2Vfc2l6ZXM7Cj4gKwo+ICsJCUk5MTVf U0VMRlRFU1RfREVDTEFSRSh1bnNpZ25lZCBpbnQgcGFnZV9tYXNrKTsKPiArCj4gKwkJc3RydWN0 IGk5MTVfZ2VtX29iamVjdF9wYWdlX2l0ZXIgewo+ICsJCQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNn X3BvczsKPiArCQkJdW5zaWduZWQgaW50IHNnX2lkeDsgLyogaW4gcGFnZXMsIGJ1dCAzMmJpdCBl ZWshICovCj4gKwo+ICsJCQlzdHJ1Y3QgcmFkaXhfdHJlZV9yb290IHJhZGl4Owo+ICsJCQlzdHJ1 Y3QgbXV0ZXggbG9jazsgLyogcHJvdGVjdHMgdGhpcyBjYWNoZSAqLwo+ICsJCX0gZ2V0X3BhZ2U7 Cj4gKwo+ICsJCS8qKgo+ICsJCSAqIEVsZW1lbnQgd2l0aGluIGk5MTUtPm1tLnVuYm91bmRfbGlz dCBvciBpOTE1LT5tbS5ib3VuZF9saXN0LAo+ICsJCSAqIGxvY2tlZCBieSBpOTE1LT5tbS5vYmpf bG9jay4KPiArCQkgKi8KPiArCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4gKwo+ICsJCS8qKgo+ ICsJCSAqIEFkdmljZTogYXJlIHRoZSBiYWNraW5nIHBhZ2VzIHB1cmdlYWJsZT8KPiArCQkgKi8K PiArCQl1bnNpZ25lZCBpbnQgbWFkdjoyOwo+ICsKPiArCQkvKioKPiArCQkgKiBUaGlzIGlzIHNl dCBpZiB0aGUgb2JqZWN0IGhhcyBiZWVuIHdyaXR0ZW4gdG8gc2luY2UgdGhlCj4gKwkJICogcGFn ZXMgd2VyZSBsYXN0IGFjcXVpcmVkLgo+ICsJCSAqLwo+ICsJCWJvb2wgZGlydHk6MTsKPiArCj4g KwkJLyoqCj4gKwkJICogVGhpcyBpcyBzZXQgaWYgdGhlIG9iamVjdCBoYXMgYmVlbiBwaW5uZWQg ZHVlIHRvIHVua25vd24KPiArCQkgKiBzd2l6emxpbmcuCj4gKwkJICovCj4gKwkJYm9vbCBxdWly a2VkOjE7Cj4gKwl9IG1tOwo+ICsKPiArCS8qKiBCcmVhZGNydW1iIG9mIGxhc3QgcmVuZGVyaW5n IHRvIHRoZSBidWZmZXIuCj4gKwkgKiBUaGVyZSBjYW4gb25seSBiZSBvbmUgd3JpdGVyLCBidXQg d2UgYWxsb3cgZm9yIG11bHRpcGxlIHJlYWRlcnMuCj4gKwkgKiBJZiB0aGVyZSBpcyBhIHdyaXRl ciB0aGF0IG5lY2Vzc2FyaWx5IGltcGxpZXMgdGhhdCBhbGwgb3RoZXIKPiArCSAqIHJlYWQgcmVx dWVzdHMgYXJlIGNvbXBsZXRlIC0gYnV0IHdlIG1heSBvbmx5IGJlIGxhemlseSBjbGVhcmluZwo+ ICsJICogdGhlIHJlYWQgcmVxdWVzdHMuIEEgcmVhZCByZXF1ZXN0IGlzIG5hdHVyYWxseSB0aGUg bW9zdCByZWNlbnQKPiArCSAqIHJlcXVlc3Qgb24gYSByaW5nLCBzbyB3ZSBtYXkgaGF2ZSB0d28g ZGlmZmVyZW50IHdyaXRlIGFuZCByZWFkCj4gKwkgKiByZXF1ZXN0cyBvbiBvbmUgcmluZyB3aGVy ZSB0aGUgd3JpdGUgcmVxdWVzdCBpcyBvbGRlciB0aGFuIHRoZQo+ICsJICogcmVhZCByZXF1ZXN0 LiBUaGlzIGFsbG93cyBmb3IgdGhlIENQVSB0byByZWFkIGZyb20gYW4gYWN0aXZlCj4gKwkgKiBi dWZmZXIgYnkgb25seSB3YWl0aW5nIGZvciB0aGUgd3JpdGUgdG8gY29tcGxldGUuCj4gKwkgKi8K PiArCXN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7Cj4gKwo+ICsJLyoqIFJlZmVyZW5j ZXMgZnJvbSBmcmFtZWJ1ZmZlcnMsIGxvY2tzIG91dCB0aWxpbmcgY2hhbmdlcy4gKi8KPiArCXVu c2lnbmVkIGludCBmcmFtZWJ1ZmZlcl9yZWZlcmVuY2VzOwo+ICsKPiArCS8qKiBSZWNvcmQgb2Yg YWRkcmVzcyBiaXQgMTcgb2YgZWFjaCBwYWdlIGF0IGxhc3QgdW5iaW5kLiAqLwo+ICsJdW5zaWdu ZWQgbG9uZyAqYml0XzE3Owo+ICsKPiArCXVuaW9uIHsKPiArCQlzdHJ1Y3QgaTkxNV9nZW1fdXNl cnB0ciB7Cj4gKwkJCXVpbnRwdHJfdCBwdHI7Cj4gKwo+ICsJCQlzdHJ1Y3QgaTkxNV9tbV9zdHJ1 Y3QgKm1tOwo+ICsJCQlzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0ICptbXVfb2JqZWN0Owo+ICsJCQlz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcms7Cj4gKwkJfSB1c2VycHRyOwo+ICsKPiArCQl1bnNpZ25l ZCBsb25nIHNjcmF0Y2g7Cj4gKwo+ICsJCXZvaWQgKmd2dF9pbmZvOwo+ICsJfTsKPiArCj4gKwkv KiogZm9yIHBoeXMgYWxsb2NhdGVkIG9iamVjdHMgKi8KPiArCXN0cnVjdCBkcm1fZG1hX2hhbmRs ZSAqcGh5c19oYW5kbGU7Cj4gKwo+ICsJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCBfX2J1aWx0 aW5fcmVzdjsKPiArfTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKgo+ICt0b19pbnRlbF9ibyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSkKPiArewo+ ICsJLyogQXNzZXJ0IHRoYXQgdG9faW50ZWxfYm8oTlVMTCkgPT0gTlVMTCAqLwo+ICsJQlVJTERf QlVHX09OKG9mZnNldG9mKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBiYXNlKSk7Cj4gKwo+ ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihnZW0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBi YXNlKTsKPiArfQo+ICsKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZW5naW5lX3R5cGVzLmgKPiBpbmRleCBmM2ZjMmU4YWNjOTAuLjJjMjMyNTAxZDk3MyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCj4gQEAg LTI5LDYgKzI5LDcgQEAKPiAgI2RlZmluZSBJOTE1X0NNRF9IQVNIX09SREVSIDkKPiAgCj4gIHN0 cnVjdCBkbWFfZmVuY2U7Cj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Owo+ICBzdHJ1Y3Qg ZHJtX2k5MTVfcmVnX3RhYmxlOwo+ICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dDsKPiAgc3RydWN0 IGk5MTVfcmVxdWVzdDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAxYWQzODE4ZDI2 NzYuLjY0NzU2ZjRiMWU0NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC04MSw3 ICs4MSw2IEBACj4gICNpbmNsdWRlICJpOTE1X2dlbS5oIgo+ICAjaW5jbHVkZSAiaTkxNV9nZW1f Y29udGV4dC5oIgo+ICAjaW5jbHVkZSAiaTkxNV9nZW1fZmVuY2VfcmVnLmgiCj4gLSNpbmNsdWRl ICJpOTE1X2dlbV9vYmplY3QuaCIKPiAgI2luY2x1ZGUgImk5MTVfZ2VtX2d0dC5oIgo+ICAjaW5j bHVkZSAiaTkxNV9ncHVfZXJyb3IuaCIKPiAgI2luY2x1ZGUgImk5MTVfcmVxdWVzdC5oIgo+IEBA IC0xMzYsNiArMTM1LDggQEAgYm9vbCBpOTE1X2Vycm9yX2luamVjdGVkKHZvaWQpOwo+ICAJX19p OTE1X3ByaW50ayhpOTE1LCBpOTE1X2Vycm9yX2luamVjdGVkKCkgPyBLRVJOX0RFQlVHIDogS0VS Tl9FUlIsIFwKPiAgCQkgICAgICBmbXQsICMjX19WQV9BUkdTX18pCj4gIAo+ICtzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdDsKPiArCj4gIGVudW0gaHBkX3BpbiB7Cj4gIAlIUERfTk9ORSA9IDAs Cj4gIAlIUERfVFYgPSBIUERfTk9ORSwgICAgIC8qIFRWIGlzIGtub3duIHRvIGJlIHVucmVsaWFi bGUgKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hf cG9vbC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5oCj4gaW5k ZXggNTY5NDdkYWFhZjY1Li5mZWVlZWVhYTU0ZDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fYmF0Y2hfcG9vbC5oCj4gQEAgLTksNiArOSw3IEBACj4gIAo+ICAjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4KPiAgCj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Owo+ICBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzOwo+ICAKPiAgc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wg ewo+IEBAIC0xOSw3ICsyMCw3IEBAIHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sIHsKPiAgdm9p ZCBpOTE1X2dlbV9iYXRjaF9wb29sX2luaXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNoX3Bvb2wgKnBv b2wsCj4gIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gIHZvaWQg aTkxNV9nZW1fYmF0Y2hfcG9vbF9maW5pKHN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sICpwb29s KTsKPiAtc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QqCj4gK3N0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICoKPiAgaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoc3RydWN0IGk5MTVfZ2VtX2JhdGNo X3Bvb2wgKnBvb2wsIHNpemVfdCBzaXplKTsKPiAgCj4gICNlbmRpZiAvKiBJOTE1X0dFTV9CQVRD SF9QT09MX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IGluZGV4IDk4ZmM3 MTA1M2Y3Yy4uMjQ4YTI2YjFiYjA0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmgKPiBAQCAtNjEsNiArNjEsNyBAQAo+ICAKPiAgc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0 ZTsKPiAgc3RydWN0IGRybV9pOTE1X2ZlbmNlX3JlZzsKPiArc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3Q7Cj4gIHN0cnVjdCBpOTE1X3ZtYTsKPiAgCj4gIHR5cGVkZWYgdTMyIGdlbjZfcHRlX3Q7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX29iamVjdC5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fb2JqZWN0LmgKPiBpbmRleCBjYTkzYTQwYzBj ODcuLjM2NjZiMGM1ZjZjYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9vYmplY3QuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX29iamVj dC5oCj4gQEAgLTEsMzA4ICsxLDE5IEBACj4gIC8qCj4gLSAqIENvcHlyaWdodCDCqSAyMDE2IElu dGVsIENvcnBvcmF0aW9uCj4gLSAqCj4gLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gLSAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCj4gLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiAtICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4g LSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZQo+IC0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+IC0gKgo+IC0gKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRo ZSBuZXh0Cj4gLSAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiAtICogU29mdHdhcmUuCj4gLSAqCj4gLSAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCj4gLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+IC0gKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKPiAtICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiAtICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiAtICog RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUwo+IC0gKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBNSVQKPiAgICoKPiArICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwg Q29ycG9yYXRpb24KPiAgICovCj4gIAo+ICAjaWZuZGVmIF9fSTkxNV9HRU1fT0JKRUNUX0hfXwo+ ICAjZGVmaW5lIF9fSTkxNV9HRU1fT0JKRUNUX0hfXwo+ICAKPiAtI2luY2x1ZGUgPGxpbnV4L3Jl c2VydmF0aW9uLmg+Cj4gLQo+IC0jaW5jbHVkZSA8ZHJtL2RybV92bWFfbWFuYWdlci5oPgo+ICAj aW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5oPgo+ICAj aW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KPiAgCj4gICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0u aD4KPiAgCj4gLSNpbmNsdWRlICJpOTE1X3JlcXVlc3QuaCIKPiAtI2luY2x1ZGUgImk5MTVfc2Vs ZnRlc3QuaCIKPiAtCj4gLXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Owo+IC0KPiAtLyoKPiAt ICogc3RydWN0IGk5MTVfbHV0X2hhbmRsZSB0cmFja3MgdGhlIGZhc3QgbG9va3VwcyBmcm9tIGhh bmRsZSB0byB2bWEgdXNlZAo+IC0gKiBmb3IgZXhlY2J1Zi4gQWx0aG91Z2ggd2UgdXNlIGEgcmFk aXh0cmVlIGZvciB0aGF0IG1hcHBpbmcsIGluIG9yZGVyIHRvCj4gLSAqIHJlbW92ZSB0aGVtIGFz IHRoZSBvYmplY3Qgb3IgY29udGV4dCBpcyBjbG9zZWQsIHdlIG5lZWQgYSBzZWNvbmRhcnkgbGlz dAo+IC0gKiBhbmQgYSB0cmFuc2xhdGlvbiBlbnRyeSAoaTkxNV9sdXRfaGFuZGxlKS4KPiAtICov Cj4gLXN0cnVjdCBpOTE1X2x1dF9oYW5kbGUgewo+IC0Jc3RydWN0IGxpc3RfaGVhZCBvYmpfbGlu azsKPiAtCXN0cnVjdCBsaXN0X2hlYWQgY3R4X2xpbms7Cj4gLQlzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4Owo+IC0JdTMyIGhhbmRsZTsKPiAtfTsKPiAtCj4gLXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0X29wcyB7Cj4gLQl1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4gLSNkZWZpbmUgSTkxNV9H RU1fT0JKRUNUX0hBU19TVFJVQ1RfUEFHRQlCSVQoMCkKPiAtI2RlZmluZSBJOTE1X0dFTV9PQkpF Q1RfSVNfU0hSSU5LQUJMRQlCSVQoMSkKPiAtI2RlZmluZSBJOTE1X0dFTV9PQkpFQ1RfSVNfUFJP WFkJQklUKDIpCj4gLSNkZWZpbmUgSTkxNV9HRU1fT0JKRUNUX0FTWU5DX0NBTkNFTAlCSVQoMykK PiAtCj4gLQkvKiBJbnRlcmZhY2UgYmV0d2VlbiB0aGUgR0VNIG9iamVjdCBhbmQgaXRzIGJhY2tp bmcgc3RvcmFnZS4KPiAtCSAqIGdldF9wYWdlcygpIGlzIGNhbGxlZCBvbmNlIHByaW9yIHRvIHRo ZSB1c2Ugb2YgdGhlIGFzc29jaWF0ZWQgc2V0Cj4gLQkgKiBvZiBwYWdlcyBiZWZvcmUgdG8gYmlu ZGluZyB0aGVtIGludG8gdGhlIEdUVCwgYW5kIHB1dF9wYWdlcygpIGlzCj4gLQkgKiBjYWxsZWQg YWZ0ZXIgd2Ugbm8gbG9uZ2VyIG5lZWQgdGhlbS4gQXMgd2UgZXhwZWN0IHRoZXJlIHRvIGJlCj4g LQkgKiBhc3NvY2lhdGVkIGNvc3Qgd2l0aCBtaWdyYXRpbmcgcGFnZXMgYmV0d2VlbiB0aGUgYmFj a2luZyBzdG9yYWdlCj4gLQkgKiBhbmQgbWFraW5nIHRoZW0gYXZhaWxhYmxlIGZvciB0aGUgR1BV IChlLmcuIGNsZmx1c2gpLCB3ZSBtYXkgaG9sZAo+IC0JICogb250byB0aGUgcGFnZXMgYWZ0ZXIg dGhleSBhcmUgbm8gbG9uZ2VyIHJlZmVyZW5jZWQgYnkgdGhlIEdQVQo+IC0JICogaW4gY2FzZSB0 aGV5IG1heSBiZSB1c2VkIGFnYWluIHNob3J0bHkgKGZvciBleGFtcGxlIG1pZ3JhdGluZyB0aGUK PiAtCSAqIHBhZ2VzIHRvIGEgZGlmZmVyZW50IG1lbW9yeSBkb21haW4gd2l0aGluIHRoZSBHVFQp LiBwdXRfcGFnZXMoKQo+IC0JICogd2lsbCB0aGVyZWZvcmUgbW9zdCBsaWtlbHkgYmUgY2FsbGVk IHdoZW4gdGhlIG9iamVjdCBpdHNlbGYgaXMKPiAtCSAqIGJlaW5nIHJlbGVhc2VkIG9yIHVuZGVy IG1lbW9yeSBwcmVzc3VyZSAod2hlcmUgd2UgYXR0ZW1wdCB0bwo+IC0JICogcmVhcCBwYWdlcyBm b3IgdGhlIHNocmlua2VyKS4KPiAtCSAqLwo+IC0JaW50ICgqZ2V0X3BhZ2VzKShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqKTsKPiAtCXZvaWQgKCpwdXRfcGFnZXMpKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICosIHN0cnVjdCBzZ190YWJsZSAqKTsKPiAtCj4gLQlpbnQgKCpwd3JpdGUp KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICosCj4gLQkJICAgICAgY29uc3Qgc3RydWN0IGRy bV9pOTE1X2dlbV9wd3JpdGUgKik7Cj4gLQo+IC0JaW50ICgqZG1hYnVmX2V4cG9ydCkoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKik7Cj4gLQl2b2lkICgqcmVsZWFzZSkoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKik7Cj4gLX07Cj4gLQo+IC1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCB7Cj4gLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgYmFzZTsKPiAtCj4gLQljb25zdCBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgKm9wczsKPiAtCj4gLQlzdHJ1Y3Qgewo+IC0JCS8qKgo+ IC0JCSAqIEB2bWEubG9jazogcHJvdGVjdCB0aGUgbGlzdC90cmVlIG9mIHZtYXMKPiAtCQkgKi8K PiAtCQlzcGlubG9ja190IGxvY2s7Cj4gLQo+IC0JCS8qKgo+IC0JCSAqIEB2bWEubGlzdDogTGlz dCBvZiBWTUFzIGJhY2tlZCBieSB0aGlzIG9iamVjdAo+IC0JCSAqCj4gLQkJICogVGhlIFZNQSBv biB0aGlzIGxpc3QgYXJlIG9yZGVyZWQgYnkgdHlwZSwgYWxsIEdHVFQgdm1hIGFyZQo+IC0JCSAq IHBsYWNlZCBhdCB0aGUgaGVhZCBhbmQgYWxsIHBwR1RUIHZtYSBhcmUgcGxhY2VkIGF0IHRoZSB0 YWlsLgo+IC0JCSAqIFRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgR0dUVCB2bWEgYXJlIHVub3JkZXJl ZCBiZXR3ZWVuCj4gLQkJICogdGhlbXNlbHZlcywgdXNlIHRoZSBAdm1hLnRyZWUgKHdoaWNoIGhh cyBhIGRlZmluZWQgb3JkZXIKPiAtCQkgKiBiZXR3ZWVuIGFsbCBWTUEpIHRvIHF1aWNrbHkgZmlu ZCBhbiBleGFjdCBtYXRjaC4KPiAtCQkgKi8KPiAtCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4g LQo+IC0JCS8qKgo+IC0JCSAqIEB2bWEudHJlZTogT3JkZXJlZCB0cmVlIG9mIFZNQXMgYmFja2Vk IGJ5IHRoaXMgb2JqZWN0Cj4gLQkJICoKPiAtCQkgKiBBbGwgVk1BIGNyZWF0ZWQgZm9yIHRoaXMg b2JqZWN0IGFyZSBwbGFjZWQgaW4gdGhlIEB2bWEudHJlZQo+IC0JCSAqIGZvciBmYXN0IHJldHJp ZXZhbCB2aWEgYSBiaW5hcnkgc2VhcmNoIGluCj4gLQkJICogaTkxNV92bWFfaW5zdGFuY2UoKS4g VGhleSBhcmUgYWxzbyBhZGRlZCB0byBAdm1hLmxpc3QgZm9yCj4gLQkJICogZWFzeSBpdGVyYXRp b24uCj4gLQkJICovCj4gLQkJc3RydWN0IHJiX3Jvb3QgdHJlZTsKPiAtCX0gdm1hOwo+IC0KPiAt CS8qKgo+IC0JICogQGx1dF9saXN0OiBMaXN0IG9mIHZtYSBsb29rdXAgZW50cmllcyBpbiB1c2Ug Zm9yIHRoaXMgb2JqZWN0Lgo+IC0JICoKPiAtCSAqIElmIHRoaXMgb2JqZWN0IGlzIGNsb3NlZCwg d2UgbmVlZCB0byByZW1vdmUgYWxsIG9mIGl0cyBWTUEgZnJvbQo+IC0JICogdGhlIGZhc3QgbG9v a3VwIGluZGV4IGluIGFzc29jaWF0ZWQgY29udGV4dHM7IEBsdXRfbGlzdCBwcm92aWRlcwo+IC0J ICogdGhpcyB0cmFuc2xhdGlvbiBmcm9tIG9iamVjdCB0byBjb250ZXh0LT5oYW5kbGVzX3ZtYS4K PiAtCSAqLwo+IC0Jc3RydWN0IGxpc3RfaGVhZCBsdXRfbGlzdDsKPiAtCj4gLQkvKiogU3RvbGVu IG1lbW9yeSBmb3IgdGhpcyBvYmplY3QsIGluc3RlYWQgb2YgYmVpbmcgYmFja2VkIGJ5IHNobWVt LiAqLwo+IC0Jc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47Cj4gLQl1bmlvbiB7Cj4gLQkJc3Ry dWN0IHJjdV9oZWFkIHJjdTsKPiAtCQlzdHJ1Y3QgbGxpc3Rfbm9kZSBmcmVlZDsKPiAtCX07Cj4g LQo+IC0JLyoqCj4gLQkgKiBXaGV0aGVyIHRoZSBvYmplY3QgaXMgY3VycmVudGx5IGluIHRoZSBH R1RUIG1tYXAuCj4gLQkgKi8KPiAtCXVuc2lnbmVkIGludCB1c2VyZmF1bHRfY291bnQ7Cj4gLQlz dHJ1Y3QgbGlzdF9oZWFkIHVzZXJmYXVsdF9saW5rOwo+IC0KPiAtCXN0cnVjdCBsaXN0X2hlYWQg YmF0Y2hfcG9vbF9saW5rOwo+IC0JSTkxNV9TRUxGVEVTVF9ERUNMQVJFKHN0cnVjdCBsaXN0X2hl YWQgc3RfbGluayk7Cj4gLQo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCj4gLQkvKioKPiAt CSAqIEhhdmUgd2UgdGFrZW4gYSByZWZlcmVuY2UgZm9yIHRoZSBvYmplY3QgZm9yIGluY29tcGxl dGUgR1BVCj4gLQkgKiBhY3Rpdml0eT8KPiAtCSAqLwo+IC0jZGVmaW5lIEk5MTVfQk9fQUNUSVZF X1JFRiAwCj4gLQo+IC0JLyoKPiAtCSAqIElzIHRoZSBvYmplY3QgdG8gYmUgbWFwcGVkIGFzIHJl YWQtb25seSB0byB0aGUgR1BVCj4gLQkgKiBPbmx5IGhvbm91cmVkIGlmIGhhcmR3YXJlIGhhcyBy ZWxldmFudCBwdGUgYml0Cj4gLQkgKi8KPiAtCXVuc2lnbmVkIGludCBjYWNoZV9sZXZlbDozOwo+ IC0JdW5zaWduZWQgaW50IGNhY2hlX2NvaGVyZW50OjI7Cj4gLSNkZWZpbmUgSTkxNV9CT19DQUNI RV9DT0hFUkVOVF9GT1JfUkVBRCBCSVQoMCkKPiAtI2RlZmluZSBJOTE1X0JPX0NBQ0hFX0NPSEVS RU5UX0ZPUl9XUklURSBCSVQoMSkKPiAtCXVuc2lnbmVkIGludCBjYWNoZV9kaXJ0eToxOwo+IC0K PiAtCS8qKgo+IC0JICogQHJlYWRfZG9tYWluczogUmVhZCBtZW1vcnkgZG9tYWlucy4KPiAtCSAq Cj4gLQkgKiBUaGVzZSBtb25pdG9yIHdoaWNoIGNhY2hlcyBjb250YWluIHJlYWQvd3JpdGUgZGF0 YSByZWxhdGVkIHRvIHRoZQo+IC0JICogb2JqZWN0LiBXaGVuIHRyYW5zaXRpb25pbmcgZnJvbSBv bmUgc2V0IG9mIGRvbWFpbnMgdG8gYW5vdGhlciwKPiAtCSAqIHRoZSBkcml2ZXIgaXMgY2FsbGVk IHRvIGVuc3VyZSB0aGF0IGNhY2hlcyBhcmUgc3VpdGFibHkgZmx1c2hlZCBhbmQKPiAtCSAqIGlu dmFsaWRhdGVkLgo+IC0JICovCj4gLQl1MTYgcmVhZF9kb21haW5zOwo+IC0KPiAtCS8qKgo+IC0J ICogQHdyaXRlX2RvbWFpbjogQ29ycmVzcG9uZGluZyB1bmlxdWUgd3JpdGUgbWVtb3J5IGRvbWFp bi4KPiAtCSAqLwo+IC0JdTE2IHdyaXRlX2RvbWFpbjsKPiAtCj4gLQlhdG9taWNfdCBmcm9udGJ1 ZmZlcl9iaXRzOwo+IC0JdW5zaWduZWQgaW50IGZyb250YnVmZmVyX2dndHRfb3JpZ2luOyAvKiB3 cml0ZSBvbmNlICovCj4gLQlzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCBmcm9udGJ1ZmZlcl93 cml0ZTsKPiAtCj4gLQkvKiogQ3VycmVudCB0aWxpbmcgc3RyaWRlIGZvciB0aGUgb2JqZWN0LCBp ZiBpdCdzIHRpbGVkLiAqLwo+IC0JdW5zaWduZWQgaW50IHRpbGluZ19hbmRfc3RyaWRlOwo+IC0j ZGVmaW5lIEZFTkNFX01JTklNVU1fU1RSSURFIDEyOCAvKiBTZWUgaTkxNV90aWxpbmdfb2soKSAq Lwo+IC0jZGVmaW5lIFRJTElOR19NQVNLIChGRU5DRV9NSU5JTVVNX1NUUklERS0xKQo+IC0jZGVm aW5lIFNUUklERV9NQVNLICh+VElMSU5HX01BU0spCj4gLQo+IC0JLyoqIENvdW50IG9mIFZNQSBh Y3R1YWxseSBib3VuZCBieSB0aGlzIG9iamVjdCAqLwo+IC0JdW5zaWduZWQgaW50IGJpbmRfY291 bnQ7Cj4gLQl1bnNpZ25lZCBpbnQgYWN0aXZlX2NvdW50Owo+IC0JLyoqIENvdW50IG9mIGhvdyBt YW55IGdsb2JhbCBWTUEgYXJlIGN1cnJlbnRseSBwaW5uZWQgZm9yIHVzZSBieSBIVyAqLwo+IC0J dW5zaWduZWQgaW50IHBpbl9nbG9iYWw7Cj4gLQo+IC0Jc3RydWN0IHsKPiAtCQlzdHJ1Y3QgbXV0 ZXggbG9jazsgLyogcHJvdGVjdHMgdGhlIHBhZ2VzIGFuZCB0aGVpciB1c2UgKi8KPiAtCQlhdG9t aWNfdCBwYWdlc19waW5fY291bnQ7Cj4gLQo+IC0JCXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7Cj4g LQkJdm9pZCAqbWFwcGluZzsKPiAtCj4gLQkJLyogVE9ETzogd2hhY2sgc29tZSBvZiB0aGlzIGlu dG8gdGhlIGVycm9yIHN0YXRlICovCj4gLQkJc3RydWN0IGk5MTVfcGFnZV9zaXplcyB7Cj4gLQkJ CS8qKgo+IC0JCQkgKiBUaGUgc2cgbWFzayBvZiB0aGUgcGFnZXMgc2dfdGFibGUuIGkuZSB0aGUg bWFzayBvZgo+IC0JCQkgKiBvZiB0aGUgbGVuZ3RocyBmb3IgZWFjaCBzZyBlbnRyeS4KPiAtCQkJ ICovCj4gLQkJCXVuc2lnbmVkIGludCBwaHlzOwo+IC0KPiAtCQkJLyoqCj4gLQkJCSAqIFRoZSBn dHQgcGFnZSBzaXplcyB3ZSBhcmUgYWxsb3dlZCB0byB1c2UgZ2l2ZW4gdGhlCj4gLQkJCSAqIHNn IG1hc2sgYW5kIHRoZSBzdXBwb3J0ZWQgcGFnZSBzaXplcy4gVGhpcyB3aWxsCj4gLQkJCSAqIGV4 cHJlc3MgdGhlIHNtYWxsZXN0IHVuaXQgd2UgY2FuIHVzZSBmb3IgdGhlIHdob2xlCj4gLQkJCSAq IG9iamVjdCwgYXMgd2VsbCBhcyB0aGUgbGFyZ2VyIHNpemVzIHdlIG1heSBiZSBhYmxlCj4gLQkJ CSAqIHRvIHVzZSBvcHBvcnR1bmlzdGljYWxseS4KPiAtCQkJICovCj4gLQkJCXVuc2lnbmVkIGlu dCBzZzsKPiAtCj4gLQkJCS8qKgo+IC0JCQkgKiBUaGUgYWN0dWFsIGd0dCBwYWdlIHNpemUgdXNh Z2UuIFNpbmNlIHdlIGNhbiBoYXZlCj4gLQkJCSAqIG11bHRpcGxlIHZtYSBhc3NvY2lhdGVkIHdp dGggdGhpcyBvYmplY3Qgd2UgbmVlZCB0bwo+IC0JCQkgKiBwcmV2ZW50IGFueSB0cmFtcGxpbmcg b2Ygc3RhdGUsIGhlbmNlIGEgY29weSBvZiB0aGlzCj4gLQkJCSAqIHN0cnVjdCBhbHNvIGxpdmVz IGluIGVhY2ggdm1hLCB0aGVyZWZvcmUgdGhlIGd0dAo+IC0JCQkgKiB2YWx1ZSBoZXJlIHNob3Vs ZCBvbmx5IGJlIHJlYWQvd3JpdGUgdGhyb3VnaCB0aGUgdm1hLgo+IC0JCQkgKi8KPiAtCQkJdW5z aWduZWQgaW50IGd0dDsKPiAtCQl9IHBhZ2Vfc2l6ZXM7Cj4gLQo+IC0JCUk5MTVfU0VMRlRFU1Rf REVDTEFSRSh1bnNpZ25lZCBpbnQgcGFnZV9tYXNrKTsKPiAtCj4gLQkJc3RydWN0IGk5MTVfZ2Vt X29iamVjdF9wYWdlX2l0ZXIgewo+IC0JCQlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnX3BvczsKPiAt CQkJdW5zaWduZWQgaW50IHNnX2lkeDsgLyogaW4gcGFnZXMsIGJ1dCAzMmJpdCBlZWshICovCj4g LQo+IC0JCQlzdHJ1Y3QgcmFkaXhfdHJlZV9yb290IHJhZGl4Owo+IC0JCQlzdHJ1Y3QgbXV0ZXgg bG9jazsgLyogcHJvdGVjdHMgdGhpcyBjYWNoZSAqLwo+IC0JCX0gZ2V0X3BhZ2U7Cj4gLQo+IC0J CS8qKgo+IC0JCSAqIEVsZW1lbnQgd2l0aGluIGk5MTUtPm1tLnVuYm91bmRfbGlzdCBvciBpOTE1 LT5tbS5ib3VuZF9saXN0LAo+IC0JCSAqIGxvY2tlZCBieSBpOTE1LT5tbS5vYmpfbG9jay4KPiAt CQkgKi8KPiAtCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4gLQo+IC0JCS8qKgo+IC0JCSAqIEFk dmljZTogYXJlIHRoZSBiYWNraW5nIHBhZ2VzIHB1cmdlYWJsZT8KPiAtCQkgKi8KPiAtCQl1bnNp Z25lZCBpbnQgbWFkdjoyOwo+IC0KPiAtCQkvKioKPiAtCQkgKiBUaGlzIGlzIHNldCBpZiB0aGUg b2JqZWN0IGhhcyBiZWVuIHdyaXR0ZW4gdG8gc2luY2UgdGhlCj4gLQkJICogcGFnZXMgd2VyZSBs YXN0IGFjcXVpcmVkLgo+IC0JCSAqLwo+IC0JCWJvb2wgZGlydHk6MTsKPiAtCj4gLQkJLyoqCj4g LQkJICogVGhpcyBpcyBzZXQgaWYgdGhlIG9iamVjdCBoYXMgYmVlbiBwaW5uZWQgZHVlIHRvIHVu a25vd24KPiAtCQkgKiBzd2l6emxpbmcuCj4gLQkJICovCj4gLQkJYm9vbCBxdWlya2VkOjE7Cj4g LQl9IG1tOwo+IC0KPiAtCS8qKiBCcmVhZGNydW1iIG9mIGxhc3QgcmVuZGVyaW5nIHRvIHRoZSBi dWZmZXIuCj4gLQkgKiBUaGVyZSBjYW4gb25seSBiZSBvbmUgd3JpdGVyLCBidXQgd2UgYWxsb3cg Zm9yIG11bHRpcGxlIHJlYWRlcnMuCj4gLQkgKiBJZiB0aGVyZSBpcyBhIHdyaXRlciB0aGF0IG5l Y2Vzc2FyaWx5IGltcGxpZXMgdGhhdCBhbGwgb3RoZXIKPiAtCSAqIHJlYWQgcmVxdWVzdHMgYXJl IGNvbXBsZXRlIC0gYnV0IHdlIG1heSBvbmx5IGJlIGxhemlseSBjbGVhcmluZwo+IC0JICogdGhl IHJlYWQgcmVxdWVzdHMuIEEgcmVhZCByZXF1ZXN0IGlzIG5hdHVyYWxseSB0aGUgbW9zdCByZWNl bnQKPiAtCSAqIHJlcXVlc3Qgb24gYSByaW5nLCBzbyB3ZSBtYXkgaGF2ZSB0d28gZGlmZmVyZW50 IHdyaXRlIGFuZCByZWFkCj4gLQkgKiByZXF1ZXN0cyBvbiBvbmUgcmluZyB3aGVyZSB0aGUgd3Jp dGUgcmVxdWVzdCBpcyBvbGRlciB0aGFuIHRoZQo+IC0JICogcmVhZCByZXF1ZXN0LiBUaGlzIGFs bG93cyBmb3IgdGhlIENQVSB0byByZWFkIGZyb20gYW4gYWN0aXZlCj4gLQkgKiBidWZmZXIgYnkg b25seSB3YWl0aW5nIGZvciB0aGUgd3JpdGUgdG8gY29tcGxldGUuCj4gLQkgKi8KPiAtCXN0cnVj dCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3Y7Cj4gLQo+IC0JLyoqIFJlZmVyZW5jZXMgZnJvbSBm cmFtZWJ1ZmZlcnMsIGxvY2tzIG91dCB0aWxpbmcgY2hhbmdlcy4gKi8KPiAtCXVuc2lnbmVkIGlu dCBmcmFtZWJ1ZmZlcl9yZWZlcmVuY2VzOwo+IC0KPiAtCS8qKiBSZWNvcmQgb2YgYWRkcmVzcyBi aXQgMTcgb2YgZWFjaCBwYWdlIGF0IGxhc3QgdW5iaW5kLiAqLwo+IC0JdW5zaWduZWQgbG9uZyAq Yml0XzE3Owo+IC0KPiAtCXVuaW9uIHsKPiAtCQlzdHJ1Y3QgaTkxNV9nZW1fdXNlcnB0ciB7Cj4g LQkJCXVpbnRwdHJfdCBwdHI7Cj4gLQo+IC0JCQlzdHJ1Y3QgaTkxNV9tbV9zdHJ1Y3QgKm1tOwo+ IC0JCQlzdHJ1Y3QgaTkxNV9tbXVfb2JqZWN0ICptbXVfb2JqZWN0Owo+IC0JCQlzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcms7Cj4gLQkJfSB1c2VycHRyOwo+IC0KPiAtCQl1bnNpZ25lZCBsb25nIHNj cmF0Y2g7Cj4gLQo+IC0JCXZvaWQgKmd2dF9pbmZvOwo+IC0JfTsKPiAtCj4gLQkvKiogZm9yIHBo eXMgYWxsb2NhdGVkIG9iamVjdHMgKi8KPiAtCXN0cnVjdCBkcm1fZG1hX2hhbmRsZSAqcGh5c19o YW5kbGU7Cj4gLQo+IC0Jc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCBfX2J1aWx0aW5fcmVzdjsK PiAtfTsKPiAtCj4gLXN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgo+ IC10b19pbnRlbF9ibyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSkKPiAtewo+IC0JLyogQXNz ZXJ0IHRoYXQgdG9faW50ZWxfYm8oTlVMTCkgPT0gTlVMTCAqLwo+IC0JQlVJTERfQlVHX09OKG9m ZnNldG9mKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBiYXNlKSk7Cj4gLQo+IC0JcmV0dXJu IGNvbnRhaW5lcl9vZihnZW0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LCBiYXNlKTsKPiAt fQo+ICsjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oIgo+ICAKPiAgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKmk5MTVfZ2VtX29iamVjdF9hbGxvYyh2b2lkKTsKPiAgdm9p ZCBpOTE1X2dlbV9vYmplY3RfZnJlZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsK Ci0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==