From mboxrd@z Thu Jan 1 00:00:00 1970 From: Elena Ufimtseva Subject: Re: [PATCH v6 04/14] xen: Use a typesafe to define INVALID_GFN Date: Fri, 8 Jul 2016 15:05:07 -0700 Message-ID: <20160708220507.GB12597@localhost.localdomain> References: <1467810073-27971-1-git-send-email-julien.grall@arm.com> <1467810073-27971-5-git-send-email-julien.grall@arm.com> <577D0214.8000205@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <577D0214.8000205@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall Cc: Kevin Tian , sstabellini@kernel.org, Feng Wu , Suravee Suthikulpanit , Jun Nakajima , Andrew Cooper , Tim Deegan , xen-devel@lists.xen.org, George Dunlap , Paul Durrant , Jan Beulich , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org T24gV2VkLCBKdWwgMDYsIDIwMTYgYXQgMDI6MDU6MjRQTSArMDEwMCwgSnVsaWVuIEdyYWxsIHdy b3RlOgo+IChDQyBFbGVuYSkKPiAKVGhhbmtzIEp1bGllbiEKCj4gT24gMDYvMDcvMTYgMTQ6MDEs IEp1bGllbiBHcmFsbCB3cm90ZToKPiA+QWxzbyB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBjb252 ZXJ0IGFyY2gveDg2L2RlYnVnLmMgdG8gdGhlIHR5cGVzYWZlIGdmbi4KPiA+Cj4gPlNpZ25lZC1v ZmYtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Cj4gPlJldmlld2VkLWJ5 OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+ID5BY2tlZC1ieTog U3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgo+ID4KPiA+LS0tCj4g PkNjOiBNdWtlc2ggUmF0aG9yIDxtdWtlc2gucmF0aG9yQG9yYWNsZS5jb20+Cj4gCj4gSSBmb3Jn b3QgdG8gdXBkYXRlIHRoZSBDQyBsaXN0IHNpbmNlIEdEU1ggbWFpbnRhaW5lcnNoaXAgd2FzIHRh a2VuIG92ZXIgYnkKPiBFbGVuYS4gU29ycnkgZm9yIHRoYXQuCj4gCj4gUmVnYXJkcywKPiAKPiA+ Q2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KPiA+Q2M6IFBhdWwgRHVycmFudCA8 cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4gPkNjOiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9z dHJvdnNreUBvcmFjbGUuY29tPgo+ID5DYzogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVl LnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KPiA+Q2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1h QGludGVsLmNvbT4KPiA+Q2M6IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgo+ID5D YzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgo+ID5DYzogVGlt IERlZWdhbiA8dGltQHhlbi5vcmc+Cj4gPkNjOiBGZW5nIFd1IDxmZW5nLnd1QGludGVsLmNvbT4K PiA+Cj4gPiAgICAgQ2hhbmdlcyBpbiB2NjoKPiA+ICAgICAgICAgLSBBZGQgU3RlZmFubydzIGFj a2VkLWJ5IGZvciBBUk0gYml0cwo+ID4gICAgICAgICAtIFJlbW92ZSBzZXQgb2YgYnJhY2tldHMg d2hlbiBpdCBpcyBub3QgbmVjZXNzYXJ5Cj4gPiAgICAgICAgIC0gQWRkIEFuZHJldydzIHJldmll d2VkLWJ5Cj4gPgo+ID4gICAgIENoYW5nZXMgaW4gdjU6Cj4gPiAgICAgICAgIC0gUGF0Y2ggYWRk ZWQKPiA+LS0tCj4gPiAgeGVuL2FyY2gvYXJtL3AybS5jICAgICAgICAgICAgICAgICAgICAgIHwg IDQgKystLQo+ID4gIHhlbi9hcmNoL3g4Ni9kZWJ1Zy5jICAgICAgICAgICAgICAgICAgICB8IDE4 ICsrKysrKysrKy0tLS0tLS0tLQo+ID4gIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAgICAgICAgICAg ICAgICAgICB8ICAyICstCj4gPiAgeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAgICAgICAg ICAgIHwgIDcgKysrKy0tLQo+ID4gIHhlbi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgICAg ICAgICB8ICA2ICsrKy0tLQo+ID4gIHhlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyAgICAgICAgICAg ICAgICB8ICA4ICsrKystLS0tCj4gPiAgeGVuL2FyY2gveDg2L2h2bS9zdm0vbmVzdGVkc3ZtLmMg ICAgICAgIHwgIDIgKy0KPiA+ICB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYyAgICAgICAgICAg ICAgfCAgNiArKystLS0KPiA+ICB4ZW4vYXJjaC94ODYvbW0vYWx0cDJtLmMgICAgICAgICAgICAg ICAgfCAgMiArLQo+ID4gIHhlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jICAgICAgICB8 IDEwICsrKysrLS0tLS0KPiA+ICB4ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYyAgICAg ICAgfCAgMiArLQo+ID4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMgICAgICAgICAgICAgICB8 ICA2ICsrKy0tLQo+ID4gIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAgICAgICB8 IDE4ICsrKysrKysrKy0tLS0tLS0tLQo+ID4gIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9u LmMgICAgICAgICB8ICAyICstCj4gPiAgeGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jICAg ICAgICAgIHwgIDIgKy0KPiA+ICB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L3ByaXZhdGUuaCAgICAg ICAgfCAgMiArLQo+ID4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYyB8 ICAyICstCj4gPiAgeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMgICAgIHwgIDQg KystLQo+ID4gIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21tdS5jICAgICB8ICAyICst Cj4gPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oICAgICAgICAgIHwgIDQgKystLQo+ ID4gIHhlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggICAgICAgICAgICAgICB8ICAyICstCj4gPiAg eGVuL2luY2x1ZGUveGVuL21tLmggICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KPiA+ICAyMiBm aWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKPiA+Cj4gPmRp ZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vcDJtLmMgYi94ZW4vYXJjaC9hcm0vcDJtLmMKPiA+aW5k ZXggZDY5MDYwMi4uYzkzOGRkZSAxMDA2NDQKPiA+LS0tIGEveGVuL2FyY2gvYXJtL3AybS5jCj4g PisrKyBiL3hlbi9hcmNoL2FybS9wMm0uYwo+ID5AQCAtNDc5LDcgKzQ3OSw3IEBAIHN0YXRpYyBp bnQgX19wMm1fZ2V0X21lbV9hY2Nlc3Moc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLAo+ID4g ICAgICB9Cj4gPgo+ID4gICAgICAvKiBJZiByZXF1ZXN0IHRvIGdldCBkZWZhdWx0IGFjY2Vzcy4g Ki8KPiA+LSAgICBpZiAoIGdmbl94KGdmbikgPT0gSU5WQUxJRF9HRk4gKQo+ID4rICAgIGlmICgg Z2ZuX2VxKGdmbiwgSU5WQUxJRF9HRk4pICkKPiA+ICAgICAgewo+ID4gICAgICAgICAgKmFjY2Vz cyA9IG1lbWFjY2Vzc1twMm0tPmRlZmF1bHRfYWNjZXNzXTsKPiA+ICAgICAgICAgIHJldHVybiAw Owo+ID5AQCAtMTg3OSw3ICsxODc5LDcgQEAgbG9uZyBwMm1fc2V0X21lbV9hY2Nlc3Moc3RydWN0 IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCB1aW50MzJfdCBuciwKPiA+ICAgICAgcDJtLT5tZW1fYWNj ZXNzX2VuYWJsZWQgPSB0cnVlOwo+ID4KPiA+ICAgICAgLyogSWYgcmVxdWVzdCB0byBzZXQgZGVm YXVsdCBhY2Nlc3MuICovCj4gPi0gICAgaWYgKCBnZm5feChnZm4pID09IElOVkFMSURfR0ZOICkK PiA+KyAgICBpZiAoIGdmbl9lcShnZm4sIElOVkFMSURfR0ZOKSApCj4gPiAgICAgIHsKPiA+ICAg ICAgICAgIHAybS0+ZGVmYXVsdF9hY2Nlc3MgPSBhOwo+ID4gICAgICAgICAgcmV0dXJuIDA7Cj4g PmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZGVidWcuYyBiL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5j Cj4gPmluZGV4IDkyMTNlYTcuLjMwMzAwMjIgMTAwNjQ0Cj4gPi0tLSBhL3hlbi9hcmNoL3g4Ni9k ZWJ1Zy5jCj4gPisrKyBiL3hlbi9hcmNoL3g4Ni9kZWJ1Zy5jCj4gPkBAIC00NCw4ICs0NCw3IEBA IHR5cGVkZWYgdW5zaWduZWQgY2hhciBkYmdieXRlX3Q7Cj4gPgo+ID4gIC8qIFJldHVybnM6IG1m biBmb3IgdGhlIGdpdmVuIChodm0gZ3Vlc3QpIHZhZGRyICovCj4gPiAgc3RhdGljIG1mbl90Cj4g Pi1kYmdfaHZtX3ZhMm1mbihkYmd2YV90IHZhZGRyLCBzdHJ1Y3QgZG9tYWluICpkcCwgaW50IHRv YWRkciwKPiA+LSAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpnZm4pCj4gPitkYmdfaHZt X3ZhMm1mbihkYmd2YV90IHZhZGRyLCBzdHJ1Y3QgZG9tYWluICpkcCwgaW50IHRvYWRkciwgZ2Zu X3QgKmdmbikKPiA+ICB7Cj4gPiAgICAgIG1mbl90IG1mbjsKPiA+ICAgICAgdWludDMyX3QgcGZl YyA9IFBGRUNfcGFnZV9wcmVzZW50Owo+ID5AQCAtNTMsMTQgKzUyLDE0IEBAIGRiZ19odm1fdmEy bWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVjdCBkb21haW4gKmRwLCBpbnQgdG9hZGRyLAo+ID4KPiA+ ICAgICAgREJHUDIoInZhZGRyOiVseCBkb21pZDolZFxuIiwgdmFkZHIsIGRwLT5kb21haW5faWQp Owo+ID4KPiA+LSAgICAqZ2ZuID0gcGFnaW5nX2d2YV90b19nZm4oZHAtPnZjcHVbMF0sIHZhZGRy LCAmcGZlYyk7Cj4gPi0gICAgaWYgKCAqZ2ZuID09IElOVkFMSURfR0ZOICkKPiA+KyAgICAqZ2Zu ID0gX2dmbihwYWdpbmdfZ3ZhX3RvX2dmbihkcC0+dmNwdVswXSwgdmFkZHIsICZwZmVjKSk7Cj4g PisgICAgaWYgKCBnZm5fZXEoKmdmbiwgSU5WQUxJRF9HRk4pICkKPiA+ICAgICAgewo+ID4gICAg ICAgICAgREJHUDIoImtkYjpiYWQgZ2ZuIGZyb20gZ3ZhX3RvX2dmblxuIik7Cj4gPiAgICAgICAg ICByZXR1cm4gSU5WQUxJRF9NRk47Cj4gPiAgICAgIH0KPiA+Cj4gPi0gICAgbWZuID0gZ2V0X2dm bihkcCwgKmdmbiwgJmdmbnR5cGUpOwo+ID4rICAgIG1mbiA9IGdldF9nZm4oZHAsIGdmbl94KCpn Zm4pLCAmZ2ZudHlwZSk7Cj4gPiAgICAgIGlmICggcDJtX2lzX3JlYWRvbmx5KGdmbnR5cGUpICYm IHRvYWRkciApCj4gPiAgICAgIHsKPiA+ICAgICAgICAgIERCR1AyKCJrZGI6cDJtX2lzX3JlYWRv bmx5OiBnZm50eXBlOiV4XG4iLCBnZm50eXBlKTsKPiA+QEAgLTcyLDcgKzcxLDcgQEAgZGJnX2h2 bV92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIGludCB0b2FkZHIsCj4g Pgo+ID4gICAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCj4gPiAgICAgIHsKPiA+ LSAgICAgICAgcHV0X2dmbihkcCwgKmdmbik7Cj4gPisgICAgICAgIHB1dF9nZm4oZHAsIGdmbl94 KCpnZm4pKTsKPiA+ICAgICAgICAgICpnZm4gPSBJTlZBTElEX0dGTjsKPiA+ICAgICAgfQo+ID4K PiA+QEAgLTE2NSw3ICsxNjQsOCBAQCB1bnNpZ25lZCBpbnQgZGJnX3J3X2d1ZXN0X21lbShzdHJ1 Y3QgZG9tYWluICpkcCwgdm9pZCAqIF9fdXNlciBnYWRkciwKPiA+ICAgICAgICAgIGNoYXIgKnZh Owo+ID4gICAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyID0gKHVuc2lnbmVkIGxvbmcpZ2FkZHI7 Cj4gPiAgICAgICAgICBtZm5fdCBtZm47Cj4gPi0gICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuID0g SU5WQUxJRF9HRk4sIHBhZ2VjbnQ7Cj4gPisgICAgICAgIGdmbl90IGdmbiA9IElOVkFMSURfR0ZO Owo+ID4rICAgICAgICB1bnNpZ25lZCBsb25nIHBhZ2VjbnQ7Cj4gPgo+ID4gICAgICAgICAgcGFn ZWNudCA9IG1pbl90KGxvbmcsIFBBR0VfU0laRSAtIChhZGRyICYgflBBR0VfTUFTSyksIGxlbik7 Cj4gPgo+ID5AQCAtMTg5LDggKzE4OSw4IEBAIHVuc2lnbmVkIGludCBkYmdfcndfZ3Vlc3RfbWVt KHN0cnVjdCBkb21haW4gKmRwLCB2b2lkICogX191c2VyIGdhZGRyLAo+ID4gICAgICAgICAgfQo+ ID4KPiA+ICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKHZhKTsKPiA+LSAgICAgICAgaWYgKCBn Zm4gIT0gSU5WQUxJRF9HRk4gKQo+ID4tICAgICAgICAgICAgcHV0X2dmbihkcCwgZ2ZuKTsKPiA+ KyAgICAgICAgaWYgKCAhZ2ZuX2VxKGdmbiwgSU5WQUxJRF9HRk4pICkKPiA+KyAgICAgICAgICAg IHB1dF9nZm4oZHAsIGdmbl94KGdmbikpOwo+ID4KPiA+ICAgICAgICAgIGFkZHIgKz0gcGFnZWNu dDsKPiA+ICAgICAgICAgIGJ1ZiArPSBwYWdlY250Owo+ID5kaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCj4gPmluZGV4IGJiNTkyNDcuLmM4 YzdlMmQgMTAwNjQ0Cj4gPi0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYwo+ID4rKysgYi94ZW4v YXJjaC94ODYvZG9tYWluLmMKPiA+QEAgLTc4Myw3ICs3ODMsNyBAQCBpbnQgYXJjaF9kb21haW5f c29mdF9yZXNldChzdHJ1Y3QgZG9tYWluICpkKQo+ID4gICAgICAgKiBnZm4gPT0gSU5WQUxJRF9H Rk4gaW5kaWNhdGVzIHRoYXQgdGhlIHNoYXJlZF9pbmZvIHBhZ2Ugd2FzIG5ldmVyIG1hcHBlZAo+ ID4gICAgICAgKiB0byB0aGUgZG9tYWluJ3MgYWRkcmVzcyBzcGFjZSBhbmQgdGhlcmUgaXMgbm90 aGluZyB0byByZXBsYWNlLgo+ID4gICAgICAgKi8KPiA+LSAgICBpZiAoIGdmbiA9PSBJTlZBTElE X0dGTiApCj4gPisgICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKPiA+ICAgICAg ICAgIGdvdG8gZXhpdF9wdXRfcGFnZTsKPiA+Cj4gPiAgICAgIGlmICggbWZuX3goZ2V0X2dmbl9x dWVyeShkLCBnZm4sICZwMm10KSkgIT0gbWZuICkKPiA+ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9odm0vZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKPiA+aW5kZXggODU1 YWY0ZC4uYzU1YWQ3YiAxMDA2NDQKPiA+LS0tIGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMK PiA+KysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKPiA+QEAgLTQ1NSw3ICs0NTUsNyBA QCBzdGF0aWMgaW50IGh2bWVtdWxfbGluZWFyX3RvX3BoeXMoCj4gPiAgICAgICAgICAgICAgcmV0 dXJuIHJjOwo+ID4gICAgICAgICAgcGZuID0gX3BhZGRyID4+IFBBR0VfU0hJRlQ7Cj4gPiAgICAg IH0KPiA+LSAgICBlbHNlIGlmICggKHBmbiA9IHBhZ2luZ19ndmFfdG9fZ2ZuKGN1cnIsIGFkZHIs ICZwZmVjKSkgPT0gSU5WQUxJRF9HRk4gKQo+ID4rICAgIGVsc2UgaWYgKCAocGZuID0gcGFnaW5n X2d2YV90b19nZm4oY3VyciwgYWRkciwgJnBmZWMpKSA9PSBnZm5feChJTlZBTElEX0dGTikgKQo+ ID4gICAgICB7Cj4gPiAgICAgICAgICBpZiAoIHBmZWMgJiAoUEZFQ19wYWdlX3BhZ2VkIHwgUEZF Q19wYWdlX3NoYXJlZCkgKQo+ID4gICAgICAgICAgICAgIHJldHVybiBYODZFTVVMX1JFVFJZOwo+ ID5AQCAtNDcyLDcgKzQ3Miw4IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9saW5lYXJfdG9fcGh5cygK PiA+ICAgICAgICAgIG5wZm4gPSBwYWdpbmdfZ3ZhX3RvX2dmbihjdXJyLCBhZGRyLCAmcGZlYyk7 Cj4gPgo+ID4gICAgICAgICAgLyogSXMgaXQgY29udGlndW91cyB3aXRoIHRoZSBwcmVjZWRpbmcg UEZOcz8gSWYgbm90IHRoZW4gd2UncmUgZG9uZS4gKi8KPiA+LSAgICAgICAgaWYgKCAobnBmbiA9 PSBJTlZBTElEX0dGTikgfHwgKG5wZm4gIT0gKHBmbiArIChyZXZlcnNlID8gLWkgOiBpKSkpICkK PiA+KyAgICAgICAgaWYgKCAobnBmbiA9PSBnZm5feChJTlZBTElEX0dGTikpIHx8Cj4gPisgICAg ICAgICAgICAgKG5wZm4gIT0gKHBmbiArIChyZXZlcnNlID8gLWkgOiBpKSkpICkKPiA+ICAgICAg ICAgIHsKPiA+ICAgICAgICAgICAgICBpZiAoIHBmZWMgJiAoUEZFQ19wYWdlX3BhZ2VkIHwgUEZF Q19wYWdlX3NoYXJlZCkgKQo+ID4gICAgICAgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9SRVRS WTsKPiA+QEAgLTQ4MCw3ICs0ODEsNyBAQCBzdGF0aWMgaW50IGh2bWVtdWxfbGluZWFyX3RvX3Bo eXMoCj4gPiAgICAgICAgICAgICAgaWYgKCBkb25lID09IDAgKQo+ID4gICAgICAgICAgICAgIHsK PiA+ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFyZXZlcnNlKTsKPiA+LSAgICAgICAgICAgICAg ICBpZiAoIG5wZm4gIT0gSU5WQUxJRF9HRk4gKQo+ID4rICAgICAgICAgICAgICAgIGlmICggbnBm biAhPSBnZm5feChJTlZBTElEX0dGTikgKQo+ID4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IFg4NkVNVUxfVU5IQU5ETEVBQkxFOwo+ID4gICAgICAgICAgICAgICAgICBodm1faW5qZWN0X3Bh Z2VfZmF1bHQocGZlYywgYWRkciAmIFBBR0VfTUFTSyk7Cj4gPiAgICAgICAgICAgICAgICAgIHJl dHVybiBYODZFTVVMX0VYQ0VQVElPTjsKPiA+ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0v aHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCj4gPmluZGV4IGYzZmFmMmUuLmJiMzlkNWYg MTAwNjQ0Cj4gPi0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKPiA+KysrIGIveGVuL2FyY2gv eDg2L2h2bS9odm0uYwo+ID5AQCAtMzAzOSw3ICszMDM5LDcgQEAgc3RhdGljIGVudW0gaHZtX2Nv cHlfcmVzdWx0IF9faHZtX2NvcHkoCj4gPiAgICAgICAgICBpZiAoIGZsYWdzICYgSFZNQ09QWV92 aXJ0ICkKPiA+ICAgICAgICAgIHsKPiA+ICAgICAgICAgICAgICBnZm4gPSBwYWdpbmdfZ3ZhX3Rv X2dmbihjdXJyLCBhZGRyLCAmcGZlYyk7Cj4gPi0gICAgICAgICAgICBpZiAoIGdmbiA9PSBJTlZB TElEX0dGTiApCj4gPisgICAgICAgICAgICBpZiAoIGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikg KQo+ID4gICAgICAgICAgICAgIHsKPiA+ICAgICAgICAgICAgICAgICAgaWYgKCBwZmVjICYgUEZF Q19wYWdlX3BhZ2VkICkKPiA+ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBIVk1DT1BZX2dm bl9wYWdlZF9vdXQ7Cj4gPkBAIC0zMTU0LDcgKzMxNTQsNyBAQCBzdGF0aWMgZW51bSBodm1fY29w eV9yZXN1bHQgX19odm1fY2xlYXIocGFkZHJfdCBhZGRyLCBpbnQgc2l6ZSkKPiA+ICAgICAgICAg IGNvdW50ID0gbWluX3QoaW50LCBQQUdFX1NJWkUgLSAoYWRkciAmIH5QQUdFX01BU0spLCB0b2Rv KTsKPiA+Cj4gPiAgICAgICAgICBnZm4gPSBwYWdpbmdfZ3ZhX3RvX2dmbihjdXJyLCBhZGRyLCAm cGZlYyk7Cj4gPi0gICAgICAgIGlmICggZ2ZuID09IElOVkFMSURfR0ZOICkKPiA+KyAgICAgICAg aWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKPiA+ICAgICAgICAgIHsKPiA+ICAgICAg ICAgICAgICBpZiAoIHBmZWMgJiBQRkVDX3BhZ2VfcGFnZWQgKQo+ID4gICAgICAgICAgICAgICAg ICByZXR1cm4gSFZNQ09QWV9nZm5fcGFnZWRfb3V0Owo+ID5AQCAtNTI5OCw3ICs1Mjk4LDcgQEAg c3RhdGljIGludCBkb19hbHRwMm1fb3AoCj4gPiAgICAgICAgICAgICAgIGEudS5lbmFibGVfbm90 aWZ5LnZjcHVfaWQgIT0gY3Vyci0+dmNwdV9pZCApCj4gPiAgICAgICAgICAgICAgcmMgPSAtRUlO VkFMOwo+ID4KPiA+LSAgICAgICAgaWYgKCAoZ2ZuX3godmNwdV9hbHRwMm0oY3VycikudmVpbmZv X2dmbikgIT0gSU5WQUxJRF9HRk4pIHx8Cj4gPisgICAgICAgIGlmICggIWdmbl9lcSh2Y3B1X2Fs dHAybShjdXJyKS52ZWluZm9fZ2ZuLCBJTlZBTElEX0dGTikgfHwKPiA+ICAgICAgICAgICAgICAg bWZuX2VxKGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoY3Vyci0+ZG9tYWluLAo+ID4gICAgICAgICAg ICAgICAgICAgICAgYS51LmVuYWJsZV9ub3RpZnkuZ2ZuLCAmcDJtdCksIElOVkFMSURfTUZOKSAp Cj4gPiAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvaHZtL2lvcmVxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKPiA+aW5kZXggNzE0 OGFjNC4uZDIyNDVlMiAxMDA2NDQKPiA+LS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCj4g PisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwo+ID5AQCAtMjA0LDcgKzIwNCw3IEBAIHN0 YXRpYyB2b2lkIGh2bV9mcmVlX2lvcmVxX2dtZm4oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg bG9uZyBnbWZuKQo+ID4gIHsKPiA+ICAgICAgdW5zaWduZWQgaW50IGkgPSBnbWZuIC0gZC0+YXJj aC5odm1fZG9tYWluLmlvcmVxX2dtZm4uYmFzZTsKPiA+Cj4gPi0gICAgaWYgKCBnbWZuICE9IElO VkFMSURfR0ZOICkKPiA+KyAgICBpZiAoIGdtZm4gIT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKPiA+ ICAgICAgICAgIHNldF9iaXQoaSwgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9nbWZuLm1hc2sp Owo+ID4gIH0KPiA+Cj4gPkBAIC00MjAsNyArNDIwLDcgQEAgc3RhdGljIGludCBodm1faW9yZXFf c2VydmVyX21hcF9wYWdlcyhzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcywKPiA+ICAgICAgaWYg KCByYyApCj4gPiAgICAgICAgICByZXR1cm4gcmM7Cj4gPgo+ID4tICAgIGlmICggYnVmaW9yZXFf cGZuICE9IElOVkFMSURfR0ZOICkKPiA+KyAgICBpZiAoIGJ1ZmlvcmVxX3BmbiAhPSBnZm5feChJ TlZBTElEX0dGTikgKQo+ID4gICAgICAgICAgcmMgPSBodm1fbWFwX2lvcmVxX3BhZ2UocywgMSwg YnVmaW9yZXFfcGZuKTsKPiA+Cj4gPiAgICAgIGlmICggcmMgKQo+ID5AQCAtNDM0LDggKzQzNCw4 IEBAIHN0YXRpYyBpbnQgaHZtX2lvcmVxX3NlcnZlcl9zZXR1cF9wYWdlcyhzdHJ1Y3QgaHZtX2lv cmVxX3NlcnZlciAqcywKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYm9vbF90IGhhbmRsZV9idWZpb3JlcSkKPiA+ICB7Cj4gPiAgICAgIHN0cnVjdCBkb21haW4g KmQgPSBzLT5kb21haW47Cj4gPi0gICAgdW5zaWduZWQgbG9uZyBpb3JlcV9wZm4gPSBJTlZBTElE X0dGTjsKPiA+LSAgICB1bnNpZ25lZCBsb25nIGJ1ZmlvcmVxX3BmbiA9IElOVkFMSURfR0ZOOwo+ ID4rICAgIHVuc2lnbmVkIGxvbmcgaW9yZXFfcGZuID0gZ2ZuX3goSU5WQUxJRF9HRk4pOwo+ID4r ICAgIHVuc2lnbmVkIGxvbmcgYnVmaW9yZXFfcGZuID0gZ2ZuX3goSU5WQUxJRF9HRk4pOwo+ID4g ICAgICBpbnQgcmM7Cj4gPgo+ID4gICAgICBpZiAoIGlzX2RlZmF1bHQgKQo+ID5kaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vbmVzdGVkc3ZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL3N2 bS9uZXN0ZWRzdm0uYwo+ID5pbmRleCA5ZDJhYzA5Li5mOWIzOGFiIDEwMDY0NAo+ID4tLS0gYS94 ZW4vYXJjaC94ODYvaHZtL3N2bS9uZXN0ZWRzdm0uYwo+ID4rKysgYi94ZW4vYXJjaC94ODYvaHZt L3N2bS9uZXN0ZWRzdm0uYwo+ID5AQCAtMTIwMCw3ICsxMjAwLDcgQEAgbnN2bV9oYXBfd2Fsa19M MV9wMm0oc3RydWN0IHZjcHUgKnYsIHBhZGRyX3QgTDJfZ3BhLCBwYWRkcl90ICpMMV9ncGEsCj4g PiAgICAgIC8qIFdhbGsgdGhlIGd1ZXN0LXN1cHBsaWVkIE5QVCB0YWJsZSwganVzdCBhcyBpZiBp dCB3ZXJlIGEgcGFnZXRhYmxlICovCj4gPiAgICAgIGdmbiA9IHBhZ2luZ19nYV90b19nZm5fY3Iz KHYsIG5lc3RlZF9jcjMsIEwyX2dwYSwgJnBmZWMsIHBhZ2Vfb3JkZXIpOwo+ID4KPiA+LSAgICBp ZiAoIGdmbiA9PSBJTlZBTElEX0dGTiApCj4gPisgICAgaWYgKCBnZm4gPT0gZ2ZuX3goSU5WQUxJ RF9HRk4pICkKPiA+ICAgICAgICAgIHJldHVybiBORVNURURIVk1fUEFHRUZBVUxUX0lOSkVDVDsK PiA+Cj4gPiAgICAgICpMMV9ncGEgPSAoZ2ZuIDw8IFBBR0VfU0hJRlQpICsgKEwyX2dwYSAmIH5Q QUdFX01BU0spOwo+ID5kaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgYi94 ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwo+ID5pbmRleCBhMDYxNDIwLi4wODhmNDU0IDEwMDY0 NAo+ID4tLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwo+ID4rKysgYi94ZW4vYXJjaC94 ODYvaHZtL3ZteC92bXguYwo+ID5AQCAtMjA1NywxMyArMjA1NywxMyBAQCBzdGF0aWMgaW50IHZt eF92Y3B1X2VtdWxhdGVfdm1mdW5jKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ID4gIHN0 YXRpYyBib29sX3Qgdm14X3ZjcHVfZW11bGF0ZV92ZShzdHJ1Y3QgdmNwdSAqdikKPiA+ICB7Cj4g PiAgICAgIGJvb2xfdCByYyA9IDAsIHdyaXRhYmxlOwo+ID4tICAgIHVuc2lnbmVkIGxvbmcgZ2Zu ID0gZ2ZuX3godmNwdV9hbHRwMm0odikudmVpbmZvX2dmbik7Cj4gPisgICAgZ2ZuX3QgZ2ZuID0g dmNwdV9hbHRwMm0odikudmVpbmZvX2dmbjsKPiA+ICAgICAgdmVfaW5mb190ICp2ZWluZm87Cj4g Pgo+ID4tICAgIGlmICggZ2ZuID09IElOVkFMSURfR0ZOICkKPiA+KyAgICBpZiAoIGdmbl9lcShn Zm4sIElOVkFMSURfR0ZOKSApCj4gPiAgICAgICAgICByZXR1cm4gMDsKPiA+Cj4gPi0gICAgdmVp bmZvID0gaHZtX21hcF9ndWVzdF9mcmFtZV9ydyhnZm4sIDAsICZ3cml0YWJsZSk7Cj4gPisgICAg dmVpbmZvID0gaHZtX21hcF9ndWVzdF9mcmFtZV9ydyhnZm5feChnZm4pLCAwLCAmd3JpdGFibGUp Owo+ID4gICAgICBpZiAoICF2ZWluZm8gKQo+ID4gICAgICAgICAgcmV0dXJuIDA7Cj4gPiAgICAg IGlmICggIXdyaXRhYmxlIHx8IHZlaW5mby0+c2VtYXBob3JlICE9IDAgKQo+ID5kaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L21tL2FsdHAybS5jIGIveGVuL2FyY2gveDg2L21tL2FsdHAybS5jCj4g PmluZGV4IDEwNjA1YzguLjkzMGJkYzIgMTAwNjQ0Cj4gPi0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9h bHRwMm0uYwo+ID4rKysgYi94ZW4vYXJjaC94ODYvbW0vYWx0cDJtLmMKPiA+QEAgLTI2LDcgKzI2 LDcgQEAgYWx0cDJtX3ZjcHVfcmVzZXQoc3RydWN0IHZjcHUgKnYpCj4gPiAgICAgIHN0cnVjdCBh bHRwMm12Y3B1ICphdiA9ICZ2Y3B1X2FsdHAybSh2KTsKPiA+Cj4gPiAgICAgIGF2LT5wMm1pZHgg PSBJTlZBTElEX0FMVFAyTTsKPiA+LSAgICBhdi0+dmVpbmZvX2dmbiA9IF9nZm4oSU5WQUxJRF9H Rk4pOwo+ID4rICAgIGF2LT52ZWluZm9fZ2ZuID0gSU5WQUxJRF9HRk47Cj4gPiAgfQo+ID4KPiA+ ICB2b2lkCj4gPmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vaGFwL2d1ZXN0X3dhbGsuYyBi L3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jCj4gPmluZGV4IGQyNzE2ZjkuLjFiMWEx NWQgMTAwNjQ0Cj4gPi0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jCj4gPisr KyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvZ3Vlc3Rfd2Fsay5jCj4gPkBAIC03MCwxNCArNzAsMTQg QEAgdW5zaWduZWQgbG9uZyBoYXBfcDJtX2dhX3RvX2dmbihHVUVTVF9QQUdJTkdfTEVWRUxTKSgK PiA+ICAgICAgICAgIGlmICggdG9wX3BhZ2UgKQo+ID4gICAgICAgICAgICAgIHB1dF9wYWdlKHRv cF9wYWdlKTsKPiA+ICAgICAgICAgIHAybV9tZW1fcGFnaW5nX3BvcHVsYXRlKHAybS0+ZG9tYWlu LCBjcjMgPj4gUEFHRV9TSElGVCk7Cj4gPi0gICAgICAgIHJldHVybiBJTlZBTElEX0dGTjsKPiA+ KyAgICAgICAgcmV0dXJuIGdmbl94KElOVkFMSURfR0ZOKTsKPiA+ICAgICAgfQo+ID4gICAgICBp ZiAoIHAybV9pc19zaGFyZWQocDJtdCkgKQo+ID4gICAgICB7Cj4gPiAgICAgICAgICBwZmVjWzBd ID0gUEZFQ19wYWdlX3NoYXJlZDsKPiA+ICAgICAgICAgIGlmICggdG9wX3BhZ2UgKQo+ID4gICAg ICAgICAgICAgIHB1dF9wYWdlKHRvcF9wYWdlKTsKPiA+LSAgICAgICAgcmV0dXJuIElOVkFMSURf R0ZOOwo+ID4rICAgICAgICByZXR1cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwo+ID4gICAgICB9Cj4g PiAgICAgIGlmICggIXRvcF9wYWdlICkKPiA+ICAgICAgewo+ID5AQCAtMTEwLDEyICsxMTAsMTIg QEAgdW5zaWduZWQgbG9uZyBoYXBfcDJtX2dhX3RvX2dmbihHVUVTVF9QQUdJTkdfTEVWRUxTKSgK PiA+ICAgICAgICAgICAgICBBU1NFUlQocDJtX2lzX2hvc3RwMm0ocDJtKSk7Cj4gPiAgICAgICAg ICAgICAgcGZlY1swXSA9IFBGRUNfcGFnZV9wYWdlZDsKPiA+ICAgICAgICAgICAgICBwMm1fbWVt X3BhZ2luZ19wb3B1bGF0ZShwMm0tPmRvbWFpbiwgZ2ZuX3goZ2ZuKSk7Cj4gPi0gICAgICAgICAg ICByZXR1cm4gSU5WQUxJRF9HRk47Cj4gPisgICAgICAgICAgICByZXR1cm4gZ2ZuX3goSU5WQUxJ RF9HRk4pOwo+ID4gICAgICAgICAgfQo+ID4gICAgICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKHAy bXQpICkKPiA+ICAgICAgICAgIHsKPiA+ICAgICAgICAgICAgICBwZmVjWzBdID0gUEZFQ19wYWdl X3NoYXJlZDsKPiA+LSAgICAgICAgICAgIHJldHVybiBJTlZBTElEX0dGTjsKPiA+KyAgICAgICAg ICAgIHJldHVybiBnZm5feChJTlZBTElEX0dGTik7Cj4gPiAgICAgICAgICB9Cj4gPgo+ID4gICAg ICAgICAgaWYgKCBwYWdlX29yZGVyICkKPiA+QEAgLTE0Nyw3ICsxNDcsNyBAQCB1bnNpZ25lZCBs b25nIGhhcF9wMm1fZ2FfdG9fZ2ZuKEdVRVNUX1BBR0lOR19MRVZFTFMpKAo+ID4gICAgICBpZiAo ICFodm1fbnhfZW5hYmxlZCh2KSAmJiAhaHZtX3NtZXBfZW5hYmxlZCh2KSApCj4gPiAgICAgICAg ICBwZmVjWzBdICY9IH5QRkVDX2luc25fZmV0Y2g7Cj4gPgo+ID4tICAgIHJldHVybiBJTlZBTElE X0dGTjsKPiA+KyAgICByZXR1cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwo+ID4gIH0KPiA+Cj4gPgo+ ID5kaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfZXB0LmMgYi94ZW4vYXJj aC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYwo+ID5pbmRleCA5NGNmODMyLi4wMmIyN2IxIDEwMDY0 NAo+ID4tLS0gYS94ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYwo+ID4rKysgYi94ZW4v YXJjaC94ODYvbW0vaGFwL25lc3RlZF9lcHQuYwo+ID5AQCAtMjM2LDcgKzIzNiw3IEBAIGludCBu ZXB0X3RyYW5zbGF0ZV9sMmdhKHN0cnVjdCB2Y3B1ICp2LCBwYWRkcl90IGwyZ2EsCj4gPiAgICAg IGVwdF93YWxrX3QgZ3c7Cj4gPiAgICAgIHJ3eF9hY2MgJj0gRVBURV9SV1hfTUFTSzsKPiA+Cj4g Pi0gICAgKmwxZ2ZuID0gSU5WQUxJRF9HRk47Cj4gPisgICAgKmwxZ2ZuID0gZ2ZuX3goSU5WQUxJ RF9HRk4pOwo+ID4KPiA+ICAgICAgcmMgPSBuZXB0X3dhbGtfdGFibGVzKHYsIGwyZ2EsICZndyk7 Cj4gPiAgICAgIHN3aXRjaCAoIHJjICkKPiA+ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9w Mm0tcG9kLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCj4gPmluZGV4IGYzODQ1ODkuLjE0 OWY1MjkgMTAwNjQ0Cj4gPi0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKPiA+KysrIGIv eGVuL2FyY2gveDg2L21tL3AybS1wb2QuYwo+ID5AQCAtMTAwMyw3ICsxMDAzLDcgQEAgc3RhdGlj IHZvaWQgcG9kX2VhZ2VyX3JlY2xhaW0oc3RydWN0IHAybV9kb21haW4gKnAybSkKPiA+ICAgICAg ICAgIHVuc2lnbmVkIGludCBpZHggPSAobXJwLT5pZHggKyBpKyspICUgQVJSQVlfU0laRShtcnAt Pmxpc3QpOwo+ID4gICAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBtcnAtPmxpc3RbaWR4XTsK PiA+Cj4gPi0gICAgICAgIGlmICggZ2ZuICE9IElOVkFMSURfR0ZOICkKPiA+KyAgICAgICAgaWYg KCBnZm4gIT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKPiA+ICAgICAgICAgIHsKPiA+ICAgICAgICAg ICAgICBpZiAoIGdmbiAmIFBPRF9MQVNUX1NVUEVSUEFHRSApCj4gPiAgICAgICAgICAgICAgewo+ ID5AQCAtMTAyMCw3ICsxMDIwLDcgQEAgc3RhdGljIHZvaWQgcG9kX2VhZ2VyX3JlY2xhaW0oc3Ry dWN0IHAybV9kb21haW4gKnAybSkKPiA+ICAgICAgICAgICAgICBlbHNlCj4gPiAgICAgICAgICAg ICAgICAgIHAybV9wb2RfemVyb19jaGVjayhwMm0sICZnZm4sIDEpOwo+ID4KPiA+LSAgICAgICAg ICAgIG1ycC0+bGlzdFtpZHhdID0gSU5WQUxJRF9HRk47Cj4gPisgICAgICAgICAgICBtcnAtPmxp c3RbaWR4XSA9IGdmbl94KElOVkFMSURfR0ZOKTsKPiA+ICAgICAgICAgIH0KPiA+Cj4gPiAgICAg IH0gd2hpbGUgKCAocDJtLT5wb2QuY291bnQgPT0gMCkgJiYgKGkgPCBBUlJBWV9TSVpFKG1ycC0+ bGlzdCkpICk7Cj4gPkBAIC0xMDMxLDcgKzEwMzEsNyBAQCBzdGF0aWMgdm9pZCBwb2RfZWFnZXJf cmVjb3JkKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCj4gPiAgewo+ID4gICAgICBzdHJ1Y3QgcG9k X21ycF9saXN0ICptcnAgPSAmcDJtLT5wb2QubXJwOwo+ID4KPiA+LSAgICBBU1NFUlQoZ2ZuICE9 IElOVkFMSURfR0ZOKTsKPiA+KyAgICBBU1NFUlQoZ2ZuICE9IGdmbl94KElOVkFMSURfR0ZOKSk7 Cj4gPgo+ID4gICAgICBtcnAtPmxpc3RbbXJwLT5pZHgrK10gPQo+ID4gICAgICAgICAgZ2ZuIHwg KG9yZGVyID09IFBBR0VfT1JERVJfMk0gPyBQT0RfTEFTVF9TVVBFUlBBR0UgOiAwKTsKPiA+ZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+ ID5pbmRleCBiOTNjOGEyLi5mZjBjY2U4IDEwMDY0NAo+ID4tLS0gYS94ZW4vYXJjaC94ODYvbW0v cDJtLmMKPiA+KysrIGIveGVuL2FyY2gveDg2L21tL3AybS5jCj4gPkBAIC03Niw3ICs3Niw3IEBA IHN0YXRpYyBpbnQgcDJtX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHAybV9k b21haW4gKnAybSkKPiA+ICAgICAgcDJtLT5ucDJtX2Jhc2UgPSBQMk1fQkFTRV9FQUREUjsKPiA+ Cj4gPiAgICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0laRShwMm0tPnBvZC5tcnAubGlzdCk7 ICsraSApCj4gPi0gICAgICAgIHAybS0+cG9kLm1ycC5saXN0W2ldID0gSU5WQUxJRF9HRk47Cj4g PisgICAgICAgIHAybS0+cG9kLm1ycC5saXN0W2ldID0gZ2ZuX3goSU5WQUxJRF9HRk4pOwo+ID4K PiA+ICAgICAgaWYgKCBoYXBfZW5hYmxlZChkKSAmJiBjcHVfaGFzX3ZteCApCj4gPiAgICAgICAg ICByZXQgPSBlcHRfcDJtX2luaXQocDJtKTsKPiA+QEAgLTE4NjMsNyArMTg2Myw3IEBAIGxvbmcg cDJtX3NldF9tZW1fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgdWludDMyX3Qg bnIsCj4gPiAgICAgIH0KPiA+Cj4gPiAgICAgIC8qIElmIHJlcXVlc3QgdG8gc2V0IGRlZmF1bHQg YWNjZXNzLiAqLwo+ID4tICAgIGlmICggZ2ZuX3goZ2ZuKSA9PSBJTlZBTElEX0dGTiApCj4gPisg ICAgaWYgKCBnZm5fZXEoZ2ZuLCBJTlZBTElEX0dGTikgKQo+ID4gICAgICB7Cj4gPiAgICAgICAg ICBwMm0tPmRlZmF1bHRfYWNjZXNzID0gYTsKPiA+ICAgICAgICAgIHJldHVybiAwOwo+ID5AQCAt MTkzMiw3ICsxOTMyLDcgQEAgaW50IHAybV9nZXRfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpk LCBnZm5fdCBnZm4sIHhlbm1lbV9hY2Nlc3NfdCAqYWNjZXNzKQo+ID4gICAgICB9Owo+ID4KPiA+ ICAgICAgLyogSWYgcmVxdWVzdCB0byBnZXQgZGVmYXVsdCBhY2Nlc3MuICovCj4gPi0gICAgaWYg KCBnZm5feChnZm4pID09IElOVkFMSURfR0ZOICkKPiA+KyAgICBpZiAoIGdmbl9lcShnZm4sIElO VkFMSURfR0ZOKSApCj4gPiAgICAgIHsKPiA+ICAgICAgICAgICphY2Nlc3MgPSBtZW1hY2Nlc3Nb cDJtLT5kZWZhdWx0X2FjY2Vzc107Cj4gPiAgICAgICAgICByZXR1cm4gMDsKPiA+QEAgLTIxMTMs OCArMjExMyw4IEBAIHVuc2lnbmVkIGxvbmcgcGFnaW5nX2d2YV90b19nZm4oc3RydWN0IHZjcHUg KnYsCj4gPiAgICAgICAgICBtb2RlID0gcGFnaW5nX2dldF9uZXN0ZWRtb2RlKHYpOwo+ID4gICAg ICAgICAgbDJfZ2ZuID0gbW9kZS0+Z3ZhX3RvX2dmbih2LCBwMm0sIHZhLCBwZmVjKTsKPiA+Cj4g Pi0gICAgICAgIGlmICggbDJfZ2ZuID09IElOVkFMSURfR0ZOICkKPiA+LSAgICAgICAgICAgIHJl dHVybiBJTlZBTElEX0dGTjsKPiA+KyAgICAgICAgaWYgKCBsMl9nZm4gPT0gZ2ZuX3goSU5WQUxJ RF9HRk4pICkKPiA+KyAgICAgICAgICAgIHJldHVybiBnZm5feChJTlZBTElEX0dGTik7Cj4gPgo+ ID4gICAgICAgICAgLyogdHJhbnNsYXRlIGwyIGd1ZXN0IGdmbiBpbnRvIGwxIGd1ZXN0IGdmbiAq Lwo+ID4gICAgICAgICAgcnYgPSBuZXN0ZWRoYXBfd2Fsa19MMV9wMm0odiwgbDJfZ2ZuLCAmbDFf Z2ZuLCAmbDFfcGFnZV9vcmRlciwgJmwxX3AybWEsCj4gPkBAIC0yMTIzLDcgKzIxMjMsNyBAQCB1 bnNpZ25lZCBsb25nIHBhZ2luZ19ndmFfdG9fZ2ZuKHN0cnVjdCB2Y3B1ICp2LAo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISEoKnBmZWMgJiBQRkVDX2luc25fZmV0Y2gp KTsKPiA+Cj4gPiAgICAgICAgICBpZiAoIHJ2ICE9IE5FU1RFREhWTV9QQUdFRkFVTFRfRE9ORSAp Cj4gPi0gICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9HRk47Cj4gPisgICAgICAgICAgICByZXR1 cm4gZ2ZuX3goSU5WQUxJRF9HRk4pOwo+ID4KPiA+ICAgICAgICAgIC8qCj4gPiAgICAgICAgICAg KiBTYW5pdHkgY2hlY2sgdGhhdCBsMV9nZm4gY2FuIGJlIHVzZWQgcHJvcGVybHkgYXMgYSA0SyBt YXBwaW5nLCBldmVuCj4gPkBAIC0yNDE1LDcgKzI0MTUsNyBAQCBzdGF0aWMgdm9pZCBwMm1faW5p dF9hbHRwMm1faGVscGVyKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpKQo+ID4gICAg ICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gZC0+YXJjaC5hbHRwMm1fcDJtW2ldOwo+ID4gICAg ICBzdHJ1Y3QgZXB0X2RhdGEgKmVwdDsKPiA+Cj4gPi0gICAgcDJtLT5taW5fcmVtYXBwZWRfZ2Zu ID0gSU5WQUxJRF9HRk47Cj4gPisgICAgcDJtLT5taW5fcmVtYXBwZWRfZ2ZuID0gZ2ZuX3goSU5W QUxJRF9HRk4pOwo+ID4gICAgICBwMm0tPm1heF9yZW1hcHBlZF9nZm4gPSAwOwo+ID4gICAgICBl cHQgPSAmcDJtLT5lcHQ7Cj4gPiAgICAgIGVwdC0+YXNyID0gcGFnZXRhYmxlX2dldF9wZm4ocDJt X2dldF9wYWdldGFibGUocDJtKSk7Cj4gPkBAIC0yNTUxLDcgKzI1NTEsNyBAQCBpbnQgcDJtX2No YW5nZV9hbHRwMm1fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgsCj4gPgo+ ID4gICAgICBtZm4gPSBhcDJtLT5nZXRfZW50cnkoYXAybSwgZ2ZuX3gob2xkX2dmbiksICZ0LCAm YSwgMCwgTlVMTCwgTlVMTCk7Cj4gPgo+ID4tICAgIGlmICggZ2ZuX3gobmV3X2dmbikgPT0gSU5W QUxJRF9HRk4gKQo+ID4rICAgIGlmICggZ2ZuX2VxKG5ld19nZm4sIElOVkFMSURfR0ZOKSApCj4g PiAgICAgIHsKPiA+ICAgICAgICAgIGlmICggbWZuX3ZhbGlkKG1mbikgKQo+ID4gICAgICAgICAg ICAgIHAybV9yZW1vdmVfcGFnZShhcDJtLCBnZm5feChvbGRfZ2ZuKSwgbWZuX3gobWZuKSwgUEFH RV9PUkRFUl80Syk7Cj4gPkBAIC0yNjEzLDcgKzI2MTMsNyBAQCBzdGF0aWMgdm9pZCBwMm1fcmVz ZXRfYWx0cDJtKHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCj4gPiAgICAgIC8qIFVuaW5pdCBhbmQg cmVpbml0IGVwdCB0byBmb3JjZSBUTEIgc2hvb3Rkb3duICovCj4gPiAgICAgIGVwdF9wMm1fdW5p bml0KHAybSk7Cj4gPiAgICAgIGVwdF9wMm1faW5pdChwMm0pOwo+ID4tICAgIHAybS0+bWluX3Jl bWFwcGVkX2dmbiA9IElOVkFMSURfR0ZOOwo+ID4rICAgIHAybS0+bWluX3JlbWFwcGVkX2dmbiA9 IGdmbl94KElOVkFMSURfR0ZOKTsKPiA+ICAgICAgcDJtLT5tYXhfcmVtYXBwZWRfZ2ZuID0gMDsK PiA+ICB9Cj4gPgo+ID5kaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24u YyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKPiA+aW5kZXggMWMwYjZjZC4uNjFj Y2RkZiAxMDA2NDQKPiA+LS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYwo+ID4r KysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCj4gPkBAIC0xNzA3LDcgKzE3MDcs NyBAQCBzdGF0aWMgbWZuX3QgZW11bGF0ZV9ndmFfdG9fbWZuKHN0cnVjdCB2Y3B1ICp2LCB1bnNp Z25lZCBsb25nIHZhZGRyLAo+ID4KPiA+ICAgICAgLyogVHJhbnNsYXRlIHRoZSBWQSB0byBhIEdG Ti4gKi8KPiA+ICAgICAgZ2ZuID0gcGFnaW5nX2dldF9ob3N0bW9kZSh2KS0+Z3ZhX3RvX2dmbih2 LCBOVUxMLCB2YWRkciwgJnBmZWMpOwo+ID4tICAgIGlmICggZ2ZuID09IElOVkFMSURfR0ZOICkK PiA+KyAgICBpZiAoIGdmbiA9PSBnZm5feChJTlZBTElEX0dGTikgKQo+ID4gICAgICB7Cj4gPiAg ICAgICAgICBpZiAoIGlzX2h2bV92Y3B1KHYpICkKPiA+ICAgICAgICAgICAgICBodm1faW5qZWN0 X3BhZ2VfZmF1bHQocGZlYywgdmFkZHIpOwo+ID5kaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21t L3NoYWRvdy9tdWx0aS5jIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCj4gPmluZGV4 IGY4OTJlMmYuLmU1NGM4YjcgMTAwNjQ0Cj4gPi0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cv bXVsdGkuYwo+ID4rKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKPiA+QEAgLTM2 NjAsNyArMzY2MCw3IEBAIHNoX2d2YV90b19nZm4oc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sCj4gPiAgICAgICAgICAgKi8KPiA+ICAgICAgICAgIGlmICggaXNfaHZtX3Zj cHUodikgJiYgIWh2bV9ueF9lbmFibGVkKHYpICYmICFodm1fc21lcF9lbmFibGVkKHYpICkKPiA+ ICAgICAgICAgICAgICBwZmVjWzBdICY9IH5QRkVDX2luc25fZmV0Y2g7Cj4gPi0gICAgICAgIHJl dHVybiBJTlZBTElEX0dGTjsKPiA+KyAgICAgICAgcmV0dXJuIGdmbl94KElOVkFMSURfR0ZOKTsK PiA+ICAgICAgfQo+ID4gICAgICBnZm4gPSBndWVzdF93YWxrX3RvX2dmbigmZ3cpOwo+ID4KPiA+ ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvcHJpdmF0ZS5oIGIveGVuL2FyY2gv eDg2L21tL3NoYWRvdy9wcml2YXRlLmgKPiA+aW5kZXggYzQyNGFkNi4uODI0Nzk2ZiAxMDA2NDQK PiA+LS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKPiA+KysrIGIveGVuL2Fy Y2gveDg2L21tL3NoYWRvdy9wcml2YXRlLmgKPiA+QEAgLTc5Niw3ICs3OTYsNyBAQCBzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGxvbmcgdnRsYl9sb29rdXAoc3RydWN0IHZjcHUgKnYsCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmEsIHVp bnQzMl90IHBmZWMpCj4gPiAgewo+ID4gICAgICB1bnNpZ25lZCBsb25nIHBhZ2VfbnVtYmVyID0g dmEgPj4gUEFHRV9TSElGVDsKPiA+LSAgICB1bnNpZ25lZCBsb25nIGZyYW1lX251bWJlciA9IElO VkFMSURfR0ZOOwo+ID4rICAgIHVuc2lnbmVkIGxvbmcgZnJhbWVfbnVtYmVyID0gZ2ZuX3goSU5W QUxJRF9HRk4pOwo+ID4gICAgICBpbnQgaSA9IHZ0bGJfaGFzaChwYWdlX251bWJlcik7Cj4gPgo+ ID4gICAgICBzcGluX2xvY2soJnYtPmFyY2gucGFnaW5nLnZ0bGJfbG9jayk7Cj4gPmRpZmYgLS1n aXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMgYi94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9hbWQvaW9tbXVfbWFwLmMKPiA+aW5kZXggYzc1ODQ1OS4uYjhjMGE0OCAx MDA2NDQKPiA+LS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X21hcC5jCj4g PisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9tYXAuYwo+ID5AQCAtNTU1 LDcgKzU1NSw3IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3BhZ2luZ19tb2RlKHN0cnVjdCBkb21haW4g KmQsIHVuc2lnbmVkIGxvbmcgZ2ZuKQo+ID4gICAgICB1bnNpZ25lZCBsb25nIG9sZF9yb290X21m bjsKPiA+ICAgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7Cj4gPgo+ ID4tICAgIGlmICggZ2ZuID09IElOVkFMSURfR0ZOICkKPiA+KyAgICBpZiAoIGdmbiA9PSBnZm5f eChJTlZBTElEX0dGTikgKQo+ID4gICAgICAgICAgcmV0dXJuIC1FQUREUk5PVEFWQUlMOwo+ID4g ICAgICBBU1NFUlQoIShnZm4gPj4gREVGQVVMVF9ET01BSU5fQUREUkVTU19XSURUSCkpOwo+ID4K PiA+ZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jIGIveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKPiA+aW5kZXggZjAxMDYxMi4uYzMyMmI5 ZiAxMDA2NDQKPiA+LS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKPiA+ KysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2lvbW11LmMKPiA+QEAgLTYxMSw3ICs2 MTEsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYihzdHJ1Y3Qg ZG9tYWluICpkLAo+ID4gICAgICAgICAgaWYgKCBpb21tdV9kb21pZCA9PSAtMSApCj4gPiAgICAg ICAgICAgICAgY29udGludWU7Cj4gPgo+ID4tICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8 fCBnZm4gPT0gSU5WQUxJRF9HRk4gKQo+ID4rICAgICAgICBpZiAoIHBhZ2VfY291bnQgIT0gMSB8 fCBnZm4gPT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKPiA+ICAgICAgICAgICAgICByYyA9IGlvbW11 X2ZsdXNoX2lvdGxiX2RzaShpb21tdSwgaW9tbXVfZG9taWQsCj4gPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmx1c2hfZGV2X2lvdGxiKTsKPiA+ICAgICAgICAg IGVsc2UKPiA+QEAgLTY0MCw3ICs2NDAsNyBAQCBzdGF0aWMgaW50IF9fbXVzdF9jaGVjayBpb21t dV9mbHVzaF9pb3RsYl9wYWdlcyhzdHJ1Y3QgZG9tYWluICpkLAo+ID4KPiA+ICBzdGF0aWMgaW50 IF9fbXVzdF9jaGVjayBpb21tdV9mbHVzaF9pb3RsYl9hbGwoc3RydWN0IGRvbWFpbiAqZCkKPiA+ ICB7Cj4gPi0gICAgcmV0dXJuIGlvbW11X2ZsdXNoX2lvdGxiKGQsIElOVkFMSURfR0ZOLCAwLCAw KTsKPiA+KyAgICByZXR1cm4gaW9tbXVfZmx1c2hfaW90bGIoZCwgZ2ZuX3goSU5WQUxJRF9HRk4p LCAwLCAwKTsKPiA+ICB9Cj4gPgo+ID4gIC8qIGNsZWFyIG9uZSBwYWdlJ3MgcGFnZSB0YWJsZSAq Lwo+ID5kaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMgYi94 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwo+ID5pbmRleCBjZDQzNWQ3Li42OWNk NmM1IDEwMDY0NAo+ID4tLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwo+ ID4rKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwo+ID5AQCAtNjEsNyAr NjEsNyBAQCBpbnQgYXJjaF9pb21tdV9wb3B1bGF0ZV9wYWdlX3RhYmxlKHN0cnVjdCBkb21haW4g KmQpCj4gPiAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBwYWdlX3RvX21mbihwYWdl KTsKPiA+ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdmbiA9IG1mbl90b19nbWZuKGQsIG1m bik7Cj4gPgo+ID4tICAgICAgICAgICAgaWYgKCBnZm4gIT0gSU5WQUxJRF9HRk4gKQo+ID4rICAg ICAgICAgICAgaWYgKCBnZm4gIT0gZ2ZuX3goSU5WQUxJRF9HRk4pICkKPiA+ICAgICAgICAgICAg ICB7Cj4gPiAgICAgICAgICAgICAgICAgIEFTU0VSVCghKGdmbiA+PiBERUZBVUxUX0RPTUFJTl9B RERSRVNTX1dJRFRIKSk7Cj4gPiAgICAgICAgICAgICAgICAgIEJVR19PTihTSEFSRURfTTJQKGdm bikpOwo+ID5kaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9wdC5oCj4gPmluZGV4IGE4ZDk4MGMuLjc5ZWQ0ZmYgMTAw NjQ0Cj4gPi0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfcHQuaAo+ID4rKysgYi94ZW4v aW5jbHVkZS9hc20teDg2L2d1ZXN0X3B0LmgKPiA+QEAgLTMyLDcgKzMyLDcgQEAKPiA+ICAjZXJy b3IgR1VFU1RfUEFHSU5HX0xFVkVMUyBub3QgZGVmaW5lZAo+ID4gICNlbmRpZgo+ID4KPiA+LSNk ZWZpbmUgVkFMSURfR0ZOKG0pIChtICE9IElOVkFMSURfR0ZOKQo+ID4rI2RlZmluZSBWQUxJRF9H Rk4obSkgKG0gIT0gZ2ZuX3goSU5WQUxJRF9HRk4pKQo+ID4KPiA+ICBzdGF0aWMgaW5saW5lIGlu dAo+ID4gIHZhbGlkX2dmbihnZm5fdCBtKQo+ID5AQCAtMjUxLDcgKzI1MSw3IEBAIHN0YXRpYyBp bmxpbmUgZ2ZuX3QKPiA+ICBndWVzdF93YWxrX3RvX2dmbih3YWxrX3QgKmd3KQo+ID4gIHsKPiA+ ICAgICAgaWYgKCAhKGd1ZXN0X2wxZV9nZXRfZmxhZ3MoZ3ctPmwxZSkgJiBfUEFHRV9QUkVTRU5U KSApCj4gPi0gICAgICAgIHJldHVybiBfZ2ZuKElOVkFMSURfR0ZOKTsKPiA+KyAgICAgICAgcmV0 dXJuIElOVkFMSURfR0ZOOwo+ID4gICAgICByZXR1cm4gZ3Vlc3RfbDFlX2dldF9nZm4oZ3ctPmwx ZSk7Cj4gPiAgfQo+ID4KPiA+ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgg Yi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCj4gPmluZGV4IDRhYjM1NzQuLjE5NDAyMGUgMTAw NjQ0Cj4gPi0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiA+KysrIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9wMm0uaAo+ID5AQCAtMzI0LDcgKzMyNCw3IEBAIHN0cnVjdCBwMm1fZG9tYWlu IHsKPiA+ICAjZGVmaW5lIE5SX1BPRF9NUlBfRU5UUklFUyAzMgo+ID4KPiA+ICAvKiBFbmNvZGUg T1JERVJfMk0gc3VwZXJwYWdlIGluIHRvcCBiaXQgb2YgR0ZOICovCj4gPi0jZGVmaW5lIFBPRF9M QVNUX1NVUEVSUEFHRSAoSU5WQUxJRF9HRk4gJiB+KElOVkFMSURfR0ZOID4+IDEpKQo+ID4rI2Rl ZmluZSBQT0RfTEFTVF9TVVBFUlBBR0UgKGdmbl94KElOVkFMSURfR0ZOKSAmIH4oZ2ZuX3goSU5W QUxJRF9HRk4pID4+IDEpKQo+ID4KPiA+ICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxpc3Rb TlJfUE9EX01SUF9FTlRSSUVTXTsKPiA+ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR4Owo+ ID5kaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL21tLmggYi94ZW4vaW5jbHVkZS94ZW4vbW0u aAo+ID5pbmRleCA3ZjIwN2VjLi41OGJjMGI4IDEwMDY0NAo+ID4tLS0gYS94ZW4vaW5jbHVkZS94 ZW4vbW0uaAo+ID4rKysgYi94ZW4vaW5jbHVkZS94ZW4vbW0uaAo+ID5AQCAtODQsNyArODQsNyBA QCBzdGF0aWMgaW5saW5lIGJvb2xfdCBtZm5fZXEobWZuX3QgeCwgbWZuX3QgeSkKPiA+Cj4gPiAg VFlQRV9TQUZFKHVuc2lnbmVkIGxvbmcsIGdmbik7Cj4gPiAgI2RlZmluZSBQUklfZ2ZuICAgICAg ICAgICIwNWx4Igo+ID4tI2RlZmluZSBJTlZBTElEX0dGTiAgICAgICh+MFVMKQo+ID4rI2RlZmlu ZSBJTlZBTElEX0dGTiAgICAgIF9nZm4ofjBVTCkKPiA+Cj4gPiAgI2lmbmRlZiBnZm5fdAo+ID4g ICNkZWZpbmUgZ2ZuX3QgLyogR3JlcCBmb2RkZXI6IGdmbl90LCBfZ2ZuKCkgYW5kIGdmbl94KCkg YXJlIGRlZmluZWQgYWJvdmUgKi8KPiA+Cj4gCj4gLS0gCj4gSnVsaWVuIEdyYWxsCgpBY2tlZC1i eTogRWxlbmEgVWZpbXRzZXZhIDxlbGVuYS51ZmltdHNldmFAb3JhY2xlLmNvbT4KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1k ZXZlbAo=