From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Iy5qL-0000JA-9d for qemu-devel@nongnu.org; Fri, 30 Nov 2007 08:23:45 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Iy5qJ-0000Ix-JW for qemu-devel@nongnu.org; Fri, 30 Nov 2007 08:23:44 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Iy5qJ-0000Iu-En for qemu-devel@nongnu.org; Fri, 30 Nov 2007 08:23:43 -0500 Received: from ug-out-1314.google.com ([66.249.92.171]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Iy5qH-0002sT-Qz for qemu-devel@nongnu.org; Fri, 30 Nov 2007 08:23:43 -0500 Received: by ug-out-1314.google.com with SMTP id m2so1933564uge for ; Fri, 30 Nov 2007 05:23:39 -0800 (PST) Message-ID: Date: Fri, 30 Nov 2007 14:23:39 +0100 From: "andrzej zaborowski" Subject: Re: [Qemu-devel] [PATCH] fix gcc4 compile warnings In-Reply-To: <474F5223.1000202@andrep.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline References: <474F5223.1000202@andrep.de> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Keir.Fraser@cl.cam.ac.uk SGksCgpPbiAzMC8xMS8yMDA3LCBBbmRyw6kgUHJ6eXdhcmEgPG9zcEBhbmRyZXAuZGU+IHdyb3Rl Ogo+IGF0dGFjaGVkIGEgcGF0Y2ggdGhhdCBmaXhlcyBzb21lIHdhcm5pbmdzIGlzc3VlZCBieSBn Y2M0IHdoZW4gY29tcGlsaW5nCj4gUWVtdS4gSSBrbm93IHRoYXQgUWVtdSBkb2VzIG5vdCB3b3Jr IHdpdGggZ2NjNCwgYnV0IFhlbiAoYW5kIEtWTSkgdXNlcwo+IHNpZ25pZmljYW50IHBhcnRzIG9m IFFlbXUgYW5kIHRoaXMgd29ya3Mgd2l0aCBnY2M0LiBXaGVuCj4gY29tcGlsaW5nIFhlbiBJIHNl ZSBhIGxvdCBvZiB0aG9zZSB3YXJuaW5ncyBhbmQgbWlzcyB0aGUgc2VyaW91cyBvbmVzCj4gOy0o ICwgdGhlIHBhdGNoIGZpeGVzIHNvbWUgb2YgdGhlbSAobW9zdGx5IHNpZ25lZG5lc3MgcG9pbnRl ciB3YXJuaW5ncykuCj4gUGxlYXNlIGFwcGx5IHNvIHRoYXQgdGhlIG90aGVyIHByb2plY3RzIGNh biBwdWxsIHRoZSBjaGFuZ2VzIChYZW5zb3VyY2UKPiB3aWxsIG5vdCBhY2NlcHQgcHVyZSBRZW11 IHBhdGNoZXMgb24geGVuLWRldmVsKS4KPgo+IFRoZSBoYWJpdCBvZiB1c2luZyB0eXBlY2FzdHMg dG8gZml4IHRob3NlIHdhcm5pbmdzIGlzIGRlYmF0YWJsZSwgYnV0Cj4gdGhpcyBpcyB0aGUgbGVh c3QgaW50cnVzaXZlIGFwcHJvYWNoLgo+Cj4gQlRXOiBXaGF0IHdhcyB0aGUgb3V0Y29tZSBvZiB0 aGlzIHNvY2tsZW5fdCBpc3N1ZT8gSSBzYXcgYm90aCAiaW50IiBhbmQKPiAic29ja2xlbl90IiAg aW4gdGhlIHBhc3QsIGlzIHRoZXJlIGEgcG9saWN5IHJlZ2FyZGluZyB0aGlzPwo+Cj4gQ29tbWVu dHMgd2VsY29tZS4KPgo+IEJlc3QgcmVnYXJkcywKPiBBbmRyZS4KPgo+IFAuUy4gSSBoYXZlbid0 IGZvdW5kIHNvbWV0aGluZyBhYm91dCB0aGUgcGF0Y2ggc3VibWl0dGluZyBwb2xpY3kgb24KPiBx ZW11LWRldmVsIChpbmxpbmUgb3IgYXR0YWNobWVudCwgY3ZzIGRpZmYgb3Ige2dpdHxoZ30gZGlm ZikuIEhvcGUgdGhhdAo+IG15IGFwcHJvYWNoIGlzIE9LLgo+Cj4gLS0KPiBBbmRyZSBQcnp5d2Fy YQo+IEFNRC1PcGVyYXRpbmcgU3lzdGVtIFJlc2VhcmNoIENlbnRlciAoT1NSQyksIERyZXNkZW4s IEdlcm1hbnkKPiBUZWw6ICs0OSAzNTEgMjc3LTg0OTE3Cj4gLS0tLXRvIHNhdGlzZnkgRXVyb3Bl YW4gTGF3IGZvciBidXNpbmVzcyBsZXR0ZXJzOgo+IEFNRCBTYXhvbnkgTGltaXRlZCBMaWFiaWxp dHkgQ29tcGFueSAmIENvLiBLRwo+IFNpdHogKEdlc2Now6RmdHNhbnNjaHJpZnQpOiBXaWxzY2hk b3JmZXIgTGFuZHN0ci4gMTAxLCAwMTEwOSBEcmVzZGVuLAo+IERldXRzY2hsYW5kCj4gUmVnaXN0 ZXJnZXJpY2h0IERyZXNkZW46IEhSQSA0ODk2Cj4gdmVydHJldHVuZ3NiZXJlY2h0aWd0ZXIgS29t cGxlbWVudMOkcjogQU1EIFNheG9ueSBMTEMgKFNpdHogV2lsbWluZ3RvbiwKPiBEZWxhd2FyZSwg VVNBKQo+IEdlc2Now6RmdHNmw7xocmVyIGRlciBBTUQgU2F4b255IExMQzogRHIuIEhhbnMtUi4g RGVwcGUsIFRob21hcyBNY0NveQo+Cj4KPiBJbmRleDogYWVzLmMKPiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gUkNT IGZpbGU6IC9zb3VyY2VzL3FlbXUvcWVtdS9hZXMuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAx LjQKPiBkaWZmIC11IC1wIC1yMS40IGFlcy5jCj4gLS0tIGFlcy5jICAgICAgIDExIE5vdiAyMDA3 IDAyOjUxOjE1IC0wMDAwICAgICAgMS40Cj4gKysrIGFlcy5jICAgICAgIDI5IE5vdiAyMDA3IDIz OjUwOjAwIC0wMDAwCj4gQEAgLTMwLDcgKzMwLDEwIEBACj4gICNpbmNsdWRlICJxZW11LWNvbW1v bi5oIgo+ICAjaW5jbHVkZSAiYWVzLmgiCj4KPiArI2lmbmRlZiBOREVCVUcKPiAgI2RlZmluZSBO REVCVUcKPiArI2VuZGlmCj4gKwo+ICAjaW5jbHVkZSA8YXNzZXJ0Lmg+Cj4KPiAgdHlwZWRlZiB1 aW50MzJfdCB1MzI7Cj4gSW5kZXg6IGJsb2NrLXZwYy5jCj4gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IFJDUyBmaWxl OiAvc291cmNlcy9xZW11L3FlbXUvYmxvY2stdnBjLmMsdgo+IHJldHJpZXZpbmcgcmV2aXNpb24g MS43Cj4gZGlmZiAtdSAtcCAtcjEuNyBibG9jay12cGMuYwo+IC0tLSBibG9jay12cGMuYyAxMSBO b3YgMjAwNyAwMjo1MToxNiAtMDAwMCAgICAgIDEuNwo+ICsrKyBibG9jay12cGMuYyAyOSBOb3Yg MjAwNyAyMzo1MDowMCAtMDAwMAo+IEBAIC04MSw3ICs4MSw3IEBAIHR5cGVkZWYgc3RydWN0IEJE UlZWUENTdGF0ZSB7Cj4KPiAgc3RhdGljIGludCB2cGNfcHJvYmUoY29uc3QgdWludDhfdCAqYnVm LCBpbnQgYnVmX3NpemUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQo+ICB7Cj4gLSAgICBpZiAoYnVm X3NpemUgPj0gOCAmJiAhc3RybmNtcChidWYsICJjb25lY3RpeCIsIDgpKQo+ICsgICAgaWYgKGJ1 Zl9zaXplID49IDggJiYgIXN0cm5jbXAoKGNvbnN0IGNoYXIgKilidWYsICJjb25lY3RpeCIsIDgp KQo+ICAgICAgICAgcmV0dXJuIDEwMDsKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4gSW5kZXg6IGJs b2NrLXZ2ZmF0LmMKPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Cj4gUkNTIGZpbGU6IC9zb3VyY2VzL3FlbXUvcWVtdS9i bG9jay12dmZhdC5jLHYKPiByZXRyaWV2aW5nIHJldmlzaW9uIDEuMTMKPiBkaWZmIC11IC1wIC1y MS4xMyBibG9jay12dmZhdC5jCj4gLS0tIGJsb2NrLXZ2ZmF0LmMgICAgICAgMTggTm92IDIwMDcg MDE6NDQ6MzUgLTAwMDAgICAgICAxLjEzCj4gKysrIGJsb2NrLXZ2ZmF0LmMgICAgICAgMjkgTm92 IDIwMDcgMjM6NTA6MDAgLTAwMDAKPiBAQCAtNDEyLDcgKzQxMiw3IEBAIHN0YXRpYyB2b2lkIGlu aXRfbWJyKEJEUlZWVkZBVFN0YXRlKiBzKQo+ICAvKiBkaXJlbnRyeSBmdW5jdGlvbnMgKi8KPgo+ ICAvKiBkZXN0IGlzIGFzc3VtZWQgdG8gaG9sZCAyNTggYnl0ZXMsIGFuZCBwYWRzIHdpdGggMHhm ZmZmIHVwIHRvIG5leHQgbXVsdGlwbGUgb2YgMjYgKi8KPiAtc3RhdGljIGlubGluZSBpbnQgc2hv cnQybG9uZ19uYW1lKHVuc2lnbmVkIGNoYXIqIGRlc3QsY29uc3QgY2hhciogc3JjKQo+ICtzdGF0 aWMgaW5saW5lIGludCBzaG9ydDJsb25nX25hbWUoY2hhciogZGVzdCxjb25zdCBjaGFyKiBzcmMp Cj4gIHsKPiAgICAgIGludCBpOwo+ICAgICAgZm9yKGk9MDtpPDEyOSAmJiBzcmNbaV07aSsrKSB7 Cj4gQEAgLTU2NSw3ICs1NjUsNyBAQCBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGZhdF9nZXQoQkRS VlZWRkFUCj4gICAgICAgICB1aW50MTZfdCogZW50cnk9YXJyYXlfZ2V0KCYocy0+ZmF0KSxjbHVz dGVyKTsKPiAgICAgICAgIHJldHVybiBsZTE2X3RvX2NwdSgqZW50cnkpOwo+ICAgICAgfSBlbHNl IHsKPiAtICAgICAgIGNvbnN0IHVpbnQ4X3QqIHg9cy0+ZmF0LnBvaW50ZXIrY2x1c3RlciozLzI7 Cj4gKyAgICAgICBjb25zdCB1aW50OF90KiB4PShjb25zdCB1aW50OF90Kikocy0+ZmF0LnBvaW50 ZXIpK2NsdXN0ZXIqMy8yOwo+ICAgICAgICAgcmV0dXJuICgoeFswXXwoeFsxXTw8OCkpPj4oY2x1 c3RlciYxPzQ6MCkpJjB4MGZmZjsKPiAgICAgIH0KPiAgfQo+IEBAIC02MjYsNyArNjI2LDcgQEAg c3RhdGljIGlubGluZSBkaXJlbnRyeV90KiBjcmVhdGVfc2hvcnRfYQo+Cj4gICAgICBlbnRyeT1h cnJheV9nZXRfbmV4dCgmKHMtPmRpcmVjdG9yeSkpOwo+ICAgICAgbWVtc2V0KGVudHJ5LT5uYW1l LDB4MjAsMTEpOwo+IC0gICAgc3RybmNweShlbnRyeS0+bmFtZSxmaWxlbmFtZSxpKTsKPiArICAg IHN0cm5jcHkoKGNoYXIqKWVudHJ5LT5uYW1lLGZpbGVuYW1lLGkpOwo+Cj4gICAgICBpZihqID4g MCkKPiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzICYmIGZpbGVuYW1lW2orMStpXTsgaSsrKQo+ IEBAIC04NjgsNyArODY4LDcgQEAgc3RhdGljIGludCBpbml0X2RpcmVjdG9yaWVzKEJEUlZWVkZB VFN0YQo+ICAgICAgewo+ICAgICAgICAgZGlyZW50cnlfdCogZW50cnk9YXJyYXlfZ2V0X25leHQo JihzLT5kaXJlY3RvcnkpKTsKPiAgICAgICAgIGVudHJ5LT5hdHRyaWJ1dGVzPTB4Mjg7IC8qIGFy Y2hpdmUgfCB2b2x1bWUgbGFiZWwgKi8KPiAtICAgICAgIHNucHJpbnRmKGVudHJ5LT5uYW1lLDEx LCJRRU1VIFZWRkFUIik7Cj4gKyAgICAgICBzbnByaW50ZigoY2hhciopZW50cnktPm5hbWUsMTEs IlFFTVUgVlZGQVQiKTsKPiAgICAgIH0KPgo+ICAgICAgLyogTm93IGJ1aWxkIEZBVCwgYW5kIHdy aXRlIGJhY2sgaW5mb3JtYXRpb24gaW50byBkaXJlY3RvcnkgKi8KPiBAQCAtMTE4Nyw3ICsxMTg3 LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcmVhZF9jbHVzdGVyKEJEUlZWVkZBVAo+ICAgICAgICAg ICAgICAgICBzLT5jdXJyZW50X21hcHBpbmcgPSBtYXBwaW5nOwo+ICByZWFkX2NsdXN0ZXJfZGly ZWN0b3J5Ogo+ICAgICAgICAgICAgICAgICBvZmZzZXQgPSBzLT5jbHVzdGVyX3NpemUqKGNsdXN0 ZXJfbnVtLXMtPmN1cnJlbnRfbWFwcGluZy0+YmVnaW4pOwo+IC0gICAgICAgICAgICAgICBzLT5j bHVzdGVyID0gcy0+ZGlyZWN0b3J5LnBvaW50ZXIrb2Zmc2V0Cj4gKyAgICAgICAgICAgICAgIHMt PmNsdXN0ZXIgPSAodW5zaWduZWQgY2hhciopcy0+ZGlyZWN0b3J5LnBvaW50ZXIrb2Zmc2V0Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgKyAweDIwKnMtPmN1cnJlbnRfbWFwcGluZy0+aW5mby5k aXIuZmlyc3RfZGlyX2luZGV4Owo+ICAgICAgICAgICAgICAgICBhc3NlcnQoKChzLT5jbHVzdGVy LSh1bnNpZ25lZCBjaGFyKilzLT5kaXJlY3RvcnkucG9pbnRlciklcy0+Y2x1c3Rlcl9zaXplKT09 MCk7Cj4gICAgICAgICAgICAgICAgIGFzc2VydCgoY2hhciopcy0+Y2x1c3RlcitzLT5jbHVzdGVy X3NpemUgPD0gcy0+ZGlyZWN0b3J5LnBvaW50ZXIrcy0+ZGlyZWN0b3J5Lm5leHQqcy0+ZGlyZWN0 b3J5Lml0ZW1fc2l6ZSk7Cj4gQEAgLTE0NTcsNyArMTQ1Nyw3IEBAIHN0YXRpYyBpbnQgcGFyc2Vf bG9uZ19uYW1lKGxvbmdfZmlsZV9uYW0KPiAgICAgIH0KPgo+ICAgICAgaWYgKHBvaW50ZXJbMF0g JiAweDQwKQo+IC0gICAgICAgbGZuLT5sZW4gPSBvZmZzZXQgKyBzdHJsZW4obGZuLT5uYW1lICsg b2Zmc2V0KTsKPiArICAgICAgIGxmbi0+bGVuID0gb2Zmc2V0ICsgc3RybGVuKChjaGFyKilsZm4t Pm5hbWUgKyBvZmZzZXQpOwo+Cj4gICAgICByZXR1cm4gMDsKPiAgfQo+IEBAIC0xNDk2LDcgKzE0 OTYsNyBAQCBzdGF0aWMgaW50IHBhcnNlX3Nob3J0X25hbWUoQkRSVlZWRkFUU3RhCj4gICAgICB9 IGVsc2UKPiAgICAgICAgIGxmbi0+bmFtZVtpICsgaiArIDFdID0gJ1wwJzsKPgo+IC0gICAgbGZu LT5sZW4gPSBzdHJsZW4obGZuLT5uYW1lKTsKPiArICAgIGxmbi0+bGVuID0gc3RybGVuKChjaGFy KilsZm4tPm5hbWUpOwo+Cj4gICAgICByZXR1cm4gMDsKPiAgfQo+IEBAIC0xNzkyLDggKzE3OTIs OCBAQCBETE9HKGZwcmludGYoc3RkZXJyLCAiY2hlY2sgZGlyZW50cnkgJWQ6Cj4gICAgICAgICAg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGluIHNob3J0IG5hbWUgKCVkKVxuIiwg c3VicmV0KTsKPiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKPiAgICAgICAgICAgICAg ICAgfQo+IC0gICAgICAgICAgICAgICBpZiAoc3VicmV0ID4gMCB8fCAhc3RyY21wKGxmbi5uYW1l LCAiLiIpCj4gLSAgICAgICAgICAgICAgICAgICAgICAgfHwgIXN0cmNtcChsZm4ubmFtZSwgIi4u IikpCj4gKyAgICAgICAgICAgICAgIGlmIChzdWJyZXQgPiAwIHx8ICFzdHJjbXAoKGNoYXIqKWxm bi5uYW1lLCAiLiIpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfHwgIXN0cmNtcCgoY2hhciop bGZuLm5hbWUsICIuLiIpKQo+ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4gICAgICAg ICAgICAgfQo+ICAgICAgICAgICAgIGxmbi5jaGVja3N1bSA9IDB4MTAwOyAvKiBjYW5ub3QgdXNl IGxvbmcgbmFtZSB0d2ljZSAqLwo+IEBAIC0xODAyLDcgKzE4MDIsNyBAQCBETE9HKGZwcmludGYo c3RkZXJyLCAiY2hlY2sgZGlyZW50cnkgJWQ6Cj4gICAgICAgICAgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiTmFtZSB0b28gbG9uZzogJXMvJXNcbiIsIHBhdGgsIGxmbi5uYW1lKTsKPiAgICAgICAg ICAgICAgICAgZ290byBmYWlsOwo+ICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICBzdHJjcHko cGF0aDIgKyBwYXRoX2xlbiArIDEsIGxmbi5uYW1lKTsKPiArICAgICAgICAgICBzdHJjcHkocGF0 aDIgKyBwYXRoX2xlbiArIDEsIChjaGFyKilsZm4ubmFtZSk7Cj4KPiAgICAgICAgICAgICBpZiAo aXNfZGlyZWN0b3J5KGRpcmVudHJpZXMgKyBpKSkgewo+ICAgICAgICAgICAgICAgICBpZiAoYmVn aW5fb2ZfZGlyZW50cnkoZGlyZW50cmllcyArIGkpID09IDApIHsKPiBAQCAtMjIzNCw3ICsyMjM0 LDcgQEAgc3RhdGljIGludCBjb21taXRfb25lX2ZpbGUoQkRSVlZWRkFUU3RhdAo+ICAgICAgICAg YXNzZXJ0KHNpemUgPj0gMCk7Cj4KPiAgICAgICAgIHJldCA9IHZ2ZmF0X3JlYWQocy0+YnMsIGNs dXN0ZXIyc2VjdG9yKHMsIGMpLAo+IC0gICAgICAgICAgIGNsdXN0ZXIsIChyZXN0X3NpemUgKyAw eDFmZikgLyAweDIwMCk7Cj4gKyAgICAgICAgICAgKHVpbnQ4X3QqKWNsdXN0ZXIsIChyZXN0X3Np emUgKyAweDFmZikgLyAweDIwMCk7Cj4KPiAgICAgICAgIGlmIChyZXQgPCAwKQo+ICAgICAgICAg ICAgIHJldHVybiByZXQ7Cj4gSW5kZXg6IGdkYnN0dWIuYwo+ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiBSQ1MgZmls ZTogL3NvdXJjZXMvcWVtdS9xZW11L2dkYnN0dWIuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAx LjcxCj4gZGlmZiAtdSAtcCAtcjEuNzEgZ2Ric3R1Yi5jCj4gLS0tIGdkYnN0dWIuYyAgIDE3IE5v diAyMDA3IDE3OjE0OjM3IC0wMDAwICAgICAgMS43MQo+ICsrKyBnZGJzdHViLmMgICAyOSBOb3Yg MjAwNyAyMzo1MDowMCAtMDAwMAo+IEBAIC0yMDksNyArMjA5LDcgQEAgc3RhdGljIGludCBwdXRf cGFja2V0KEdEQlN0YXRlICpzLCBjaGFyCj4gICAgICAgICAgKihwKyspID0gdG9oZXgoKGNzdW0p ICYgMHhmKTsKPgo+ICAgICAgICAgIHMtPmxhc3RfcGFja2V0X2xlbiA9IHAgLSBzLT5sYXN0X3Bh Y2tldDsKPiAtICAgICAgICBwdXRfYnVmZmVyKHMsIHMtPmxhc3RfcGFja2V0LCBzLT5sYXN0X3Bh Y2tldF9sZW4pOwo+ICsgICAgICAgIHB1dF9idWZmZXIocywgKHVpbnQ4X3QgKilzLT5sYXN0X3Bh Y2tldCwgcy0+bGFzdF9wYWNrZXRfbGVuKTsKPgo+ICAjaWZkZWYgQ09ORklHX1VTRVJfT05MWQo+ ICAgICAgICAgIGkgPSBnZXRfY2hhcihzKTsKPiBAQCAtMTE4OSw3ICsxMTg5LDcgQEAgc3RhdGlj IHZvaWQgZ2RiX3JlYWRfYnl0ZShHREJTdGF0ZSAqcywgaQo+ICAjaWZkZWYgREVCVUdfR0RCCj4g ICAgICAgICAgICAgIHByaW50ZigiR290IE5BQ0ssIHJldHJhbnNtaXR0aW5nXG4iKTsKPiAgI2Vu ZGlmCj4gLSAgICAgICAgICAgIHB1dF9idWZmZXIocywgcy0+bGFzdF9wYWNrZXQsIHMtPmxhc3Rf cGFja2V0X2xlbik7Cj4gKyAgICAgICAgICAgIHB1dF9idWZmZXIocywgKHVpbnQ4X3QgKilzLT5s YXN0X3BhY2tldCwgcy0+bGFzdF9wYWNrZXRfbGVuKTsKPiAgICAgICAgICB9Cj4gICNpZmRlZiBE RUJVR19HREIKPiAgICAgICAgICBlbHNlIGlmIChjaCA9PSAnKycpCj4gQEAgLTEyMzgsMTEgKzEy MzgsMTEgQEAgc3RhdGljIHZvaWQgZ2RiX3JlYWRfYnl0ZShHREJTdGF0ZSAqcywgaQo+ICAgICAg ICAgICAgICB9Cj4gICAgICAgICAgICAgIGlmIChzLT5saW5lX2NzdW0gIT0gKGNzdW0gJiAweGZm KSkgewo+ICAgICAgICAgICAgICAgICAgcmVwbHlbMF0gPSAnLSc7Cj4gLSAgICAgICAgICAgICAg ICBwdXRfYnVmZmVyKHMsIHJlcGx5LCAxKTsKPiArICAgICAgICAgICAgICAgIHB1dF9idWZmZXIo cywgKHVpbnQ4X3QgKilyZXBseSwgMSk7Cj4gICAgICAgICAgICAgICAgICBzLT5zdGF0ZSA9IFJT X0lETEU7Cj4gICAgICAgICAgICAgIH0gZWxzZSB7Cj4gICAgICAgICAgICAgICAgICByZXBseVsw XSA9ICcrJzsKPiAtICAgICAgICAgICAgICAgIHB1dF9idWZmZXIocywgcmVwbHksIDEpOwo+ICsg ICAgICAgICAgICAgICAgcHV0X2J1ZmZlcihzLCAodWludDhfdCAqKXJlcGx5LCAxKTsKPiAgICAg ICAgICAgICAgICAgIHMtPnN0YXRlID0gZ2RiX2hhbmRsZV9wYWNrZXQocywgZW52LCBzLT5saW5l X2J1Zik7Cj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgYnJlYWs7Cj4gSW5kZXg6IG1v bml0b3IuYwo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KPiBSQ1MgZmlsZTogL3NvdXJjZXMvcWVtdS9xZW11L21vbml0 b3IuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAxLjg3Cj4gZGlmZiAtdSAtcCAtcjEuODcgbW9u aXRvci5jCj4gLS0tIG1vbml0b3IuYyAgIDE4IE5vdiAyMDA3IDAxOjQ0OjM1IC0wMDAwICAgICAg MS44Nwo+ICsrKyBtb25pdG9yLmMgICAyOSBOb3YgMjAwNyAyMzo1MDowMCAtMDAwMAo+IEBAIC04 NSw3ICs4NSw3IEBAIHZvaWQgdGVybV9mbHVzaCh2b2lkKQo+ICAgICAgaWYgKHRlcm1fb3V0YnVm X2luZGV4ID4gMCkgewo+ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfTU9OOyBpKyspCj4g ICAgICAgICAgICAgIGlmIChtb25pdG9yX2hkW2ldICYmIG1vbml0b3JfaGRbaV0tPmZvY3VzID09 IDApCj4gLSAgICAgICAgICAgICAgICBxZW11X2Nocl93cml0ZShtb25pdG9yX2hkW2ldLCB0ZXJt X291dGJ1ZiwgdGVybV9vdXRidWZfaW5kZXgpOwo+ICsgICAgICAgICAgICAgICAgcWVtdV9jaHJf d3JpdGUobW9uaXRvcl9oZFtpXSwgKHVpbnQ4X3QqKXRlcm1fb3V0YnVmLCB0ZXJtX291dGJ1Zl9p bmRleCk7Cj4gICAgICAgICAgdGVybV9vdXRidWZfaW5kZXggPSAwOwo+ICAgICAgfQo+ICB9Cj4g QEAgLTE4MTgsNyArMTgxOCw3IEBAIHN0YXRpYyBpbnQ2NF90IGV4cHJfdW5hcnkodm9pZCkKPiAg ICAgIGNhc2UgJyQnOgo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgY2hhciBidWZbMTI4XSwg KnE7Cj4gLSAgICAgICAgICAgIHRhcmdldF9sb25nIHJlZzsKPiArICAgICAgICAgICAgdGFyZ2V0 X2xvbmcgcmVnPTA7Cj4KPiAgICAgICAgICAgICAgcGNoKys7Cj4gICAgICAgICAgICAgIHEgPSBi dWY7Cj4gQEAgLTIwMzUsNyArMjAzNSw3IEBAIHN0YXRpYyB2b2lkIG1vbml0b3JfaGFuZGxlX2Nv bW1hbmQoY29uc3QKPiAgICAgIGNoYXIgY21kbmFtZVsyNTZdOwo+ICAgICAgY2hhciBidWZbMTAy NF07Cj4gICAgICB2b2lkICpzdHJfYWxsb2NhdGVkW01BWF9BUkdTXTsKPiAtICAgIHZvaWQgKmFy Z3NbTUFYX0FSR1NdOwo+ICsgICAgaW50cHRyX3QgYXJnc1tNQVhfQVJHU107Cj4KPiAgI2lmZGVm IERFQlVHCj4gICAgICB0ZXJtX3ByaW50ZigiY29tbWFuZD0nJXMnXG4iLCBjbWRsaW5lKTsKPiBA QCAtMjExOSw3ICsyMTE5LDcgQEAgc3RhdGljIHZvaWQgbW9uaXRvcl9oYW5kbGVfY29tbWFuZChj b25zdAo+ICAgICAgICAgICAgICAgICAgICAgIHRlcm1fcHJpbnRmKCIlczogdG9vIG1hbnkgYXJn dW1lbnRzXG4iLCBjbWRuYW1lKTsKPiAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Cj4g ICAgICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICAgICBhcmdzW25iX2FyZ3MrK10gPSBz dHI7Cj4gKyAgICAgICAgICAgICAgICBhcmdzW25iX2FyZ3MrK10gPSAoaW50cHRyX3Qpc3RyOwo+ ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgIGNhc2UgJy8n Ogo+IEBAIC0yMTk3LDkgKzIxOTcsOSBAQCBzdGF0aWMgdm9pZCBtb25pdG9yX2hhbmRsZV9jb21t YW5kKGNvbnN0Cj4gICAgICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAgICAgICBpZiAobmJf YXJncyArIDMgPiBNQVhfQVJHUykKPiAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Fy Z3M7Cj4gLSAgICAgICAgICAgICAgICBhcmdzW25iX2FyZ3MrK10gPSAodm9pZCopKGxvbmcpY291 bnQ7Cj4gLSAgICAgICAgICAgICAgICBhcmdzW25iX2FyZ3MrK10gPSAodm9pZCopKGxvbmcpZm9y bWF0Owo+IC0gICAgICAgICAgICAgICAgYXJnc1tuYl9hcmdzKytdID0gKHZvaWQqKShsb25nKXNp emU7Cj4gKyAgICAgICAgICAgICAgICBhcmdzW25iX2FyZ3MrK10gPSBjb3VudDsKPiArICAgICAg ICAgICAgICAgIGFyZ3NbbmJfYXJncysrXSA9IGZvcm1hdDsKPiArICAgICAgICAgICAgICAgIGFy Z3NbbmJfYXJncysrXSA9IHNpemU7Cj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgYnJl YWs7Cj4gICAgICAgICAgY2FzZSAnaSc6Cj4gQEAgLTIyMjgsNyArMjIyOCw3IEBAIHN0YXRpYyB2 b2lkIG1vbml0b3JfaGFuZGxlX2NvbW1hbmQoY29uc3QKPiAgICAgICAgICAgICAgICAgICAgICB0 eXBlc3RyKys7Cj4gICAgICAgICAgICAgICAgICAgICAgaWYgKG5iX2FyZ3MgPj0gTUFYX0FSR1Mp Cj4gICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfYXJnczsKPiAtICAgICAgICAg ICAgICAgICAgICBhcmdzW25iX2FyZ3MrK10gPSAodm9pZCAqKShsb25nKWhhc19hcmc7Cj4gKyAg ICAgICAgICAgICAgICAgICAgYXJnc1tuYl9hcmdzKytdID0gaGFzX2FyZzsKPiAgICAgICAgICAg ICAgICAgICAgICBpZiAoIWhhc19hcmcpIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KG5iX2FyZ3MgPj0gTUFYX0FSR1MpCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3Rv IGVycm9yX2FyZ3M7Cj4gQEAgLTIyNDIsMTYgKzIyNDIsMTYgQEAgc3RhdGljIHZvaWQgbW9uaXRv cl9oYW5kbGVfY29tbWFuZChjb25zdAo+ICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2knKSB7 Cj4gICAgICAgICAgICAgICAgICAgICAgaWYgKG5iX2FyZ3MgPj0gTUFYX0FSR1MpCj4gICAgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfYXJnczsKPiAtICAgICAgICAgICAgICAgICAg ICBhcmdzW25iX2FyZ3MrK10gPSAodm9pZCAqKShsb25nKXZhbDsKPiArICAgICAgICAgICAgICAg ICAgICBhcmdzW25iX2FyZ3MrK10gPSB2YWw7Cj4gICAgICAgICAgICAgICAgICB9IGVsc2Ugewo+ ICAgICAgICAgICAgICAgICAgICAgIGlmICgobmJfYXJncyArIDEpID49IE1BWF9BUkdTKQo+ICAg ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2FyZ3M7Cj4gICNpZiBUQVJHRVRfUEhZ U19BRERSX0JJVFMgPiAzMgo+IC0gICAgICAgICAgICAgICAgICAgIGFyZ3NbbmJfYXJncysrXSA9 ICh2b2lkICopKGxvbmcpKCh2YWwgPj4gMzIpICYgMHhmZmZmZmZmZik7Cj4gKyAgICAgICAgICAg ICAgICAgICAgYXJnc1tuYl9hcmdzKytdID0gKCh2YWwgPj4gMzIpICYgMHhmZmZmZmZmZik7Cj4g ICNlbHNlCj4gLSAgICAgICAgICAgICAgICAgICAgYXJnc1tuYl9hcmdzKytdID0gKHZvaWQgKikw Owo+ICsgICAgICAgICAgICAgICAgICAgIGFyZ3NbbmJfYXJncysrXSA9IDA7Cj4gICNlbmRpZgo+ IC0gICAgICAgICAgICAgICAgICAgIGFyZ3NbbmJfYXJncysrXSA9ICh2b2lkICopKGxvbmcpKHZh bCAmIDB4ZmZmZmZmZmYpOwo+ICsgICAgICAgICAgICAgICAgICAgIGFyZ3NbbmJfYXJncysrXSA9 ICh2YWwgJiAweGZmZmZmZmZmKTsKPiAgICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAg fQo+ICAgICAgICAgICAgICBicmVhazsKPiBAQCAtMjI3OCw3ICsyMjc4LDcgQEAgc3RhdGljIHZv aWQgbW9uaXRvcl9oYW5kbGVfY29tbWFuZChjb25zdAo+ICAgICAgICAgICAgICAgICAgfQo+ICAg ICAgICAgICAgICAgICAgaWYgKG5iX2FyZ3MgPj0gTUFYX0FSR1MpCj4gICAgICAgICAgICAgICAg ICAgICAgZ290byBlcnJvcl9hcmdzOwo+IC0gICAgICAgICAgICAgICAgYXJnc1tuYl9hcmdzKytd ID0gKHZvaWQgKikobG9uZyloYXNfb3B0aW9uOwo+ICsgICAgICAgICAgICAgICAgYXJnc1tuYl9h cmdzKytdID0gaGFzX29wdGlvbjsKPiAgICAgICAgICAgICAgfQo+ICAgICAgICAgICAgICBicmVh azsKPiAgICAgICAgICBkZWZhdWx0Ogo+IEluZGV4OiB2bC5jCj4gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IFJDUyBm aWxlOiAvc291cmNlcy9xZW11L3FlbXUvdmwuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAxLjM3 Mwo+IGRpZmYgLXUgLXAgLXIxLjM3MyB2bC5jCj4gLS0tIHZsLmMgICAgICAgIDI1IE5vdiAyMDA3 IDAxOjU3OjM4IC0wMDAwICAgICAgMS4zNzMKPiArKysgdmwuYyAgICAgICAgMjkgTm92IDIwMDcg MjM6NTA6MDEgLTAwMDAKPiBAQCAtMTExNSw5ICsxMTE1LDkgQEAgc3RhdGljIHZvaWQgdGltZXJf c2F2ZShRRU1VRmlsZSAqZiwgdm9pZAo+ICAgICAgaWYgKGNwdV90aWNrc19lbmFibGVkKSB7Cj4g ICAgICAgICAgaHdfZXJyb3IoImNhbm5vdCBzYXZlIHN0YXRlIGlmIHZpcnR1YWwgdGltZXJzIGFy ZSBydW5uaW5nIik7Cj4gICAgICB9Cj4gLSAgICBxZW11X3B1dF9iZTY0cyhmLCAmY3B1X3RpY2tz X29mZnNldCk7Cj4gLSAgICBxZW11X3B1dF9iZTY0cyhmLCAmdGlja3NfcGVyX3NlYyk7Cj4gLSAg ICBxZW11X3B1dF9iZTY0cyhmLCAmY3B1X2Nsb2NrX29mZnNldCk7Cj4gKyAgICBxZW11X3B1dF9i ZTY0cyhmLCAodWludDY0X3QgKikmY3B1X3RpY2tzX29mZnNldCk7Cj4gKyAgICBxZW11X3B1dF9i ZTY0cyhmLCAodWludDY0X3QgKikmdGlja3NfcGVyX3NlYyk7Cj4gKyAgICBxZW11X3B1dF9iZTY0 cyhmLCAodWludDY0X3QgKikmY3B1X2Nsb2NrX29mZnNldCk7Cj4gIH0KPgo+ICBzdGF0aWMgaW50 IHRpbWVyX2xvYWQoUUVNVUZpbGUgKmYsIHZvaWQgKm9wYXF1ZSwgaW50IHZlcnNpb25faWQpCj4g QEAgLTExMjcsMTAgKzExMjcsMTAgQEAgc3RhdGljIGludCB0aW1lcl9sb2FkKFFFTVVGaWxlICpm LCB2b2lkCj4gICAgICBpZiAoY3B1X3RpY2tzX2VuYWJsZWQpIHsKPiAgICAgICAgICByZXR1cm4g LUVJTlZBTDsKPiAgICAgIH0KPiAtICAgIHFlbXVfZ2V0X2JlNjRzKGYsICZjcHVfdGlja3Nfb2Zm c2V0KTsKPiAtICAgIHFlbXVfZ2V0X2JlNjRzKGYsICZ0aWNrc19wZXJfc2VjKTsKPiArICAgIHFl bXVfZ2V0X2JlNjRzKGYsICh1aW50NjRfdCAqKSZjcHVfdGlja3Nfb2Zmc2V0KTsKPiArICAgIHFl bXVfZ2V0X2JlNjRzKGYsICh1aW50NjRfdCAqKSZ0aWNrc19wZXJfc2VjKTsKPiAgICAgIGlmICh2 ZXJzaW9uX2lkID09IDIpIHsKPiAtICAgICAgICBxZW11X2dldF9iZTY0cyhmLCAmY3B1X2Nsb2Nr X29mZnNldCk7Cj4gKyAgICAgICAgcWVtdV9nZXRfYmU2NHMoZiwgKHVpbnQ2NF90ICopJmNwdV9j bG9ja19vZmZzZXQpOwo+ICAgICAgfQo+ICAgICAgcmV0dXJuIDA7Cj4gIH0KPiBAQCAtMTYwNiw3 ICsxNjA2LDcgQEAgdm9pZCBxZW11X2Nocl9wcmludGYoQ2hhckRyaXZlclN0YXRlICpzLAo+ICAg ICAgdmFfbGlzdCBhcDsKPiAgICAgIHZhX3N0YXJ0KGFwLCBmbXQpOwo+ICAgICAgdnNucHJpbnRm KGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZtdCwgYXApOwo+IC0gICAgcWVtdV9jaHJfd3JpdGUocywgYnVm LCBzdHJsZW4oYnVmKSk7Cj4gKyAgICBxZW11X2Nocl93cml0ZShzLCAodWludDhfdCAqKWJ1Ziwg c3RybGVuKGJ1ZikpOwo+ICAgICAgdmFfZW5kKGFwKTsKPiAgfQo+Cj4gQEAgLTE2OTUsNyArMTY5 NSw3IEBAIHN0YXRpYyBpbnQgbXV4X2Nocl93cml0ZShDaGFyRHJpdmVyU3RhdGUKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgIChzZWNzIC8gNjApICUgNjAsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWNzICUgNjAsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgodGkg LyAxMDAwMDAwKSAlIDEwMDApKTsKPiAtICAgICAgICAgICAgICAgIGQtPmRydi0+Y2hyX3dyaXRl KGQtPmRydiwgYnVmMSwgc3RybGVuKGJ1ZjEpKTsKPiArICAgICAgICAgICAgICAgIGQtPmRydi0+ Y2hyX3dyaXRlKGQtPmRydiwgKHVpbnQ4X3QgKilidWYxLCBzdHJsZW4oYnVmMSkpOwo+ICAgICAg ICAgICAgICB9Cj4gICAgICAgICAgfQo+ICAgICAgfQo+IEBAIC0xNzI2LDEzICsxNzI2LDEzIEBA IHN0YXRpYyB2b2lkIG11eF9wcmludF9oZWxwKENoYXJEcml2ZXJTdGEKPiAgICAgIH0gZWxzZSB7 Cj4gICAgICAgICAgc3ByaW50ZihjYnVmLCJcblxyRXNjYXBlLUNoYXIgc2V0IHRvIEFzY2lpOiAw eCUwMnhcblxyXG5cciIsIHRlcm1fZXNjYXBlX2NoYXIpOwo+ICAgICAgfQo+IC0gICAgY2hyLT5j aHJfd3JpdGUoY2hyLCBjYnVmLCBzdHJsZW4oY2J1ZikpOwo+ICsgICAgY2hyLT5jaHJfd3JpdGUo Y2hyLCAodWludDhfdCAqKWNidWYsIHN0cmxlbihjYnVmKSk7Cj4gICAgICBmb3IgKGkgPSAwOyBt dXhfaGVscFtpXSAhPSBOVUxMOyBpKyspIHsKPiAgICAgICAgICBmb3IgKGo9MDsgbXV4X2hlbHBb aV1bal0gIT0gJ1wwJzsgaisrKSB7Cj4gICAgICAgICAgICAgIGlmIChtdXhfaGVscFtpXVtqXSA9 PSAnJScpCj4gLSAgICAgICAgICAgICAgICBjaHItPmNocl93cml0ZShjaHIsIGVidWYsIHN0cmxl bihlYnVmKSk7Cj4gKyAgICAgICAgICAgICAgICBjaHItPmNocl93cml0ZShjaHIsICh1aW50OF90 ICopZWJ1Ziwgc3RybGVuKGVidWYpKTsKPiAgICAgICAgICAgICAgZWxzZQo+IC0gICAgICAgICAg ICAgICAgY2hyLT5jaHJfd3JpdGUoY2hyLCAmbXV4X2hlbHBbaV1bal0sIDEpOwo+ICsgICAgICAg ICAgICAgICAgY2hyLT5jaHJfd3JpdGUoY2hyLCAodWludDhfdCAqKSZtdXhfaGVscFtpXVtqXSwg MSk7Cj4gICAgICAgICAgfQo+ICAgICAgfQo+ICB9Cj4gQEAgLTE3NTEsNyArMTc1MSw3IEBAIHN0 YXRpYyBpbnQgbXV4X3Byb2NfYnl0ZShDaGFyRHJpdmVyU3RhdGUKPiAgICAgICAgICBjYXNlICd4 JzoKPiAgICAgICAgICAgICAgewo+ICAgICAgICAgICAgICAgICAgIGNoYXIgKnRlcm0gPSAgIlFF TVU6IFRlcm1pbmF0ZWRcblxyIjsKPiAtICAgICAgICAgICAgICAgICBjaHItPmNocl93cml0ZShj aHIsdGVybSxzdHJsZW4odGVybSkpOwo+ICsgICAgICAgICAgICAgICAgIGNoci0+Y2hyX3dyaXRl KGNociwodWludDhfdCAqKXRlcm0sc3RybGVuKHRlcm0pKTsKPiAgICAgICAgICAgICAgICAgICBl eGl0KDApOwo+ICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgICAgICB9Cj4gQEAg LTI5MDAsNyArMjkwMCw3IEBAIHN0YXRpYyBpbnQgdWRwX2Nocl9yZWFkX3BvbGwodm9pZCAqb3Bh cXUKPiAgICAgICAqIGZpcnN0Cj4gICAgICAgKi8KPiAgICAgIHdoaWxlIChzLT5tYXhfc2l6ZSA+ IDAgJiYgcy0+YnVmcHRyIDwgcy0+YnVmY250KSB7Cj4gLSAgICAgICAgcWVtdV9jaHJfcmVhZChj aHIsICZzLT5idWZbcy0+YnVmcHRyXSwgMSk7Cj4gKyAgICAgICAgcWVtdV9jaHJfcmVhZChjaHIs ICh1aW50OF90ICopJnMtPmJ1ZltzLT5idWZwdHJdLCAxKTsKPiAgICAgICAgICBzLT5idWZwdHIr KzsKPiAgICAgICAgICBzLT5tYXhfc2l6ZSA9IHFlbXVfY2hyX2Nhbl9yZWFkKGNocik7Cj4gICAg ICB9Cj4gQEAgLTI5MjEsNyArMjkyMSw3IEBAIHN0YXRpYyB2b2lkIHVkcF9jaHJfcmVhZCh2b2lk ICpvcGFxdWUpCj4KPiAgICAgIHMtPmJ1ZnB0ciA9IDA7Cj4gICAgICB3aGlsZSAocy0+bWF4X3Np emUgPiAwICYmIHMtPmJ1ZnB0ciA8IHMtPmJ1ZmNudCkgewo+IC0gICAgICAgIHFlbXVfY2hyX3Jl YWQoY2hyLCAmcy0+YnVmW3MtPmJ1ZnB0cl0sIDEpOwo+ICsgICAgICAgIHFlbXVfY2hyX3JlYWQo Y2hyLCAodWludDhfdCAqKSZzLT5idWZbcy0+YnVmcHRyXSwgMSk7Cj4gICAgICAgICAgcy0+YnVm cHRyKys7Cj4gICAgICAgICAgcy0+bWF4X3NpemUgPSBxZW11X2Nocl9jYW5fcmVhZChjaHIpOwo+ ICAgICAgfQo+IEBAIC0zMDMzLDcgKzMwMzMsNyBAQCBzdGF0aWMgaW50IHRjcF9jaHJfcmVhZF9w b2xsKHZvaWQgKm9wYXF1Cj4gICNkZWZpbmUgSUFDX0JSRUFLIDI0Mwo+ICBzdGF0aWMgdm9pZCB0 Y3BfY2hyX3Byb2Nlc3NfSUFDX2J5dGVzKENoYXJEcml2ZXJTdGF0ZSAqY2hyLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRDUENoYXJEcml2ZXIgKnMsCj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmLCBpbnQgKnNpemUpCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQg KnNpemUpCj4gIHsKPiAgICAgIC8qIEhhbmRsZSBhbnkgdGVsbmV0IGNsaWVudCdzIGJhc2ljIElB QyBvcHRpb25zIHRvIHNhdGlzZnkgY2hhciBieQo+ICAgICAgICogY2hhciBtb2RlIHdpdGggbm8g ZWNoby4gIEFsbCBJQUMgb3B0aW9ucyB3aWxsIGJlIHJlbW92ZWQgZnJvbQo+IEBAIC00Mzk2LDcg KzQzOTYsOCBAQCBzdGF0aWMgTmV0U29ja2V0U3RhdGUgKm5ldF9zb2NrZXRfZmRfaW5pCj4gIHsK PiAgICAgIGludCBzb190eXBlPS0xLCBvcHRsZW49c2l6ZW9mKHNvX3R5cGUpOwo+Cj4gLSAgICBp ZihnZXRzb2Nrb3B0KGZkLCBTT0xfU09DS0VULCBTT19UWVBFLCAoY2hhciAqKSZzb190eXBlLCAm b3B0bGVuKTwgMCkgewo+ICsgICAgaWYoZ2V0c29ja29wdChmZCwgU09MX1NPQ0tFVCwgU09fVFlQ RSwgKGNoYXIgKikmc29fdHlwZSwKPiArICAgICAgICAoc29ja2xlbl90ICopJm9wdGxlbik8IDAp IHsKPiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTogZXJyb3I6IGdldHNvY2tvcHQoU09f VFlQRSkgZm9yIGZkPSVkIGZhaWxlZFxuIiwgZmQpOwo+ICAgICAgICAgcmV0dXJuIE5VTEw7Cj4g ICAgICB9Cj4gQEAgLTU0MTMsNyArNTQxNCw3IEBAIHN0YXRpYyBpbnQgcWVtdV9zYXZldm1fc3Rh dGUoUUVNVUZpbGUgKmYKPiAgICAgICAgICAvKiBJRCBzdHJpbmcgKi8KPiAgICAgICAgICBsZW4g PSBzdHJsZW4oc2UtPmlkc3RyKTsKPiAgICAgICAgICBxZW11X3B1dF9ieXRlKGYsIGxlbik7Cj4g LSAgICAgICAgcWVtdV9wdXRfYnVmZmVyKGYsIHNlLT5pZHN0ciwgbGVuKTsKPiArICAgICAgICBx ZW11X3B1dF9idWZmZXIoZiwgKHVpbnQ4X3QgKilzZS0+aWRzdHIsIGxlbik7Cj4KPiAgICAgICAg ICBxZW11X3B1dF9iZTMyKGYsIHNlLT5pbnN0YW5jZV9pZCk7Cj4gICAgICAgICAgcWVtdV9wdXRf YmUzMihmLCBzZS0+dmVyc2lvbl9pZCk7Cj4gQEAgLTU0NzQsNyArNTQ3NSw3IEBAIHN0YXRpYyBp bnQgcWVtdV9sb2Fkdm1fc3RhdGUoUUVNVUZpbGUgKmYKPiAgICAgICAgICBpZiAocWVtdV9mdGVs bChmKSA+PSBlbmRfcG9zKQo+ICAgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICBsZW4gPSBx ZW11X2dldF9ieXRlKGYpOwo+IC0gICAgICAgIHFlbXVfZ2V0X2J1ZmZlcihmLCBpZHN0ciwgbGVu KTsKPiArICAgICAgICBxZW11X2dldF9idWZmZXIoZiwgKHVpbnQ4X3QgKilpZHN0ciwgbGVuKTsK PiAgICAgICAgICBpZHN0cltsZW5dID0gJ1wwJzsKPiAgICAgICAgICBpbnN0YW5jZV9pZCA9IHFl bXVfZ2V0X2JlMzIoZik7Cj4gICAgICAgICAgdmVyc2lvbl9pZCA9IHFlbXVfZ2V0X2JlMzIoZik7 Cj4gQEAgLTc5MDEsNyArNzkwMiw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK PiAgICAgICAgICAgICAgICAgIC8qIFdlIGp1c3QgZG8gc29tZSBnZW5lcmljIGNvbnNpc3RlbmN5 IGNoZWNrcyAqLwo+ICAgICAgICAgICAgICAgICAgewo+ICAgICAgICAgICAgICAgICAgICAgIC8q IENvdWxkIGVhc2lseSBiZSBleHRlbmRlZCB0byA2NCBkZXZpY2VzIGlmIG5lZWRlZCAqLwo+IC0g ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7Cj4gKyAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqcDsKPgo+ICAgICAgICAgICAgICAgICAgICAgIGJvb3RfZGV2 aWNlc19iaXRtYXAgPSAwOwo+ICAgICAgICAgICAgICAgICAgICAgIGZvciAocCA9IGJvb3RfZGV2 aWNlczsgKnAgIT0gJ1wwJzsgcCsrKSB7Cj4gSW5kZXg6IHZuYy5jCj4gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IFJD UyBmaWxlOiAvc291cmNlcy9xZW11L3FlbXUvdm5jLmMsdgo+IHJldHJpZXZpbmcgcmV2aXNpb24g MS4yOQo+IGRpZmYgLXUgLXAgLXIxLjI5IHZuYy5jCj4gLS0tIHZuYy5jICAgICAgIDE4IE5vdiAy MDA3IDAxOjQ0OjM2IC0wMDAwICAgICAgMS4yOQo+ICsrKyB2bmMuYyAgICAgICAyOSBOb3YgMjAw NyAyMzo1MDowMSAtMDAwMAo+IEBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIHZvaWQgdm5jX3dy aXRlX3BpeGVsc19nZW5lcmljKFZuYwo+ICBzdGF0aWMgdm9pZCBzZW5kX2ZyYW1lYnVmZmVyX3Vw ZGF0ZV9yYXcoVm5jU3RhdGUgKnZzLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCkKPiAgewo+ ICAgICAgaW50IGk7Cj4gLSAgICBjaGFyICpyb3c7Cj4gKyAgICB1aW50OF90ICpyb3c7Cj4KPiAg ICAgIHZuY19mcmFtZWJ1ZmZlcl91cGRhdGUodnMsIHgsIHksIHcsIGgsIDApOwo+Cj4gQEAgLTQz Myw4ICs0MzMsOCBAQCBzdGF0aWMgdm9pZCBzZW5kX2ZyYW1lYnVmZmVyX3VwZGF0ZShWbmNTCj4g IHN0YXRpYyB2b2lkIHZuY19jb3B5KERpc3BsYXlTdGF0ZSAqZHMsIGludCBzcmNfeCwgaW50IHNy Y195LCBpbnQgZHN0X3gsIGludCBkc3RfeSwgaW50IHcsIGludCBoKQo+ICB7Cj4gICAgICBpbnQg c3JjLCBkc3Q7Cj4gLSAgICBjaGFyICpzcmNfcm93Owo+IC0gICAgY2hhciAqZHN0X3JvdzsKPiAr ICAgIHVpbnQ4X3QgKnNyY19yb3c7Cj4gKyAgICB1aW50OF90ICpkc3Rfcm93Owo+ICAgICAgY2hh ciAqb2xkX3JvdzsKPiAgICAgIGludCB5ID0gMDsKPiAgICAgIGludCBwaXRjaCA9IGRzLT5saW5l c2l6ZTsKPiBAQCAtNDkyLDcgKzQ5Miw3IEBAIHN0YXRpYyB2b2lkIHZuY191cGRhdGVfY2xpZW50 KHZvaWQgKm9wYXEKPgo+ICAgICAgaWYgKHZzLT5uZWVkX3VwZGF0ZSAmJiB2cy0+Y3NvY2sgIT0g LTEpIHsKPiAgICAgICAgIGludCB5Owo+IC0gICAgICAgY2hhciAqcm93Owo+ICsgICAgICAgdWlu dDhfdCAqcm93Owo+ICAgICAgICAgY2hhciAqb2xkX3JvdzsKPiAgICAgICAgIHVpbnQzMl90IHdp ZHRoX21hc2tbVk5DX0RJUlRZX1dPUkRTXTsKPiAgICAgICAgIGludCBuX3JlY3RhbmdsZXM7Cj4g QEAgLTUwOSwxMCArNTA5LDExIEBAIHN0YXRpYyB2b2lkIHZuY191cGRhdGVfY2xpZW50KHZvaWQg Km9wYXEKPiAgICAgICAgIGZvciAoeSA9IDA7IHkgPCB2cy0+aGVpZ2h0OyB5KyspIHsKPiAgICAg ICAgICAgICBpZiAodm5jX2FuZF9iaXRzKHZzLT5kaXJ0eV9yb3dbeV0sIHdpZHRoX21hc2ssIFZO Q19ESVJUWV9XT1JEUykpIHsKPiAgICAgICAgICAgICAgICAgaW50IHg7Cj4gLSAgICAgICAgICAg ICAgIGNoYXIgKnB0ciwgKm9sZF9wdHI7Cj4gKyAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB0cjsK PiArICAgICAgICAgICAgICAgY2hhciAqb2xkX3B0cjsKPgo+ICAgICAgICAgICAgICAgICBwdHIg PSByb3c7Cj4gLSAgICAgICAgICAgICAgIG9sZF9wdHIgPSBvbGRfcm93Owo+ICsgICAgICAgICAg ICAgICBvbGRfcHRyID0gKGNoYXIqKW9sZF9yb3c7Cj4KPiAgICAgICAgICAgICAgICAgZm9yICh4 ID0gMDsgeCA8IHZzLT5kcy0+d2lkdGg7IHggKz0gMTYpIHsKPiAgICAgICAgICAgICAgICAgICAg IGlmIChtZW1jbXAob2xkX3B0ciwgcHRyLCAxNiAqIHZzLT5kZXB0aCkgPT0gMCkgewo+IEBAIC0x MTg0LDIyICsxMTg1LDIzIEBAIHN0YXRpYyBpbnQgcHJvdG9jb2xfY2xpZW50X21zZyhWbmNTdGF0 ZQo+ICAgICAgICAgaWYgKGxlbiA9PSAxKQo+ICAgICAgICAgICAgIHJldHVybiAyMDsKPgo+IC0g ICAgICAgc2V0X3BpeGVsX2Zvcm1hdCh2cywgcmVhZF91OChkYXRhLCA0KSwgcmVhZF91OChkYXRh LCA1KSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF91OChkYXRhLCA2KSwgcmVhZF91 OChkYXRhLCA3KSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF91MTYoZGF0YSwgOCks IHJlYWRfdTE2KGRhdGEsIDEwKSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF91MTYo ZGF0YSwgMTIpLCByZWFkX3U4KGRhdGEsIDE0KSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg cmVhZF91OChkYXRhLCAxNSksIHJlYWRfdTgoZGF0YSwgMTYpKTsKPiArICAgICAgIHNldF9waXhl bF9mb3JtYXQodnMsIHJlYWRfdTgoKHVpbnQ4X3QgKilkYXRhLCA0KSwKPiArICAgICAgICAgICAg ICAgcmVhZF91OCgodWludDhfdCAqKWRhdGEsIDUpLCByZWFkX3U4KCh1aW50OF90ICopZGF0YSwg NiksCj4gKyAgICAgICAgICAgICAgIHJlYWRfdTgoKHVpbnQ4X3QgKilkYXRhLCA3KSwgcmVhZF91 MTYoKHVpbnQ4X3QgKilkYXRhLCA4KSwKPiArICAgICAgICAgICAgICAgcmVhZF91MTYoKHVpbnQ4 X3QgKilkYXRhLCAxMCksIHJlYWRfdTE2KCh1aW50OF90ICopZGF0YSwgMTIpLAo+ICsgICAgICAg ICAgICAgICByZWFkX3U4KCh1aW50OF90ICopZGF0YSwgMTQpLCByZWFkX3U4KCh1aW50OF90ICop ZGF0YSwgMTUpLAo+ICsgICAgICAgICAgICAgICByZWFkX3U4KCh1aW50OF90ICopZGF0YSwgMTYp KTsKPiAgICAgICAgIGJyZWFrOwo+ICAgICAgY2FzZSAyOgo+ICAgICAgICAgaWYgKGxlbiA9PSAx KQo+ICAgICAgICAgICAgIHJldHVybiA0Owo+Cj4gICAgICAgICBpZiAobGVuID09IDQpCj4gLSAg ICAgICAgICAgcmV0dXJuIDQgKyAocmVhZF91MTYoZGF0YSwgMikgKiA0KTsKPiArICAgICAgICAg ICByZXR1cm4gNCArIChyZWFkX3UxNigodWludDhfdCAqKWRhdGEsIDIpICogNCk7Cj4KPiAtICAg ICAgIGxpbWl0ID0gcmVhZF91MTYoZGF0YSwgMik7Cj4gKyAgICAgICBsaW1pdCA9IHJlYWRfdTE2 KCh1aW50OF90ICopZGF0YSwgMik7Cj4gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGltaXQ7IGkr Kykgewo+IC0gICAgICAgICAgIGludDMyX3QgdmFsID0gcmVhZF9zMzIoZGF0YSwgNCArIChpICog NCkpOwo+ICsgICAgICAgICAgIGludDMyX3QgdmFsID0gcmVhZF9zMzIoKHVpbnQ4X3QgKilkYXRh LCA0ICsgKGkgKiA0KSk7Cj4gICAgICAgICAgICAgbWVtY3B5KGRhdGEgKyA0ICsgKGkgKiA0KSwg JnZhbCwgc2l6ZW9mKHZhbCkpOwo+ICAgICAgICAgfQo+Cj4gQEAgLTEyMTAsMzIgKzEyMTIsMzQg QEAgc3RhdGljIGludCBwcm90b2NvbF9jbGllbnRfbXNnKFZuY1N0YXRlCj4gICAgICAgICAgICAg cmV0dXJuIDEwOwo+Cj4gICAgICAgICBmcmFtZWJ1ZmZlcl91cGRhdGVfcmVxdWVzdCh2cywKPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdTgoZGF0YSwgMSksIHJlYWRf dTE2KGRhdGEsIDIpLCByZWFkX3UxNihkYXRhLCA0KSwKPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlYWRfdTE2KGRhdGEsIDYpLCByZWFkX3UxNihkYXRhLCA4KSk7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3U4KCh1aW50OF90ICopZGF0YSwg MSksIHJlYWRfdTE2KCh1aW50OF90ICopZGF0YSwgMiksCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZWFkX3UxNigodWludDhfdCAqKWRhdGEsIDQpLCByZWFkX3UxNigodWlu dDhfdCAqKWRhdGEsIDYpLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVh ZF91MTYoKHVpbnQ4X3QgKilkYXRhLCA4KSk7Cj4gICAgICAgICBicmVhazsKPiAgICAgIGNhc2Ug NDoKPiAgICAgICAgIGlmIChsZW4gPT0gMSkKPiAgICAgICAgICAgICByZXR1cm4gODsKPgo+IC0g ICAgICAga2V5X2V2ZW50KHZzLCByZWFkX3U4KGRhdGEsIDEpLCByZWFkX3UzMihkYXRhLCA0KSk7 Cj4gKyAgICAgICBrZXlfZXZlbnQodnMsIHJlYWRfdTgoKHVpbnQ4X3QgKilkYXRhLCAxKSwgcmVh ZF91MzIoKHVpbnQ4X3QgKilkYXRhLCA0KSk7Cj4gICAgICAgICBicmVhazsKPiAgICAgIGNhc2Ug NToKPiAgICAgICAgIGlmIChsZW4gPT0gMSkKPiAgICAgICAgICAgICByZXR1cm4gNjsKPgo+IC0g ICAgICAgcG9pbnRlcl9ldmVudCh2cywgcmVhZF91OChkYXRhLCAxKSwgcmVhZF91MTYoZGF0YSwg MiksIHJlYWRfdTE2KGRhdGEsIDQpKTsKPiArICAgICAgIHBvaW50ZXJfZXZlbnQodnMsIHJlYWRf dTgoKHVpbnQ4X3QgKilkYXRhLCAxKSwgcmVhZF91MTYoKHVpbnQ4X3QgKilkYXRhLCAyKSwKPiAr ICAgICAgICAgICAgICAgcmVhZF91MTYoKHVpbnQ4X3QgKilkYXRhLCA0KSk7Cj4gICAgICAgICBi cmVhazsKPiAgICAgIGNhc2UgNjoKPiAgICAgICAgIGlmIChsZW4gPT0gMSkKPiAgICAgICAgICAg ICByZXR1cm4gODsKPgo+ICAgICAgICAgaWYgKGxlbiA9PSA4KSB7Cj4gLSAgICAgICAgICAgIHVp bnQzMl90IGRsZW4gPSByZWFkX3UzMihkYXRhLCA0KTsKPiArICAgICAgICAgICAgdWludDMyX3Qg ZGxlbiA9IHJlYWRfdTMyKCh1aW50OF90ICopZGF0YSwgNCk7Cj4gICAgICAgICAgICAgIGlmIChk bGVuID4gMCkKPiAgICAgICAgICAgICAgICAgIHJldHVybiA4ICsgZGxlbjsKPiAgICAgICAgICB9 Cj4KPiAtICAgICAgIGNsaWVudF9jdXRfdGV4dCh2cywgcmVhZF91MzIoZGF0YSwgNCksIGRhdGEg KyA4KTsKPiArICAgICAgIGNsaWVudF9jdXRfdGV4dCh2cywgcmVhZF91MzIoKHVpbnQ4X3QgKilk YXRhLCA0KSwgZGF0YSArIDgpOwo+ICAgICAgICAgYnJlYWs7Cj4gICAgICBkZWZhdWx0Ogo+ICAg ICAgICAgcHJpbnRmKCJNc2c6ICVkXG4iLCBkYXRhWzBdKTsKPiBAQCAtMTMyMiw5ICsxMzI2LDkg QEAgc3RhdGljIHZvaWQgbWFrZV9jaGFsbGVuZ2UoVm5jU3RhdGUgKnZzKQo+Cj4gIHN0YXRpYyBp bnQgcHJvdG9jb2xfY2xpZW50X2F1dGhfdm5jKFZuY1N0YXRlICp2cywgY2hhciAqZGF0YSwgc2l6 ZV90IGxlbikKPiAgewo+IC0gICAgY2hhciByZXNwb25zZVtWTkNfQVVUSF9DSEFMTEVOR0VfU0la RV07Cj4gKyAgICB1bnNpZ25lZCBjaGFyIHJlc3BvbnNlW1ZOQ19BVVRIX0NIQUxMRU5HRV9TSVpF XTsKPiAgICAgIGludCBpLCBqLCBwd2xlbjsKPiAtICAgIGNoYXIga2V5WzhdOwo+ICsgICAgdW5z aWduZWQgY2hhciBrZXlbOF07Cj4KPiAgICAgIGlmICghdnMtPnBhc3N3b3JkIHx8ICF2cy0+cGFz c3dvcmRbMF0pIHsKPiAgICAgICAgIFZOQ19ERUJVRygiTm8gcGFzc3dvcmQgY29uZmlndXJlZCBv biBzZXJ2ZXIiKTsKPiBAQCAtMTczMyw3ICsxNzM3LDcgQEAgc3RhdGljIGludCB2bmNfc3RhcnRf dGxzKHN0cnVjdCBWbmNTdGF0ZQo+Cj4gIHN0YXRpYyBpbnQgcHJvdG9jb2xfY2xpZW50X3ZlbmNy eXB0X2F1dGgoVm5jU3RhdGUgKnZzLCBjaGFyICpkYXRhLCBzaXplX3QgbGVuKQo+ICB7Cj4gLSAg ICBpbnQgYXV0aCA9IHJlYWRfdTMyKGRhdGEsIDApOwo+ICsgICAgaW50IGF1dGggPSByZWFkX3Uz MigodWludDhfdCAqKWRhdGEsIDApOwo+Cj4gICAgICBpZiAoYXV0aCAhPSB2cy0+c3ViYXV0aCkg ewo+ICAgICAgICAgVk5DX0RFQlVHKCJSZWplY3RpbmcgYXV0aCAlZFxuIiwgYXV0aCk7Cj4gSW5k ZXg6IHZuY2hleHRpbGUuaAo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiBSQ1MgZmlsZTogL3NvdXJjZXMvcWVtdS9x ZW11L3ZuY2hleHRpbGUuaCx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAxLjQKPiBkaWZmIC11IC1w IC1yMS40IHZuY2hleHRpbGUuaAo+IC0tLSB2bmNoZXh0aWxlLmggICAgICAgIDE2IFNlcCAyMDA3 IDIxOjA3OjUxIC0wMDAwICAgICAgMS40Cj4gKysrIHZuY2hleHRpbGUuaCAgICAgICAgMjkgTm92 IDIwMDcgMjM6NTA6MDEgLTAwMDAKPiBAQCAtMTMsNyArMTMsNyBAQCBzdGF0aWMgdm9pZCBDT05D QVQoc2VuZF9oZXh0aWxlX3RpbGVfLCBOCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90ICpsYXN0X2ZnMzIsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaGFzX2JnLCBpbnQgKmhhc19mZykKPiAg ewo+IC0gICAgY2hhciAqcm93ID0gKHZzLT5kcy0+ZGF0YSArIHkgKiB2cy0+ZHMtPmxpbmVzaXpl ICsgeCAqIHZzLT5kZXB0aCk7Cj4gKyAgICB1aW50OF90ICpyb3cgPSAodnMtPmRzLT5kYXRhICsg eSAqIHZzLT5kcy0+bGluZXNpemUgKyB4ICogdnMtPmRlcHRoKTsKPiAgICAgIHBpeGVsX3QgKmly b3cgPSAocGl4ZWxfdCAqKXJvdzsKPiAgICAgIGludCBqLCBpOwo+ICAgICAgcGl4ZWxfdCAqbGFz dF9iZyA9IChwaXhlbF90ICopbGFzdF9iZzMyOwo+IEluZGV4OiBhdWRpby9hbHNhYXVkaW8uYwo+ ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KPiBSQ1MgZmlsZTogL3NvdXJjZXMvcWVtdS9xZW11L2F1ZGlvL2Fsc2FhdWRp by5jLHYKPiByZXRyaWV2aW5nIHJldmlzaW9uIDEuMTEKPiBkaWZmIC11IC1wIC1yMS4xMSBhbHNh YXVkaW8uYwo+IC0tLSBhdWRpby9hbHNhYXVkaW8uYyAgIDE3IE5vdiAyMDA3IDE3OjM1OjU0IC0w MDAwICAgICAgMS4xMQo+ICsrKyBhdWRpby9hbHNhYXVkaW8uYyAgIDI5IE5vdiAyMDA3IDIzOjUw OjAxIC0wMDAwCj4gQEAgLTMzMSw3ICszMzEsOCBAQCBzdGF0aWMgaW50IGFsc2Ffb3BlbiAoaW50 IGluLCBzdHJ1Y3QgYWxzCj4gICAgICAgICAgZ290byBlcnI7Cj4gICAgICB9Cj4KPiAtICAgIGVy ciA9IHNuZF9wY21faHdfcGFyYW1zX3NldF9yYXRlX25lYXIgKGhhbmRsZSwgaHdfcGFyYW1zLCAm ZnJlcSwgMCk7Cj4gKyAgICBlcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19zZXRfcmF0ZV9uZWFyICho YW5kbGUsIGh3X3BhcmFtcywKPiArICAgICAgICAodW5zaWduZWQgaW50ICopJmZyZXEsIDApOwo+ ICAgICAgaWYgKGVyciA8IDApIHsKPiAgICAgICAgICBhbHNhX2xvZ2VycjIgKGVyciwgdHlwLCAi RmFpbGVkIHRvIHNldCBmcmVxdWVuY3kgJWRcbiIsIHJlcS0+ZnJlcSk7Cj4gICAgICAgICAgZ290 byBlcnI7Cj4gQEAgLTM0MCw3ICszNDEsNyBAQCBzdGF0aWMgaW50IGFsc2Ffb3BlbiAoaW50IGlu LCBzdHJ1Y3QgYWxzCj4gICAgICBlcnIgPSBzbmRfcGNtX2h3X3BhcmFtc19zZXRfY2hhbm5lbHNf bmVhciAoCj4gICAgICAgICAgaGFuZGxlLAo+ICAgICAgICAgIGh3X3BhcmFtcywKPiAtICAgICAg ICAmbmNoYW5uZWxzCj4gKyAgICAgICAgKHVuc2lnbmVkIGludCAqKSZuY2hhbm5lbHMKPiAgICAg ICAgICApOwo+ICAgICAgaWYgKGVyciA8IDApIHsKPiAgICAgICAgICBhbHNhX2xvZ2VycjIgKGVy ciwgdHlwLCAiRmFpbGVkIHRvIHNldCBudW1iZXIgb2YgY2hhbm5lbHMgJWRcbiIsCj4gSW5kZXg6 IGh3L2FjcGkuYwo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KPiBSQ1MgZmlsZTogL3NvdXJjZXMvcWVtdS9xZW11L2h3 L2FjcGkuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAxLjE3Cj4gZGlmZiAtdSAtcCAtcjEuMTcg YWNwaS5jCj4gLS0tIGh3L2FjcGkuYyAgIDE3IE5vdiAyMDA3IDE3OjE0OjM5IC0wMDAwICAgICAg MS4xNwo+ICsrKyBody9hY3BpLmMgICAyOSBOb3YgMjAwNyAyMzo1MDowMSAtMDAwMAo+IEBAIC00 MzksNyArNDM5LDcgQEAgc3RhdGljIHZvaWQgcG1fc2F2ZShRRU1VRmlsZSogZix2b2lkICpvcAo+ ICAgICAgcWVtdV9wdXRfOHMoZiwgJnMtPmFwbWMpOwo+ICAgICAgcWVtdV9wdXRfOHMoZiwgJnMt PmFwbXMpOwo+ICAgICAgcWVtdV9wdXRfdGltZXIoZiwgcy0+dG1yX3RpbWVyKTsKPiAtICAgIHFl bXVfcHV0X2JlNjRzKGYsICZzLT50bXJfb3ZlcmZsb3dfdGltZSk7Cj4gKyAgICBxZW11X3B1dF9i ZTY0cyhmLCAodWludDY0X3QgKikmcy0+dG1yX292ZXJmbG93X3RpbWUpOwo+ICB9Cj4KPiAgc3Rh dGljIGludCBwbV9sb2FkKFFFTVVGaWxlKiBmLHZvaWQqIG9wYXF1ZSxpbnQgdmVyc2lvbl9pZCkK PiBAQCAtNDYwLDcgKzQ2MCw3IEBAIHN0YXRpYyBpbnQgcG1fbG9hZChRRU1VRmlsZSogZix2b2lk KiBvcGEKPiAgICAgIHFlbXVfZ2V0XzhzKGYsICZzLT5hcG1jKTsKPiAgICAgIHFlbXVfZ2V0Xzhz KGYsICZzLT5hcG1zKTsKPiAgICAgIHFlbXVfZ2V0X3RpbWVyKGYsIHMtPnRtcl90aW1lcik7Cj4g LSAgICBxZW11X2dldF9iZTY0cyhmLCAmcy0+dG1yX292ZXJmbG93X3RpbWUpOwo+ICsgICAgcWVt dV9nZXRfYmU2NHMoZiwgKHVpbnQ2NF90ICopJnMtPnRtcl9vdmVyZmxvd190aW1lKTsKPgo+ICAg ICAgcG1faW9fc3BhY2VfdXBkYXRlKHMpOwo+Cj4gSW5kZXg6IGh3L2FwaWMuYwo+ID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KPiBSQ1MgZmlsZTogL3NvdXJjZXMvcWVtdS9xZW11L2h3L2FwaWMuYyx2Cj4gcmV0cmlldmlu ZyByZXZpc2lvbiAxLjE4Cj4gZGlmZiAtdSAtcCAtcjEuMTggYXBpYy5jCj4gLS0tIGh3L2FwaWMu YyAgIDE3IE5vdiAyMDA3IDE3OjE0OjQwIC0wMDAwICAgICAgMS4xOAo+ICsrKyBody9hcGljLmMg ICAyOSBOb3YgMjAwNyAyMzo1MDowMSAtMDAwMAo+IEBAIC03NjEsMTAgKzc2MSwxMCBAQCBzdGF0 aWMgdm9pZCBhcGljX3NhdmUoUUVNVUZpbGUgKmYsIHZvaWQKPiAgICAgIHFlbXVfcHV0X2JlMzJz KGYsICZzLT5pY3JbMF0pOwo+ICAgICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMtPmljclsxXSk7Cj4g ICAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+ZGl2aWRlX2NvbmYpOwo+IC0gICAgcWVtdV9wdXRf YmUzMnMoZiwgJnMtPmNvdW50X3NoaWZ0KTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1aW50 MzJfdCAqKSZzLT5jb3VudF9zaGlmdCk7Cj4gICAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+aW5p dGlhbF9jb3VudCk7Cj4gLSAgICBxZW11X3B1dF9iZTY0cyhmLCAmcy0+aW5pdGlhbF9jb3VudF9s b2FkX3RpbWUpOwo+IC0gICAgcWVtdV9wdXRfYmU2NHMoZiwgJnMtPm5leHRfdGltZSk7Cj4gKyAg ICBxZW11X3B1dF9iZTY0cyhmLCAodWludDY0X3QgKikmcy0+aW5pdGlhbF9jb3VudF9sb2FkX3Rp bWUpOwo+ICsgICAgcWVtdV9wdXRfYmU2NHMoZiwgKHVpbnQ2NF90ICopJnMtPm5leHRfdGltZSk7 Cj4KPiAgICAgIHFlbXVfcHV0X3RpbWVyKGYsIHMtPnRpbWVyKTsKPiAgfQo+IEBAIC03OTcsMTAg Kzc5NywxMCBAQCBzdGF0aWMgaW50IGFwaWNfbG9hZChRRU1VRmlsZSAqZiwgdm9pZCAqCj4gICAg ICBxZW11X2dldF9iZTMycyhmLCAmcy0+aWNyWzBdKTsKPiAgICAgIHFlbXVfZ2V0X2JlMzJzKGYs ICZzLT5pY3JbMV0pOwo+ICAgICAgcWVtdV9nZXRfYmUzMnMoZiwgJnMtPmRpdmlkZV9jb25mKTsK PiAtICAgIHFlbXVfZ2V0X2JlMzJzKGYsICZzLT5jb3VudF9zaGlmdCk7Cj4gKyAgICBxZW11X2dl dF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+Y291bnRfc2hpZnQpOwo+ICAgICAgcWVtdV9nZXRf YmUzMnMoZiwgJnMtPmluaXRpYWxfY291bnQpOwo+IC0gICAgcWVtdV9nZXRfYmU2NHMoZiwgJnMt PmluaXRpYWxfY291bnRfbG9hZF90aW1lKTsKPiAtICAgIHFlbXVfZ2V0X2JlNjRzKGYsICZzLT5u ZXh0X3RpbWUpOwo+ICsgICAgcWVtdV9nZXRfYmU2NHMoZiwgKHVpbnQ2NF90ICopJnMtPmluaXRp YWxfY291bnRfbG9hZF90aW1lKTsKPiArICAgIHFlbXVfZ2V0X2JlNjRzKGYsICh1aW50NjRfdCAq KSZzLT5uZXh0X3RpbWUpOwo+Cj4gICAgICBpZiAodmVyc2lvbl9pZCA+PSAyKQo+ICAgICAgICAg IHFlbXVfZ2V0X3RpbWVyKGYsIHMtPnRpbWVyKTsKPiBJbmRleDogaHcvY2lycnVzX3ZnYS5jCj4g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQo+IFJDUyBmaWxlOiAvc291cmNlcy9xZW11L3FlbXUvaHcvY2lycnVzX3ZnYS5j LHYKPiByZXRyaWV2aW5nIHJldmlzaW9uIDEuMjkKPiBkaWZmIC11IC1wIC1yMS4yOSBjaXJydXNf dmdhLmMKPiAtLS0gaHcvY2lycnVzX3ZnYS5jICAgICAxNyBOb3YgMjAwNyAxNzoxNDo0MCAtMDAw MCAgICAgIDEuMjkKPiArKysgaHcvY2lycnVzX3ZnYS5jICAgICAyOSBOb3YgMjAwNyAyMzo1MDow MSAtMDAwMAo+IEBAIC0yOTg1LDcgKzI5ODUsNyBAQCBzdGF0aWMgdm9pZCBjaXJydXNfdmdhX3Nh dmUoUUVNVUZpbGUgKmYsCj4gICAgICBxZW11X3B1dF9idWZmZXIoZiwgcy0+Z3IgKyAyLCAyNTQp Owo+ICAgICAgcWVtdV9wdXRfOHMoZiwgJnMtPmFyX2luZGV4KTsKPiAgICAgIHFlbXVfcHV0X2J1 ZmZlcihmLCBzLT5hciwgMjEpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMtPmFyX2ZsaXBf ZmxvcCk7Cj4gKyAgICBxZW11X3B1dF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+YXJfZmxpcF9m bG9wKTsKPiAgICAgIHFlbXVfcHV0XzhzKGYsICZzLT5jcl9pbmRleCk7Cj4gICAgICBxZW11X3B1 dF9idWZmZXIoZiwgcy0+Y3IsIDI1Nik7Cj4gICAgICBxZW11X3B1dF84cyhmLCAmcy0+bXNyKTsK PiBAQCAtMzAwMCw3ICszMDAwLDcgQEAgc3RhdGljIHZvaWQgY2lycnVzX3ZnYV9zYXZlKFFFTVVG aWxlICpmLAo+ICAgICAgcWVtdV9wdXRfYnVmZmVyKGYsIHMtPmRhY19jYWNoZSwgMyk7Cj4gICAg ICBxZW11X3B1dF9idWZmZXIoZiwgcy0+cGFsZXR0ZSwgNzY4KTsKPgo+IC0gICAgcWVtdV9wdXRf YmUzMnMoZiwgJnMtPmJhbmtfb2Zmc2V0KTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1aW50 MzJfdCAqKSZzLT5iYW5rX29mZnNldCk7Cj4KPiAgICAgIHFlbXVfcHV0XzhzKGYsICZzLT5jaXJy dXNfaGlkZGVuX2RhY19sb2NraW5kZXgpOwo+ICAgICAgcWVtdV9wdXRfOHMoZiwgJnMtPmNpcnJ1 c19oaWRkZW5fZGFjX2RhdGEpOwo+IEBAIC0zMDM2LDcgKzMwMzYsNyBAQCBzdGF0aWMgaW50IGNp cnJ1c192Z2FfbG9hZChRRU1VRmlsZSAqZiwKPiAgICAgIHFlbXVfZ2V0X2J1ZmZlcihmLCBzLT5n ciArIDIsIDI1NCk7Cj4gICAgICBxZW11X2dldF84cyhmLCAmcy0+YXJfaW5kZXgpOwo+ICAgICAg cWVtdV9nZXRfYnVmZmVyKGYsIHMtPmFyLCAyMSk7Cj4gLSAgICBxZW11X2dldF9iZTMycyhmLCAm cy0+YXJfZmxpcF9mbG9wKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZz LT5hcl9mbGlwX2Zsb3ApOwo+ICAgICAgcWVtdV9nZXRfOHMoZiwgJnMtPmNyX2luZGV4KTsKPiAg ICAgIHFlbXVfZ2V0X2J1ZmZlcihmLCBzLT5jciwgMjU2KTsKPiAgICAgIHFlbXVfZ2V0XzhzKGYs ICZzLT5tc3IpOwo+IEBAIC0zMDUxLDcgKzMwNTEsNyBAQCBzdGF0aWMgaW50IGNpcnJ1c192Z2Ff bG9hZChRRU1VRmlsZSAqZiwKPiAgICAgIHFlbXVfZ2V0X2J1ZmZlcihmLCBzLT5kYWNfY2FjaGUs IDMpOwo+ICAgICAgcWVtdV9nZXRfYnVmZmVyKGYsIHMtPnBhbGV0dGUsIDc2OCk7Cj4KPiAtICAg IHFlbXVfZ2V0X2JlMzJzKGYsICZzLT5iYW5rX29mZnNldCk7Cj4gKyAgICBxZW11X2dldF9iZTMy cyhmLCAodWludDMyX3QgKikmcy0+YmFua19vZmZzZXQpOwo+Cj4gICAgICBxZW11X2dldF84cyhm LCAmcy0+Y2lycnVzX2hpZGRlbl9kYWNfbG9ja2luZGV4KTsKPiAgICAgIHFlbXVfZ2V0XzhzKGYs ICZzLT5jaXJydXNfaGlkZGVuX2RhY19kYXRhKTsKPiBJbmRleDogaHcvZG1hLmMKPiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Cj4gUkNTIGZpbGU6IC9zb3VyY2VzL3FlbXUvcWVtdS9ody9kbWEuYyx2Cj4gcmV0cmlldmlu ZyByZXZpc2lvbiAxLjE2Cj4gZGlmZiAtdSAtcCAtcjEuMTYgZG1hLmMKPiAtLS0gaHcvZG1hLmMg ICAgMTcgTm92IDIwMDcgMTc6MTQ6NDEgLTAwMDAgICAgICAxLjE2Cj4gKysrIGh3L2RtYS5jICAg IDI5IE5vdiAyMDA3IDIzOjUwOjAxIC0wMDAwCj4gQEAgLTQ4MiwxMiArNDgyLDEyIEBAIHN0YXRp YyB2b2lkIGRtYV9zYXZlIChRRU1VRmlsZSAqZiwgdm9pZAo+ICAgICAgcWVtdV9wdXRfOHMgKGYs ICZkLT5jb21tYW5kKTsKPiAgICAgIHFlbXVfcHV0XzhzIChmLCAmZC0+bWFzayk7Cj4gICAgICBx ZW11X3B1dF84cyAoZiwgJmQtPmZsaXBfZmxvcCk7Cj4gLSAgICBxZW11X3B1dF9iZTMycyAoZiwg JmQtPmRzaGlmdCk7Cj4gKyAgICBxZW11X3B1dF9iZTMycyAoZiwgKHVpbnQzMl90ICopJmQtPmRz aGlmdCk7Cj4KPiAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyArK2kpIHsKPiAgICAgICAgICBzdHJ1 Y3QgZG1hX3JlZ3MgKnIgPSAmZC0+cmVnc1tpXTsKPiAtICAgICAgICBxZW11X3B1dF9iZTMycyAo ZiwgJnItPm5vd1swXSk7Cj4gLSAgICAgICAgcWVtdV9wdXRfYmUzMnMgKGYsICZyLT5ub3dbMV0p Owo+ICsgICAgICAgIHFlbXVfcHV0X2JlMzJzIChmLCAodWludDMyX3QgKikmci0+bm93WzBdKTsK PiArICAgICAgICBxZW11X3B1dF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnItPm5vd1sxXSk7Cj4g ICAgICAgICAgcWVtdV9wdXRfYmUxNnMgKGYsICZyLT5iYXNlWzBdKTsKPiAgICAgICAgICBxZW11 X3B1dF9iZTE2cyAoZiwgJnItPmJhc2VbMV0pOwo+ICAgICAgICAgIHFlbXVfcHV0XzhzIChmLCAm ci0+bW9kZSk7Cj4gQEAgLTUxMCwxMiArNTEwLDEyIEBAIHN0YXRpYyBpbnQgZG1hX2xvYWQgKFFF TVVGaWxlICpmLCB2b2lkICoKPiAgICAgIHFlbXVfZ2V0XzhzIChmLCAmZC0+Y29tbWFuZCk7Cj4g ICAgICBxZW11X2dldF84cyAoZiwgJmQtPm1hc2spOwo+ICAgICAgcWVtdV9nZXRfOHMgKGYsICZk LT5mbGlwX2Zsb3ApOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMgKGYsICZkLT5kc2hpZnQpOwo+ICsg ICAgcWVtdV9nZXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZkLT5kc2hpZnQpOwo+Cj4gICAgICBm b3IgKGkgPSAwOyBpIDwgNDsgKytpKSB7Cj4gICAgICAgICAgc3RydWN0IGRtYV9yZWdzICpyID0g JmQtPnJlZ3NbaV07Cj4gLSAgICAgICAgcWVtdV9nZXRfYmUzMnMgKGYsICZyLT5ub3dbMF0pOwo+ IC0gICAgICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAmci0+bm93WzFdKTsKPiArICAgICAgICBxZW11 X2dldF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnItPm5vd1swXSk7Cj4gKyAgICAgICAgcWVtdV9n ZXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZyLT5ub3dbMV0pOwo+ICAgICAgICAgIHFlbXVfZ2V0 X2JlMTZzIChmLCAmci0+YmFzZVswXSk7Cj4gICAgICAgICAgcWVtdV9nZXRfYmUxNnMgKGYsICZy LT5iYXNlWzFdKTsKPiAgICAgICAgICBxZW11X2dldF84cyAoZiwgJnItPm1vZGUpOwo+IEluZGV4 OiBody9mZGMuYwo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KPiBSQ1MgZmlsZTogL3NvdXJjZXMvcWVtdS9xZW11L2h3 L2ZkYy5jLHYKPiByZXRyaWV2aW5nIHJldmlzaW9uIDEuMzMKPiBkaWZmIC11IC1wIC1yMS4zMyBm ZGMuYwo+IC0tLSBody9mZGMuYyAgICAxNyBOb3YgMjAwNyAxNzoxNDo0MSAtMDAwMCAgICAgIDEu MzMKPiArKysgaHcvZmRjLmMgICAgMjkgTm92IDIwMDcgMjM6NTA6MDEgLTAwMDAKPiBAQCAtMTgw LDcgKzE4MCw3IEBAIHR5cGVkZWYgc3RydWN0IGZkX2Zvcm1hdF90IHsKPiAgICAgIHVpbnQ4X3Qg bGFzdF9zZWN0Owo+ICAgICAgdWludDhfdCBtYXhfdHJhY2s7Cj4gICAgICB1aW50OF90IG1heF9o ZWFkOwo+IC0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqc3RyOwo+ICsgICAgY29uc3QgY2hhciAq c3RyOwo+ICB9IGZkX2Zvcm1hdF90Owo+Cj4gIHN0YXRpYyBjb25zdCBmZF9mb3JtYXRfdCBmZF9m b3JtYXRzW10gPSB7Cj4gSW5kZXg6IGh3L2k4MjU0LmMKPiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gUkNTIGZpbGU6 IC9zb3VyY2VzL3FlbXUvcWVtdS9ody9pODI1NC5jLHYKPiByZXRyaWV2aW5nIHJldmlzaW9uIDEu MTIKPiBkaWZmIC11IC1wIC1yMS4xMiBpODI1NC5jCj4gLS0tIGh3L2k4MjU0LmMgIDE3IE5vdiAy MDA3IDE3OjE0OjQyIC0wMDAwICAgICAgMS4xMgo+ICsrKyBody9pODI1NC5jICAyOSBOb3YgMjAw NyAyMzo1MDowMSAtMDAwMAo+IEBAIC0zOTcsNyArMzk3LDcgQEAgc3RhdGljIHZvaWQgcGl0X3Nh dmUoUUVNVUZpbGUgKmYsIHZvaWQgKgo+Cj4gICAgICBmb3IoaSA9IDA7IGkgPCAzOyBpKyspIHsK PiAgICAgICAgICBzID0gJnBpdC0+Y2hhbm5lbHNbaV07Cj4gLSAgICAgICAgcWVtdV9wdXRfYmUz MnMoZiwgJnMtPmNvdW50KTsKPiArICAgICAgICBxZW11X3B1dF9iZTMycyhmLCAodWludDMyX3Qg Kikmcy0+Y291bnQpOwo+ICAgICAgICAgIHFlbXVfcHV0X2JlMTZzKGYsICZzLT5sYXRjaGVkX2Nv dW50KTsKPiAgICAgICAgICBxZW11X3B1dF84cyhmLCAmcy0+Y291bnRfbGF0Y2hlZCk7Cj4gICAg ICAgICAgcWVtdV9wdXRfOHMoZiwgJnMtPnN0YXR1c19sYXRjaGVkKTsKPiBAQCAtNDA5LDkgKzQw OSw5IEBAIHN0YXRpYyB2b2lkIHBpdF9zYXZlKFFFTVVGaWxlICpmLCB2b2lkICoKPiAgICAgICAg ICBxZW11X3B1dF84cyhmLCAmcy0+bW9kZSk7Cj4gICAgICAgICAgcWVtdV9wdXRfOHMoZiwgJnMt PmJjZCk7Cj4gICAgICAgICAgcWVtdV9wdXRfOHMoZiwgJnMtPmdhdGUpOwo+IC0gICAgICAgIHFl bXVfcHV0X2JlNjRzKGYsICZzLT5jb3VudF9sb2FkX3RpbWUpOwo+ICsgICAgICAgIHFlbXVfcHV0 X2JlNjRzKGYsICh1aW50NjRfdCAqKSZzLT5jb3VudF9sb2FkX3RpbWUpOwo+ICAgICAgICAgIGlm IChzLT5pcnFfdGltZXIpIHsKPiAtICAgICAgICAgICAgcWVtdV9wdXRfYmU2NHMoZiwgJnMtPm5l eHRfdHJhbnNpdGlvbl90aW1lKTsKPiArICAgICAgICAgICAgcWVtdV9wdXRfYmU2NHMoZiwgKHVp bnQ2NF90ICopJnMtPm5leHRfdHJhbnNpdGlvbl90aW1lKTsKPiAgICAgICAgICAgICAgcWVtdV9w dXRfdGltZXIoZiwgcy0+aXJxX3RpbWVyKTsKPiAgICAgICAgICB9Cj4gICAgICB9Cj4gQEAgLTQy OCw3ICs0MjgsNyBAQCBzdGF0aWMgaW50IHBpdF9sb2FkKFFFTVVGaWxlICpmLCB2b2lkICpvCj4K PiAgICAgIGZvcihpID0gMDsgaSA8IDM7IGkrKykgewo+ICAgICAgICAgIHMgPSAmcGl0LT5jaGFu bmVsc1tpXTsKPiAtICAgICAgICBxZW11X2dldF9iZTMycyhmLCAmcy0+Y291bnQpOwo+ICsgICAg ICAgIHFlbXVfZ2V0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZzLT5jb3VudCk7Cj4gICAgICAgICAg cWVtdV9nZXRfYmUxNnMoZiwgJnMtPmxhdGNoZWRfY291bnQpOwo+ICAgICAgICAgIHFlbXVfZ2V0 XzhzKGYsICZzLT5jb3VudF9sYXRjaGVkKTsKPiAgICAgICAgICBxZW11X2dldF84cyhmLCAmcy0+ c3RhdHVzX2xhdGNoZWQpOwo+IEBAIC00NDAsOSArNDQwLDkgQEAgc3RhdGljIGludCBwaXRfbG9h ZChRRU1VRmlsZSAqZiwgdm9pZCAqbwo+ICAgICAgICAgIHFlbXVfZ2V0XzhzKGYsICZzLT5tb2Rl KTsKPiAgICAgICAgICBxZW11X2dldF84cyhmLCAmcy0+YmNkKTsKPiAgICAgICAgICBxZW11X2dl dF84cyhmLCAmcy0+Z2F0ZSk7Cj4gLSAgICAgICAgcWVtdV9nZXRfYmU2NHMoZiwgJnMtPmNvdW50 X2xvYWRfdGltZSk7Cj4gKyAgICAgICAgcWVtdV9nZXRfYmU2NHMoZiwgKHVpbnQ2NF90ICopJnMt PmNvdW50X2xvYWRfdGltZSk7Cj4gICAgICAgICAgaWYgKHMtPmlycV90aW1lcikgewo+IC0gICAg ICAgICAgICBxZW11X2dldF9iZTY0cyhmLCAmcy0+bmV4dF90cmFuc2l0aW9uX3RpbWUpOwo+ICsg ICAgICAgICAgICBxZW11X2dldF9iZTY0cyhmLCAodWludDY0X3QgKikmcy0+bmV4dF90cmFuc2l0 aW9uX3RpbWUpOwo+ICAgICAgICAgICAgICBxZW11X2dldF90aW1lcihmLCBzLT5pcnFfdGltZXIp Owo+ICAgICAgICAgIH0KPiAgICAgIH0KPiBJbmRleDogaHcvaWRlLmMKPiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4g UkNTIGZpbGU6IC9zb3VyY2VzL3FlbXUvcWVtdS9ody9pZGUuYyx2Cj4gcmV0cmlldmluZyByZXZp c2lvbiAxLjcyCj4gZGlmZiAtdSAtcCAtcjEuNzIgaWRlLmMKPiAtLS0gaHcvaWRlLmMgICAgMTgg Tm92IDIwMDcgMDE6NDQ6MzcgLTAwMDAgICAgICAxLjcyCj4gKysrIGh3L2lkZS5jICAgIDI5IE5v diAyMDA3IDIzOjUwOjAxIC0wMDAwCj4gQEAgLTQ3MSwxMiArNDcxLDEyIEBAIHN0YXRpYyB2b2lk IGlkZV9pZGVudGlmeShJREVTdGF0ZSAqcykKPiAgICAgIHB1dF9sZTE2KHAgKyA1LCA1MTIpOyAv KiBYWFg6IHJldGlyZWQsIHJlbW92ZSA/ICovCj4gICAgICBwdXRfbGUxNihwICsgNiwgcy0+c2Vj dG9ycyk7Cj4gICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiUU0lMDVkIiwgcy0+ZHJp dmVfc2VyaWFsKTsKPiAtICAgIHBhZHN0cigodWludDhfdCAqKShwICsgMTApLCBidWYsIDIwKTsg Lyogc2VyaWFsIG51bWJlciAqLwo+ICsgICAgcGFkc3RyKChjaGFyICopKHAgKyAxMCksIGJ1Ziwg MjApOyAvKiBzZXJpYWwgbnVtYmVyICovCj4gICAgICBwdXRfbGUxNihwICsgMjAsIDMpOyAvKiBY WFg6IHJldGlyZWQsIHJlbW92ZSA/ICovCj4gICAgICBwdXRfbGUxNihwICsgMjEsIDUxMik7IC8q IGNhY2hlIHNpemUgaW4gc2VjdG9ycyAqLwo+ICAgICAgcHV0X2xlMTYocCArIDIyLCA0KTsgLyog ZWNjIGJ5dGVzICovCj4gLSAgICBwYWRzdHIoKHVpbnQ4X3QgKikocCArIDIzKSwgUUVNVV9WRVJT SU9OLCA4KTsgLyogZmlybXdhcmUgdmVyc2lvbiAqLwo+IC0gICAgcGFkc3RyKCh1aW50OF90ICop KHAgKyAyNyksICJRRU1VIEhBUkRESVNLIiwgNDApOyAvKiBtb2RlbCAqLwo+ICsgICAgcGFkc3Ry KChjaGFyICopKHAgKyAyMyksIFFFTVVfVkVSU0lPTiwgOCk7IC8qIGZpcm13YXJlIHZlcnNpb24g Ki8KPiArICAgIHBhZHN0cigoY2hhciAqKShwICsgMjcpLCAiUUVNVSBIQVJERElTSyIsIDQwKTsg LyogbW9kZWwgKi8KPiAgI2lmIE1BWF9NVUxUX1NFQ1RPUlMgPiAxCj4gICAgICBwdXRfbGUxNihw ICsgNDcsIDB4ODAwMCB8IE1BWF9NVUxUX1NFQ1RPUlMpOwo+ICAjZW5kaWYKPiBAQCAtNTM2LDEy ICs1MzYsMTIgQEAgc3RhdGljIHZvaWQgaWRlX2F0YXBpX2lkZW50aWZ5KElERVN0YXRlCj4gICAg ICAvKiBSZW1vdmFibGUgQ0RST00sIDUwdXMgcmVzcG9uc2UsIDEyIGJ5dGUgcGFja2V0cyAqLwo+ ICAgICAgcHV0X2xlMTYocCArIDAsICgyIDw8IDE0KSB8ICg1IDw8IDgpIHwgKDEgPDwgNykgfCAo MiA8PCA1KSB8ICgwIDw8IDApKTsKPiAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJR TSUwNWQiLCBzLT5kcml2ZV9zZXJpYWwpOwo+IC0gICAgcGFkc3RyKCh1aW50OF90ICopKHAgKyAx MCksIGJ1ZiwgMjApOyAvKiBzZXJpYWwgbnVtYmVyICovCj4gKyAgICBwYWRzdHIoKGNoYXIgKiko cCArIDEwKSwgYnVmLCAyMCk7IC8qIHNlcmlhbCBudW1iZXIgKi8KPiAgICAgIHB1dF9sZTE2KHAg KyAyMCwgMyk7IC8qIGJ1ZmZlciB0eXBlICovCj4gICAgICBwdXRfbGUxNihwICsgMjEsIDUxMik7 IC8qIGNhY2hlIHNpemUgaW4gc2VjdG9ycyAqLwo+ICAgICAgcHV0X2xlMTYocCArIDIyLCA0KTsg LyogZWNjIGJ5dGVzICovCj4gLSAgICBwYWRzdHIoKHVpbnQ4X3QgKikocCArIDIzKSwgUUVNVV9W RVJTSU9OLCA4KTsgLyogZmlybXdhcmUgdmVyc2lvbiAqLwo+IC0gICAgcGFkc3RyKCh1aW50OF90 ICopKHAgKyAyNyksICJRRU1VIENELVJPTSIsIDQwKTsgLyogbW9kZWwgKi8KPiArICAgIHBhZHN0 cigoY2hhciAqKShwICsgMjMpLCBRRU1VX1ZFUlNJT04sIDgpOyAvKiBmaXJtd2FyZSB2ZXJzaW9u ICovCj4gKyAgICBwYWRzdHIoKGNoYXIgKikocCArIDI3KSwgIlFFTVUgQ0QtUk9NIiwgNDApOyAv KiBtb2RlbCAqLwo+ICAgICAgcHV0X2xlMTYocCArIDQ4LCAxKTsgLyogZHdvcmQgSS9PIChYWFg6 IHNob3VsZCBub3QgYmUgc2V0IG9uIENEUk9NKSAqLwo+ICAjaWZkZWYgVVNFX0RNQV9DRFJPTQo+ ICAgICAgcHV0X2xlMTYocCArIDQ5LCAxIDw8IDkgfCAxIDw8IDgpOyAvKiBETUEgYW5kIExCQSBz dXBwb3J0ZWQgKi8KPiBAQCAtNTkxLDEwICs1OTEsMTAgQEAgc3RhdGljIHZvaWQgaWRlX2NmYXRh X2lkZW50aWZ5KElERVN0YXRlCj4gICAgICBwdXRfbGUxNihwICsgNywgcy0+bmJfc2VjdG9ycyA+ PiAxNik7ICAgICAgLyogU2VjdG9ycyBwZXIgY2FyZCAqLwo+ICAgICAgcHV0X2xlMTYocCArIDgs IHMtPm5iX3NlY3RvcnMpOyAgICAgICAgICAgIC8qIFNlY3RvcnMgcGVyIGNhcmQgKi8KPiAgICAg IHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJRTSUwNWQiLCBzLT5kcml2ZV9zZXJpYWwpOwo+ IC0gICAgcGFkc3RyKCh1aW50OF90ICopKHAgKyAxMCksIGJ1ZiwgMjApOyAgICAgIC8qIFNlcmlh bCBudW1iZXIgaW4gQVNDSUkgKi8KPiArICAgIHBhZHN0cigoY2hhciAqKShwICsgMTApLCBidWYs IDIwKTsgLyogU2VyaWFsIG51bWJlciBpbiBBU0NJSSAqLwo+ICAgICAgcHV0X2xlMTYocCArIDIy LCAweDAwMDQpOyAgICAgICAgICAgICAgICAgIC8qIEVDQyBieXRlcyAqLwo+IC0gICAgcGFkc3Ry KCh1aW50OF90ICopIChwICsgMjMpLCBRRU1VX1ZFUlNJT04sIDgpOyAgICAgLyogRmlybXdhcmUg UmV2aXNpb24gKi8KPiAtICAgIHBhZHN0cigodWludDhfdCAqKSAocCArIDI3KSwgIlFFTVUgTUlD Uk9EUklWRSIsIDQwKTsvKiBNb2RlbCBudW1iZXIgKi8KPiArICAgIHBhZHN0cigoY2hhciAqKSAo cCArIDIzKSwgUUVNVV9WRVJTSU9OLCA4KTsgICAgICAgIC8qIEZpcm13YXJlIFJldmlzaW9uICov Cj4gKyAgICBwYWRzdHIoKGNoYXIgKikgKHAgKyAyNyksICJRRU1VIE1JQ1JPRFJJVkUiLCA0MCk7 LyogTW9kZWwgbnVtYmVyICovCj4gICNpZiBNQVhfTVVMVF9TRUNUT1JTID4gMQo+ICAgICAgcHV0 X2xlMTYocCArIDQ3LCAweDgwMDAgfCBNQVhfTVVMVF9TRUNUT1JTKTsKPiAgI2Vsc2UKPiBAQCAt MjUwOCw4ICsyNTA4LDggQEAgc3RhdGljIHZvaWQgaWRlX2luaXRfaW9wb3J0KElERVN0YXRlICpp ZAo+ICAvKiBzYXZlIHBlciBJREUgZHJpdmUgZGF0YSAqLwo+ICBzdGF0aWMgdm9pZCBpZGVfc2F2 ZShRRU1VRmlsZSogZiwgSURFU3RhdGUgKnMpCj4gIHsKPiAtICAgIHFlbXVfcHV0X2JlMzJzKGYs ICZzLT5tdWx0X3NlY3RvcnMpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMtPmlkZW50aWZ5 X3NldCk7Cj4gKyAgICBxZW11X3B1dF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+bXVsdF9zZWN0 b3JzKTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZzLT5pZGVudGlmeV9z ZXQpOwo+ICAgICAgaWYgKHMtPmlkZW50aWZ5X3NldCkgewo+ICAgICAgICAgIHFlbXVfcHV0X2J1 ZmZlcihmLCAoY29uc3QgdWludDhfdCAqKXMtPmlkZW50aWZ5X2RhdGEsIDUxMik7Cj4gICAgICB9 Cj4gQEAgLTI1MzYsOCArMjUzNiw4IEBAIHN0YXRpYyB2b2lkIGlkZV9zYXZlKFFFTVVGaWxlKiBm LCBJREVTdGEKPiAgLyogbG9hZCBwZXIgSURFIGRyaXZlIGRhdGEgKi8KPiAgc3RhdGljIHZvaWQg aWRlX2xvYWQoUUVNVUZpbGUqIGYsIElERVN0YXRlICpzKQo+ICB7Cj4gLSAgICBxZW11X2dldF9i ZTMycyhmLCAmcy0+bXVsdF9zZWN0b3JzKTsKPiAtICAgIHFlbXVfZ2V0X2JlMzJzKGYsICZzLT5p ZGVudGlmeV9zZXQpOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMoZiwgKHVpbnQzMl90ICopJnMtPm11 bHRfc2VjdG9ycyk7Cj4gKyAgICBxZW11X2dldF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+aWRl bnRpZnlfc2V0KTsKPiAgICAgIGlmIChzLT5pZGVudGlmeV9zZXQpIHsKPiAgICAgICAgICBxZW11 X2dldF9idWZmZXIoZiwgKHVpbnQ4X3QgKilzLT5pZGVudGlmeV9kYXRhLCA1MTIpOwo+ICAgICAg fQo+IEluZGV4OiBody9tYzE0NjgxOHJ0Yy5jCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IFJDUyBmaWxlOiAvc291 cmNlcy9xZW11L3FlbXUvaHcvbWMxNDY4MThydGMuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAx LjE1Cj4gZGlmZiAtdSAtcCAtcjEuMTUgbWMxNDY4MThydGMuYwo+IC0tLSBody9tYzE0NjgxOHJ0 Yy5jICAgIDE4IE5vdiAyMDA3IDAxOjQ0OjM3IC0wMDAwICAgICAgMS4xNQo+ICsrKyBody9tYzE0 NjgxOHJ0Yy5jICAgIDI5IE5vdiAyMDA3IDIzOjUwOjAxIC0wMDAwCj4gQEAgLTQyMSwxOCArNDIx LDE4IEBAIHN0YXRpYyB2b2lkIHJ0Y19zYXZlKFFFTVVGaWxlICpmLCB2b2lkICoKPiAgICAgIHFl bXVfcHV0X2J1ZmZlcihmLCBzLT5jbW9zX2RhdGEsIDEyOCk7Cj4gICAgICBxZW11X3B1dF84cyhm LCAmcy0+Y21vc19pbmRleCk7Cj4KPiAtICAgIHFlbXVfcHV0X2JlMzJzKGYsICZzLT5jdXJyZW50 X3RtLnRtX3NlYyk7Cj4gLSAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+Y3VycmVudF90bS50bV9t aW4pOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMtPmN1cnJlbnRfdG0udG1faG91cik7Cj4g LSAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+Y3VycmVudF90bS50bV93ZGF5KTsKPiAtICAgIHFl bXVfcHV0X2JlMzJzKGYsICZzLT5jdXJyZW50X3RtLnRtX21kYXkpOwo+IC0gICAgcWVtdV9wdXRf YmUzMnMoZiwgJnMtPmN1cnJlbnRfdG0udG1fbW9uKTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzKGYs ICZzLT5jdXJyZW50X3RtLnRtX3llYXIpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMoZiwgKHVpbnQz Ml90ICopJnMtPmN1cnJlbnRfdG0udG1fc2VjKTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1 aW50MzJfdCAqKSZzLT5jdXJyZW50X3RtLnRtX21pbik7Cj4gKyAgICBxZW11X3B1dF9iZTMycyhm LCAodWludDMyX3QgKikmcy0+Y3VycmVudF90bS50bV9ob3VyKTsKPiArICAgIHFlbXVfcHV0X2Jl MzJzKGYsICh1aW50MzJfdCAqKSZzLT5jdXJyZW50X3RtLnRtX3dkYXkpOwo+ICsgICAgcWVtdV9w dXRfYmUzMnMoZiwgKHVpbnQzMl90ICopJnMtPmN1cnJlbnRfdG0udG1fbWRheSk7Cj4gKyAgICBx ZW11X3B1dF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+Y3VycmVudF90bS50bV9tb24pOwo+ICsg ICAgcWVtdV9wdXRfYmUzMnMoZiwgKHVpbnQzMl90ICopJnMtPmN1cnJlbnRfdG0udG1feWVhcik7 Cj4KPiAgICAgIHFlbXVfcHV0X3RpbWVyKGYsIHMtPnBlcmlvZGljX3RpbWVyKTsKPiAtICAgIHFl bXVfcHV0X2JlNjRzKGYsICZzLT5uZXh0X3BlcmlvZGljX3RpbWUpOwo+ICsgICAgcWVtdV9wdXRf YmU2NHMoZiwgKHVpbnQ2NF90ICopJnMtPm5leHRfcGVyaW9kaWNfdGltZSk7Cj4KPiAtICAgIHFl bXVfcHV0X2JlNjRzKGYsICZzLT5uZXh0X3NlY29uZF90aW1lKTsKPiArICAgIHFlbXVfcHV0X2Jl NjRzKGYsICh1aW50NjRfdCAqKSZzLT5uZXh0X3NlY29uZF90aW1lKTsKPiAgICAgIHFlbXVfcHV0 X3RpbWVyKGYsIHMtPnNlY29uZF90aW1lcik7Cj4gICAgICBxZW11X3B1dF90aW1lcihmLCBzLT5z ZWNvbmRfdGltZXIyKTsKPiAgfQo+IEBAIC00NDcsMTggKzQ0NywxOCBAQCBzdGF0aWMgaW50IHJ0 Y19sb2FkKFFFTVVGaWxlICpmLCB2b2lkICpvCj4gICAgICBxZW11X2dldF9idWZmZXIoZiwgcy0+ Y21vc19kYXRhLCAxMjgpOwo+ICAgICAgcWVtdV9nZXRfOHMoZiwgJnMtPmNtb3NfaW5kZXgpOwo+ Cj4gLSAgICBxZW11X2dldF9iZTMycyhmLCAmcy0+Y3VycmVudF90bS50bV9zZWMpOwo+IC0gICAg cWVtdV9nZXRfYmUzMnMoZiwgJnMtPmN1cnJlbnRfdG0udG1fbWluKTsKPiAtICAgIHFlbXVfZ2V0 X2JlMzJzKGYsICZzLT5jdXJyZW50X3RtLnRtX2hvdXIpOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMo ZiwgJnMtPmN1cnJlbnRfdG0udG1fd2RheSk7Cj4gLSAgICBxZW11X2dldF9iZTMycyhmLCAmcy0+ Y3VycmVudF90bS50bV9tZGF5KTsKPiAtICAgIHFlbXVfZ2V0X2JlMzJzKGYsICZzLT5jdXJyZW50 X3RtLnRtX21vbik7Cj4gLSAgICBxZW11X2dldF9iZTMycyhmLCAmcy0+Y3VycmVudF90bS50bV95 ZWFyKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZzLT5jdXJyZW50X3Rt LnRtX3NlYyk7Cj4gKyAgICBxZW11X2dldF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+Y3VycmVu dF90bS50bV9taW4pOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMoZiwgKHVpbnQzMl90ICopJnMtPmN1 cnJlbnRfdG0udG1faG91cik7Cj4gKyAgICBxZW11X2dldF9iZTMycyhmLCAodWludDMyX3QgKikm cy0+Y3VycmVudF90bS50bV93ZGF5KTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzKGYsICh1aW50MzJf dCAqKSZzLT5jdXJyZW50X3RtLnRtX21kYXkpOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMoZiwgKHVp bnQzMl90ICopJnMtPmN1cnJlbnRfdG0udG1fbW9uKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzKGYs ICh1aW50MzJfdCAqKSZzLT5jdXJyZW50X3RtLnRtX3llYXIpOwo+Cj4gICAgICBxZW11X2dldF90 aW1lcihmLCBzLT5wZXJpb2RpY190aW1lcik7Cj4gLSAgICBxZW11X2dldF9iZTY0cyhmLCAmcy0+ bmV4dF9wZXJpb2RpY190aW1lKTsKPiArICAgIHFlbXVfZ2V0X2JlNjRzKGYsICh1aW50NjRfdCAq KSZzLT5uZXh0X3BlcmlvZGljX3RpbWUpOwo+Cj4gLSAgICBxZW11X2dldF9iZTY0cyhmLCAmcy0+ bmV4dF9zZWNvbmRfdGltZSk7Cj4gKyAgICBxZW11X2dldF9iZTY0cyhmLCAodWludDY0X3QgKikm cy0+bmV4dF9zZWNvbmRfdGltZSk7Cj4gICAgICBxZW11X2dldF90aW1lcihmLCBzLT5zZWNvbmRf dGltZXIpOwo+ICAgICAgcWVtdV9nZXRfdGltZXIoZiwgcy0+c2Vjb25kX3RpbWVyMik7Cj4gICAg ICByZXR1cm4gMDsKPiBJbmRleDogaHcvbmUyMDAwLmMKPiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gUkNTIGZpbGU6 IC9zb3VyY2VzL3FlbXUvcWVtdS9ody9uZTIwMDAuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAx LjMxCj4gZGlmZiAtdSAtcCAtcjEuMzEgbmUyMDAwLmMKPiAtLS0gaHcvbmUyMDAwLmMgMTggTm92 IDIwMDcgMDE6NDQ6MzcgLTAwMDAgICAgICAxLjMxCj4gKysrIGh3L25lMjAwMC5jIDI5IE5vdiAy MDA3IDIzOjUwOjAxIC0wMDAwCj4gQEAgLTY0NywxMiArNjQ3LDEyIEBAIHN0YXRpYyB1aW50MzJf dCBuZTIwMDBfcmVzZXRfaW9wb3J0X3JlYWQKPiAgc3RhdGljIHZvaWQgbmUyMDAwX3NhdmUoUUVN VUZpbGUqIGYsdm9pZCogb3BhcXVlKQo+ICB7Cj4gICAgICAgICBORTIwMDBTdGF0ZSogcz0oTkUy MDAwU3RhdGUqKW9wYXF1ZTsKPiAtICAgICAgICBpbnQgdG1wOwo+ICsgICAgdW5zaWduZWQgaW50 IHRtcD0wOwo+Cj4gLSAgICAgICAgaWYgKHMtPnBjaV9kZXYpCj4gLSAgICAgICAgICAgIHBjaV9k ZXZpY2Vfc2F2ZShzLT5wY2lfZGV2LCBmKTsKPiArICAgIGlmIChzLT5wY2lfZGV2KQo+ICsgICAg ICAgIHBjaV9kZXZpY2Vfc2F2ZShzLT5wY2lfZGV2LCBmKTsKPgo+IC0gICAgICAgIHFlbXVfcHV0 XzhzKGYsICZzLT5yeGNyKTsKPiArICAgIHFlbXVfcHV0XzhzKGYsICZzLT5yeGNyKTsKPgo+ICAg ICAgICAgcWVtdV9wdXRfOHMoZiwgJnMtPmNtZCk7Cj4gICAgICAgICBxZW11X3B1dF9iZTMycyhm LCAmcy0+c3RhcnQpOwo+IEBAIC02NzAsMzEgKzY3MCwzMCBAQCBzdGF0aWMgdm9pZCBuZTIwMDBf c2F2ZShRRU1VRmlsZSogZix2b2lkCj4gICAgICAgICBxZW11X3B1dF9idWZmZXIoZiwgcy0+cGh5 cywgNik7Cj4gICAgICAgICBxZW11X3B1dF84cyhmLCAmcy0+Y3VycGFnKTsKPiAgICAgICAgIHFl bXVfcHV0X2J1ZmZlcihmLCBzLT5tdWx0LCA4KTsKPiAtICAgICAgICB0bXAgPSAwOwo+ICAgICAg ICAgcWVtdV9wdXRfYmUzMnMoZiwgJnRtcCk7IC8qIGlnbm9yZWQsIHdhcyBpcnEgKi8KPiAtICAg ICAgIHFlbXVfcHV0X2J1ZmZlcihmLCBzLT5tZW0sIE5FMjAwMF9NRU1fU0laRSk7Cj4gKyAgICAg ICBxZW11X3B1dF9idWZmZXIoZiwgKHVpbnQ4X3QgKilzLT5tZW0sIE5FMjAwMF9NRU1fU0laRSk7 Cj4gIH0KPgo+ICBzdGF0aWMgaW50IG5lMjAwMF9sb2FkKFFFTVVGaWxlKiBmLHZvaWQqIG9wYXF1 ZSxpbnQgdmVyc2lvbl9pZCkKPiAgewo+ICAgICAgICAgTkUyMDAwU3RhdGUqIHM9KE5FMjAwMFN0 YXRlKilvcGFxdWU7Cj4gLSAgICAgICAgaW50IHJldDsKPiAtICAgICAgICBpbnQgdG1wOwo+ICsg ICAgaW50IHJldDsKPiArICAgIHVuc2lnbmVkIGludCB0bXA7Cj4KPiAtICAgICAgICBpZiAodmVy c2lvbl9pZCA+IDMpCj4gLSAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgaWYgKHZl cnNpb25faWQgPiAzKQo+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Cj4gLSAgICAgICAgaWYg KHMtPnBjaV9kZXYgJiYgdmVyc2lvbl9pZCA+PSAzKSB7Cj4gLSAgICAgICAgICAgIHJldCA9IHBj aV9kZXZpY2VfbG9hZChzLT5wY2lfZGV2LCBmKTsKPiAtICAgICAgICAgICAgaWYgKHJldCA8IDAp Cj4gLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+IC0gICAgICAgIH0KPiAtCj4gLSAgICAg ICAgaWYgKHZlcnNpb25faWQgPj0gMikgewo+IC0gICAgICAgICAgICBxZW11X2dldF84cyhmLCAm cy0+cnhjcik7Cj4gLSAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgcy0+cnhjciA9IDB4 MGM7Cj4gLSAgICAgICAgfQo+ICsgICAgaWYgKHMtPnBjaV9kZXYgJiYgdmVyc2lvbl9pZCA+PSAz KSB7Cj4gKyAgICAgICAgcmV0ID0gcGNpX2RldmljZV9sb2FkKHMtPnBjaV9kZXYsIGYpOwo+ICsg ICAgICAgIGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsgICAgfQo+ ICsKPiArICAgIGlmICh2ZXJzaW9uX2lkID49IDIpIHsKPiArICAgICAgICBxZW11X2dldF84cyhm LCAmcy0+cnhjcik7Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAgICAgIHMtPnJ4Y3IgPSAweDBjOwo+ ICsgICAgfQo+Cj4gICAgICAgICBxZW11X2dldF84cyhmLCAmcy0+Y21kKTsKPiAgICAgICAgIHFl bXVfZ2V0X2JlMzJzKGYsICZzLT5zdGFydCk7Cj4gQEAgLTcxMyw3ICs3MTIsNyBAQCBzdGF0aWMg aW50IG5lMjAwMF9sb2FkKFFFTVVGaWxlKiBmLHZvaWQqCj4gICAgICAgICBxZW11X2dldF84cyhm LCAmcy0+Y3VycGFnKTsKPiAgICAgICAgIHFlbXVfZ2V0X2J1ZmZlcihmLCBzLT5tdWx0LCA4KTsK PiAgICAgICAgIHFlbXVfZ2V0X2JlMzJzKGYsICZ0bXApOyAvKiBpZ25vcmVkICovCj4gLSAgICAg ICBxZW11X2dldF9idWZmZXIoZiwgcy0+bWVtLCBORTIwMDBfTUVNX1NJWkUpOwo+ICsgICAgICAg cWVtdV9nZXRfYnVmZmVyKGYsICh1aW50OF90ICopcy0+bWVtLCBORTIwMDBfTUVNX1NJWkUpOwo+ Cj4gICAgICAgICByZXR1cm4gMDsKPiAgfQo+IEluZGV4OiBody9wYy5jCj4gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+ IFJDUyBmaWxlOiAvc291cmNlcy9xZW11L3FlbXUvaHcvcGMuYyx2Cj4gcmV0cmlldmluZyByZXZp c2lvbiAxLjk1Cj4gZGlmZiAtdSAtcCAtcjEuOTUgcGMuYwo+IC0tLSBody9wYy5jICAgICAxOCBO b3YgMjAwNyAwODo0Njo1OCAtMDAwMCAgICAgIDEuOTUKPiArKysgaHcvcGMuYyAgICAgMjkgTm92 IDIwMDcgMjM6NTA6MDEgLTAwMDAKPiBAQCAtNTQ4LDcgKzU0OCw3IEBAIHN0YXRpYyB2b2lkIGxv YWRfbGludXgoY29uc3QgY2hhciAqa2VybmUKPiAgICAgICAgIGluaXRyZF9tYXggPSByYW1fc2l6 ZS1BQ1BJX0RBVEFfU0laRS0xOwo+Cj4gICAgICAvKiBrZXJuZWwgY29tbWFuZCBsaW5lICovCj4g LSAgICBwc3RyY3B5KGNtZGxpbmVfYWRkciwgNDA5Niwga2VybmVsX2NtZGxpbmUpOwo+ICsgICAg cHN0cmNweSgoY2hhciAqKWNtZGxpbmVfYWRkciwgNDA5Niwga2VybmVsX2NtZGxpbmUpOwo+Cj4g ICAgICBpZiAocHJvdG9jb2wgPj0gMHgyMDIpIHsKPiAgICAgICAgIHN0bF9wKGhlYWRlcisweDIy OCwgY21kbGluZV9hZGRyLXBoeXNfcmFtX2Jhc2UpOwo+IEluZGV4OiBody9wY25ldC5jCj4gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQo+IFJDUyBmaWxlOiAvc291cmNlcy9xZW11L3FlbXUvaHcvcGNuZXQuYyx2Cj4gcmV0 cmlldmluZyByZXZpc2lvbiAxLjIwCj4gZGlmZiAtdSAtcCAtcjEuMjAgcGNuZXQuYwo+IC0tLSBo dy9wY25ldC5jICAxNyBOb3YgMjAwNyAxNzoxNDo0NSAtMDAwMCAgICAgIDEuMjAKPiArKysgaHcv cGNuZXQuYyAgMjkgTm92IDIwMDcgMjM6NTA6MDEgLTAwMDAKPiBAQCAtMzUwLDggKzM1MCw4IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBwY25ldF90bWRfbG9hZChQQ05ldFMKPiAgICAgIH0gZWxzZSB7 Cj4gICAgICAgICAgcy0+cGh5c19tZW1fcmVhZChzLT5kbWFfb3BhcXVlLCBhZGRyLCAodm9pZCAq KXRtZCwgc2l6ZW9mKCp0bWQpLCAwKTsKPiAgICAgICAgICBsZTMyX3RvX2NwdXMoJnRtZC0+dGJh ZHIpOwo+IC0gICAgICAgIGxlMTZfdG9fY3B1cygmdG1kLT5sZW5ndGgpOwo+IC0gICAgICAgIGxl MTZfdG9fY3B1cygmdG1kLT5zdGF0dXMpOwo+ICsgICAgICAgIGxlMTZfdG9fY3B1cygodWludDE2 X3QgKikmdG1kLT5sZW5ndGgpOwo+ICsgICAgICAgIGxlMTZfdG9fY3B1cygodWludDE2X3QgKikm dG1kLT5zdGF0dXMpOwo+ICAgICAgICAgIGxlMzJfdG9fY3B1cygmdG1kLT5taXNjKTsKPiAgICAg ICAgICBsZTMyX3RvX2NwdXMoJnRtZC0+cmVzKTsKPiAgICAgICAgICBpZiAoQkNSX1NXU1RZTEUo cykgPT0gMykgewo+IEBAIC00MTYsOCArNDE2LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHBjbmV0 X3JtZF9sb2FkKFBDTmV0Uwo+ICAgICAgfSBlbHNlIHsKPiAgICAgICAgICBzLT5waHlzX21lbV9y ZWFkKHMtPmRtYV9vcGFxdWUsIGFkZHIsICh2b2lkICopcm1kLCBzaXplb2YoKnJtZCksIDApOwo+ ICAgICAgICAgIGxlMzJfdG9fY3B1cygmcm1kLT5yYmFkcik7Cj4gLSAgICAgICAgbGUxNl90b19j cHVzKCZybWQtPmJ1Zl9sZW5ndGgpOwo+IC0gICAgICAgIGxlMTZfdG9fY3B1cygmcm1kLT5zdGF0 dXMpOwo+ICsgICAgICAgIGxlMTZfdG9fY3B1cygodWludDE2X3QgKikmcm1kLT5idWZfbGVuZ3Ro KTsKPiArICAgICAgICBsZTE2X3RvX2NwdXMoKHVpbnQxNl90ICopJnJtZC0+c3RhdHVzKTsKPiAg ICAgICAgICBsZTMyX3RvX2NwdXMoJnJtZC0+bXNnX2xlbmd0aCk7Cj4gICAgICAgICAgbGUzMl90 b19jcHVzKCZybWQtPnJlcyk7Cj4gICAgICAgICAgaWYgKEJDUl9TV1NUWUxFKHMpID09IDMpIHsK PiBAQCAtMTg0Myw5ICsxODQzLDkgQEAgc3RhdGljIHZvaWQgcGNuZXRfc2F2ZShRRU1VRmlsZSAq Ziwgdm9pZAo+ICAgICAgaWYgKHMtPnBjaV9kZXYpCj4gICAgICAgICAgcGNpX2RldmljZV9zYXZl KHMtPnBjaV9kZXYsIGYpOwo+Cj4gLSAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+cmFwKTsKPiAt ICAgIHFlbXVfcHV0X2JlMzJzKGYsICZzLT5pc3IpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMoZiwg JnMtPmxua3N0KTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1aW50MzJfdCopJnMtPnJhcCk7 Cj4gKyAgICBxZW11X3B1dF9iZTMycyhmLCAodWludDMyX3QqKSZzLT5pc3IpOwo+ICsgICAgcWVt dV9wdXRfYmUzMnMoZiwgKHVpbnQzMl90Kikmcy0+bG5rc3QpOwo+ICAgICAgcWVtdV9wdXRfYmUz MnMoZiwgJnMtPnJkcmEpOwo+ICAgICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMtPnRkcmEpOwo+ICAg ICAgcWVtdV9wdXRfYnVmZmVyKGYsIHMtPnByb20sIDE2KTsKPiBAQCAtMTg1NCwxMCArMTg1NCwx MCBAQCBzdGF0aWMgdm9pZCBwY25ldF9zYXZlKFFFTVVGaWxlICpmLCB2b2lkCj4gICAgICBmb3Ig KGkgPSAwOyBpIDwgMzI7IGkrKykKPiAgICAgICAgICBxZW11X3B1dF9iZTE2cyhmLCAmcy0+YmNy W2ldKTsKPiAgICAgIHFlbXVfcHV0X2JlNjRzKGYsICZzLT50aW1lcik7Cj4gLSAgICBxZW11X3B1 dF9iZTMycyhmLCAmcy0+eG1pdF9wb3MpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMtPnJl Y3ZfcG9zKTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1aW50MzJfdCopJnMtPnhtaXRfcG9z KTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1aW50MzJfdCopJnMtPnJlY3ZfcG9zKTsKPiAg ICAgIHFlbXVfcHV0X2J1ZmZlcihmLCBzLT5idWZmZXIsIDQwOTYpOwo+IC0gICAgcWVtdV9wdXRf YmUzMnMoZiwgJnMtPnR4X2J1c3kpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMoZiwgKHVpbnQzMl90 Kikmcy0+dHhfYnVzeSk7Cj4gICAgICBxZW11X3B1dF90aW1lcihmLCBzLT5wb2xsX3RpbWVyKTsK PiAgfQo+Cj4gQEAgLTE4NzUsOSArMTg3NSw5IEBAIHN0YXRpYyBpbnQgcGNuZXRfbG9hZChRRU1V RmlsZSAqZiwgdm9pZAo+ICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICAgICAgfQo+Cj4gLSAg ICBxZW11X2dldF9iZTMycyhmLCAmcy0+cmFwKTsKPiAtICAgIHFlbXVfZ2V0X2JlMzJzKGYsICZz LT5pc3IpOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMoZiwgJnMtPmxua3N0KTsKPiArICAgIHFlbXVf Z2V0X2JlMzJzKGYsICh1aW50MzJfdCopJnMtPnJhcCk7Cj4gKyAgICBxZW11X2dldF9iZTMycyhm LCAodWludDMyX3QqKSZzLT5pc3IpOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMoZiwgKHVpbnQzMl90 Kikmcy0+bG5rc3QpOwo+ICAgICAgcWVtdV9nZXRfYmUzMnMoZiwgJnMtPnJkcmEpOwo+ICAgICAg cWVtdV9nZXRfYmUzMnMoZiwgJnMtPnRkcmEpOwo+ICAgICAgcWVtdV9nZXRfYnVmZmVyKGYsIHMt PnByb20sIDE2KTsKPiBAQCAtMTg4NiwxMCArMTg4NiwxMCBAQCBzdGF0aWMgaW50IHBjbmV0X2xv YWQoUUVNVUZpbGUgKmYsIHZvaWQKPiAgICAgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKQo+ICAg ICAgICAgIHFlbXVfZ2V0X2JlMTZzKGYsICZzLT5iY3JbaV0pOwo+ICAgICAgcWVtdV9nZXRfYmU2 NHMoZiwgJnMtPnRpbWVyKTsKPiAtICAgIHFlbXVfZ2V0X2JlMzJzKGYsICZzLT54bWl0X3Bvcyk7 Cj4gLSAgICBxZW11X2dldF9iZTMycyhmLCAmcy0+cmVjdl9wb3MpOwo+ICsgICAgcWVtdV9nZXRf YmUzMnMoZiwgKHVpbnQzMl90Kikmcy0+eG1pdF9wb3MpOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMo ZiwgKHVpbnQzMl90Kikmcy0+cmVjdl9wb3MpOwo+ICAgICAgcWVtdV9nZXRfYnVmZmVyKGYsIHMt PmJ1ZmZlciwgNDA5Nik7Cj4gLSAgICBxZW11X2dldF9iZTMycyhmLCAmcy0+dHhfYnVzeSk7Cj4g KyAgICBxZW11X2dldF9iZTMycyhmLCAodWludDMyX3QqKSZzLT50eF9idXN5KTsKPiAgICAgIHFl bXVfZ2V0X3RpbWVyKGYsIHMtPnBvbGxfdGltZXIpOwo+Cj4gICAgICByZXR1cm4gMDsKPiBJbmRl eDogaHcvcHMyLmMKPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Cj4gUkNTIGZpbGU6IC9zb3VyY2VzL3FlbXUvcWVtdS9o dy9wczIuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAxLjkKPiBkaWZmIC11IC1wIC1yMS45IHBz Mi5jCj4gLS0tIGh3L3BzMi5jICAgIDE3IE5vdiAyMDA3IDE3OjE0OjQ2IC0wMDAwICAgICAgMS45 Cj4gKysrIGh3L3BzMi5jICAgIDI5IE5vdiAyMDA3IDIzOjUwOjAxIC0wMDAwCj4gQEAgLTQ3MCwx OSArNDcwLDE5IEBAIHN0YXRpYyB2b2lkIHBzMl9yZXNldCh2b2lkICpvcGFxdWUpCj4KPiAgc3Rh dGljIHZvaWQgcHMyX2NvbW1vbl9zYXZlIChRRU1VRmlsZSAqZiwgUFMyU3RhdGUgKnMpCj4gIHsK PiAtICAgIHFlbXVfcHV0X2JlMzJzIChmLCAmcy0+d3JpdGVfY21kKTsKPiAtICAgIHFlbXVfcHV0 X2JlMzJzIChmLCAmcy0+cXVldWUucnB0cik7Cj4gLSAgICBxZW11X3B1dF9iZTMycyAoZiwgJnMt PnF1ZXVlLndwdHIpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMgKGYsICZzLT5xdWV1ZS5jb3VudCk7 Cj4gKyAgICBxZW11X3B1dF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPndyaXRlX2NtZCk7Cj4g KyAgICBxZW11X3B1dF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPnF1ZXVlLnJwdHIpOwo+ICsg ICAgcWVtdV9wdXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT5xdWV1ZS53cHRyKTsKPiArICAg IHFlbXVfcHV0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+cXVldWUuY291bnQpOwo+ICAgICAg cWVtdV9wdXRfYnVmZmVyIChmLCBzLT5xdWV1ZS5kYXRhLCBzaXplb2YgKHMtPnF1ZXVlLmRhdGEp KTsKPiAgfQo+Cj4gIHN0YXRpYyB2b2lkIHBzMl9jb21tb25fbG9hZCAoUUVNVUZpbGUgKmYsIFBT MlN0YXRlICpzKQo+ICB7Cj4gLSAgICBxZW11X2dldF9iZTMycyAoZiwgJnMtPndyaXRlX2NtZCk7 Cj4gLSAgICBxZW11X2dldF9iZTMycyAoZiwgJnMtPnF1ZXVlLnJwdHIpOwo+IC0gICAgcWVtdV9n ZXRfYmUzMnMgKGYsICZzLT5xdWV1ZS53cHRyKTsKPiAtICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAm cy0+cXVldWUuY291bnQpOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZz LT53cml0ZV9jbWQpOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT5x dWV1ZS5ycHRyKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+cXVl dWUud3B0cik7Cj4gKyAgICBxZW11X2dldF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPnF1ZXVl LmNvdW50KTsKPiAgICAgIHFlbXVfZ2V0X2J1ZmZlciAoZiwgcy0+cXVldWUuZGF0YSwgc2l6ZW9m IChzLT5xdWV1ZS5kYXRhKSk7Cj4gIH0KPgo+IEBAIC00OTEsOCArNDkxLDggQEAgc3RhdGljIHZv aWQgcHMyX2tiZF9zYXZlKFFFTVVGaWxlKiBmLCB2bwo+ICAgICAgUFMyS2JkU3RhdGUgKnMgPSAo UFMyS2JkU3RhdGUqKW9wYXF1ZTsKPgo+ICAgICAgcHMyX2NvbW1vbl9zYXZlIChmLCAmcy0+Y29t bW9uKTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzKGYsICZzLT5zY2FuX2VuYWJsZWQpOwo+IC0gICAg cWVtdV9wdXRfYmUzMnMoZiwgJnMtPnRyYW5zbGF0ZSk7Cj4gKyAgICBxZW11X3B1dF9iZTMycyhm LCAodWludDMyX3QgKikmcy0+c2Nhbl9lbmFibGVkKTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYs ICh1aW50MzJfdCAqKSZzLT50cmFuc2xhdGUpOwo+ICB9Cj4KPiAgc3RhdGljIHZvaWQgcHMyX21v dXNlX3NhdmUoUUVNVUZpbGUqIGYsIHZvaWQqIG9wYXF1ZSkKPiBAQCAtNTA2LDkgKzUwNiw5IEBA IHN0YXRpYyB2b2lkIHBzMl9tb3VzZV9zYXZlKFFFTVVGaWxlKiBmLAo+ICAgICAgcWVtdV9wdXRf OHMoZiwgJnMtPm1vdXNlX3dyYXApOwo+ICAgICAgcWVtdV9wdXRfOHMoZiwgJnMtPm1vdXNlX3R5 cGUpOwo+ICAgICAgcWVtdV9wdXRfOHMoZiwgJnMtPm1vdXNlX2RldGVjdF9zdGF0ZSk7Cj4gLSAg ICBxZW11X3B1dF9iZTMycyhmLCAmcy0+bW91c2VfZHgpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMo ZiwgJnMtPm1vdXNlX2R5KTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzKGYsICZzLT5tb3VzZV9keik7 Cj4gKyAgICBxZW11X3B1dF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+bW91c2VfZHgpOwo+ICsg ICAgcWVtdV9wdXRfYmUzMnMoZiwgKHVpbnQzMl90ICopJnMtPm1vdXNlX2R5KTsKPiArICAgIHFl bXVfcHV0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZzLT5tb3VzZV9keik7Cj4gICAgICBxZW11X3B1 dF84cyhmLCAmcy0+bW91c2VfYnV0dG9ucyk7Cj4gIH0KPgo+IEBAIC01MjAsOCArNTIwLDggQEAg c3RhdGljIGludCBwczJfa2JkX2xvYWQoUUVNVUZpbGUqIGYsIHZvaQo+ICAgICAgICAgIHJldHVy biAtRUlOVkFMOwo+Cj4gICAgICBwczJfY29tbW9uX2xvYWQgKGYsICZzLT5jb21tb24pOwo+IC0g ICAgcWVtdV9nZXRfYmUzMnMoZiwgJnMtPnNjYW5fZW5hYmxlZCk7Cj4gLSAgICBxZW11X2dldF9i ZTMycyhmLCAmcy0+dHJhbnNsYXRlKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzKGYsICh1aW50MzJf dCAqKSZzLT5zY2FuX2VuYWJsZWQpOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMoZiwgKHVpbnQzMl90 ICopJnMtPnRyYW5zbGF0ZSk7Cj4gICAgICByZXR1cm4gMDsKPiAgfQo+Cj4gQEAgLTUzOSw5ICs1 MzksOSBAQCBzdGF0aWMgaW50IHBzMl9tb3VzZV9sb2FkKFFFTVVGaWxlKiBmLCB2Cj4gICAgICBx ZW11X2dldF84cyhmLCAmcy0+bW91c2Vfd3JhcCk7Cj4gICAgICBxZW11X2dldF84cyhmLCAmcy0+ bW91c2VfdHlwZSk7Cj4gICAgICBxZW11X2dldF84cyhmLCAmcy0+bW91c2VfZGV0ZWN0X3N0YXRl KTsKPiAtICAgIHFlbXVfZ2V0X2JlMzJzKGYsICZzLT5tb3VzZV9keCk7Cj4gLSAgICBxZW11X2dl dF9iZTMycyhmLCAmcy0+bW91c2VfZHkpOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMoZiwgJnMtPm1v dXNlX2R6KTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZzLT5tb3VzZV9k eCk7Cj4gKyAgICBxZW11X2dldF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+bW91c2VfZHkpOwo+ ICsgICAgcWVtdV9nZXRfYmUzMnMoZiwgKHVpbnQzMl90ICopJnMtPm1vdXNlX2R6KTsKPiAgICAg IHFlbXVfZ2V0XzhzKGYsICZzLT5tb3VzZV9idXR0b25zKTsKPiAgICAgIHJldHVybiAwOwo+ICB9 Cj4gSW5kZXg6IGh3L3J0bDgxMzkuYwo+ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiBSQ1MgZmlsZTogL3NvdXJjZXMv cWVtdS9xZW11L2h3L3J0bDgxMzkuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAxLjE2Cj4gZGlm ZiAtdSAtcCAtcjEuMTYgcnRsODEzOS5jCj4gLS0tIGh3L3J0bDgxMzkuYyAgICAgICAgMTggTm92 IDIwMDcgMDE6NDQ6MzggLTAwMDAgICAgICAxLjE2Cj4gKysrIGh3L3J0bDgxMzkuYyAgICAgICAg MjkgTm92IDIwMDcgMjM6NTA6MDEgLTAwMDAKPiBAQCAtMzExOSw3ICszMTE5LDcgQEAgc3RhdGlj IHVpbnQzMl90IHJ0bDgxMzlfbW1pb19yZWFkbCh2b2lkCj4gIHN0YXRpYyB2b2lkIHJ0bDgxMzlf c2F2ZShRRU1VRmlsZSogZix2b2lkKiBvcGFxdWUpCj4gIHsKPiAgICAgIFJUTDgxMzlTdGF0ZSog cz0oUlRMODEzOVN0YXRlKilvcGFxdWU7Cj4gLSAgICBpbnQgaTsKPiArICAgIHVuc2lnbmVkIGlu dCBpOwo+Cj4gICAgICBwY2lfZGV2aWNlX3NhdmUocy0+cGNpX2RldiwgZik7Cj4KPiBAQCAtMzE3 Miw3ICszMTcyLDcgQEAgc3RhdGljIHZvaWQgcnRsODEzOV9zYXZlKFFFTVVGaWxlKiBmLHZvaQo+ ICAgICAgaSA9IDA7Cj4gICAgICBxZW11X3B1dF9iZTMycyhmLCAmaSk7IC8qIHVudXNlZC4gICov Cj4gICAgICBxZW11X3B1dF9idWZmZXIoZiwgcy0+bWFjYWRkciwgNik7Cj4gLSAgICBxZW11X3B1 dF9iZTMycyhmLCAmcy0+cnRsODEzOV9tbWlvX2lvX2FkZHIpOwo+ICsgICAgcWVtdV9wdXRfYmUz MnMoZiwgKHVpbnQzMl90ICopJnMtPnJ0bDgxMzlfbW1pb19pb19hZGRyKTsKPgo+ICAgICAgcWVt dV9wdXRfYmUzMnMoZiwgJnMtPmN1cnJUeERlc2MpOwo+ICAgICAgcWVtdV9wdXRfYmUzMnMoZiwg JnMtPmN1cnJDUGx1c1J4RGVzYyk7Cj4gQEAgLTMxODQsNyArMzE4NCw3IEBAIHN0YXRpYyB2b2lk IHJ0bDgxMzlfc2F2ZShRRU1VRmlsZSogZix2b2kKPiAgICAgIHsKPiAgICAgICAgICBxZW11X3B1 dF9iZTE2cyhmLCAmcy0+ZWVwcm9tLmNvbnRlbnRzW2ldKTsKPiAgICAgIH0KPiAtICAgIHFlbXVf cHV0X2JlMzJzKGYsICZzLT5lZXByb20ubW9kZSk7Cj4gKyAgICBxZW11X3B1dF9iZTMycyhmLCAo dWludDMyX3QgKikmcy0+ZWVwcm9tLm1vZGUpOwo+ICAgICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMt PmVlcHJvbS50aWNrKTsKPiAgICAgIHFlbXVfcHV0XzhzKGYsICZzLT5lZXByb20uYWRkcmVzcyk7 Cj4gICAgICBxZW11X3B1dF9iZTE2cyhmLCAmcy0+ZWVwcm9tLmlucHV0KTsKPiBAQCAtMzE5Nyw3 ICszMTk3LDcgQEAgc3RhdGljIHZvaWQgcnRsODEzOV9zYXZlKFFFTVVGaWxlKiBmLHZvaQo+Cj4g ICAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+VENUUik7Cj4gICAgICBxZW11X3B1dF9iZTMycyhm LCAmcy0+VGltZXJJbnQpOwo+IC0gICAgcWVtdV9wdXRfYmU2NHMoZiwgJnMtPlRDVFJfYmFzZSk7 Cj4gKyAgICBxZW11X3B1dF9iZTY0cyhmLCAodWludDY0X3QqKSZzLT5UQ1RSX2Jhc2UpOwo+Cj4g ICAgICBSVEw4MTM5VGFsbHlDb3VudGVyc19zYXZlKGYsICZzLT50YWxseV9jb3VudGVycyk7Cj4g IH0KPiBAQCAtMzIwNSw3ICszMjA1LDggQEAgc3RhdGljIHZvaWQgcnRsODEzOV9zYXZlKFFFTVVG aWxlKiBmLHZvaQo+ICBzdGF0aWMgaW50IHJ0bDgxMzlfbG9hZChRRU1VRmlsZSogZix2b2lkKiBv cGFxdWUsaW50IHZlcnNpb25faWQpCj4gIHsKPiAgICAgIFJUTDgxMzlTdGF0ZSogcz0oUlRMODEz OVN0YXRlKilvcGFxdWU7Cj4gLSAgICBpbnQgaSwgcmV0Owo+ICsgICAgdW5zaWduZWQgaW50IGk7 Cj4gKyAgICBpbnQgcmV0Owo+Cj4gICAgICAvKiBqdXN0IDIgdmVyc2lvbnMgZm9yIG5vdyAqLwo+ ICAgICAgaWYgKHZlcnNpb25faWQgPiAzKQo+IEBAIC0zMjY2LDcgKzMyNjcsNyBAQCBzdGF0aWMg aW50IHJ0bDgxMzlfbG9hZChRRU1VRmlsZSogZix2b2lkCj4KPiAgICAgIHFlbXVfZ2V0X2JlMzJz KGYsICZpKTsgLyogdW51c2VkLiAgKi8KPiAgICAgIHFlbXVfZ2V0X2J1ZmZlcihmLCBzLT5tYWNh ZGRyLCA2KTsKPiAtICAgIHFlbXVfZ2V0X2JlMzJzKGYsICZzLT5ydGw4MTM5X21taW9faW9fYWRk cik7Cj4gKyAgICBxZW11X2dldF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+cnRsODEzOV9tbWlv X2lvX2FkZHIpOwo+Cj4gICAgICBxZW11X2dldF9iZTMycyhmLCAmcy0+Y3VyclR4RGVzYyk7Cj4g ICAgICBxZW11X2dldF9iZTMycyhmLCAmcy0+Y3VyckNQbHVzUnhEZXNjKTsKPiBAQCAtMzI3OCw3 ICszMjc5LDcgQEAgc3RhdGljIGludCBydGw4MTM5X2xvYWQoUUVNVUZpbGUqIGYsdm9pZAo+ICAg ICAgewo+ICAgICAgICAgIHFlbXVfZ2V0X2JlMTZzKGYsICZzLT5lZXByb20uY29udGVudHNbaV0p Owo+ICAgICAgfQo+IC0gICAgcWVtdV9nZXRfYmUzMnMoZiwgJnMtPmVlcHJvbS5tb2RlKTsKPiAr ICAgIHFlbXVfZ2V0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZzLT5lZXByb20ubW9kZSk7Cj4gICAg ICBxZW11X2dldF9iZTMycyhmLCAmcy0+ZWVwcm9tLnRpY2spOwo+ICAgICAgcWVtdV9nZXRfOHMo ZiwgJnMtPmVlcHJvbS5hZGRyZXNzKTsKPiAgICAgIHFlbXVfZ2V0X2JlMTZzKGYsICZzLT5lZXBy b20uaW5wdXQpOwo+IEBAIC0zMjk0LDcgKzMyOTUsNyBAQCBzdGF0aWMgaW50IHJ0bDgxMzlfbG9h ZChRRU1VRmlsZSogZix2b2lkCj4gICAgICB7Cj4gICAgICAgICAgcWVtdV9nZXRfYmUzMnMoZiwg JnMtPlRDVFIpOwo+ICAgICAgICAgIHFlbXVfZ2V0X2JlMzJzKGYsICZzLT5UaW1lckludCk7Cj4g LSAgICAgICAgcWVtdV9nZXRfYmU2NHMoZiwgJnMtPlRDVFJfYmFzZSk7Cj4gKyAgICAgICAgcWVt dV9nZXRfYmU2NHMoZiwgKHVpbnQ2NF90Kikmcy0+VENUUl9iYXNlKTsKPgo+ICAgICAgICAgIFJU TDgxMzlUYWxseUNvdW50ZXJzX2xvYWQoZiwgJnMtPnRhbGx5X2NvdW50ZXJzKTsKPiAgICAgIH0K PiBJbmRleDogaHcvc2IxNi5jCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IFJDUyBmaWxlOiAvc291cmNlcy9xZW11 L3FlbXUvaHcvc2IxNi5jLHYKPiByZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQKPiBkaWZmIC11IC1w IC1yMS4yNCBzYjE2LmMKPiAtLS0gaHcvc2IxNi5jICAgMTcgTm92IDIwMDcgMTc6MTQ6NDcgLTAw MDAgICAgICAxLjI0Cj4gKysrIGh3L3NiMTYuYyAgIDI5IE5vdiAyMDA3IDIzOjUwOjAxIC0wMDAw Cj4gQEAgLTEyNTcsMjkgKzEyNTcsMjkgQEAgc3RhdGljIHZvaWQgU0Jfc2F2ZSAoUUVNVUZpbGUg KmYsIHZvaWQgKgo+ICB7Cj4gICAgICBTQjE2U3RhdGUgKnMgPSBvcGFxdWU7Cj4KPiAtICAgIHFl bXVfcHV0X2JlMzJzIChmLCAmcy0+aXJxKTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzIChmLCAmcy0+ ZG1hKTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzIChmLCAmcy0+aGRtYSk7Cj4gLSAgICBxZW11X3B1 dF9iZTMycyAoZiwgJnMtPnBvcnQpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMgKGYsICZzLT52ZXIp Owo+IC0gICAgcWVtdV9wdXRfYmUzMnMgKGYsICZzLT5pbl9pbmRleCk7Cj4gLSAgICBxZW11X3B1 dF9iZTMycyAoZiwgJnMtPm91dF9kYXRhX2xlbik7Cj4gLSAgICBxZW11X3B1dF9iZTMycyAoZiwg JnMtPmZtdF9zdGVyZW8pOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMgKGYsICZzLT5mbXRfc2lnbmVk KTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzIChmLCAmcy0+Zm10X2JpdHMpOwo+ICsgICAgcWVtdV9w dXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT5pcnEpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMg KGYsICh1aW50MzJfdCAqKSZzLT5kbWEpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMgKGYsICh1aW50 MzJfdCAqKSZzLT5oZG1hKTsKPiArICAgIHFlbXVfcHV0X2JlMzJzIChmLCAodWludDMyX3QgKikm cy0+cG9ydCk7Cj4gKyAgICBxZW11X3B1dF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPnZlcik7 Cj4gKyAgICBxZW11X3B1dF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPmluX2luZGV4KTsKPiAr ICAgIHFlbXVfcHV0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+b3V0X2RhdGFfbGVuKTsKPiAr ICAgIHFlbXVfcHV0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+Zm10X3N0ZXJlbyk7Cj4gKyAg ICBxZW11X3B1dF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPmZtdF9zaWduZWQpOwo+ICsgICAg cWVtdV9wdXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT5mbXRfYml0cyk7Cj4gICAgICBxZW11 X3B1dF9iZTMycyAoZiwgJnMtPmZtdCk7Cj4gLSAgICBxZW11X3B1dF9iZTMycyAoZiwgJnMtPmRt YV9hdXRvKTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzIChmLCAmcy0+YmxvY2tfc2l6ZSk7Cj4gLSAg ICBxZW11X3B1dF9iZTMycyAoZiwgJnMtPmZpZm8pOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMgKGYs ICZzLT5mcmVxKTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzIChmLCAmcy0+dGltZV9jb25zdCk7Cj4g LSAgICBxZW11X3B1dF9iZTMycyAoZiwgJnMtPnNwZWFrZXIpOwo+IC0gICAgcWVtdV9wdXRfYmUz MnMgKGYsICZzLT5uZWVkZWRfYnl0ZXMpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMgKGYsICZzLT5j bWQpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMgKGYsICZzLT51c2VfaGRtYSk7Cj4gLSAgICBxZW11 X3B1dF9iZTMycyAoZiwgJnMtPmhpZ2hzcGVlZCk7Cj4gLSAgICBxZW11X3B1dF9iZTMycyAoZiwg JnMtPmNhbl93cml0ZSk7Cj4gLSAgICBxZW11X3B1dF9iZTMycyAoZiwgJnMtPnYyeDYpOwo+ICsg ICAgcWVtdV9wdXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT5kbWFfYXV0byk7Cj4gKyAgICBx ZW11X3B1dF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPmJsb2NrX3NpemUpOwo+ICsgICAgcWVt dV9wdXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT5maWZvKTsKPiArICAgIHFlbXVfcHV0X2Jl MzJzIChmLCAodWludDMyX3QgKikmcy0+ZnJlcSk7Cj4gKyAgICBxZW11X3B1dF9iZTMycyAoZiwg KHVpbnQzMl90ICopJnMtPnRpbWVfY29uc3QpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMgKGYsICh1 aW50MzJfdCAqKSZzLT5zcGVha2VyKTsKPiArICAgIHFlbXVfcHV0X2JlMzJzIChmLCAodWludDMy X3QgKikmcy0+bmVlZGVkX2J5dGVzKTsKPiArICAgIHFlbXVfcHV0X2JlMzJzIChmLCAodWludDMy X3QgKikmcy0+Y21kKTsKPiArICAgIHFlbXVfcHV0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+ dXNlX2hkbWEpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT5oaWdo c3BlZWQpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT5jYW5fd3Jp dGUpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT52Mng2KTsKPgo+ ICAgICAgcWVtdV9wdXRfOHMgKGYsICZzLT5jc3BfcGFyYW0pOwo+ICAgICAgcWVtdV9wdXRfOHMg KGYsICZzLT5jc3BfdmFsdWUpOwo+IEBAIC0xMjg4LDIxICsxMjg4LDIxIEBAIHN0YXRpYyB2b2lk IFNCX3NhdmUgKFFFTVVGaWxlICpmLCB2b2lkICoKPiAgICAgIHFlbXVfcHV0X2J1ZmZlciAoZiwg cy0+Y3NwX3JlZ3MsIDI1Nik7Cj4gICAgICBxZW11X3B1dF84cyAoZiwgJnMtPmNzcF9pbmRleCk7 Cj4gICAgICBxZW11X3B1dF9idWZmZXIgKGYsIHMtPmNzcF9yZWc4MywgNCk7Cj4gLSAgICBxZW11 X3B1dF9iZTMycyAoZiwgJnMtPmNzcF9yZWc4M3IpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMgKGYs ICZzLT5jc3BfcmVnODN3KTsKPiArICAgIHFlbXVfcHV0X2JlMzJzIChmLCAodWludDMyX3QgKikm cy0+Y3NwX3JlZzgzcik7Cj4gKyAgICBxZW11X3B1dF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMt PmNzcF9yZWc4M3cpOwo+Cj4gICAgICBxZW11X3B1dF9idWZmZXIgKGYsIHMtPmluMl9kYXRhLCBz aXplb2YgKHMtPmluMl9kYXRhKSk7Cj4gICAgICBxZW11X3B1dF9idWZmZXIgKGYsIHMtPm91dF9k YXRhLCBzaXplb2YgKHMtPm91dF9kYXRhKSk7Cj4gICAgICBxZW11X3B1dF84cyAoZiwgJnMtPnRl c3RfcmVnKTsKPiAgICAgIHFlbXVfcHV0XzhzIChmLCAmcy0+bGFzdF9yZWFkX2J5dGUpOwo+Cj4g LSAgICBxZW11X3B1dF9iZTMycyAoZiwgJnMtPm56ZXJvKTsKPiAtICAgIHFlbXVfcHV0X2JlMzJz IChmLCAmcy0+bGVmdF90aWxsX2lycSk7Cj4gLSAgICBxZW11X3B1dF9iZTMycyAoZiwgJnMtPmRt YV9ydW5uaW5nKTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzIChmLCAmcy0+Ynl0ZXNfcGVyX3NlY29u ZCk7Cj4gLSAgICBxZW11X3B1dF9iZTMycyAoZiwgJnMtPmFsaWduKTsKPiArICAgIHFlbXVfcHV0 X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+bnplcm8pOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMg KGYsICh1aW50MzJfdCAqKSZzLT5sZWZ0X3RpbGxfaXJxKTsKPiArICAgIHFlbXVfcHV0X2JlMzJz IChmLCAodWludDMyX3QgKikmcy0+ZG1hX3J1bm5pbmcpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMg KGYsICh1aW50MzJfdCAqKSZzLT5ieXRlc19wZXJfc2Vjb25kKTsKPiArICAgIHFlbXVfcHV0X2Jl MzJzIChmLCAodWludDMyX3QgKikmcy0+YWxpZ24pOwo+Cj4gLSAgICBxZW11X3B1dF9iZTMycyAo ZiwgJnMtPm1peGVyX25yZWcpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMgKGYsICh1aW50MzJfdCAq KSZzLT5taXhlcl9ucmVnKTsKPiAgICAgIHFlbXVfcHV0X2J1ZmZlciAoZiwgcy0+bWl4ZXJfcmVn cywgMjU2KTsKPiAgfQo+Cj4gQEAgLTEzMTQsMjkgKzEzMTQsMjkgQEAgc3RhdGljIGludCBTQl9s b2FkIChRRU1VRmlsZSAqZiwgdm9pZCAqbwo+ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICAg ICAgfQo+Cj4gLSAgICBxZW11X2dldF9iZTMycyAoZiwgJnMtPmlycSk7Cj4gLSAgICBxZW11X2dl dF9iZTMycyAoZiwgJnMtPmRtYSk7Cj4gLSAgICBxZW11X2dldF9iZTMycyAoZiwgJnMtPmhkbWEp Owo+IC0gICAgcWVtdV9nZXRfYmUzMnMgKGYsICZzLT5wb3J0KTsKPiAtICAgIHFlbXVfZ2V0X2Jl MzJzIChmLCAmcy0+dmVyKTsKPiAtICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAmcy0+aW5faW5kZXgp Owo+IC0gICAgcWVtdV9nZXRfYmUzMnMgKGYsICZzLT5vdXRfZGF0YV9sZW4pOwo+IC0gICAgcWVt dV9nZXRfYmUzMnMgKGYsICZzLT5mbXRfc3RlcmVvKTsKPiAtICAgIHFlbXVfZ2V0X2JlMzJzIChm LCAmcy0+Zm10X3NpZ25lZCk7Cj4gLSAgICBxZW11X2dldF9iZTMycyAoZiwgJnMtPmZtdF9iaXRz KTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+aXJxKTsKPiArICAg IHFlbXVfZ2V0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+ZG1hKTsKPiArICAgIHFlbXVfZ2V0 X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+aGRtYSk7Cj4gKyAgICBxZW11X2dldF9iZTMycyAo ZiwgKHVpbnQzMl90ICopJnMtPnBvcnQpOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMgKGYsICh1aW50 MzJfdCAqKSZzLT52ZXIpOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZz LT5pbl9pbmRleCk7Cj4gKyAgICBxZW11X2dldF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPm91 dF9kYXRhX2xlbik7Cj4gKyAgICBxZW11X2dldF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPmZt dF9zdGVyZW8pOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT5mbXRf c2lnbmVkKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+Zm10X2Jp dHMpOwo+ICAgICAgcWVtdV9nZXRfYmUzMnMgKGYsICZzLT5mbXQpOwo+IC0gICAgcWVtdV9nZXRf YmUzMnMgKGYsICZzLT5kbWFfYXV0byk7Cj4gLSAgICBxZW11X2dldF9iZTMycyAoZiwgJnMtPmJs b2NrX3NpemUpOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMgKGYsICZzLT5maWZvKTsKPiAtICAgIHFl bXVfZ2V0X2JlMzJzIChmLCAmcy0+ZnJlcSk7Cj4gLSAgICBxZW11X2dldF9iZTMycyAoZiwgJnMt PnRpbWVfY29uc3QpOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMgKGYsICZzLT5zcGVha2VyKTsKPiAt ICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAmcy0+bmVlZGVkX2J5dGVzKTsKPiAtICAgIHFlbXVfZ2V0 X2JlMzJzIChmLCAmcy0+Y21kKTsKPiAtICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAmcy0+dXNlX2hk bWEpOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMgKGYsICZzLT5oaWdoc3BlZWQpOwo+IC0gICAgcWVt dV9nZXRfYmUzMnMgKGYsICZzLT5jYW5fd3JpdGUpOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMgKGYs ICZzLT52Mng2KTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+ZG1h X2F1dG8pOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT5ibG9ja19z aXplKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+Zmlmbyk7Cj4g KyAgICBxZW11X2dldF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPmZyZXEpOwo+ICsgICAgcWVt dV9nZXRfYmUzMnMgKGYsICh1aW50MzJfdCAqKSZzLT50aW1lX2NvbnN0KTsKPiArICAgIHFlbXVf Z2V0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+c3BlYWtlcik7Cj4gKyAgICBxZW11X2dldF9i ZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPm5lZWRlZF9ieXRlcyk7Cj4gKyAgICBxZW11X2dldF9i ZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPmNtZCk7Cj4gKyAgICBxZW11X2dldF9iZTMycyAoZiwg KHVpbnQzMl90ICopJnMtPnVzZV9oZG1hKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAodWlu dDMyX3QgKikmcy0+aGlnaHNwZWVkKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAodWludDMy X3QgKikmcy0+Y2FuX3dyaXRlKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJzIChmLCAodWludDMyX3Qg Kikmcy0+djJ4Nik7Cj4KPiAgICAgIHFlbXVfZ2V0XzhzIChmLCAmcy0+Y3NwX3BhcmFtKTsKPiAg ICAgIHFlbXVfZ2V0XzhzIChmLCAmcy0+Y3NwX3ZhbHVlKTsKPiBAQCAtMTM0NSwyMSArMTM0NSwy MSBAQCBzdGF0aWMgaW50IFNCX2xvYWQgKFFFTVVGaWxlICpmLCB2b2lkICpvCj4gICAgICBxZW11 X2dldF9idWZmZXIgKGYsIHMtPmNzcF9yZWdzLCAyNTYpOwo+ICAgICAgcWVtdV9nZXRfOHMgKGYs ICZzLT5jc3BfaW5kZXgpOwo+ICAgICAgcWVtdV9nZXRfYnVmZmVyIChmLCBzLT5jc3BfcmVnODMs IDQpOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMgKGYsICZzLT5jc3BfcmVnODNyKTsKPiAtICAgIHFl bXVfZ2V0X2JlMzJzIChmLCAmcy0+Y3NwX3JlZzgzdyk7Cj4gKyAgICBxZW11X2dldF9iZTMycyAo ZiwgKHVpbnQzMl90ICopJnMtPmNzcF9yZWc4M3IpOwo+ICsgICAgcWVtdV9nZXRfYmUzMnMgKGYs ICh1aW50MzJfdCAqKSZzLT5jc3BfcmVnODN3KTsKPgo+ICAgICAgcWVtdV9nZXRfYnVmZmVyIChm LCBzLT5pbjJfZGF0YSwgc2l6ZW9mIChzLT5pbjJfZGF0YSkpOwo+ICAgICAgcWVtdV9nZXRfYnVm ZmVyIChmLCBzLT5vdXRfZGF0YSwgc2l6ZW9mIChzLT5vdXRfZGF0YSkpOwo+ICAgICAgcWVtdV9n ZXRfOHMgKGYsICZzLT50ZXN0X3JlZyk7Cj4gICAgICBxZW11X2dldF84cyAoZiwgJnMtPmxhc3Rf cmVhZF9ieXRlKTsKPgo+IC0gICAgcWVtdV9nZXRfYmUzMnMgKGYsICZzLT5uemVybyk7Cj4gLSAg ICBxZW11X2dldF9iZTMycyAoZiwgJnMtPmxlZnRfdGlsbF9pcnEpOwo+IC0gICAgcWVtdV9nZXRf YmUzMnMgKGYsICZzLT5kbWFfcnVubmluZyk7Cj4gLSAgICBxZW11X2dldF9iZTMycyAoZiwgJnMt PmJ5dGVzX3Blcl9zZWNvbmQpOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMgKGYsICZzLT5hbGlnbik7 Cj4gKyAgICBxZW11X2dldF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPm56ZXJvKTsKPiArICAg IHFlbXVfZ2V0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+bGVmdF90aWxsX2lycSk7Cj4gKyAg ICBxZW11X2dldF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPmRtYV9ydW5uaW5nKTsKPiArICAg IHFlbXVfZ2V0X2JlMzJzIChmLCAodWludDMyX3QgKikmcy0+Ynl0ZXNfcGVyX3NlY29uZCk7Cj4g KyAgICBxZW11X2dldF9iZTMycyAoZiwgKHVpbnQzMl90ICopJnMtPmFsaWduKTsKPgo+IC0gICAg cWVtdV9nZXRfYmUzMnMgKGYsICZzLT5taXhlcl9ucmVnKTsKPiArICAgIHFlbXVfZ2V0X2JlMzJz IChmLCAodWludDMyX3QgKikmcy0+bWl4ZXJfbnJlZyk7Cj4gICAgICBxZW11X2dldF9idWZmZXIg KGYsIHMtPm1peGVyX3JlZ3MsIDI1Nik7Cj4KPiAgICAgIGlmIChzLT52b2ljZSkgewo+IEluZGV4 OiBody9zZC5jCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQo+IFJDUyBmaWxlOiAvc291cmNlcy9xZW11L3FlbXUvaHcv c2QuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lvbiAxLjEwCj4gZGlmZiAtdSAtcCAtcjEuMTAgc2Qu Ywo+IC0tLSBody9zZC5jICAgICAyNSBOb3YgMjAwNyAxODo0NjoxNyAtMDAwMCAgICAgIDEuMTAK PiArKysgaHcvc2QuYyAgICAgMjkgTm92IDIwMDcgMjM6NTA6MDEgLTAwMDAKPiBAQCAtMzUzLDcg KzM1Myw3IEBAIHN0YXRpYyB2b2lkIHNkX3Jlc2V0KFNEU3RhdGUgKnNkLCBCbG9ja0QKPiAgICAg IHVpbnQzMl90IHNpemU7Cj4gICAgICB1aW50NjRfdCBzZWN0Owo+Cj4gLSAgICBiZHJ2X2dldF9n ZW9tZXRyeShiZHJ2LCAmc2VjdCk7Cj4gKyAgICBiZHJ2X2dldF9nZW9tZXRyeShiZHJ2LCAoaW50 NjRfdCAqKSZzZWN0KTsKPiAgICAgIHNlY3QgPDw9IDk7Cj4KPiAgICAgIGlmIChzZWN0ID4gMHg0 MDAwMDAwMCkKPiBJbmRleDogaHcvdXNiLXVoY2kuYwo+ID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiBSQ1MgZmlsZTog L3NvdXJjZXMvcWVtdS9xZW11L2h3L3VzYi11aGNpLmMsdgo+IHJldHJpZXZpbmcgcmV2aXNpb24g MS4yMgo+IGRpZmYgLXUgLXAgLXIxLjIyIHVzYi11aGNpLmMKPiAtLS0gaHcvdXNiLXVoY2kuYyAg ICAgICAxNyBOb3YgMjAwNyAxNzoxNDo1MCAtMDAwMCAgICAgIDEuMjIKPiArKysgaHcvdXNiLXVo Y2kuYyAgICAgICAyOSBOb3YgMjAwNyAyMzo1MDowMSAtMDAwMAo+IEBAIC01MDgsNyArNTA4LDcg QEAgc3RhdGljIHZvaWQgdWhjaV9hc3luY19jb21wbGV0ZV9wYWNrZXQoVQo+ICAgICAgICAgICAg MCBpZiBURCBzdWNjZXNzZnVsCj4gICAgICAgICAgICAxIGlmIFREIHVuc3VjY2Vzc2Z1bCBvciBp bmFjdGl2ZQo+ICAqLwo+IC1zdGF0aWMgaW50IHVoY2lfaGFuZGxlX3RkKFVIQ0lTdGF0ZSAqcywg VUhDSV9URCAqdGQsIGludCAqaW50X21hc2ssCj4gK3N0YXRpYyBpbnQgdWhjaV9oYW5kbGVfdGQo VUhDSVN0YXRlICpzLCBVSENJX1REICp0ZCwgdWludDMyX3QgKmludF9tYXNrLAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBjb21wbGV0aW9uKQo+ICB7Cj4gICAgICB1aW50OF90IHBp ZDsKPiBAQCAtNzMzLDggKzczMyw4IEBAIHN0YXRpYyB2b2lkIHVoY2lfZnJhbWVfdGltZXIodm9p ZCAqb3BhcXUKPiAgewo+ICAgICAgVUhDSVN0YXRlICpzID0gb3BhcXVlOwo+ICAgICAgaW50NjRf dCBleHBpcmVfdGltZTsKPiAtICAgIHVpbnQzMl90IGZyYW1lX2FkZHIsIGxpbmssIG9sZF90ZF9j dHJsLCB2YWw7Cj4gLSAgICBpbnQgaW50X21hc2ssIGNudCwgcmV0Owo+ICsgICAgdWludDMyX3Qg ZnJhbWVfYWRkciwgbGluaywgb2xkX3RkX2N0cmwsIHZhbCwgaW50X21hc2s7Cj4gKyAgICBpbnQg Y250LCByZXQ7Cj4gICAgICBVSENJX1REIHRkOwo+ICAgICAgVUhDSV9RSCBxaDsKPiAgICAgIHVp bnQzMl90IG9sZF9hc3luY19xaDsKPiBJbmRleDogaHcvdmdhLmMKPiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cj4gUkNT IGZpbGU6IC9zb3VyY2VzL3FlbXUvcWVtdS9ody92Z2EuYyx2Cj4gcmV0cmlldmluZyByZXZpc2lv biAxLjU4Cj4gZGlmZiAtdSAtcCAtcjEuNTggdmdhLmMKPiAtLS0gaHcvdmdhLmMgICAgMTcgTm92 IDIwMDcgMTc6MTQ6NTAgLTAwMDAgICAgICAxLjU4Cj4gKysrIGh3L3ZnYS5jICAgIDI5IE5vdiAy MDA3IDIzOjUwOjAxIC0wMDAwCj4gQEAgLTE2ODcsMTIgKzE2ODcsMTIgQEAgc3RhdGljIHZvaWQg dmdhX3NhdmUoUUVNVUZpbGUgKmYsIHZvaWQgKgo+ICAgICAgcWVtdV9wdXRfYnVmZmVyKGYsIHMt PmdyLCAxNik7Cj4gICAgICBxZW11X3B1dF84cyhmLCAmcy0+YXJfaW5kZXgpOwo+ICAgICAgcWVt dV9wdXRfYnVmZmVyKGYsIHMtPmFyLCAyMSk7Cj4gLSAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+ YXJfZmxpcF9mbG9wKTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1aW50MzJfdCopJnMtPmFy X2ZsaXBfZmxvcCk7Cj4gICAgICBxZW11X3B1dF84cyhmLCAmcy0+Y3JfaW5kZXgpOwo+ICAgICAg cWVtdV9wdXRfYnVmZmVyKGYsIHMtPmNyLCAyNTYpOwo+ICAgICAgcWVtdV9wdXRfOHMoZiwgJnMt Pm1zcik7Cj4gICAgICBxZW11X3B1dF84cyhmLCAmcy0+ZmNyKTsKPiAtICAgIHFlbXVfcHV0Xzhz KGYsICZzLT5zdDAwKTsKPiArICAgIHFlbXVfcHV0XzhzKGYsICh1aW50OF90ICopJnMtPnN0MDAp Owo+ICAgICAgcWVtdV9wdXRfOHMoZiwgJnMtPnN0MDEpOwo+Cj4gICAgICBxZW11X3B1dF84cyhm LCAmcy0+ZGFjX3N0YXRlKTsKPiBAQCAtMTcwMiw3ICsxNzAyLDcgQEAgc3RhdGljIHZvaWQgdmdh X3NhdmUoUUVNVUZpbGUgKmYsIHZvaWQgKgo+ICAgICAgcWVtdV9wdXRfYnVmZmVyKGYsIHMtPmRh Y19jYWNoZSwgMyk7Cj4gICAgICBxZW11X3B1dF9idWZmZXIoZiwgcy0+cGFsZXR0ZSwgNzY4KTsK Pgo+IC0gICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMtPmJhbmtfb2Zmc2V0KTsKPiArICAgIHFlbXVf cHV0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZzLT5iYW5rX29mZnNldCk7Cj4gICNpZmRlZiBDT05G SUdfQk9DSFNfVkJFCj4gICAgICBxZW11X3B1dF9ieXRlKGYsIDEpOwo+ICAgICAgcWVtdV9wdXRf YmUxNnMoZiwgJnMtPnZiZV9pbmRleCk7Cj4gQEAgLTE3MzcsNyArMTczNyw3IEBAIHN0YXRpYyBp bnQgdmdhX2xvYWQoUUVNVUZpbGUgKmYsIHZvaWQgKm8KPiAgICAgIHFlbXVfZ2V0X2J1ZmZlcihm LCBzLT5nciwgMTYpOwo+ICAgICAgcWVtdV9nZXRfOHMoZiwgJnMtPmFyX2luZGV4KTsKPiAgICAg IHFlbXVfZ2V0X2J1ZmZlcihmLCBzLT5hciwgMjEpOwo+IC0gICAgcWVtdV9nZXRfYmUzMnMoZiwg JnMtPmFyX2ZsaXBfZmxvcCk7Cj4gKyAgICBxZW11X2dldF9iZTMycyhmLCAodWludDMyX3QqKSZz LT5hcl9mbGlwX2Zsb3ApOwo+ICAgICAgcWVtdV9nZXRfOHMoZiwgJnMtPmNyX2luZGV4KTsKPiAg ICAgIHFlbXVfZ2V0X2J1ZmZlcihmLCBzLT5jciwgMjU2KTsKPiAgICAgIHFlbXVfZ2V0XzhzKGYs ICZzLT5tc3IpOwo+IEBAIC0xNzUyLDcgKzE3NTIsNyBAQCBzdGF0aWMgaW50IHZnYV9sb2FkKFFF TVVGaWxlICpmLCB2b2lkICpvCj4gICAgICBxZW11X2dldF9idWZmZXIoZiwgcy0+ZGFjX2NhY2hl LCAzKTsKPiAgICAgIHFlbXVfZ2V0X2J1ZmZlcihmLCBzLT5wYWxldHRlLCA3NjgpOwo+Cj4gLSAg ICBxZW11X2dldF9iZTMycyhmLCAmcy0+YmFua19vZmZzZXQpOwo+ICsgICAgcWVtdV9nZXRfYmUz MnMoZiwgKHVpbnQzMl90ICopJnMtPmJhbmtfb2Zmc2V0KTsKPiAgICAgIGlzX3ZiZSA9IHFlbXVf Z2V0X2J5dGUoZik7Cj4gICNpZmRlZiBDT05GSUdfQk9DSFNfVkJFCj4gICAgICBpZiAoIWlzX3Zi ZSkKPiBJbmRleDogaHcvdm13YXJlX3ZnYS5jCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IFJDUyBmaWxlOiAvc291 cmNlcy9xZW11L3FlbXUvaHcvdm13YXJlX3ZnYS5jLHYKPiByZXRyaWV2aW5nIHJldmlzaW9uIDEu NAo+IGRpZmYgLXUgLXAgLXIxLjQgdm13YXJlX3ZnYS5jCj4gLS0tIGh3L3Ztd2FyZV92Z2EuYyAg ICAgMTcgTm92IDIwMDcgMTc6MTQ6NTAgLTAwMDAgICAgICAxLjQKPiArKysgaHcvdm13YXJlX3Zn YS5jICAgICAyOSBOb3YgMjAwNyAyMzo1MDowMSAtMDAwMAo+IEBAIC0xMDI4LDQxICsxMDI4LDQx IEBAIHN0YXRpYyBDUFVXcml0ZU1lbW9yeUZ1bmMgKnZtc3ZnYV92cmFtX3cKPgo+ICBzdGF0aWMg dm9pZCB2bXN2Z2Ffc2F2ZShzdHJ1Y3Qgdm1zdmdhX3N0YXRlX3MgKnMsIFFFTVVGaWxlICpmKQo+ ICB7Cj4gLSAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+ZGVwdGgpOwo+IC0gICAgcWVtdV9wdXRf YmUzMnMoZiwgJnMtPmVuYWJsZSk7Cj4gLSAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+Y29uZmln KTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzKGYsICZzLT5jdXJzb3IuaWQpOwo+IC0gICAgcWVtdV9w dXRfYmUzMnMoZiwgJnMtPmN1cnNvci54KTsKPiAtICAgIHFlbXVfcHV0X2JlMzJzKGYsICZzLT5j dXJzb3IueSk7Cj4gLSAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+Y3Vyc29yLm9uKTsKPiAtICAg IHFlbXVfcHV0X2JlMzJzKGYsICZzLT5pbmRleCk7Cj4gKyAgICBxZW11X3B1dF9iZTMycyhmLCAo dWludDMyX3QgKikmcy0+ZGVwdGgpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMoZiwgKHVpbnQzMl90 ICopJnMtPmVuYWJsZSk7Cj4gKyAgICBxZW11X3B1dF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+ Y29uZmlnKTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZzLT5jdXJzb3Iu aWQpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMoZiwgKHVpbnQzMl90ICopJnMtPmN1cnNvci54KTsK PiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZzLT5jdXJzb3IueSk7Cj4gKyAg ICBxZW11X3B1dF9iZTMycyhmLCAodWludDMyX3QgKikmcy0+Y3Vyc29yLm9uKTsKPiArICAgIHFl bXVfcHV0X2JlMzJzKGYsICh1aW50MzJfdCAqKSZzLT5pbmRleCk7Cj4gICAgICBxZW11X3B1dF9i dWZmZXIoZiwgKHVpbnQ4X3QgKikgcy0+c2NyYXRjaCwgcy0+c2NyYXRjaF9zaXplICogNCk7Cj4g LSAgICBxZW11X3B1dF9iZTMycyhmLCAmcy0+bmV3X3dpZHRoKTsKPiAtICAgIHFlbXVfcHV0X2Jl MzJzKGYsICZzLT5uZXdfaGVpZ2h0KTsKPiArICAgIHFlbXVfcHV0X2JlMzJzKGYsICh1aW50MzJf dCAqKSZzLT5uZXdfd2lkdGgpOwo+ICsgICAgcWVtdV9wdXRfYmUzMnMoZiwgKHVpbnQzMl90ICop JnMtPm5ld19oZWlnaHQpOwo+ICAgICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMtPmd1ZXN0KTsKPiAg ICAgIHFlbXVfcHV0X2JlMzJzKGYsICZzLT5zdmdhaWQpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMo ZiwgJnMtPnN5bmNpbmcpOwo+IC0gICAgcWVtdV9wdXRfYmUzMnMoZiwgJnMtPmZiX3NpemUpOwo+ ICsgICAgcWVtdV9wdXRfYmUzMnMoZiwgKHVpbnQzMl90ICopJnMtPnN5bmNpbmcpOwo+ICsgICAg cWVtdV9wdXRfYmUzMnMoZiwgKHVpbnQzMl90ICopJnMtPmZiX3NpemUpOwoKVGhlc2UgY2FzdHMg YXJlIG5vdCB0aGUgcmlnaHQgd2F5IHRvIGdldCByaWQgb2YgdGhlIHdhcm5pbmdzLCBhcyBhcmUK c29tZSBvZiB0aGUgY2FzdHMgaW4gb3RoZXIgZmlsZXMgaW4gcWVtdV9wdXRfKiBhbmQgcWVtdV9n ZXRfKgphcmd1bWVudHMuIEluIHRoaXMgY2FzZSB0aGUgd2FybmluZ3MgYXJlIHRydWUgcG9zaXRp dmVzIGFuZCB0aGUgYnVncwpjYXVzaW5nIHRoZSB3YXJuaW5ncyBoYXZlIHRvIGJlIGFkZHJlc3Nl ZCBpbnN0ZWFkIG9mIGp1c3QgdGhlCndhcm5pbmdzLiBJIHdpbGwgdHJ5IHRvIGRvIHRoaXMgYW5k IGFwcGx5IG90aGVyIHBhcnRzIG9mIHlvdXIgcGF0Y2gKd2hlbiBJIGZpbmQgYSBiaXQgb2YgdGlt ZS4KCkNoZWVycwo=