From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v5 05/16] livepatch: Initial ARM64 support. Date: Fri, 23 Sep 2016 11:44:15 -0400 Message-ID: <20160923154415.GE25028@char.us.oracle.com> References: <1474479154-20991-1-git-send-email-konrad.wilk@oracle.com> <1474479154-20991-6-git-send-email-konrad.wilk@oracle.com> <57b5aa2b-a485-7fe1-74b3-e97c99c7bfca@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bnSeM-0008FY-Sf for xen-devel@lists.xenproject.org; Fri, 23 Sep 2016 15:44:31 +0000 Content-Disposition: inline In-Reply-To: <57b5aa2b-a485-7fe1-74b3-e97c99c7bfca@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Ross Lagerwall Cc: julien.grall@arm.com, sstabellini@kernel.org, Andrew Cooper , xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org T24gRnJpLCBTZXAgMjMsIDIwMTYgYXQgMDI6Mzg6NTdQTSArMDEwMCwgUm9zcyBMYWdlcndhbGwg d3JvdGU6Cj4gT24gMDkvMjEvMjAxNiAwNjozMiBQTSwgS29ucmFkIFJ6ZXN6dXRlayBXaWxrIHdy b3RlOgo+IHNuaXAKPiA+ICsKPiA+ICt2b2lkIGFyY2hfbGl2ZXBhdGNoX3JldmVydChjb25zdCBz dHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCj4gPiArewo+ID4gKyAgICB1aW50MzJfdCAqbmV3 X3B0cjsKPiA+ICsgICAgdW5zaWduZWQgaW50IGksIGxlbjsKPiA+ICsKPiA+ICsgICAgbmV3X3B0 ciA9IGZ1bmMtPm9sZF9hZGRyIC0gKHZvaWQgKilfc3RhcnQgKyB2bWFwX29mX3hlbl90ZXh0Owo+ ID4gKyAgICBsZW4gPSBsaXZlcGF0Y2hfaW5zbl9sZW4oZnVuYykgLyBzaXplb2YodWludDMyX3Qp Owo+ID4gKyAgICBmb3IgKCBpID0gMDsgaSA8IGxlbjsgaSsrICkKPiA+ICsgICAgewo+ID4gKyAg ICAgICAgdWludDMyX3QgaW5zbjsKPiA+ICsKPiA+ICsgICAgICAgIG1lbWNweSgmaW5zbiwgZnVu Yy0+b3BhcXVlICsgKGkgKiBzaXplb2YodWludDMyX3QpKSwgQVJDSF9QQVRDSF9JTlNOX1NJWkUp Owo+ID4gKyAgICAgICAgLyogUEFUQ0ghICovCj4gPiArICAgICAgICAqKG5ld19wdHIgKyBpKSA9 IGluc247Cj4gPiArICAgIH0KPiAKPiBXaHkgaXMgdGhpcyBkb25lIGluIGEgbG9vcD8gQ2FuJ3Qg d2UganVzdCBtZW1jcHkgbGl2ZXBhdGNoX2luc25fbGVuKGZ1bmMpCj4gYnl0ZXMgaW50byAqbmV3 X3B0cj8KCkl0IGNhbiBiZS4gCj4gCj4gPiArfQo+ID4gKwo+ID4gK2ludCBhcmNoX2xpdmVwYXRj aF92ZXJpZnlfZWxmKGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYpCj4gPiArewo+ID4g KyAgICBjb25zdCBFbGZfRWhkciAqaGRyID0gZWxmLT5oZHI7Cj4gPiArCj4gPiArICAgIGlmICgg aGRyLT5lX21hY2hpbmUgIT0gRU1fQUFSQ0g2NCB8fAo+ID4gKyAgICAgICAgIGhkci0+ZV9pZGVu dFtFSV9DTEFTU10gIT0gRUxGQ0xBU1M2NCApCj4gPiArICAgIHsKPiA+ICsgICAgICAgIGRwcmlu dGsoWEVOTE9HX0VSUiwgTElWRVBBVENIICIlczogVW5zdXBwb3J0ZWQgRUxGIE1hY2hpbmUgdHlw ZSFcbiIsCj4gPiArICAgICAgICAgICAgICAgIGVsZi0+bmFtZSk7Cj4gPiArICAgICAgICByZXR1 cm4gLUVPUE5PVFNVUFA7Cj4gPiArICAgIH0KPiA+ICsKPiA+ICsgICAgcmV0dXJuIDA7Cj4gPiAr fQo+ID4gKwo+IHNuaXAKPiA+ICBpbnQgYXJjaF9saXZlcGF0Y2hfdmVyaWZ5X2Z1bmMoY29uc3Qg c3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQo+ID4gIHsKPiA+IC0gICAgcmV0dXJuIC1FTk9T WVM7Cj4gPiAtfQo+ID4gKyAgICAvKiBJZiBOT1Bpbmcgb25seSBkbyB1cCB0byBtYXhpbXVtIGFt b3VudCB3ZSBjYW4gcHV0IGluIHRoZSAtPm9wYXF1ZS4gKi8KPiA+ICsgICAgaWYgKCAhZnVuYy0+ bmV3X2FkZHIgJiYgZnVuYy0+bmV3X3NpemUgPiBzaXplb2YoZnVuYy0+b3BhcXVlKSAmJgo+ID4g KyAgICAgICAgIGZ1bmMtPm5ld19zaXplICUgQVJDSF9QQVRDSF9JTlNOX1NJWkUgKQo+ID4gKyAg ICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOwo+IAo+IE1heWJlIEknbSBtaXN1bmRlcnN0YW5kaW5n LCBidXQgc2hvdWxkbid0IHRoaXMgYmUgKCAhZnVuYy0+bmV3X2FkZHIgJiYKPiAoZnVuYy0+bmV3 X3NpemUgPiBzaXplb2YoZnVuYy0+b3BhcXVlKSB8fCBmdW5jLT5uZXdfc2l6ZSAlCj4gQVJDSF9Q QVRDSF9JTlNOX1NJWkUpICkgPwoKWWVzIQoKSGVyZSBpcyB0aGUgdXBkYXRlZCBwYXRjaDoKRnJv bSBkZWVmOGY2OTIxYzE1YTRkMDcyMDliZmJhMWZjODY5N2RiZmViNjA1IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNs ZS5jb20+CkRhdGU6IE1vbiwgMTkgU2VwIDIwMTYgMTI6MjQ6MDkgLTA0MDAKU3ViamVjdDogW1BB VENIIHY2XSBsaXZlcGF0Y2g6IEluaXRpYWwgQVJNNjQgc3VwcG9ydC4KCkFzIGNvbXBhcmVkIHRv IHg4NiB0aGUgdmEgb2YgdGhlIGh5cGVydmlzb3IgLnRleHQKaXMgbG9ja2VkIGRvd24gLSB3ZSBj YW5ub3QgbW9kaWZ5IHRoZSBydW5uaW5nIHBhZ2V0YWJsZXMKdG8gaGF2ZSB0aGUgLnJvIGZsYWcg dW5zZXQuIFdlIGJvcnJvdyB0aGUgc2FtZSBpZGVhIHRoYXQKYWx0ZXJuYXRpdmUgcGF0Y2hpbmcg aGFzIC0gd2hpY2ggaXMgdG8gdm1hcCB0aGUgZW50aXJlCi50ZXh0IHJlZ2lvbiBhbmQgdXNlIHRo ZSBhbHRlcm5hdGl2ZSB2aXJ0dWFsIGFkZHJlc3MKZm9yIHBhdGNoaW5nLgoKU2luY2Ugd2UgYXJl IGRvaW5nIHZtYXAgd2UgbWF5IGZhaWwsIGhlbmNlIHRoZQphcmNoX2xpdmVwYXRjaF9xdWllc2Nl IHdhcyBjaGFuZ2VkIChzZWUgIng4Nixhcm06CkNoYW5nZSBhcmNoX2xpdmVwYXRjaF9xdWllc2Nl KCkgZGVjbGFyYXRpb24iKSB0byByZXR1cm4KYW4gZXJyb3IgdmFsdWUgd2hpY2ggd2lsbCBiZSBi dWJibGVkIGluIHBheWxvYWQtPnJjIGFuZApwcm92aWRlZCB0byB0aGUgdXNlciAoYWxvbmcgd2l0 aCBtZXNzYWdlcyBpbiB0aGUgcmluZyBidWZmZXIpLgoKVGhlIGxpdmVwYXRjaCB2aXJ0dWFsIGFk ZHJlc3Mgc3BhY2UgKHdoZXJlIHRoZSBuZXcgZnVuY3Rpb25zCmFyZSkgbmVlZHMgdG8gYmUgY2xv c2UgdG8gdGhlIGh5cGVydmlzb3IgdmlydHVhbCBhZGRyZXNzCnNvIHRoYXQgdGhlIHRyYW1wb2xp bmUgY2FuIHJlYWNoIGl0LiBBcyBzdWNoIHdlIHJlLXVzZQp0aGUgQk9PVF9SRUxPQ19WSVJUX1NU QVJUIHdoaWNoIGlzIG5vdCB1c2VkIGFmdGVyIGJvb3R1cAooYWx0ZXJuYXRpdmVseSB3ZSBjYW4g YWxzbyB1c2UgdGhlIHNwYWNlIGFmdGVyIHRoZSBfZW5kIHRvCkZJWE1BUF9BRERSKDApLCBidXQg dGhhdCBtYXkgYmUgdG9vIHNtYWxsKS4KClRoZSBFTEYgcmVsb2NhdGlvbiBlbmdpbmUgYXQgdGhl IHN0YXJ0IHdhcyBjb2RlZCBmcm9tCnRoZSAiRUxGIGZvciB0aGUgQVJNIDY0LWJpdCBBcmNoaXRl Y3R1cmUgKEFBcmNoNjQpIgooaHR0cDovL2luZm9jZW50ZXIuYXJtLmNvbS9oZWxwL3RvcGljL2Nv bS5hcm0uZG9jLmloaTAwNTZiL0lISTAwNTZCX2FhZWxmNjQucGRmKQpidXQgYWZ0ZXIgYSB3aGls ZSBvZiB0cnlpbmcgdG8gd3JpdGUgdGhlIGNvcnJlY3QgYml0IHNoaWZ0aW5nCmFuZCBtYXNraW5n IGZyb20gc2NyYXRjaCBJIGVuZGVkIHVwIGJvcnJvd2luZyBmcm9tIExpbnV4LCB0aGUKJ3JlbG9j X2luc25faW1tJyAoTGludXggdjQuNyBhcmNoL2FybTY0L2tlcm5lbC9tb2R1bGUuYyBmdW5jdGlv bi4KU2VlIDI1N2NiMjUxOTI1Zjg1NGRhNDM1Y2JmNzliMTQwOTg0NDEzODcxYWMgImFybTY0OiBM b2FkYWJsZSBtb2R1bGVzIikKCkFuZCB3aGlsZSBhdCBpdCAtIHdlIGFsc28gdXRpbGl6ZSBjb2Rl IGZyb20gTGludXggdG8gY29uc3RydWN0CnRoZSByaWdodCBicmFuY2ggaW5zdHJ1Y3Rpb24gKHNl ZSAiYXJtNjQvaW5zbjogaW50cm9kdWNlCmFhcmNoNjRfaW5zbl9nZW5fe25vcHxicmFuY2hfaW1t fSgpIGhlbHBlciBmdW5jdGlvbnMiKS4KCkluIHRoZSBsaXZlcGF0Y2ggcGF5bG9hZCBsb2FkaW5n IGNvZGUgd2UgdHdlYWsgdGhlICNpZmRlZiB0bwpvbmx5IGV4Y2x1ZGUgQVJNXzMyLiBUaGUgZXhj ZXB0aW9ucyBhcmUgbm90IHBhcnQgb2YgQVJNIDMyLzY0IGhlbmNlCnRoZXkgYXJlIHN0aWxsIGJl aGluZCB0aGUgI2lmZGVmLgoKV2UgYWxzbyBleHBhbmQgdGhlIE1BSU5UQUlORVJTIGZpbGUgdG8g aW5jbHVkZSB0aGUgYXJtNjQgYW5kIGFybTMyCnBsYXRmb3JtIHNwZWNpZmljIGxpdmVwYXRjaCBm aWxlLgoKQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4gW25vbi1hcm0g cGFydHNdClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtA b3JhY2xlLmNvbT4KCi0tLQpDYzogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJp eC5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNj OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYyAgSmFuIEJldWxpY2ggPGpi ZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KClJGQzogV2hvbHkgY293ISBJdCB3b3JrcyEKdjE6IEZpbmlzaGVkIHRoZSB2YXJpb3Vz IFRPRE9zIGFuZCByZXZpZXdzIG91dGxpbmVkIGJ5IEp1bGllbiBpbiBSRkMuCnYyOiBDYWxsIGNo ZWNrX2Zvcl9saXZlcGF0Y2hfd29yayBpbiBsZWF2ZV9oeXBlcnZpc29yX3RhaWwgbm90IGluCiAg ICByZXNldF9zdGFja19hbmRfanVtcAogICAtIE1vdmUgQVJNIDMyIGNvbXBvbmVudHMgaW4gb3Ro ZXIgcGF0Y2gKICAgLSBCbGFja2xpc3QgcGxhdGZvcm0gb3B0aW9ucyBpbiBLY29uZmlnCiAgIC0g QWRkZWQgUl9BQVJDSDY0X0xEU1QxMjhfQUJTX0xPMTJfTkMsIFJfQUFSQ0g2NF9UU1RCUjE0LCBh bmQKICAgICBSX0FBUkNINjRfQURSX1BSRUxfUEdfSEkyMV9OQwogICAtIEFkZGVkIGRvX3JlbG9j IGFuZCByZWxvY19kYXRhIGFsb25nIHdpdGggb3ZlcmZsb3cgY2hlY2tzIGZyb20gTGludXguCiAg IC0gVXNlIGFwcGx5X2FsdGVybmF0aXZlcyB3aXRob3V0IGFueSAjaWZkZWYKICAgLSBVc2UgbGVh dmVfaHlwZXJ2aXNvcl90YWlsIHRvIGNhbGwgY2hlY2tfZm9yX2xpdmVwYXRjaF93b3JrCiAgIC0g QWRkIEFTU0VSVCB0aGF0IGlzbnMgaXMgbm90IEFBUkNINjRfQlJFQUtfRkFVTFQKICAgLSBTcHVu IG91dCBhcmNoX2xpdmVwYXRjaF9xdWllc2NlIGNoYW5nZXMgaW4gc2VwZXJhdGUgcGF0Y2guCiAg IC0gU3B1biBvdXQgY2hhbmdlcyB0byBjb25maWcuaCAoZG9jdW1lbnQgb25lcykgdG8gc2VwZXJh dGUgcGF0Y2guCiAgIC0gTW92ZSB0aGUgbGl2ZXBhdGNoLmggdG8gaW5jbHVkZS94ZW4vYXNtLWFy bS4KICAgLSBBZGQgTElWRVBBVENIX1ZNQVBfRU5EIGFuZCBMSVZFUEFUQ0hfVk1BUF9TVEFSVCBp biBjb25maWcuaAogICAtIEluIGFyY2hfbGl2ZXBhdGNoX3NlY3VyZSB1c2Ugc3dpdGNoIGZvciB2 YV90eXBlLgogICAtIERyb3AgdGhlICNpZm5kZWYgQ09ORklHX0FSTSBmb3IgLmV4X3RhYmxlIChz ZWUKICAgICAiYXJtL3g4NjogQWRkIEhBU19BTFRFUk5BVElWRSBhbmQgSEFTX0VYX1RBQkxFIikK ICAgLSBQaWdneWJhY2sgb24gIng4NjogY2hhbmdlIG1vZGlmeV94ZW5fbWFwcGluZ3MgdG8gcmV0 dXJuIGVycm9yIgogICAgICBzbyB0aGF0IGFyY2hfbGl2ZXBhdGNoX3NlY3VyZSBjYW4gcmV0dXJu IGVycm9ycy4KICAgLSBNb3ZlcyBjb21tZW50IGFib3V0IGJyYW5jaCBwcmVkaWN0b3Igb3V0IG9m IHRoaXMgcGF0Y2guCnYzOiBGaXggU3R5bGVHdWlkZSB2aW9sYXRpb25zIChzd2l0Y2ggc3RhdGVt ZW50cykKICAgLSBGaXggaW5jb3JyZWN0IGNhc3Qgb2YgYWRkciB3aGVuIHJldmVydGluZy4KICAg LSBEcm9wIG9sZF9wdHIgdmFyaWFibGUuCiAgIC0gVXNlIGJvb2xfdCB2YWx1ZXMgaW5zdGVhZCBv ZiBudW1iZXJzLgogICAtIFNwcmlua2xlIFxuIGFzIHJlcXVlc3RlZCBieSBKdWxpZW4uCiAgIC0g SW4gYXJjaF9saXZlcGF0Y2hfcXVpZXNjZSB1c2UgMVUgaW5zdGVhZCBvZiAxLgogICAtIFVzZSBD OTkgI2RlZmluZXMgZm9yIFtVLF1JTlRbMTYsMzJdX1tNSU4sTUFYXSBpbnN0ZWFkIG9mIExpbnV4 CiAgICAga2VybmVsIG9uZXMgKFtTLFVdWzE2LDMyXV9bTUlOLE1BWF0pLgogICAtIEluY2x1ZGUg dGhlIEVMRiByZWxvY2F0aW9ucyBmb3IgUl9BQVJDSDY0X1tBQlMsUFJFXTE2LCBhbmQKICAgICBh bGwgdGhlIHZhcmlvdXMgZ3JvdXBpbmdzIGZvciBSX0FBUkNINjRfTU9WV19bVUFCUyxTQUJTLFBS RUxdXyoKICAgICBmYW1pbHkuCiAgIC0gUmVkbyB0aGUgTk9QIHBhdGNoaW5nIHRvIHVzZSBtb3Jl IG9mIHRoZSBvcGFxdWUgc2l6ZSAoc28gdXAgdG8gNwogICAgIGluc3RydWN0aW9ucyBpbiBvbmUg Z28pLgogICAtIERyb3AgdGhlIGNwdV90b19sZTMyIG1hY3JvcyBhcyB0aGV5IGFyZSBub3QgbmVl ZGVkIChhbmQgY2FuIGFsbG93CiAgICAgdXNlIHRvIHNoYXJlIG1vcmUgY29kZSB3aXRoIEFSTTMy KS4KICAgLSBGbHVzaCBvdXQgZnVuYy0+b2xkX2FkZHIgaW5zdGVhZCBvZiB2bWFwIHBvaW50ZXIg d2hlbiByZXZlcnRpbmcuCnY0OiBBZGRlZCBKYW4ncyBBY2sKICAgcy9QQVRDSF9JTlNOX1NJWkUv QVJDSF9QQVRDSF9JTlNOX1NJWkUvCiAgIHMvYXJjaF9saXZlcGF0Y2hfaW5zbl9sZW4vbGl2ZXBh dGNoX2luc25fbGVuLwp2NTogQWRkZWQgJ2ZhbGx0aHJvdWdoJyBjb21tZW50cyBvbiB0aGUgc3dp dGNoIHN0YXRlbWVudHMuCiAgIC0gQWRkZWQgbW9yZSBpbnZhbGlkYXRlIG9mIGRjYWNoZSBvbiB0 aGUgb2xkX2FkZHIgYW5kIHRoZSB2bWFwIGFyZWEuCiAgIC0gUmViYXNlZCBvbiAibGl2ZXBhdGNo OiBEcm9wIF9qbXAgZnJvbSBhcmNoX2xpdmVwYXRjaF9bYXBwbHkscmV2ZXJ0XV9qbXAiCiAgIC0g TW92ZSBtb3N0IG9mICBkb2NzIHBhcnQgZnJvbSAibGl2ZXBhdGNoOiBBUk0veDg2OiBDaGVjayBk aXNwbGFjZW1lbnQgb2YKICAgICBvbGRfYWRkciBhbmQgbmV3X2FkZHIiIGluIHRoaXMgcGF0Y2gu CiAgIC0gQWRkZWQgc3luY2luZyBvZiBkYXRhIGNhY2hlIGFsb25nIHdpdGggZXhwbGFuYXRpb24g Zm9yIGl0cyB1c2FnZS4KdjY6IERyb3BwZWQgZnJvbSBkb2NzIHRoZSAnZWEgb3Bjb2RlJyBwYXJ0 CiAgIC0gUmVpbnNlcnQgdGhlIGNsZWFuX2FuZF9pbnZhbGlkYXRlX2RjYWNoZV92YV9yYW5nZSBv biBuZXdfcHRyLgogICAtIFVwZGF0ZSBjb21tZW50IGluIGFyY2hfbGl2ZXBhdGNoX3Jldml2ZSB0 byBtZW50aW9uIHRoZSByZXZlcnQgZnVuY3Rpb24gdG9vLgogICAtIEZpeCB0aGUgTk9QIGNoZWNr IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9mdW5jCiAgIC0gU2ltcGxpZnkgdGhlIGFyY2hfbGl2ZXBh dGNoX3JldmVydCBjb2RlIChubyBsb29wLCBqdXN0IG1lbWNweSkuCi0tLQogTUFJTlRBSU5FUlMg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkb2NzL21pc2MvbGl2ZXBhdGNoLm1hcmtkb3du ICAgIHwgIDE0ICstCiB4ZW4vYXJjaC9hcm0vTWFrZWZpbGUgICAgICAgICAgIHwgIDEzICstCiB4 ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZpbGUgICAgIHwgICAxICsKIHhlbi9hcmNoL2FybS9hcm0z Mi9saXZlcGF0Y2guYyAgfCAgMzggKysrKwogeGVuL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlICAg ICB8ICAgMSArCiB4ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNoLmMgIHwgNDg1ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL2FybS9kb21haW4uYyAg ICAgICAgICAgfCAgIDYgKwogeGVuL2FyY2gvYXJtL2xpdmVwYXRjaC5jICAgICAgICB8IDEwMyAr KysrKysrLS0KIHhlbi9hcmNoL2FybS90cmFwcy5jICAgICAgICAgICAgfCAgIDYgKwogeGVuL2Nv bW1vbi9LY29uZmlnICAgICAgICAgICAgICB8ICAgMiArLQogeGVuL2luY2x1ZGUvYXNtLWFybS9j b25maWcuaCAgICB8ICAgNSArCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2xpdmVwYXRjaC5oIHwgIDI4 ICsrKwogeGVuL2luY2x1ZGUveGVuL2VsZnN0cnVjdHMuaCAgICB8ICA1NyArKysrLQogeGVuL2lu Y2x1ZGUveGVuL3R5cGVzLmggICAgICAgICB8ICAgOSArCiAxNSBmaWxlcyBjaGFuZ2VkLCA3NDMg aW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2Fy Y2gvYXJtL2FybTMyL2xpdmVwYXRjaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJt L2FybTY0L2xpdmVwYXRjaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2luY2x1ZGUvYXNtLWFy bS9saXZlcGF0Y2guaAoKZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5k ZXggOWIzMDYwMC4uMWMzOTE0NiAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRB SU5FUlMKQEAgLTI2OSw2ICsyNjksNyBAQCBTOiAgU3VwcG9ydGVkCiBGOiAgZG9jcy9taXNjL2xp dmVwYXRjaC5tYXJrZG93bgogRjogIHRvb2xzL21pc2MveGVuLWxpdmVwYXRjaC5jCiBGOiAgeGVu L2FyY2gvKi9saXZlcGF0Y2gqCitGOiAgeGVuL2FyY2gvKi8qL2xpdmVwYXRjaCoKIEY6ICB4ZW4v Y29tbW9uL2xpdmVwYXRjaCoKIEY6ICB4ZW4vaW5jbHVkZS9hc20tKi9saXZlcGF0Y2guaAogRjog IHhlbi9pbmNsdWRlL3hlbi9saXZlcGF0Y2gqCmRpZmYgLS1naXQgYS9kb2NzL21pc2MvbGl2ZXBh dGNoLm1hcmtkb3duIGIvZG9jcy9taXNjL2xpdmVwYXRjaC5tYXJrZG93bgppbmRleCAzZGQ2MzA0 Li41ZmU5M2I0IDEwMDY0NAotLS0gYS9kb2NzL21pc2MvbGl2ZXBhdGNoLm1hcmtkb3duCisrKyBi L2RvY3MvbWlzYy9saXZlcGF0Y2gubWFya2Rvd24KQEAgLTExMDgsNyArMTEwOCw3IEBAIGFuZCB0 aGUgLmRhdGEgb3IgLmJzcyBzZWN0aW9ucyBhcmUgb2YgemVybyBsZW5ndGguCiBUaGUgaHlwZXJ2 aXNvciBzaG91bGQgdmVyaWZ5IHRoYXQgdGhlIGluLXBsYWNlIHBhdGNoaW5nIHdvdWxkIGZpdCB3 aXRoaW4KIHRoZSBjb2RlIG9yIGRhdGEuCiAKLSMjIyBUcmFtcG9saW5lIChlOSBvcGNvZGUpCisj IyMgVHJhbXBvbGluZSAoZTkgb3Bjb2RlKSwgeDg2CiAKIFRoZSBlOSBvcGNvZGUgdXNlZCBmb3Ig am1wcSB1c2VzIGEgMzItYml0IHNpZ25lZCBkaXNwbGFjZW1lbnQuIFRoYXQgbWVhbnMKIHdlIGFy ZSBsaW1pdGVkIHRvIHVwIHRvIDJHQiBvZiB2aXJ0dWFsIGFkZHJlc3MgdG8gcGxhY2UgdGhlIG5l dyBjb2RlCkBAIC0xMTQzLDMgKzExNDMsMTUgQEAgdGhhdCBpbiB0aGUgaHlwZXJ2aXNvciBpcyBh ZHZpc2VkLgogVGhlIHRvb2wgZm9yIGdlbmVyYXRpbmcgcGF5bG9hZHMgY3VycmVudGx5IGRvZXMg cGVyZm9ybSBhIGNvbXBpbGUtdGltZQogY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGZ1bmN0aW9u IHRvIGJlIHJlcGxhY2VkIGlzIGxhcmdlIGVub3VnaC4KIAorIyMjIyBUcmFtcG9saW5lLCBBUk0K KworVGhlIHVuY29uZGl0aW9uYWwgYnJhbmNoIGluc3RydWN0aW9uIChmb3IgdGhlIGVuY29kaW5n IHNlZSB0aGUKK0RESSAwNDA2Qy5jIGFuZCBEREkgMDQ4N0EuaiBBcmNoaXRlY3R1cmUgUmVmZXJl bmNlIE1hbnVhbCdzKS4KK3dpdGggcHJvcGVyIG9mZnNldCBpcyB1c2VkIGZvciBhbiB1bmNvbmRp dGlvbmFsIGJyYW5jaCB0byB0aGUgbmV3IGNvZGUuCitUaGlzIG1lYW5zIHRoYXQgdGhhdCBgb2xk X3NpemVgICoqTVVTVCoqIGJlIGF0IGxlYXN0IGZvdXIgYnl0ZXMgaWYgcGF0Y2hpbmcKK2luIHRy YW1wb2xpbmUuCisKK1RoZSBuZXcgY29kZSBpcyBwbGFjZWQgaW4gdGhlIDhNIC0gMTBNIHZpcnR1 YWwgYWRkcmVzcyBzcGFjZSB3aGlsZSB0aGUKK1hlbiBjb2RlIGlzIGluIDJNIC0gNE0uIFRoYXQg Z2l2ZXMgdXMgZW5vdWdoIHNwYWNlLgorCitUaGUgaHlwZXJ2aXNvciBhbHNvIGNoZWNrcyB0aGUg ZGlzcGxhY2VtZW50IGR1cmluZyBsb2FkaW5nIG9mIHRoZSBwYXlsb2FkLgpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCmluZGV4IDYxZTY1 NWIuLjVjZWU4NGQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9NYWtlZmlsZQorKysgYi94ZW4v YXJjaC9hcm0vTWFrZWZpbGUKQEAgLTU5LDYgKzU5LDE1IEBAIEFMTF9PQkpTIDo9ICQoVEFSR0VU X1NVQkFSQ0gpL2hlYWQubyAkKEFMTF9PQkpTKQogCiBERVBTICs9ICQoVEFSR0VUX1NVQkFSQ0gp Ly5oZWFkLm8uZAogCitpZmRlZiBDT05GSUdfTElWRVBBVENICithbGxfc3ltYm9scyA9IC0tYWxs LXN5bWJvbHMKK2lmZGVmIENPTkZJR19GQVNUX1NZTUJPTF9MT09LVVAKK2FsbF9zeW1ib2xzID0g LS1hbGwtc3ltYm9scyAtLXNvcnQtYnktbmFtZQorZW5kaWYKK2Vsc2UKK2FsbF9zeW1ib2xzID0K K2VuZGlmCisKICQoVEFSR0VUKTogJChUQVJHRVQpLXN5bXMgJChUQVJHRVQpLmF4ZgogCSQoT0JK Q09QWSkgLU8gYmluYXJ5IC1TICQ8ICRACiBpZmVxICgkKENPTkZJR19BUk1fNjQpLHkpCkBAIC05 NCwxMiArMTAzLDEyIEBAICQoVEFSR0VUKS1zeW1zOiBwcmVsaW5rLm8geGVuLmxkcyAkKEJBU0VE SVIpL2NvbW1vbi9zeW1ib2xzLWR1bW15Lm8KIAkkKExEKSAkKExERkxBR1MpIC1UIHhlbi5sZHMg LU4gcHJlbGluay5vIFwKIAkgICAgJChCQVNFRElSKS9jb21tb24vc3ltYm9scy1kdW1teS5vIC1v ICQoQEQpLy4kKEBGKS4wCiAJJChOTSkgLXBhIC0tZm9ybWF0PXN5c3YgJChARCkvLiQoQEYpLjAg XAotCQl8ICQoQkFTRURJUikvdG9vbHMvc3ltYm9scyAtLXN5c3YgLS1zb3J0ID4kKEBEKS8uJChA RikuMC5TCisJCXwgJChCQVNFRElSKS90b29scy9zeW1ib2xzICQoYWxsX3N5bWJvbHMpIC0tc3lz diAtLXNvcnQgPiQoQEQpLy4kKEBGKS4wLlMKIAkkKE1BS0UpIC1mICQoQkFTRURJUikvUnVsZXMu bWsgJChARCkvLiQoQEYpLjAubwogCSQoTEQpICQoTERGTEFHUykgLVQgeGVuLmxkcyAtTiBwcmVs aW5rLm8gXAogCSAgICAkKEBEKS8uJChARikuMC5vIC1vICQoQEQpLy4kKEBGKS4xCiAJJChOTSkg LXBhIC0tZm9ybWF0PXN5c3YgJChARCkvLiQoQEYpLjEgXAotCQl8ICQoQkFTRURJUikvdG9vbHMv c3ltYm9scyAtLXN5c3YgLS1zb3J0ID4kKEBEKS8uJChARikuMS5TCisJCXwgJChCQVNFRElSKS90 b29scy9zeW1ib2xzICQoYWxsX3N5bWJvbHMpIC0tc3lzdiAtLXNvcnQgPiQoQEQpLy4kKEBGKS4x LlMKIAkkKE1BS0UpIC1mICQoQkFTRURJUikvUnVsZXMubWsgJChARCkvLiQoQEYpLjEubwogCSQo TEQpICQoTERGTEFHUykgLVQgeGVuLmxkcyAtTiBwcmVsaW5rLm8gJChidWlsZF9pZF9saW5rZXIp IFwKIAkgICAgJChARCkvLiQoQEYpLjEubyAtbyAkQApkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L2FybTMyL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL2FybTMyL01ha2VmaWxlCmluZGV4IGIyMGRi NjQuLjQzOTU2OTMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9hcm0zMi9NYWtlZmlsZQorKysg Yi94ZW4vYXJjaC9hcm0vYXJtMzIvTWFrZWZpbGUKQEAgLTQsNiArNCw3IEBAIG9iai0kKEVBUkxZ X1BSSU5USykgKz0gZGVidWcubwogb2JqLXkgKz0gZG9tY3RsLm8KIG9iai15ICs9IGRvbWFpbi5v CiBvYmoteSArPSBlbnRyeS5vCitvYmotJChDT05GSUdfTElWRVBBVENIKSArPSBsaXZlcGF0Y2gu bwogb2JqLXkgKz0gcHJvYy12Ny5vIHByb2MtY2F4eC5vCiBvYmoteSArPSBzbXBib290Lm8KIG9i ai15ICs9IHRyYXBzLm8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9hcm0zMi9saXZlcGF0Y2gu YyBiL3hlbi9hcmNoL2FybS9hcm0zMi9saXZlcGF0Y2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi44MGY5NjQ2Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2FyY2gvYXJtL2Fy bTMyL2xpdmVwYXRjaC5jCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAy MDE2IE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg Ki8KKworI2luY2x1ZGUgPHhlbi9lcnJuby5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNs dWRlIDx4ZW4vbGl2ZXBhdGNoX2VsZi5oPgorI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2guaD4KKwor dm9pZCBhcmNoX2xpdmVwYXRjaF9hcHBseShzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCit7 Cit9CisKK3ZvaWQgYXJjaF9saXZlcGF0Y2hfcmV2ZXJ0KGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hf ZnVuYyAqZnVuYykKK3sKK30KKworaW50IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9lbGYoY29uc3Qg c3RydWN0IGxpdmVwYXRjaF9lbGYgKmVsZikKK3sKKyAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cit9 CisKK2ludCBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtX3JlbGEoc3RydWN0IGxpdmVwYXRjaF9lbGYg KmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxpdmVw YXRjaF9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKnJlbGEpCit7CisgICAgcmV0dXJuIC1FTk9TWVM7 Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5 bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRl bnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt L2FybTY0L01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL2FybTY0L01ha2VmaWxlCmluZGV4IGMxZmE0 M2YuLjE0OWI2YjMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9hcm02NC9NYWtlZmlsZQorKysg Yi94ZW4vYXJjaC9hcm0vYXJtNjQvTWFrZWZpbGUKQEAgLTYsNiArNiw3IEBAIG9iai15ICs9IGRv bWN0bC5vCiBvYmoteSArPSBkb21haW4ubwogb2JqLXkgKz0gZW50cnkubwogb2JqLXkgKz0gaW5z bi5vCitvYmotJChDT05GSUdfTElWRVBBVENIKSArPSBsaXZlcGF0Y2gubwogb2JqLXkgKz0gc21w Ym9vdC5vCiBvYmoteSArPSB0cmFwcy5vCiBvYmoteSArPSB2ZnAubwpkaWZmIC0tZ2l0IGEveGVu L2FyY2gvYXJtL2FybTY0L2xpdmVwYXRjaC5jIGIveGVuL2FyY2gvYXJtL2FybTY0L2xpdmVwYXRj aC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNTQ4YWEKLS0tIC9kZXYv bnVsbAorKysgYi94ZW4vYXJjaC9hcm0vYXJtNjQvbGl2ZXBhdGNoLmMKQEAgLTAsMCArMSw0ODUg QEAKKy8qCisgKiAgQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0 ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKi8KKworI2luY2x1ZGUgPHhlbi9iaXRvcHMuaD4K KyNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisjaW5jbHVkZSA8 eGVuL2xpdmVwYXRjaF9lbGYuaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoLmg+CisjaW5jbHVk ZSA8eGVuL21tLmg+CisjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KKworI2luY2x1ZGUgPGFzbS9iaXRv cHMuaD4KKyNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+CisjaW5jbHVkZSA8YXNtL2luc24uaD4K KyNpbmNsdWRlIDxhc20vbGl2ZXBhdGNoLmg+CisKK3ZvaWQgYXJjaF9saXZlcGF0Y2hfYXBwbHko c3RydWN0IGxpdmVwYXRjaF9mdW5jICpmdW5jKQoreworICAgIHVpbnQzMl90IGluc247CisgICAg dWludDMyX3QgKm5ld19wdHI7CisgICAgdW5zaWduZWQgaW50IGksIGxlbjsKKworICAgIEJVSUxE X0JVR19PTihBUkNIX1BBVENIX0lOU05fU0laRSA+IHNpemVvZihmdW5jLT5vcGFxdWUpKTsKKyAg ICBCVUlMRF9CVUdfT04oQVJDSF9QQVRDSF9JTlNOX1NJWkUgIT0gc2l6ZW9mKGluc24pKTsKKwor ICAgIEFTU0VSVCh2bWFwX29mX3hlbl90ZXh0KTsKKworICAgIGxlbiA9IGxpdmVwYXRjaF9pbnNu X2xlbihmdW5jKTsKKyAgICBpZiAoICFsZW4gKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBT YXZlIG9sZCBvbmVzLiAqLworICAgIG1lbWNweShmdW5jLT5vcGFxdWUsIGZ1bmMtPm9sZF9hZGRy LCBsZW4pOworCisgICAgaWYgKCBmdW5jLT5uZXdfYWRkciApCisgICAgICAgIGluc24gPSBhYXJj aDY0X2luc25fZ2VuX2JyYW5jaF9pbW0oKHVuc2lnbmVkIGxvbmcpZnVuYy0+b2xkX2FkZHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcp ZnVuYy0+bmV3X2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQUFSQ0g2NF9JTlNOX0JSQU5DSF9OT0xJTkspOworICAgIGVsc2UKKyAgICAgICAgaW5zbiA9 IGFhcmNoNjRfaW5zbl9nZW5fbm9wKCk7CisKKyAgICBBU1NFUlQoaW5zbiAhPSBBQVJDSDY0X0JS RUFLX0ZBVUxUKTsKKworICAgIG5ld19wdHIgPSBmdW5jLT5vbGRfYWRkciAtICh2b2lkICopX3N0 YXJ0ICsgdm1hcF9vZl94ZW5fdGV4dDsKKyAgICBsZW4gPSBsZW4gLyBzaXplb2YodWludDMyX3Qp OworCisgICAgLyogUEFUQ0ghICovCisgICAgZm9yICggaSA9IDA7IGkgPCBsZW47IGkrKyApCisg ICAgICAgICoobmV3X3B0ciArIGkpID0gaW5zbjsKKworICAgIC8qCisgICAgKiBXaGVuIHdlIHVw bG9hZCB0aGUgcGF5bG9hZCwgaXQgd2lsbCBnbyB0aHJvdWdoIHRoZSBkYXRhIGNhY2hlCisgICAg KiAodGhlIHJlZ2lvbiBpcyBjYWNoZWFibGUpLiBVbnRpbCB0aGUgZGF0YSBjYWNoZSBpcyBjbGVh bmVkLCB0aGUgZGF0YQorICAgICogbWF5IG5vdCByZWFjaCB0aGUgbWVtb3J5LiBBbmQgaW4gdGhl IGNhc2UgdGhlIGRhdGEgYW5kIGluc3RydWN0aW9uIGNhY2hlCisgICAgKiBhcmUgc2VwYXJhdGVk LCB3ZSBtYXkgcmVhZCBpbnZhbGlkIGluc3RydWN0aW9uIGZyb20gdGhlIG1lbW9yeSBiZWNhdXNl CisgICAgKiB0aGUgZGF0YSBjYWNoZSBoYXZlIG5vdCB5ZXQgc3luY2VkIHdpdGggdGhlIG1lbW9y eS4gSGVuY2Ugc3luYyBpdC4KKyAgICAqLworICAgIGlmICggZnVuYy0+bmV3X2FkZHIgKQorICAg ICAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFuZ2UoZnVuYy0+bmV3X2FkZHIs IGZ1bmMtPm5ld19zaXplKTsKKyAgICBjbGVhbl9hbmRfaW52YWxpZGF0ZV9kY2FjaGVfdmFfcmFu Z2UobmV3X3B0ciwgc2l6ZW9mICgqbmV3X3B0cikgKiBsZW4pOworfQorCit2b2lkIGFyY2hfbGl2 ZXBhdGNoX3JldmVydChjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCit7CisgICAg dWludDMyX3QgKm5ld19wdHI7CisgICAgdW5zaWduZWQgaW50IGxlbjsKKworICAgIG5ld19wdHIg PSBmdW5jLT5vbGRfYWRkciAtICh2b2lkICopX3N0YXJ0ICsgdm1hcF9vZl94ZW5fdGV4dDsKKwor ICAgIGxlbiA9IGxpdmVwYXRjaF9pbnNuX2xlbihmdW5jKTsKKyAgICBtZW1jcHkobmV3X3B0ciwg ZnVuYy0+b3BhcXVlLCBsZW4pOworCisgICAgY2xlYW5fYW5kX2ludmFsaWRhdGVfZGNhY2hlX3Zh X3JhbmdlKG5ld19wdHIsIGxlbik7Cit9CisKK2ludCBhcmNoX2xpdmVwYXRjaF92ZXJpZnlfZWxm KGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYpCit7CisgICAgY29uc3QgRWxmX0VoZHIg KmhkciA9IGVsZi0+aGRyOworCisgICAgaWYgKCBoZHItPmVfbWFjaGluZSAhPSBFTV9BQVJDSDY0 IHx8CisgICAgICAgICBoZHItPmVfaWRlbnRbRUlfQ0xBU1NdICE9IEVMRkNMQVNTNjQgKQorICAg IHsKKyAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBVbnN1cHBvcnRl ZCBFTEYgTWFjaGluZSB0eXBlIVxuIiwKKyAgICAgICAgICAgICAgICBlbGYtPm5hbWUpOworICAg ICAgICByZXR1cm4gLUVPUE5PVFNVUFA7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2Vu dW0gYWFyY2g2NF9yZWxvY19vcCB7CisgICAgUkVMT0NfT1BfTk9ORSwKKyAgICBSRUxPQ19PUF9B QlMsCisgICAgUkVMT0NfT1BfUFJFTCwKKyAgICBSRUxPQ19PUF9QQUdFLAorfTsKKworc3RhdGlj IHU2NCBkb19yZWxvYyhlbnVtIGFhcmNoNjRfcmVsb2Nfb3AgcmVsb2Nfb3AsIHZvaWQgKnBsYWNl LCB1NjQgdmFsKQoreworICAgIHN3aXRjaCAoIHJlbG9jX29wICkKKyAgICB7CisgICAgY2FzZSBS RUxPQ19PUF9BQlM6CisgICAgICAgIHJldHVybiB2YWw7CisKKyAgICBjYXNlIFJFTE9DX09QX1BS RUw6CisgICAgICAgIHJldHVybiB2YWwgLSAodTY0KXBsYWNlOworCisgICAgY2FzZSBSRUxPQ19P UF9QQUdFOgorICAgICAgICByZXR1cm4gKHZhbCAmIH4weGZmZikgLSAoKHU2NClwbGFjZSAmIH4w eGZmZik7CisKKyAgICBjYXNlIFJFTE9DX09QX05PTkU6CisgICAgICAgIHJldHVybiAwOworCisg ICAgfQorCisgICAgZHByaW50ayhYRU5MT0dfREVCVUcsIExJVkVQQVRDSCAiZG9fcmVsb2M6IHVu a25vd24gcmVsb2NhdGlvbiBvcGVyYXRpb24gJWRcbiIsIHJlbG9jX29wKTsKKworICAgIHJldHVy biAwOworfQorCitzdGF0aWMgaW50IHJlbG9jX2RhdGEoZW51bSBhYXJjaDY0X3JlbG9jX29wIG9w LCB2b2lkICpwbGFjZSwgdTY0IHZhbCwgaW50IGxlbikKK3sKKyAgICBzNjQgc3ZhbCA9IGRvX3Jl bG9jKG9wLCBwbGFjZSwgdmFsKTsKKworICAgIHN3aXRjaCAoIGxlbiApCisgICAgeworICAgIGNh c2UgMTY6CisgICAgICAgICooczE2ICopcGxhY2UgPSBzdmFsOworICAgICAgICBpZiAoIHN2YWwg PCBJTlQxNl9NSU4gfHwgc3ZhbCA+IFVJTlQxNl9NQVggKQorCSAgICAgICAgcmV0dXJuIC1FT1ZF UkZMT1c7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAzMjoKKyAgICAgICAgKihzMzIgKilw bGFjZSA9IHN2YWw7CisgICAgICAgIGlmICggc3ZhbCA8IElOVDMyX01JTiB8fCBzdmFsID4gVUlO VDMyX01BWCApCisJICAgICAgICByZXR1cm4gLUVPVkVSRkxPVzsKKyAgICAgICAgYnJlYWs7CisK KyAgICBjYXNlIDY0OgorICAgICAgICAqKHM2NCAqKXBsYWNlID0gc3ZhbDsKKyAgICAgICAgYnJl YWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgTElWRVBB VENIICJJbnZhbGlkIGxlbmd0aCAoJWQpIGZvciBkYXRhIHJlbG9jYXRpb25cbiIsIGxlbik7Cisg ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitlbnVtIGFhcmNo NjRfaW5zbl9tb3Z3X2ltbV90eXBlIHsKKyAgICBBQVJDSDY0X0lOU05fSU1NX01PVk5aLAorICAg IEFBUkNINjRfSU5TTl9JTU1fTU9WS1osCit9OworCitzdGF0aWMgaW50IHJlbG9jX2luc25fbW92 dyhlbnVtIGFhcmNoNjRfcmVsb2Nfb3Agb3AsIHZvaWQgKmRlc3QsIHU2NCB2YWwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgbHNiLCBlbnVtIGFhcmNoNjRfaW5zbl9tb3Z3X2ltbV90 eXBlIGltbV90eXBlKQoreworICAgIHU2NCBpbW07CisgICAgczY0IHN2YWw7CisgICAgdTMyIGlu c24gPSAqKHUzMiAqKWRlc3Q7CisKKyAgICBzdmFsID0gZG9fcmVsb2Mob3AsIGRlc3QsIHZhbCk7 CisgICAgaW1tID0gc3ZhbCA+PiBsc2I7CisKKyAgICBpZiAoIGltbV90eXBlID09IEFBUkNINjRf SU5TTl9JTU1fTU9WTlogKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogRm9yIHNpZ25l ZCBNT1ZXIHJlbG9jYXRpb25zLCB3ZSBoYXZlIHRvIG1hbmlwdWxhdGUgdGhlCisgICAgICAgICAq IGluc3RydWN0aW9uIGVuY29kaW5nIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB0aGUKKyAg ICAgICAgICogaW1tZWRpYXRlIGlzIGxlc3MgdGhhbiB6ZXJvLgorICAgICAgICAgKi8KKyAgICAg ICAgaW5zbiAmPSB+KDMgPDwgMjkpOworICAgICAgICBpZiAoIHN2YWwgPj0gMCApCisgICAgICAg IHsKKyAgICAgICAgICAgIC8qID49MDogU2V0IHRoZSBpbnN0cnVjdGlvbiB0byBNT1ZaIChvcGNv ZGUgMTBiKS4gKi8KKyAgICAgICAgICAgIGluc24gfD0gMiA8PCAyOTsKKyAgICAgICAgfQorICAg ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiA8MDog U2V0IHRoZSBpbnN0cnVjdGlvbiB0byBNT1ZOIChvcGNvZGUgMDBiKS4KKyAgICAgICAgICAgICAq ICAgICBTaW5jZSB3ZSd2ZSBtYXNrZWQgdGhlIG9wY29kZSBhbHJlYWR5LCB3ZQorICAgICAgICAg ICAgICogICAgIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgb3RoZXIgdGhhbgorICAgICAgICAg ICAgICogICAgIGludmVydGluZyB0aGUgbmV3IGltbWVkaWF0ZSBmaWVsZC4KKyAgICAgICAgICAg ICAqLworICAgICAgICAgICAgaW1tID0gfmltbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8q IFVwZGF0ZSB0aGUgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgbmV3IGVuY29kaW5nLiAqLworICAgIGlu c24gPSBhYXJjaDY0X2luc25fZW5jb2RlX2ltbWVkaWF0ZShBQVJDSDY0X0lOU05fSU1NXzE2LCBp bnNuLCBpbW0pOworICAgICoodTMyICopZGVzdCA9IGluc247CisKKyAgICBpZiAoIGltbSA+IFVJ TlQxNl9NQVggKQorICAgICAgICByZXR1cm4gLUVPVkVSRkxPVzsKKworICAgIHJldHVybiAwOwor fQorCitzdGF0aWMgaW50IHJlbG9jX2luc25faW1tKGVudW0gYWFyY2g2NF9yZWxvY19vcCBvcCwg dm9pZCAqZGVzdCwgdTY0IHZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxzYiwg aW50IGxlbiwgZW51bSBhYXJjaDY0X2luc25faW1tX3R5cGUgaW1tX3R5cGUpCit7CisgICAgdTY0 IGltbSwgaW1tX21hc2s7CisgICAgczY0IHN2YWw7CisgICAgdTMyIGluc24gPSAqKHUzMiAqKWRl c3Q7CisKKyAgICAvKiBDYWxjdWxhdGUgdGhlIHJlbG9jYXRpb24gdmFsdWUuICovCisgICAgc3Zh bCA9IGRvX3JlbG9jKG9wLCBkZXN0LCB2YWwpOworICAgIHN2YWwgPj49IGxzYjsKKworICAgIC8q IEV4dHJhY3QgdGhlIHZhbHVlIGJpdHMgYW5kIHNoaWZ0IHRoZW0gdG8gYml0IDAuICovCisgICAg aW1tX21hc2sgPSAoQklUKGxzYiArIGxlbikgLSAxKSA+PiBsc2I7CisgICAgaW1tID0gc3ZhbCAm IGltbV9tYXNrOworCisgICAgLyogVXBkYXRlIHRoZSBpbnN0cnVjdGlvbidzIGltbWVkaWF0ZSBm aWVsZC4gKi8KKyAgICBpbnNuID0gYWFyY2g2NF9pbnNuX2VuY29kZV9pbW1lZGlhdGUoaW1tX3R5 cGUsIGluc24sIGltbSk7CisgICAgKih1MzIgKilkZXN0ID0gaW5zbjsKKworICAgIC8qCisgICAg ICogRXh0cmFjdCB0aGUgdXBwZXIgdmFsdWUgYml0cyAoaW5jbHVkaW5nIHRoZSBzaWduIGJpdCkg YW5kCisgICAgICogc2hpZnQgdGhlbSB0byBiaXQgMC4KKyAgICAgKi8KKyAgICBzdmFsID0gKHM2 NCkoc3ZhbCAmIH4oaW1tX21hc2sgPj4gMSkpID4+IChsZW4gLSAxKTsKKworICAgIC8qCisgICAg ICogT3ZlcmZsb3cgaGFzIG9jY3VycmVkIGlmIHRoZSB1cHBlciBiaXRzIGFyZSBub3QgYWxsIGVx dWFsIHRvCisgICAgICogdGhlIHNpZ24gYml0IG9mIHRoZSB2YWx1ZS4KKyAgICAgKi8KKyAgICBp ZiAoICh1NjQpKHN2YWwgKyAxKSA+PSAyICkKKyAgICAgICAgcmV0dXJuIC1FT1ZFUkZMT1c7Cisg ICAgcmV0dXJuIDA7Cit9CisKK2ludCBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtX3JlbGEoc3RydWN0 IGxpdmVwYXRjaF9lbGYgKmVsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGxpdmVwYXRjaF9lbGZfc2VjICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKnJlbGEpCit7CisgICAg Y29uc3QgRWxmX1JlbEEgKnI7CisgICAgdW5zaWduZWQgaW50IHN5bW5keCwgaTsKKyAgICB1aW50 NjRfdCB2YWw7CisgICAgdm9pZCAqZGVzdDsKKyAgICBib29sX3Qgb3ZlcmZsb3dfY2hlY2s7CisK KyAgICBmb3IgKCBpID0gMDsgaSA8IChyZWxhLT5zZWMtPnNoX3NpemUgLyByZWxhLT5zZWMtPnNo X2VudHNpemUpOyBpKysgKQorICAgIHsKKyAgICAgICAgaW50IG92ZiA9IDA7CisKKyAgICAgICAg ciA9IHJlbGEtPmRhdGEgKyBpICogcmVsYS0+c2VjLT5zaF9lbnRzaXplOworCisgICAgICAgIHN5 bW5keCA9IEVMRjY0X1JfU1lNKHItPnJfaW5mbyk7CisKKyAgICAgICAgaWYgKCBzeW1uZHggPiBl bGYtPm5zeW0gKQorICAgICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19FUlIsIExJ VkVQQVRDSCAiJXM6IFJlbGF0aXZlIHJlbG9jYXRpb24gd2FudHMgc3ltYm9sQCV1IHdoaWNoIGlz IHBhc3QgZW5kIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgZWxmLT5uYW1lLCBzeW1uZHgpOwor ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKworICAgICAgICBkZXN0ID0g YmFzZS0+bG9hZF9hZGRyICsgci0+cl9vZmZzZXQ7IC8qIFAgKi8KKyAgICAgICAgdmFsID0gZWxm LT5zeW1bc3ltbmR4XS5zeW0tPnN0X3ZhbHVlICsgIHItPnJfYWRkZW5kOyAvKiBTK0EgKi8KKwor ICAgICAgICBvdmVyZmxvd19jaGVjayA9IHRydWU7CisKKyAgICAgICAgLyogQVJNNjQgb3BlcmF0 aW9ucyBhdCBtaW5pbXVtIGFyZSBhbHdheXMgMzItYml0LiAqLworICAgICAgICBpZiAoIHItPnJf b2Zmc2V0ID49IGJhc2UtPnNlYy0+c2hfc2l6ZSB8fAorICAgICAgICAgICAgKHItPnJfb2Zmc2V0 ICsgc2l6ZW9mKHVpbnQzMl90KSkgPiBiYXNlLT5zZWMtPnNoX3NpemUgKQorICAgICAgICAgICAg Z290byBiYWRfb2Zmc2V0OworCisgICAgICAgIHN3aXRjaCAoIEVMRjY0X1JfVFlQRShyLT5yX2lu Zm8pICkKKyAgICAgICAgeworICAgICAgICAvKiBEYXRhICovCisgICAgICAgIGNhc2UgUl9BQVJD SDY0X0FCUzY0OgorICAgICAgICAgICAgaWYgKCByLT5yX29mZnNldCArIHNpemVvZih1aW50NjRf dCkgPiBiYXNlLT5zZWMtPnNoX3NpemUgKQorICAgICAgICAgICAgICAgIGdvdG8gYmFkX29mZnNl dDsKKyAgICAgICAgICAgIG92ZXJmbG93X2NoZWNrID0gZmFsc2U7CisgICAgICAgICAgICBvdmYg PSByZWxvY19kYXRhKFJFTE9DX09QX0FCUywgZGVzdCwgdmFsLCA2NCk7CisgICAgICAgICAgICBi cmVhazsKKworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9BQlMzMjoKKyAgICAgICAgICAgIG92ZiA9 IHJlbG9jX2RhdGEoUkVMT0NfT1BfQUJTLCBkZXN0LCB2YWwsIDMyKTsKKyAgICAgICAgICAgIGJy ZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X0FCUzE2OgorICAgICAgICAgICAgb3ZmID0g cmVsb2NfZGF0YShSRUxPQ19PUF9BQlMsIGRlc3QsIHZhbCwgMTYpOworICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfUFJFTDY0OgorICAgICAgICAgICAgaWYgKCBy LT5yX29mZnNldCArIHNpemVvZih1aW50NjRfdCkgPiBiYXNlLT5zZWMtPnNoX3NpemUgKQorICAg ICAgICAgICAgICAgIGdvdG8gYmFkX29mZnNldDsKKyAgICAgICAgICAgIG92ZXJmbG93X2NoZWNr ID0gZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19kYXRhKFJFTE9DX09QX1BSRUwsIGRl c3QsIHZhbCwgNjQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX0FBUkNI NjRfUFJFTDMyOgorICAgICAgICAgICAgb3ZmID0gcmVsb2NfZGF0YShSRUxPQ19PUF9QUkVMLCBk ZXN0LCB2YWwsIDMyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJD SDY0X1BSRUwxNjoKKyAgICAgICAgICAgIG92ZiA9IHJlbG9jX2RhdGEoUkVMT0NfT1BfUFJFTCwg ZGVzdCwgdmFsLCAxNik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBNT1ZXIGlu c3RydWN0aW9uIHJlbG9jYXRpb25zLiAqLworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9NT1ZXX1VB QlNfRzBfTkM6CisgICAgICAgICAgICBvdmVyZmxvd19jaGVjayA9IGZhbHNlOworICAgICAgICAg ICAgLyogRmFsbHRocm91Z2guICovCisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfTU9WV19VQUJT X0cwOgorICAgICAgICAgICAgb3ZmID0gcmVsb2NfaW5zbl9tb3Z3KFJFTE9DX09QX0FCUywgZGVz dCwgdmFsLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFBUkNINjRfSU5T Tl9JTU1fTU9WS1opOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX0FBUkNI NjRfTU9WV19VQUJTX0cxX05DOgorICAgICAgICAgICAgb3ZlcmZsb3dfY2hlY2sgPSBmYWxzZTsK KyAgICAgICAgICAgIC8qIEZhbGx0aHJvdWdoLiAqLworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0 X01PVldfVUFCU19HMToKKyAgICAgICAgICAgIG92ZiA9IHJlbG9jX2luc25fbW92dyhSRUxPQ19P UF9BQlMsIGRlc3QsIHZhbCwgMTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QUFSQ0g2NF9JTlNOX0lNTV9NT1ZLWik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj YXNlIFJfQUFSQ0g2NF9NT1ZXX1VBQlNfRzJfTkM6CisgICAgICAgICAgICBvdmVyZmxvd19jaGVj ayA9IGZhbHNlOworICAgICAgICAgICAgLyogRmFsbHRocm91Z2guICovCisKKyAgICAgICAgY2Fz ZSBSX0FBUkNINjRfTU9WV19VQUJTX0cyOgorICAgICAgICAgICAgb3ZmID0gcmVsb2NfaW5zbl9t b3Z3KFJFTE9DX09QX0FCUywgZGVzdCwgdmFsLCAzMiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NX01PVktaKTsKKyAgICAgICAgICAgIGJyZWFrOwor CisgICAgICAgIGNhc2UgUl9BQVJDSDY0X01PVldfVUFCU19HMzoKKyAgICAgICAgICAgIC8qIFdl J3JlIHVzaW5nIHRoZSB0b3AgYml0cyBzbyB3ZSBjYW4ndCBvdmVyZmxvdy4gKi8KKyAgICAgICAg ICAgIG92ZXJmbG93X2NoZWNrID0gZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNu X21vdncoUkVMT0NfT1BfQUJTLCBkZXN0LCB2YWwsIDQ4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEFBUkNINjRfSU5TTl9JTU1fTU9WS1opOworICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfTU9WV19TQUJTX0cwOgorICAgICAgICAgICAgb3Zm ID0gcmVsb2NfaW5zbl9tb3Z3KFJFTE9DX09QX0FCUywgZGVzdCwgdmFsLCAwLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFBUkNINjRfSU5TTl9JTU1fTU9WTlopOworICAgICAg ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfTU9WV19TQUJTX0cxOgorICAg ICAgICAgICAgb3ZmID0gcmVsb2NfaW5zbl9tb3Z3KFJFTE9DX09QX0FCUywgZGVzdCwgdmFsLCAx NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NX01P Vk5aKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X01PVldf U0FCU19HMjoKKyAgICAgICAgICAgIG92ZiA9IHJlbG9jX2luc25fbW92dyhSRUxPQ19PUF9BQlMs IGRlc3QsIHZhbCwgMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUFSQ0g2 NF9JTlNOX0lNTV9NT1ZOWik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJf QUFSQ0g2NF9NT1ZXX1BSRUxfRzBfTkM6CisgICAgICAgICAgICBvdmVyZmxvd19jaGVjayA9IGZh bHNlOworICAgICAgICAgICAgb3ZmID0gcmVsb2NfaW5zbl9tb3Z3KFJFTE9DX09QX1BSRUwsIGRl c3QsIHZhbCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQVJDSDY0X0lO U05fSU1NX01PVktaKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUl9BQVJD SDY0X01PVldfUFJFTF9HMDoKKyAgICAgICAgICAgIG92ZiA9IHJlbG9jX2luc25fbW92dyhSRUxP Q19PUF9QUkVMLCBkZXN0LCB2YWwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQUFSQ0g2NF9JTlNOX0lNTV9NT1ZOWik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg ICBjYXNlIFJfQUFSQ0g2NF9NT1ZXX1BSRUxfRzFfTkM6CisgICAgICAgICAgICBvdmVyZmxvd19j aGVjayA9IGZhbHNlOworICAgICAgICAgICAgb3ZmID0gcmVsb2NfaW5zbl9tb3Z3KFJFTE9DX09Q X1BSRUwsIGRlc3QsIHZhbCwgMTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QUFSQ0g2NF9JTlNOX0lNTV9NT1ZLWik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj YXNlIFJfQUFSQ0g2NF9NT1ZXX1BSRUxfRzE6CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNu X21vdncoUkVMT0NfT1BfUFJFTCwgZGVzdCwgdmFsLCAxNiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NX01PVk5aKTsKKyAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X01PVldfUFJFTF9HMl9OQzoKKyAgICAgICAgICAg IG92ZXJmbG93X2NoZWNrID0gZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX21v dncoUkVMT0NfT1BfUFJFTCwgZGVzdCwgdmFsLCAzMiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NX01PVktaKTsKKyAgICAgICAgICAgIGJyZWFrOwor CisgICAgICAgIGNhc2UgUl9BQVJDSDY0X01PVldfUFJFTF9HMjoKKyAgICAgICAgICAgIG92ZiA9 IHJlbG9jX2luc25fbW92dyhSRUxPQ19PUF9QUkVMLCBkZXN0LCB2YWwsIDMyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFBUkNINjRfSU5TTl9JTU1fTU9WTlopOworICAgICAg ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfTU9WV19QUkVMX0czOgorICAg ICAgICAgICAgLyogV2UncmUgdXNpbmcgdGhlIHRvcCBiaXRzIHNvIHdlIGNhbid0IG92ZXJmbG93 LiAqLworICAgICAgICAgICAgb3ZlcmZsb3dfY2hlY2sgPSBmYWxzZTsKKyAgICAgICAgICAgIG92 ZiA9IHJlbG9jX2luc25fbW92dyhSRUxPQ19PUF9QUkVMLCBkZXN0LCB2YWwsIDQ4LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFBUkNINjRfSU5TTl9JTU1fTU9WTlopOworICAg ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogSW5zdHJ1Y3Rpb25zLiAqLworICAgICAgICBj YXNlIFJfQUFSQ0g2NF9BRFJfUFJFTF9MTzIxOgorICAgICAgICAgICAgb3ZmID0gcmVsb2NfaW5z bl9pbW0oUkVMT0NfT1BfUFJFTCwgZGVzdCwgdmFsLCAwLCAyMSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEFBUkNINjRfSU5TTl9JTU1fQURSKTsKKyAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X0FEUl9QUkVMX1BHX0hJMjFfTkM6CisgICAgICAg ICAgICBvdmVyZmxvd19jaGVjayA9IGZhbHNlOworICAgICAgICBjYXNlIFJfQUFSQ0g2NF9BRFJf UFJFTF9QR19ISTIxOgorICAgICAgICAgICAgb3ZmID0gcmVsb2NfaW5zbl9pbW0oUkVMT0NfT1Bf UEFHRSwgZGVzdCwgdmFsLCAxMiwgMjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBQVJDSDY0X0lOU05fSU1NX0FEUik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj YXNlIFJfQUFSQ0g2NF9MRFNUOF9BQlNfTE8xMl9OQzoKKyAgICAgICAgICAgIC8qIEZhbGx0aHJv dWdoLiAqLworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X0FERF9BQlNfTE8xMl9OQzoKKyAgICAg ICAgICAgIG92ZXJmbG93X2NoZWNrID0gZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19p bnNuX2ltbShSRUxPQ19PUF9BQlMsIGRlc3QsIHZhbCwgMCwgMTIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NXzEyKTsKKyAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgIGNhc2UgUl9BQVJDSDY0X0xEU1QxNl9BQlNfTE8xMl9OQzoKKyAgICAgICAg ICAgIG92ZXJmbG93X2NoZWNrID0gZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNu X2ltbShSRUxPQ19PUF9BQlMsIGRlc3QsIHZhbCwgMSwgMTEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NXzEyKTsKKyAgICAgICAgICAgIGJyZWFrOwor CisgICAgICAgIGNhc2UgUl9BQVJDSDY0X0xEU1QzMl9BQlNfTE8xMl9OQzoKKyAgICAgICAgICAg IG92ZXJmbG93X2NoZWNrID0gZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX2lt bShSRUxPQ19PUF9BQlMsIGRlc3QsIHZhbCwgMiwgMTAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NXzEyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg ICAgICAgIGNhc2UgUl9BQVJDSDY0X0xEU1Q2NF9BQlNfTE8xMl9OQzoKKyAgICAgICAgICAgIG92 ZXJmbG93X2NoZWNrID0gZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX2ltbShS RUxPQ19PUF9BQlMsIGRlc3QsIHZhbCwgMywgOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEFBUkNINjRfSU5TTl9JTU1fMTIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgY2FzZSBSX0FBUkNINjRfTERTVDEyOF9BQlNfTE8xMl9OQzoKKyAgICAgICAgICAgIG92ZXJm bG93X2NoZWNrID0gZmFsc2U7CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX2ltbShSRUxP Q19PUF9BQlMsIGRlc3QsIHZhbCwgNCwgOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEFBUkNINjRfSU5TTl9JTU1fMTIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg Y2FzZSBSX0FBUkNINjRfVFNUQlIxNDoKKyAgICAgICAgICAgIG92ZiA9IHJlbG9jX2luc25faW1t KFJFTE9DX09QX1BSRUwsIGRlc3QsIHZhbCwgMiwgMTksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBBQVJDSDY0X0lOU05fSU1NXzE0KTsKKyAgICAgICAgICAgIGJyZWFrOworCisg ICAgICAgIGNhc2UgUl9BQVJDSDY0X0NPTkRCUjE5OgorICAgICAgICAgICAgb3ZmID0gcmVsb2Nf aW5zbl9pbW0oUkVMT0NfT1BfUFJFTCwgZGVzdCwgdmFsLCAyLCAxOSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFBUkNINjRfSU5TTl9JTU1fMTkpOworICAgICAgICAgICAgYnJl YWs7CisKKyAgICAgICAgY2FzZSBSX0FBUkNINjRfSlVNUDI2OgorICAgICAgICBjYXNlIFJfQUFS Q0g2NF9DQUxMMjY6CisgICAgICAgICAgICBvdmYgPSByZWxvY19pbnNuX2ltbShSRUxPQ19PUF9Q UkVMLCBkZXN0LCB2YWwsIDIsIDI2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg QUFSQ0g2NF9JTlNOX0lNTV8yNik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZh dWx0OgorICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVzOiBVbmhh bmRsZWQgcmVsb2NhdGlvbiAlbHVcbiIsCisgICAgICAgICAgICAgICAgICAgIGVsZi0+bmFtZSwg RUxGNjRfUl9UWVBFKHItPnJfaW5mbykpOworICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQ OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBvdmVyZmxvd19jaGVjayAmJiBvdmYgPT0gLUVP VkVSRkxPVyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0VSUiwgTElW RVBBVENIICIlczogT3ZlcmZsb3cgaW4gcmVsb2NhdGlvbiAldSBpbiAlcyBmb3IgJXMhXG4iLAor ICAgICAgICAgICAgICAgICAgICBlbGYtPm5hbWUsIGksIHJlbGEtPm5hbWUsIGJhc2UtPm5hbWUp OworICAgICAgICAgICAgcmV0dXJuIG92ZjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g MDsKKworIGJhZF9vZmZzZXQ6CisgICAgZHByaW50ayhYRU5MT0dfRVJSLCBMSVZFUEFUQ0ggIiVz OiBSZWxhdGl2ZSByZWxvY2F0aW9uIG9mZnNldCBpcyBwYXN0ICVzIHNlY3Rpb24hXG4iLAorICAg ICAgICAgICAgZWxmLT5uYW1lLCBiYXNlLT5uYW1lKTsKKyAgICByZXR1cm4gLUVJTlZBTDsKK30K KworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTog IkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10 YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9t YWluLmMgYi94ZW4vYXJjaC9hcm0vZG9tYWluLmMKaW5kZXggMjBiYjJiYS4uNjA3ZWU1OSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gvYXJtL2RvbWFpbi5jCisrKyBiL3hlbi9hcmNoL2FybS9kb21haW4u YwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgPHhlbi9oeXBlcmNhbGwuaD4KICNpbmNsdWRl IDx4ZW4vaW5pdC5oPgogI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4ZW4vbGl2ZXBh dGNoLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3NvZnRpcnEuaD4K ICNpbmNsdWRlIDx4ZW4vd2FpdC5oPgpAQCAtNTUsNiArNTYsMTEgQEAgdm9pZCBpZGxlX2xvb3Ao dm9pZCkKIAogICAgICAgICBkb190YXNrbGV0KCk7CiAgICAgICAgIGRvX3NvZnRpcnEoKTsKKyAg ICAgICAgLyoKKyAgICAgICAgICogV2UgTVVTVCBiZSBsYXN0IChvciBiZWZvcmUgZHNiLCB3Zmkp LiBPdGhlcndpc2UgYWZ0ZXIgd2UgZ2V0IHRoZQorICAgICAgICAgKiBzb2Z0aXJxIHdlIHdvdWxk IGV4ZWN1dGUgZHNiLHdmaSAoYW5kIHNsZWVwKSBhbmQgbm90IHBhdGNoLgorICAgICAgICAgKi8K KyAgICAgICAgY2hlY2tfZm9yX2xpdmVwYXRjaF93b3JrKCk7CiAgICAgfQogfQogCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC9hcm0vbGl2ZXBhdGNoLmMgYi94ZW4vYXJjaC9hcm0vbGl2ZXBhdGNoLmMK aW5kZXggN2YwNjdhMC4uNjc5YWJmMSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2xpdmVwYXRj aC5jCisrKyBiL3hlbi9hcmNoL2FybS9saXZlcGF0Y2guYwpAQCAtNiw0NCArNiw4MiBAQAogI2lu Y2x1ZGUgPHhlbi9saWIuaD4KICNpbmNsdWRlIDx4ZW4vbGl2ZXBhdGNoX2VsZi5oPgogI2luY2x1 ZGUgPHhlbi9saXZlcGF0Y2guaD4KKyNpbmNsdWRlIDx4ZW4vdm1hcC5oPgorCisjaW5jbHVkZSA8 YXNtL2xpdmVwYXRjaC5oPgorI2luY2x1ZGUgPGFzbS9tbS5oPgorCit2b2lkICp2bWFwX29mX3hl bl90ZXh0OwogCiBpbnQgYXJjaF9saXZlcGF0Y2hfcXVpZXNjZSh2b2lkKQogewotICAgIHJldHVy biAtRU5PU1lTOworICAgIG1mbl90IHRleHRfbWZuOworICAgIHVuc2lnbmVkIGludCB0ZXh0X29y ZGVyOworCisgICAgaWYgKCB2bWFwX29mX3hlbl90ZXh0ICkKKyAgICAgICAgcmV0dXJuIC1FSU5W QUw7CisKKyAgICB0ZXh0X21mbiA9IF9tZm4odmlydF90b19tZm4oX3N0YXJ0KSk7CisgICAgdGV4 dF9vcmRlciA9IGdldF9vcmRlcl9mcm9tX2J5dGVzKF9lbmQgLSBfc3RhcnQpOworCisgICAgLyoK KyAgICAgKiBUaGUgdGV4dCBzZWN0aW9uIGlzIHJlYWQtb25seS4gU28gcmUtbWFwIFhlbiB0byBi ZSBhYmxlIHRvIHBhdGNoCisgICAgICogdGhlIGNvZGUuCisgICAgICovCisgICAgdm1hcF9vZl94 ZW5fdGV4dCA9IF9fdm1hcCgmdGV4dF9tZm4sIDFVIDw8IHRleHRfb3JkZXIsIDEsIDEsIFBBR0Vf SFlQRVJWSVNPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZNQVBfREVGQVVMVCk7 CisKKyAgICBpZiAoICF2bWFwX29mX3hlbl90ZXh0ICkKKyAgICB7CisgICAgICAgIHByaW50ayhY RU5MT0dfRVJSIExJVkVQQVRDSCAiRmFpbGVkIHRvIHNldHVwIHZtYXAgb2YgaHlwZXJ2aXNvciEg KG9yZGVyPSV1KVxuIiwKKyAgICAgICAgICAgICAgIHRleHRfb3JkZXIpOworICAgICAgICByZXR1 cm4gLUVOT01FTTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBhcmNoX2xpdmVw YXRjaF9yZXZpdmUodm9pZCkKIHsKKyAgICAvKgorICAgICAqIE51a2UgdGhlIGluc3RydWN0aW9u IGNhY2hlLiBEYXRhIGNhY2hlIGhhcyBiZWVuIGNsZWFuZWQgYmVmb3JlIGluCisgICAgICogYXJj aF9saXZlcGF0Y2hfW2FwcGx5fHJldmVydF0uCisgICAgICovCisgICAgaW52YWxpZGF0ZV9pY2Fj aGUoKTsKKworICAgIGlmICggdm1hcF9vZl94ZW5fdGV4dCApCisgICAgICAgIHZ1bm1hcCh2bWFw X29mX3hlbl90ZXh0KTsKKworICAgIHZtYXBfb2ZfeGVuX3RleHQgPSBOVUxMOwogfQogCiBpbnQg YXJjaF9saXZlcGF0Y2hfdmVyaWZ5X2Z1bmMoY29uc3Qgc3RydWN0IGxpdmVwYXRjaF9mdW5jICpm dW5jKQogewotICAgIHJldHVybiAtRU5PU1lTOwotfQorICAgIC8qIElmIE5PUGluZyBvbmx5IGRv IHVwIHRvIG1heGltdW0gYW1vdW50IHdlIGNhbiBwdXQgaW4gdGhlIC0+b3BhcXVlLiAqLworICAg IGlmICggIWZ1bmMtPm5ld19hZGRyICYmIChmdW5jLT5uZXdfc2l6ZSA+IHNpemVvZihmdW5jLT5v cGFxdWUpIHx8CisgICAgICAgICBmdW5jLT5uZXdfc2l6ZSAlIEFSQ0hfUEFUQ0hfSU5TTl9TSVpF KSApCisgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsKIAotdm9pZCBhcmNoX2xpdmVwYXRjaF9h cHBseShzdHJ1Y3QgbGl2ZXBhdGNoX2Z1bmMgKmZ1bmMpCi17Ci19CisgICAgaWYgKCBmdW5jLT5v bGRfc2l6ZSA8IEFSQ0hfUEFUQ0hfSU5TTl9TSVpFICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CiAKLXZvaWQgYXJjaF9saXZlcGF0Y2hfcmV2ZXJ0KGNvbnN0IHN0cnVjdCBsaXZlcGF0Y2hfZnVu YyAqZnVuYykKLXsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBhcmNoX2xpdmVwYXRjaF9wb3N0 X2FjdGlvbih2b2lkKQogeworICAgIC8qIGFyY2hfbGl2ZXBhdGNoX3Jldml2ZSBoYXMgbnVrZWQg dGhlIGluc3RydWN0aW9uIGNhY2hlLiAqLwogfQogCiB2b2lkIGFyY2hfbGl2ZXBhdGNoX21hc2so dm9pZCkKIHsKKyAgICAvKiBNYXNrIFN5c3RlbSBFcnJvciAoU0Vycm9yKSAqLworICAgIGxvY2Fs X2Fib3J0X2Rpc2FibGUoKTsKIH0KIAogdm9pZCBhcmNoX2xpdmVwYXRjaF91bm1hc2sodm9pZCkK IHsKLX0KLQotaW50IGFyY2hfbGl2ZXBhdGNoX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0IGxpdmVw YXRjaF9lbGYgKmVsZikKLXsKLSAgICByZXR1cm4gLUVOT1NZUzsKKyAgICBsb2NhbF9hYm9ydF9l bmFibGUoKTsKIH0KIAogaW50IGFyY2hfbGl2ZXBhdGNoX3BlcmZvcm1fcmVsKHN0cnVjdCBsaXZl cGF0Y2hfZWxmICplbGYsCkBAIC01MywyMCArOTEsNDMgQEAgaW50IGFyY2hfbGl2ZXBhdGNoX3Bl cmZvcm1fcmVsKHN0cnVjdCBsaXZlcGF0Y2hfZWxmICplbGYsCiAgICAgcmV0dXJuIC1FTk9TWVM7 CiB9CiAKLWludCBhcmNoX2xpdmVwYXRjaF9wZXJmb3JtX3JlbGEoc3RydWN0IGxpdmVwYXRjaF9l bGYgKmVsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGxp dmVwYXRjaF9lbGZfc2VjICpiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgbGl2ZXBhdGNoX2VsZl9zZWMgKnJlbGEpCi17Ci0gICAgcmV0dXJuIC1FTk9T WVM7Ci19Ci0KIGludCBhcmNoX2xpdmVwYXRjaF9zZWN1cmUoY29uc3Qgdm9pZCAqdmEsIHVuc2ln bmVkIGludCBwYWdlcywgZW51bSB2YV90eXBlIHR5cGUpCiB7Ci0gICAgcmV0dXJuIC1FTk9TWVM7 CisgICAgdW5zaWduZWQgbG9uZyBzdGFydCA9ICh1bnNpZ25lZCBsb25nKXZhOworICAgIHVuc2ln bmVkIGludCBmbGFncyA9IDA7CisKKyAgICBBU1NFUlQodmEpOworICAgIEFTU0VSVChwYWdlcyk7 CisKKyAgICBzd2l0Y2ggKCB0eXBlICkKKyAgICB7CisgICAgY2FzZSBMSVZFUEFUQ0hfVkFfUlg6 CisgICAgICAgIGZsYWdzID0gUFRFX1JPOyAvKiBSIHNldCwgTlggY2xlYXIgKi8KKyAgICAgICAg YnJlYWs7CisKKyAgICBjYXNlIExJVkVQQVRDSF9WQV9SVzoKKyAgICAgICAgZmxhZ3MgPSBQVEVf Tlg7IC8qIFIgY2xlYXIsIE5YIHNldCAqLworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTElW RVBBVENIX1ZBX1JPOgorICAgICAgICBmbGFncyA9IFBURV9OWCB8IFBURV9STzsgLyogUiBzZXQs IE5YIHNldCAqLworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy biAtRUlOVkFMOworICAgIH0KKworICAgIHJldHVybiBtb2RpZnlfeGVuX21hcHBpbmdzKHN0YXJ0 LCBzdGFydCArIHBhZ2VzICogUEFHRV9TSVpFLCBmbGFncyk7CiB9CiAKIHZvaWQgX19pbml0IGFy Y2hfbGl2ZXBhdGNoX2luaXQodm9pZCkKIHsKKyAgICB2b2lkICpzdGFydCwgKmVuZDsKKworICAg IHN0YXJ0ID0gKHZvaWQgKilMSVZFUEFUQ0hfVk1BUF9TVEFSVDsKKyAgICBlbmQgPSAodm9pZCAq KUxJVkVQQVRDSF9WTUFQX0VORDsKKworICAgIHZtX2luaXRfdHlwZShWTUFQX1hFTiwgc3RhcnQs IGVuZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdHJhcHMuYyBiL3hlbi9h cmNoL2FybS90cmFwcy5jCmluZGV4IDM5YTA1ZmQuLmNkNmMyMjIgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL2FybS90cmFwcy5jCisrKyBiL3hlbi9hcmNoL2FybS90cmFwcy5jCkBAIC0yNCw2ICsyNCw3 IEBACiAjaW5jbHVkZSA8eGVuL3N5bWJvbHMuaD4KICNpbmNsdWRlIDx4ZW4vaXJxLmg+CiAjaW5j bHVkZSA8eGVuL2xpYi5oPgorI2luY2x1ZGUgPHhlbi9saXZlcGF0Y2guaD4KICNpbmNsdWRlIDx4 ZW4vbW0uaD4KICNpbmNsdWRlIDx4ZW4vZXJybm8uaD4KICNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxs Lmg+CkBAIC0yNjg5LDYgKzI2OTAsMTEgQEAgYXNtbGlua2FnZSB2b2lkIGxlYXZlX2h5cGVydmlz b3JfdGFpbCh2b2lkKQogICAgICAgICB9CiAgICAgICAgIGxvY2FsX2lycV9lbmFibGUoKTsKICAg ICAgICAgZG9fc29mdGlycSgpOworICAgICAgICAvKgorICAgICAgICAgKiBNdXN0IGJlIHRoZSBs YXN0IG9uZSAtIGFzIHRoZSBJUEkgd2lsbCB0cmlnZ2VyIHVzIHRvIGNvbWUgaGVyZQorICAgICAg ICAgKiBhbmQgd2Ugd2FudCB0byBwYXRjaCB0aGUgaHlwZXJ2aXNvciB3aXRoIGFsbW9zdCBubyBz dGFjay4KKyAgICAgICAgICovCisgICAgICAgIGNoZWNrX2Zvcl9saXZlcGF0Y2hfd29yaygpOwog ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9LY29uZmlnIGIveGVuL2NvbW1vbi9L Y29uZmlnCmluZGV4IDgxZTAwMTcuLjBmMjYwMjcgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vS2Nv bmZpZworKysgYi94ZW4vY29tbW9uL0tjb25maWcKQEAgLTIxNyw3ICsyMTcsNyBAQCBjb25maWcg Q1JZUFRPCiBjb25maWcgTElWRVBBVENICiAJYm9vbCAiTGl2ZSBwYXRjaGluZyBzdXBwb3J0IChU RUNIIFBSRVZJRVcpIgogCWRlZmF1bHQgbgotCWRlcGVuZHMgb24gWDg2ICYmIEhBU19CVUlMRF9J RCA9ICJ5IgorCWRlcGVuZHMgb24gIUFSTV8zMiAmJiBIQVNfQlVJTERfSUQgPSAieSIKIAktLS1o ZWxwLS0tCiAJICBBbGxvd3MgYSBydW5uaW5nIFhlbiBoeXBlcnZpc29yIHRvIGJlIGR5bmFtaWNh bGx5IHBhdGNoZWQgdXNpbmcKIAkgIGJpbmFyeSBwYXRjaGVzIHdpdGhvdXQgcmVib290aW5nLiBU aGlzIGlzIHByaW1hcmlseSB1c2VkIHRvIGJpbmFyaWx5CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9hc20tYXJtL2NvbmZpZy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9jb25maWcuaAppbmRleCA2 NzcyNTU1Li5iYTYxZjY1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2NvbmZpZy5o CisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vY29uZmlnLmgKQEAgLTgwLDYgKzgwLDcgQEAKICAq ICAgNE0gLSAgIDZNICAgRml4bWFwOiBzcGVjaWFsLXB1cnBvc2UgNEsgbWFwcGluZyBzbG90cwog ICogICA2TSAtICAgOE0gICBFYXJseSBib290IG1hcHBpbmcgb2YgRkRUCiAgKiAgIDhNIC0gIDEw TSAgIEVhcmx5IHJlbG9jYXRpb24gYWRkcmVzcyAodXNlZCB3aGVuIHJlbG9jYXRpbmcgWGVuKQor ICogICAgICAgICAgICAgICBhbmQgbGF0ZXIgZm9yIGxpdmVwYXRjaCB2bWFwIChpZiBjb21waWxl ZCBpbikKICAqCiAgKiBBUk0zMiBsYXlvdXQ6CiAgKiAgIDAgIC0gIDEwTSAgIDxDT01NT04+CkBA IC0xMTMsNiArMTE0LDEwIEBACiAjZGVmaW5lIEZJWE1BUF9BRERSKG4pICAgICAgICAoX0FUKHZh ZGRyX3QsMHgwMDQwMDAwMCkgKyAobikgKiBQQUdFX1NJWkUpCiAjZGVmaW5lIEJPT1RfRkRUX1ZJ UlRfU1RBUlQgICAgX0FUKHZhZGRyX3QsMHgwMDYwMDAwMCkKICNkZWZpbmUgQk9PVF9SRUxPQ19W SVJUX1NUQVJUICBfQVQodmFkZHJfdCwweDAwODAwMDAwKQorI2lmZGVmIENPTkZJR19MSVZFUEFU Q0gKKyNkZWZpbmUgTElWRVBBVENIX1ZNQVBfU1RBUlQgICBfQVQodmFkZHJfdCwweDAwODAwMDAw KQorI2RlZmluZSBMSVZFUEFUQ0hfVk1BUF9FTkQgICAgIChMSVZFUEFUQ0hfVk1BUF9TVEFSVCAr IE1CKDIpKQorI2VuZGlmCiAKICNkZWZpbmUgSFlQRVJWSVNPUl9WSVJUX1NUQVJUICBYRU5fVklS VF9TVEFSVAogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2xpdmVwYXRjaC5oIGIv eGVuL2luY2x1ZGUvYXNtLWFybS9saXZlcGF0Y2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi45MjljN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFy bS9saXZlcGF0Y2guaApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2 IE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor ICovCisKKyNpZm5kZWYgX19YRU5fQVJNX0xJVkVQQVRDSF9IX18KKyNkZWZpbmUgX19YRU5fQVJN X0xJVkVQQVRDSF9IX18KKworLyogT24gQVJNMzIsNjQgaW5zdHJ1Y3Rpb25zIGFyZSBhbHdheXMg NCBieXRlcyBsb25nLiAqLworI2RlZmluZSBBUkNIX1BBVENIX0lOU05fU0laRSA0CisKKy8qCisg KiBUaGUgdmEgb2YgdGhlIGh5cGVydmlzb3IgLnRleHQgcmVnaW9uLiBXZSBuZWVkIHRoaXMgYXMg dGhlCisgKiBub3JtYWwgdmEgYXJlIHdyaXRlIHByb3RlY3RlZC4KKyAqLworZXh0ZXJuIHZvaWQg KnZtYXBfb2ZfeGVuX3RleHQ7CisKKyNlbmRpZiAvKiBfX1hFTl9BUk1fTElWRVBBVENIX0hfXyAq LworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxl OiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50 LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hl bi9lbGZzdHJ1Y3RzLmggYi94ZW4vaW5jbHVkZS94ZW4vZWxmc3RydWN0cy5oCmluZGV4IDVmMjA4 MmUuLjczMjk5ODcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9lbGZzdHJ1Y3RzLmgKKysr IGIveGVuL2luY2x1ZGUveGVuL2VsZnN0cnVjdHMuaApAQCAtMTc3LDYgKzE3Nyw3IEBAIHR5cGVk ZWYgc3RydWN0IHsKICNkZWZpbmUgRU1fSUFfNjQJNTAJCS8qIEludGVsIE1lcmNlZCAqLwogI2Rl ZmluZSBFTV9YODZfNjQJNjIJCS8qIEFNRCB4ODYtNjQgYXJjaGl0ZWN0dXJlICovCiAjZGVmaW5l IEVNX1ZBWAkJNzUJCS8qIERFQyBWQVggKi8KKyNkZWZpbmUgRU1fQUFSQ0g2NAkxODMJCS8qIEFS TSA2NC1iaXQgKi8KIAogLyogVmVyc2lvbiAqLwogI2RlZmluZSBFVl9OT05FCQkwCQkvKiBJbnZh bGlkICovCkBAIC0zNTMsMTIgKzM1NCw2NiBAQCB0eXBlZGVmIHN0cnVjdCB7CiAjZGVmaW5lCUVM RjY0X1JfVFlQRShpbmZvKQkoKGluZm8pICYgMHhGRkZGRkZGRikKICNkZWZpbmUgRUxGNjRfUl9J TkZPKHMsdCkgCSgoKHMpIDw8IDMyKSArICh1X2ludDMyX3QpKHQpKQogCi0vKiB4ODYtNjQgcmVs b2NhdGlvbiB0eXBlcy4gV2UgbGlzdCBvbmx5IHRoZSBvbmVzIExpdmUgUGF0Y2ggaW1wbGVtZW50 cy4gKi8KKy8qCisgKiBSZWxvY2F0aW9uIHR5cGVzIGZvciB4ODZfNjQgYW5kIEFSTSA2NC4gV2Ug bGlzdCBvbmx5IHRoZSBvbmVzIExpdmUgUGF0Y2gKKyAqIGltcGxlbWVudHMuCisgKi8KICNkZWZp bmUgUl9YODZfNjRfTk9ORQkJMAkvKiBObyByZWxvYyAqLwogI2RlZmluZSBSX1g4Nl82NF82NAkg ICAgCTEJLyogRGlyZWN0IDY0IGJpdCAgKi8KICNkZWZpbmUgUl9YODZfNjRfUEMzMgkJMgkvKiBQ QyByZWxhdGl2ZSAzMiBiaXQgc2lnbmVkICovCiAjZGVmaW5lIFJfWDg2XzY0X1BMVDMyCQk0CS8q IDMyIGJpdCBQTFQgYWRkcmVzcyAqLwogCisvKgorICogUyAtIGFkZHJlc3Mgb2Ygc3ltYm9sLgor ICogQSAtIGFkZGVuZCBmb3IgcmVsb2NhdGlvbiAocl9hZGRlbmQpCisgKiBQIC0gYWRkcmVzcyBv ZiB0aGUgZGVzdCBiZWluZyByZWxvY2F0ZWQgKGRlcmlldmVkIGZyb20gcl9vZmZzZXQpCisgKiBO QyAtICBObyBjaGVjayBmb3Igb3ZlcmZsb3cuCisgKgorICogVGhlIGRlZmluZXMgYWxzbyB1c2Ug X1BSRUwgZm9yIFBDLXJlbGF0aXZlIGFkZHJlc3MsIGFuZCBfTkMgaXMgTm8gQ2hlY2suCisgKi8K KyNkZWZpbmUgUl9BQVJDSDY0X0FCUzY0CQkJMjU3IC8qIERpcmVjdCA2NCBiaXQuIFMrQSwgTkMq LworI2RlZmluZSBSX0FBUkNINjRfQUJTMzIJCQkyNTggLyogRGlyZWN0IDMyIGJpdC4gUytBICov CisjZGVmaW5lIFJfQUFSQ0g2NF9BQlMxNgkJCTI1OSAvKiBEaXJlY3QgMTYgYml0LCBTK0EgKi8K KyNkZWZpbmUgUl9BQVJDSDY0X1BSRUw2NAkJMjYwIC8qIFMrQS1QLCBOQyAqLworI2RlZmluZSBS X0FBUkNINjRfUFJFTDMyCQkyNjEgLyogUytBLVAgKi8KKyNkZWZpbmUgUl9BQVJDSDY0X1BSRUwx NgkJMjYyIC8qIFMrQS1QICovCisKKy8qIEluc3RydWN0aW9ucy4gKi8KKyNkZWZpbmUgUl9BQVJD SDY0X01PVldfVUFCU19HMAkJMjYzCisjZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1VBQlNfRzBfTkMJ MjY0CisjZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1VBQlNfRzEJCTI2NQorI2RlZmluZSBSX0FBUkNI NjRfTU9WV19VQUJTX0cxX05DCTI2NgorI2RlZmluZSBSX0FBUkNINjRfTU9WV19VQUJTX0cyCQky NjcKKyNkZWZpbmUgUl9BQVJDSDY0X01PVldfVUFCU19HMl9OQwkyNjgKKyNkZWZpbmUgUl9BQVJD SDY0X01PVldfVUFCU19HMwkJMjY5CisKKyNkZWZpbmUgUl9BQVJDSDY0X01PVldfU0FCU19HMAkJ MjcwCisjZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1NBQlNfRzEJCTI3MQorI2RlZmluZSBSX0FBUkNI NjRfTU9WV19TQUJTX0cyCQkyNzIKKworI2RlZmluZSBSX0FBUkNINjRfQURSX1BSRUxfTE8yMQkJ Mjc0IC8qIEFEUiBpbW0sIFsyMDowXS4gUytBLVAgKi8KKyNkZWZpbmUgUl9BQVJDSDY0X0FEUl9Q UkVMX1BHX0hJMjEJMjc1IC8qIEFEUlAgaW1tLCBbMzI6MTJdLiBQYWdlKFMrQSkgLSBQYWdlKFAp LiovCisjZGVmaW5lIFJfQUFSQ0g2NF9BRFJfUFJFTF9QR19ISTIxX05DCTI3NgorI2RlZmluZSBS X0FBUkNINjRfQUREX0FCU19MTzEyX05DCTI3NyAvKiBBREQgaW1tLiBbMTE6MF0uIFMrQSwgTkMg Ki8KKworI2RlZmluZSBSX0FBUkNINjRfVFNUQlIxNAkJMjc5CisjZGVmaW5lIFJfQUFSQ0g2NF9D T05EQlIxOQkJMjgwIC8qIEJpdHMgMjA6MiwgUytBLVAgKi8KKyNkZWZpbmUgUl9BQVJDSDY0X0pV TVAyNgkJMjgyIC8qIEJpdHMgMjc6MiwgUytBLVAgKi8KKyNkZWZpbmUgUl9BQVJDSDY0X0NBTEwy NgkJMjgzIC8qIEJpdHMgMjc6MiwgUytBLVAgKi8KKyNkZWZpbmUgUl9BQVJDSDY0X0xEU1QxNl9B QlNfTE8xMl9OQwkyODQgLyogTEQvU1QgdG8gYml0cyAxMToxLCBTK0EsIE5DICovCisjZGVmaW5l IFJfQUFSQ0g2NF9MRFNUMzJfQUJTX0xPMTJfTkMJMjg1IC8qIExEL1NUIHRvIGJpdHMgMTE6Miwg UytBLCBOQyAqLworI2RlZmluZSBSX0FBUkNINjRfTERTVDY0X0FCU19MTzEyX05DCTI4NiAvKiBM RC9TVCB0byBiaXRzIDExOjMsIFMrQSwgTkMgKi8KKyNkZWZpbmUgUl9BQVJDSDY0X0xEU1Q4X0FC U19MTzEyX05DCTI3OCAvKiBMRC9TVCB0byBiaXRzIDExOjAsIFMrQSwgTkMgKi8KKyNkZWZpbmUg Ul9BQVJDSDY0X0xEU1QxMjhfQUJTX0xPMTJfTkMJMjk5CisKKyNkZWZpbmUgUl9BQVJDSDY0X01P VldfUFJFTF9HMAkJMjg3CisjZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1BSRUxfRzBfTkMJMjg4Cisj ZGVmaW5lIFJfQUFSQ0g2NF9NT1ZXX1BSRUxfRzEJCTI4OQorI2RlZmluZSBSX0FBUkNINjRfTU9W V19QUkVMX0cxX05DCTI5MAorI2RlZmluZSBSX0FBUkNINjRfTU9WV19QUkVMX0cyCQkyOTEKKyNk ZWZpbmUgUl9BQVJDSDY0X01PVldfUFJFTF9HMl9OQwkyOTIKKyNkZWZpbmUgUl9BQVJDSDY0X01P VldfUFJFTF9HMwkJMjkzCisKIC8qIFByb2dyYW0gSGVhZGVyICovCiB0eXBlZGVmIHN0cnVjdCB7 CiAJRWxmMzJfV29yZAlwX3R5cGU7CQkvKiBzZWdtZW50IHR5cGUgKi8KZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL3hlbi90eXBlcy5oIGIveGVuL2luY2x1ZGUveGVuL3R5cGVzLmgKaW5kZXggN2Jk YzgzYi4uYzc5YzM1MyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3R5cGVzLmgKKysrIGIv eGVuL2luY2x1ZGUveGVuL3R5cGVzLmgKQEAgLTE0LDYgKzE0LDE1IEBACiAjZGVmaW5lIE5VTEwg KCh2b2lkKikwKQogI2VuZGlmCiAKKyNkZWZpbmUgSU5UMTZfTUlOICAgICAgICgtMzI3NjctMSkK KyNkZWZpbmUgSU5UMzJfTUlOICAgICAgICgtMjE0NzQ4MzY0Ny0xKQorCisjZGVmaW5lIElOVDE2 X01BWCAgICAgICAoMzI3NjcpCisjZGVmaW5lIElOVDMyX01BWCAgICAgICAoMjE0NzQ4MzY0NykK KworI2RlZmluZSBVSU5UMTZfTUFYICAgICAgKDY1NTM1KQorI2RlZmluZSBVSU5UMzJfTUFYICAg ICAgKDQyOTQ5NjcyOTVVKQorCiAjZGVmaW5lIElOVF9NQVggICAgICAgICAoKGludCkofjBVPj4x KSkKICNkZWZpbmUgSU5UX01JTiAgICAgICAgICgtSU5UX01BWCAtIDEpCiAjZGVmaW5lIFVJTlRf TUFYICAgICAgICAofjBVKQotLSAKMi40LjExCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==