From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [MIPI SEQ PARSING v2 PATCH 03/11] drm/i915: Parsing VBT if size of VBT exceeds 6KB Date: Tue, 22 Sep 2015 10:24:51 +0300 Message-ID: <87oagu9arg.fsf@intel.com> References: <1441841070-11532-1-git-send-email-m.deepak@intel.com> <1441841070-11532-4-git-send-email-m.deepak@intel.com> <87h9mttfe8.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id AE11F6E163 for ; Tue, 22 Sep 2015 00:24:57 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Deepak, M" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMiBTZXAgMjAxNSwgIkRlZXBhaywgTSIgPG0uZGVlcGFrQGludGVsLmNvbT4gd3Jv dGU6Cj4+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj5Gcm9tOiBKYW5pIE5pa3VsYSBbbWFp bHRvOmphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbV0KPj5TZW50OiBUaHVyc2RheSwgU2VwdGVt YmVyIDE3LCAyMDE1IDU6NDEgUE0KPj5UbzogRGVlcGFrLCBNOyBpbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4+Q2M6IERlZXBhaywgTQo+PlN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBb TUlQSSBTRVEgUEFSU0lORyB2MiBQQVRDSCAwMy8xMV0gZHJtL2k5MTU6IFBhcnNpbmcKPj5WQlQg aWYgc2l6ZSBvZiBWQlQgZXhjZWVkcyA2S0IKPj4KPj5PbiBUaHUsIDEwIFNlcCAyMDE1LCBEZWVw YWsgTSA8bS5kZWVwYWtAaW50ZWwuY29tPiB3cm90ZToKPj4+IEN1cnJlbnRseSB0aGUgaW9tYXAg Zm9yIFZCVCB3b3JrcyBvbmx5IGlmIHRoZSBzaXplIG9mIHRoZSBWQlQgaXMgbGVzcwo+Pj4gdGhh biA2S0IsIGJ1dCBpZiB0aGUgc2l6ZSBvZiB0aGUgVkJUIGV4Y2VlZHMgNktCIHRoYW4gdGhlIHBo eXNpY2FsCj4+PiBhZGRyZXNzIGFuZCB0aGUgc2l6ZSBvZiB0aGUgVkJUIHRvIGJlIGlvbWFwcGVk IGlzIHNwZWNpZmllZCBpbiB0aGUKPj4+IG1haWxib3gzIGFuZCBpcyBpb21hcHBlZCBhY2NvcmRp bmdseS4KPj4+Cj4+PiB2MjogLSBNb3ZpbmcgdGhlIHZhbGlkYXRlX3ZidCB0byBvcHJlZ2lvbiBm aWxlIChKYW5pKQo+Pj4gICAgIC0gRml4IHRoZSBpOTE1X29wcmVnaW9uKCkgaW4gZGVidWdmcyAo SmFuaSkKPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBEZWVwYWsgTSA8bS5kZWVwYWtAaW50ZWwuY29t Pgo+Pj4gLS0tCj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICB8ICAg MjQgKystCj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICB8ICAgIDQg Kwo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYyAgICAgfCAgIDQ5ICstLS0t LQo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMgfCAgMjc5Cj4+PiAr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX29wcmVnaW9uLmggfCAgMjMwCj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysK Pj4+ICA1IGZpbGVzIGNoYW5nZWQsIDMyOSBpbnNlcnRpb25zKCspLCAyNTcgZGVsZXRpb25zKC0p ICBjcmVhdGUgbW9kZQo+Pj4gMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVn aW9uLmgKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4+IGluZGV4 IDQxNjI5ZmEuLjU1MzRhYTIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPj4+IEBAIC0yNiw2ICsyNiw4IEBACj4+PiAgICoKPj4+ICAgKi8KPj4+Cj4+PiArI2luY2x1 ZGUgPGxpbnV4L2FjcGkuaD4KPj4+ICsjaW5jbHVkZSA8YWNwaS92aWRlby5oPgo+Pj4gICNpbmNs dWRlIDxsaW51eC9zZXFfZmlsZS5oPgo+Pj4gICNpbmNsdWRlIDxsaW51eC9jaXJjX2J1Zi5oPgo+ Pj4gICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgo+Pj4gQEAgLTM5LDYgKzQxLDcgQEAKPj4+ICAj aW5jbHVkZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgo+Pj4gICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0u aD4KPj4+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPj4+ICsjaW5jbHVkZSAiaW50ZWxfb3ByZWdp b24uaCIKPj4+Cj4+PiAgZW51bSB7Cj4+PiAgCUFDVElWRV9MSVNULAo+Pj4gQEAgLTE4MzIsNyAr MTgzNSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9vcHJlZ2lvbihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQKPj4qdW51c2VkKQo+Pj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbm9kZS0+bWlub3It PmRldjsKPj4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsKPj4+ICAJc3RydWN0IGludGVsX29wcmVnaW9uICpvcHJlZ2lvbiA9ICZkZXZfcHJp di0+b3ByZWdpb247Cj4+PiAtCXZvaWQgKmRhdGEgPSBrbWFsbG9jKE9QUkVHSU9OX1NJWkUsIEdG UF9LRVJORUwpOwo+Pj4gKwl2b2lkICpkYXRhID0ga21hbGxvYyhPUFJFR0lPTl9WQlRfT0ZGU0VU LCBHRlBfS0VSTkVMKTsKPj4+ICAJaW50IHJldDsKPj4+Cj4+PiAgCWlmIChkYXRhID09IE5VTEwp Cj4+PiBAQCAtMTg0MywxMiArMTg0NiwyNSBAQCBzdGF0aWMgaW50IGk5MTVfb3ByZWdpb24oc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkCj4+KnVudXNlZCkKPj4+ICAJCWdvdG8gb3V0Owo+Pj4KPj4+ ICAJaWYgKG9wcmVnaW9uLT5oZWFkZXIpIHsKPj4+IC0JCW1lbWNweV9mcm9taW8oZGF0YSwgb3By ZWdpb24tPmhlYWRlciwgT1BSRUdJT05fU0laRSk7Cj4+PiAtCQlzZXFfd3JpdGUobSwgZGF0YSwg T1BSRUdJT05fU0laRSk7Cj4+PiArCQltZW1jcHlfZnJvbWlvKGRhdGEsIG9wcmVnaW9uLT5oZWFk ZXIsCj4+T1BSRUdJT05fVkJUX09GRlNFVCk7Cj4+PiArCQlzZXFfd3JpdGUobSwgZGF0YSwgT1BS RUdJT05fVkJUX09GRlNFVCk7Cj4+PiArCQlrZnJlZShkYXRhKTsKPj4+ICsJCWlmIChvcHJlZ2lv bi0+YXNsZS0+cnZkYSkgewo+Pj4gKwkJCWRhdGEgPSBrbWFsbG9jKG9wcmVnaW9uLT5hc2xlLT5y dmRzLCBHRlBfS0VSTkVMKTsKPj4+ICsJCQltZW1jcHlfZnJvbWlvKGRhdGEsCj4+PiArCQkJCShj b25zdCB2b2lkIF9faW9tZW0gKikgb3ByZWdpb24tPmFzbGUtPnJ2ZGEsCj4+PiArCQkJCW9wcmVn aW9uLT5hc2xlLT5ydmRzKTsKPj4+ICsJCQlzZXFfd3JpdGUobSwgZGF0YSwgb3ByZWdpb24tPmFz bGUtPnJ2ZHMpOwo+Pj4gKwkJfSBlbHNlIHsKPj4+ICsJCQlkYXRhID0ga21hbGxvYyhPUFJFR0lP Tl9TSVpFIC0KPj5PUFJFR0lPTl9WQlRfT0ZGU0VULAo+Pj4gKwkJCQkJR0ZQX0tFUk5FTCk7Cj4+ PiArCQkJbWVtY3B5X2Zyb21pbyhkYXRhLCBvcHJlZ2lvbi0+dmJ0LAo+Pj4gKwkJCQkJT1BSRUdJ T05fU0laRSAtCj4+T1BSRUdJT05fVkJUX09GRlNFVCk7Cj4+PiArCQkJc2VxX3dyaXRlKG0sIGRh dGEsIE9QUkVHSU9OX1NJWkUgLQo+Pk9QUkVHSU9OX1ZCVF9PRkZTRVQpOwo+Pj4gKwkJfQo+Pgo+ PklmIHJ2ZGEgIT0gMCwgdGhpcyBkZWJ1Z2ZzIGZpbGUgbm8gbG9uZ2VyIHJlcHJlc2VudHMgdGhl IG9wcmVnaW9uIGNvbnRlbnRzLgo+Pk1haWxib3hlcyAjNCBhbmQgIzUgYXJlIGRyb3BwZWQgZnJv bSB0aGUgb3V0cHV0LiBCVFcsIHdoYXQgaXMgbWFpbGJveCAjNAo+PmV4cGVjdGVkIHRvIGNvbnRh aW4gd2hlbiBydmRhICE9IDA/IChJIHN0aWxsIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSBsYXRl c3QKPj5vcHJlZ2lvbiBzcGVjIHZlcnNpb24sIHNvIGNhbid0IGNoZWNrIHdoYXQgaXQgYWN0dWFs bHkgc2F5cy4pCj4+Cj4+SSBhbSBiZWdpbm5pbmcgdG8gdGhpbmsgd2Ugc2hvdWxkIGxlYXZlICJp OTE1X29wcmVnaW9uIiBkZWJ1Z2ZzIGZpbGUgaW50YWN0LAo+PmFuZCBhZGQgYSBuZXcgImk5MTVf dmJ0IiBmaWxlIHRoYXQgY29udGFpbnMgZWl0aGVyIG1haWxib3ggIzQgb3IgdGhlIGRhdGEgaW4K Pj5ydmRhLiBUaGlzIG1pZ2h0IGJlIGEgY2xlYW5lciBhcHByb2FjaC4KPj4KPj5TZWUgbXkgY29t bWVudHMgYmVsb3csIGFuZCB5b3UnbGwgc2VlIGhvdyB0aGlzIHdvdWxkIGJlIGZlYXNpYmxlLgo+ Pgo+IFtEZWVwYWsgTV0gSSB3YXMgdGhpbmtpbmcgb2Ygc3BsaXR0aW5nIHRoaXMgZnVuY3Rpb24g aW50byA1IGZvciBkdW1waW5nIGVhY2ggbWFpbGJveC4gV2hpY2ggCj4gSSBmZWx0IHdpbGwgYmUg Y2xlYW5lci4KClBsZWFzZSBoYXZlIGk5MTVfb3ByZWdpb24gYW5kIGk5MTVfdmJ0IGFzIEkgZXhw bGFpbmVkLgoKPj4+ICAJfQo+Pj4KPj4+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Cj4+PiAtCj4+PiAgb3V0Ogo+Pj4gIAlrZnJlZShkYXRhKTsKPj4+ICAJcmV0dXJuIDA7Cj4+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGluZGV4IDEyODcwMDcuLjUwN2Q1N2EgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+PiBAQCAtMTc4MCw2ICsxNzgwLDcgQEAgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgewo+Pj4gIAlzdHJ1Y3QgaTkxNV9ob3RwbHVnIGhvdHBsdWc7 Cj4+PiAgCXN0cnVjdCBpOTE1X2ZiYyBmYmM7Cj4+PiAgCXN0cnVjdCBpOTE1X2RycnMgZHJyczsK Pj4+ICsJY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmJkYl9zdGFydDsKPj4KPj5XaGF0IGlzIHdy b25nIHdpdGggdXNpbmcgZGV2X3ByaXYtPm9wcmVnaW9uLnZidCBmb3IgdGhpcz8KPj4KPj4+ICAJ c3RydWN0IGludGVsX29wcmVnaW9uIG9wcmVnaW9uOwo+Pj4gIAlzdHJ1Y3QgaW50ZWxfdmJ0X2Rh dGEgdmJ0Owo+Pj4KPj4+IEBAIC0zMzA2LDYgKzMzMDcsOSBAQCBpbnRlbF9vcHJlZ2lvbl9ub3Rp ZnlfYWRhcHRlcihzdHJ1Y3QgZHJtX2RldmljZQo+Pj4gKmRldiwgcGNpX3Bvd2VyX3Qgc3RhdGUp ICB9ICAjZW5kaWYKPj4+Cj4+PiArY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKnZhbGlkYXRlX3Zi dChjb25zdCB2b2lkIF9faW9tZW0gKl92YnQsCj4+PiArCQkJc2l6ZV90IHNpemUsIGNvbnN0IGNo YXIgKnNvdXJjZSk7Cj4+PiArCj4+PiAgLyogaW50ZWxfYWNwaS5jICovCj4+PiAgI2lmZGVmIENP TkZJR19BQ1BJCj4+PiAgZXh0ZXJuIHZvaWQgaW50ZWxfcmVnaXN0ZXJfZHNtX2hhbmRsZXIodm9p ZCk7IGRpZmYgLS1naXQKPj4+IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jCj4+ PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+Pj4gaW5kZXggMGJmMDk0Mi4u MTkzMmE4NiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3Mu Ywo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jCj4+PiBAQCAtMTIy Nyw0OSArMTIyNyw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZAo+PmludGVs X25vX29wcmVnaW9uX3ZidFtdID0gewo+Pj4gIAl7IH0KPj4+ICB9Owo+Pj4KPj4+IC1zdGF0aWMg Y29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKnZhbGlkYXRlX3ZidChjb25zdCB2b2lkIF9faW9tZW0g Kl9iYXNlLAo+Pj4gLQkJCQkJICAgICBzaXplX3Qgc2l6ZSwKPj4+IC0JCQkJCSAgICAgY29uc3Qg dm9pZCBfX2lvbWVtICpfdmJ0LAo+Pj4gLQkJCQkJICAgICBjb25zdCBjaGFyICpzb3VyY2UpCj4+ PiAtewo+Pj4gLQkvKgo+Pj4gLQkgKiBUaGlzIGlzIHRoZSBvbmUgcGxhY2Ugd2hlcmUgd2UgZXhw bGljaXRseSBkaXNjYXJkIHRoZSBhZGRyZXNzIHNwYWNlCj4+PiAtCSAqIChfX2lvbWVtKSBvZiB0 aGUgQklPUy9WQlQuIChBbmQgdGhpcyB3aWxsIGNhdXNlIGEgc3BhcnNlCj4+Y29tcGxhaW50LikK Pj4+IC0JICogRnJvbSBub3cgb24gZXZlcnl0aGluZyBpcyBiYXNlZCBvbiAnYmFzZScsIGFuZCB0 cmVhdGVkIGFzIHJlZ3VsYXIKPj4+IC0JICogbWVtb3J5Lgo+Pj4gLQkgKi8KPj4+IC0JY29uc3Qg dm9pZCAqYmFzZSA9IChjb25zdCB2b2lkICopIF9iYXNlOwo+Pj4gLQlzaXplX3Qgb2Zmc2V0ID0g X3ZidCAtIF9iYXNlOwo+Pj4gLQljb25zdCBzdHJ1Y3QgdmJ0X2hlYWRlciAqdmJ0ID0gYmFzZSAr IG9mZnNldDsKPj4+IC0JY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmJkYjsKPj4+IC0KPj4+IC0J aWYgKG9mZnNldCArIHNpemVvZihzdHJ1Y3QgdmJ0X2hlYWRlcikgPiBzaXplKSB7Cj4+PiAtCQlE Uk1fREVCVUdfRFJJVkVSKCJWQlQgaGVhZGVyIGluY29tcGxldGVcbiIpOwo+Pj4gLQkJcmV0dXJu IE5VTEw7Cj4+PiAtCX0KPj4+IC0KPj4+IC0JaWYgKG1lbWNtcCh2YnQtPnNpZ25hdHVyZSwgIiRW QlQiLCA0KSkgewo+Pj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiVkJUIGludmFsaWQgc2lnbmF0dXJl XG4iKTsKPj4+IC0JCXJldHVybiBOVUxMOwo+Pj4gLQl9Cj4+PiAtCj4+PiAtCW9mZnNldCArPSB2 YnQtPmJkYl9vZmZzZXQ7Cj4+PiAtCWlmIChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IGJkYl9oZWFk ZXIpID4gc2l6ZSkgewo+Pj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiQkRCIGhlYWRlciBpbmNvbXBs ZXRlXG4iKTsKPj4+IC0JCXJldHVybiBOVUxMOwo+Pj4gLQl9Cj4+PiAtCj4+PiAtCWJkYiA9IGJh c2UgKyBvZmZzZXQ7Cj4+PiAtCWlmIChvZmZzZXQgKyBiZGItPmJkYl9zaXplID4gc2l6ZSkgewo+ Pj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiQkRCIGluY29tcGxldGVcbiIpOwo+Pj4gLQkJcmV0dXJu IE5VTEw7Cj4+PiAtCX0KPj4+IC0KPj4+IC0JRFJNX0RFQlVHX0tNUygiVXNpbmcgVkJUIGZyb20g JXM6ICUyMHNcbiIsCj4+PiAtCQkgICAgICBzb3VyY2UsIHZidC0+c2lnbmF0dXJlKTsKPj4+IC0J cmV0dXJuIGJkYjsKPj4+IC19Cj4+PiAtCj4+Cj4+TW92aW5nIG9mIHRoaXMgZnVuY3Rpb24gc2hv dWxkIGJlIGEgc2VwYXJhdGUgcHJlcCBwYXRjaC4KPj4KPj4+ICBzdGF0aWMgY29uc3Qgc3RydWN0 IGJkYl9oZWFkZXIgKmZpbmRfdmJ0KHZvaWQgX19pb21lbSAqYmlvcywgc2l6ZV90Cj4+PiBzaXpl KSAgewo+Pj4gIAljb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiID0gTlVMTDsgQEAgLTEyNzgs NyArMTIzNSw3IEBAIHN0YXRpYwo+Pj4gY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmZpbmRfdmJ0 KHZvaWQgX19pb21lbSAqYmlvcywgc2l6ZV90IHNpemUpCj4+PiAgCS8qIFNjb3VyIG1lbW9yeSBs b29raW5nIGZvciB0aGUgVkJUIHNpZ25hdHVyZS4gKi8KPj4+ICAJZm9yIChpID0gMDsgaSArIDQg PCBzaXplOyBpKyspIHsKPj4+ICAJCWlmIChpb3JlYWQzMihiaW9zICsgaSkgPT0gKigoY29uc3Qg dTMyICopICIkVkJUIikpIHsKPj4+IC0JCQliZGIgPSB2YWxpZGF0ZV92YnQoYmlvcywgc2l6ZSwg YmlvcyArIGksICJQQ0kgUk9NIik7Cj4+PiArCQkJYmRiID0gdmFsaWRhdGVfdmJ0KGJpb3MgKyBp LCBzaXplIC0gaSwgIlBDSSBST00iKTsKPj4+ICAJCQlicmVhazsKPj4+ICAJCX0KPj4+ICAJfQo+ Pj4gQEAgLTEzMDgsMTAgKzEyNjUsOCBAQCBpbnRlbF9wYXJzZV9iaW9zKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4+Pgo+Pj4gIAlpbml0X3ZidF9kZWZhdWx0cyhkZXZfcHJpdik7Cj4+Pgo+Pj4g LQkvKiBYWFggU2hvdWxkIHRoaXMgdmFsaWRhdGlvbiBiZSBtb3ZlZCB0byBpbnRlbF9vcHJlZ2lv bi5jPyAqLwo+Pj4gIAlpZiAoIWRtaV9jaGVja19zeXN0ZW0oaW50ZWxfbm9fb3ByZWdpb25fdmJ0 KSAmJiBkZXZfcHJpdi0KPj4+b3ByZWdpb24udmJ0KQo+Pj4gLQkJYmRiID0gdmFsaWRhdGVfdmJ0 KGRldl9wcml2LT5vcHJlZ2lvbi5oZWFkZXIsCj4+T1BSRUdJT05fU0laRSwKPj4+IC0JCQkJICAg ZGV2X3ByaXYtPm9wcmVnaW9uLnZidCwgIk9wUmVnaW9uIik7Cj4+PiArCQliZGIgPSBkZXZfcHJp di0+YmRiX3N0YXJ0Owo+Pgo+PlRoaXMgc2hvdWxkIGJlIGRldl9wcml2LT5vcHJlZ2lvbi52YnQu Cj4gW0RlZXBhayBNXSB2YWxpZGF0ZV92YnQgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgdGhlIGJk YiBoZWFkZXIgYW5kIG91ciBwYXJzaW5nIHN0YXJ0cyBmcm9tIHRoZSBiZGJfaGVhZGVyIGFuZCBu b3QgZm9ybSB0aGUgZGV2X3ByaXYtPm9wcmVnaW9uLnZidCB3aGVyZSB0aGUgVkJUIGhlYWRlciBz dGFydHMuIFNvIEkgaGF2ZSBhZGRlZCBiZGJfc3RhcnQgaW4gdGhlIGRldl9wcml2IHN0cnVjdHVy ZS4KPj4KClBsZWFzZSBkb24ndCBhZGQgbmV3IGZpZWxkcyB3aGVuIHlvdSBjYW4gcmV1c2UgZXhp c3Rpbmcgb25lcy4KCj4+Pgo+Pj4gIAlpZiAoYmRiID09IE5VTEwpIHsKPj4+ICAJCXNpemVfdCBz aXplOwo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9u LmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24uYwo+Pj4gaW5kZXgg ZjQ2MjMxZi4uM2E0M2RiOSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX29wcmVnaW9uLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVn aW9uLmMKPj4+IEBAIC0zMiwyMTAgKzMyLDcgQEAKPj4+ICAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJt Lmg+Cj4+PiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4+PiAgI2luY2x1ZGUgImludGVsX2Rydi5o Igo+Pj4gLQo+Pj4gLSNkZWZpbmUgUENJX0FTTEUJCTB4ZTQKPj4+IC0jZGVmaW5lIFBDSV9BU0xT CQkweGZjCj4+PiAtI2RlZmluZSBQQ0lfU1dTQ0kJCTB4ZTgKPj4+IC0jZGVmaW5lIFBDSV9TV1ND SV9TQ0lTRUwJKDEgPDwgMTUpCj4+PiAtI2RlZmluZSBQQ0lfU1dTQ0lfR1NTQ0lFCSgxIDw8IDAp Cj4+PiAtCj4+PiAtI2RlZmluZSBPUFJFR0lPTl9IRUFERVJfT0ZGU0VUIDAKPj4+IC0jZGVmaW5l IE9QUkVHSU9OX0FDUElfT0ZGU0VUICAgMHgxMDAKPj4+IC0jZGVmaW5lICAgQUNQSV9DTElEIDB4 MDFhYyAvKiBjdXJyZW50IGxpZCBzdGF0ZSBpbmRpY2F0b3IgKi8KPj4+IC0jZGVmaW5lICAgQUNQ SV9DRENLIDB4MDFiMCAvKiBjdXJyZW50IGRvY2tpbmcgc3RhdGUgaW5kaWNhdG9yICovCj4+PiAt I2RlZmluZSBPUFJFR0lPTl9TV1NDSV9PRkZTRVQgIDB4MjAwCj4+PiAtI2RlZmluZSBPUFJFR0lP Tl9BU0xFX09GRlNFVCAgIDB4MzAwCj4+PiAtI2RlZmluZSBPUFJFR0lPTl9WQlRfT0ZGU0VUICAg IDB4NDAwCj4+PiAtCj4+PiAtI2RlZmluZSBPUFJFR0lPTl9TSUdOQVRVUkUgIkludGVsR3JhcGhp Y3NNZW0iCj4+PiAtI2RlZmluZSBNQk9YX0FDUEkgICAgICAoMTw8MCkKPj4+IC0jZGVmaW5lIE1C T1hfU1dTQ0kgICAgICgxPDwxKQo+Pj4gLSNkZWZpbmUgTUJPWF9BU0xFICAgICAgKDE8PDIpCj4+ PiAtI2RlZmluZSBNQk9YX0FTTEVfRVhUICAoMTw8NCkKPj4+IC0KPj4+IC1zdHJ1Y3Qgb3ByZWdp b25faGVhZGVyIHsKPj4+IC0JdTggc2lnbmF0dXJlWzE2XTsKPj4+IC0JdTMyIHNpemU7Cj4+PiAt CXUzMiBvcHJlZ2lvbl92ZXI7Cj4+PiAtCXU4IGJpb3NfdmVyWzMyXTsKPj4+IC0JdTggdmJpb3Nf dmVyWzE2XTsKPj4+IC0JdTggZHJpdmVyX3ZlclsxNl07Cj4+PiAtCXUzMiBtYm94ZXM7Cj4+PiAt CXUzMiBkcml2ZXJfbW9kZWw7Cj4+PiAtCXUzMiBwY29uOwo+Pj4gLQl1OCBkdmVyWzMyXTsKPj4+ IC0JdTggcnN2ZFsxMjRdOwo+Pj4gLX0gX19wYWNrZWQ7Cj4+PiAtCj4+PiAtLyogT3BSZWdpb24g bWFpbGJveCAjMTogcHVibGljIEFDUEkgbWV0aG9kcyAqLyAtc3RydWN0IG9wcmVnaW9uX2FjcGkK Pj4+IHsKPj4+IC0JdTMyIGRyZHk7ICAgICAgIC8qIGRyaXZlciByZWFkaW5lc3MgKi8KPj4+IC0J dTMyIGNzdHM7ICAgICAgIC8qIG5vdGlmaWNhdGlvbiBzdGF0dXMgKi8KPj4+IC0JdTMyIGNldnQ7 ICAgICAgIC8qIGN1cnJlbnQgZXZlbnQgKi8KPj4+IC0JdTggcnN2ZDFbMjBdOwo+Pj4gLQl1MzIg ZGlkbFs4XTsgICAgLyogc3VwcG9ydGVkIGRpc3BsYXkgZGV2aWNlcyBJRCBsaXN0ICovCj4+PiAt CXUzMiBjcGRsWzhdOyAgICAvKiBjdXJyZW50bHkgcHJlc2VudGVkIGRpc3BsYXkgbGlzdCAqLwo+ Pj4gLQl1MzIgY2FkbFs4XTsgICAgLyogY3VycmVudGx5IGFjdGl2ZSBkaXNwbGF5IGxpc3QgKi8K Pj4+IC0JdTMyIG5hZGxbOF07ICAgIC8qIG5leHQgYWN0aXZlIGRldmljZXMgbGlzdCAqLwo+Pj4g LQl1MzIgYXNscDsgICAgICAgLyogQVNMIHNsZWVwIHRpbWUtb3V0ICovCj4+PiAtCXUzMiB0aWR4 OyAgICAgICAvKiB0b2dnbGUgdGFibGUgaW5kZXggKi8KPj4+IC0JdTMyIGNocGQ7ICAgICAgIC8q IGN1cnJlbnQgaG90cGx1ZyBlbmFibGUgaW5kaWNhdG9yICovCj4+PiAtCXUzMiBjbGlkOyAgICAg ICAvKiBjdXJyZW50IGxpZCBzdGF0ZSovCj4+PiAtCXUzMiBjZGNrOyAgICAgICAvKiBjdXJyZW50 IGRvY2tpbmcgc3RhdGUgKi8KPj4+IC0JdTMyIHN4c3c7ICAgICAgIC8qIFN4IHN0YXRlIHJlc3Vt ZSAqLwo+Pj4gLQl1MzIgZXZ0czsgICAgICAgLyogQVNMIHN1cHBvcnRlZCBldmVudHMgKi8KPj4+ IC0JdTMyIGNub3Q7ICAgICAgIC8qIGN1cnJlbnQgT1Mgbm90aWZpY2F0aW9uICovCj4+PiAtCXUz MiBucmR5OyAgICAgICAvKiBkcml2ZXIgc3RhdHVzICovCj4+PiAtCXUzMiBkaWQyWzddOwkvKiBl eHRlbmRlZCBzdXBwb3J0ZWQgZGlzcGxheSBkZXZpY2VzIElEIGxpc3QgKi8KPj4+IC0JdTMyIGNw ZDJbN107CS8qIGV4dGVuZGVkIGF0dGFjaGVkIGRpc3BsYXkgZGV2aWNlcyBsaXN0ICovCj4+PiAt CXU4IHJzdmQyWzRdOwo+Pj4gLX0gX19wYWNrZWQ7Cj4+PiAtCj4+PiAtLyogT3BSZWdpb24gbWFp bGJveCAjMjogU1dTQ0kgKi8KPj4+IC1zdHJ1Y3Qgb3ByZWdpb25fc3dzY2kgewo+Pj4gLQl1MzIg c2NpYzsgICAgICAgLyogU1dTQ0kgY29tbWFuZHxzdGF0dXN8ZGF0YSAqLwo+Pj4gLQl1MzIgcGFy bTsgICAgICAgLyogY29tbWFuZCBwYXJhbWV0ZXJzICovCj4+PiAtCXUzMiBkc2xwOyAgICAgICAv KiBkcml2ZXIgc2xlZXAgdGltZS1vdXQgKi8KPj4+IC0JdTggcnN2ZFsyNDRdOwo+Pj4gLX0gX19w YWNrZWQ7Cj4+PiAtCj4+PiAtLyogT3BSZWdpb24gbWFpbGJveCAjMzogQVNMRSAqLwo+Pj4gLXN0 cnVjdCBvcHJlZ2lvbl9hc2xlIHsKPj4+IC0JdTMyIGFyZHk7ICAgICAgIC8qIGRyaXZlciByZWFk aW5lc3MgKi8KPj4+IC0JdTMyIGFzbGM7ICAgICAgIC8qIEFTTEUgaW50ZXJydXB0IGNvbW1hbmQg Ki8KPj4+IC0JdTMyIHRjaGU7ICAgICAgIC8qIHRlY2hub2xvZ3kgZW5hYmxlZCBpbmRpY2F0b3Ig Ki8KPj4+IC0JdTMyIGFsc2k7ICAgICAgIC8qIGN1cnJlbnQgQUxTIGlsbHVtaW5hbmNlIHJlYWRp bmcgKi8KPj4+IC0JdTMyIGJjbHA7ICAgICAgIC8qIGJhY2tsaWdodCBicmlnaHRuZXNzIHRvIHNl dCAqLwo+Pj4gLQl1MzIgcGZpdDsgICAgICAgLyogcGFuZWwgZml0dGluZyBzdGF0ZSAqLwo+Pj4g LQl1MzIgY2JsdjsgICAgICAgLyogY3VycmVudCBicmlnaHRuZXNzIGxldmVsICovCj4+PiAtCXUx NiBiY2xtWzIwXTsgICAvKiBiYWNrbGlnaHQgbGV2ZWwgZHV0eSBjeWNsZSBtYXBwaW5nIHRhYmxl ICovCj4+PiAtCXUzMiBjcGZtOyAgICAgICAvKiBjdXJyZW50IHBhbmVsIGZpdHRpbmcgbW9kZSAq Lwo+Pj4gLQl1MzIgZXBmbTsgICAgICAgLyogZW5hYmxlZCBwYW5lbCBmaXR0aW5nIG1vZGVzICov Cj4+PiAtCXU4IHBsdXRbNzRdOyAgICAvKiBwYW5lbCBMVVQgYW5kIGlkZW50aWZpZXIgKi8KPj4+ IC0JdTMyIHBmbWI7ICAgICAgIC8qIFBXTSBmcmVxIGFuZCBtaW4gYnJpZ2h0bmVzcyAqLwo+Pj4g LQl1MzIgY2RkdjsgICAgICAgLyogY29sb3IgY29ycmVjdGlvbiBkZWZhdWx0IHZhbHVlcyAqLwo+ Pj4gLQl1MzIgcGNmdDsgICAgICAgLyogcG93ZXIgY29uc2VydmF0aW9uIGZlYXR1cmVzICovCj4+ PiAtCXUzMiBzcm90OyAgICAgICAvKiBzdXBwb3J0ZWQgcm90YXRpb24gYW5nbGVzICovCj4+PiAt CXUzMiBpdWVyOyAgICAgICAvKiBJVUVSIGV2ZW50cyAqLwo+Pj4gLQl1NjQgZmRzczsKPj4+IC0J dTMyIGZkc3A7Cj4+PiAtCXUzMiBzdGF0Owo+Pj4gLQl1NjQgcnZkYTsJLyogUGh5c2ljYWwgYWRk cmVzcyBvZiByYXcgdmJ0IGRhdGEgKi8KPj4+IC0JdTMyIHJ2ZHM7CS8qIFNpemUgb2YgcmF3IHZi dCBkYXRhICovCj4+PiAtCXU4IHJzdmRbNThdOwo+Pj4gLX0gX19wYWNrZWQ7Cj4+PiAtCj4+PiAt LyogRHJpdmVyIHJlYWRpbmVzcyBpbmRpY2F0b3IgKi8KPj4+IC0jZGVmaW5lIEFTTEVfQVJEWV9S RUFEWQkJKDEgPDwgMCkKPj4+IC0jZGVmaW5lIEFTTEVfQVJEWV9OT1RfUkVBRFkJKDAgPDwgMCkK Pj4+IC0KPj4+IC0vKiBBU0xFIEludGVycnVwdCBDb21tYW5kIChBU0xDKSBiaXRzICovCj4+PiAt I2RlZmluZSBBU0xDX1NFVF9BTFNfSUxMVU0JCSgxIDw8IDApCj4+PiAtI2RlZmluZSBBU0xDX1NF VF9CQUNLTElHSFQJCSgxIDw8IDEpCj4+PiAtI2RlZmluZSBBU0xDX1NFVF9QRklUCQkJKDEgPDwg MikKPj4+IC0jZGVmaW5lIEFTTENfU0VUX1BXTV9GUkVRCQkoMSA8PCAzKQo+Pj4gLSNkZWZpbmUg QVNMQ19TVVBQT1JURURfUk9UQVRJT05fQU5HTEVTCSgxIDw8IDQpCj4+PiAtI2RlZmluZSBBU0xD X0JVVFRPTl9BUlJBWQkJKDEgPDwgNSkKPj4+IC0jZGVmaW5lIEFTTENfQ09OVkVSVElCTEVfSU5E SUNBVE9SCSgxIDw8IDYpCj4+PiAtI2RlZmluZSBBU0xDX0RPQ0tJTkdfSU5ESUNBVE9SCQkoMSA8 PCA3KQo+Pj4gLSNkZWZpbmUgQVNMQ19JU0NUX1NUQVRFX0NIQU5HRQkJKDEgPDwgOCkKPj4+IC0j ZGVmaW5lIEFTTENfUkVRX01TSwkJCTB4MWZmCj4+PiAtLyogcmVzcG9uc2UgYml0cyAqLwo+Pj4g LSNkZWZpbmUgQVNMQ19BTFNfSUxMVU1fRkFJTEVECQkoMSA8PCAxMCkKPj4+IC0jZGVmaW5lIEFT TENfQkFDS0xJR0hUX0ZBSUxFRAkJKDEgPDwgMTIpCj4+PiAtI2RlZmluZSBBU0xDX1BGSVRfRkFJ TEVECQkoMSA8PCAxNCkKPj4+IC0jZGVmaW5lIEFTTENfUFdNX0ZSRVFfRkFJTEVECQkoMSA8PCAx NikKPj4+IC0jZGVmaW5lIEFTTENfUk9UQVRJT05fQU5HTEVTX0ZBSUxFRAkoMSA8PCAxOCkKPj4+ IC0jZGVmaW5lIEFTTENfQlVUVE9OX0FSUkFZX0ZBSUxFRAkoMSA8PCAyMCkKPj4+IC0jZGVmaW5l IEFTTENfQ09OVkVSVElCTEVfRkFJTEVECQkoMSA8PCAyMikKPj4+IC0jZGVmaW5lIEFTTENfRE9D S0lOR19GQUlMRUQJCSgxIDw8IDI0KQo+Pj4gLSNkZWZpbmUgQVNMQ19JU0NUX1NUQVRFX0ZBSUxF RAkJKDEgPDwgMjYpCj4+PiAtCj4+PiAtLyogVGVjaG5vbG9neSBlbmFibGVkIGluZGljYXRvciAq Lwo+Pj4gLSNkZWZpbmUgQVNMRV9UQ0hFX0FMU19FTgkoMSA8PCAwKQo+Pj4gLSNkZWZpbmUgQVNM RV9UQ0hFX0JMQ19FTgkoMSA8PCAxKQo+Pj4gLSNkZWZpbmUgQVNMRV9UQ0hFX1BGSVRfRU4JKDEg PDwgMikKPj4+IC0jZGVmaW5lIEFTTEVfVENIRV9QRk1CX0VOCSgxIDw8IDMpCj4+PiAtCj4+PiAt LyogQVNMRSBiYWNrbGlnaHQgYnJpZ2h0bmVzcyB0byBzZXQgKi8KPj4+IC0jZGVmaW5lIEFTTEVf QkNMUF9WQUxJRCAgICAgICAgICAgICAgICAoMTw8MzEpCj4+PiAtI2RlZmluZSBBU0xFX0JDTFBf TVNLICAgICAgICAgICh+KDE8PDMxKSkKPj4+IC0KPj4+IC0vKiBBU0xFIHBhbmVsIGZpdHRpbmcg cmVxdWVzdCAqLwo+Pj4gLSNkZWZpbmUgQVNMRV9QRklUX1ZBTElEICAgICAgICAgKDE8PDMxKQo+ Pj4gLSNkZWZpbmUgQVNMRV9QRklUX0NFTlRFUiAoMTw8MCkKPj4+IC0jZGVmaW5lIEFTTEVfUEZJ VF9TVFJFVENIX1RFWFQgKDE8PDEpIC0jZGVmaW5lCj4+QVNMRV9QRklUX1NUUkVUQ0hfR0ZYCj4+ PiAoMTw8MikKPj4+IC0KPj4+IC0vKiBQV00gZnJlcXVlbmN5IGFuZCBtaW5pbXVtIGJyaWdodG5l c3MgKi8gLSNkZWZpbmUKPj4+IEFTTEVfUEZNQl9CUklHSFRORVNTX01BU0sgKDB4ZmYpIC0jZGVm aW5lCj4+QVNMRV9QRk1CX0JSSUdIVE5FU1NfVkFMSUQKPj4+ICgxPDw4KSAtI2RlZmluZSBBU0xF X1BGTUJfUFdNX01BU0sgKDB4N2ZmZmZlMDApIC0jZGVmaW5lCj4+PiBBU0xFX1BGTUJfUFdNX1ZB TElEICgxPDwzMSkKPj4+IC0KPj4+IC0jZGVmaW5lIEFTTEVfQ0JMVl9WQUxJRCAgICAgICAgICgx PDwzMSkKPj4+IC0KPj4+IC0vKiBJVUVSICovCj4+PiAtI2RlZmluZSBBU0xFX0lVRVJfRE9DS0lO RwkJKDEgPDwgNykKPj4+IC0jZGVmaW5lIEFTTEVfSVVFUl9DT05WRVJUSUJMRQkJKDEgPDwgNikK Pj4+IC0jZGVmaW5lIEFTTEVfSVVFUl9ST1RBVElPTl9MT0NLX0JUTgkoMSA8PCA0KQo+Pj4gLSNk ZWZpbmUgQVNMRV9JVUVSX1ZPTFVNRV9ET1dOX0JUTgkoMSA8PCAzKQo+Pj4gLSNkZWZpbmUgQVNM RV9JVUVSX1ZPTFVNRV9VUF9CVE4JCSgxIDw8IDIpCj4+PiAtI2RlZmluZSBBU0xFX0lVRVJfV0lO RE9XU19CVE4JCSgxIDw8IDEpCj4+PiAtI2RlZmluZSBBU0xFX0lVRVJfUE9XRVJfQlROCQkoMSA8 PCAwKQo+Pj4gLQo+Pj4gLS8qIFNvZnR3YXJlIFN5c3RlbSBDb250cm9sIEludGVycnVwdCAoU1dT Q0kpICovCj4+PiAtI2RlZmluZSBTV1NDSV9TQ0lDX0lORElDQVRPUgkJKDEgPDwgMCkKPj4+IC0j ZGVmaW5lIFNXU0NJX1NDSUNfTUFJTl9GVU5DVElPTl9TSElGVAkxCj4+PiAtI2RlZmluZSBTV1ND SV9TQ0lDX01BSU5fRlVOQ1RJT05fTUFTSwkoMHhmIDw8IDEpCj4+PiAtI2RlZmluZSBTV1NDSV9T Q0lDX1NVQl9GVU5DVElPTl9TSElGVAk4Cj4+PiAtI2RlZmluZSBTV1NDSV9TQ0lDX1NVQl9GVU5D VElPTl9NQVNLCSgweGZmIDw8IDgpCj4+PiAtI2RlZmluZSBTV1NDSV9TQ0lDX0VYSVRfUEFSQU1F VEVSX1NISUZUCTgKPj4+IC0jZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9QQVJBTUVURVJfTUFTSwko MHhmZiA8PCA4KQo+Pj4gLSNkZWZpbmUgU1dTQ0lfU0NJQ19FWElUX1NUQVRVU19TSElGVAk1Cj4+ PiAtI2RlZmluZSBTV1NDSV9TQ0lDX0VYSVRfU1RBVFVTX01BU0sJKDcgPDwgNSkKPj4+IC0jZGVm aW5lIFNXU0NJX1NDSUNfRVhJVF9TVEFUVVNfU1VDQ0VTUwkxCj4+PiAtCj4+PiAtI2RlZmluZSBT V1NDSV9GVU5DVElPTl9DT0RFKG1haW4sIHN1YikgXAo+Pj4gLQkoKG1haW4pIDw8IFNXU0NJX1ND SUNfTUFJTl9GVU5DVElPTl9TSElGVCB8IFwKPj4+IC0JIChzdWIpIDw8IFNXU0NJX1NDSUNfU1VC X0ZVTkNUSU9OX1NISUZUKQo+Pj4gLQo+Pj4gLS8qIFNXU0NJOiBHZXQgQklPUyBEYXRhIChHQkRB KSAqLwo+Pj4gLSNkZWZpbmUgU1dTQ0lfR0JEQQkJCTQKPj4+IC0jZGVmaW5lIFNXU0NJX0dCREFf U1VQUE9SVEVEX0NBTExTCj4+CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfR0JEQSwgMCkKPj4+ IC0jZGVmaW5lIFNXU0NJX0dCREFfUkVRVUVTVEVEX0NBTExCQUNLUwo+PglTV1NDSV9GVU5DVElP Tl9DT0RFKFNXU0NJX0dCREEsIDEpCj4+PiAtI2RlZmluZSBTV1NDSV9HQkRBX0JPT1RfRElTUExB WV9QUkVGCj4+CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfR0JEQSwgNCkKPj4+IC0jZGVmaW5l IFNXU0NJX0dCREFfUEFORUxfREVUQUlMUwo+PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX0dC REEsIDUpCj4+PiAtI2RlZmluZSBTV1NDSV9HQkRBX1RWX1NUQU5EQVJECj4+CVNXU0NJX0ZVTkNU SU9OX0NPREUoU1dTQ0lfR0JEQSwgNikKPj4+IC0jZGVmaW5lIFNXU0NJX0dCREFfSU5URVJOQUxf R1JBUEhJQ1MKPj4JU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9HQkRBLCA3KQo+Pj4gLSNkZWZp bmUgU1dTQ0lfR0JEQV9TUFJFQURfU1BFQ1RSVU0KPj4JU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1ND SV9HQkRBLCAxMCkKPj4+IC0KPj4+IC0vKiBTV1NDSTogU3lzdGVtIEJJT1MgQ2FsbGJhY2tzIChT QkNCKSAqLwo+Pj4gLSNkZWZpbmUgU1dTQ0lfU0JDQgkJCTYKPj4+IC0jZGVmaW5lIFNXU0NJX1NC Q0JfU1VQUE9SVEVEX0NBTExCQUNLUwo+PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0Is IDApCj4+PiAtI2RlZmluZSBTV1NDSV9TQkNCX0lOSVRfQ09NUExFVElPTgo+PglTV1NDSV9GVU5D VElPTl9DT0RFKFNXU0NJX1NCQ0IsIDEpCj4+PiAtI2RlZmluZSBTV1NDSV9TQkNCX1BSRV9ISVJF U19TRVRfTU9ERQo+PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDMpCj4+PiAtI2Rl ZmluZSBTV1NDSV9TQkNCX1BPU1RfSElSRVNfU0VUX01PREUKPj4JU1dTQ0lfRlVOQ1RJT05fQ09E RShTV1NDSV9TQkNCLCA0KQo+Pj4gLSNkZWZpbmUgU1dTQ0lfU0JDQl9ESVNQTEFZX1NXSVRDSAo+ PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDUpCj4+PiAtI2RlZmluZSBTV1NDSV9T QkNCX1NFVF9UVl9GT1JNQVQKPj4JU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCA2KQo+ Pj4gLSNkZWZpbmUgU1dTQ0lfU0JDQl9BREFQVEVSX1BPV0VSX1NUQVRFCj4+CVNXU0NJX0ZVTkNU SU9OX0NPREUoU1dTQ0lfU0JDQiwgNykKPj4+IC0jZGVmaW5lIFNXU0NJX1NCQ0JfRElTUExBWV9Q T1dFUl9TVEFURQo+PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDgpCj4+PiAtI2Rl ZmluZSBTV1NDSV9TQkNCX1NFVF9CT09UX0RJU1BMQVkKPj4JU1dTQ0lfRlVOQ1RJT05fQ09ERShT V1NDSV9TQkNCLCA5KQo+Pj4gLSNkZWZpbmUgU1dTQ0lfU0JDQl9TRVRfUEFORUxfREVUQUlMUwo+ PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDEwKQo+Pj4gLSNkZWZpbmUgU1dTQ0lf U0JDQl9TRVRfSU5URVJOQUxfR0ZYCj4+CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwg MTEpCj4+PiAtI2RlZmluZSBTV1NDSV9TQkNCX1BPU1RfSElSRVNfVE9fRE9TX0ZTCj4+CVNXU0NJ X0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgMTYpCj4+PiAtI2RlZmluZSBTV1NDSV9TQkNCX1NV U1BFTkRfUkVTVU1FCj4+CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgMTcpCj4+PiAt I2RlZmluZSBTV1NDSV9TQkNCX1NFVF9TUFJFQURfU1BFQ1RSVU0KPj4JU1dTQ0lfRlVOQ1RJT05f Q09ERShTV1NDSV9TQkNCLCAxOCkKPj4+IC0jZGVmaW5lIFNXU0NJX1NCQ0JfUE9TVF9WQkVfUE0K Pj4JU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCAxOSkKPj4+IC0jZGVmaW5lIFNXU0NJ X1NCQ0JfRU5BQkxFX0RJU0FCTEVfQVVESU8KPj4JU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9T QkNCLCAyMSkKPj4+IC0KPj4+IC0jZGVmaW5lIEFDUElfT1RIRVJfT1VUUFVUICgwPDw4KQo+Pj4g LSNkZWZpbmUgQUNQSV9WR0FfT1VUUFVUICgxPDw4KQo+Pj4gLSNkZWZpbmUgQUNQSV9UVl9PVVRQ VVQgKDI8PDgpCj4+PiAtI2RlZmluZSBBQ1BJX0RJR0lUQUxfT1VUUFVUICgzPDw4KQo+Pj4gLSNk ZWZpbmUgQUNQSV9MVkRTX09VVFBVVCAoNDw8OCkKPj4+IC0KPj4+IC0jZGVmaW5lIE1BWF9EU0xQ CTE1MDAKPj4+ICsjaW5jbHVkZSAiaW50ZWxfb3ByZWdpb24uaCIKPj4KPj5BcyBzYWlkLCBJIGRv bid0IHNlZSB0aGUgbmVlZCB0byBtb3ZlIHRoZXNlIGRlZmluZXMgdG8gYSBzZXBhcmF0ZSBoZWFk ZXIuIFRoaXMKPj5pcyBkZWZpbml0ZWx5IHN0dWZmIHRoYXQgd2Ugd2FudCB0byBrZWVwIGhpZGRl biBpbiBvbmUgcGxhY2UsIGFuZCBub2JvZHkKPj5vdXRzaWRlIG9mIGludGVsX29wcmVnaW9uLmMg c2hvdWxkIHVzZSB0aGVzZS4KPj4KPiBbRGVlcGFrIE1dIE5lZWQgc29tZSBvZiB0aGVzZSBkZWZp bml0aW9ucyBpbiB0aGUgZGVidWdmcy5jIGZpbGUsIGJlY2F1c2Ugb2YgdGhpcwo+IGhhZCBjcmVh dGVkIGEgbmV3IGZpbGUgZm9yIG1hY3Jvcy4KClBsZWFzZSByZXdvcmsgeW91ciBkZWJ1Z2ZzIGhh bmRsaW5nIHRvIG5vdCBuZWVkIHRoZXNlLiBJZiBuZWVkZWQsIGFkZCBhbgppbnRlcmZhY2UgdG8g aW50ZWxfb3ByZWdpb24uYyB0byBkbyB3aGF0IHlvdSB3YW50LgoKPgo+Pj4KPj4+ICAjaWZkZWYg Q09ORklHX0FDUEkKPj4+ICBzdGF0aWMgaW50IHN3c2NpKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHUzMiBmdW5jdGlvbiwgdTMyIHBhcm0sIHUzMgo+Pj4gKnBhcm1fb3V0KSBAQCAtODkyLDEzICs2 ODksNTUgQEAgc3RhdGljIHZvaWQgc3dzY2lfc2V0dXAoc3RydWN0Cj4+PiBkcm1fZGV2aWNlICpk ZXYpICBzdGF0aWMgaW5saW5lIHZvaWQgc3dzY2lfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UKPj4+ ICpkZXYpIHt9ICAjZW5kaWYgIC8qIENPTkZJR19BQ1BJICovCj4+Pgo+Pj4gK2NvbnN0IHN0cnVj dCBiZGJfaGVhZGVyICp2YWxpZGF0ZV92YnQoY29uc3Qgdm9pZCBfX2lvbWVtICpfdmJ0LAo+Pj4g KwkJCQkJc2l6ZV90IHNpemUsCj4+PiArCQkJCQljb25zdCBjaGFyICpzb3VyY2UpCj4+PiArewo+ Pj4gKwkvKgo+Pj4gKwkgKiBUaGlzIGlzIHRoZSBvbmUgcGxhY2Ugd2hlcmUgd2UgZXhwbGljaXRs eSBkaXNjYXJkIHRoZSBhZGRyZXNzIHNwYWNlCj4+PiArCSAqIChfX2lvbWVtKSBvZiB0aGUgQklP Uy9WQlQuIChBbmQgdGhpcyB3aWxsIGNhdXNlIGEgc3BhcnNlCj4+Y29tcGxhaW50LikKPj4+ICsJ ICovCj4+PiArCWNvbnN0IHN0cnVjdCB2YnRfaGVhZGVyICp2YnQgPSAoY29uc3Qgc3RydWN0IHZi dF9oZWFkZXIgKilfdmJ0Owo+Pj4gKwljb25zdCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiOwo+Pj4g KwlzaXplX3Qgb2Zmc2V0Owo+Pj4gKwo+Pj4gKwlpZiAoc2l6ZW9mKHN0cnVjdCB2YnRfaGVhZGVy KSA+IHNpemUpIHsKPj4+ICsJCURSTV9ERUJVR19EUklWRVIoIlZCVCBoZWFkZXIgaW5jb21wbGV0 ZVxuIik7Cj4+PiArCQlyZXR1cm4gTlVMTDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlpZiAobWVtY21w KHZidC0+c2lnbmF0dXJlLCAiJFZCVCIsIDQpKSB7Cj4+PiArCQlEUk1fREVCVUdfRFJJVkVSKCJW QlQgaW52YWxpZCBzaWduYXR1cmVcbiIpOwo+Pj4gKwkJcmV0dXJuIE5VTEw7Cj4+PiArCX0KPj4+ ICsKPj4+ICsJb2Zmc2V0ID0gdmJ0LT5iZGJfb2Zmc2V0Owo+Pj4gKwlpZiAob2Zmc2V0ICsgc2l6 ZW9mKHN0cnVjdCBiZGJfaGVhZGVyKSA+IHNpemUpIHsKPj4+ICsJCURSTV9ERUJVR19EUklWRVIo IkJEQiBoZWFkZXIgaW5jb21wbGV0ZVxuIik7Cj4+PiArCQlyZXR1cm4gTlVMTDsKPj4+ICsJfQo+ Pj4gKwo+Pj4gKwliZGIgPSAoY29uc3Qgdm9pZCAqKV92YnQgKyBvZmZzZXQ7Cj4+PiArCWlmIChv ZmZzZXQgKyBiZGItPmJkYl9zaXplID4gc2l6ZSkgewo+Pj4gKwkJRFJNX0RFQlVHX0RSSVZFUigi QkRCIGluY29tcGxldGVcbiIpOwo+Pj4gKwkJcmV0dXJuIE5VTEw7Cj4+PiArCX0KPj4+ICsKPj4+ ICsJRFJNX0RFQlVHX0tNUygiVXNpbmcgVkJUIGZyb20gJXM6ICUyMHNcbiIsCj4+PiArCQkJc291 cmNlLCB2YnQtPnNpZ25hdHVyZSk7Cj4+PiArCXJldHVybiBiZGI7Cj4+PiArfQo+Pj4gKwo+Pj4g IGludCBpbnRlbF9vcHJlZ2lvbl9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KSAgewo+Pj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ Pj4gIAlzdHJ1Y3QgaW50ZWxfb3ByZWdpb24gKm9wcmVnaW9uID0gJmRldl9wcml2LT5vcHJlZ2lv bjsKPj4+ICAJdm9pZCBfX2lvbWVtICpiYXNlOwo+Pj4gKwl2b2lkIF9faW9tZW0gKnZidF9iYXNl Owo+Pj4gIAl1MzIgYXNscywgbWJveGVzOwo+Pj4gIAljaGFyIGJ1ZltzaXplb2YoT1BSRUdJT05f U0lHTkFUVVJFKV07Cj4+PiArCWNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIgPSBOVUxMOwo+ Pj4gKwlzaXplX3Qgc2l6ZTsKPj4+ICAJaW50IGVyciA9IDA7Cj4+Pgo+Pj4gIAlCVUlMRF9CVUdf T04oc2l6ZW9mKHN0cnVjdCBvcHJlZ2lvbl9oZWFkZXIpICE9IDB4MTAwKTsgQEAgLQo+PjkxNyw3 Cj4+PiArNzU2LDcgQEAgaW50IGludGVsX29wcmVnaW9uX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4+PiAgCUlOSVRfV09SSygmb3ByZWdpb24tPmFzbGVfd29yaywgYXNsZV93b3JrKTsg ICNlbmRpZgo+Pj4KPj4+IC0JYmFzZSA9IGFjcGlfb3NfaW9yZW1hcChhc2xzLCBPUFJFR0lPTl9T SVpFKTsKPj4+ICsJYmFzZSA9IGFjcGlfb3NfaW9yZW1hcChhc2xzLCBPUFJFR0lPTl9WQlRfT0ZG U0VUKTsKPj4KPj5Ob3cgeW91IGxlYXZlIG91dCBtYWlsYm94ICM1LiBJIGRvbid0IHRoaW5rIHRo ZXJlJ3MgYW55IHJlYXNvbiAqbm90KiB0bwo+PmlvcmVtYXAgYWxsIG9mIG9wcmVnaW9uIGhlcmUu Cj4+Cj4+PiAgCWlmICghYmFzZSkKPj4+ICAJCXJldHVybiAtRU5PTUVNOwo+Pj4KPj4+IEBAIC05 MjksNyArNzY4LDMzIEBAIGludCBpbnRlbF9vcHJlZ2lvbl9zZXR1cChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+Pj4gIAkJZ290byBlcnJfb3V0Owo+Pj4gIAl9Cj4+PiAgCW9wcmVnaW9uLT5oZWFk ZXIgPSBiYXNlOwo+Pj4gLQlvcHJlZ2lvbi0+dmJ0ID0gYmFzZSArIE9QUkVHSU9OX1ZCVF9PRkZT RVQ7Cj4+PiArCS8qIEFzc2lnbmluZyB0aGUgYWxzZSB0byB0aGUgbWFpbGJveCAzIG9mIHRoZSBv cHJlZ2lvbiAqLwo+Pj4gKwlvcHJlZ2lvbi0+YXNsZSA9IGJhc2UgKyBPUFJFR0lPTl9BU0xFX09G RlNFVDsKPj4KPj5UaGF0J3MgYXNzaWduZWQgdG93YXJkcyB0aGUgZW5kIG9mIHRoZSBmdW5jdGlv biAqaWYqIHRoZSBtYm94IGlzIHN1cHBvcnRlZC4KPj4KPj4+ICsKPj4+ICsJLyoKPj4+ICsJICog Tm9uLXplcm8gdmFsdWUgaW4gcnZkYSBmaWVsZCBpcyBhbiBpbmRpY2F0aW9uIHRvIGRyaXZlciB0 aGF0IGEKPj4+ICsJICogdmFsaWQgUmF3IFZCVCBpcyBzdG9yZWQgaW4gdGhhdCBhZGRyZXNzIGFu ZCBkcml2ZXIgc2hvdWxkIG5vdCByZWZlcgo+Pj4gKwkgKiB0byBtYWlsYm94NCBmb3IgZ2V0dGlu ZyBWQlQuCj4+PiArCSAqLwo+Pj4gKwlpZiAob3ByZWdpb24tPmhlYWRlci0+b3ByZWdpb25fdmVy ID49IDIgJiYgb3ByZWdpb24tPmFzbGUtPnJ2ZGEpIHsKPj4+ICsJCQlzaXplID0gb3ByZWdpb24t PmFzbGUtPnJ2ZHM7Cj4+PiArCQkJdmJ0X2Jhc2UgPSBhY3BpX29zX2lvcmVtYXAob3ByZWdpb24t PmFzbGUtPnJ2ZGEsCj4+PiArCQkJCQlzaXplKTsKPj4+ICsJfSBlbHNlIHsKPj4+ICsJCQlzaXpl ID0gT1BSRUdJT05fU0laRSAtIE9QUkVHSU9OX1ZCVF9PRkZTRVQ7Cj4+PiArCQkJdmJ0X2Jhc2Ug PSBhY3BpX29zX2lvcmVtYXAoYXNscyArCj4+T1BSRUdJT05fVkJUX09GRlNFVCwKPj4+ICsJCQkJ CXNpemUpOwo+Pj4gKwl9Cj4+PiArCj4+PiArCWJkYiA9IHZhbGlkYXRlX3ZidCh2YnRfYmFzZSwg c2l6ZSwgIk9wUmVnaW9uIik7Cj4+PiArCj4+PiArCWlmIChiZGIgPT0gTlVMTCkgewo+Pj4gKwkJ ZXJyID0gLUVJTlZBTDsKPj4+ICsJCWdvdG8gZXJyX3ZidDsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlk ZXZfcHJpdi0+YmRiX3N0YXJ0ID0gYmRiOwo+Pgo+PkFnYWluLCBJIGRvbid0IHNlZSB3aHkgeW91 IHNob3VsZCBzdG9yZSB0aGlzIGhlcmUuIE5vciBJIHNlZSB0aGUgbmVlZCB0bwo+PmFjdHVhbGx5 IHZhbGlkYXRlIHZidCBoZXJlLiBZb3UgY2FuIGp1c3QgYXMgd2VsbCBkbyBpdCBpbiBpbnRlbF9i aW9zIGxpa2UgYmVmb3JlLCBhcwo+PmxvbmcgYXMgeW91IGFzc2lnbiBvcHJlZ2lvbi0+dmJ0IGhl cmUgYXBwcm9wcmlhdGVseS4KPj4KPj5Zb3UnbGwgYWxzbyBuZWVkIHRvIGlvdW5tYXAgdmJ0X2Jh c2UgaW4gaW50ZWxfb3ByZWdpb25fZmluaS4gVGhhdCBtYXkgbmVlZAo+PnNvbWUgYWRkaXRpb25h bCBjaGVja3MgaWYgeW91IHVuY29uZGl0aW9uYWxseSBpb3JlbWFwIGFsbCBvZiBvcHJlZ2lvbiBh bmQKPj5jb25kaXRpb25hbGx5IGlvcmVtYXAgcnZkYSwgYW5kIHBvaW50IG9wcmVnaW9uLT52YnQg dG8gaXQuCj4+Cj4gW0RlZXBhayBNXSBPa2F5IHdpbGwgaGFuZGxlIHRoaXMuCj4+PiArCW9wcmVn aW9uLT52YnQgPSB2YnRfYmFzZTsKPj4+Cj4+PiAgCW9wcmVnaW9uLT5saWRfc3RhdGUgPSBiYXNl ICsgQUNQSV9DTElEOwo+Pj4KPj4+IEBAIC05NTMsNiArODE4LDggQEAgaW50IGludGVsX29wcmVn aW9uX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+Pgo+Pj4gIAlyZXR1cm4gMDsKPj4+ Cj4+PiArZXJyX3ZidDoKPj4+ICsJaW91bm1hcCh2YnRfYmFzZSk7Cj4+PiAgZXJyX291dDoKPj4+ ICAJaW91bm1hcChiYXNlKTsKPj4+ICAJcmV0dXJuIGVycjsKPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5oCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX29wcmVnaW9uLmgKPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAw MDAwMDAwLi5iY2I0NWVjCj4+PiAtLS0gL2Rldi9udWxsCj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5oCj4+PiBAQCAtMCwwICsxLDIzMCBAQAo+Pj4gKy8qCj4+ PiArICogQ29weXJpZ2h0IDIwMDggSW50ZWwgQ29ycG9yYXRpb24gPGhvbmcubGl1QGludGVsLmNv bT4KPj4+ICsgKiBDb3B5cmlnaHQgMjAwOCBSZWQgSGF0IDxtamdAcmVkaGF0LmNvbT4KPj4+ICsg Kgo+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uCj4+PiArb2J0YWluaW5nCj4+PiArICogYSBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4+PiArICogIlNvZnR3 YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sCj4+PiAr aW5jbHVkaW5nCj4+PiArICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLAo+Pj4gK3B1Ymxpc2gsCj4+PiArICogZGlzdHJpYnV0ZSwgc3Vi IGxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZAo+Pj4gK3Rv Cj4+PiArICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0Cj4+PiArdG8KPj4+ICsgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6Cj4+PiArICoKPj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4+PiArdGhlCj4+PiArICogbmV4dCBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwKPj4+ICsg KiBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4+PiArICoKPj4+ICsgKiBUSEUgU09GVFdBUkUg SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKPj5LSU5ELAo+Pj4g KyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUK Pj5XQVJSQU5USUVTIE9GCj4+PiArICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBTkQKPj4+ICsgKiBOT04tSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwgSU5URUwgQU5EL09SIElUUyBTVVBQTElFUlMKPj5CRQo+Pj4gKyAqIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTgo+ Pj4gKyAqIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJP TSwgT1VUIE9GCj4+T1IgSU4KPj4+ICsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KPj5USEUKPj4+ICsgKiBTT0ZUV0FSRS4KPj4+ ICsgKgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNkZWZpbmUgUENJX0FTTEUJCTB4ZTQKPj4+ICsjZGVm aW5lIFBDSV9BU0xTCQkweGZjCj4+PiArI2RlZmluZSBQQ0lfU1dTQ0kJCTB4ZTgKPj4+ICsjZGVm aW5lIFBDSV9TV1NDSV9TQ0lTRUwJKDEgPDwgMTUpCj4+PiArI2RlZmluZSBQQ0lfU1dTQ0lfR1NT Q0lFCSgxIDw8IDApCj4+PiArCj4+PiArI2RlZmluZSBPUFJFR0lPTl9IRUFERVJfT0ZGU0VUIDAK Pj4+ICsjZGVmaW5lIE9QUkVHSU9OX0FDUElfT0ZGU0VUICAgMHgxMDAKPj4+ICsjZGVmaW5lICAg QUNQSV9DTElEIDB4MDFhYyAvKiBjdXJyZW50IGxpZCBzdGF0ZSBpbmRpY2F0b3IgKi8KPj4+ICsj ZGVmaW5lICAgQUNQSV9DRENLIDB4MDFiMCAvKiBjdXJyZW50IGRvY2tpbmcgc3RhdGUgaW5kaWNh dG9yICovCj4+PiArI2RlZmluZSBPUFJFR0lPTl9TV1NDSV9PRkZTRVQgIDB4MjAwCj4+PiArI2Rl ZmluZSBPUFJFR0lPTl9BU0xFX09GRlNFVCAgIDB4MzAwCj4+PiArI2RlZmluZSBPUFJFR0lPTl9W QlRfT0ZGU0VUICAgIDB4NDAwCj4+PiArCj4+PiArI2RlZmluZSBPUFJFR0lPTl9TSUdOQVRVUkUg IkludGVsR3JhcGhpY3NNZW0iCj4+PiArI2RlZmluZSBNQk9YX0FDUEkgICAgICAoMTw8MCkKPj4+ ICsjZGVmaW5lIE1CT1hfU1dTQ0kgICAgICgxPDwxKQo+Pj4gKyNkZWZpbmUgTUJPWF9BU0xFICAg ICAgKDE8PDIpCj4+PiArI2RlZmluZSBNQk9YX0FTTEVfRVhUICAoMTw8NCkKPj4+ICsKPj4+ICtz dHJ1Y3Qgb3ByZWdpb25faGVhZGVyIHsKPj4+ICsJdTggc2lnbmF0dXJlWzE2XTsKPj4+ICsJdTMy IHNpemU7Cj4+PiArCXUzMiBvcHJlZ2lvbl92ZXI7Cj4+PiArCXU4IGJpb3NfdmVyWzMyXTsKPj4+ ICsJdTggdmJpb3NfdmVyWzE2XTsKPj4+ICsJdTggZHJpdmVyX3ZlclsxNl07Cj4+PiArCXUzMiBt Ym94ZXM7Cj4+PiArCXUzMiBkcml2ZXJfbW9kZWw7Cj4+PiArCXUzMiBwY29uOwo+Pj4gKwl1OCBk dmVyWzMyXTsKPj4+ICsJdTggcnN2ZFsxMjRdOwo+Pj4gK30gX19wYWNrZWQ7Cj4+PiArCj4+PiAr LyogT3BSZWdpb24gbWFpbGJveCAjMTogcHVibGljIEFDUEkgbWV0aG9kcyAqLyBzdHJ1Y3Qgb3By ZWdpb25fYWNwaSB7Cj4+PiArCXUzMiBkcmR5OyAgICAgICAvKiBkcml2ZXIgcmVhZGluZXNzICov Cj4+PiArCXUzMiBjc3RzOyAgICAgICAvKiBub3RpZmljYXRpb24gc3RhdHVzICovCj4+PiArCXUz MiBjZXZ0OyAgICAgICAvKiBjdXJyZW50IGV2ZW50ICovCj4+PiArCXU4IHJzdmQxWzIwXTsKPj4+ ICsJdTMyIGRpZGxbOF07ICAgIC8qIHN1cHBvcnRlZCBkaXNwbGF5IGRldmljZXMgSUQgbGlzdCAq Lwo+Pj4gKwl1MzIgY3BkbFs4XTsgICAgLyogY3VycmVudGx5IHByZXNlbnRlZCBkaXNwbGF5IGxp c3QgKi8KPj4+ICsJdTMyIGNhZGxbOF07ICAgIC8qIGN1cnJlbnRseSBhY3RpdmUgZGlzcGxheSBs aXN0ICovCj4+PiArCXUzMiBuYWRsWzhdOyAgICAvKiBuZXh0IGFjdGl2ZSBkZXZpY2VzIGxpc3Qg Ki8KPj4+ICsJdTMyIGFzbHA7ICAgICAgIC8qIEFTTCBzbGVlcCB0aW1lLW91dCAqLwo+Pj4gKwl1 MzIgdGlkeDsgICAgICAgLyogdG9nZ2xlIHRhYmxlIGluZGV4ICovCj4+PiArCXUzMiBjaHBkOyAg ICAgICAvKiBjdXJyZW50IGhvdHBsdWcgZW5hYmxlIGluZGljYXRvciAqLwo+Pj4gKwl1MzIgY2xp ZDsgICAgICAgLyogY3VycmVudCBsaWQgc3RhdGUqLwo+Pj4gKwl1MzIgY2RjazsgICAgICAgLyog Y3VycmVudCBkb2NraW5nIHN0YXRlICovCj4+PiArCXUzMiBzeHN3OyAgICAgICAvKiBTeCBzdGF0 ZSByZXN1bWUgKi8KPj4+ICsJdTMyIGV2dHM7ICAgICAgIC8qIEFTTCBzdXBwb3J0ZWQgZXZlbnRz ICovCj4+PiArCXUzMiBjbm90OyAgICAgICAvKiBjdXJyZW50IE9TIG5vdGlmaWNhdGlvbiAqLwo+ Pj4gKwl1MzIgbnJkeTsgICAgICAgLyogZHJpdmVyIHN0YXR1cyAqLwo+Pj4gKwl1MzIgZGlkMls3 XTsJLyogZXh0ZW5kZWQgc3VwcG9ydGVkIGRpc3BsYXkgZGV2aWNlcyBJRCBsaXN0ICovCj4+PiAr CXUzMiBjcGQyWzddOwkvKiBleHRlbmRlZCBhdHRhY2hlZCBkaXNwbGF5IGRldmljZXMgbGlzdCAq Lwo+Pj4gKwl1OCByc3ZkMls0XTsKPj4+ICt9IF9fcGFja2VkOwo+Pj4gKwo+Pj4gKy8qIE9wUmVn aW9uIG1haWxib3ggIzI6IFNXU0NJICovCj4+PiArc3RydWN0IG9wcmVnaW9uX3N3c2NpIHsKPj4+ ICsJdTMyIHNjaWM7ICAgICAgIC8qIFNXU0NJIGNvbW1hbmR8c3RhdHVzfGRhdGEgKi8KPj4+ICsJ dTMyIHBhcm07ICAgICAgIC8qIGNvbW1hbmQgcGFyYW1ldGVycyAqLwo+Pj4gKwl1MzIgZHNscDsg ICAgICAgLyogZHJpdmVyIHNsZWVwIHRpbWUtb3V0ICovCj4+PiArCXU4IHJzdmRbMjQ0XTsKPj4+ ICt9IF9fcGFja2VkOwo+Pj4gKwo+Pj4gKy8qIE9wUmVnaW9uIG1haWxib3ggIzM6IEFTTEUgKi8K Pj4+ICtzdHJ1Y3Qgb3ByZWdpb25fYXNsZSB7Cj4+PiArCXUzMiBhcmR5OyAgICAgICAvKiBkcml2 ZXIgcmVhZGluZXNzICovCj4+PiArCXUzMiBhc2xjOyAgICAgICAvKiBBU0xFIGludGVycnVwdCBj b21tYW5kICovCj4+PiArCXUzMiB0Y2hlOyAgICAgICAvKiB0ZWNobm9sb2d5IGVuYWJsZWQgaW5k aWNhdG9yICovCj4+PiArCXUzMiBhbHNpOyAgICAgICAvKiBjdXJyZW50IEFMUyBpbGx1bWluYW5j ZSByZWFkaW5nICovCj4+PiArCXUzMiBiY2xwOyAgICAgICAvKiBiYWNrbGlnaHQgYnJpZ2h0bmVz cyB0byBzZXQgKi8KPj4+ICsJdTMyIHBmaXQ7ICAgICAgIC8qIHBhbmVsIGZpdHRpbmcgc3RhdGUg Ki8KPj4+ICsJdTMyIGNibHY7ICAgICAgIC8qIGN1cnJlbnQgYnJpZ2h0bmVzcyBsZXZlbCAqLwo+ Pj4gKwl1MTYgYmNsbVsyMF07ICAgLyogYmFja2xpZ2h0IGxldmVsIGR1dHkgY3ljbGUgbWFwcGlu ZyB0YWJsZSAqLwo+Pj4gKwl1MzIgY3BmbTsgICAgICAgLyogY3VycmVudCBwYW5lbCBmaXR0aW5n IG1vZGUgKi8KPj4+ICsJdTMyIGVwZm07ICAgICAgIC8qIGVuYWJsZWQgcGFuZWwgZml0dGluZyBt b2RlcyAqLwo+Pj4gKwl1OCBwbHV0Wzc0XTsgICAgLyogcGFuZWwgTFVUIGFuZCBpZGVudGlmaWVy ICovCj4+PiArCXUzMiBwZm1iOyAgICAgICAvKiBQV00gZnJlcSBhbmQgbWluIGJyaWdodG5lc3Mg Ki8KPj4+ICsJdTMyIGNkZHY7ICAgICAgIC8qIGNvbG9yIGNvcnJlY3Rpb24gZGVmYXVsdCB2YWx1 ZXMgKi8KPj4+ICsJdTMyIHBjZnQ7ICAgICAgIC8qIHBvd2VyIGNvbnNlcnZhdGlvbiBmZWF0dXJl cyAqLwo+Pj4gKwl1MzIgc3JvdDsgICAgICAgLyogc3VwcG9ydGVkIHJvdGF0aW9uIGFuZ2xlcyAq Lwo+Pj4gKwl1MzIgaXVlcjsgICAgICAgLyogSVVFUiBldmVudHMgKi8KPj4+ICsJdTY0IGZkc3M7 Cj4+PiArCXUzMiBmZHNwOwo+Pj4gKwl1MzIgc3RhdDsKPj4+ICsJdTY0IHJ2ZGE7CS8qIFBoeXNp Y2FsIGFkZHJlc3Mgb2YgcmF3IHZidCBkYXRhICovCj4+PiArCXUzMiBydmRzOwkvKiBTaXplIG9m IHJhdyB2YnQgZGF0YSAqLwo+Pj4gKwl1OCByc3ZkWzU4XTsKPj4+ICt9IF9fcGFja2VkOwo+Pj4g Kwo+Pj4gKy8qIERyaXZlciByZWFkaW5lc3MgaW5kaWNhdG9yICovCj4+PiArI2RlZmluZSBBU0xF X0FSRFlfUkVBRFkJCSgxIDw8IDApCj4+PiArI2RlZmluZSBBU0xFX0FSRFlfTk9UX1JFQURZCSgw IDw8IDApCj4+PiArCj4+PiArLyogQVNMRSBJbnRlcnJ1cHQgQ29tbWFuZCAoQVNMQykgYml0cyAq Lwo+Pj4gKyNkZWZpbmUgQVNMQ19TRVRfQUxTX0lMTFVNCQkoMSA8PCAwKQo+Pj4gKyNkZWZpbmUg QVNMQ19TRVRfQkFDS0xJR0hUCQkoMSA8PCAxKQo+Pj4gKyNkZWZpbmUgQVNMQ19TRVRfUEZJVAkJ CSgxIDw8IDIpCj4+PiArI2RlZmluZSBBU0xDX1NFVF9QV01fRlJFUQkJKDEgPDwgMykKPj4+ICsj ZGVmaW5lIEFTTENfU1VQUE9SVEVEX1JPVEFUSU9OX0FOR0xFUwkoMSA8PCA0KQo+Pj4gKyNkZWZp bmUgQVNMQ19CVVRUT05fQVJSQVkJCSgxIDw8IDUpCj4+PiArI2RlZmluZSBBU0xDX0NPTlZFUlRJ QkxFX0lORElDQVRPUgkoMSA8PCA2KQo+Pj4gKyNkZWZpbmUgQVNMQ19ET0NLSU5HX0lORElDQVRP UgkJKDEgPDwgNykKPj4+ICsjZGVmaW5lIEFTTENfSVNDVF9TVEFURV9DSEFOR0UJCSgxIDw8IDgp Cj4+PiArI2RlZmluZSBBU0xDX1JFUV9NU0sJCQkweDFmZgo+Pj4gKy8qIHJlc3BvbnNlIGJpdHMg Ki8KPj4+ICsjZGVmaW5lIEFTTENfQUxTX0lMTFVNX0ZBSUxFRAkJKDEgPDwgMTApCj4+PiArI2Rl ZmluZSBBU0xDX0JBQ0tMSUdIVF9GQUlMRUQJCSgxIDw8IDEyKQo+Pj4gKyNkZWZpbmUgQVNMQ19Q RklUX0ZBSUxFRAkJKDEgPDwgMTQpCj4+PiArI2RlZmluZSBBU0xDX1BXTV9GUkVRX0ZBSUxFRAkJ KDEgPDwgMTYpCj4+PiArI2RlZmluZSBBU0xDX1JPVEFUSU9OX0FOR0xFU19GQUlMRUQJKDEgPDwg MTgpCj4+PiArI2RlZmluZSBBU0xDX0JVVFRPTl9BUlJBWV9GQUlMRUQJKDEgPDwgMjApCj4+PiAr I2RlZmluZSBBU0xDX0NPTlZFUlRJQkxFX0ZBSUxFRAkJKDEgPDwgMjIpCj4+PiArI2RlZmluZSBB U0xDX0RPQ0tJTkdfRkFJTEVECQkoMSA8PCAyNCkKPj4+ICsjZGVmaW5lIEFTTENfSVNDVF9TVEFU RV9GQUlMRUQJCSgxIDw8IDI2KQo+Pj4gKwo+Pj4gKy8qIFRlY2hub2xvZ3kgZW5hYmxlZCBpbmRp Y2F0b3IgKi8KPj4+ICsjZGVmaW5lIEFTTEVfVENIRV9BTFNfRU4JKDEgPDwgMCkKPj4+ICsjZGVm aW5lIEFTTEVfVENIRV9CTENfRU4JKDEgPDwgMSkKPj4+ICsjZGVmaW5lIEFTTEVfVENIRV9QRklU X0VOCSgxIDw8IDIpCj4+PiArI2RlZmluZSBBU0xFX1RDSEVfUEZNQl9FTgkoMSA8PCAzKQo+Pj4g Kwo+Pj4gKy8qIEFTTEUgYmFja2xpZ2h0IGJyaWdodG5lc3MgdG8gc2V0ICovCj4+PiArI2RlZmlu ZSBBU0xFX0JDTFBfVkFMSUQgICAgICAgICAgICAgICAgKDE8PDMxKQo+Pj4gKyNkZWZpbmUgQVNM RV9CQ0xQX01TSyAgICAgICAgICAofigxPDwzMSkpCj4+PiArCj4+PiArLyogQVNMRSBwYW5lbCBm aXR0aW5nIHJlcXVlc3QgKi8KPj4+ICsjZGVmaW5lIEFTTEVfUEZJVF9WQUxJRCAgICAgICAgICgx PDwzMSkKPj4+ICsjZGVmaW5lIEFTTEVfUEZJVF9DRU5URVIgKDE8PDApCj4+PiArI2RlZmluZSBB U0xFX1BGSVRfU1RSRVRDSF9URVhUICgxPDwxKSAjZGVmaW5lCj4+QVNMRV9QRklUX1NUUkVUQ0hf R0ZYCj4+PiArKDE8PDIpCj4+PiArCj4+PiArLyogUFdNIGZyZXF1ZW5jeSBhbmQgbWluaW11bSBi cmlnaHRuZXNzICovICNkZWZpbmUKPj4+ICtBU0xFX1BGTUJfQlJJR0hUTkVTU19NQVNLICgweGZm KSAjZGVmaW5lCj4+QVNMRV9QRk1CX0JSSUdIVE5FU1NfVkFMSUQKPj4+ICsoMTw8OCkgI2RlZmlu ZSBBU0xFX1BGTUJfUFdNX01BU0sgKDB4N2ZmZmZlMDApICNkZWZpbmUKPj4+ICtBU0xFX1BGTUJf UFdNX1ZBTElEICgxPDwzMSkKPj4+ICsKPj4+ICsjZGVmaW5lIEFTTEVfQ0JMVl9WQUxJRCAgICAg ICAgICgxPDwzMSkKPj4+ICsKPj4+ICsvKiBJVUVSICovCj4+PiArI2RlZmluZSBBU0xFX0lVRVJf RE9DS0lORwkJKDEgPDwgNykKPj4+ICsjZGVmaW5lIEFTTEVfSVVFUl9DT05WRVJUSUJMRQkJKDEg PDwgNikKPj4+ICsjZGVmaW5lIEFTTEVfSVVFUl9ST1RBVElPTl9MT0NLX0JUTgkoMSA8PCA0KQo+ Pj4gKyNkZWZpbmUgQVNMRV9JVUVSX1ZPTFVNRV9ET1dOX0JUTgkoMSA8PCAzKQo+Pj4gKyNkZWZp bmUgQVNMRV9JVUVSX1ZPTFVNRV9VUF9CVE4JCSgxIDw8IDIpCj4+PiArI2RlZmluZSBBU0xFX0lV RVJfV0lORE9XU19CVE4JCSgxIDw8IDEpCj4+PiArI2RlZmluZSBBU0xFX0lVRVJfUE9XRVJfQlRO CQkoMSA8PCAwKQo+Pj4gKwo+Pj4gKy8qIFNvZnR3YXJlIFN5c3RlbSBDb250cm9sIEludGVycnVw dCAoU1dTQ0kpICovCj4+PiArI2RlZmluZSBTV1NDSV9TQ0lDX0lORElDQVRPUgkJKDEgPDwgMCkK Pj4+ICsjZGVmaW5lIFNXU0NJX1NDSUNfTUFJTl9GVU5DVElPTl9TSElGVAkxCj4+PiArI2RlZmlu ZSBTV1NDSV9TQ0lDX01BSU5fRlVOQ1RJT05fTUFTSwkoMHhmIDw8IDEpCj4+PiArI2RlZmluZSBT V1NDSV9TQ0lDX1NVQl9GVU5DVElPTl9TSElGVAk4Cj4+PiArI2RlZmluZSBTV1NDSV9TQ0lDX1NV Ql9GVU5DVElPTl9NQVNLCSgweGZmIDw8IDgpCj4+PiArI2RlZmluZSBTV1NDSV9TQ0lDX0VYSVRf UEFSQU1FVEVSX1NISUZUCTgKPj4+ICsjZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9QQVJBTUVURVJf TUFTSwkoMHhmZiA8PCA4KQo+Pj4gKyNkZWZpbmUgU1dTQ0lfU0NJQ19FWElUX1NUQVRVU19TSElG VAk1Cj4+PiArI2RlZmluZSBTV1NDSV9TQ0lDX0VYSVRfU1RBVFVTX01BU0sJKDcgPDwgNSkKPj4+ ICsjZGVmaW5lIFNXU0NJX1NDSUNfRVhJVF9TVEFUVVNfU1VDQ0VTUwkxCj4+PiArCj4+PiArI2Rl ZmluZSBTV1NDSV9GVU5DVElPTl9DT0RFKG1haW4sIHN1YikgXAo+Pj4gKwkoKG1haW4pIDw8IFNX U0NJX1NDSUNfTUFJTl9GVU5DVElPTl9TSElGVCB8IFwKPj4+ICsJIChzdWIpIDw8IFNXU0NJX1ND SUNfU1VCX0ZVTkNUSU9OX1NISUZUKQo+Pj4gKwo+Pj4gKy8qIFNXU0NJOiBHZXQgQklPUyBEYXRh IChHQkRBKSAqLwo+Pj4gKyNkZWZpbmUgU1dTQ0lfR0JEQQkJCTQKPj4+ICsjZGVmaW5lIFNXU0NJ X0dCREFfU1VQUE9SVEVEX0NBTExTCj4+CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfR0JEQSwg MCkKPj4+ICsjZGVmaW5lIFNXU0NJX0dCREFfUkVRVUVTVEVEX0NBTExCQUNLUwo+PglTV1NDSV9G VU5DVElPTl9DT0RFKFNXU0NJX0dCREEsIDEpCj4+PiArI2RlZmluZSBTV1NDSV9HQkRBX0JPT1Rf RElTUExBWV9QUkVGCj4+CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfR0JEQSwgNCkKPj4+ICsj ZGVmaW5lIFNXU0NJX0dCREFfUEFORUxfREVUQUlMUwo+PglTV1NDSV9GVU5DVElPTl9DT0RFKFNX U0NJX0dCREEsIDUpCj4+PiArI2RlZmluZSBTV1NDSV9HQkRBX1RWX1NUQU5EQVJECj4+CVNXU0NJ X0ZVTkNUSU9OX0NPREUoU1dTQ0lfR0JEQSwgNikKPj4+ICsjZGVmaW5lIFNXU0NJX0dCREFfSU5U RVJOQUxfR1JBUEhJQ1MKPj4JU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9HQkRBLCA3KQo+Pj4g KyNkZWZpbmUgU1dTQ0lfR0JEQV9TUFJFQURfU1BFQ1RSVU0KPj4JU1dTQ0lfRlVOQ1RJT05fQ09E RShTV1NDSV9HQkRBLCAxMCkKPj4+ICsKPj4+ICsvKiBTV1NDSTogU3lzdGVtIEJJT1MgQ2FsbGJh Y2tzIChTQkNCKSAqLwo+Pj4gKyNkZWZpbmUgU1dTQ0lfU0JDQgkJCTYKPj4+ICsjZGVmaW5lIFNX U0NJX1NCQ0JfU1VQUE9SVEVEX0NBTExCQUNLUwo+PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJ X1NCQ0IsIDApCj4+PiArI2RlZmluZSBTV1NDSV9TQkNCX0lOSVRfQ09NUExFVElPTgo+PglTV1ND SV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDEpCj4+PiArI2RlZmluZSBTV1NDSV9TQkNCX1BS RV9ISVJFU19TRVRfTU9ERQo+PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDMpCj4+ PiArI2RlZmluZSBTV1NDSV9TQkNCX1BPU1RfSElSRVNfU0VUX01PREUKPj4JU1dTQ0lfRlVOQ1RJ T05fQ09ERShTV1NDSV9TQkNCLCA0KQo+Pj4gKyNkZWZpbmUgU1dTQ0lfU0JDQl9ESVNQTEFZX1NX SVRDSAo+PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDUpCj4+PiArI2RlZmluZSBT V1NDSV9TQkNCX1NFVF9UVl9GT1JNQVQKPj4JU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNC LCA2KQo+Pj4gKyNkZWZpbmUgU1dTQ0lfU0JDQl9BREFQVEVSX1BPV0VSX1NUQVRFCj4+CVNXU0NJ X0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgNykKPj4+ICsjZGVmaW5lIFNXU0NJX1NCQ0JfRElT UExBWV9QT1dFUl9TVEFURQo+PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDgpCj4+ PiArI2RlZmluZSBTV1NDSV9TQkNCX1NFVF9CT09UX0RJU1BMQVkKPj4JU1dTQ0lfRlVOQ1RJT05f Q09ERShTV1NDSV9TQkNCLCA5KQo+Pj4gKyNkZWZpbmUgU1dTQ0lfU0JDQl9TRVRfUEFORUxfREVU QUlMUwo+PglTV1NDSV9GVU5DVElPTl9DT0RFKFNXU0NJX1NCQ0IsIDEwKQo+Pj4gKyNkZWZpbmUg U1dTQ0lfU0JDQl9TRVRfSU5URVJOQUxfR0ZYCj4+CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lf U0JDQiwgMTEpCj4+PiArI2RlZmluZSBTV1NDSV9TQkNCX1BPU1RfSElSRVNfVE9fRE9TX0ZTCj4+ CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgMTYpCj4+PiArI2RlZmluZSBTV1NDSV9T QkNCX1NVU1BFTkRfUkVTVU1FCj4+CVNXU0NJX0ZVTkNUSU9OX0NPREUoU1dTQ0lfU0JDQiwgMTcp Cj4+PiArI2RlZmluZSBTV1NDSV9TQkNCX1NFVF9TUFJFQURfU1BFQ1RSVU0KPj4JU1dTQ0lfRlVO Q1RJT05fQ09ERShTV1NDSV9TQkNCLCAxOCkKPj4+ICsjZGVmaW5lIFNXU0NJX1NCQ0JfUE9TVF9W QkVfUE0KPj4JU1dTQ0lfRlVOQ1RJT05fQ09ERShTV1NDSV9TQkNCLCAxOSkKPj4+ICsjZGVmaW5l IFNXU0NJX1NCQ0JfRU5BQkxFX0RJU0FCTEVfQVVESU8KPj4JU1dTQ0lfRlVOQ1RJT05fQ09ERShT V1NDSV9TQkNCLCAyMSkKPj4+ICsKPj4+ICsjZGVmaW5lIEFDUElfT1RIRVJfT1VUUFVUICgwPDw4 KQo+Pj4gKyNkZWZpbmUgQUNQSV9WR0FfT1VUUFVUICgxPDw4KQo+Pj4gKyNkZWZpbmUgQUNQSV9U Vl9PVVRQVVQgKDI8PDgpCj4+PiArI2RlZmluZSBBQ1BJX0RJR0lUQUxfT1VUUFVUICgzPDw4KQo+ Pj4gKyNkZWZpbmUgQUNQSV9MVkRTX09VVFBVVCAoNDw8OCkKPj4+ICsKPj4+ICsjZGVmaW5lIE1B WF9EU0xQCTE1MDAKPj4KPj5UaGUgYm90dG9tIGxpbmUgaGVyZSBpcyB0aGF0IEkgdGhpbmsgeW91 IGNvdWxkIGdldCBhbGwgb2YgdGhpcyBkb25lIHdpdGgKPj4qbXVjaCogc21hbGxlciBjaGFuZ2Vz LiBJZiB3ZSBnZXQgYSByZWdyZXNzaW9uIHJlcG9ydCBwb2ludGluZyBhdCB0aGlzIHBhdGNoLAo+ PndlJ2xsIGhhdmUgYSBsb3Qgb2YgZGVidWdnaW5nIHRvIGRvIHRvIGZpZ3VyZSBvdXQgd2hhdCBm YWlsZWQuCj4+Cj4gW0RlZXBhayBNXSBPa2F5IHdpbGwgdHJ5IHRvIGJyZWFrIHRoaXMgcGF0Y2gg aW50byBzbWFsbGVyIG9uZWBzLgo+PkJSLAo+PkphbmkuCj4+Cj4+Cj4+Cj4+PiAtLQo+Pj4gMS43 LjkuNQo+Pj4KPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cj4+Cj4+LS0KPj5KYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVj aG5vbG9neSBDZW50ZXIKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5v bG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK