From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tony Lindgren Subject: [PATCH 1/2] ARM: OMAP2+: Drop legacy board file for n900 Date: Wed, 15 Jun 2016 03:48:08 -0700 Message-ID: <1465987689-14812-2-git-send-email-tony@atomide.com> References: <1465987689-14812-1-git-send-email-tony@atomide.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1465987689-14812-1-git-send-email-tony@atomide.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: linux-omap@vger.kernel.org Cc: Ivaylo Dimitrov , Arnd Bergmann , Aaro Koskinen , Kevin Hilman , Timo Kokkonen , Sebastian Reichel , Russell King , Pavel Machek , =?UTF-8?q?Pali=20Roh=C3=A1r?= , Olof Johansson , linux-arm-kernel@lists.infradead.org List-Id: linux-omap@vger.kernel.org TGV0J3MgZHJvcCB0aGUgbGFzdCB0d28gcmVtYWluaW5nIG9tYXAzIGxlZ2FjeSBib290IGJvYXJk IGZpbGVzLgpMZXQncyBvbmx5IHVzZSB0aGUgZGV2aWNlIHRyZWUgYmFzZWQgYm9vdGluZyBrbm93 biB0byB3b3JrIGZvcgp0aGVzZSB0d28gYm9hcmRzLgoKV2Ugc3RpbGwgaGF2ZSB0d28gb21hcDMg Ym9hcmRzIGJvb3RpbmcgaW4gbGVnYWN5IG1vZGUgaW4gYWRkaXRpb24KdG8gZGV2aWNlIHRyZWUg YmFzZWQgYm9vdGluZy4gQWxsIHRoZSBvdGhlciB0ZW4gb3Igc28gb21hcDIrIFNvQ3MKaGF2ZSBi ZWVuIGJvb3RpbmcgdXNpbmcgZGV2aWNlIHRyZWUgbW9kZSBvbmx5IGZvciB5ZWFycyBub3cuIFRo aXMKaGFzIGFsbG93ZWQgdXMgdG8gZ2V0IHJpZCBvZiBxdWl0ZSBhIGJpdCBvZiBhcmNoL2FybS9t YWNoLW9tYXAyCnJlbGF0ZWQgcGxhdGZvcm0gaW5pdCBjb2RlIGluIGZhdm9yIG9mIGR0cyBhbmQg ZHJpdmVyIGNoYW5nZXMuCgpQcmV0dHkgbXVjaCB0aGUgb25seSByZW1haW5pbmcga25vd24gdXNl cnMgZm9yIG9tYXAzIGxlZ2FjeSBib290CmJvYXJkIGZpbGVzIGFyZSBLZXZpbidzIGFuZCBSdXNz ZWxsJ3MgYm9vdCB0ZXN0IHN5c3RlbXMsIGFuZCBOOTAwCmtlcm5lbCB0cmVlIG1haW50YWluZWQg YnkgUGFsaSBhbmQgSXZheWxvLiBBbmQgYWxsIG9mIHRoZW0gYXJlCmFsc28gc3VwcG9ydGluZyB0 aGUgZGV2aWNlIHRyZWUgYmFzZWQgYm9vdGluZy4gVGhlIGxlZ2FjeSBib290aW5nCm1vZGUgaGFz IGJlZW4ga2VwdCBhcm91bmQgbW9zdGx5IHRvIHZlcmlmeSBhZ2FpbnN0IHJlZ3Jlc3Npb25zLgoK QXMgdGhlcmUgaXMgc3RpbGwgYSBzbGltIGNoYW5jZSBvZiBwb3NzaWJsZSBvdGhlciB1c2VzIG9m IHRoZQptYWlubGluZSBrZXJuZWwgZm9yIHRoZXNlIGJvYXJkcywgbGV0J3MganVzdCBkcm9wIHRo ZSBib2FyZApmaWxlcyBmb3IgdjQuOCwgYW5kIGxldCdzIG5vdCB0b3VjaCB0aGUgcmVsYXRlZCBw bGF0Zm9ybSBpbml0CmNvZGUgdW50aWwgYXJvdW5kIHY0LjkgdGltZSBpZiBubyBpc3N1ZXMgYXJl IGZvdW5kLiBUaGlzIG1ha2VzCml0IHRyaXZpYWwgZm9yIHVzIHRvIGFkZCBiYWNrIHRoZSBib2Fy ZCBmaWxlcyB3aXRoIGEgc2ltcGxlIHJldmVydC4KClNpZ25lZC1vZmYtYnk6IFRvbnkgTGluZGdy ZW4gPHRvbnlAYXRvbWlkZS5jb20+Ci0tLQogYXJjaC9hcm0vbWFjaC1vbWFwMi9LY29uZmlnICAg ICAgICAgICAgICAgICAgfCAgICA2IC0KIGFyY2gvYXJtL21hY2gtb21hcDIvTWFrZWZpbGUgICAg ICAgICAgICAgICAgIHwgICAgMyAtCiBhcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJkLXJ4NTEtcGVy aXBoZXJhbHMuYyB8IDEzMTcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGFyY2gvYXJtL21h Y2gtb21hcDIvYm9hcmQtcng1MS12aWRlby5jICAgICAgIHwgICA2NyAtLQogYXJjaC9hcm0vbWFj aC1vbWFwMi9ib2FyZC1yeDUxLmMgICAgICAgICAgICAgfCAgMTQxIC0tLQogYXJjaC9hcm0vbWFj aC1vbWFwMi9ib2FyZC1yeDUxLmggICAgICAgICAgICAgfCAgIDExIC0KIDYgZmlsZXMgY2hhbmdl ZCwgMTU0NSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9tYWNoLW9t YXAyL2JvYXJkLXJ4NTEtcGVyaXBoZXJhbHMuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJt L21hY2gtb21hcDIvYm9hcmQtcng1MS12aWRlby5jCiBkZWxldGUgbW9kZSAxMDA2NDQgYXJjaC9h cm0vbWFjaC1vbWFwMi9ib2FyZC1yeDUxLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBhcmNoL2FybS9t YWNoLW9tYXAyL2JvYXJkLXJ4NTEuaAoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIv S2NvbmZpZyBiL2FyY2gvYXJtL21hY2gtb21hcDIvS2NvbmZpZwppbmRleCAwNTE3ZjBjLi4zYzZi MDcwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL0tjb25maWcKKysrIGIvYXJjaC9h cm0vbWFjaC1vbWFwMi9LY29uZmlnCkBAIC0yMTgsMTIgKzIxOCw2IEBAIGNvbmZpZyBNQUNIX05P S0lBX044WDAKIAlzZWxlY3QgTUFDSF9OT0tJQV9OODEwCiAJc2VsZWN0IE1BQ0hfTk9LSUFfTjgx MF9XSU1BWAogCi1jb25maWcgTUFDSF9OT0tJQV9SWDUxCi0JYm9vbCAiTm9raWEgTjkwMCAoUlgt NTEpIHBob25lIgotCWRlcGVuZHMgb24gQVJDSF9PTUFQMwotCWRlZmF1bHQgeQotCXNlbGVjdCBP TUFQX1BBQ0tBR0VfQ0JCCi0KIGNvbmZpZyBPTUFQM19TRFJDX0FDX1RJTUlORwogCWJvb2wgIkVu YWJsZSBTRFJDIEFDIHRpbWluZyByZWdpc3RlciBjaGFuZ2VzIgogCWRlcGVuZHMgb24gQVJDSF9P TUFQMwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9NYWtlZmlsZSBiL2FyY2gvYXJt L21hY2gtb21hcDIvTWFrZWZpbGUKaW5kZXggMDRlMjc2Yy4uODY2MDg4OSAxMDA2NDQKLS0tIGEv YXJjaC9hcm0vbWFjaC1vbWFwMi9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL01h a2VmaWxlCkBAIC0yMzAsOSArMjMwLDYgQEAgb2JqLSQoQ09ORklHX1NPQ19PTUFQMjQyMCkJCSs9 IG1zZGkubwogb2JqLSQoQ09ORklHX01BQ0hfT01BUF9HRU5FUklDKQkJKz0gYm9hcmQtZ2VuZXJp Yy5vIHBkYXRhLXF1aXJrcy5vCiBvYmotJChDT05GSUdfTUFDSF9PTUFQX0xEUCkJCSs9IGJvYXJk LWxkcC5vCiBvYmotJChDT05GSUdfTUFDSF9OT0tJQV9OOFgwKQkJKz0gYm9hcmQtbjh4MC5vCi1v YmotJChDT05GSUdfTUFDSF9OT0tJQV9SWDUxKQkJKz0gYm9hcmQtcng1MS5vIHNkcmFtLW5va2lh Lm8KLW9iai0kKENPTkZJR19NQUNIX05PS0lBX1JYNTEpCQkrPSBib2FyZC1yeDUxLXBlcmlwaGVy YWxzLm8KLW9iai0kKENPTkZJR19NQUNIX05PS0lBX1JYNTEpCQkrPSBib2FyZC1yeDUxLXZpZGVv Lm8KIAogIyBQbGF0Zm9ybSBzcGVjaWZpYyBkZXZpY2UgaW5pdCBjb2RlCiAKZGlmZiAtLWdpdCBh L2FyY2gvYXJtL21hY2gtb21hcDIvYm9hcmQtcng1MS1wZXJpcGhlcmFscy5jIGIvYXJjaC9hcm0v bWFjaC1vbWFwMi9ib2FyZC1yeDUxLXBlcmlwaGVyYWxzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDlhNzA3MzkuLjAwMDAwMDAKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9ib2Fy ZC1yeDUxLXBlcmlwaGVyYWxzLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzE3ICswLDAgQEAKLS8q Ci0gKiBsaW51eC9hcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJkLXJ4NTEtcGVyaXBoZXJhbHMuYwot ICoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDA5IE5va2lhCi0gKgotICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyIGFzCi0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KLSAqLwotCi0jaW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5p dC5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4 L2lucHV0Lmg+Ci0jaW5jbHVkZSA8bGludXgvaW5wdXQvbWF0cml4X2tleXBhZC5oPgotI2luY2x1 ZGUgPGxpbnV4L3NwaS9zcGkuaD4KLSNpbmNsdWRlIDxsaW51eC93bDEyeHguaD4KLSNpbmNsdWRl IDxsaW51eC9zcGkvdHNjMjAwNS5oPgotI2luY2x1ZGUgPGxpbnV4L2kyYy5oPgotI2luY2x1ZGUg PGxpbnV4L2kyYy90d2wuaD4KLSNpbmNsdWRlIDxsaW51eC9jbGsuaD4KLSNpbmNsdWRlIDxsaW51 eC9kZWxheS5oPgotI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9tYWNoaW5lLmg+Ci0jaW5jbHVk ZSA8bGludXgvZ3Bpby5oPgotI2luY2x1ZGUgPGxpbnV4L2dwaW9fa2V5cy5oPgotI2luY2x1ZGUg PGxpbnV4L2dwaW8vbWFjaGluZS5oPgotI2luY2x1ZGUgPGxpbnV4L29tYXAtZ3BtYy5oPgotI2lu Y2x1ZGUgPGxpbnV4L21tYy9ob3N0Lmg+Ci0jaW5jbHVkZSA8bGludXgvcG93ZXIvaXNwMTcwNF9j aGFyZ2VyLmg+Ci0jaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGF0YS9zcGktb21hcDItbWNzcGku aD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kYXRhL210ZC1vbmVuYW5kLW9tYXAyLmg+Ci0K LSNpbmNsdWRlIDxwbGF0L2RtdGltZXIuaD4KLQotI2luY2x1ZGUgPGFzbS9zeXN0ZW1faW5mby5o PgotCi0jaW5jbHVkZSAiY29tbW9uLmgiCi0jaW5jbHVkZSA8bGludXgvb21hcC1kbWEuaD4KLQot I2luY2x1ZGUgImJvYXJkLXJ4NTEuaCIKLQotI2luY2x1ZGUgPHNvdW5kL3RsdjMyMGFpYzN4Lmg+ Ci0jaW5jbHVkZSA8c291bmQvdHBhNjEzMGEyLXBsYXQuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kYXRhL21lZGlhL3NpNDcxMy5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RhdGEv bGVkcy1scDU1eHguaD4KLQotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RhdGEvdHNsMjU2My5o PgotI2luY2x1ZGUgPGxpbnV4L2xpczNsdjAyZC5oPgotCi0jaW5jbHVkZSA8dmlkZW8vb21hcC1w YW5lbC1kYXRhLmg+Ci0KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kYXRhL3B3bV9vbWFwX2Rt dGltZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kYXRhL21lZGlhL2lyLXJ4NTEuaD4K LQotI2luY2x1ZGUgIm11eC5oIgotI2luY2x1ZGUgIm9tYXAtcG0uaCIKLSNpbmNsdWRlICJoc21t Yy5oIgotI2luY2x1ZGUgImNvbW1vbi1ib2FyZC1kZXZpY2VzLmgiCi0jaW5jbHVkZSAic29jLmgi Ci0jaW5jbHVkZSAib21hcC1zZWN1cmUuaCIKLQotI2RlZmluZSBTWVNURU1fUkVWX0JfVVNFU19W QVVYMwkweDE2OTkKLSNkZWZpbmUgU1lTVEVNX1JFVl9TX1VTRVNfVkFVWDMgMHg4Ci0KLSNkZWZp bmUgUlg1MV9XTDEyNTFfUE9XRVJfR1BJTwkJODcKLSNkZWZpbmUgUlg1MV9XTDEyNTFfSVJRX0dQ SU8JCTQyCi0jZGVmaW5lIFJYNTFfRk1UWF9SRVNFVF9HUElPCQkxNjMKLSNkZWZpbmUgUlg1MV9G TVRYX0lSUQkJCTUzCi0jZGVmaW5lIFJYNTFfTFA1NTIzX0NISVBfRU5fR1BJTwk0MQotCi0jZGVm aW5lIFJYNTFfVVNCX1RSQU5TQ0VJVkVSX1JTVF9HUElPCTY3Ci0KLSNkZWZpbmUgUlg1MV9UU0My MDA1X1JFU0VUX0dQSU8gICAgICAgICAxMDQKLSNkZWZpbmUgUlg1MV9UU0MyMDA1X0lSUV9HUElP ICAgICAgICAgICAxMDAKLQotI2RlZmluZSBMSVMzMDJfSVJRMV9HUElPIDE4MQotI2RlZmluZSBM SVMzMDJfSVJRMl9HUElPIDE4MCAgLyogTm90IHlldCBpbiB1c2UgKi8KLQotLyogTGlzdCBhbGwg U1BJIGRldmljZXMgaGVyZS4gTm90ZSB0aGF0IHRoZSBsaXN0L3Byb2JlIG9yZGVyIHNlZW1zIHRv IG1hdHRlciEgKi8KLWVudW0gewotCVJYNTFfU1BJX1dMMTI1MSwKLQlSWDUxX1NQSV9UU0MyMDA1 LAkvKiBUb3VjaCBDb250cm9sbGVyICovCi0JUlg1MV9TUElfTUlQSUQsCQkvKiBMQ0QgcGFuZWwg Ki8KLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qgd2wxMjUxX3BsYXRmb3JtX2RhdGEgd2wxMjUxX3BkYXRh Owotc3RhdGljIHN0cnVjdCB0c2MyMDA1X3BsYXRmb3JtX2RhdGEgdHNjMjAwNV9wZGF0YTsKLQot I2lmIGRlZmluZWQoQ09ORklHX1NFTlNPUlNfTElTM19JMkMpIHx8IGRlZmluZWQoQ09ORklHX1NF TlNPUlNfTElTM19JMkNfTU9EVUxFKQotc3RhdGljIGludCBsaXMzMDJfc2V0dXAodm9pZCkKLXsK LQlpbnQgZXJyOwotCWludCBpcnExID0gTElTMzAyX0lSUTFfR1BJTzsKLQlpbnQgaXJxMiA9IExJ UzMwMl9JUlEyX0dQSU87Ci0KLQkvKiBncGlvIGZvciBpbnRlcnJ1cHQgcGluIDEgKi8KLQllcnIg PSBncGlvX3JlcXVlc3QoaXJxMSwgImxpczNsdjAyZGxfaXJxMSIpOwotCWlmIChlcnIpIHsKLQkJ cHJpbnRrKEtFUk5fRVJSICJsaXMzbHYwMmRsOiBncGlvIHJlcXVlc3QgZmFpbGVkXG4iKTsKLQkJ Z290byBvdXQ7Ci0JfQotCi0JLyogZ3BpbyBmb3IgaW50ZXJydXB0IHBpbiAyICovCi0JZXJyID0g Z3Bpb19yZXF1ZXN0KGlycTIsICJsaXMzbHYwMmRsX2lycTIiKTsKLQlpZiAoZXJyKSB7Ci0JCWdw aW9fZnJlZShpcnExKTsKLQkJcHJpbnRrKEtFUk5fRVJSICJsaXMzbHYwMmRsOiBncGlvIHJlcXVl c3QgZmFpbGVkXG4iKTsKLQkJZ290byBvdXQ7Ci0JfQotCi0JZ3Bpb19kaXJlY3Rpb25faW5wdXQo aXJxMSk7Ci0JZ3Bpb19kaXJlY3Rpb25faW5wdXQoaXJxMik7Ci0KLW91dDoKLQlyZXR1cm4gZXJy OwotfQotCi1zdGF0aWMgaW50IGxpczMwMl9yZWxlYXNlKHZvaWQpCi17Ci0JZ3Bpb19mcmVlKExJ UzMwMl9JUlExX0dQSU8pOwotCWdwaW9fZnJlZShMSVMzMDJfSVJRMl9HUElPKTsKLQotCXJldHVy biAwOwotfQotCi1zdGF0aWMgc3RydWN0IGxpczNsdjAyZF9wbGF0Zm9ybV9kYXRhIHJ4NTFfbGlz M2x2MDJkX2RhdGEgPSB7Ci0JLmNsaWNrX2ZsYWdzICAgID0gTElTM19DTElDS19TSU5HTEVfWCB8 IExJUzNfQ0xJQ0tfU0lOR0xFX1kgfAotCQkJICBMSVMzX0NMSUNLX1NJTkdMRV9aLAotCS8qIExp bWl0cyBhcmUgMC41ZyAqIHZhbHVlICovCi0JLmNsaWNrX3RocmVzaF94ID0gOCwKLQkuY2xpY2tf dGhyZXNoX3kgPSA4LAotCS5jbGlja190aHJlc2hfeiA9IDEwLAotCS8qIENsaWNrIG11c3QgYmUg bG9uZ2VyIHRoYW4gdGltZSBsaW1pdCAqLwotCS5jbGlja190aW1lX2xpbWl0ID0gOSwKLQkvKiBL aW5kIG9mIGRlYm91bmNlIGZpbHRlciAqLwotCS5jbGlja19sYXRlbmN5ICAgID0gNTAsCi0KLQkv KiBMaW1pdHMgZm9yIGFsbCBheGlzLiBtaWxsaWctdmFsdWUgLyAxOCB0byBnZXQgSFcgdmFsdWVz ICovCi0JLndha2V1cF9mbGFncyA9IExJUzNfV0FLRVVQX1hfSEkgfCBMSVMzX1dBS0VVUF9ZX0hJ LAotCS53YWtldXBfdGhyZXNoID0gODAwIC8gMTgsCi0JLndha2V1cF9mbGFnczIgPSBMSVMzX1dB S0VVUF9aX0hJICwKLQkud2FrZXVwX3RocmVzaDIgPSA5MDAgLyAxOCwKLQotCS5oaXBhc3NfY3Ry bCA9IExJUzNfSElQQVNTMV9ESVNBQkxFIHwgTElTM19ISVBBU1MyX0RJU0FCTEUsCi0KLQkvKiBJ bnRlcnJ1cHQgbGluZSAyIGZvciBjbGljayBkZXRlY3Rpb24sIGxpbmUgMSBmb3IgdGhyZXNob2xk cyAqLwotCS5pcnFfY2ZnID0gTElTM19JUlEyX0NMSUNLIHwgTElTM19JUlExX0ZGX1dVXzEyLAot Ci0JLmF4aXNfeCA9IExJUzNfREVWX1gsCi0JLmF4aXNfeSA9IExJUzNfSU5WX0RFVl9ZLAotCS5h eGlzX3ogPSBMSVMzX0lOVl9ERVZfWiwKLQkuc2V0dXBfcmVzb3VyY2VzID0gbGlzMzAyX3NldHVw LAotCS5yZWxlYXNlX3Jlc291cmNlcyA9IGxpczMwMl9yZWxlYXNlLAotCS5zdF9taW5fbGltaXRz ID0gey0zMiwgMywgM30sCi0JLnN0X21heF9saW1pdHMgPSB7LTMsIDMyLCAzMn0sCi19OwotI2Vu ZGlmCi0KLSNpZiBkZWZpbmVkKENPTkZJR19TRU5TT1JTX1RTTDI1NjMpIHx8IGRlZmluZWQoQ09O RklHX1NFTlNPUlNfVFNMMjU2M19NT0RVTEUpCi1zdGF0aWMgc3RydWN0IHRzbDI1NjNfcGxhdGZv cm1fZGF0YSByeDUxX3RzbDI1NjNfcGxhdGZvcm1fZGF0YSA9IHsKLQkuY292ZXJfY29tcF9nYWlu ID0gMTYsCi19OwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKENPTkZJR19MRURTX0xQNTUyMykgfHwg ZGVmaW5lZChDT05GSUdfTEVEU19MUDU1MjNfTU9EVUxFKQotc3RhdGljIHN0cnVjdCBscDU1eHhf bGVkX2NvbmZpZyByeDUxX2xwNTUyM19sZWRfY29uZmlnW10gPSB7Ci0JewotCQkubmFtZQkJPSAi bHA1NTIzOmtiMSIsCi0JCS5jaGFuX25yCT0gMCwKLQkJLmxlZF9jdXJyZW50CT0gNTAsCi0JCS5t YXhfY3VycmVudAk9IDEwMCwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJscDU1MjM6a2IyIiwKLQkJLmNo YW5fbnIJPSAxLAotCQkubGVkX2N1cnJlbnQJPSA1MCwKLQkJLm1heF9jdXJyZW50CT0gMTAwLAot CX0sIHsKLQkJLm5hbWUJCT0gImxwNTUyMzprYjMiLAotCQkuY2hhbl9ucgk9IDIsCi0JCS5sZWRf Y3VycmVudAk9IDUwLAotCQkubWF4X2N1cnJlbnQJPSAxMDAsCi0JfSwgewotCQkubmFtZQkJPSAi bHA1NTIzOmtiNCIsCi0JCS5jaGFuX25yCT0gMywKLQkJLmxlZF9jdXJyZW50CT0gNTAsCi0JCS5t YXhfY3VycmVudAk9IDEwMCwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJscDU1MjM6YiIsCi0JCS5jaGFu X25yCT0gNCwKLQkJLmxlZF9jdXJyZW50CT0gNTAsCi0JCS5tYXhfY3VycmVudAk9IDEwMCwKLQl9 LCB7Ci0JCS5uYW1lCQk9ICJscDU1MjM6ZyIsCi0JCS5jaGFuX25yCT0gNSwKLQkJLmxlZF9jdXJy ZW50CT0gNTAsCi0JCS5tYXhfY3VycmVudAk9IDEwMCwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJscDU1 MjM6ciIsCi0JCS5jaGFuX25yCT0gNiwKLQkJLmxlZF9jdXJyZW50CT0gNTAsCi0JCS5tYXhfY3Vy cmVudAk9IDEwMCwKLQl9LCB7Ci0JCS5uYW1lCQk9ICJscDU1MjM6a2I1IiwKLQkJLmNoYW5fbnIJ PSA3LAotCQkubGVkX2N1cnJlbnQJPSA1MCwKLQkJLm1heF9jdXJyZW50CT0gMTAwLAotCX0sIHsK LQkJLm5hbWUJCT0gImxwNTUyMzprYjYiLAotCQkuY2hhbl9ucgk9IDgsCi0JCS5sZWRfY3VycmVu dAk9IDUwLAotCQkubWF4X2N1cnJlbnQJPSAxMDAsCi0JfQotfTsKLQotc3RhdGljIHN0cnVjdCBs cDU1eHhfcGxhdGZvcm1fZGF0YSByeDUxX2xwNTUyM19wbGF0Zm9ybV9kYXRhID0gewotCS5sZWRf Y29uZmlnCQk9IHJ4NTFfbHA1NTIzX2xlZF9jb25maWcsCi0JLm51bV9jaGFubmVscwkJPSBBUlJB WV9TSVpFKHJ4NTFfbHA1NTIzX2xlZF9jb25maWcpLAotCS5jbG9ja19tb2RlCQk9IExQNTVYWF9D TE9DS19BVVRPLAotCS5lbmFibGVfZ3BpbwkJPSBSWDUxX0xQNTUyM19DSElQX0VOX0dQSU8sCi19 OwotI2VuZGlmCi0KLSNkZWZpbmUgUlg1MV9MQ0RfUkVTRVRfR1BJTwk5MAotCi1zdGF0aWMgc3Ry dWN0IHBhbmVsX2FjeDU2NWFrbV9wbGF0Zm9ybV9kYXRhIGFjeF9wZGF0YSA9IHsKLQkubmFtZQkJ PSAibGNkIiwKLQkuc291cmNlCQk9ICJzZGkuMCIsCi0JLnJlc2V0X2dwaW8JPSBSWDUxX0xDRF9S RVNFVF9HUElPLAotCS5kYXRhcGFpcnMJPSAyLAotfTsKLQotc3RhdGljIHN0cnVjdCBvbWFwMl9t Y3NwaV9kZXZpY2VfY29uZmlnIHdsMTI1MV9tY3NwaV9jb25maWcgPSB7Ci0JLnR1cmJvX21vZGUJ PSAwLAotfTsKLQotc3RhdGljIHN0cnVjdCBvbWFwMl9tY3NwaV9kZXZpY2VfY29uZmlnIG1pcGlk X21jc3BpX2NvbmZpZyA9IHsKLQkudHVyYm9fbW9kZQk9IDAsCi19OwotCi1zdGF0aWMgc3RydWN0 IG9tYXAyX21jc3BpX2RldmljZV9jb25maWcgdHNjMjAwNV9tY3NwaV9jb25maWcgPSB7Ci0JLnR1 cmJvX21vZGUJPSAwLAotfTsKLQotc3RhdGljIHN0cnVjdCBzcGlfYm9hcmRfaW5mbyByeDUxX3Bl cmlwaGVyYWxzX3NwaV9ib2FyZF9pbmZvW10gX19pbml0ZGF0YSA9IHsKLQlbUlg1MV9TUElfV0wx MjUxXSA9IHsKLQkJLm1vZGFsaWFzCQk9ICJ3bDEyNTEiLAotCQkuYnVzX251bQkJPSA0LAotCQku Y2hpcF9zZWxlY3QJCT0gMCwKLQkJLm1heF9zcGVlZF9oeiAgIAk9IDQ4MDAwMDAwLAotCQkubW9k ZSAgICAgICAgICAgICAgICAgICA9IFNQSV9NT0RFXzMsCi0JCS5jb250cm9sbGVyX2RhdGEJPSAm d2wxMjUxX21jc3BpX2NvbmZpZywKLQkJLnBsYXRmb3JtX2RhdGEJCT0gJndsMTI1MV9wZGF0YSwK LQl9LAotCVtSWDUxX1NQSV9NSVBJRF0gPSB7Ci0JCS5tb2RhbGlhcwkJPSAiYWN4NTY1YWttIiwK LQkJLmJ1c19udW0JCT0gMSwKLQkJLmNoaXBfc2VsZWN0CQk9IDIsCi0JCS5tYXhfc3BlZWRfaHoJ CT0gNjAwMDAwMCwKLQkJLmNvbnRyb2xsZXJfZGF0YQk9ICZtaXBpZF9tY3NwaV9jb25maWcsCi0J CS5wbGF0Zm9ybV9kYXRhCQk9ICZhY3hfcGRhdGEsCi0JfSwKLQlbUlg1MV9TUElfVFNDMjAwNV0g PSB7Ci0JCS5tb2RhbGlhcwkJPSAidHNjMjAwNSIsCi0JCS5idXNfbnVtCQk9IDEsCi0JCS5jaGlw X3NlbGVjdAkJPSAwLAotCQkubWF4X3NwZWVkX2h6CQk9IDYwMDAwMDAsCi0JCS5jb250cm9sbGVy X2RhdGEJPSAmdHNjMjAwNV9tY3NwaV9jb25maWcsCi0JCS5wbGF0Zm9ybV9kYXRhCQk9ICZ0c2My MDA1X3BkYXRhLAotCX0sCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSByeDUx X2JhdHRlcnlfZGV2aWNlID0gewotCS5uYW1lCT0gInJ4NTEtYmF0dGVyeSIsCi0JLmlkCT0gLTEs Ci19OwotCi1zdGF0aWMgdm9pZCByeDUxX2NoYXJnZXJfc2V0X3Bvd2VyKGJvb2wgb24pCi17Ci0J Z3Bpb19zZXRfdmFsdWUoUlg1MV9VU0JfVFJBTlNDRUlWRVJfUlNUX0dQSU8sIG9uKTsKLX0KLQot c3RhdGljIHN0cnVjdCBpc3AxNzA0X2NoYXJnZXJfZGF0YSByeDUxX2NoYXJnZXJfZGF0YSA9IHsK LQkuc2V0X3Bvd2VyCT0gcng1MV9jaGFyZ2VyX3NldF9wb3dlciwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlIHJ4NTFfY2hhcmdlcl9kZXZpY2UgPSB7Ci0JLm5hbWUJPSAiaXNw MTcwNF9jaGFyZ2VyIiwKLQkuZGV2CT0gewotCQkucGxhdGZvcm1fZGF0YSA9ICZyeDUxX2NoYXJn ZXJfZGF0YSwKLQl9LAotfTsKLQotc3RhdGljIHZvaWQgX19pbml0IHJ4NTFfY2hhcmdlcl9pbml0 KHZvaWQpCi17Ci0JV0FSTl9PTihncGlvX3JlcXVlc3Rfb25lKFJYNTFfVVNCX1RSQU5TQ0VJVkVS X1JTVF9HUElPLAotCQlHUElPRl9PVVRfSU5JVF9ISUdILCAiaXNwMTcwNF9yZXNldCIpKTsKLQot CXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigmcng1MV9iYXR0ZXJ5X2RldmljZSk7Ci0JcGxhdGZv cm1fZGV2aWNlX3JlZ2lzdGVyKCZyeDUxX2NoYXJnZXJfZGV2aWNlKTsKLX0KLQotI2lmIGRlZmlu ZWQoQ09ORklHX0tFWUJPQVJEX0dQSU8pIHx8IGRlZmluZWQoQ09ORklHX0tFWUJPQVJEX0dQSU9f TU9EVUxFKQotCi0jZGVmaW5lIFJYNTFfR1BJT19DQU1FUkFfTEVOU19DT1ZFUgkxMTAKLSNkZWZp bmUgUlg1MV9HUElPX0NBTUVSQV9GT0NVUwkJNjgKLSNkZWZpbmUgUlg1MV9HUElPX0NBTUVSQV9D QVBUVVJFCTY5Ci0jZGVmaW5lIFJYNTFfR1BJT19LRVlQQURfU0xJREUJCTcxCi0jZGVmaW5lIFJY NTFfR1BJT19MT0NLX0JVVFRPTgkJMTEzCi0jZGVmaW5lIFJYNTFfR1BJT19QUk9YSU1JVFkJCTg5 Ci0KLSNkZWZpbmUgUlg1MV9HUElPX0RFQk9VTkNFX1RJTUVPVVQJMTAKLQotc3RhdGljIHN0cnVj dCBncGlvX2tleXNfYnV0dG9uIHJ4NTFfZ3Bpb19rZXlzW10gPSB7Ci0JewotCQkuZGVzYwkJCT0g IkNhbWVyYSBMZW5zIENvdmVyIiwKLQkJLnR5cGUJCQk9IEVWX1NXLAotCQkuY29kZQkJCT0gU1df Q0FNRVJBX0xFTlNfQ09WRVIsCi0JCS5ncGlvCQkJPSBSWDUxX0dQSU9fQ0FNRVJBX0xFTlNfQ09W RVIsCi0JCS5hY3RpdmVfbG93CQk9IDEsCi0JCS5kZWJvdW5jZV9pbnRlcnZhbAk9IFJYNTFfR1BJ T19ERUJPVU5DRV9USU1FT1VULAotCX0sIHsKLQkJLmRlc2MJCQk9ICJDYW1lcmEgRm9jdXMiLAot CQkudHlwZQkJCT0gRVZfS0VZLAotCQkuY29kZQkJCT0gS0VZX0NBTUVSQV9GT0NVUywKLQkJLmdw aW8JCQk9IFJYNTFfR1BJT19DQU1FUkFfRk9DVVMsCi0JCS5hY3RpdmVfbG93CQk9IDEsCi0JCS5k ZWJvdW5jZV9pbnRlcnZhbAk9IFJYNTFfR1BJT19ERUJPVU5DRV9USU1FT1VULAotCX0sIHsKLQkJ LmRlc2MJCQk9ICJDYW1lcmEgQ2FwdHVyZSIsCi0JCS50eXBlCQkJPSBFVl9LRVksCi0JCS5jb2Rl CQkJPSBLRVlfQ0FNRVJBLAotCQkuZ3BpbwkJCT0gUlg1MV9HUElPX0NBTUVSQV9DQVBUVVJFLAot CQkuYWN0aXZlX2xvdwkJPSAxLAotCQkuZGVib3VuY2VfaW50ZXJ2YWwJPSBSWDUxX0dQSU9fREVC T1VOQ0VfVElNRU9VVCwKLQl9LCB7Ci0JCS5kZXNjCQkJPSAiTG9jayBCdXR0b24iLAotCQkudHlw ZQkJCT0gRVZfS0VZLAotCQkuY29kZQkJCT0gS0VZX1NDUkVFTkxPQ0ssCi0JCS5ncGlvCQkJPSBS WDUxX0dQSU9fTE9DS19CVVRUT04sCi0JCS5hY3RpdmVfbG93CQk9IDEsCi0JCS5kZWJvdW5jZV9p bnRlcnZhbAk9IFJYNTFfR1BJT19ERUJPVU5DRV9USU1FT1VULAotCX0sIHsKLQkJLmRlc2MJCQk9 ICJLZXlwYWQgU2xpZGUiLAotCQkudHlwZQkJCT0gRVZfU1csCi0JCS5jb2RlCQkJPSBTV19LRVlQ QURfU0xJREUsCi0JCS5ncGlvCQkJPSBSWDUxX0dQSU9fS0VZUEFEX1NMSURFLAotCQkuYWN0aXZl X2xvdwkJPSAxLAotCQkuZGVib3VuY2VfaW50ZXJ2YWwJPSBSWDUxX0dQSU9fREVCT1VOQ0VfVElN RU9VVCwKLQl9LCB7Ci0JCS5kZXNjCQkJPSAiUHJveGltaXR5IFNlbnNvciIsCi0JCS50eXBlCQkJ PSBFVl9TVywKLQkJLmNvZGUJCQk9IFNXX0ZST05UX1BST1hJTUlUWSwKLQkJLmdwaW8JCQk9IFJY NTFfR1BJT19QUk9YSU1JVFksCi0JCS5hY3RpdmVfbG93CQk9IDAsCi0JCS5kZWJvdW5jZV9pbnRl cnZhbAk9IFJYNTFfR1BJT19ERUJPVU5DRV9USU1FT1VULAotCX0KLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgZ3Bpb19rZXlzX3BsYXRmb3JtX2RhdGEgcng1MV9ncGlvX2tleXNfZGF0YSA9IHsKLQkuYnV0 dG9ucwk9IHJ4NTFfZ3Bpb19rZXlzLAotCS5uYnV0dG9ucwk9IEFSUkFZX1NJWkUocng1MV9ncGlv X2tleXMpLAotfTsKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ugcng1MV9ncGlvX2tl eXNfZGV2aWNlID0gewotCS5uYW1lCT0gImdwaW8ta2V5cyIsCi0JLmlkCT0gLTEsCi0JLmRldgk9 IHsKLQkJLnBsYXRmb3JtX2RhdGEJPSAmcng1MV9ncGlvX2tleXNfZGF0YSwKLQl9LAotfTsKLQot c3RhdGljIHZvaWQgX19pbml0IHJ4NTFfYWRkX2dwaW9fa2V5cyh2b2lkKQotewotCXBsYXRmb3Jt X2RldmljZV9yZWdpc3Rlcigmcng1MV9ncGlvX2tleXNfZGV2aWNlKTsKLX0KLSNlbHNlCi1zdGF0 aWMgdm9pZCBfX2luaXQgcng1MV9hZGRfZ3Bpb19rZXlzKHZvaWQpCi17Ci19Ci0jZW5kaWYgLyog Q09ORklHX0tFWUJPQVJEX0dQSU8gfHwgQ09ORklHX0tFWUJPQVJEX0dQSU9fTU9EVUxFICovCi0K LXN0YXRpYyB1aW50MzJfdCBib2FyZF9rZXltYXBbXSA9IHsKLQkvKgotCSAqIE5vdGUgdGhhdCBL RVkoeCwgOCwgS0VZX1hYWCkgZW50cmllcyByZXByZXNlbnQgImVudHJpcmUgcm93Ci0JICogY29u bmVjdGVkIHRvIHRoZSBncm91bmQiIG1hdHJpeCBzdGF0ZS4KLQkgKi8KLQlLRVkoMCwgMCwgS0VZ X1EpLAotCUtFWSgwLCAxLCBLRVlfTyksCi0JS0VZKDAsIDIsIEtFWV9QKSwKLQlLRVkoMCwgMywg S0VZX0NPTU1BKSwKLQlLRVkoMCwgNCwgS0VZX0JBQ0tTUEFDRSksCi0JS0VZKDAsIDYsIEtFWV9B KSwKLQlLRVkoMCwgNywgS0VZX1MpLAotCi0JS0VZKDEsIDAsIEtFWV9XKSwKLQlLRVkoMSwgMSwg S0VZX0QpLAotCUtFWSgxLCAyLCBLRVlfRiksCi0JS0VZKDEsIDMsIEtFWV9HKSwKLQlLRVkoMSwg NCwgS0VZX0gpLAotCUtFWSgxLCA1LCBLRVlfSiksCi0JS0VZKDEsIDYsIEtFWV9LKSwKLQlLRVko MSwgNywgS0VZX0wpLAotCi0JS0VZKDIsIDAsIEtFWV9FKSwKLQlLRVkoMiwgMSwgS0VZX0RPVCks Ci0JS0VZKDIsIDIsIEtFWV9VUCksCi0JS0VZKDIsIDMsIEtFWV9FTlRFUiksCi0JS0VZKDIsIDUs IEtFWV9aKSwKLQlLRVkoMiwgNiwgS0VZX1gpLAotCUtFWSgyLCA3LCBLRVlfQyksCi0JS0VZKDIs IDgsIEtFWV9GOSksCi0KLQlLRVkoMywgMCwgS0VZX1IpLAotCUtFWSgzLCAxLCBLRVlfViksCi0J S0VZKDMsIDIsIEtFWV9CKSwKLQlLRVkoMywgMywgS0VZX04pLAotCUtFWSgzLCA0LCBLRVlfTSks Ci0JS0VZKDMsIDUsIEtFWV9TUEFDRSksCi0JS0VZKDMsIDYsIEtFWV9TUEFDRSksCi0JS0VZKDMs IDcsIEtFWV9MRUZUKSwKLQotCUtFWSg0LCAwLCBLRVlfVCksCi0JS0VZKDQsIDEsIEtFWV9ET1dO KSwKLQlLRVkoNCwgMiwgS0VZX1JJR0hUKSwKLQlLRVkoNCwgNCwgS0VZX0xFRlRDVFJMKSwKLQlL RVkoNCwgNSwgS0VZX1JJR0hUQUxUKSwKLQlLRVkoNCwgNiwgS0VZX0xFRlRTSElGVCksCi0JS0VZ KDQsIDgsIEtFWV9GMTApLAotCi0JS0VZKDUsIDAsIEtFWV9ZKSwKLQlLRVkoNSwgOCwgS0VZX0Yx MSksCi0KLQlLRVkoNiwgMCwgS0VZX1UpLAotCi0JS0VZKDcsIDAsIEtFWV9JKSwKLQlLRVkoNywg MSwgS0VZX0Y3KSwKLQlLRVkoNywgMiwgS0VZX0Y4KSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgbWF0 cml4X2tleW1hcF9kYXRhIGJvYXJkX21hcF9kYXRhID0gewotCS5rZXltYXAJCQk9IGJvYXJkX2tl eW1hcCwKLQkua2V5bWFwX3NpemUJCT0gQVJSQVlfU0laRShib2FyZF9rZXltYXApLAotfTsKLQot c3RhdGljIHN0cnVjdCB0d2w0MDMwX2tleXBhZF9kYXRhIHJ4NTFfa3BfZGF0YSA9IHsKLQkua2V5 bWFwX2RhdGEJPSAmYm9hcmRfbWFwX2RhdGEsCi0JLnJvd3MJCT0gOCwKLQkuY29scwkJPSA4LAot CS5yZXAJCT0gMSwKLX07Ci0KLS8qIEVuYWJsZSBpbnB1dCBsb2dpYyBhbmQgcHVsbCBhbGwgbGlu ZXMgdXAgd2hlbiBlTU1DIGlzIG9uLiAqLwotc3RhdGljIHN0cnVjdCBvbWFwX2JvYXJkX211eCBy eDUxX21tYzJfb25fbXV4W10gPSB7Ci0JT01BUDNfTVVYKFNETU1DMl9DTUQsIE9NQVBfUElOX0lO UFVUX1BVTExVUCB8IE9NQVBfTVVYX01PREUwKSwKLQlPTUFQM19NVVgoU0RNTUMyX0RBVDAsIE9N QVBfUElOX0lOUFVUX1BVTExVUCB8IE9NQVBfTVVYX01PREUwKSwKLQlPTUFQM19NVVgoU0RNTUMy X0RBVDEsIE9NQVBfUElOX0lOUFVUX1BVTExVUCB8IE9NQVBfTVVYX01PREUwKSwKLQlPTUFQM19N VVgoU0RNTUMyX0RBVDIsIE9NQVBfUElOX0lOUFVUX1BVTExVUCB8IE9NQVBfTVVYX01PREUwKSwK LQlPTUFQM19NVVgoU0RNTUMyX0RBVDMsIE9NQVBfUElOX0lOUFVUX1BVTExVUCB8IE9NQVBfTVVY X01PREUwKSwKLQlPTUFQM19NVVgoU0RNTUMyX0RBVDQsIE9NQVBfUElOX0lOUFVUX1BVTExVUCB8 IE9NQVBfTVVYX01PREUwKSwKLQlPTUFQM19NVVgoU0RNTUMyX0RBVDUsIE9NQVBfUElOX0lOUFVU X1BVTExVUCB8IE9NQVBfTVVYX01PREUwKSwKLQlPTUFQM19NVVgoU0RNTUMyX0RBVDYsIE9NQVBf UElOX0lOUFVUX1BVTExVUCB8IE9NQVBfTVVYX01PREUwKSwKLQlPTUFQM19NVVgoU0RNTUMyX0RB VDcsIE9NQVBfUElOX0lOUFVUX1BVTExVUCB8IE9NQVBfTVVYX01PREUwKSwKLQl7IC5yZWdfb2Zm c2V0ID0gT01BUF9NVVhfVEVSTUlOQVRPUiB9LAotfTsKLQotLyogRGlzYWJsZSBpbnB1dCBsb2dp YyBhbmQgcHVsbCBhbGwgbGluZXMgZG93biB3aGVuIGVNTUMgaXMgb2ZmLiAqLwotc3RhdGljIHN0 cnVjdCBvbWFwX2JvYXJkX211eCByeDUxX21tYzJfb2ZmX211eFtdID0gewotCU9NQVAzX01VWChT RE1NQzJfQ01ELCBPTUFQX1BVTExfRU5BIHwgT01BUF9NVVhfTU9ERTApLAotCU9NQVAzX01VWChT RE1NQzJfREFUMCwgT01BUF9QVUxMX0VOQSB8IE9NQVBfTVVYX01PREUwKSwKLQlPTUFQM19NVVgo U0RNTUMyX0RBVDEsIE9NQVBfUFVMTF9FTkEgfCBPTUFQX01VWF9NT0RFMCksCi0JT01BUDNfTVVY KFNETU1DMl9EQVQyLCBPTUFQX1BVTExfRU5BIHwgT01BUF9NVVhfTU9ERTApLAotCU9NQVAzX01V WChTRE1NQzJfREFUMywgT01BUF9QVUxMX0VOQSB8IE9NQVBfTVVYX01PREUwKSwKLQlPTUFQM19N VVgoU0RNTUMyX0RBVDQsIE9NQVBfUFVMTF9FTkEgfCBPTUFQX01VWF9NT0RFMCksCi0JT01BUDNf TVVYKFNETU1DMl9EQVQ1LCBPTUFQX1BVTExfRU5BIHwgT01BUF9NVVhfTU9ERTApLAotCU9NQVAz X01VWChTRE1NQzJfREFUNiwgT01BUF9QVUxMX0VOQSB8IE9NQVBfTVVYX01PREUwKSwKLQlPTUFQ M19NVVgoU0RNTUMyX0RBVDcsIE9NQVBfUFVMTF9FTkEgfCBPTUFQX01VWF9NT0RFMCksCi0JeyAu cmVnX29mZnNldCA9IE9NQVBfTVVYX1RFUk1JTkFUT1IgfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg b21hcF9tdXhfcGFydGl0aW9uICpwYXJ0aXRpb247Ci0KLS8qCi0gKiBDdXJyZW50IGZsb3dzIHRv IGVNTUMgd2hlbiBlTU1DIGlzIG9mZiBhbmQgdGhlIGRhdGEgbGluZXMgYXJlIHB1bGxlZCB1cCwK LSAqIHNvIHB1bGwgdGhlbSBkb3duLiBOLkIuIHdlIHB1bGwgOCBsaW5lcyBiZWNhdXNlIHdlIGFy ZSB1c2luZyA4IGxpbmVzLgotICovCi1zdGF0aWMgdm9pZCByeDUxX21tYzJfcmVtdXgoc3RydWN0 IGRldmljZSAqZGV2LCBpbnQgcG93ZXJfb24pCi17Ci0JaWYgKHBvd2VyX29uKQotCQlvbWFwX211 eF93cml0ZV9hcnJheShwYXJ0aXRpb24sIHJ4NTFfbW1jMl9vbl9tdXgpOwotCWVsc2UKLQkJb21h cF9tdXhfd3JpdGVfYXJyYXkocGFydGl0aW9uLCByeDUxX21tYzJfb2ZmX211eCk7Ci19Ci0KLXN0 YXRpYyBzdHJ1Y3Qgb21hcDJfaHNtbWNfaW5mbyBtbWNbXSBfX2luaXRkYXRhID0gewotCXsKLQkJ Lm5hbWUJCT0gImV4dGVybmFsIiwKLQkJLm1tYwkJPSAxLAotCQkuY2FwcwkJPSBNTUNfQ0FQXzRf QklUX0RBVEEsCi0JCS5jb3Zlcl9vbmx5CT0gdHJ1ZSwKLQkJLmdwaW9fY2QJPSAxNjAsCi0JCS5n cGlvX3dwCT0gLUVJTlZBTCwKLQl9LAotCXsKLQkJLm5hbWUJCT0gImludGVybmFsIiwKLQkJLm1t YwkJPSAyLAotCQkuY2FwcwkJPSBNTUNfQ0FQXzRfQklUX0RBVEEgfCBNTUNfQ0FQXzhfQklUX0RB VEEsCi0JCQkJCQkvKiBTZWUgYWxzbyByeDUxX21tYzJfcmVtdXggKi8KLQkJLmdwaW9fY2QJPSAt RUlOVkFMLAotCQkuZ3Bpb193cAk9IC1FSU5WQUwsCi0JCS5ub25yZW1vdmFibGUJPSB0cnVlLAot CQkucmVtdXgJCT0gcng1MV9tbWMyX3JlbXV4LAotCX0sCi0Je30JLyogVGVybWluYXRvciAqLwot fTsKLQotc3RhdGljIHN0cnVjdCByZWd1bGF0b3JfY29uc3VtZXJfc3VwcGx5IHJ4NTFfdm1tYzFf c3VwcGx5W10gPSB7Ci0JUkVHVUxBVE9SX1NVUFBMWSgidm1tYyIsICJvbWFwX2hzbW1jLjAiKSwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVndWxhdG9yX2NvbnN1bWVyX3N1cHBseSByeDUxX3ZhdXgy X3N1cHBseVtdID0gewotCVJFR1VMQVRPUl9TVVBQTFkoInZkZHNfY3NpYiIsICJvbWFwM2lzcCIp LAotfTsKLQotc3RhdGljIHN0cnVjdCByZWd1bGF0b3JfY29uc3VtZXJfc3VwcGx5IHJ4NTFfdmF1 eDNfc3VwcGx5W10gPSB7Ci0JUkVHVUxBVE9SX1NVUFBMWSgidm1tYyIsICJvbWFwX2hzbW1jLjEi KSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVndWxhdG9yX2NvbnN1bWVyX3N1cHBseSByeDUxX3Zz aW1fc3VwcGx5W10gPSB7Ci0JUkVHVUxBVE9SX1NVUFBMWSgidm1tY19hdXgiLCAib21hcF9oc21t Yy4xIiksCi19OwotCi1zdGF0aWMgc3RydWN0IHJlZ3VsYXRvcl9jb25zdW1lcl9zdXBwbHkgcng1 MV92bW1jMl9zdXBwbGllc1tdID0gewotCS8qIHRsdjMyMGFpYzN4IGFuYWxvZyBzdXBwbGllcyAq LwotCVJFR1VMQVRPUl9TVVBQTFkoIkFWREQiLCAiMi0wMDE4IiksCi0JUkVHVUxBVE9SX1NVUFBM WSgiRFJWREQiLCAiMi0wMDE4IiksCi0JUkVHVUxBVE9SX1NVUFBMWSgiQVZERCIsICIyLTAwMTki KSwKLQlSRUdVTEFUT1JfU1VQUExZKCJEUlZERCIsICIyLTAwMTkiKSwKLQkvKiB0cGE2MTMwYTIg Ki8KLQlSRUdVTEFUT1JfU1VQUExZKCJWZGQiLCAiMi0wMDYwIiksCi0JLyogS2VlcCB2bW1jIGFz IGxhc3QgaXRlbS4gSXQgaXMgbm90IGl0ZXJhdGVkIGZvciBuZXdlciBib2FyZHMgKi8KLQlSRUdV TEFUT1JfU1VQUExZKCJ2bW1jIiwgIm9tYXBfaHNtbWMuMSIpLAotfTsKLQotc3RhdGljIHN0cnVj dCByZWd1bGF0b3JfY29uc3VtZXJfc3VwcGx5IHJ4NTFfdmlvX3N1cHBsaWVzW10gPSB7Ci0JLyog dGx2MzIwYWljM3ggZGlnaXRhbCBzdXBwbGllcyAqLwotCVJFR1VMQVRPUl9TVVBQTFkoIklPVkRE IiwgIjItMDAxOCIpLAotCVJFR1VMQVRPUl9TVVBQTFkoIkRWREQiLCAiMi0wMDE4IiksCi0JUkVH VUxBVE9SX1NVUFBMWSgiSU9WREQiLCAiMi0wMDE5IiksCi0JUkVHVUxBVE9SX1NVUFBMWSgiRFZE RCIsICIyLTAwMTkiKSwKLQkvKiBTaTQ3MTMgSU8gc3VwcGx5ICovCi0JUkVHVUxBVE9SX1NVUFBM WSgidmlvIiwgIjItMDA2MyIpLAotCS8qIGxpczNsdjAyZCAqLwotCVJFR1VMQVRPUl9TVVBQTFko IlZkZF9JTyIsICIzLTAwMWQiKSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVndWxhdG9yX2NvbnN1 bWVyX3N1cHBseSByeDUxX3ZhdXgxX2NvbnN1bWVyc1tdID0gewotCVJFR1VMQVRPUl9TVVBQTFko InZkZHNfc2RpIiwgIm9tYXBkc3MiKSwKLQlSRUdVTEFUT1JfU1VQUExZKCJ2ZGRzX3NkaSIsICJv bWFwZHNzX3NkaS4wIiksCi0JLyogU2k0NzEzIHN1cHBseSAqLwotCVJFR1VMQVRPUl9TVVBQTFko InZkZCIsICIyLTAwNjMiKSwKLQkvKiBsaXMzbHYwMmQgKi8KLQlSRUdVTEFUT1JfU1VQUExZKCJW ZGQiLCAiMy0wMDFkIiksCi19OwotCi1zdGF0aWMgc3RydWN0IHJlZ3VsYXRvcl9pbml0X2RhdGEg cng1MV92YXV4MSA9IHsKLQkuY29uc3RyYWludHMgPSB7Ci0JCS5uYW1lCQkJPSAiVjI4IiwKLQkJ Lm1pbl91VgkJCT0gMjgwMDAwMCwKLQkJLm1heF91VgkJCT0gMjgwMDAwMCwKLQkJLmFsd2F5c19v bgkJPSB0cnVlLCAvKiBkdWUgYmF0dGVyeSBjb3ZlciBzZW5zb3IgKi8KLQkJLnZhbGlkX21vZGVz X21hc2sJPSBSRUdVTEFUT1JfTU9ERV9OT1JNQUwKLQkJCQkJfCBSRUdVTEFUT1JfTU9ERV9TVEFO REJZLAotCQkudmFsaWRfb3BzX21hc2sJCT0gUkVHVUxBVE9SX0NIQU5HRV9NT0RFCi0JCQkJCXwg UkVHVUxBVE9SX0NIQU5HRV9TVEFUVVMsCi0JfSwKLQkubnVtX2NvbnN1bWVyX3N1cHBsaWVzCT0g QVJSQVlfU0laRShyeDUxX3ZhdXgxX2NvbnN1bWVycyksCi0JLmNvbnN1bWVyX3N1cHBsaWVzCT0g cng1MV92YXV4MV9jb25zdW1lcnMsCi19OwotCi1zdGF0aWMgc3RydWN0IHJlZ3VsYXRvcl9pbml0 X2RhdGEgcng1MV92YXV4MiA9IHsKLQkuY29uc3RyYWludHMgPSB7Ci0JCS5uYW1lCQkJPSAiVkNT SSIsCi0JCS5taW5fdVYJCQk9IDE4MDAwMDAsCi0JCS5tYXhfdVYJCQk9IDE4MDAwMDAsCi0JCS52 YWxpZF9tb2Rlc19tYXNrCT0gUkVHVUxBVE9SX01PREVfTk9STUFMCi0JCQkJCXwgUkVHVUxBVE9S X01PREVfU1RBTkRCWSwKLQkJLnZhbGlkX29wc19tYXNrCQk9IFJFR1VMQVRPUl9DSEFOR0VfTU9E RQotCQkJCQl8IFJFR1VMQVRPUl9DSEFOR0VfU1RBVFVTLAotCX0sCi0JLm51bV9jb25zdW1lcl9z dXBwbGllcwk9IEFSUkFZX1NJWkUocng1MV92YXV4Ml9zdXBwbHkpLAotCS5jb25zdW1lcl9zdXBw bGllcwk9IHJ4NTFfdmF1eDJfc3VwcGx5LAotfTsKLQotLyogVkFVWDMgLSBhZGRzIG1vcmUgcG93 ZXIgdG8gVklPXzE4IHJhaWwgKi8KLXN0YXRpYyBzdHJ1Y3QgcmVndWxhdG9yX2luaXRfZGF0YSBy eDUxX3ZhdXgzX2NhbSA9IHsKLQkuY29uc3RyYWludHMgPSB7Ci0JCS5uYW1lCQkJPSAiVkNBTV9E SUdfMTgiLAotCQkubWluX3VWCQkJPSAxODAwMDAwLAotCQkubWF4X3VWCQkJPSAxODAwMDAwLAot CQkuYXBwbHlfdVYJCT0gdHJ1ZSwKLQkJLnZhbGlkX21vZGVzX21hc2sJPSBSRUdVTEFUT1JfTU9E RV9OT1JNQUwKLQkJCQkJfCBSRUdVTEFUT1JfTU9ERV9TVEFOREJZLAotCQkudmFsaWRfb3BzX21h c2sJCT0gUkVHVUxBVE9SX0NIQU5HRV9NT0RFCi0JCQkJCXwgUkVHVUxBVE9SX0NIQU5HRV9TVEFU VVMsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVndWxhdG9yX2luaXRfZGF0YSByeDUxX3Zh dXgzX21tYyA9IHsKLQkuY29uc3RyYWludHMgPSB7Ci0JCS5uYW1lCQkJPSAiVk1NQzJfMzAiLAot CQkubWluX3VWCQkJPSAyODAwMDAwLAotCQkubWF4X3VWCQkJPSAzMDAwMDAwLAotCQkuYXBwbHlf dVYJCT0gdHJ1ZSwKLQkJLnZhbGlkX21vZGVzX21hc2sJPSBSRUdVTEFUT1JfTU9ERV9OT1JNQUwK LQkJCQkJfCBSRUdVTEFUT1JfTU9ERV9TVEFOREJZLAotCQkudmFsaWRfb3BzX21hc2sJCT0gUkVH VUxBVE9SX0NIQU5HRV9WT0xUQUdFCi0JCQkJCXwgUkVHVUxBVE9SX0NIQU5HRV9NT0RFCi0JCQkJ CXwgUkVHVUxBVE9SX0NIQU5HRV9TVEFUVVMsCi0JfSwKLQkubnVtX2NvbnN1bWVyX3N1cHBsaWVz CT0gQVJSQVlfU0laRShyeDUxX3ZhdXgzX3N1cHBseSksCi0JLmNvbnN1bWVyX3N1cHBsaWVzCT0g cng1MV92YXV4M19zdXBwbHksCi19OwotCi1zdGF0aWMgc3RydWN0IHJlZ3VsYXRvcl9pbml0X2Rh dGEgcng1MV92YXV4NCA9IHsKLQkuY29uc3RyYWludHMgPSB7Ci0JCS5uYW1lCQkJPSAiVkNBTV9B TkFfMjgiLAotCQkubWluX3VWCQkJPSAyODAwMDAwLAotCQkubWF4X3VWCQkJPSAyODAwMDAwLAot CQkuYXBwbHlfdVYJCT0gdHJ1ZSwKLQkJLnZhbGlkX21vZGVzX21hc2sJPSBSRUdVTEFUT1JfTU9E RV9OT1JNQUwKLQkJCQkJfCBSRUdVTEFUT1JfTU9ERV9TVEFOREJZLAotCQkudmFsaWRfb3BzX21h c2sJCT0gUkVHVUxBVE9SX0NIQU5HRV9NT0RFCi0JCQkJCXwgUkVHVUxBVE9SX0NIQU5HRV9TVEFU VVMsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVndWxhdG9yX2luaXRfZGF0YSByeDUxX3Zt bWMxID0gewotCS5jb25zdHJhaW50cyA9IHsKLQkJLm1pbl91VgkJCT0gMTg1MDAwMCwKLQkJLm1h eF91VgkJCT0gMzE1MDAwMCwKLQkJLnZhbGlkX21vZGVzX21hc2sJPSBSRUdVTEFUT1JfTU9ERV9O T1JNQUwKLQkJCQkJfCBSRUdVTEFUT1JfTU9ERV9TVEFOREJZLAotCQkudmFsaWRfb3BzX21hc2sJ CT0gUkVHVUxBVE9SX0NIQU5HRV9WT0xUQUdFCi0JCQkJCXwgUkVHVUxBVE9SX0NIQU5HRV9NT0RF Ci0JCQkJCXwgUkVHVUxBVE9SX0NIQU5HRV9TVEFUVVMsCi0JfSwKLQkubnVtX2NvbnN1bWVyX3N1 cHBsaWVzCT0gQVJSQVlfU0laRShyeDUxX3ZtbWMxX3N1cHBseSksCi0JLmNvbnN1bWVyX3N1cHBs aWVzCT0gcng1MV92bW1jMV9zdXBwbHksCi19OwotCi1zdGF0aWMgc3RydWN0IHJlZ3VsYXRvcl9p bml0X2RhdGEgcng1MV92bW1jMiA9IHsKLQkuY29uc3RyYWludHMgPSB7Ci0JCS5uYW1lCQkJPSAi VjI4X0EiLAotCQkubWluX3VWCQkJPSAyODAwMDAwLAotCQkubWF4X3VWCQkJPSAzMDAwMDAwLAot CQkuYWx3YXlzX29uCQk9IHRydWUsIC8qIGR1ZSBWSU8gbGVhayB0byBBSUMzNCBWRERzICovCi0J CS5hcHBseV91VgkJPSB0cnVlLAotCQkudmFsaWRfbW9kZXNfbWFzawk9IFJFR1VMQVRPUl9NT0RF X05PUk1BTAotCQkJCQl8IFJFR1VMQVRPUl9NT0RFX1NUQU5EQlksCi0JCS52YWxpZF9vcHNfbWFz awkJPSBSRUdVTEFUT1JfQ0hBTkdFX1ZPTFRBR0UKLQkJCQkJfCBSRUdVTEFUT1JfQ0hBTkdFX01P REUKLQkJCQkJfCBSRUdVTEFUT1JfQ0hBTkdFX1NUQVRVUywKLQl9LAotCS5udW1fY29uc3VtZXJf c3VwcGxpZXMJPSBBUlJBWV9TSVpFKHJ4NTFfdm1tYzJfc3VwcGxpZXMpLAotCS5jb25zdW1lcl9z dXBwbGllcwk9IHJ4NTFfdm1tYzJfc3VwcGxpZXMsCi19OwotCi1zdGF0aWMgc3RydWN0IHJlZ3Vs YXRvcl9pbml0X2RhdGEgcng1MV92cGxsMSA9IHsKLQkuY29uc3RyYWludHMgPSB7Ci0JCS5uYW1l CQkJPSAiVlBMTCIsCi0JCS5taW5fdVYJCQk9IDE4MDAwMDAsCi0JCS5tYXhfdVYJCQk9IDE4MDAw MDAsCi0JCS5hcHBseV91VgkJPSB0cnVlLAotCQkuYWx3YXlzX29uCQk9IHRydWUsCi0JCS52YWxp ZF9tb2Rlc19tYXNrCT0gUkVHVUxBVE9SX01PREVfTk9STUFMCi0JCQkJCXwgUkVHVUxBVE9SX01P REVfU1RBTkRCWSwKLQkJLnZhbGlkX29wc19tYXNrCQk9IFJFR1VMQVRPUl9DSEFOR0VfTU9ERSwK LQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCByZWd1bGF0b3JfaW5pdF9kYXRhIHJ4NTFfdnBsbDIg PSB7Ci0JLmNvbnN0cmFpbnRzID0gewotCQkubmFtZQkJCT0gIlZTRElfQ1NJIiwKLQkJLm1pbl91 VgkJCT0gMTgwMDAwMCwKLQkJLm1heF91VgkJCT0gMTgwMDAwMCwKLQkJLmFwcGx5X3VWCQk9IHRy dWUsCi0JCS5hbHdheXNfb24JCT0gdHJ1ZSwKLQkJLnZhbGlkX21vZGVzX21hc2sJPSBSRUdVTEFU T1JfTU9ERV9OT1JNQUwKLQkJCQkJfCBSRUdVTEFUT1JfTU9ERV9TVEFOREJZLAotCQkudmFsaWRf b3BzX21hc2sJCT0gUkVHVUxBVE9SX0NIQU5HRV9NT0RFLAotCX0sCi19OwotCi1zdGF0aWMgc3Ry dWN0IHJlZ3VsYXRvcl9pbml0X2RhdGEgcng1MV92c2ltID0gewotCS5jb25zdHJhaW50cyA9IHsK LQkJLm5hbWUJCQk9ICJWTU1DMl9JT18xOCIsCi0JCS5taW5fdVYJCQk9IDE4MDAwMDAsCi0JCS5t YXhfdVYJCQk9IDE4MDAwMDAsCi0JCS5hcHBseV91VgkJPSB0cnVlLAotCQkudmFsaWRfbW9kZXNf bWFzawk9IFJFR1VMQVRPUl9NT0RFX05PUk1BTAotCQkJCQl8IFJFR1VMQVRPUl9NT0RFX1NUQU5E QlksCi0JCS52YWxpZF9vcHNfbWFzawkJPSBSRUdVTEFUT1JfQ0hBTkdFX01PREUKLQkJCQkJfCBS RUdVTEFUT1JfQ0hBTkdFX1NUQVRVUywKLQl9LAotCS5udW1fY29uc3VtZXJfc3VwcGxpZXMJPSBB UlJBWV9TSVpFKHJ4NTFfdnNpbV9zdXBwbHkpLAotCS5jb25zdW1lcl9zdXBwbGllcwk9IHJ4NTFf dnNpbV9zdXBwbHksCi19OwotCi1zdGF0aWMgc3RydWN0IHJlZ3VsYXRvcl9pbml0X2RhdGEgcng1 MV92aW8gPSB7Ci0JLmNvbnN0cmFpbnRzID0gewotCQkubWluX3VWCQkJPSAxODAwMDAwLAotCQku bWF4X3VWCQkJPSAxODAwMDAwLAotCQkudmFsaWRfbW9kZXNfbWFzawk9IFJFR1VMQVRPUl9NT0RF X05PUk1BTAotCQkJCQl8IFJFR1VMQVRPUl9NT0RFX1NUQU5EQlksCi0JCS52YWxpZF9vcHNfbWFz awkJPSBSRUdVTEFUT1JfQ0hBTkdFX1ZPTFRBR0UKLQkJCQkJfCBSRUdVTEFUT1JfQ0hBTkdFX01P REUKLQkJCQkJfCBSRUdVTEFUT1JfQ0hBTkdFX1NUQVRVUywKLQl9LAotCS5udW1fY29uc3VtZXJf c3VwcGxpZXMJPSBBUlJBWV9TSVpFKHJ4NTFfdmlvX3N1cHBsaWVzKSwKLQkuY29uc3VtZXJfc3Vw cGxpZXMJPSByeDUxX3Zpb19zdXBwbGllcywKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVndWxhdG9y X2luaXRfZGF0YSByeDUxX3ZpbnRhbmExID0gewotCS5jb25zdHJhaW50cyA9IHsKLQkJLm5hbWUJ CQk9ICJWSU5UQU5BMSIsCi0JCS5taW5fdVYJCQk9IDE1MDAwMDAsCi0JCS5tYXhfdVYJCQk9IDE1 MDAwMDAsCi0JCS5hbHdheXNfb24JCT0gdHJ1ZSwKLQkJLnZhbGlkX21vZGVzX21hc2sJPSBSRUdV TEFUT1JfTU9ERV9OT1JNQUwKLQkJCQkJfCBSRUdVTEFUT1JfTU9ERV9TVEFOREJZLAotCQkudmFs aWRfb3BzX21hc2sJCT0gUkVHVUxBVE9SX0NIQU5HRV9NT0RFLAotCX0sCi19OwotCi1zdGF0aWMg c3RydWN0IHJlZ3VsYXRvcl9pbml0X2RhdGEgcng1MV92aW50YW5hMiA9IHsKLQkuY29uc3RyYWlu dHMgPSB7Ci0JCS5uYW1lCQkJPSAiVklOVEFOQTIiLAotCQkubWluX3VWCQkJPSAyNzUwMDAwLAot CQkubWF4X3VWCQkJPSAyNzUwMDAwLAotCQkuYXBwbHlfdVYJCT0gdHJ1ZSwKLQkJLmFsd2F5c19v bgkJPSB0cnVlLAotCQkudmFsaWRfbW9kZXNfbWFzawk9IFJFR1VMQVRPUl9NT0RFX05PUk1BTAot CQkJCQl8IFJFR1VMQVRPUl9NT0RFX1NUQU5EQlksCi0JCS52YWxpZF9vcHNfbWFzawkJPSBSRUdV TEFUT1JfQ0hBTkdFX01PREUsCi0JfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcmVndWxhdG9yX2lu aXRfZGF0YSByeDUxX3ZpbnRkaWcgPSB7Ci0JLmNvbnN0cmFpbnRzID0gewotCQkubmFtZQkJCT0g IlZJTlRESUciLAotCQkubWluX3VWCQkJPSAxNTAwMDAwLAotCQkubWF4X3VWCQkJPSAxNTAwMDAw LAotCQkuYWx3YXlzX29uCQk9IHRydWUsCi0JCS52YWxpZF9tb2Rlc19tYXNrCT0gUkVHVUxBVE9S X01PREVfTk9STUFMCi0JCQkJCXwgUkVHVUxBVE9SX01PREVfU1RBTkRCWSwKLQkJLnZhbGlkX29w c19tYXNrCQk9IFJFR1VMQVRPUl9DSEFOR0VfTU9ERSwKLQl9LAotfTsKLQotc3RhdGljIHN0cnVj dCBncGlvZF9sb29rdXBfdGFibGUgcng1MV9mbXR4X2dwaW9zX3RhYmxlID0gewotCS5kZXZfaWQg PSAiMi0wMDYzIiwKLQkudGFibGUgPSB7Ci0JCUdQSU9fTE9PS1VQKCJncGlvLjYiLCAzLCAicmVz ZXQiLCBHUElPX0FDVElWRV9ISUdIKSwgLyogMTYzICovCi0JCXsgfSwKLQl9LAotfTsKLQotc3Rh dGljIF9faW5pdCB2b2lkIHJ4NTFfZ3Bpb19pbml0KHZvaWQpCi17Ci0JZ3Bpb2RfYWRkX2xvb2t1 cF90YWJsZSgmcng1MV9mbXR4X2dwaW9zX3RhYmxlKTsKLX0KLQotc3RhdGljIGludCByeDUxX3R3 bGdwaW9fc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBncGlvLCB1bnNpZ25lZCBu KQotewotCS8qIEZJWE1FIHRoaXMgZ3BpbyBzZXR1cCBpcyBqdXN0IGEgcGxhY2Vob2xkZXIgZm9y IG5vdyAqLwotCWdwaW9fcmVxdWVzdF9vbmUoZ3BpbyArIDYsIEdQSU9GX09VVF9JTklUX0xPVywg ImJhY2tsaWdodF9wd20iKTsKLQlncGlvX3JlcXVlc3Rfb25lKGdwaW8gKyA3LCBHUElPRl9PVVRf SU5JVF9MT1csICJzcGVha2VyX2VuIik7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHN0cnVj dCB0d2w0MDMwX2dwaW9fcGxhdGZvcm1fZGF0YSByeDUxX2dwaW9fZGF0YSA9IHsKLQkucHVsbGRv d25zCQk9IEJJVCgwKSB8IEJJVCgxKSB8IEJJVCgyKSB8IEJJVCgzKQotCQkJCXwgQklUKDQpIHwg QklUKDUpCi0JCQkJfCBCSVQoOCkgfCBCSVQoOSkgfCBCSVQoMTApIHwgQklUKDExKQotCQkJCXwg QklUKDEyKSB8IEJJVCgxMykgfCBCSVQoMTQpIHwgQklUKDE1KQotCQkJCXwgQklUKDE2KSB8IEJJ VCgxNykgLAotCS5zZXR1cAkJCT0gcng1MV90d2xncGlvX3NldHVwLAotfTsKLQotc3RhdGljIHN0 cnVjdCB0d2w0MDMwX2lucyBzbGVlcF9vbl9zZXFbXSBfX2luaXRkYXRhID0gewotLyoKLSAqIFR1 cm4gb2ZmIGV2ZXJ5dGhpbmcKLSAqLwotCXtNU0dfQlJPQURDQVNUKERFVl9HUlBfTlVMTCwgUkVT X0dSUF9BTEwsIDEsIDAsIFJFU19TVEFURV9TTEVFUCksIDJ9LAotfTsKLQotc3RhdGljIHN0cnVj dCB0d2w0MDMwX3NjcmlwdCBzbGVlcF9vbl9zY3JpcHQgX19pbml0ZGF0YSA9IHsKLQkuc2NyaXB0 ID0gc2xlZXBfb25fc2VxLAotCS5zaXplICAgPSBBUlJBWV9TSVpFKHNsZWVwX29uX3NlcSksCi0J LmZsYWdzICA9IFRXTDQwMzBfU0xFRVBfU0NSSVBULAotfTsKLQotc3RhdGljIHN0cnVjdCB0d2w0 MDMwX2lucyB3YWtldXBfc2VxW10gX19pbml0ZGF0YSA9IHsKLS8qCi0gKiBSZWVuYWJsZSBldmVy eXRoaW5nCi0gKi8KLQl7TVNHX0JST0FEQ0FTVChERVZfR1JQX05VTEwsIFJFU19HUlBfQUxMLCAx LCAwLCBSRVNfU1RBVEVfQUNUSVZFKSwgMn0sCi19OwotCi1zdGF0aWMgc3RydWN0IHR3bDQwMzBf c2NyaXB0IHdha2V1cF9zY3JpcHQgX19pbml0ZGF0YSA9IHsKLQkuc2NyaXB0CT0gd2FrZXVwX3Nl cSwKLQkuc2l6ZQk9IEFSUkFZX1NJWkUod2FrZXVwX3NlcSksCi0JLmZsYWdzCT0gVFdMNDAzMF9X QUtFVVAxMl9TQ1JJUFQsCi19OwotCi1zdGF0aWMgc3RydWN0IHR3bDQwMzBfaW5zIHdha2V1cF9w M19zZXFbXSBfX2luaXRkYXRhID0gewotLyoKLSAqIFJlZW5hYmxlIGV2ZXJ5dGhpbmcKLSAqLwot CXtNU0dfQlJPQURDQVNUKERFVl9HUlBfTlVMTCwgUkVTX0dSUF9BTEwsIDEsIDAsIFJFU19TVEFU RV9BQ1RJVkUpLCAyfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgdHdsNDAzMF9zY3JpcHQgd2FrZXVw X3AzX3NjcmlwdCBfX2luaXRkYXRhID0gewotCS5zY3JpcHQJPSB3YWtldXBfcDNfc2VxLAotCS5z aXplCT0gQVJSQVlfU0laRSh3YWtldXBfcDNfc2VxKSwKLQkuZmxhZ3MJPSBUV0w0MDMwX1dBS0VV UDNfU0NSSVBULAotfTsKLQotc3RhdGljIHN0cnVjdCB0d2w0MDMwX2lucyB3cnN0X3NlcVtdIF9f aW5pdGRhdGEgPSB7Ci0vKgotICogUmVzZXQgdHdsNDAzMC4KLSAqIFJlc2V0IFZERDEgcmVndWxh dG9yLgotICogUmVzZXQgVkREMiByZWd1bGF0b3IuCi0gKiBSZXNldCBWUExMMSByZWd1bGF0b3Iu Ci0gKiBFbmFibGUgc3lzY2xrIG91dHB1dC4KLSAqIFJlZW5hYmxlIHR3bDQwMzAuCi0gKi8KLQl7 TVNHX1NJTkdVTEFSKERFVl9HUlBfTlVMTCwgUkVTX1JFU0VULCBSRVNfU1RBVEVfT0ZGKSwgMn0s Ci0Je01TR19CUk9BRENBU1QoREVWX0dSUF9OVUxMLCBSRVNfR1JQX0FMTCwgMCwgMSwgUkVTX1NU QVRFX0FDVElWRSksCi0JCTB4MTN9LAotCXtNU0dfQlJPQURDQVNUKERFVl9HUlBfTlVMTCwgUkVT X0dSUF9QUCwgMCwgMywgUkVTX1NUQVRFX09GRiksIDB4MTN9LAotCXtNU0dfU0lOR1VMQVIoREVW X0dSUF9OVUxMLCBSRVNfVkREMSwgUkVTX1NUQVRFX1dSU1QpLCAweDEzfSwKLQl7TVNHX1NJTkdV TEFSKERFVl9HUlBfTlVMTCwgUkVTX1ZERDIsIFJFU19TVEFURV9XUlNUKSwgMHgxM30sCi0Je01T R19TSU5HVUxBUihERVZfR1JQX05VTEwsIFJFU19WUExMMSwgUkVTX1NUQVRFX1dSU1QpLCAweDM1 fSwKLQl7TVNHX1NJTkdVTEFSKERFVl9HUlBfUDMsIFJFU19IRkNMS09VVCwgUkVTX1NUQVRFX0FD VElWRSksIDJ9LAotCXtNU0dfU0lOR1VMQVIoREVWX0dSUF9OVUxMLCBSRVNfUkVTRVQsIFJFU19T VEFURV9BQ1RJVkUpLCAyfSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgdHdsNDAzMF9zY3JpcHQgd3Jz dF9zY3JpcHQgX19pbml0ZGF0YSA9IHsKLQkuc2NyaXB0ID0gd3JzdF9zZXEsCi0JLnNpemUgICA9 IEFSUkFZX1NJWkUod3JzdF9zZXEpLAotCS5mbGFncyAgPSBUV0w0MDMwX1dSU1RfU0NSSVBULAot fTsKLQotc3RhdGljIHN0cnVjdCB0d2w0MDMwX3NjcmlwdCAqdHdsNDAzMF9zY3JpcHRzW10gX19p bml0ZGF0YSA9IHsKLQkvKiB3YWtldXAxMiBzY3JpcHQgc2hvdWxkIGJlIGxvYWRlZCBiZWZvcmUg c2xlZXAgc2NyaXB0LCBvdGhlcndpc2UgYQotCSAgIGJvYXJkIG1pZ2h0IGhpdCByZXRlbnRpb24g YmVmb3JlIGxvYWRpbmcgb2Ygd2FrZXVwIHNjcmlwdCBpcwotCSAgIGNvbXBsZXRlZC4gVGhpcyBj YW4gY2F1c2UgYm9vdCBmYWlsdXJlcyBkZXBlbmRpbmcgb24gdGltaW5nIGlzc3Vlcy4KLQkqLwot CSZ3YWtldXBfc2NyaXB0LAotCSZzbGVlcF9vbl9zY3JpcHQsCi0JJndha2V1cF9wM19zY3JpcHQs Ci0JJndyc3Rfc2NyaXB0LAotfTsKLQotc3RhdGljIHN0cnVjdCB0d2w0MDMwX3Jlc2NvbmZpZyB0 d2w0MDMwX3Jjb25maWdbXSBfX2luaXRkYXRhID0gewotCXsgLnJlc291cmNlID0gUkVTX1ZERDEs IC5kZXZncm91cCA9IC0xLAotCSAgLnR5cGUgPSAxLCAudHlwZTIgPSAtMSwgLnJlbWFwX29mZiA9 IFJFU19TVEFURV9PRkYsCi0JICAucmVtYXBfc2xlZXAgPSBSRVNfU1RBVEVfT0ZGCi0JfSwKLQl7 IC5yZXNvdXJjZSA9IFJFU19WREQyLCAuZGV2Z3JvdXAgPSAtMSwKLQkgIC50eXBlID0gMSwgLnR5 cGUyID0gLTEsIC5yZW1hcF9vZmYgPSBSRVNfU1RBVEVfT0ZGLAotCSAgLnJlbWFwX3NsZWVwID0g UkVTX1NUQVRFX09GRgotCX0sCi0JeyAucmVzb3VyY2UgPSBSRVNfVlBMTDEsIC5kZXZncm91cCA9 IC0xLAotCSAgLnR5cGUgPSAxLCAudHlwZTIgPSAtMSwgLnJlbWFwX29mZiA9IFJFU19TVEFURV9P RkYsCi0JICAucmVtYXBfc2xlZXAgPSBSRVNfU1RBVEVfT0ZGCi0JfSwKLQl7IC5yZXNvdXJjZSA9 IFJFU19WUExMMiwgLmRldmdyb3VwID0gLTEsCi0JICAudHlwZSA9IC0xLCAudHlwZTIgPSAzLCAu cmVtYXBfb2ZmID0gLTEsIC5yZW1hcF9zbGVlcCA9IC0xCi0JfSwKLQl7IC5yZXNvdXJjZSA9IFJF U19WQVVYMSwgLmRldmdyb3VwID0gLTEsCi0JICAudHlwZSA9IC0xLCAudHlwZTIgPSAzLCAucmVt YXBfb2ZmID0gLTEsIC5yZW1hcF9zbGVlcCA9IC0xCi0JfSwKLQl7IC5yZXNvdXJjZSA9IFJFU19W QVVYMiwgLmRldmdyb3VwID0gLTEsCi0JICAudHlwZSA9IC0xLCAudHlwZTIgPSAzLCAucmVtYXBf b2ZmID0gLTEsIC5yZW1hcF9zbGVlcCA9IC0xCi0JfSwKLQl7IC5yZXNvdXJjZSA9IFJFU19WQVVY MywgLmRldmdyb3VwID0gLTEsCi0JICAudHlwZSA9IC0xLCAudHlwZTIgPSAzLCAucmVtYXBfb2Zm ID0gLTEsIC5yZW1hcF9zbGVlcCA9IC0xCi0JfSwKLQl7IC5yZXNvdXJjZSA9IFJFU19WQVVYNCwg LmRldmdyb3VwID0gLTEsCi0JICAudHlwZSA9IC0xLCAudHlwZTIgPSAzLCAucmVtYXBfb2ZmID0g LTEsIC5yZW1hcF9zbGVlcCA9IC0xCi0JfSwKLQl7IC5yZXNvdXJjZSA9IFJFU19WTU1DMSwgLmRl dmdyb3VwID0gLTEsCi0JICAudHlwZSA9IC0xLCAudHlwZTIgPSAzLCAucmVtYXBfb2ZmID0gLTEs IC5yZW1hcF9zbGVlcCA9IC0xCi0JfSwKLQl7IC5yZXNvdXJjZSA9IFJFU19WTU1DMiwgLmRldmdy b3VwID0gLTEsCi0JICAudHlwZSA9IC0xLCAudHlwZTIgPSAzLCAucmVtYXBfb2ZmID0gLTEsIC5y ZW1hcF9zbGVlcCA9IC0xCi0JfSwKLQl7IC5yZXNvdXJjZSA9IFJFU19WREFDLCAuZGV2Z3JvdXAg PSAtMSwKLQkgIC50eXBlID0gLTEsIC50eXBlMiA9IDMsIC5yZW1hcF9vZmYgPSAtMSwgLnJlbWFw X3NsZWVwID0gLTEKLQl9LAotCXsgLnJlc291cmNlID0gUkVTX1ZTSU0sIC5kZXZncm91cCA9IC0x LAotCSAgLnR5cGUgPSAtMSwgLnR5cGUyID0gMywgLnJlbWFwX29mZiA9IC0xLCAucmVtYXBfc2xl ZXAgPSAtMQotCX0sCi0JeyAucmVzb3VyY2UgPSBSRVNfVklOVEFOQTEsIC5kZXZncm91cCA9IERF Vl9HUlBfUDEgfCBERVZfR1JQX1AzLAotCSAgLnR5cGUgPSAtMSwgLnR5cGUyID0gLTEsIC5yZW1h cF9vZmYgPSAtMSwgLnJlbWFwX3NsZWVwID0gLTEKLQl9LAotCXsgLnJlc291cmNlID0gUkVTX1ZJ TlRBTkEyLCAuZGV2Z3JvdXAgPSBERVZfR1JQX1AxIHwgREVWX0dSUF9QMywKLQkgIC50eXBlID0g MSwgLnR5cGUyID0gLTEsIC5yZW1hcF9vZmYgPSAtMSwgLnJlbWFwX3NsZWVwID0gLTEKLQl9LAot CXsgLnJlc291cmNlID0gUkVTX1ZJTlRESUcsIC5kZXZncm91cCA9IERFVl9HUlBfUDEgfCBERVZf R1JQX1AzLAotCSAgLnR5cGUgPSAtMSwgLnR5cGUyID0gLTEsIC5yZW1hcF9vZmYgPSAtMSwgLnJl bWFwX3NsZWVwID0gLTEKLQl9LAotCXsgLnJlc291cmNlID0gUkVTX1ZJTywgLmRldmdyb3VwID0g REVWX0dSUF9QMywKLQkgIC50eXBlID0gMSwgLnR5cGUyID0gLTEsIC5yZW1hcF9vZmYgPSAtMSwg LnJlbWFwX3NsZWVwID0gLTEKLQl9LAotCXsgLnJlc291cmNlID0gUkVTX0NMS0VOLCAuZGV2Z3Jv dXAgPSBERVZfR1JQX1AxIHwgREVWX0dSUF9QMywKLQkgIC50eXBlID0gMSwgLnR5cGUyID0gLTEg LCAucmVtYXBfb2ZmID0gLTEsIC5yZW1hcF9zbGVlcCA9IC0xCi0JfSwKLQl7IC5yZXNvdXJjZSA9 IFJFU19SRUdFTiwgLmRldmdyb3VwID0gREVWX0dSUF9QMSB8IERFVl9HUlBfUDMsCi0JICAudHlw ZSA9IDEsIC50eXBlMiA9IC0xLCAucmVtYXBfb2ZmID0gLTEsIC5yZW1hcF9zbGVlcCA9IC0xCi0J fSwKLQl7IC5yZXNvdXJjZSA9IFJFU19OUkVTX1BXUk9OLCAuZGV2Z3JvdXAgPSBERVZfR1JQX1Ax IHwgREVWX0dSUF9QMywKLQkgIC50eXBlID0gMSwgLnR5cGUyID0gLTEsIC5yZW1hcF9vZmYgPSAt MSwgLnJlbWFwX3NsZWVwID0gLTEKLQl9LAotCXsgLnJlc291cmNlID0gUkVTX1NZU0VOLCAuZGV2 Z3JvdXAgPSBERVZfR1JQX1AxIHwgREVWX0dSUF9QMywKLQkgIC50eXBlID0gMSwgLnR5cGUyID0g LTEsIC5yZW1hcF9vZmYgPSAtMSwgLnJlbWFwX3NsZWVwID0gLTEKLQl9LAotCXsgLnJlc291cmNl ID0gUkVTX0hGQ0xLT1VULCAuZGV2Z3JvdXAgPSBERVZfR1JQX1AzLAotCSAgLnR5cGUgPSAxLCAu dHlwZTIgPSAtMSwgLnJlbWFwX29mZiA9IC0xLCAucmVtYXBfc2xlZXAgPSAtMQotCX0sCi0JeyAu cmVzb3VyY2UgPSBSRVNfMzJLQ0xLT1VULCAuZGV2Z3JvdXAgPSAtMSwKLQkgIC50eXBlID0gMSwg LnR5cGUyID0gLTEsIC5yZW1hcF9vZmYgPSAtMSwgLnJlbWFwX3NsZWVwID0gLTEKLQl9LAotCXsg LnJlc291cmNlID0gUkVTX1JFU0VULCAuZGV2Z3JvdXAgPSAtMSwKLQkgIC50eXBlID0gMSwgLnR5 cGUyID0gLTEsIC5yZW1hcF9vZmYgPSAtMSwgLnJlbWFwX3NsZWVwID0gLTEKLQl9LAotCXsgLnJl c291cmNlID0gUkVTX01BSU5fUkVGLCAuZGV2Z3JvdXAgPSAtMSwKLQkgIC50eXBlID0gMSwgLnR5 cGUyID0gLTEsIC5yZW1hcF9vZmYgPSAtMSwgLnJlbWFwX3NsZWVwID0gLTEKLQl9LAotCXsgMCwg MH0sCi19OwotCi1zdGF0aWMgc3RydWN0IHR3bDQwMzBfcG93ZXJfZGF0YSByeDUxX3Qyc2NyaXB0 c19kYXRhIF9faW5pdGRhdGEgPSB7Ci0JLnNjcmlwdHMgICAgICAgID0gdHdsNDAzMF9zY3JpcHRz LAotCS5udW0gPSBBUlJBWV9TSVpFKHR3bDQwMzBfc2NyaXB0cyksCi0JLnJlc291cmNlX2NvbmZp ZyA9IHR3bDQwMzBfcmNvbmZpZywKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgdHdsNDAzMF92aWJyYV9k YXRhIHJ4NTFfdmlicmFfZGF0YSBfX2luaXRkYXRhID0gewotCS5jb2V4aXN0CT0gMCwKLX07Ci0K LXN0YXRpYyBzdHJ1Y3QgdHdsNDAzMF9hdWRpb19kYXRhIHJ4NTFfYXVkaW9fZGF0YSBfX2luaXRk YXRhID0gewotCS5hdWRpb19tY2xrCT0gMjYwMDAwMDAsCi0JLnZpYnJhCQk9ICZyeDUxX3ZpYnJh X2RhdGEsCi19OwotCi1zdGF0aWMgc3RydWN0IHR3bDQwMzBfcGxhdGZvcm1fZGF0YSByeDUxX3R3 bGRhdGEgX19pbml0ZGF0YSA9IHsKLQkvKiBwbGF0Zm9ybV9kYXRhIGZvciBjaGlsZHJlbiBnb2Vz IGhlcmUgKi8KLQkuZ3BpbwkJCT0gJnJ4NTFfZ3Bpb19kYXRhLAotCS5rZXlwYWQJCQk9ICZyeDUx X2twX2RhdGEsCi0JLnBvd2VyCQkJPSAmcng1MV90MnNjcmlwdHNfZGF0YSwKLQkuYXVkaW8JCQk9 ICZyeDUxX2F1ZGlvX2RhdGEsCi0KLQkudmF1eDEJCQk9ICZyeDUxX3ZhdXgxLAotCS52YXV4MgkJ CT0gJnJ4NTFfdmF1eDIsCi0JLnZhdXg0CQkJPSAmcng1MV92YXV4NCwKLQkudm1tYzEJCQk9ICZy eDUxX3ZtbWMxLAotCS52cGxsMQkJCT0gJnJ4NTFfdnBsbDEsCi0JLnZwbGwyCQkJPSAmcng1MV92 cGxsMiwKLQkudnNpbQkJCT0gJnJ4NTFfdnNpbSwKLQkudmludGFuYTEJCT0gJnJ4NTFfdmludGFu YTEsCi0JLnZpbnRhbmEyCQk9ICZyeDUxX3ZpbnRhbmEyLAotCS52aW50ZGlnCQk9ICZyeDUxX3Zp bnRkaWcsCi0JLnZpbwkJCT0gJnJ4NTFfdmlvLAotfTsKLQotc3RhdGljIHN0cnVjdCB0cGE2MTMw YTJfcGxhdGZvcm1fZGF0YSByeDUxX3RwYTYxMzBhMl9kYXRhIF9faW5pdGRhdGFfb3JfbW9kdWxl ID0gewotCS5wb3dlcl9ncGlvCQk9IDk4LAotfTsKLQotLyogQXVkaW8gc2V0dXAgZGF0YSAqLwot c3RhdGljIHN0cnVjdCBhaWMzeF9zZXR1cF9kYXRhIHJ4NTFfYWljMzRfc2V0dXAgPSB7Ci0JLmdw aW9fZnVuY1swXSA9IEFJQzNYX0dQSU8xX0ZVTkNfRElTQUJMRUQsCi0JLmdwaW9fZnVuY1sxXSA9 IEFJQzNYX0dQSU8yX0ZVTkNfRElHSVRBTF9NSUNfSU5QVVQsCi19OwotCi1zdGF0aWMgc3RydWN0 IGFpYzN4X3BkYXRhIHJ4NTFfYWljM3hfZGF0YSA9IHsKLQkuc2V0dXAgPSAmcng1MV9haWMzNF9z ZXR1cCwKLQkuZ3Bpb19yZXNldCA9IDYwLAotfTsKLQotc3RhdGljIHN0cnVjdCBhaWMzeF9wZGF0 YSByeDUxX2FpYzN4X2RhdGEyID0gewotCS5ncGlvX3Jlc2V0ID0gNjAsCi19OwotCi0jaWYgSVNf RU5BQkxFRChDT05GSUdfSTJDX1NJNDcxMykgJiYgSVNfRU5BQkxFRChDT05GSUdfUExBVEZPUk1f U0k0NzEzKQotc3RhdGljIHN0cnVjdCBzaTQ3MTNfcGxhdGZvcm1fZGF0YSByeDUxX3NpNDcxM19w bGF0Zm9ybV9kYXRhID0gewotCS5pc19wbGF0Zm9ybV9kZXZpY2UgPSB0cnVlCi19OwotI2VuZGlm Ci0KLXN0YXRpYyBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gX19pbml0ZGF0YSByeDUxX3BlcmlwaGVy YWxzX2kyY19ib2FyZF9pbmZvXzJbXSA9IHsKLSNpZiBJU19FTkFCTEVEKENPTkZJR19JMkNfU0k0 NzEzKSAmJiBJU19FTkFCTEVEKENPTkZJR19QTEFURk9STV9TSTQ3MTMpCi0JewotCQlJMkNfQk9B UkRfSU5GTygic2k0NzEzIiwgMHg2MyksCi0JCS5wbGF0Zm9ybV9kYXRhID0gJnJ4NTFfc2k0NzEz X3BsYXRmb3JtX2RhdGEsCi0JfSwKLSNlbmRpZgotCXsKLQkJSTJDX0JPQVJEX0lORk8oInRsdjMy MGFpYzN4IiwgMHgxOCksCi0JCS5wbGF0Zm9ybV9kYXRhID0gJnJ4NTFfYWljM3hfZGF0YSwKLQl9 LAotCXsKLQkJSTJDX0JPQVJEX0lORk8oInRsdjMyMGFpYzN4IiwgMHgxOSksCi0JCS5wbGF0Zm9y bV9kYXRhID0gJnJ4NTFfYWljM3hfZGF0YTIsCi0JfSwKLSNpZiBkZWZpbmVkKENPTkZJR19TRU5T T1JTX1RTTDI1NjMpIHx8IGRlZmluZWQoQ09ORklHX1NFTlNPUlNfVFNMMjU2M19NT0RVTEUpCi0J ewotCQlJMkNfQk9BUkRfSU5GTygidHNsMjU2MyIsIDB4MjkpLAotCQkucGxhdGZvcm1fZGF0YSA9 ICZyeDUxX3RzbDI1NjNfcGxhdGZvcm1fZGF0YSwKLQl9LAotI2VuZGlmCi0jaWYgZGVmaW5lZChD T05GSUdfTEVEU19MUDU1MjMpIHx8IGRlZmluZWQoQ09ORklHX0xFRFNfTFA1NTIzX01PRFVMRSkK LQl7Ci0JCUkyQ19CT0FSRF9JTkZPKCJscDU1MjMiLCAweDMyKSwKLQkJLnBsYXRmb3JtX2RhdGEg ID0gJnJ4NTFfbHA1NTIzX3BsYXRmb3JtX2RhdGEsCi0JfSwKLSNlbmRpZgotCXsKLQkJSTJDX0JP QVJEX0lORk8oImJxMjcyMDAiLCAweDU1KSwKLQl9LAotCXsKLQkJSTJDX0JPQVJEX0lORk8oInRw YTYxMzBhMiIsIDB4NjApLAotCQkucGxhdGZvcm1fZGF0YSA9ICZyeDUxX3RwYTYxMzBhMl9kYXRh LAotCX0KLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gX19pbml0ZGF0YSByeDUx X3BlcmlwaGVyYWxzX2kyY19ib2FyZF9pbmZvXzNbXSA9IHsKLSNpZiBkZWZpbmVkKENPTkZJR19T RU5TT1JTX0xJUzNfSTJDKSB8fCBkZWZpbmVkKENPTkZJR19TRU5TT1JTX0xJUzNfSTJDX01PRFVM RSkKLQl7Ci0JCUkyQ19CT0FSRF9JTkZPKCJsaXMzbHYwMmQiLCAweDFkKSwKLQkJLnBsYXRmb3Jt X2RhdGEgPSAmcng1MV9saXMzbHYwMmRfZGF0YSwKLQl9LAotI2VuZGlmCi19OwotCi1zdGF0aWMg aW50IF9faW5pdCByeDUxX2kyY19pbml0KHZvaWQpCi17Ci0jaWYgSVNfRU5BQkxFRChDT05GSUdf STJDX1NJNDcxMykgJiYgSVNfRU5BQkxFRChDT05GSUdfUExBVEZPUk1fU0k0NzEzKQotCWludCBl cnI7Ci0jZW5kaWYKLQotCWlmICgoc3lzdGVtX3JldiA+PSBTWVNURU1fUkVWX1NfVVNFU19WQVVY MyAmJiBzeXN0ZW1fcmV2IDwgMHgxMDApIHx8Ci0JICAgIHN5c3RlbV9yZXYgPj0gU1lTVEVNX1JF Vl9CX1VTRVNfVkFVWDMpIHsKLQkJcng1MV90d2xkYXRhLnZhdXgzID0gJnJ4NTFfdmF1eDNfbW1j OwotCQkvKiBPbmx5IG9sZGVyIGJvYXJkcyB1c2UgVk1NQzIgZm9yIGludGVybmFsIE1NQyAqLwot CQlyeDUxX3ZtbWMyLm51bV9jb25zdW1lcl9zdXBwbGllcy0tOwotCX0gZWxzZSB7Ci0JCXJ4NTFf dHdsZGF0YS52YXV4MyA9ICZyeDUxX3ZhdXgzX2NhbTsKLQl9Ci0Jcng1MV90d2xkYXRhLnZtbWMy ID0gJnJ4NTFfdm1tYzI7Ci0Jb21hcDNfcG1pY19nZXRfY29uZmlnKCZyeDUxX3R3bGRhdGEsCi0J CQlUV0xfQ09NTU9OX1BEQVRBX1VTQiB8IFRXTF9DT01NT05fUERBVEFfTUFEQywKLQkJCVRXTF9D T01NT05fUkVHVUxBVE9SX1ZEQUMpOwotCi0Jcng1MV90d2xkYXRhLnZkYWMtPmNvbnN0cmFpbnRz LmFwcGx5X3VWID0gdHJ1ZTsKLQlyeDUxX3R3bGRhdGEudmRhYy0+Y29uc3RyYWludHMubmFtZSA9 ICJWREFDIjsKLQotCW9tYXBfcG1pY19pbml0KDEsIDIyMDAsICJ0d2w1MDMwIiwgNyArIE9NQVBf SU5UQ19TVEFSVCwgJnJ4NTFfdHdsZGF0YSk7Ci0jaWYgSVNfRU5BQkxFRChDT05GSUdfSTJDX1NJ NDcxMykgJiYgSVNfRU5BQkxFRChDT05GSUdfUExBVEZPUk1fU0k0NzEzKQotCWVyciA9IGdwaW9f cmVxdWVzdF9vbmUoUlg1MV9GTVRYX0lSUSwgR1BJT0ZfRElSX0lOLCAic2k0NzEzIGlycSIpOwot CWlmIChlcnIpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJDYW5ub3QgcmVxdWVzdCBzaTQ3MTMgaXJx IGdwaW8uICVkXG4iLCBlcnIpOwotCQlyZXR1cm4gZXJyOwotCX0KLQlyeDUxX3BlcmlwaGVyYWxz X2kyY19ib2FyZF9pbmZvXzJbMF0uaXJxID0gZ3Bpb190b19pcnEoUlg1MV9GTVRYX0lSUSk7Ci0j ZW5kaWYKLQlvbWFwX3JlZ2lzdGVyX2kyY19idXMoMiwgMTAwLCByeDUxX3BlcmlwaGVyYWxzX2ky Y19ib2FyZF9pbmZvXzIsCi0JCQkgICAgICBBUlJBWV9TSVpFKHJ4NTFfcGVyaXBoZXJhbHNfaTJj X2JvYXJkX2luZm9fMikpOwotI2lmIGRlZmluZWQoQ09ORklHX1NFTlNPUlNfTElTM19JMkMpIHx8 IGRlZmluZWQoQ09ORklHX1NFTlNPUlNfTElTM19JMkNfTU9EVUxFKQotCXJ4NTFfbGlzM2x2MDJk X2RhdGEuaXJxMiA9IGdwaW9fdG9faXJxKExJUzMwMl9JUlEyX0dQSU8pOwotCXJ4NTFfcGVyaXBo ZXJhbHNfaTJjX2JvYXJkX2luZm9fM1swXS5pcnEgPSBncGlvX3RvX2lycShMSVMzMDJfSVJRMV9H UElPKTsKLSNlbmRpZgotCW9tYXBfcmVnaXN0ZXJfaTJjX2J1cygzLCA0MDAsIHJ4NTFfcGVyaXBo ZXJhbHNfaTJjX2JvYXJkX2luZm9fMywKLQkJCSAgICAgIEFSUkFZX1NJWkUocng1MV9wZXJpcGhl cmFsc19pMmNfYm9hcmRfaW5mb18zKSk7Ci0JcmV0dXJuIDA7Ci19Ci0KLSNpZiBkZWZpbmVkKENP TkZJR19NVERfT05FTkFORF9PTUFQMikgfHwgXAotCWRlZmluZWQoQ09ORklHX01URF9PTkVOQU5E X09NQVAyX01PRFVMRSkKLQotc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIG9uZW5hbmRfcGFy dGl0aW9uc1tdID0gewotCXsKLQkJLm5hbWUgICAgICAgICAgID0gImJvb3Rsb2FkZXIiLAotCQku b2Zmc2V0ICAgICAgICAgPSAwLAotCQkuc2l6ZSAgICAgICAgICAgPSAweDIwMDAwLAotCQkubWFz a19mbGFncyAgICAgPSBNVERfV1JJVEVBQkxFLAkvKiBGb3JjZSByZWFkLW9ubHkgKi8KLQl9LAot CXsKLQkJLm5hbWUgICAgICAgICAgID0gImNvbmZpZyIsCi0JCS5vZmZzZXQgICAgICAgICA9IE1U RFBBUlRfT0ZTX0FQUEVORCwKLQkJLnNpemUgICAgICAgICAgID0gMHg2MDAwMCwKLQl9LAotCXsK LQkJLm5hbWUgICAgICAgICAgID0gImxvZyIsCi0JCS5vZmZzZXQgICAgICAgICA9IE1URFBBUlRf T0ZTX0FQUEVORCwKLQkJLnNpemUgICAgICAgICAgID0gMHg0MDAwMCwKLQl9LAotCXsKLQkJLm5h bWUgICAgICAgICAgID0gImtlcm5lbCIsCi0JCS5vZmZzZXQgICAgICAgICA9IE1URFBBUlRfT0ZT X0FQUEVORCwKLQkJLnNpemUgICAgICAgICAgID0gMHgyMDAwMDAsCi0JfSwKLQl7Ci0JCS5uYW1l ICAgICAgICAgICA9ICJpbml0ZnMiLAotCQkub2Zmc2V0ICAgICAgICAgPSBNVERQQVJUX09GU19B UFBFTkQsCi0JCS5zaXplICAgICAgICAgICA9IDB4MjAwMDAwLAotCX0sCi0JewotCQkubmFtZSAg ICAgICAgICAgPSAicm9vdGZzIiwKLQkJLm9mZnNldCAgICAgICAgID0gTVREUEFSVF9PRlNfQVBQ RU5ELAotCQkuc2l6ZSAgICAgICAgICAgPSBNVERQQVJUX1NJWl9GVUxMLAotCX0sCi19OwotCi1z dGF0aWMgc3RydWN0IG9tYXBfb25lbmFuZF9wbGF0Zm9ybV9kYXRhIGJvYXJkX29uZW5hbmRfZGF0 YVtdID0gewotCXsKLQkJLmNzCQk9IDAsCi0JCS5ncGlvX2lycQk9IDY1LAotCQkucGFydHMJCT0g b25lbmFuZF9wYXJ0aXRpb25zLAotCQkubnJfcGFydHMJPSBBUlJBWV9TSVpFKG9uZW5hbmRfcGFy dGl0aW9ucyksCi0JCS5mbGFncwkJPSBPTkVOQU5EX1NZTkNfUkVBRFdSSVRFLAotCX0KLX07Ci0j ZW5kaWYKLQotc3RhdGljIHN0cnVjdCBncGlvIHJ4NTFfd2wxMjUxX2dwaW9zW10gX19pbml0ZGF0 YSA9IHsKLQl7IFJYNTFfV0wxMjUxX0lSUV9HUElPLAkgIEdQSU9GX0lOLAkJIndsMTI1MSBpcnEi CX0sCi19OwotCi1zdGF0aWMgdm9pZCBfX2luaXQgcng1MV9pbml0X3dsMTI1MSh2b2lkKQotewot CWludCBpcnEsIHJldDsKLQotCXJldCA9IGdwaW9fcmVxdWVzdF9hcnJheShyeDUxX3dsMTI1MV9n cGlvcywKLQkJCQkgQVJSQVlfU0laRShyeDUxX3dsMTI1MV9ncGlvcykpOwotCWlmIChyZXQgPCAw KQotCQlnb3RvIGVycm9yOwotCi0JaXJxID0gZ3Bpb190b19pcnEoUlg1MV9XTDEyNTFfSVJRX0dQ SU8pOwotCWlmIChpcnEgPCAwKQotCQlnb3RvIGVycl9pcnE7Ci0KLQl3bDEyNTFfcGRhdGEucG93 ZXJfZ3BpbyA9IFJYNTFfV0wxMjUxX1BPV0VSX0dQSU87Ci0Jcng1MV9wZXJpcGhlcmFsc19zcGlf Ym9hcmRfaW5mb1tSWDUxX1NQSV9XTDEyNTFdLmlycSA9IGlycTsKLQotCXJldHVybjsKLQotZXJy X2lycToKLQlncGlvX2ZyZWUoUlg1MV9XTDEyNTFfSVJRX0dQSU8pOwotZXJyb3I6Ci0JcHJpbnRr KEtFUk5fRVJSICJ3bDEyNTEgYm9hcmQgaW5pdGlhbGlzYXRpb24gZmFpbGVkXG4iKTsKLQl3bDEy NTFfcGRhdGEucG93ZXJfZ3BpbyA9IC0xOwotCi0JLyoKLQkgKiBOb3cgcng1MV9wZXJpcGhlcmFs c19zcGlfYm9hcmRfaW5mb1sxXS5pcnEgaXMgemVybyBhbmQKLQkgKiBzZXRfcG93ZXIgaXMgbnVs bCwgYW5kIHdsMTI1MV9wcm9iZSgpIHdpbGwgZmFpbC4KLQkgKi8KLX0KLQotc3RhdGljIHN0cnVj dCB0c2MyMDA1X3BsYXRmb3JtX2RhdGEgdHNjMjAwNV9wZGF0YSA9IHsKLQkudHNfcHJlc3N1cmVf bWF4CT0gMjA0OCwKLQkudHNfcHJlc3N1cmVfZnVkZ2UJPSAyLAotCS50c194X21heAkJPSA0MDk2 LAotCS50c194X2Z1ZGdlCQk9IDQsCi0JLnRzX3lfbWF4CQk9IDQwOTYsCi0JLnRzX3lfZnVkZ2UJ CT0gNywKLQkudHNfeF9wbGF0ZV9vaG0JCT0gMjgwLAotCS5lc2RfdGltZW91dF9tcwkJPSA4MDAw LAotfTsKLQotc3RhdGljIHN0cnVjdCBncGlvIHJ4NTFfdHNjMjAwNV9ncGlvc1tdIF9faW5pdGRh dGEgPSB7Ci0JeyBSWDUxX1RTQzIwMDVfSVJRX0dQSU8sICAgR1BJT0ZfSU4sCQkidHNjMjAwNSBJ UlEiCX0sCi0JeyBSWDUxX1RTQzIwMDVfUkVTRVRfR1BJTywgR1BJT0ZfT1VUX0lOSVRfSElHSCwJ InRzYzIwMDUgcmVzZXQiCX0sCi19OwotCi1zdGF0aWMgdm9pZCByeDUxX3RzYzIwMDVfc2V0X3Jl c2V0KGJvb2wgZW5hYmxlKQotewotCWdwaW9fc2V0X3ZhbHVlKFJYNTFfVFNDMjAwNV9SRVNFVF9H UElPLCBlbmFibGUpOwotfQotCi1zdGF0aWMgdm9pZCBfX2luaXQgcng1MV9pbml0X3RzYzIwMDUo dm9pZCkKLXsKLQlpbnQgcjsKLQotCW9tYXBfbXV4X2luaXRfZ3BpbyhSWDUxX1RTQzIwMDVfUkVT RVRfR1BJTywgT01BUF9QSU5fT1VUUFVUKTsKLQlvbWFwX211eF9pbml0X2dwaW8oUlg1MV9UU0My MDA1X0lSUV9HUElPLCBPTUFQX1BJTl9JTlBVVF9QVUxMVVApOwotCi0JciA9IGdwaW9fcmVxdWVz dF9hcnJheShyeDUxX3RzYzIwMDVfZ3Bpb3MsCi0JCQkgICAgICAgQVJSQVlfU0laRShyeDUxX3Rz YzIwMDVfZ3Bpb3MpKTsKLQlpZiAociA8IDApIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJ0c2MyMDA1 IGJvYXJkIGluaXRpYWxpemF0aW9uIGZhaWxlZFxuIik7Ci0JCXRzYzIwMDVfcGRhdGEuZXNkX3Rp bWVvdXRfbXMgPSAwOwotCQlyZXR1cm47Ci0JfQotCi0JdHNjMjAwNV9wZGF0YS5zZXRfcmVzZXQg PSByeDUxX3RzYzIwMDVfc2V0X3Jlc2V0OwotCXJ4NTFfcGVyaXBoZXJhbHNfc3BpX2JvYXJkX2lu Zm9bUlg1MV9TUElfVFNDMjAwNV0uaXJxID0KLQkJCQlncGlvX3RvX2lycShSWDUxX1RTQzIwMDVf SVJRX0dQSU8pOwotfQotCi0jaWYgSVNfRU5BQkxFRChDT05GSUdfT01BUF9ETV9USU1FUikKLXN0 YXRpYyBzdHJ1Y3QgcHdtX29tYXBfZG10aW1lcl9wZGF0YSBfX21heWJlX3VudXNlZCBwd21fZG10 aW1lcl9wZGF0YSA9IHsKLQkucmVxdWVzdF9ieV9ub2RlID0gb21hcF9kbV90aW1lcl9yZXF1ZXN0 X2J5X25vZGUsCi0JLnJlcXVlc3Rfc3BlY2lmaWMgPSBvbWFwX2RtX3RpbWVyX3JlcXVlc3Rfc3Bl Y2lmaWMsCi0JLnJlcXVlc3QgPSBvbWFwX2RtX3RpbWVyX3JlcXVlc3QsCi0JLnNldF9zb3VyY2Ug PSBvbWFwX2RtX3RpbWVyX3NldF9zb3VyY2UsCi0JLmdldF9pcnEgPSBvbWFwX2RtX3RpbWVyX2dl dF9pcnEsCi0JLnNldF9pbnRfZW5hYmxlID0gb21hcF9kbV90aW1lcl9zZXRfaW50X2VuYWJsZSwK LQkuc2V0X2ludF9kaXNhYmxlID0gb21hcF9kbV90aW1lcl9zZXRfaW50X2Rpc2FibGUsCi0JLmZy ZWUgPSBvbWFwX2RtX3RpbWVyX2ZyZWUsCi0JLmVuYWJsZSA9IG9tYXBfZG1fdGltZXJfZW5hYmxl LAotCS5kaXNhYmxlID0gb21hcF9kbV90aW1lcl9kaXNhYmxlLAotCS5nZXRfZmNsayA9IG9tYXBf ZG1fdGltZXJfZ2V0X2ZjbGssCi0JLnN0YXJ0ID0gb21hcF9kbV90aW1lcl9zdGFydCwKLQkuc3Rv cCA9IG9tYXBfZG1fdGltZXJfc3RvcCwKLQkuc2V0X2xvYWQgPSBvbWFwX2RtX3RpbWVyX3NldF9s b2FkLAotCS5zZXRfbWF0Y2ggPSBvbWFwX2RtX3RpbWVyX3NldF9tYXRjaCwKLQkuc2V0X3B3bSA9 IG9tYXBfZG1fdGltZXJfc2V0X3B3bSwKLQkuc2V0X3ByZXNjYWxlciA9IG9tYXBfZG1fdGltZXJf c2V0X3ByZXNjYWxlciwKLQkucmVhZF9jb3VudGVyID0gb21hcF9kbV90aW1lcl9yZWFkX2NvdW50 ZXIsCi0JLndyaXRlX2NvdW50ZXIgPSBvbWFwX2RtX3RpbWVyX3dyaXRlX2NvdW50ZXIsCi0JLnJl YWRfc3RhdHVzID0gb21hcF9kbV90aW1lcl9yZWFkX3N0YXR1cywKLQkud3JpdGVfc3RhdHVzID0g b21hcF9kbV90aW1lcl93cml0ZV9zdGF0dXMsCi19OwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKENP TkZJR19JUl9SWDUxKSB8fCBkZWZpbmVkKENPTkZJR19JUl9SWDUxX01PRFVMRSkKLXN0YXRpYyBz dHJ1Y3QgbGlyY19yeDUxX3BsYXRmb3JtX2RhdGEgcng1MV9saXJjX2RhdGEgPSB7Ci0JLnNldF9t YXhfbXB1X3dha2V1cF9sYXQgPSBvbWFwX3BtX3NldF9tYXhfbXB1X3dha2V1cF9sYXQsCi0JLnB3 bV90aW1lciA9IDksIC8qIFVzZSBHUFQgOSBmb3IgQ0lSICovCi0jaWYgSVNfRU5BQkxFRChDT05G SUdfT01BUF9ETV9USU1FUikKLQkuZG10aW1lciA9ICZwd21fZG10aW1lcl9wZGF0YSwKLSNlbmRp ZgotCi19OwotCi1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RldmljZSByeDUxX2xpcmNfZGV2aWNl ID0gewotCS5uYW1lICAgICAgICAgICA9ICJsaXJjX3J4NTEiLAotCS5pZCAgICAgICAgICAgICA9 IC0xLAotCS5kZXYgICAgICAgICAgICA9IHsKLQkJLnBsYXRmb3JtX2RhdGEgPSAmcng1MV9saXJj X2RhdGEsCi0JfSwKLX07Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCByeDUxX2luaXRfbGlyYyh2b2lk KQotewotCXBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcigmcng1MV9saXJjX2RldmljZSk7Ci19Ci0j ZWxzZQotc3RhdGljIHZvaWQgX19pbml0IHJ4NTFfaW5pdF9saXJjKHZvaWQpCi17Ci19Ci0jZW5k aWYKLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgbWFkY19od21vbiA9IHsKLQkubmFt ZQk9ICJ0d2w0MDMwX21hZGNfaHdtb24iLAotCS5pZAk9IC0xLAotfTsKLQotc3RhdGljIHZvaWQg X19pbml0IHJ4NTFfaW5pdF90d2w0MDMwX2h3bW9uKHZvaWQpCi17Ci0JcGxhdGZvcm1fZGV2aWNl X3JlZ2lzdGVyKCZtYWRjX2h3bW9uKTsKLX0KLQotc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2Ugb21hcDNfcm9tX3JuZ19kZXZpY2UgPSB7Ci0JLm5hbWUJCT0gIm9tYXAzLXJvbS1ybmciLAot CS5pZAkJPSAtMSwKLQkuZGV2CT0gewotCQkucGxhdGZvcm1fZGF0YQk9IHJ4NTFfc2VjdXJlX3Ju Z19jYWxsLAotCX0sCi19OwotCi1zdGF0aWMgdm9pZCBfX2luaXQgcng1MV9pbml0X29tYXAzX3Jv bV9ybmcodm9pZCkKLXsKLQlpZiAob21hcF90eXBlKCkgPT0gT01BUDJfREVWSUNFX1RZUEVfU0VD KSB7Ci0JCXByX2luZm8oIlJYLTUxOiBSZWdpc3RlcmluZyBPTUFQMyBIV1JORyBkZXZpY2VcbiIp OwotCQlwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXIoJm9tYXAzX3JvbV9ybmdfZGV2aWNlKTsKLQl9 Ci19Ci0KLXZvaWQgX19pbml0IHJ4NTFfcGVyaXBoZXJhbHNfaW5pdCh2b2lkKQotewotCXJ4NTFf Z3Bpb19pbml0KCk7Ci0Jcng1MV9pMmNfaW5pdCgpOwotCXJlZ3VsYXRvcl9oYXNfZnVsbF9jb25z dHJhaW50cygpOwotCWdwbWNfb25lbmFuZF9pbml0KGJvYXJkX29uZW5hbmRfZGF0YSk7Ci0Jcng1 MV9hZGRfZ3Bpb19rZXlzKCk7Ci0Jcng1MV9pbml0X3dsMTI1MSgpOwotCXJ4NTFfaW5pdF90c2My MDA1KCk7Ci0Jcng1MV9pbml0X2xpcmMoKTsKLQlzcGlfcmVnaXN0ZXJfYm9hcmRfaW5mbyhyeDUx X3BlcmlwaGVyYWxzX3NwaV9ib2FyZF9pbmZvLAotCQkJCUFSUkFZX1NJWkUocng1MV9wZXJpcGhl cmFsc19zcGlfYm9hcmRfaW5mbykpOwotCi0JcGFydGl0aW9uID0gb21hcF9tdXhfZ2V0KCJjb3Jl Iik7Ci0JaWYgKHBhcnRpdGlvbikKLQkJb21hcF9oc21tY19pbml0KG1tYyk7Ci0KLQlyeDUxX2No YXJnZXJfaW5pdCgpOwotCXJ4NTFfaW5pdF90d2w0MDMwX2h3bW9uKCk7Ci0Jcng1MV9pbml0X29t YXAzX3JvbV9ybmcoKTsKLX0KLQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9ib2Fy ZC1yeDUxLXZpZGVvLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJkLXJ4NTEtdmlkZW8uYwpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNmZWJjNS4uMDAwMDAwMAotLS0gYS9hcmNo L2FybS9tYWNoLW9tYXAyL2JvYXJkLXJ4NTEtdmlkZW8uYworKysgL2Rldi9udWxsCkBAIC0xLDY3 ICswLDAgQEAKLS8qCi0gKiBsaW51eC9hcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJkLXJ4NTEtdmlk ZW8uYwotICoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYQotICoKLSAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMiBhcwotICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uCi0gKi8KLQotI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgotI2luY2x1ZGUgPGxpbnV4L2lu aXQuaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KLSNpbmNsdWRlIDxsaW51 eC9ncGlvLmg+Ci0jaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPgotI2luY2x1ZGUgPGxpbnV4L21t Lmg+Ci0jaW5jbHVkZSA8YXNtL21hY2gtdHlwZXMuaD4KLSNpbmNsdWRlIDx2aWRlby9vbWFwZHNz Lmg+Ci0jaW5jbHVkZSA8dmlkZW8vb21hcC1wYW5lbC1kYXRhLmg+Ci0KLSNpbmNsdWRlIDxsaW51 eC9wbGF0Zm9ybV9kYXRhL3NwaS1vbWFwMi1tY3NwaS5oPgotCi0jaW5jbHVkZSAic29jLmgiCi0j aW5jbHVkZSAiYm9hcmQtcng1MS5oIgotCi0jaW5jbHVkZSAibXV4LmgiCi0KLSNkZWZpbmUgUlg1 MV9MQ0RfUkVTRVRfR1BJTwk5MAotCi0jaWYgZGVmaW5lZChDT05GSUdfRkJfT01BUDIpIHx8IGRl ZmluZWQoQ09ORklHX0ZCX09NQVAyX01PRFVMRSkKLQotc3RhdGljIHN0cnVjdCBjb25uZWN0b3Jf YXR2X3BsYXRmb3JtX2RhdGEgcng1MV90dl9wZGF0YSA9IHsKLQkubmFtZSA9ICJ0diIsCi0JLnNv dXJjZSA9ICJ2ZW5jLjAiLAotCS5jb25uZWN0b3JfdHlwZSA9IE9NQVBfRFNTX1ZFTkNfVFlQRV9D T01QT1NJVEUsCi0JLmludmVydF9wb2xhcml0eSA9IGZhbHNlLAotfTsKLQotc3RhdGljIHN0cnVj dCBwbGF0Zm9ybV9kZXZpY2Ugcng1MV90dl9jb25uZWN0b3JfZGV2aWNlID0gewotCS5uYW1lICAg ICAgICAgICAgICAgICAgID0gImNvbm5lY3Rvci1hbmFsb2ctdHYiLAotCS5pZCAgICAgICAgICAg ICAgICAgICAgID0gMCwKLQkuZGV2LnBsYXRmb3JtX2RhdGEgICAgICA9ICZyeDUxX3R2X3BkYXRh LAotfTsKLQotc3RhdGljIHN0cnVjdCBvbWFwX2Rzc19ib2FyZF9pbmZvIHJ4NTFfZHNzX2JvYXJk X2luZm8gPSB7Ci0JLmRlZmF1bHRfZGlzcGxheV9uYW1lID0gImxjZCIsCi19OwotCi1zdGF0aWMg aW50IF9faW5pdCByeDUxX3ZpZGVvX2luaXQodm9pZCkKLXsKLQlpZiAoIW1hY2hpbmVfaXNfbm9r aWFfcng1MSgpKQotCQlyZXR1cm4gMDsKLQotCWlmIChvbWFwX211eF9pbml0X2dwaW8oUlg1MV9M Q0RfUkVTRVRfR1BJTywgT01BUF9QSU5fT1VUUFVUKSkgewotCQlwcl9lcnIoIiVzIGNhbm5vdCBj b25maWd1cmUgTVVYIGZvciBMQ0QgUkVTRVRcbiIsIF9fZnVuY19fKTsKLQkJcmV0dXJuIDA7Ci0J fQotCi0Jb21hcF9kaXNwbGF5X2luaXQoJnJ4NTFfZHNzX2JvYXJkX2luZm8pOwotCi0JcGxhdGZv cm1fZGV2aWNlX3JlZ2lzdGVyKCZyeDUxX3R2X2Nvbm5lY3Rvcl9kZXZpY2UpOwotCi0JcmV0dXJu IDA7Ci19Ci0KLW9tYXBfc3Vic3lzX2luaXRjYWxsKHJ4NTFfdmlkZW9faW5pdCk7Ci0jZW5kaWYg LyogZGVmaW5lZChDT05GSUdfRkJfT01BUDIpIHx8IGRlZmluZWQoQ09ORklHX0ZCX09NQVAyX01P RFVMRSkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvYm9hcmQtcng1MS5jIGIv YXJjaC9hcm0vbWFjaC1vbWFwMi9ib2FyZC1yeDUxLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDQxMTYxY2E5Li4wMDAwMDAwCi0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvYm9hcmQt cng1MS5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLS8qCi0gKiBCb2FyZCBzdXBw b3J0IGZpbGUgZm9yIE5va2lhIE45MDAgKGFrYSBSWC01MSkuCi0gKgotICogQ29weXJpZ2h0IChD KSAyMDA3LCAyMDA4IE5va2lhCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSXZheWxvIERpbWl0cm92 IDxmcmVlbWFuZ29yZG9uQGFidi5iZz4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBQYWxpIFJvaMOh ciA8cGFsaS5yb2hhckBnbWFpbC5jb20+Ci0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz Ci0gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqLwotCi0j aW5jbHVkZSA8bGludXgva2VybmVsLmg+Ci0jaW5jbHVkZSA8bGludXgvaW5pdC5oPgotI2luY2x1 ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Ci0j aW5jbHVkZSA8bGludXgvZXJyLmg+Ci0jaW5jbHVkZSA8bGludXgvY2xrLmg+Ci0jaW5jbHVkZSA8 bGludXgvaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9ncGlvLmg+Ci0jaW5jbHVkZSA8bGludXgvbGVk cy5oPgotI2luY2x1ZGUgPGxpbnV4L3VzYi9waHkuaD4KLSNpbmNsdWRlIDxsaW51eC91c2IvbXVz Yi5oPgotI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RhdGEvc3BpLW9tYXAyLW1jc3BpLmg+Ci0K LSNpbmNsdWRlIDxhc20vbWFjaC10eXBlcy5oPgotI2luY2x1ZGUgPGFzbS9tYWNoL2FyY2guaD4K LSNpbmNsdWRlIDxhc20vbWFjaC9tYXAuaD4KLQotI2luY2x1ZGUgPGxpbnV4L29tYXAtZG1hLmg+ Ci0KLSNpbmNsdWRlICJjb21tb24uaCIKLSNpbmNsdWRlICJtdXguaCIKLSNpbmNsdWRlICJncG1j LmgiCi0jaW5jbHVkZSAicG0uaCIKLSNpbmNsdWRlICJzb2MuaCIKLSNpbmNsdWRlICJzZHJhbS1u b2tpYS5oIgotI2luY2x1ZGUgIm9tYXAtc2VjdXJlLmgiCi0KLSNkZWZpbmUgUlg1MV9HUElPX1NM RUVQX0lORCAxNjIKLQotc3RhdGljIHN0cnVjdCBncGlvX2xlZCBncGlvX2xlZHNbXSA9IHsKLQl7 Ci0JCS5uYW1lCT0gInNsZWVwX2luZCIsCi0JCS5ncGlvCT0gUlg1MV9HUElPX1NMRUVQX0lORCwK LQl9LAotfTsKLQotc3RhdGljIHN0cnVjdCBncGlvX2xlZF9wbGF0Zm9ybV9kYXRhIGdwaW9fbGVk X2luZm8gPSB7Ci0JLmxlZHMJCT0gZ3Bpb19sZWRzLAotCS5udW1fbGVkcwk9IEFSUkFZX1NJWkUo Z3Bpb19sZWRzKSwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlIGxlZHNfZ3Bp byA9IHsKLQkubmFtZQk9ICJsZWRzLWdwaW8iLAotCS5pZAk9IC0xLAotCS5kZXYJPSB7Ci0JCS5w bGF0Zm9ybV9kYXRhCT0gJmdwaW9fbGVkX2luZm8sCi0JfSwKLX07Ci0KLS8qCi0gKiBjcHVpZGxl IEMtc3RhdGVzIGRlZmluaXRpb24gZm9yIHJ4NTEuCi0gKgotICogVGhlICdleGl0X2xhdGVuY3kn IGZpZWxkIGlzIHRoZSBzdW0gb2Ygc2xlZXAKLSAqIGFuZCB3YWtlLXVwIGxhdGVuY2llcy4KLQot ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgfCBz dGF0ZSB8ICBleGl0X2xhdGVuY3kgIHwgIHRhcmdldF9yZXNpZGVuY3kgIHwKLSAgICAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHwgIEMxICAgfCAgICAx MTAgKyAxNjIgICB8ICAgICAgICAgICAgNSAgICAgICB8Ci0gICB8ICBDMiAgIHwgICAgMTA2ICsg MTgwICAgfCAgICAgICAgICAzMDkgICAgICAgfAotICAgfCAgQzMgICB8ICAgIDEwNyArIDQxMCAg IHwgICAgICAgIDQ2MDU3ICAgICAgIHwKLSAgIHwgIEM0ICAgfCAgICAxMjEgKyAzMzc0ICB8ICAg ICAgICA0NjA1NyAgICAgICB8Ci0gICB8ICBDNSAgIHwgICAgODU1ICsgMTE0NiAgfCAgICAgICAg NDYwNTcgICAgICAgfAotICAgfCAgQzYgICB8ICAgNzU4MCArIDQxMzQgIHwgICAgICAgNDg0MzI5 ICAgICAgIHwKLSAgIHwgIEM3ICAgfCAgIDc1MDUgKyAxNTI3NCB8ICAgICAgIDQ4NDMyOSAgICAg ICB8Ci0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K LSovCi0KLWV4dGVybiB2b2lkIF9faW5pdCByeDUxX3BlcmlwaGVyYWxzX2luaXQodm9pZCk7Ci0K LSNpZmRlZiBDT05GSUdfT01BUF9NVVgKLXN0YXRpYyBzdHJ1Y3Qgb21hcF9ib2FyZF9tdXggYm9h cmRfbXV4W10gX19pbml0ZGF0YSA9IHsKLQl7IC5yZWdfb2Zmc2V0ID0gT01BUF9NVVhfVEVSTUlO QVRPUiB9LAotfTsKLSNlbmRpZgotCi1zdGF0aWMgc3RydWN0IG9tYXBfbXVzYl9ib2FyZF9kYXRh IG11c2JfYm9hcmRfZGF0YSA9IHsKLQkuaW50ZXJmYWNlX3R5cGUJCT0gTVVTQl9JTlRFUkZBQ0Vf VUxQSSwKLQkubW9kZQkJCT0gTVVTQl9PVEcsCi0JLnBvd2VyCQkJPSAwLAotfTsKLQotc3RhdGlj IHZvaWQgX19pbml0IHJ4NTFfaW5pdCh2b2lkKQotewotCXN0cnVjdCBvbWFwX3NkcmNfcGFyYW1z ICpzZHJjX3BhcmFtczsKLQotCW9tYXAzX211eF9pbml0KGJvYXJkX211eCwgT01BUF9QQUNLQUdF X0NCQik7Ci0Jb21hcF9zZXJpYWxfaW5pdCgpOwotCi0Jc2RyY19wYXJhbXMgPSBub2tpYV9nZXRf c2RyYW1fdGltaW5ncygpOwotCW9tYXBfc2RyY19pbml0KHNkcmNfcGFyYW1zLCBzZHJjX3BhcmFt cyk7Ci0KLQl1c2JfYmluZF9waHkoIm11c2ItaGRyYy4wLmF1dG8iLCAwLCAidHdsNDAzMF91c2Ii KTsKLQl1c2JfbXVzYl9pbml0KCZtdXNiX2JvYXJkX2RhdGEpOwotCXJ4NTFfcGVyaXBoZXJhbHNf aW5pdCgpOwotCi0JaWYgKG9tYXBfdHlwZSgpID09IE9NQVAyX0RFVklDRV9UWVBFX1NFQykgewot I2lmZGVmIENPTkZJR19BUk1fRVJSQVRBXzQzMDk3MwotCQlwcl9pbmZvKCJSWC01MTogRW5hYmxp bmcgQVJNIGVycmF0YSA0MzA5NzMgd29ya2Fyb3VuZFxuIik7Ci0JCS8qIHNldCBJQkUgdG8gMSAq LwotCQlyeDUxX3NlY3VyZV91cGRhdGVfYXV4X2NyKEJJVCg2KSwgMCk7Ci0jZW5kaWYKLQl9Ci0K LQkvKiBFbnN1cmUgU0RSQyBwaW5zIGFyZSBtdXgnZCBmb3Igc2VsZi1yZWZyZXNoICovCi0Jb21h cF9tdXhfaW5pdF9zaWduYWwoInNkcmNfY2tlMCIsIE9NQVBfUElOX09VVFBVVCk7Ci0Jb21hcF9t dXhfaW5pdF9zaWduYWwoInNkcmNfY2tlMSIsIE9NQVBfUElOX09VVFBVVCk7Ci0KLQlwbGF0Zm9y bV9kZXZpY2VfcmVnaXN0ZXIoJmxlZHNfZ3Bpbyk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9faW5pdCBy eDUxX3Jlc2VydmUodm9pZCkKLXsKLQlvbWFwX3Jlc2VydmUoKTsKLX0KLQotTUFDSElORV9TVEFS VChOT0tJQV9SWDUxLCAiTm9raWEgUlgtNTEgYm9hcmQiKQotCS8qIE1haW50YWluZXI6IExhdXJp IExldWtrdW5lbiA8bGF1cmkubGV1a2t1bmVuQG5va2lhLmNvbT4gKi8KLQkuYXRhZ19vZmZzZXQJ PSAweDEwMCwKLQkucmVzZXJ2ZQk9IHJ4NTFfcmVzZXJ2ZSwKLQkubWFwX2lvCQk9IG9tYXAzX21h cF9pbywKLQkuaW5pdF9lYXJseQk9IG9tYXAzNDMwX2luaXRfZWFybHksCi0JLmluaXRfaXJxCT0g b21hcDNfaW5pdF9pcnEsCi0JLmluaXRfbWFjaGluZQk9IHJ4NTFfaW5pdCwKLQkuaW5pdF9sYXRl CT0gb21hcDM0MzBfaW5pdF9sYXRlLAotCS5pbml0X3RpbWUJPSBvbWFwX2luaXRfdGltZSwKLQku cmVzdGFydAk9IG9tYXAzeHh4X3Jlc3RhcnQsCi1NQUNISU5FX0VORApkaWZmIC0tZ2l0IGEvYXJj aC9hcm0vbWFjaC1vbWFwMi9ib2FyZC1yeDUxLmggYi9hcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJk LXJ4NTEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc2ZjQ5ZS4uMDAwMDAwMAot LS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJkLXJ4NTEuaAorKysgL2Rldi9udWxsCkBAIC0x LDExICswLDAgQEAKLS8qCi0gKiBEZWZpbmVzIGZvciByeDUxIGJvYXJkcwotICovCi0KLSNpZm5k ZWYgX09NQVBfQk9BUkRfUlg1MV9ICi0jZGVmaW5lIF9PTUFQX0JPQVJEX1JYNTFfSAotCi1leHRl cm4gdm9pZCBfX2luaXQgcng1MV9wZXJpcGhlcmFsc19pbml0KHZvaWQpOwotZXh0ZXJuIHZvaWQg X19pbml0IHJ4NTFfdmlkZW9fbWVtX2luaXQodm9pZCk7Ci0KLSNlbmRpZgotLSAKMi44LjEKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==