From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Foss Subject: Re: [RFC i-g-t 7/9] lib/intel_drm_stubs: Add stubs for functionality from libdrm_intel. Date: Wed, 25 May 2016 13:48:05 -0400 Message-ID: <5745E555.3070200@collabora.com> References: <1463785173-17557-1-git-send-email-robert.foss@collabora.com> <1463785173-17557-8-git-send-email-robert.foss@collabora.com> <20160524080515.GI27098@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id F0CC86E9D7 for ; Wed, 25 May 2016 17:48:10 +0000 (UTC) In-Reply-To: <20160524080515.GI27098@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: daniel.stone@collabora.com, tomeu.vizoso@collabora.com, daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, emil.velikov@collabora.com List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIwMTYtMDUtMjQgMDQ6MDUgQU0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gRnJpLCBN YXkgMjAsIDIwMTYgYXQgMDY6NTk6MzFQTSAtMDQwMCwgcm9iZXJ0LmZvc3NAY29sbGFib3JhLmNv bSB3cm90ZToKPj4gRnJvbTogUm9iZXJ0IEZvc3MgPHJvYmVydC5mb3NzQGNvbGxhYm9yYS5jb20+ Cj4+Cj4+IFRoaXMgcGF0Y2ggcHJvdmlkZXMgc3R1YnMgZm9yIGZ1bmN0aW9uYWxpdHkgb3RoZXJ3 aXNlIHByb3ZpZGVkIGJ5IGxpYmRybV9pbnRlbC4KPj4KPj4gVGhlIHN0dWJiZWQgZnVuY3Rpb25z IGFsbCBmYWlsIHdpdGggYSBjYWxsIHRvIGlndF9yZXF1aXJlKGZhbHNlKS4KPj4gRGVmaW5lcyBh bmQgZW51bXMgaGF2ZSBiZWVuIGNvcGllZCBmcm9tIGxpYmRybV9pbnRlbC4KPgo+IEZvciBwcmV0 dGluZXNzIG1heWIgaWd0X3JlcXVpcmVfZihmYWxzZSwgIk5vdCBjb21waWxlZCB3aXRoIGxpYmRy bV9pbnRlbAo+IHN1cHBvcnRcbiIpOyBvciBzb21ldGhpbmcgc2ltaWxhci4KPiAtRGFuaWVsCgpB Y2ssIGFkZGVkIGluIHYyLgoKUm9iLgoKPgo+Pgo+PiBEdWUgdG8gdGhlIHN0dWJiZWQgdGVzdHMg ZmFpbGluZyB3aXRoIGFuIGlndF9yZXF1aXJlKCkgY2FsbCwgdGhlc2Ugc3R1YnMgYXJlCj4+IG5v dCB3ZWxsIHN1aXRlZCBmb3Igbm9uLXRlc3RzLCBzaW5jZSB0b29scy9iZW5jaG1hcmtzL2V0YyAn c2tpcHBpbmcnCj4+IGV4ZWN1dGlvbiBpcyB1bmhlbHBmdWwuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6 IFJvYmVydCBGb3NzIDxyb2JlcnQuZm9zc0Bjb2xsYWJvcmEuY29tPgo+PiAtLS0KPj4gICBsaWIv TWFrZWZpbGUuc291cmNlcyAgfCAgIDIgKwo+PiAgIGxpYi9pbnRlbF9kcm1fc3R1YnMuYyB8IDI1 OCArKysrKysrKysrKysrCj4+ICAgbGliL2ludGVsX2RybV9zdHVicy5oIHwgOTk5ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgMyBmaWxlcyBj aGFuZ2VkLCAxMjU5IGluc2VydGlvbnMoKykKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lu dGVsX2RybV9zdHVicy5jCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pbnRlbF9kcm1fc3R1 YnMuaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFrZWZp bGUuc291cmNlcwo+PiBpbmRleCAxMzE2ZmQyLi5jMGY5ZjZkIDEwMDY0NAo+PiAtLS0gYS9saWIv TWFrZWZpbGUuc291cmNlcwo+PiArKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwo+PiBAQCAtMjEs NiArMjEsOCBAQCBsaWJpbnRlbF90b29sc19sYV9TT1VSQ0VTID0gCVwKPj4gICAJaW50ZWxfYmF0 Y2hidWZmZXIuYwlcCj4+ICAgCWludGVsX2JhdGNoYnVmZmVyLmgJXAo+PiAgIAlpbnRlbF9jaGlw c2V0LmgJCVwKPj4gKwlpbnRlbF9kcm1fc3R1YnMuYwlcCj4+ICsJaW50ZWxfZHJtX3N0dWJzLmgJ XAo+PiAgIAlpbnRlbF9vcy5jCQlcCj4+ICAgCWludGVsX2lvLmgJCVwKPj4gICAJaW50ZWxfbW1p by5jCQlcCj4+IGRpZmYgLS1naXQgYS9saWIvaW50ZWxfZHJtX3N0dWJzLmMgYi9saWIvaW50ZWxf ZHJtX3N0dWJzLmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uZDQ2 YTliMwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2xpYi9pbnRlbF9kcm1fc3R1YnMuYwo+PiBA QCAtMCwwICsxLDI1OCBAQAo+PiArI2lmbmRlZiBIQVZFX0lOVEVMCj4+ICsKPj4gKyNpbmNsdWRl ICJpbnRlbF9kcm1fc3R1YnMuaCIKPj4gKwo+PiArZHJtX2ludGVsX2J1Zm1nciAqZHJtX2ludGVs X2J1Zm1ncl9nZW1faW5pdChpbnQgZmQsIGludCBiYXRjaF9zaXplKQo+PiArewo+PiArCWlndF9y ZXF1aXJlKGZhbHNlKTsKPj4gKwlyZXR1cm4gKGRybV9pbnRlbF9idWZtZ3IgKikgTlVMTDsKPj4g K30KPj4gKwo+PiArdm9pZCBkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoZHJtX2ludGVsX2JvICpi bykKPj4gK3sKPj4gKwlpZ3RfcmVxdWlyZShmYWxzZSk7Cj4+ICt9Cj4+ICsKPj4gK2RybV9pbnRl bF9ibyAqZHJtX2ludGVsX2JvX2FsbG9jKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwgY29uc3Qg Y2hhciAqbmFtZSwKPj4gKwkJCQkgdW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBpbnQgYWxp Z25tZW50KQo+PiArewo+PiArCWlndF9yZXF1aXJlKGZhbHNlKTsKPj4gKwlyZXR1cm4gKGRybV9p bnRlbF9ibyAqKSBOVUxMOwo+PiArfQo+PiArCj4+ICtpbnQgZHJtX2ludGVsX2JvX3N1YmRhdGEo ZHJtX2ludGVsX2JvICpibywgdW5zaWduZWQgbG9uZyBvZmZzZXQsCj4+ICsJCQkgdW5zaWduZWQg bG9uZyBzaXplLCBjb25zdCB2b2lkICpkYXRhKQo+PiArewo+PiArCWlndF9yZXF1aXJlKGZhbHNl KTsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAraW50IGRybV9pbnRlbF9nZW1fYm9fY29u dGV4dF9leGVjKGRybV9pbnRlbF9ibyAqYm8sIGRybV9pbnRlbF9jb250ZXh0ICpjdHgsCj4+ICsJ CQkJICBpbnQgdXNlZCwgdW5zaWduZWQgaW50IGZsYWdzKQo+PiArewo+PiArCWlndF9yZXF1aXJl KGZhbHNlKTsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAraW50IGRybV9pbnRlbF9ib19l bWl0X3JlbG9jKGRybV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IG9mZnNldCwKPj4gKwkJCQlkcm1f aW50ZWxfYm8gKnRhcmdldF9ibywgdWludDMyX3QgdGFyZ2V0X29mZnNldCwKPj4gKwkJCQl1aW50 MzJfdCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFpbikKPj4gK3sKPj4gKwlpZ3Rf cmVxdWlyZShmYWxzZSk7Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK2ludCBkcm1faW50 ZWxfYm9fZW1pdF9yZWxvY19mZW5jZShkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCBvZmZzZXQs Cj4+ICsJCQkJICBkcm1faW50ZWxfYm8gKnRhcmdldF9ibywKPj4gKwkJCQkgIHVpbnQzMl90IHRh cmdldF9vZmZzZXQsCj4+ICsJCQkJICB1aW50MzJfdCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdy aXRlX2RvbWFpbikKPj4gK3sKPj4gKwlpZ3RfcmVxdWlyZShmYWxzZSk7Cj4+ICsJcmV0dXJuIDA7 Cj4+ICt9Cj4+ICsKPj4gK2ludCBkcm1faW50ZWxfYm9fZ2V0X3RpbGluZyhkcm1faW50ZWxfYm8g KmJvLCB1aW50MzJfdCAqIHRpbGluZ19tb2RlLAo+PiArCQkJCXVpbnQzMl90ICogc3dpenpsZV9t b2RlKQo+PiArewo+PiArCWlndF9yZXF1aXJlKGZhbHNlKTsKPj4gKwlyZXR1cm4gMDsKPj4gK30K Pj4gKwo+PiAraW50IGRybV9pbnRlbF9ib19tcmJfZXhlYyhkcm1faW50ZWxfYm8gKmJvLCBpbnQg dXNlZCwKPj4gKwkJCXN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcmVjdHMsIGludCBudW1fY2xp cHJlY3RzLCBpbnQgRFI0LAo+PiArCQkJdW5zaWduZWQgaW50IGZsYWdzKQo+PiArewo+PiArCWln dF9yZXF1aXJlKGZhbHNlKTsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArdm9pZCBkcm1f aW50ZWxfYnVmbWdyX2dlbV9zZXRfYXViX2Fubm90YXRpb25zKGRybV9pbnRlbF9ibyAqYm8sCj4+ ICsJCQkJCSBkcm1faW50ZWxfYXViX2Fubm90YXRpb24gKmFubm90YXRpb25zLAo+PiArCQkJCQkg dW5zaWduZWQgY291bnQpCj4+ICt7Cj4+ICsJaWd0X3JlcXVpcmUoZmFsc2UpOwo+PiArfQo+PiAr Cj4+ICt2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2VtX2VuYWJsZV9yZXVzZShkcm1faW50ZWxfYnVm bWdyICpidWZtZ3IpCj4+ICt7Cj4+ICsJaWd0X3JlcXVpcmUoZmFsc2UpOwo+PiArfQo+PiArCj4+ ICtpbnQgZHJtX2ludGVsX2JvX2V4ZWMoZHJtX2ludGVsX2JvICpibywgaW50IHVzZWQsCj4+ICsJ CQkgIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcmVjdHMsIGludCBudW1fY2xpcHJlY3RzLCBp bnQgRFI0KQo+PiArewo+PiArCWlndF9yZXF1aXJlKGZhbHNlKTsKPj4gKwlyZXR1cm4gMDsKPj4g K30KPj4gKwo+PiArdm9pZCBkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koZHJtX2ludGVsX2J1Zm1n ciAqYnVmbWdyKQo+PiArewo+PiArCWlndF9yZXF1aXJlKGZhbHNlKTsKPj4gK30KPj4gKwo+PiAr dm9pZCBkcm1faW50ZWxfYm9fd2FpdF9yZW5kZXJpbmcoZHJtX2ludGVsX2JvICpibykKPj4gK3sK Pj4gKwlpZ3RfcmVxdWlyZShmYWxzZSk7Cj4+ICt9Cj4+ICsKPj4gK2ludCBkcm1faW50ZWxfYm9f Z2V0X3N1YmRhdGEoZHJtX2ludGVsX2JvICpibywgdW5zaWduZWQgbG9uZyBvZmZzZXQsCj4+ICsJ CQkJIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9pZCAqZGF0YSkKPj4gK3sKPj4gKwlpZ3RfcmVxdWly ZShmYWxzZSk7Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK2ludCBkcm1faW50ZWxfYm9f bWFwKGRybV9pbnRlbF9ibyAqYm8sIGludCB3cml0ZV9lbmFibGUpCj4+ICt7Cj4+ICsJaWd0X3Jl cXVpcmUoZmFsc2UpOwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtpbnQgZHJtX2ludGVs X2dlbV9ib19tYXBfZ3R0KGRybV9pbnRlbF9ibyAqYm8pCj4+ICt7Cj4+ICsJaWd0X3JlcXVpcmUo ZmFsc2UpOwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICt2b2lkIGRybV9pbnRlbF9idWZt Z3JfZ2VtX2VuYWJsZV9mZW5jZWRfcmVsb2NzKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncikKPj4g K3sKPj4gKwlpZ3RfcmVxdWlyZShmYWxzZSk7Cj4+ICt9Cj4+ICsKPj4gK2ludCBkcm1faW50ZWxf Ym9fdW5tYXAoZHJtX2ludGVsX2JvICpibykKPj4gK3sKPj4gKwlpZ3RfcmVxdWlyZShmYWxzZSk7 Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK2ludCBkcm1faW50ZWxfYm9fZmxpbmsoZHJt X2ludGVsX2JvICpibywgdWludDMyX3QgKiBuYW1lKQo+PiArewo+PiArCWlndF9yZXF1aXJlKGZh bHNlKTsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArZHJtX2ludGVsX2JvICpkcm1faW50 ZWxfYm9fZ2VtX2NyZWF0ZV9mcm9tX25hbWUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAo+PiAr CQkJCQkJY29uc3QgY2hhciAqbmFtZSwKPj4gKwkJCQkJCXVuc2lnbmVkIGludCBoYW5kbGUpCj4+ ICt7Cj4+ICsJaWd0X3JlcXVpcmUoZmFsc2UpOwo+PiArCXJldHVybiAoZHJtX2ludGVsX2JvICop IE5VTEw7Cj4+ICt9Cj4+ICsKPj4gK2ludCBkcm1faW50ZWxfYm9fZ2VtX2V4cG9ydF90b19wcmlt ZShkcm1faW50ZWxfYm8gKmJvLCBpbnQgKnByaW1lX2ZkKQo+PiArewo+PiArCWlndF9yZXF1aXJl KGZhbHNlKTsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArZHJtX2ludGVsX2JvICpkcm1f aW50ZWxfYm9fZ2VtX2NyZWF0ZV9mcm9tX3ByaW1lKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwK Pj4gKwkJCQkJCWludCBwcmltZV9mZCwgaW50IHNpemUpCj4+ICt7Cj4+ICsJaWd0X3JlcXVpcmUo ZmFsc2UpOwo+PiArCXJldHVybiAoZHJtX2ludGVsX2JvICopIE5VTEw7Cj4+ICt9Cj4+ICsKPj4g K3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0X3ZtYV9jYWNoZV9zaXplKGRybV9pbnRlbF9i dWZtZ3IgKmJ1Zm1nciwKPj4gKwkJCQkJCSBpbnQgbGltaXQpCj4+ICt7Cj4+ICsJaWd0X3JlcXVp cmUoZmFsc2UpOwo+PiArfQo+PiArCj4+ICtpbnQgZHJtX2ludGVsX2dlbV9ib191bm1hcF9ndHQo ZHJtX2ludGVsX2JvICpibykKPj4gK3sKPj4gKwlpZ3RfcmVxdWlyZShmYWxzZSk7Cj4+ICsJcmV0 dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK2RybV9pbnRlbF9jb250ZXh0ICpkcm1faW50ZWxfZ2VtX2Nv bnRleHRfY3JlYXRlKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncikKPj4gK3sKPj4gKwlpZ3RfcmVx dWlyZShmYWxzZSk7Cj4+ICsJcmV0dXJuIChkcm1faW50ZWxfYm8gKikgTlVMTDsKPj4gK30KPj4g Kwo+PiArdm9pZCBkcm1faW50ZWxfZ2VtX2NvbnRleHRfZGVzdHJveShkcm1faW50ZWxfY29udGV4 dCAqY3R4KQo+PiArewo+PiArCWlndF9yZXF1aXJlKGZhbHNlKTsKPj4gK30KPj4gKwo+PiArZHJt X2ludGVsX2JvICpkcm1faW50ZWxfYm9fYWxsb2NfdGlsZWQoZHJtX2ludGVsX2J1Zm1nciAqYnVm bWdyLAo+PiArCQkJCQkgICBjb25zdCBjaGFyICpuYW1lLAo+PiArCQkJCQkgICBpbnQgeCwgaW50 IHksIGludCBjcHAsCj4+ICsJCQkJCSAgIHVpbnQzMl90ICp0aWxpbmdfbW9kZSwKPj4gKwkJCQkJ ICAgdW5zaWduZWQgbG9uZyAqcGl0Y2gsCj4+ICsJCQkJCSAgIHVuc2lnbmVkIGxvbmcgZmxhZ3Mp Cj4+ICt7Cj4+ICsJaWd0X3JlcXVpcmUoZmFsc2UpOwo+PiArCXJldHVybiAoZHJtX2ludGVsX2Jv ICopIE5VTEw7Cj4+ICt9Cj4+ICsKPj4gK3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fc2V0X2F1 Yl9maWxlbmFtZShkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCj4+ICsJCQkJCSAgY29uc3QgY2hh ciAqZmlsZW5hbWUpCj4+ICt7Cj4+ICsJaWd0X3JlcXVpcmUoZmFsc2UpOwo+PiArfQo+PiArCj4+ ICt2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2VtX3NldF9hdWJfZHVtcChkcm1faW50ZWxfYnVmbWdy ICpidWZtZ3IsIGludCBlbmFibGUpCj4+ICt7Cj4+ICsJaWd0X3JlcXVpcmUoZmFsc2UpOwo+PiAr fQo+PiArCj4+ICt2b2lkIGRybV9pbnRlbF9nZW1fYm9fYXViX2R1bXBfYm1wKGRybV9pbnRlbF9i byAqYm8sCj4+ICsJCQkJICAgaW50IHgxLCBpbnQgeTEsIGludCB3aWR0aCwgaW50IGhlaWdodCwK Pj4gKwkJCQkgICBlbnVtIGF1Yl9kdW1wX2JtcF9mb3JtYXQgZm9ybWF0LAo+PiArCQkJCSAgIGlu dCBwaXRjaCwgaW50IG9mZnNldCkKPj4gK3sKPj4gKwlpZ3RfcmVxdWlyZShmYWxzZSk7Cj4+ICt9 Cj4+ICsKPj4gK3ZvaWQgZHJtX2ludGVsX2dlbV9ib19zdGFydF9ndHRfYWNjZXNzKGRybV9pbnRl bF9ibyAqYm8sIGludCB3cml0ZV9lbmFibGUpCj4+ICt7Cj4+ICsJaWd0X3JlcXVpcmUoZmFsc2Up Owo+PiArfQo+PiArCj4+ICtpbnQgZHJtX2ludGVsX2JvX3NldF90aWxpbmcoZHJtX2ludGVsX2Jv ICpibywgdWludDMyX3QgKiB0aWxpbmdfbW9kZSwKPj4gKwkJCQl1aW50MzJfdCBzdHJpZGUpCj4+ ICt7Cj4+ICsJaWd0X3JlcXVpcmUoZmFsc2UpOwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ ICtpbnQgZHJtX2ludGVsX2JvX2Rpc2FibGVfcmV1c2UoZHJtX2ludGVsX2JvICpibykKPj4gK3sK Pj4gKwlpZ3RfcmVxdWlyZShmYWxzZSk7Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3Zv aWQgZHJtX2ludGVsX2JvX3JlZmVyZW5jZShkcm1faW50ZWxfYm8gKmJvKQo+PiArewo+PiArCWln dF9yZXF1aXJlKGZhbHNlKTsKPj4gK30KPj4gKwo+PiAraW50IGRybV9pbnRlbF9idWZtZ3JfZ2Vt X2dldF9kZXZpZChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IpCj4+ICt7Cj4+ICsJaWd0X3JlcXVp cmUoZmFsc2UpOwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtkcm1faW50ZWxfYm8gKmRy bV9pbnRlbF9ib19hbGxvY19mb3JfcmVuZGVyKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKPj4g KwkJCQkJCWNvbnN0IGNoYXIgKm5hbWUsCj4+ICsJCQkJCQl1bnNpZ25lZCBsb25nIHNpemUsCj4+ ICsJCQkJCQl1bnNpZ25lZCBpbnQgYWxpZ25tZW50KQo+PiArewo+PiArCWlndF9yZXF1aXJlKGZh bHNlKTsKPj4gKwlyZXR1cm4gKGRybV9pbnRlbF9ibyAqKSBOVUxMOwo+PiArfQo+PiArCj4+ICtp bnQgZHJtX2ludGVsX2JvX3JlZmVyZW5jZXMoZHJtX2ludGVsX2JvICpibywgZHJtX2ludGVsX2Jv ICp0YXJnZXRfYm8pCj4+ICt7Cj4+ICsJaWd0X3JlcXVpcmUoZmFsc2UpOwo+PiArCXJldHVybiAw Owo+PiArfQo+PiArCj4+ICtpbnQgZHJtX2ludGVsX2dlbV9ib193YWl0KGRybV9pbnRlbF9ibyAq Ym8sIGludDY0X3QgdGltZW91dF9ucykKPj4gK3sKPj4gKwlpZ3RfcmVxdWlyZShmYWxzZSk7Cj4+ ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gKyNlbmRpZi8vSEFWRV9JTlRFTAo+PiBkaWZmIC0t Z2l0IGEvbGliL2ludGVsX2RybV9zdHVicy5oIGIvbGliL2ludGVsX2RybV9zdHVicy5oCj4+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLmZkZmFhZWIKPj4gLS0tIC9kZXYv bnVsbAo+PiArKysgYi9saWIvaW50ZWxfZHJtX3N0dWJzLmgKPj4gQEAgLTAsMCArMSw5OTkgQEAK Pj4gKyNpZm5kZWYgSU5URUxfRFJNX1NUVUJTX0gKPj4gKyNkZWZpbmUgSU5URUxfRFJNX1NUVUJT X0gKPj4gKwo+PiArI2luY2x1ZGUgPHhmODZkcm0uaD4KPj4gKwo+PiArI2luY2x1ZGUgImlndF9j b3JlLmgiCj4+ICsKPj4gKyNpZmRlZiBIQVZFX0lOVEVMCj4+ICsjaW5jbHVkZSA8aTkxNV9kcm0u aD4KPj4gKyNpbmNsdWRlIDxpbnRlbF9idWZtZ3IuaD4KPj4gKyNpbmNsdWRlIDxkcm0uaD4KPj4g Kwo+PiArCj4+ICsjZWxzZQo+PiArI2RlZmluZSBpOTE1X2V4ZWNidWZmZXIyX3NldF9jb250ZXh0 X2lkKGViMiwgY29udGV4dCkgaWd0X3JlcXVpcmUoZmFsc2UpOwo+PiArI2RlZmluZSBpOTE1X2V4 ZWNidWZmZXIyX2dldF9jb250ZXh0X2lkKGViMikgaWd0X3JlcXVpcmUoZmFsc2UpOwo+PiArCj4+ ICsjZGVmaW5lIEk5MTVfRVhFQ19HRU43X1NPTF9SRVNFVAkoMTw8OCkKPj4gKyNkZWZpbmUgSTkx NV9FWEVDX1NFQ1VSRQkJKDE8PDkpCj4+ICsjZGVmaW5lIEk5MTVfRVhFQ19JU19QSU5ORUQJCSgx PDwxMCkKPj4gKyNkZWZpbmUgSTkxNV9FWEVDX05PX1JFTE9DCQkoMTw8MTEpCj4+ICsjZGVmaW5l IEk5MTVfRVhFQ19IQU5ETEVfTFVUCQkoMTw8MTIpCj4+ICsjZGVmaW5lIEk5MTVfRVhFQ19CU0Rf TUFTSwkJKDM8PDEzKQo+PiArI2RlZmluZSBJOTE1X0VYRUNfQlNEX0RFRkFVTFQJCSgwPDwxMykg LyogZGVmYXVsdCBwaW5nLXBvbmcgbW9kZSAqLwo+PiArI2RlZmluZSBJOTE1X0VYRUNfQlNEX1JJ TkcxCQkoMTw8MTMpCj4+ICsjZGVmaW5lIEk5MTVfRVhFQ19CU0RfUklORzIJCSgyPDwxMykKPj4g Kwo+PiArI2RlZmluZSBJOTE1X01BRFZfV0lMTE5FRUQgMAo+PiArI2RlZmluZSBJOTE1X01BRFZf RE9OVE5FRUQgMQo+PiArCj4+ICsjZGVmaW5lIEk5MTVfVElMSU5HX05PTkUJMAo+PiArI2RlZmlu ZSBJOTE1X1RJTElOR19YCQkxCj4+ICsjZGVmaW5lIEk5MTVfVElMSU5HX1kJCTIKPj4gKwo+PiAr I2RlZmluZSBJOTE1X0NBQ0hJTkdfTk9ORQkJMAo+PiArI2RlZmluZSBJOTE1X0NBQ0hJTkdfQ0FD SEVECQkxCj4+ICsjZGVmaW5lIEk5MTVfQ0FDSElOR19ESVNQTEFZCTIKPj4gKwo+PiArI2RlZmlu ZSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORQkJMAo+PiArI2RlZmluZSBJOTE1X0JJVF82X1NXSVpa TEVfOQkJMQo+PiArI2RlZmluZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMAkJMgo+PiArI2RlZmlu ZSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMQkJMwo+PiArI2RlZmluZSBJOTE1X0JJVF82X1NXSVpa TEVfOV8xMF8xMQk0Cj4+ICsjZGVmaW5lIEk5MTVfQklUXzZfU1dJWlpMRV9VTktOT1dOCTUKPj4g KyNkZWZpbmUgSTkxNV9CSVRfNl9TV0laWkxFXzlfMTcJCTYKPj4gKyNkZWZpbmUgSTkxNV9CSVRf Nl9TV0laWkxFXzlfMTBfMTcJNwo+PiArCj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fQ0hJUFNFVF9J RAkJNAo+PiArCj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fSVJRX0FDVElWRSAgICAgICAgICAgIDEK Pj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9BTExPV19CQVRDSEJVRkZFUiAgICAgMgo+PiArI2RlZmlu ZSBJOTE1X1BBUkFNX0xBU1RfRElTUEFUQ0ggICAgICAgICAzCj4+ICsjZGVmaW5lIEk5MTVfUEFS QU1fQ0hJUFNFVF9JRCAgICAgICAgICAgIDQKPj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfR0VN ICAgICAgICAgICAgICAgNQo+PiArI2RlZmluZSBJOTE1X1BBUkFNX05VTV9GRU5DRVNfQVZBSUwg ICAgICA2Cj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX09WRVJMQVkgICAgICAgICAgIDcKPj4g KyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfUEFHRUZMSVBQSU5HCSA4Cj4+ICsjZGVmaW5lIEk5MTVf UEFSQU1fSEFTX0VYRUNCVUYyICAgICAgICAgIDkKPj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNf QlNECQkgMTAKPj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfQkxUCQkgMTEKPj4gKyNkZWZpbmUg STkxNV9QQVJBTV9IQVNfUkVMQVhFRF9GRU5DSU5HCSAxMgo+PiArI2RlZmluZSBJOTE1X1BBUkFN X0hBU19DT0hFUkVOVF9SSU5HUwkgMTMKPj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfRVhFQ19D T05TVEFOVFMJIDE0Cj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX1JFTEFYRURfREVMVEEJIDE1 Cj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX0dFTjdfU09MX1JFU0VUCSAxNgo+PiArI2RlZmlu ZSBJOTE1X1BBUkFNX0hBU19MTEMgICAgIAkgCSAxNwo+PiArI2RlZmluZSBJOTE1X1BBUkFNX0hB U19BTElBU0lOR19QUEdUVAkgMTgKPj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfV0FJVF9USU1F T1VUCSAxOQo+PiArI2RlZmluZSBJOTE1X1BBUkFNX0hBU19TRU1BUEhPUkVTCSAyMAo+PiArI2Rl ZmluZSBJOTE1X1BBUkFNX0hBU19QUklNRV9WTUFQX0ZMVVNICSAyMQo+PiArI2RlZmluZSBJOTE1 X1BBUkFNX0hBU19WRUJPWAkJIDIyCj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX1NFQ1VSRV9C QVRDSEVTCSAyMwo+PiArI2RlZmluZSBJOTE1X1BBUkFNX0hBU19QSU5ORURfQkFUQ0hFUwkgMjQK Pj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfRVhFQ19OT19SRUxPQwkgMjUKPj4gKyNkZWZpbmUg STkxNV9QQVJBTV9IQVNfRVhFQ19IQU5ETEVfTFVUICAgMjYKPj4gKyNkZWZpbmUgSTkxNV9QQVJB TV9IQVNfV1QgICAgIAkgCSAyNwo+PiArI2RlZmluZSBJOTE1X1BBUkFNX0NNRF9QQVJTRVJfVkVS U0lPTgkgMjgKPj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9IQVNfQ09IRVJFTlRfUEhZU19HVFQgMjkK Pj4gKyNkZWZpbmUgSTkxNV9QQVJBTV9NTUFQX1ZFUlNJT04gICAgICAgICAgMzAKPj4gKyNkZWZp bmUgSTkxNV9QQVJBTV9IQVNfQlNEMgkJIDMxCj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fUkVWSVNJ T04gICAgICAgICAgICAgIDMyCj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fU1VCU0xJQ0VfVE9UQUwJ IDMzCj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fRVVfVE9UQUwJCSAzNAo+PiArI2RlZmluZSBJOTE1 X1BBUkFNX0hBU19HUFVfUkVTRVQJIDM1Cj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX1JFU09V UkNFX1NUUkVBTUVSIDM2Cj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1fSEFTX0VYRUNfU09GVFBJTgkg MzcKPj4gKwo+PiArI2RlZmluZSBJOTE1X0dFTV9ET01BSU5fQ1BVCQkweDAwMDAwMDAxCj4+ICsj ZGVmaW5lIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIJCTB4MDAwMDAwMDIKPj4gKyNkZWZpbmUgSTkx NV9HRU1fRE9NQUlOX1NBTVBMRVIJCTB4MDAwMDAwMDQKPj4gKyNkZWZpbmUgSTkxNV9HRU1fRE9N QUlOX0NPTU1BTkQJCTB4MDAwMDAwMDgKPj4gKyNkZWZpbmUgSTkxNV9HRU1fRE9NQUlOX0lOU1RS VUNUSU9OCTB4MDAwMDAwMTAKPj4gKyNkZWZpbmUgSTkxNV9HRU1fRE9NQUlOX1ZFUlRFWAkJMHgw MDAwMDAyMAo+PiArI2RlZmluZSBJOTE1X0dFTV9ET01BSU5fR1RUCQkweDAwMDAwMDQwCj4+ICsK Pj4gKyNkZWZpbmUgRFJNX0k5MTVfSU5JVAkJMHgwMAo+PiArI2RlZmluZSBEUk1fSTkxNV9GTFVT SAkJMHgwMQo+PiArI2RlZmluZSBEUk1fSTkxNV9GTElQCQkweDAyCj4+ICsjZGVmaW5lIERSTV9J OTE1X0JBVENIQlVGRkVSCTB4MDMKPj4gKyNkZWZpbmUgRFJNX0k5MTVfSVJRX0VNSVQJMHgwNAo+ PiArI2RlZmluZSBEUk1fSTkxNV9JUlFfV0FJVAkweDA1Cj4+ICsjZGVmaW5lIERSTV9JOTE1X0dF VFBBUkFNCTB4MDYKPj4gKyNkZWZpbmUgRFJNX0k5MTVfU0VUUEFSQU0JMHgwNwo+PiArI2RlZmlu ZSBEUk1fSTkxNV9BTExPQwkJMHgwOAo+PiArI2RlZmluZSBEUk1fSTkxNV9GUkVFCQkweDA5Cj4+ ICsjZGVmaW5lIERSTV9JOTE1X0lOSVRfSEVBUAkweDBhCj4+ICsjZGVmaW5lIERSTV9JOTE1X0NN REJVRkZFUgkweDBiCj4+ICsjZGVmaW5lIERSTV9JOTE1X0RFU1RST1lfSEVBUAkweDBjCj4+ICsj ZGVmaW5lIERSTV9JOTE1X1NFVF9WQkxBTktfUElQRQkweDBkCj4+ICsjZGVmaW5lIERSTV9JOTE1 X0dFVF9WQkxBTktfUElQRQkweDBlCj4+ICsjZGVmaW5lIERSTV9JOTE1X1ZCTEFOS19TV0FQCTB4 MGYKPj4gKyNkZWZpbmUgRFJNX0k5MTVfSFdTX0FERFIJMHgxMQo+PiArI2RlZmluZSBEUk1fSTkx NV9HRU1fSU5JVAkweDEzCj4+ICsjZGVmaW5lIERSTV9JOTE1X0dFTV9FWEVDQlVGRkVSCTB4MTQK Pj4gKyNkZWZpbmUgRFJNX0k5MTVfR0VNX1BJTgkweDE1Cj4+ICsjZGVmaW5lIERSTV9JOTE1X0dF TV9VTlBJTgkweDE2Cj4+ICsjZGVmaW5lIERSTV9JOTE1X0dFTV9CVVNZCTB4MTcKPj4gKyNkZWZp bmUgRFJNX0k5MTVfR0VNX1RIUk9UVExFCTB4MTgKPj4gKyNkZWZpbmUgRFJNX0k5MTVfR0VNX0VO VEVSVlQJMHgxOQo+PiArI2RlZmluZSBEUk1fSTkxNV9HRU1fTEVBVkVWVAkweDFhCj4+ICsjZGVm aW5lIERSTV9JOTE1X0dFTV9DUkVBVEUJMHgxYgo+PiArI2RlZmluZSBEUk1fSTkxNV9HRU1fUFJF QUQJMHgxYwo+PiArI2RlZmluZSBEUk1fSTkxNV9HRU1fUFdSSVRFCTB4MWQKPj4gKyNkZWZpbmUg RFJNX0k5MTVfR0VNX01NQVAJMHgxZQo+PiArI2RlZmluZSBEUk1fSTkxNV9HRU1fU0VUX0RPTUFJ TgkweDFmCj4+ICsjZGVmaW5lIERSTV9JOTE1X0dFTV9TV19GSU5JU0gJMHgyMAo+PiArI2RlZmlu ZSBEUk1fSTkxNV9HRU1fU0VUX1RJTElORwkweDIxCj4+ICsjZGVmaW5lIERSTV9JOTE1X0dFTV9H RVRfVElMSU5HCTB4MjIKPj4gKyNkZWZpbmUgRFJNX0k5MTVfR0VNX0dFVF9BUEVSVFVSRSAweDIz Cj4+ICsjZGVmaW5lIERSTV9JOTE1X0dFTV9NTUFQX0dUVAkweDI0Cj4+ICsjZGVmaW5lIERSTV9J OTE1X0dFVF9QSVBFX0ZST01fQ1JUQ19JRAkweDI1Cj4+ICsjZGVmaW5lIERSTV9JOTE1X0dFTV9N QURWSVNFCTB4MjYKPj4gKyNkZWZpbmUgRFJNX0k5MTVfT1ZFUkxBWV9QVVRfSU1BR0UJMHgyNwo+ PiArI2RlZmluZSBEUk1fSTkxNV9PVkVSTEFZX0FUVFJTCTB4MjgKPj4gKyNkZWZpbmUgRFJNX0k5 MTVfR0VNX0VYRUNCVUZGRVIyCTB4MjkKPj4gKyNkZWZpbmUgRFJNX0k5MTVfR0VUX1NQUklURV9D T0xPUktFWQkweDJhCj4+ICsjZGVmaW5lIERSTV9JOTE1X1NFVF9TUFJJVEVfQ09MT1JLRVkJMHgy Ygo+PiArI2RlZmluZSBEUk1fSTkxNV9HRU1fV0FJVAkweDJjCj4+ICsjZGVmaW5lIERSTV9JOTE1 X0dFTV9DT05URVhUX0NSRUFURQkweDJkCj4+ICsjZGVmaW5lIERSTV9JOTE1X0dFTV9DT05URVhU X0RFU1RST1kJMHgyZQo+PiArI2RlZmluZSBEUk1fSTkxNV9HRU1fU0VUX0NBQ0hJTkcJMHgyZgo+ PiArI2RlZmluZSBEUk1fSTkxNV9HRU1fR0VUX0NBQ0hJTkcJMHgzMAo+PiArI2RlZmluZSBEUk1f STkxNV9SRUdfUkVBRAkJMHgzMQo+PiArI2RlZmluZSBEUk1fSTkxNV9HRVRfUkVTRVRfU1RBVFMJ MHgzMgo+PiArI2RlZmluZSBEUk1fSTkxNV9HRU1fVVNFUlBUUgkJMHgzMwo+PiArI2RlZmluZSBE Uk1fSTkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTQkweDM0Cj4+ICsjZGVmaW5lIERSTV9JOTE1X0dF TV9DT05URVhUX1NFVFBBUkFNCTB4MzUKPj4gKwo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9J TklUCQlEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfSU5JVCwgZHJtX2k5MTVf aW5pdF90KQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9GTFVTSAkJRFJNX0lPICggRFJNX0NP TU1BTkRfQkFTRSArIERSTV9JOTE1X0ZMVVNIKQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9G TElQCQlEUk1fSU8gKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfRkxJUCkKPj4gKyNkZWZp bmUgRFJNX0lPQ1RMX0k5MTVfQkFUQ0hCVUZGRVIJRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9JOTE1X0JBVENIQlVGRkVSLCBkcm1faTkxNV9iYXRjaGJ1ZmZlcl90KQo+PiArI2RlZmlu ZSBEUk1fSU9DVExfSTkxNV9JUlFfRU1JVCAgICAgICAgIERSTV9JT1dSKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fSTkxNV9JUlFfRU1JVCwgZHJtX2k5MTVfaXJxX2VtaXRfdCkKPj4gKyNkZWZpbmUg RFJNX0lPQ1RMX0k5MTVfSVJRX1dBSVQgICAgICAgICBEUk1fSU9XKCBEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfSVJRX1dBSVQsIGRybV9pOTE1X2lycV93YWl0X3QpCj4+ICsjZGVmaW5lIERS TV9JT0NUTF9JOTE1X0dFVFBBUkFNICAgICAgICAgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9JOTE1X0dFVFBBUkFNLCBkcm1faTkxNV9nZXRwYXJhbV90KQo+PiArI2RlZmluZSBEUk1f SU9DVExfSTkxNV9TRVRQQVJBTSAgICAgICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fSTkxNV9TRVRQQVJBTSwgZHJtX2k5MTVfc2V0cGFyYW1fdCkKPj4gKyNkZWZpbmUgRFJNX0lP Q1RMX0k5MTVfQUxMT0MgICAgICAgICAgICBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJN X0k5MTVfQUxMT0MsIGRybV9pOTE1X21lbV9hbGxvY190KQo+PiArI2RlZmluZSBEUk1fSU9DVExf STkxNV9GUkVFICAgICAgICAgICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkx NV9GUkVFLCBkcm1faTkxNV9tZW1fZnJlZV90KQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9J TklUX0hFQVAgICAgICAgIERSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklU X0hFQVAsIGRybV9pOTE1X21lbV9pbml0X2hlYXBfdCkKPj4gKyNkZWZpbmUgRFJNX0lPQ1RMX0k5 MTVfQ01EQlVGRkVSCURSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9DTURCVUZG RVIsIGRybV9pOTE1X2NtZGJ1ZmZlcl90KQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9ERVNU Uk9ZX0hFQVAJRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0RFU1RST1lfSEVB UCwgZHJtX2k5MTVfbWVtX2Rlc3Ryb3lfaGVhcF90KQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkx NV9TRVRfVkJMQU5LX1BJUEUJRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1NF VF9WQkxBTktfUElQRSwgZHJtX2k5MTVfdmJsYW5rX3BpcGVfdCkKPj4gKyNkZWZpbmUgRFJNX0lP Q1RMX0k5MTVfR0VUX1ZCTEFOS19QSVBFCURSTV9JT1IoIERSTV9DT01NQU5EX0JBU0UgKyBEUk1f STkxNV9HRVRfVkJMQU5LX1BJUEUsIGRybV9pOTE1X3ZibGFua19waXBlX3QpCj4+ICsjZGVmaW5l IERSTV9JT0NUTF9JOTE1X1ZCTEFOS19TV0FQCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fSTkxNV9WQkxBTktfU1dBUCwgZHJtX2k5MTVfdmJsYW5rX3N3YXBfdCkKPj4gKyNkZWZpbmUg RFJNX0lPQ1RMX0k5MTVfSFdTX0FERFIJCURSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9J OTE1X0hXU19BRERSLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2luaXQpCj4+ICsjZGVmaW5lIERSTV9J T0NUTF9JOTE1X0dFTV9JTklUCQlEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9H RU1fSU5JVCwgc3RydWN0IGRybV9pOTE1X2dlbV9pbml0KQo+PiArI2RlZmluZSBEUk1fSU9DVExf STkxNV9HRU1fRVhFQ0JVRkZFUglEUk1fSU9XKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9H RU1fRVhFQ0JVRkZFUiwgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyKQo+PiArI2RlZmlu ZSBEUk1fSU9DVExfSTkxNV9HRU1fRVhFQ0JVRkZFUjIJRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfR0VNX0VYRUNCVUZGRVIyLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZm ZXIyKQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fUElOCQlEUk1fSU9XUihEUk1fQ09N TUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1BJTiwgc3RydWN0IGRybV9pOTE1X2dlbV9waW4pCj4+ ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9VTlBJTglEUk1fSU9XKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fSTkxNV9HRU1fVU5QSU4sIHN0cnVjdCBkcm1faTkxNV9nZW1fdW5waW4pCj4+ICsj ZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9CVVNZCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfR0VNX0JVU1ksIHN0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSkKPj4gKyNkZWZp bmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1NFVF9DQUNISU5HCQlEUk1fSU9XKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fSTkxNV9HRU1fU0VUX0NBQ0hJTkcsIHN0cnVjdCBkcm1faTkxNV9nZW1fY2FjaGlu ZykKPj4gKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0dFVF9DQUNISU5HCQlEUk1fSU9XUihE Uk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0dFVF9DQUNISU5HLCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NhY2hpbmcpCj4+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9USFJPVFRMRQlE Uk1fSU8gKCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1RIUk9UVExFKQo+PiArI2Rl ZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fRU5URVJWVAlEUk1fSU8oRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9JOTE1X0dFTV9FTlRFUlZUKQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fTEVB VkVWVAlEUk1fSU8oRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9MRUFWRVZUKQo+PiAr I2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQ1JFQVRFCURSTV9JT1dSKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fSTkxNV9HRU1fQ1JFQVRFLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NyZWF0ZSkKPj4g KyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1BSRUFECURSTV9JT1cgKERSTV9DT01NQU5EX0JB U0UgKyBEUk1fSTkxNV9HRU1fUFJFQUQsIHN0cnVjdCBkcm1faTkxNV9nZW1fcHJlYWQpCj4+ICsj ZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9QV1JJVEUJRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9JOTE1X0dFTV9QV1JJVEUsIHN0cnVjdCBkcm1faTkxNV9nZW1fcHdyaXRlKQo+PiAr I2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUAkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9JOTE1X0dFTV9NTUFQLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXApCj4+ICsjZGVm aW5lIERSTV9JT0NUTF9JOTE1X0dFTV9NTUFQX0dUVAlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfR0VNX01NQVBfR1RULCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXBfZ3R0KQo+ PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fU0VUX0RPTUFJTglEUk1fSU9XIChEUk1fQ09N TUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1NFVF9ET01BSU4sIHN0cnVjdCBkcm1faTkxNV9nZW1f c2V0X2RvbWFpbikKPj4gKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1NXX0ZJTklTSAlEUk1f SU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1NXX0ZJTklTSCwgc3RydWN0IGRy bV9pOTE1X2dlbV9zd19maW5pc2gpCj4+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9TRVRf VElMSU5HCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1NFVF9USUxJ TkcsIHN0cnVjdCBkcm1faTkxNV9nZW1fc2V0X3RpbGluZykKPj4gKyNkZWZpbmUgRFJNX0lPQ1RM X0k5MTVfR0VNX0dFVF9USUxJTkcJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkx NV9HRU1fR0VUX1RJTElORywgc3RydWN0IGRybV9pOTE1X2dlbV9nZXRfdGlsaW5nKQo+PiArI2Rl ZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fR0VUX0FQRVJUVVJFCURSTV9JT1IgIChEUk1fQ09NTUFO RF9CQVNFICsgRFJNX0k5MTVfR0VNX0dFVF9BUEVSVFVSRSwgc3RydWN0IGRybV9pOTE1X2dlbV9n ZXRfYXBlcnR1cmUpCj4+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFVF9QSVBFX0ZST01fQ1JU Q19JRCBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VUX1BJUEVfRlJPTV9D UlRDX0lELCBzdHJ1Y3QgZHJtX2k5MTVfZ2V0X3BpcGVfZnJvbV9jcnRjX2lkKQo+PiArI2RlZmlu ZSBEUk1fSU9DVExfSTkxNV9HRU1fTUFEVklTRQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsg RFJNX0k5MTVfR0VNX01BRFZJU0UsIHN0cnVjdCBkcm1faTkxNV9nZW1fbWFkdmlzZSkKPj4gKyNk ZWZpbmUgRFJNX0lPQ1RMX0k5MTVfT1ZFUkxBWV9QVVRfSU1BR0UJRFJNX0lPVyhEUk1fQ09NTUFO RF9CQVNFICsgRFJNX0k5MTVfT1ZFUkxBWV9QVVRfSU1BR0UsIHN0cnVjdCBkcm1faW50ZWxfb3Zl cmxheV9wdXRfaW1hZ2UpCj4+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X09WRVJMQVlfQVRUUlMJ RFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X09WRVJMQVlfQVRUUlMsIHN0cnVj dCBkcm1faW50ZWxfb3ZlcmxheV9hdHRycykKPj4gKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfU0VU X1NQUklURV9DT0xPUktFWSBEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfU0VU X1NQUklURV9DT0xPUktFWSwgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkpCj4+ICsj ZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFVF9TUFJJVEVfQ09MT1JLRVkgRFJNX0lPV1IoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9JOTE1X0dFVF9TUFJJVEVfQ09MT1JLRVksIHN0cnVjdCBkcm1faW50 ZWxfc3ByaXRlX2NvbG9ya2V5KQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fV0FJVAkJ RFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9XQUlULCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3dhaXQpCj4+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NS RUFURQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9DT05URVhUX0NS RUFURSwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZSkKPj4gKyNkZWZpbmUgRFJN X0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfREVTVFJPWQlEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfR0VNX0NPTlRFWFRfREVTVFJPWSwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X2Rlc3Ryb3kpCj4+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X1JFR19SRUFECQkJRFJNX0lP V1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9SRUdfUkVBRCwgc3RydWN0IGRybV9pOTE1 X3JlZ19yZWFkKQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRVRfUkVTRVRfU1RBVFMJCURS TV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VUX1JFU0VUX1NUQVRTLCBzdHJ1 Y3QgZHJtX2k5MTVfcmVzZXRfc3RhdHMpCj4+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9V U0VSUFRSCQkJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fVVNFUlBU Uiwgc3RydWN0IGRybV9pOTE1X2dlbV91c2VycHRyKQo+PiArI2RlZmluZSBEUk1fSU9DVExfSTkx NV9HRU1fQ09OVEVYVF9HRVRQQVJBTQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9J OTE1X0dFTV9DT05URVhUX0dFVFBBUkFNLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFy YW0pCj4+ICsjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX1NFVFBBUkFNCURSTV9J T1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0NPTlRFWFRfU0VUUEFSQU0sIHN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSkKPj4gKwo+PiArZW51bSBhdWJfZHVtcF9i bXBfZm9ybWF0IHsKPj4gKwlBVUJfRFVNUF9CTVBfRk9STUFUXzhCSVQgPSAxLAo+PiArCUFVQl9E VU1QX0JNUF9GT1JNQVRfQVJHQl80NDQ0ID0gNCwKPj4gKwlBVUJfRFVNUF9CTVBfRk9STUFUX0FS R0JfMDg4OCA9IDYsCj4+ICsJQVVCX0RVTVBfQk1QX0ZPUk1BVF9BUkdCXzg4ODggPSA3LAo+PiAr fTsKPj4gKwo+PiArdHlwZWRlZiBzdHJ1Y3QgX2RybV9pbnRlbF9ibyBkcm1faW50ZWxfYm87Cj4+ ICt0eXBlZGVmIHN0cnVjdCBfZHJtX2ludGVsX2J1Zm1nciBkcm1faW50ZWxfYnVmbWdyOwo+PiAr dHlwZWRlZiBzdHJ1Y3QgX2RybV9pbnRlbF9jb250ZXh0IGRybV9pbnRlbF9jb250ZXh0Owo+PiAr Cj4+ICtzdHJ1Y3QgX2RybV9pbnRlbF9jb250ZXh0IHsKPj4gKwl1bnNpZ25lZCBpbnQgY3R4X2lk Owo+PiArCXN0cnVjdCBfZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyOwo+PiArfTsKPj4gKwo+PiAr c3RydWN0IF9kcm1faW50ZWxfYnVmbWdyIHsKPj4gKwkvKioKPj4gKwkgKiBBbGxvY2F0ZSBhIGJ1 ZmZlciBvYmplY3QuCj4+ICsJICoKPj4gKwkgKiBCdWZmZXIgb2JqZWN0cyBhcmUgbm90IG5lY2Vz c2FyaWx5IGluaXRpYWxseSBtYXBwZWQgaW50byBDUFUgdmlydHVhbAo+PiArCSAqIGFkZHJlc3Mg c3BhY2Ugb3IgZ3JhcGhpY3MgZGV2aWNlIGFwZXJ0dXJlLiAgVGhleSBtdXN0IGJlIG1hcHBlZAo+ PiArCSAqIHVzaW5nIGJvX21hcCgpIG9yIGRybV9pbnRlbF9nZW1fYm9fbWFwX2d0dCgpIHRvIGJl IHVzZWQgYnkgdGhlIENQVS4KPj4gKwkgKi8KPj4gKwlkcm1faW50ZWxfYm8gKigqYm9fYWxsb2Mp IChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGNvbnN0IGNoYXIgKm5hbWUsCj4+ICsJCQkJICAg dW5zaWduZWQgbG9uZyBzaXplLCB1bnNpZ25lZCBpbnQgYWxpZ25tZW50KTsKPj4gKwo+PiArCS8q Kgo+PiArCSAqIEFsbG9jYXRlIGEgYnVmZmVyIG9iamVjdCwgaGludGluZyB0aGF0IGl0IHdpbGwg YmUgdXNlZCBhcyBhCj4+ICsJICogcmVuZGVyIHRhcmdldC4KPj4gKwkgKgo+PiArCSAqIFRoaXMg aXMgb3RoZXJ3aXNlIHRoZSBzYW1lIGFzIGJvX2FsbG9jLgo+PiArCSAqLwo+PiArCWRybV9pbnRl bF9ibyAqKCpib19hbGxvY19mb3JfcmVuZGVyKSAoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAo+ PiArCQkJCQkJICBjb25zdCBjaGFyICpuYW1lLAo+PiArCQkJCQkJICB1bnNpZ25lZCBsb25nIHNp emUsCj4+ICsJCQkJCQkgIHVuc2lnbmVkIGludCBhbGlnbm1lbnQpOwo+PiArCj4+ICsJLyoqCj4+ ICsJICogQWxsb2NhdGUgYSBidWZmZXIgb2JqZWN0IGZyb20gYW4gZXhpc3RpbmcgdXNlciBhY2Nl c3NpYmxlCj4+ICsJICogYWRkcmVzcyBtYWxsb2MnZCB3aXRoIHRoZSBwcm92aWRlZCBzaXplLgo+ PiArCSAqIEFsaWdubWVudCBpcyB1c2VkIHdoZW4gbWFwcGluZyB0byB0aGUgZ3R0Lgo+PiArCSAq IEZsYWdzIG1heSBiZSBJOTE1X1ZNQVBfUkVBRF9PTkxZIG9yIEk5MTVfVVNFUlBUUl9VTlNZTkNI Uk9OSVpFRAo+PiArCSAqLwo+PiArCWRybV9pbnRlbF9ibyAqKCpib19hbGxvY191c2VycHRyKShk cm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCj4+ICsJCQkJCSAgY29uc3QgY2hhciAqbmFtZSwgdm9p ZCAqYWRkciwKPj4gKwkJCQkJICB1aW50MzJfdCB0aWxpbmdfbW9kZSwgdWludDMyX3Qgc3RyaWRl LAo+PiArCQkJCQkgIHVuc2lnbmVkIGxvbmcgc2l6ZSwKPj4gKwkJCQkJICB1bnNpZ25lZCBsb25n IGZsYWdzKTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIEFsbG9jYXRlIGEgdGlsZWQgYnVmZmVyIG9i amVjdC4KPj4gKwkgKgo+PiArCSAqIEFsaWdubWVudCBmb3IgdGlsZWQgb2JqZWN0cyBpcyBzZXQg YXV0b21hdGljYWxseTsgdGhlICdmbGFncycKPj4gKwkgKiBhcmd1bWVudCBwcm92aWRlcyBhIGhp bnQgYWJvdXQgaG93IHRoZSBvYmplY3Qgd2lsbCBiZSB1c2VkIGluaXRpYWxseS4KPj4gKwkgKgo+ PiArCSAqIFZhbGlkIHRpbGluZyBmb3JtYXRzIGFyZToKPj4gKwkgKiAgSTkxNV9USUxJTkdfTk9O RQo+PiArCSAqICBJOTE1X1RJTElOR19YCj4+ICsJICogIEk5MTVfVElMSU5HX1kKPj4gKwkgKgo+ PiArCSAqIE5vdGUgdGhlIHRpbGluZyBmb3JtYXQgbWF5IGJlIHJlamVjdGVkOyBjYWxsZXJzIHNo b3VsZCBjaGVjayB0aGUKPj4gKwkgKiAndGlsaW5nX21vZGUnIGZpZWxkIG9uIHJldHVybiwgYXMg d2VsbCBhcyB0aGUgcGl0Y2ggdmFsdWUsIHdoaWNoCj4+ICsJICogbWF5IGhhdmUgYmVlbiByb3Vu ZGVkIHVwIHRvIGFjY29tbW9kYXRlIGZvciB0aWxpbmcgcmVzdHJpY3Rpb25zLgo+PiArCSAqLwo+ PiArCWRybV9pbnRlbF9ibyAqKCpib19hbGxvY190aWxlZCkgKGRybV9pbnRlbF9idWZtZ3IgKmJ1 Zm1nciwKPj4gKwkJCQkJIGNvbnN0IGNoYXIgKm5hbWUsCj4+ICsJCQkJCSBpbnQgeCwgaW50IHks IGludCBjcHAsCj4+ICsJCQkJCSB1aW50MzJfdCAqdGlsaW5nX21vZGUsCj4+ICsJCQkJCSB1bnNp Z25lZCBsb25nICpwaXRjaCwKPj4gKwkJCQkJIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwo+PiArCj4+ ICsJLyoqIFRha2VzIGEgcmVmZXJlbmNlIG9uIGEgYnVmZmVyIG9iamVjdCAqLwo+PiArCXZvaWQg KCpib19yZWZlcmVuY2UpIChkcm1faW50ZWxfYm8gKmJvKTsKPj4gKwo+PiArCS8qKgo+PiArCSAq IFJlbGVhc2VzIGEgcmVmZXJlbmNlIG9uIGEgYnVmZmVyIG9iamVjdCwgZnJlZWluZyB0aGUgZGF0 YSBpZgo+PiArCSAqIG5vIHJlZmVyZW5jZXMgcmVtYWluLgo+PiArCSAqLwo+PiArCXZvaWQgKCpi b191bnJlZmVyZW5jZSkgKGRybV9pbnRlbF9ibyAqYm8pOwo+PiArCj4+ICsJLyoqCj4+ICsJICog TWFwcyB0aGUgYnVmZmVyIGludG8gdXNlcnNwYWNlLgo+PiArCSAqCj4+ICsJICogVGhpcyBmdW5j dGlvbiB3aWxsIGJsb2NrIHdhaXRpbmcgZm9yIGFueSBleGlzdGluZyBleGVjdXRpb24gb24gdGhl Cj4+ICsJICogYnVmZmVyIHRvIGNvbXBsZXRlLCBmaXJzdC4gIFRoZSByZXN1bHRpbmcgbWFwcGlu ZyBpcyBhdmFpbGFibGUgYXQKPj4gKwkgKiBidWYtPnZpcnR1YWwuCj4+ICsJICovCj4+ICsJaW50 ICgqYm9fbWFwKSAoZHJtX2ludGVsX2JvICpibywgaW50IHdyaXRlX2VuYWJsZSk7Cj4+ICsKPj4g KwkvKioKPj4gKwkgKiBSZWR1Y2VzIHRoZSByZWZjb3VudCBvbiB0aGUgdXNlcnNwYWNlIG1hcHBp bmcgb2YgdGhlIGJ1ZmZlcgo+PiArCSAqIG9iamVjdC4KPj4gKwkgKi8KPj4gKwlpbnQgKCpib191 bm1hcCkgKGRybV9pbnRlbF9ibyAqYm8pOwo+PiArCj4+ICsJLyoqCj4+ICsJICogV3JpdGUgZGF0 YSBpbnRvIGFuIG9iamVjdC4KPj4gKwkgKgo+PiArCSAqIFRoaXMgaXMgYW4gb3B0aW9uYWwgZnVu Y3Rpb24sIGlmIG1pc3NpbmcsCj4+ICsJICogZHJtX2ludGVsX2JvIHdpbGwgbWFwL21lbWNweS91 bm1hcC4KPj4gKwkgKi8KPj4gKwlpbnQgKCpib19zdWJkYXRhKSAoZHJtX2ludGVsX2JvICpibywg dW5zaWduZWQgbG9uZyBvZmZzZXQsCj4+ICsJCQkgICB1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0 IHZvaWQgKmRhdGEpOwo+PiArCj4+ICsJLyoqCj4+ICsJICogUmVhZCBkYXRhIGZyb20gYW4gb2Jq ZWN0Cj4+ICsJICoKPj4gKwkgKiBUaGlzIGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uLCBpZiBtaXNz aW5nLAo+PiArCSAqIGRybV9pbnRlbF9ibyB3aWxsIG1hcC9tZW1jcHkvdW5tYXAuCj4+ICsJICov Cj4+ICsJaW50ICgqYm9fZ2V0X3N1YmRhdGEpIChkcm1faW50ZWxfYm8gKmJvLCB1bnNpZ25lZCBs b25nIG9mZnNldCwKPj4gKwkJCQkgICB1bnNpZ25lZCBsb25nIHNpemUsIHZvaWQgKmRhdGEpOwo+ PiArCj4+ICsJLyoqCj4+ICsJICogV2FpdHMgZm9yIHJlbmRlcmluZyB0byBhbiBvYmplY3QgYnkg dGhlIEdQVSB0byBoYXZlIGNvbXBsZXRlZC4KPj4gKwkgKgo+PiArCSAqIFRoaXMgaXMgbm90IHJl cXVpcmVkIGZvciBhbnkgYWNjZXNzIHRvIHRoZSBCTyBieSBib19tYXAsCj4+ICsJICogYm9fc3Vi ZGF0YSwgZXRjLiAgSXQgaXMgbWVyZWx5IGEgd2F5IGZvciB0aGUgZHJpdmVyIHRvIGltcGxlbWVu dAo+PiArCSAqIGdsRmluaXNoLgo+PiArCSAqLwo+PiArCXZvaWQgKCpib193YWl0X3JlbmRlcmlu ZykgKGRybV9pbnRlbF9ibyAqYm8pOwo+PiArCj4+ICsJLyoqCj4+ICsJICogVGVhcnMgZG93biB0 aGUgYnVmZmVyIG1hbmFnZXIgaW5zdGFuY2UuCj4+ICsJICovCj4+ICsJdm9pZCAoKmRlc3Ryb3kp IChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IpOwo+PiArCj4+ICsJLyoqCj4+ICsJICogSW5kaWNh dGUgaWYgdGhlIGJ1ZmZlciBjYW4gYmUgcGxhY2VkIGFueXdoZXJlIGluIHRoZSBmdWxsIHBwZ3R0 Cj4+ICsJICogYWRkcmVzcyByYW5nZSAoMl40OCkuCj4+ICsJICoKPj4gKwkgKiBBbnkgcmVzb3Vy Y2UgdXNlZCB3aXRoIGZsYXQvaGVhcGxlc3MgKDB4MDAwMDAwMDAtMHhmZmZmZjAwMCkKPj4gKwkg KiBHZW5lcmFsIFN0YXRlIEhlYXAgKEdTSCkgb3IgSW50cnVjdGlvbnMgU3RhdGUgSGVhcCAoSVNI KSBtdXN0Cj4+ICsJICogYmUgaW4gYSAzMi1iaXQgcmFuZ2UuIDQ4LWJpdCByYW5nZSB3aWxsIG9u bHkgYmUgdXNlZCB3aGVuIGV4cGxpY2l0bHkKPj4gKwkgKiByZXF1ZXN0ZWQuCj4+ICsJICoKPj4g KwkgKiBccGFyYW0gYm8gQnVmZmVyIHRvIHNldCB0aGUgdXNlXzQ4Yl9hZGRyZXNzX3JhbmdlIGZs YWcuCj4+ICsJICogXHBhcmFtIGVuYWJsZSBUaGUgZmxhZyB2YWx1ZS4KPj4gKwkgKi8KPj4gKwl2 b2lkICgqYm9fdXNlXzQ4Yl9hZGRyZXNzX3JhbmdlKSAoZHJtX2ludGVsX2JvICpibywgdWludDMy X3QgZW5hYmxlKTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIEFkZCByZWxvY2F0aW9uIGVudHJ5IGlu IHJlbG9jX2J1Ziwgd2hpY2ggd2lsbCBiZSB1cGRhdGVkIHdpdGggdGhlCj4+ICsJICogdGFyZ2V0 IGJ1ZmZlcidzIHJlYWwgb2Zmc2V0IG9uIG9uIGNvbW1hbmQgc3VibWlzc2lvbi4KPj4gKwkgKgo+ PiArCSAqIFJlbG9jYXRpb25zIHJlbWFpbiBpbiBwbGFjZSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRo ZSBidWZmZXIgb2JqZWN0Lgo+PiArCSAqCj4+ICsJICogXHBhcmFtIGJvIEJ1ZmZlciB0byB3cml0 ZSB0aGUgcmVsb2NhdGlvbiBpbnRvLgo+PiArCSAqIFxwYXJhbSBvZmZzZXQgQnl0ZSBvZmZzZXQg d2l0aGluIHJlbG9jX2JvIG9mIHRoZSBwb2ludGVyIHRvCj4+ICsJICoJCQl0YXJnZXRfYm8uCj4+ ICsJICogXHBhcmFtIHRhcmdldF9ibyBCdWZmZXIgd2hvc2Ugb2Zmc2V0IHNob3VsZCBiZSB3cml0 dGVuIGludG8gdGhlCj4+ICsJICogICAgICAgICAgICAgICAgICByZWxvY2F0aW9uIGVudHJ5Lgo+ PiArCSAqIFxwYXJhbSB0YXJnZXRfb2Zmc2V0IENvbnN0YW50IHZhbHVlIHRvIGJlIGFkZGVkIHRv IHRhcmdldF9ibydzCj4+ICsJICoJCQlvZmZzZXQgaW4gcmVsb2NhdGlvbiBlbnRyeS4KPj4gKwkg KiBccGFyYW0gcmVhZF9kb21haW5zIEdFTSByZWFkIGRvbWFpbnMgd2hpY2ggdGhlIGJ1ZmZlciB3 aWxsIGJlCj4+ICsJICoJCQlyZWFkIGludG8gYnkgdGhlIGNvbW1hbmQgdGhhdCB0aGlzIHJlbG9j YXRpb24KPj4gKwkgKgkJCWlzIHBhcnQgb2YuCj4+ICsJICogXHBhcmFtIHdyaXRlX2RvbWFpbnMg R0VNIHJlYWQgZG9tYWlucyB3aGljaCB0aGUgYnVmZmVyIHdpbGwgYmUKPj4gKwkgKgkJCWRpcnRp ZWQgaW4gYnkgdGhlIGNvbW1hbmQgdGhhdCB0aGlzCj4+ICsJICoJCQlyZWxvY2F0aW9uIGlzIHBh cnQgb2YuCj4+ICsJICovCj4+ICsJaW50ICgqYm9fZW1pdF9yZWxvYykgKGRybV9pbnRlbF9ibyAq Ym8sIHVpbnQzMl90IG9mZnNldCwKPj4gKwkJCQkgIGRybV9pbnRlbF9ibyAqdGFyZ2V0X2JvLCB1 aW50MzJfdCB0YXJnZXRfb2Zmc2V0LAo+PiArCQkJCSAgdWludDMyX3QgcmVhZF9kb21haW5zLCB1 aW50MzJfdCB3cml0ZV9kb21haW4pOwo+PiArCWludCAoKmJvX2VtaXRfcmVsb2NfZmVuY2UpKGRy bV9pbnRlbF9ibyAqYm8sIHVpbnQzMl90IG9mZnNldCwKPj4gKwkJCQkgICBkcm1faW50ZWxfYm8g KnRhcmdldF9ibywKPj4gKwkJCQkgICB1aW50MzJfdCB0YXJnZXRfb2Zmc2V0LAo+PiArCQkJCSAg IHVpbnQzMl90IHJlYWRfZG9tYWlucywKPj4gKwkJCQkgICB1aW50MzJfdCB3cml0ZV9kb21haW4p Owo+PiArCj4+ICsJLyoqIEV4ZWN1dGVzIHRoZSBjb21tYW5kIGJ1ZmZlciBwb2ludGVkIHRvIGJ5 IGJvLiAqLwo+PiArCWludCAoKmJvX2V4ZWMpIChkcm1faW50ZWxfYm8gKmJvLCBpbnQgdXNlZCwK Pj4gKwkJCWRybV9jbGlwX3JlY3RfdCAqY2xpcHJlY3RzLCBpbnQgbnVtX2NsaXByZWN0cywKPj4g KwkJCWludCBEUjQpOwo+PiArCj4+ICsJLyoqIEV4ZWN1dGVzIHRoZSBjb21tYW5kIGJ1ZmZlciBw b2ludGVkIHRvIGJ5IGJvIG9uIHRoZSBzZWxlY3RlZAo+PiArCSAqIHJpbmcgYnVmZmVyCj4+ICsJ ICovCj4+ICsJaW50ICgqYm9fbXJiX2V4ZWMpIChkcm1faW50ZWxfYm8gKmJvLCBpbnQgdXNlZCwK Pj4gKwkJCQlkcm1fY2xpcF9yZWN0X3QgKmNsaXByZWN0cywgaW50IG51bV9jbGlwcmVjdHMsCj4+ ICsJCQkJaW50IERSNCwgdW5zaWduZWQgZmxhZ3MpOwo+PiArCj4+ICsJLyoqCj4+ICsJICogUGlu IGEgYnVmZmVyIHRvIHRoZSBhcGVydHVyZSBhbmQgZml4IHRoZSBvZmZzZXQgdW50aWwgdW5waW5u ZWQKPj4gKwkgKgo+PiArCSAqIFxwYXJhbSBidWYgQnVmZmVyIHRvIHBpbgo+PiArCSAqIFxwYXJh bSBhbGlnbm1lbnQgUmVxdWlyZWQgYWxpZ25tZW50IGZvciBhcGVydHVyZSwgaW4gYnl0ZXMKPj4g KwkgKi8KPj4gKwlpbnQgKCpib19waW4pIChkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCBhbGln bm1lbnQpOwo+PiArCj4+ICsJLyoqCj4+ICsJICogVW5waW4gYSBidWZmZXIgZnJvbSB0aGUgYXBl cnR1cmUsIGFsbG93aW5nIGl0IHRvIGJlIHJlbW92ZWQKPj4gKwkgKgo+PiArCSAqIFxwYXJhbSBi dWYgQnVmZmVyIHRvIHVucGluCj4+ICsJICovCj4+ICsJaW50ICgqYm9fdW5waW4pIChkcm1faW50 ZWxfYm8gKmJvKTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIEFzayB0aGF0IHRoZSBidWZmZXIgYmUg cGxhY2VkIGluIHRpbGluZyBtb2RlCj4+ICsJICoKPj4gKwkgKiBccGFyYW0gYnVmIEJ1ZmZlciB0 byBzZXQgdGlsaW5nIG1vZGUgZm9yCj4+ICsJICogXHBhcmFtIHRpbGluZ19tb2RlIGRlc2lyZWQs IGFuZCByZXR1cm5lZCB0aWxpbmcgbW9kZQo+PiArCSAqLwo+PiArCWludCAoKmJvX3NldF90aWxp bmcpIChkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCAqIHRpbGluZ19tb2RlLAo+PiArCQkJCSAg dWludDMyX3Qgc3RyaWRlKTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIEdldCB0aGUgY3VycmVudCB0 aWxpbmcgKGFuZCByZXN1bHRpbmcgc3dpenpsaW5nKSBtb2RlIGZvciB0aGUgYm8uCj4+ICsJICoK Pj4gKwkgKiBccGFyYW0gYnVmIEJ1ZmZlciB0byBnZXQgdGlsaW5nIG1vZGUgZm9yCj4+ICsJICog XHBhcmFtIHRpbGluZ19tb2RlIHJldHVybmVkIHRpbGluZyBtb2RlCj4+ICsJICogXHBhcmFtIHN3 aXp6bGVfbW9kZSByZXR1cm5lZCBzd2l6emxpbmcgbW9kZQo+PiArCSAqLwo+PiArCWludCAoKmJv X2dldF90aWxpbmcpIChkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCAqIHRpbGluZ19tb2RlLAo+ PiArCQkJCSAgdWludDMyX3QgKiBzd2l6emxlX21vZGUpOwo+PiArCj4+ICsJLyoqCj4+ICsJICog U2V0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhpcyBidWZmZXIgd2lsbCBiZSBzb2Z0cGlubmVkCj4+ ICsJICogXHBhcmFtIGJvIEJ1ZmZlciB0byBzZXQgdGhlIHNvZnRwaW4gb2Zmc2V0IGZvcgo+PiAr CSAqIFxwYXJhbSBvZmZzZXQgU29mdHBpbiBvZmZzZXQKPj4gKwkgKi8KPj4gKwlpbnQgKCpib19z ZXRfc29mdHBpbl9vZmZzZXQpIChkcm1faW50ZWxfYm8gKmJvLCB1aW50NjRfdCBvZmZzZXQpOwo+ PiArCj4+ICsJLyoqCj4+ICsJICogQ3JlYXRlIGEgdmlzaWJsZSBuYW1lIGZvciBhIGJ1ZmZlciB3 aGljaCBjYW4gYmUgdXNlZCBieSBvdGhlciBhcHBzCj4+ICsJICoKPj4gKwkgKiBccGFyYW0gYnVm IEJ1ZmZlciB0byBjcmVhdGUgYSBuYW1lIGZvcgo+PiArCSAqIFxwYXJhbSBuYW1lIFJldHVybmVk IG5hbWUKPj4gKwkgKi8KPj4gKwlpbnQgKCpib19mbGluaykgKGRybV9pbnRlbF9ibyAqYm8sIHVp bnQzMl90ICogbmFtZSk7Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBSZXR1cm5zIDEgaWYgbWFwcGlu ZyB0aGUgYnVmZmVyIGZvciB3cml0ZSBjb3VsZCBjYXVzZSB0aGUgcHJvY2Vzcwo+PiArCSAqIHRv IGJsb2NrLCBkdWUgdG8gdGhlIG9iamVjdCBiZWluZyBhY3RpdmUgaW4gdGhlIEdQVS4KPj4gKwkg Ki8KPj4gKwlpbnQgKCpib19idXN5KSAoZHJtX2ludGVsX2JvICpibyk7Cj4+ICsKPj4gKwkvKioK Pj4gKwkgKiBTcGVjaWZ5IHRoZSB2b2xhdGlsaXR5IG9mIHRoZSBidWZmZXIuCj4+ICsJICogXHBh cmFtIGJvIEJ1ZmZlciB0byBjcmVhdGUgYSBuYW1lIGZvcgo+PiArCSAqIFxwYXJhbSBtYWR2IFRo ZSBwdXJnZWFibGUgc3RhdHVzCj4+ICsJICoKPj4gKwkgKiBVc2UgSTkxNV9NQURWX0RPTlRORUVE IHRvIG1hcmsgdGhlIGJ1ZmZlciBhcyBwdXJnZWFibGUsIGFuZCBpdCB3aWxsIGJlCj4+ICsJICog cmVjbGFpbWVkIHVuZGVyIG1lbW9yeSBwcmVzc3VyZS4gSWYgeW91IHN1YnNlcXVlbnRseSByZXF1 aXJlIHRoZSBidWZmZXIsCj4+ICsJICogdGhlbiB5b3UgbXVzdCBwYXNzIEk5MTVfTUFEVl9XSUxM TkVFRCB0byBtYXJrIHRoZSBidWZmZXIgYXMgcmVxdWlyZWQuCj4+ICsJICoKPj4gKwkgKiBSZXR1 cm5zIDEgaWYgdGhlIGJ1ZmZlciB3YXMgcmV0YWluZWQsIG9yIDAgaWYgaXQgd2FzIGRpc2NhcmRl ZCB3aGlsc3QKPj4gKwkgKiBtYXJrZWQgYXMgSTkxNV9NQURWX0RPTlRORUVELgo+PiArCSAqLwo+ PiArCWludCAoKmJvX21hZHZpc2UpIChkcm1faW50ZWxfYm8gKmJvLCBpbnQgbWFkdik7Cj4+ICsK Pj4gKwlpbnQgKCpjaGVja19hcGVydHVyZV9zcGFjZSkgKGRybV9pbnRlbF9ibyAqKiBib19hcnJh eSwgaW50IGNvdW50KTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIERpc2FibGUgYnVmZmVyIHJldXNl IGZvciBidWZmZXJzIHdoaWNoIHdpbGwgYmUgc2hhcmVkIGluIHNvbWUgd2F5LAo+PiArCSAqIGFz IHdpdGggc2Nhbm91dCBidWZmZXJzLiBXaGVuIHRoZSBidWZmZXIgcmVmZXJlbmNlIGNvdW50IGdv ZXMgdG8KPj4gKwkgKiB6ZXJvLCBpdCB3aWxsIGJlIGZyZWVkIGFuZCBub3QgcGxhY2VkIGluIHRo ZSByZXVzZSBsaXN0Lgo+PiArCSAqCj4+ICsJICogXHBhcmFtIGJvIEJ1ZmZlciB0byBkaXNhYmxl IHJldXNlIGZvcgo+PiArCSAqLwo+PiArCWludCAoKmJvX2Rpc2FibGVfcmV1c2UpIChkcm1faW50 ZWxfYm8gKmJvKTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIFF1ZXJ5IHdoZXRoZXIgYSBidWZmZXIg aXMgcmV1c2FibGUuCj4+ICsJICoKPj4gKwkgKiBccGFyYW0gYm8gQnVmZmVyIHRvIHF1ZXJ5Cj4+ ICsJICovCj4+ICsJaW50ICgqYm9faXNfcmV1c2FibGUpIChkcm1faW50ZWxfYm8gKmJvKTsKPj4g Kwo+PiArCS8qKgo+PiArCSAqCj4+ICsJICogUmV0dXJuIHRoZSBwaXBlIGFzc29jaWF0ZWQgd2l0 aCBhIGNydGNfaWQgc28gdGhhdCB2YmxhbmsKPj4gKwkgKiBzeW5jaHJvbml6YXRpb24gY2FuIHVz ZSB0aGUgY29ycmVjdCBkYXRhIGluIHRoZSByZXF1ZXN0Lgo+PiArCSAqIFRoaXMgaXMgb25seSBz dXBwb3J0ZWQgZm9yIEtNUyBhbmQgZ2VtIGF0IHRoaXMgcG9pbnQsIHdoZW4KPj4gKwkgKiB1bnN1 cHBvcnRlZCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIC0xIGFuZCBsZWF2ZXMgdGhlIGRlY2lzaW9u Cj4+ICsJICogb2Ygd2hhdCB0byBkbyBpbiB0aGF0IGNhc2UgdG8gdGhlIGNhbGxlcgo+PiArCSAq Cj4+ICsJICogXHBhcmFtIGJ1Zm1nciB0aGUgYXNzb2NpYXRlZCBidWZmZXIgbWFuYWdlcgo+PiAr CSAqIFxwYXJhbSBjcnRjX2lkIHRoZSBjcnRjIGlkZW50aWZpZXIKPj4gKwkgKi8KPj4gKwlpbnQg KCpnZXRfcGlwZV9mcm9tX2NydGNfaWQpIChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGludCBj cnRjX2lkKTsKPj4gKwo+PiArCS8qKiBSZXR1cm5zIHRydWUgaWYgdGFyZ2V0X2JvIGlzIGluIHRo ZSByZWxvY2F0aW9uIHRyZWUgcm9vdGVkIGF0IGJvLiAqLwo+PiArCWludCAoKmJvX3JlZmVyZW5j ZXMpIChkcm1faW50ZWxfYm8gKmJvLCBkcm1faW50ZWxfYm8gKnRhcmdldF9ibyk7Cj4+ICsKPj4g KwkvKio8IEVuYWJsZXMgdmVyYm9zZSBkZWJ1Z2dpbmcgcHJpbnRvdXRzICovCj4+ICsJaW50IGRl YnVnOwo+PiArfTsKPj4gKwo+PiArc3RydWN0IF9kcm1faW50ZWxfYm8gewo+PiArCS8qKgo+PiAr CSAqIFNpemUgaW4gYnl0ZXMgb2YgdGhlIGJ1ZmZlciBvYmplY3QuCj4+ICsJICoKPj4gKwkgKiBU aGUgc2l6ZSBtYXkgYmUgbGFyZ2VyIHRoYW4gdGhlIHNpemUgb3JpZ2luYWxseSByZXF1ZXN0ZWQg Zm9yIHRoZQo+PiArCSAqIGFsbG9jYXRpb24sIHN1Y2ggYXMgYmVpbmcgYWxpZ25lZCB0byBwYWdl IHNpemUuCj4+ICsJICovCj4+ICsJdW5zaWduZWQgbG9uZyBzaXplOwo+PiArCj4+ICsJLyoqCj4+ ICsJICogQWxpZ25tZW50IHJlcXVpcmVtZW50IGZvciBvYmplY3QKPj4gKwkgKgo+PiArCSAqIFVz ZWQgZm9yIEdUVCBtYXBwaW5nICYgcGlubmluZyB0aGUgb2JqZWN0Lgo+PiArCSAqLwo+PiArCXVu c2lnbmVkIGxvbmcgYWxpZ247Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBEZXByZWNhdGVkIGZpZWxk IGNvbnRhaW5pbmcgKHBvc3NpYmx5IHRoZSBsb3cgMzItYml0cyBvZikgdGhlIGxhc3QKPj4gKwkg KiBzZWVuIHZpcnR1YWwgY2FyZCBhZGRyZXNzLiAgVXNlIG9mZnNldDY0IGluc3RlYWQuCj4+ICsJ ICovCj4+ICsJdW5zaWduZWQgbG9uZyBvZmZzZXQ7Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBWaXJ0 dWFsIGFkZHJlc3MgZm9yIGFjY2Vzc2luZyB0aGUgYnVmZmVyIGRhdGEuICBPbmx5IHZhbGlkIHdo aWxlCj4+ICsJICogbWFwcGVkLgo+PiArCSAqLwo+PiArI2lmZGVmIF9fY3BsdXNwbHVzCj4+ICsJ dm9pZCAqdmlydDsKPj4gKyNlbHNlCj4+ICsJdm9pZCAqdmlydHVhbDsKPj4gKyNlbmRpZgo+PiAr Cj4+ICsJLyoqIEJ1ZmZlciBtYW5hZ2VyIGNvbnRleHQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnVm ZmVyIG9iamVjdCAqLwo+PiArCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKPj4gKwo+PiArCS8q Kgo+PiArCSAqIE1NLXNwZWNpZmljIGhhbmRsZSBmb3IgYWNjZXNzaW5nIG9iamVjdAo+PiArCSAq Lwo+PiArCWludCBoYW5kbGU7Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBMYXN0IHNlZW4gY2FyZCB2 aXJ0dWFsIGFkZHJlc3MgKG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlCj4+ICsJICog YXBlcnR1cmUpIGZvciB0aGUgb2JqZWN0LiAgVGhpcyBzaG91bGQgYmUgdXNlZCB0byBmaWxsIHJl bG9jYXRpb24KPj4gKwkgKiBlbnRyaWVzIHdoZW4gY2FsbGluZyBkcm1faW50ZWxfYm9fZW1pdF9y ZWxvYygpCj4+ICsJICovCj4+ICsJdWludDY0X3Qgb2Zmc2V0NjQ7Cj4+ICt9Owo+PiArCj4+ICt0 eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9nZXRwYXJhbSB7Cj4+ICsJX19zMzIgcGFyYW07Cj4+ICsJ LyoKPj4gKwkgKiBXQVJOSU5HOiBVc2luZyBwb2ludGVycyBpbnN0ZWFkIG9mIGZpeGVkLXNpemUg dTY0IG1lYW5zIHdlIG5lZWQgdG8gd3JpdGUKPj4gKwkgKiBjb21wYXQzMiBjb2RlLiBEb24ndCBy ZXBlYXQgdGhpcyBtaXN0YWtlLgo+PiArCSAqLwo+PiArCWludCAqdmFsdWU7Cj4+ICt9IGRybV9p OTE1X2dldHBhcmFtX3Q7Cj4+ICsKPj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIg ewo+PiArCS8qKgo+PiArCSAqIExpc3Qgb2YgZ2VtX2V4ZWNfb2JqZWN0MiBzdHJ1Y3RzCj4+ICsJ ICovCj4+ICsJX191NjQgYnVmZmVyc19wdHI7Cj4+ICsJX191MzIgYnVmZmVyX2NvdW50Owo+PiAr Cj4+ICsJLyoqIE9mZnNldCBpbiB0aGUgYmF0Y2hidWZmZXIgdG8gc3RhcnQgZXhlY3V0aW9uIGZy b20uICovCj4+ICsJX191MzIgYmF0Y2hfc3RhcnRfb2Zmc2V0Owo+PiArCS8qKiBCeXRlcyB1c2Vk IGluIGJhdGNoYnVmZmVyIGZyb20gYmF0Y2hfc3RhcnRfb2Zmc2V0ICovCj4+ICsJX191MzIgYmF0 Y2hfbGVuOwo+PiArCV9fdTMyIERSMTsKPj4gKwlfX3UzMiBEUjQ7Cj4+ICsJX191MzIgbnVtX2Ns aXByZWN0czsKPj4gKwkvKiogVGhpcyBpcyBhIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwcmVj dHMgKi8KPj4gKwlfX3U2NCBjbGlwcmVjdHNfcHRyOwo+PiArI2RlZmluZSBJOTE1X0VYRUNfUklO R19NQVNLICAgICAgICAgICAgICAoNzw8MCkKPj4gKyNkZWZpbmUgSTkxNV9FWEVDX0RFRkFVTFQg ICAgICAgICAgICAgICAgKDA8PDApCj4+ICsjZGVmaW5lIEk5MTVfRVhFQ19SRU5ERVIgICAgICAg ICAgICAgICAgICgxPDwwKQo+PiArI2RlZmluZSBJOTE1X0VYRUNfQlNEICAgICAgICAgICAgICAg ICAgICAoMjw8MCkKPj4gKyNkZWZpbmUgSTkxNV9FWEVDX0JMVCAgICAgICAgICAgICAgICAgICAg KDM8PDApCj4+ICsjZGVmaW5lIEk5MTVfRVhFQ19WRUJPWCAgICAgICAgICAgICAgICAgICg0PDww KQo+PiArCj4+ICsvKiBVc2VkIGZvciBzd2l0Y2hpbmcgdGhlIGNvbnN0YW50cyBhZGRyZXNzaW5n IG1vZGUgb24gZ2VuNCsgUkVOREVSIHJpbmcuCj4+ICsgKiBHZW42KyBvbmx5IHN1cHBvcnRzIHJl bGF0aXZlIGFkZHJlc3NpbmcgdG8gZHluYW1pYyBzdGF0ZSAoZGVmYXVsdCkgYW5kCj4+ICsgKiBh YnNvbHV0ZSBhZGRyZXNzaW5nLgo+PiArICoKPj4gKyAqIFRoZXNlIGZsYWdzIGFyZSBpZ25vcmVk IGZvciB0aGUgQlNEIGFuZCBCTFQgcmluZ3MuCj4+ICsgKi8KPj4gKyNkZWZpbmUgSTkxNV9FWEVD X0NPTlNUQU5UU19NQVNLIAkoMzw8NikKPj4gKyNkZWZpbmUgSTkxNV9FWEVDX0NPTlNUQU5UU19S RUxfR0VORVJBTCAoMDw8NikgLyogZGVmYXVsdCAqLwo+PiArI2RlZmluZSBJOTE1X0VYRUNfQ09O U1RBTlRTX0FCU09MVVRFIAkoMTw8NikKPj4gKyNkZWZpbmUgSTkxNV9FWEVDX0NPTlNUQU5UU19S RUxfU1VSRkFDRSAoMjw8NikgLyogZ2VuNC81IG9ubHkgKi8KPj4gKwlfX3U2NCBmbGFnczsKPj4g KwlfX3U2NCByc3ZkMTsgLyogbm93IHVzZWQgZm9yIGNvbnRleHQgaW5mbyAqLwo+PiArCV9fdTY0 IHJzdmQyOwo+PiArfTsKPj4gKwo+PiArc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg ewo+PiArCS8qKgo+PiArCSAqIFVzZXIncyBoYW5kbGUgZm9yIGEgYnVmZmVyIHRvIGJlIGJvdW5k IGludG8gdGhlIEdUVCBmb3IgdGhpcwo+PiArCSAqIG9wZXJhdGlvbi4KPj4gKwkgKi8KPj4gKwlf X3UzMiBoYW5kbGU7Cj4+ICsKPj4gKwkvKiogTnVtYmVyIG9mIHJlbG9jYXRpb25zIHRvIGJlIHBl cmZvcm1lZCBvbiB0aGlzIGJ1ZmZlciAqLwo+PiArCV9fdTMyIHJlbG9jYXRpb25fY291bnQ7Cj4+ ICsJLyoqCj4+ICsJICogUG9pbnRlciB0byBhcnJheSBvZiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl bG9jYXRpb25fZW50cnkgY29udGFpbmluZwo+PiArCSAqIHRoZSByZWxvY2F0aW9ucyB0byBiZSBw ZXJmb3JtZWQgaW4gdGhpcyBidWZmZXIuCj4+ICsJICovCj4+ICsJX191NjQgcmVsb2NzX3B0cjsK Pj4gKwo+PiArCS8qKiBSZXF1aXJlZCBhbGlnbm1lbnQgaW4gZ3JhcGhpY3MgYXBlcnR1cmUgKi8K Pj4gKwlfX3U2NCBhbGlnbm1lbnQ7Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBXaGVuIHRoZSBFWEVD X09CSkVDVF9QSU5ORUQgZmxhZyBpcyBzcGVjaWZpZWQgdGhpcyBpcyBwb3B1bGF0ZWQgYnkKPj4g KwkgKiB0aGUgdXNlciB3aXRoIHRoZSBHVFQgb2Zmc2V0IGF0IHdoaWNoIHRoaXMgb2JqZWN0IHdp bGwgYmUgcGlubmVkLgo+PiArCSAqIFdoZW4gdGhlIEk5MTVfRVhFQ19OT19SRUxPQyBmbGFnIGlz IHNwZWNpZmllZCB0aGlzIG11c3QgY29udGFpbiB0aGUKPj4gKwkgKiBwcmVzdW1lZF9vZmZzZXQg b2YgdGhlIG9iamVjdC4KPj4gKwkgKiBEdXJpbmcgZXhlY2J1ZmZlcjIgdGhlIGtlcm5lbCBwb3B1 bGF0ZXMgaXQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlCj4+ICsJICogY3VycmVudCBHVFQgb2Zmc2V0 IG9mIHRoZSBvYmplY3QsIGZvciBmdXR1cmUgcHJlc3VtZWRfb2Zmc2V0IHdyaXRlcy4KPj4gKwkg Ki8KPj4gKwlfX3U2NCBvZmZzZXQ7Cj4+ICsKPj4gKyNkZWZpbmUgRVhFQ19PQkpFQ1RfTkVFRFNf RkVOQ0UgKDE8PDApCj4+ICsjZGVmaW5lIEVYRUNfT0JKRUNUX05FRURTX0dUVAkoMTw8MSkKPj4g KyNkZWZpbmUgRVhFQ19PQkpFQ1RfV1JJVEUJKDE8PDIpCj4+ICsjZGVmaW5lIEVYRUNfT0JKRUNU X1NVUFBPUlRTXzQ4Ql9BRERSRVNTICgxPDwzKQo+PiArI2RlZmluZSBFWEVDX09CSkVDVF9QSU5O RUQJKDE8PDQpCj4+ICsjZGVmaW5lIF9fRVhFQ19PQkpFQ1RfVU5LTk9XTl9GTEFHUyAtKEVYRUNf T0JKRUNUX1BJTk5FRDw8MSkKPj4gKwlfX3U2NCBmbGFnczsKPj4gKwo+PiArCV9fdTY0IHJzdmQx Owo+PiArCV9fdTY0IHJzdmQyOwo+PiArfTsKPj4gKwo+PiArc3RydWN0IGRybV9pOTE1X2dlbV9y ZWxvY2F0aW9uX2VudHJ5IHsKPj4gKwkvKioKPj4gKwkgKiBIYW5kbGUgb2YgdGhlIGJ1ZmZlciBi ZWluZyBwb2ludGVkIHRvIGJ5IHRoaXMgcmVsb2NhdGlvbiBlbnRyeS4KPj4gKwkgKgo+PiArCSAq IEl0J3MgYXBwZWFsaW5nIHRvIG1ha2UgdGhpcyBiZSBhbiBpbmRleCBpbnRvIHRoZSBtbV92YWxp ZGF0ZV9lbnRyeQo+PiArCSAqIGxpc3QgdG8gcmVmZXIgdG8gdGhlIGJ1ZmZlciwgYnV0IHRoaXMg YWxsb3dzIHRoZSBkcml2ZXIgdG8gY3JlYXRlCj4+ICsJICogYSByZWxvY2F0aW9uIGxpc3QgZm9y IHN0YXRlIGJ1ZmZlcnMgYW5kIG5vdCByZS13cml0ZSBpdCBwZXIKPj4gKwkgKiBleGVjIHVzaW5n IHRoZSBidWZmZXIuCj4+ICsJICovCj4+ICsJX191MzIgdGFyZ2V0X2hhbmRsZTsKPj4gKwo+PiAr CS8qKgo+PiArCSAqIFZhbHVlIHRvIGJlIGFkZGVkIHRvIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdl dCBidWZmZXIgdG8gbWFrZSB1cAo+PiArCSAqIHRoZSByZWxvY2F0aW9uIGVudHJ5Lgo+PiArCSAq Lwo+PiArCV9fdTMyIGRlbHRhOwo+PiArCj4+ICsJLyoqIE9mZnNldCBpbiB0aGUgYnVmZmVyIHRo ZSByZWxvY2F0aW9uIGVudHJ5IHdpbGwgYmUgd3JpdHRlbiBpbnRvICovCj4+ICsJX191NjQgb2Zm c2V0Owo+PiArCj4+ICsJLyoqCj4+ICsJICogT2Zmc2V0IHZhbHVlIG9mIHRoZSB0YXJnZXQgYnVm ZmVyIHRoYXQgdGhlIHJlbG9jYXRpb24gZW50cnkgd2FzIGxhc3QKPj4gKwkgKiB3cml0dGVuIGFz Lgo+PiArCSAqCj4+ICsJICogSWYgdGhlIGJ1ZmZlciBoYXMgdGhlIHNhbWUgb2Zmc2V0IGFzIGxh c3QgdGltZSwgd2UgY2FuIHNraXAgc3luY2luZwo+PiArCSAqIGFuZCB3cml0aW5nIHRoZSByZWxv Y2F0aW9uLiAgVGhpcyB2YWx1ZSBpcyB3cml0dGVuIGJhY2sgb3V0IGJ5Cj4+ICsJICogdGhlIGV4 ZWNidWZmZXIgaW9jdGwgd2hlbiB0aGUgcmVsb2NhdGlvbiBpcyB3cml0dGVuLgo+PiArCSAqLwo+ PiArCV9fdTY0IHByZXN1bWVkX29mZnNldDsKPj4gKwo+PiArCS8qKgo+PiArCSAqIFRhcmdldCBt ZW1vcnkgZG9tYWlucyByZWFkIGJ5IHRoaXMgb3BlcmF0aW9uLgo+PiArCSAqLwo+PiArCV9fdTMy IHJlYWRfZG9tYWluczsKPj4gKwo+PiArCS8qKgo+PiArCSAqIFRhcmdldCBtZW1vcnkgZG9tYWlu cyB3cml0dGVuIGJ5IHRoaXMgb3BlcmF0aW9uLgo+PiArCSAqCj4+ICsJICogTm90ZSB0aGF0IG9u bHkgb25lIGRvbWFpbiBtYXkgYmUgd3JpdHRlbiBieSB0aGUgd2hvbGUKPj4gKwkgKiBleGVjYnVm ZmVyIG9wZXJhdGlvbiwgc28gdGhhdCB3aGVyZSB0aGVyZSBhcmUgY29uZmxpY3RzLAo+PiArCSAq IHRoZSBhcHBsaWNhdGlvbiB3aWxsIGdldCAtRUlOVkFMIGJhY2suCj4+ICsJICovCj4+ICsJX191 MzIgd3JpdGVfZG9tYWluOwo+PiArfTsKPj4gKwo+PiArc3RydWN0IGRybV9pOTE1X2dlbV9nZXRf dGlsaW5nIHsKPj4gKwkvKiogSGFuZGxlIG9mIHRoZSBidWZmZXIgdG8gZ2V0IHRpbGluZyBzdGF0 ZSBmb3IuICovCj4+ICsJX191MzIgaGFuZGxlOwo+PiArCj4+ICsJLyoqCj4+ICsJICogQ3VycmVu dCB0aWxpbmcgbW9kZSBmb3IgdGhlIG9iamVjdCAoSTkxNV9USUxJTkdfTk9ORSwgSTkxNV9USUxJ TkdfWCwKPj4gKwkgKiBJOTE1X1RJTElOR19ZKS4KPj4gKwkgKi8KPj4gKwlfX3UzMiB0aWxpbmdf bW9kZTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIFJldHVybmVkIGFkZHJlc3MgYml0IDYgc3dpenps aW5nIHJlcXVpcmVkIGZvciBDUFUgYWNjZXNzIHRocm91Z2gKPj4gKwkgKiBtbWFwIG1hcHBpbmcu Cj4+ICsJICovCj4+ICsJX191MzIgc3dpenpsZV9tb2RlOwo+PiArCj4+ICsJLyoqCj4+ICsJICog UmV0dXJuZWQgYWRkcmVzcyBiaXQgNiBzd2l6emxpbmcgcmVxdWlyZWQgZm9yIENQVSBhY2Nlc3Mg dGhyb3VnaAo+PiArCSAqIG1tYXAgbWFwcGluZyB3aGlsc3QgYm91bmQuCj4+ICsJICovCj4+ICsJ X191MzIgcGh5c19zd2l6emxlX21vZGU7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3NldF90aWxpbmcgewo+PiArCS8qKiBIYW5kbGUgb2YgdGhlIGJ1ZmZlciB0byBoYXZlIGl0 cyB0aWxpbmcgc3RhdGUgdXBkYXRlZCAqLwo+PiArCV9fdTMyIGhhbmRsZTsKPj4gKwo+PiArCS8q Kgo+PiArCSAqIFRpbGluZyBtb2RlIGZvciB0aGUgb2JqZWN0IChJOTE1X1RJTElOR19OT05FLCBJ OTE1X1RJTElOR19YLAo+PiArCSAqIEk5MTVfVElMSU5HX1kpLgo+PiArCSAqCj4+ICsJICogVGhp cyB2YWx1ZSBpcyB0byBiZSBzZXQgb24gcmVxdWVzdCwgYW5kIHdpbGwgYmUgdXBkYXRlZCBieSB0 aGUKPj4gKwkgKiBrZXJuZWwgb24gc3VjY2Vzc2Z1bCByZXR1cm4gd2l0aCB0aGUgYWN0dWFsIGNo b3NlbiB0aWxpbmcgbGF5b3V0Lgo+PiArCSAqCj4+ICsJICogVGhlIHRpbGluZyBtb2RlIG1heSBi ZSBkZW1vdGVkIHRvIEk5MTVfVElMSU5HX05PTkUgd2hlbiB0aGUgc3lzdGVtCj4+ICsJICogaGFz IGJpdCA2IHN3aXp6bGluZyB0aGF0IGNhbid0IGJlIG1hbmFnZWQgY29ycmVjdGx5IGJ5IEdFTS4K Pj4gKwkgKgo+PiArCSAqIEJ1ZmZlciBjb250ZW50cyBiZWNvbWUgdW5kZWZpbmVkIHdoZW4gY2hh bmdpbmcgdGlsaW5nX21vZGUuCj4+ICsJICovCj4+ICsJX191MzIgdGlsaW5nX21vZGU7Cj4+ICsK Pj4gKwkvKioKPj4gKwkgKiBTdHJpZGUgaW4gYnl0ZXMgZm9yIHRoZSBvYmplY3Qgd2hlbiBpbiBJ OTE1X1RJTElOR19YIG9yCj4+ICsJICogSTkxNV9USUxJTkdfWS4KPj4gKwkgKi8KPj4gKwlfX3Uz MiBzdHJpZGU7Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBSZXR1cm5lZCBhZGRyZXNzIGJpdCA2IHN3 aXp6bGluZyByZXF1aXJlZCBmb3IgQ1BVIGFjY2VzcyB0aHJvdWdoCj4+ICsJICogbW1hcCBtYXBw aW5nLgo+PiArCSAqLwo+PiArCV9fdTMyIHN3aXp6bGVfbW9kZTsKPj4gK307Cj4+ICsKPj4gK3N0 cnVjdCBkcm1faTkxNV9nZW1fcHdyaXRlIHsKPj4gKwkvKiogSGFuZGxlIGZvciB0aGUgb2JqZWN0 IGJlaW5nIHdyaXR0ZW4gdG8uICovCj4+ICsJX191MzIgaGFuZGxlOwo+PiArCV9fdTMyIHBhZDsK Pj4gKwkvKiogT2Zmc2V0IGludG8gdGhlIG9iamVjdCB0byB3cml0ZSB0byAqLwo+PiArCV9fdTY0 IG9mZnNldDsKPj4gKwkvKiogTGVuZ3RoIG9mIGRhdGEgdG8gd3JpdGUgKi8KPj4gKwlfX3U2NCBz aXplOwo+PiArCS8qKgo+PiArCSAqIFBvaW50ZXIgdG8gcmVhZCB0aGUgZGF0YSBmcm9tLgo+PiAr CSAqCj4+ICsJICogVGhpcyBpcyBhIGZpeGVkLXNpemUgdHlwZSBmb3IgMzIvNjQgY29tcGF0aWJp bGl0eS4KPj4gKwkgKi8KPj4gKwlfX3U2NCBkYXRhX3B0cjsKPj4gK307Cj4+ICsKPj4gK3N0cnVj dCBkcm1faTkxNV9nZW1fcHJlYWQgewo+PiArCS8qKiBIYW5kbGUgZm9yIHRoZSBvYmplY3QgYmVp bmcgcmVhZC4gKi8KPj4gKwlfX3UzMiBoYW5kbGU7Cj4+ICsJX191MzIgcGFkOwo+PiArCS8qKiBP ZmZzZXQgaW50byB0aGUgb2JqZWN0IHRvIHJlYWQgZnJvbSAqLwo+PiArCV9fdTY0IG9mZnNldDsK Pj4gKwkvKiogTGVuZ3RoIG9mIGRhdGEgdG8gcmVhZCAqLwo+PiArCV9fdTY0IHNpemU7Cj4+ICsJ LyoqCj4+ICsJICogUG9pbnRlciB0byB3cml0ZSB0aGUgZGF0YSBpbnRvLgo+PiArCSAqCj4+ICsJ ICogVGhpcyBpcyBhIGZpeGVkLXNpemUgdHlwZSBmb3IgMzIvNjQgY29tcGF0aWJpbGl0eS4KPj4g KwkgKi8KPj4gKwlfX3U2NCBkYXRhX3B0cjsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBkcm1faTkx NV9nZW1fc2V0X2RvbWFpbiB7Cj4+ICsJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCAqLwo+PiAr CV9fdTMyIGhhbmRsZTsKPj4gKwo+PiArCS8qKiBOZXcgcmVhZCBkb21haW5zICovCj4+ICsJX191 MzIgcmVhZF9kb21haW5zOwo+PiArCj4+ICsJLyoqIE5ldyB3cml0ZSBkb21haW4gKi8KPj4gKwlf X3UzMiB3cml0ZV9kb21haW47Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dh aXQgewo+PiArCS8qKiBIYW5kbGUgb2YgQk8gd2Ugc2hhbGwgd2FpdCBvbiAqLwo+PiArCV9fdTMy IGJvX2hhbmRsZTsKPj4gKwlfX3UzMiBmbGFnczsKPj4gKwkvKiogTnVtYmVyIG9mIG5hbm9zZWNv bmRzIHRvIHdhaXQsIFJldHVybnMgdGltZSByZW1haW5pbmcuICovCj4+ICsJX19zNjQgdGltZW91 dF9uczsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fYnVzeSB7Cj4+ICsJLyoq IEhhbmRsZSBvZiB0aGUgYnVmZmVyIHRvIGNoZWNrIGZvciBidXN5ICovCj4+ICsJX191MzIgaGFu ZGxlOwo+PiArCj4+ICsJLyoqIFJldHVybiBidXN5IHN0YXR1cyAoMSBpZiBidXN5LCAwIGlmIGlk bGUpLgo+PiArCSAqIFRoZSBoaWdoIHdvcmQgaXMgdXNlZCB0byBpbmRpY2F0ZSBvbiB3aGljaCBy aW5ncyB0aGUgb2JqZWN0Cj4+ICsJICogY3VycmVudGx5IHJlc2lkZXM6Cj4+ICsJICogIDE2OjMx IC0gYnVzeSAociBvciByL3cpIHJpbmdzICgxNiByZW5kZXIsIDE3IGJzZCwgMTggYmx0LCBldGMp Cj4+ICsJICovCj4+ICsJX191MzIgYnVzeTsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBkcm1faTkx NV9nZW1fZ2V0X2FwZXJ0dXJlIHsKPj4gKwkvKiogVG90YWwgc2l6ZSBvZiB0aGUgYXBlcnR1cmUg dXNlZCBieSBpOTE1X2dlbV9leGVjYnVmZmVyLCBpbiBieXRlcyAqLwo+PiArCV9fdTY0IGFwZXJf c2l6ZTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIEF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgYXBlcnR1 cmUgdXNlZCBieSBpOTE1X2dlbV9leGVjYnVmZmVyLCBpbgo+PiArCSAqIGJ5dGVzCj4+ICsJICov Cj4+ICsJX191NjQgYXBlcl9hdmFpbGFibGVfc2l6ZTsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBk cm1faTkxNV9nZW1fY3JlYXRlIHsKPj4gKwkvKioKPj4gKwkgKiBSZXF1ZXN0ZWQgc2l6ZSBmb3Ig dGhlIG9iamVjdC4KPj4gKwkgKgo+PiArCSAqIFRoZSAocGFnZS1hbGlnbmVkKSBhbGxvY2F0ZWQg c2l6ZSBmb3IgdGhlIG9iamVjdCB3aWxsIGJlIHJldHVybmVkLgo+PiArCSAqLwo+PiArCV9fdTY0 IHNpemU7Cj4+ICsJLyoqCj4+ICsJICogUmV0dXJuZWQgaGFuZGxlIGZvciB0aGUgb2JqZWN0Lgo+ PiArCSAqCj4+ICsJICogT2JqZWN0IGhhbmRsZXMgYXJlIG5vbnplcm8uCj4+ICsJICovCj4+ICsJ X191MzIgaGFuZGxlOwo+PiArCV9fdTMyIHBhZDsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBkcm1f aTkxNV9nZW1fbW1hcF9ndHQgewo+PiArCS8qKiBIYW5kbGUgZm9yIHRoZSBvYmplY3QgYmVpbmcg bWFwcGVkLiAqLwo+PiArCV9fdTMyIGhhbmRsZTsKPj4gKwlfX3UzMiBwYWQ7Cj4+ICsJLyoqCj4+ ICsJICogRmFrZSBvZmZzZXQgdG8gdXNlIGZvciBzdWJzZXF1ZW50IG1tYXAgY2FsbAo+PiArCSAq Cj4+ICsJICogVGhpcyBpcyBhIGZpeGVkLXNpemUgdHlwZSBmb3IgMzIvNjQgY29tcGF0aWJpbGl0 eS4KPj4gKwkgKi8KPj4gKwlfX3U2NCBvZmZzZXQ7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3N3X2ZpbmlzaCB7Cj4+ICsJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCAqLwo+ PiArCV9fdTMyIGhhbmRsZTsKPj4gK307Cj4+ICsKPj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fbW1h cCB7Cj4+ICsJLyoqIEhhbmRsZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtYXBwZWQuICovCj4+ICsJ X191MzIgaGFuZGxlOwo+PiArCV9fdTMyIHBhZDsKPj4gKwkvKiogT2Zmc2V0IGluIHRoZSBvYmpl Y3QgdG8gbWFwLiAqLwo+PiArCV9fdTY0IG9mZnNldDsKPj4gKwkvKioKPj4gKwkgKiBMZW5ndGgg b2YgZGF0YSB0byBtYXAuCj4+ICsJICoKPj4gKwkgKiBUaGUgdmFsdWUgd2lsbCBiZSBwYWdlLWFs aWduZWQuCj4+ICsJICovCj4+ICsJX191NjQgc2l6ZTsKPj4gKwkvKioKPj4gKwkgKiBSZXR1cm5l ZCBwb2ludGVyIHRoZSBkYXRhIHdhcyBtYXBwZWQgYXQuCj4+ICsJICoKPj4gKwkgKiBUaGlzIGlz IGEgZml4ZWQtc2l6ZSB0eXBlIGZvciAzMi82NCBjb21wYXRpYmlsaXR5Lgo+PiArCSAqLwo+PiAr CV9fdTY0IGFkZHJfcHRyOwo+PiArCj4+ICsJLyoqCj4+ICsJICogRmxhZ3MgZm9yIGV4dGVuZGVk IGJlaGF2aW91ci4KPj4gKwkgKgo+PiArCSAqIEFkZGVkIGluIHZlcnNpb24gMi4KPj4gKwkgKi8K Pj4gKwlfX3U2NCBmbGFnczsKPj4gKyNkZWZpbmUgSTkxNV9NTUFQX1dDIDB4MQo+PiArfTsKPj4g Kwo+PiArc3RydWN0IGRybV9pOTE1X2dlbV9tYWR2aXNlIHsKPj4gKwkvKiogSGFuZGxlIG9mIHRo ZSBidWZmZXIgdG8gY2hhbmdlIHRoZSBiYWNraW5nIHN0b3JlIGFkdmljZSAqLwo+PiArCV9fdTMy IGhhbmRsZTsKPj4gKwo+PiArCS8qIEFkdmljZTogZWl0aGVyIHRoZSBidWZmZXIgd2lsbCBiZSBu ZWVkZWQgYWdhaW4gaW4gdGhlIG5lYXIgZnV0dXJlLAo+PiArCSAqICAgICAgICAgb3Igd29udCBi ZSBhbmQgY291bGQgYmUgZGlzY2FyZGVkIHVuZGVyIG1lbW9yeSBwcmVzc3VyZS4KPj4gKwkgKi8K Pj4gKwlfX3UzMiBtYWR2Owo+PiArCj4+ICsJLyoqIFdoZXRoZXIgdGhlIGJhY2tpbmcgc3RvcmUg c3RpbGwgZXhpc3RzLiAqLwo+PiArCV9fdTMyIHJldGFpbmVkOwo+PiArfTsKPj4gKwo+PiArc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZSB7Cj4+ICsJLyogIG91dHB1dDogaWQgb2Yg bmV3IGNvbnRleHQqLwo+PiArCV9fdTMyIGN0eF9pZDsKPj4gKwlfX3UzMiBwYWQ7Cj4+ICt9Owo+ PiArCj4+ICtzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSB7Cj4+ICsJX191MzIg Y3R4X2lkOwo+PiArCV9fdTMyIHBhZDsKPj4gK307Cj4+ICsKPj4gK3R5cGVkZWYgc3RydWN0IF9k cm1faW50ZWxfYXViX2Fubm90YXRpb24gewo+PiArCXVpbnQzMl90IHR5cGU7Cj4+ICsJdWludDMy X3Qgc3VidHlwZTsKPj4gKwl1aW50MzJfdCBlbmRpbmdfb2Zmc2V0Owo+PiArfSBkcm1faW50ZWxf YXViX2Fubm90YXRpb247Cj4+ICsKPj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fcGluIHsKPj4gKwkv KiogSGFuZGxlIG9mIHRoZSBidWZmZXIgdG8gYmUgcGlubmVkLiAqLwo+PiArCV9fdTMyIGhhbmRs ZTsKPj4gKwlfX3UzMiBwYWQ7Cj4+ICsKPj4gKwkvKiogYWxpZ25tZW50IHJlcXVpcmVkIHdpdGhp biB0aGUgYXBlcnR1cmUgKi8KPj4gKwlfX3U2NCBhbGlnbm1lbnQ7Cj4+ICsKPj4gKwkvKiogUmV0 dXJuZWQgR1RUIG9mZnNldCBvZiB0aGUgYnVmZmVyLiAqLwo+PiArCV9fdTY0IG9mZnNldDsKPj4g K307Cj4+ICsKPj4gKyNkZWZpbmUgSTkxNV9TRVRfQ09MT1JLRVlfTk9ORQkJKDE8PDApIC8qIGRp c2FibGUgY29sb3Iga2V5IG1hdGNoaW5nICovCj4+ICsjZGVmaW5lIEk5MTVfU0VUX0NPTE9SS0VZ X0RFU1RJTkFUSU9OCSgxPDwxKQo+PiArI2RlZmluZSBJOTE1X1NFVF9DT0xPUktFWV9TT1VSQ0UJ KDE8PDIpCj4+ICtzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSB7Cj4+ICsJX191MzIg cGxhbmVfaWQ7Cj4+ICsJX191MzIgbWluX3ZhbHVlOwo+PiArCV9fdTMyIGNoYW5uZWxfbWFzazsK Pj4gKwlfX3UzMiBtYXhfdmFsdWU7Cj4+ICsJX191MzIgZmxhZ3M7Cj4+ICt9Owo+PiArCj4+ICtz dHJ1Y3QgZHJtX2k5MTVfcmVnX3JlYWQgewo+PiArCS8qCj4+ICsJICogUmVnaXN0ZXIgb2Zmc2V0 Lgo+PiArCSAqIEZvciA2NGJpdCB3aWRlIHJlZ2lzdGVycyB3aGVyZSB0aGUgdXBwZXIgMzJiaXRz IGRvbid0IGltbWVkaWF0ZWx5Cj4+ICsJICogZm9sbG93IHRoZSBsb3dlciAzMmJpdHMsIHRoZSBv ZmZzZXQgb2YgdGhlIGxvd2VyIDMyYml0cyBtdXN0Cj4+ICsJICogYmUgc3BlY2lmaWVkCj4+ICsJ ICovCj4+ICsJX191NjQgb2Zmc2V0Owo+PiArCV9fdTY0IHZhbDsgLyogUmV0dXJuIHZhbHVlICov Cj4+ICt9Owo+PiArCj4+ICtkcm1faW50ZWxfYnVmbWdyICpkcm1faW50ZWxfYnVmbWdyX2dlbV9p bml0KGludCBmZCwgaW50IGJhdGNoX3NpemUpOwo+PiArdm9pZCBkcm1faW50ZWxfYm9fdW5yZWZl cmVuY2UoZHJtX2ludGVsX2JvICpibyk7Cj4+ICtkcm1faW50ZWxfYm8gKmRybV9pbnRlbF9ib19h bGxvYyhkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGNvbnN0IGNoYXIgKm5hbWUsCj4+ICsJCQkJ IHVuc2lnbmVkIGxvbmcgc2l6ZSwgdW5zaWduZWQgaW50IGFsaWdubWVudCk7Cj4+ICtpbnQgZHJt X2ludGVsX2JvX3N1YmRhdGEoZHJtX2ludGVsX2JvICpibywgdW5zaWduZWQgbG9uZyBvZmZzZXQs Cj4+ICsJCQkgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCB2b2lkICpkYXRhKTsKPj4gK2ludCBk cm1faW50ZWxfZ2VtX2JvX2NvbnRleHRfZXhlYyhkcm1faW50ZWxfYm8gKmJvLCBkcm1faW50ZWxf Y29udGV4dCAqY3R4LAo+PiArCQkJCSAgaW50IHVzZWQsIHVuc2lnbmVkIGludCBmbGFncyk7Cj4+ ICtpbnQgZHJtX2ludGVsX2JvX2VtaXRfcmVsb2MoZHJtX2ludGVsX2JvICpibywgdWludDMyX3Qg b2Zmc2V0LAo+PiArCQkJCWRybV9pbnRlbF9ibyAqdGFyZ2V0X2JvLCB1aW50MzJfdCB0YXJnZXRf b2Zmc2V0LAo+PiArCQkJCXVpbnQzMl90IHJlYWRfZG9tYWlucywgdWludDMyX3Qgd3JpdGVfZG9t YWluKTsKPj4gK2ludCBkcm1faW50ZWxfYm9fZW1pdF9yZWxvY19mZW5jZShkcm1faW50ZWxfYm8g KmJvLCB1aW50MzJfdCBvZmZzZXQsCj4+ICsJCQkJICBkcm1faW50ZWxfYm8gKnRhcmdldF9ibywK Pj4gKwkJCQkgIHVpbnQzMl90IHRhcmdldF9vZmZzZXQsCj4+ICsJCQkJICB1aW50MzJfdCByZWFk X2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFpbik7Cj4+ICtpbnQgZHJtX2ludGVsX2JvX2dl dF90aWxpbmcoZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgKiB0aWxpbmdfbW9kZSwKPj4gKwkJ CQl1aW50MzJfdCAqIHN3aXp6bGVfbW9kZSk7Cj4+ICtpbnQgZHJtX2ludGVsX2JvX21yYl9leGVj KGRybV9pbnRlbF9ibyAqYm8sIGludCB1c2VkLAo+PiArCQkJc3RydWN0IGRybV9jbGlwX3JlY3Qg KmNsaXByZWN0cywgaW50IG51bV9jbGlwcmVjdHMsIGludCBEUjQsCj4+ICsJCQl1bnNpZ25lZCBp bnQgZmxhZ3MpOwo+PiArdm9pZCBkcm1faW50ZWxfYnVmbWdyX2dlbV9zZXRfYXViX2Fubm90YXRp b25zKGRybV9pbnRlbF9ibyAqYm8sCj4+ICsJCQkJCSBkcm1faW50ZWxfYXViX2Fubm90YXRpb24g KmFubm90YXRpb25zLAo+PiArCQkJCQkgdW5zaWduZWQgY291bnQpOwo+PiArdm9pZCBkcm1faW50 ZWxfYnVmbWdyX2dlbV9lbmFibGVfcmV1c2UoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyKTsKPj4g K2ludCBkcm1faW50ZWxfYm9fZXhlYyhkcm1faW50ZWxfYm8gKmJvLCBpbnQgdXNlZCwKPj4gKwkJ CSAgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXByZWN0cywgaW50IG51bV9jbGlwcmVjdHMsIGlu dCBEUjQpOwo+PiArdm9pZCBkcm1faW50ZWxfYnVmbWdyX2Rlc3Ryb3koZHJtX2ludGVsX2J1Zm1n ciAqYnVmbWdyKTsKPj4gK3ZvaWQgZHJtX2ludGVsX2JvX3dhaXRfcmVuZGVyaW5nKGRybV9pbnRl bF9ibyAqYm8pOwo+PiAraW50IGRybV9pbnRlbF9ib19nZXRfc3ViZGF0YShkcm1faW50ZWxfYm8g KmJvLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKPj4gKwkJCQkgdW5zaWduZWQgbG9uZyBzaXplLCB2 b2lkICpkYXRhKTsKPj4gK2ludCBkcm1faW50ZWxfYm9fbWFwKGRybV9pbnRlbF9ibyAqYm8sIGlu dCB3cml0ZV9lbmFibGUpOwo+PiAraW50IGRybV9pbnRlbF9nZW1fYm9fbWFwX2d0dChkcm1faW50 ZWxfYm8gKmJvKTsKPj4gK3ZvaWQgZHJtX2ludGVsX2J1Zm1ncl9nZW1fZW5hYmxlX2ZlbmNlZF9y ZWxvY3MoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyKTsKPj4gK2ludCBkcm1faW50ZWxfYm9fdW5t YXAoZHJtX2ludGVsX2JvICpibyk7Cj4+ICtpbnQgZHJtX2ludGVsX2JvX2ZsaW5rKGRybV9pbnRl bF9ibyAqYm8sIHVpbnQzMl90ICogbmFtZSk7Cj4+ICtkcm1faW50ZWxfYm8gKmRybV9pbnRlbF9i b19nZW1fY3JlYXRlX2Zyb21fbmFtZShkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCj4+ICsJCQkJ CQljb25zdCBjaGFyICpuYW1lLAo+PiArCQkJCQkJdW5zaWduZWQgaW50IGhhbmRsZSk7Cj4+ICtp bnQgZHJtX2ludGVsX2JvX2dlbV9leHBvcnRfdG9fcHJpbWUoZHJtX2ludGVsX2JvICpibywgaW50 ICpwcmltZV9mZCk7Cj4+ICtkcm1faW50ZWxfYm8gKmRybV9pbnRlbF9ib19nZW1fY3JlYXRlX2Zy b21fcHJpbWUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAo+PiArCQkJCQkJaW50IHByaW1lX2Zk LCBpbnQgc2l6ZSk7Cj4+ICt2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2VtX3NldF92bWFfY2FjaGVf c2l6ZShkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCj4+ICsJCQkJCQkgaW50IGxpbWl0KTsKPj4g K2ludCBkcm1faW50ZWxfZ2VtX2JvX3VubWFwX2d0dChkcm1faW50ZWxfYm8gKmJvKTsKPj4gK2Ry bV9pbnRlbF9jb250ZXh0ICpkcm1faW50ZWxfZ2VtX2NvbnRleHRfY3JlYXRlKGRybV9pbnRlbF9i dWZtZ3IgKmJ1Zm1ncik7Cj4+ICt2b2lkIGRybV9pbnRlbF9nZW1fY29udGV4dF9kZXN0cm95KGRy bV9pbnRlbF9jb250ZXh0ICpjdHgpOwo+PiArZHJtX2ludGVsX2JvICpkcm1faW50ZWxfYm9fYWxs b2NfdGlsZWQoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAo+PiArCQkJCQkgICBjb25zdCBjaGFy ICpuYW1lLAo+PiArCQkJCQkgICBpbnQgeCwgaW50IHksIGludCBjcHAsCj4+ICsJCQkJCSAgIHVp bnQzMl90ICp0aWxpbmdfbW9kZSwKPj4gKwkJCQkJICAgdW5zaWduZWQgbG9uZyAqcGl0Y2gsCj4+ ICsJCQkJCSAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOwo+PiArdm9pZCBkcm1faW50ZWxfYnVmbWdy X2dlbV9zZXRfYXViX2ZpbGVuYW1lKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKPj4gKwkJCQkJ ICBjb25zdCBjaGFyICpmaWxlbmFtZSk7Cj4+ICt2b2lkIGRybV9pbnRlbF9idWZtZ3JfZ2VtX3Nl dF9hdWJfZHVtcChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsIGludCBlbmFibGUpOwo+PiArdm9p ZCBkcm1faW50ZWxfZ2VtX2JvX2F1Yl9kdW1wX2JtcChkcm1faW50ZWxfYm8gKmJvLAo+PiArCQkJ CSAgIGludCB4MSwgaW50IHkxLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCj4+ICsJCQkJICAgZW51 bSBhdWJfZHVtcF9ibXBfZm9ybWF0IGZvcm1hdCwKPj4gKwkJCQkgICBpbnQgcGl0Y2gsIGludCBv ZmZzZXQpOwo+PiArdm9pZCBkcm1faW50ZWxfZ2VtX2JvX3N0YXJ0X2d0dF9hY2Nlc3MoZHJtX2lu dGVsX2JvICpibywgaW50IHdyaXRlX2VuYWJsZSk7Cj4+ICtpbnQgZHJtX2ludGVsX2JvX3NldF90 aWxpbmcoZHJtX2ludGVsX2JvICpibywgdWludDMyX3QgKiB0aWxpbmdfbW9kZSwKPj4gKwkJCQl1 aW50MzJfdCBzdHJpZGUpOwo+PiAraW50IGRybV9pbnRlbF9ib19kaXNhYmxlX3JldXNlKGRybV9p bnRlbF9ibyAqYm8pOwo+PiArdm9pZCBkcm1faW50ZWxfYm9fcmVmZXJlbmNlKGRybV9pbnRlbF9i byAqYm8pOwo+PiAraW50IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2dldF9kZXZpZChkcm1faW50ZWxf YnVmbWdyICpidWZtZ3IpOwo+PiArZHJtX2ludGVsX2JvICpkcm1faW50ZWxfYm9fYWxsb2NfZm9y X3JlbmRlcihkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsCj4+ICsJCQkJCQljb25zdCBjaGFyICpu YW1lLAo+PiArCQkJCQkJdW5zaWduZWQgbG9uZyBzaXplLAo+PiArCQkJCQkJdW5zaWduZWQgaW50 IGFsaWdubWVudCk7Cj4+ICtpbnQgZHJtX2ludGVsX2JvX3JlZmVyZW5jZXMoZHJtX2ludGVsX2Jv ICpibywgZHJtX2ludGVsX2JvICp0YXJnZXRfYm8pOwo+PiAraW50IGRybV9pbnRlbF9nZW1fYm9f d2FpdChkcm1faW50ZWxfYm8gKmJvLCBpbnQ2NF90IHRpbWVvdXRfbnMpOwo+PiArCj4+ICsjZW5k aWYKPj4gKwo+PiArI2VuZGlmLy9JTlRFTF9EUk1fU1RVQlNfSAo+PiAtLQo+PiAyLjcuNAo+Pgo+ Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=