diff for duplicates of <1327045098.29773.0.camel@phoenix> diff --git a/a/1.txt b/N1/1.txt index 54c0ea6..9b129a7 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,944 +1,1969 @@ -VGhpcyBwYXRjaCBjb252ZXJ0cyB0aGUgZHJpdmVycyBpbiBkcml2ZXJzL2h3bW9uLyogdG8gdXNl -IHRoZQptb2R1bGVfaTJjX2RyaXZlcigpIG1hY3JvIHdoaWNoIG1ha2VzIHRoZSBjb2RlIHNtYWxs -ZXIgYW5kIGEgYml0IHNpbXBsZXIuCgpTaWduZWQtb2ZmLWJ5OiBBeGVsIExpbiA8YXhlbC5saW5A -Z21haWwuY29tPgpDYzogQ29yZW50aW4gTGFiYmUgPGNvcmVudGluLmxhYmJlQGdlb21hdHlzLmZy -PgpDYzogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KQ2M6ICJNYXJrIE0uIEhvZmZtYW4i -IDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPgpDYzogU3RldmUgR2xlbmRpbm5pbmcgPHN0ZXZlLmds -ZW5kaW5uaW5nQHNtc2MuY29tPgpDYzogUmlrdSBWb2lwaW8gPHJpa3Uudm9pcGlvQGlraS5maT4K -Q2M6IEd1aWxsYXVtZSBMaWduZXVsIDxndWlsbGF1bWUubGlnbmV1bEBnbWFpbC5jb20+CkNjOiBE -YXZpZCBHZW9yZ2UgPGRhdmlkLmdlb3JnZUBza2EuYWMuemE+CkNjOiAiSGFucyBKLiBLb2NoIiA8 -aGprQGhhbnNqa29jaC5kZT4KQ2M6IE1hcmMgSHVsc21hbiA8bS5odWxzbWFuQHR1ZGVsZnQubmw+ -CkNjOiBSdWRvbGYgTWFyZWsgPHIubWFyZWtAYXNzZW1ibGVyLmN6PgotLS0KIGRyaXZlcnMvaHdt -b24vYWQ3NDE0LmMgICAgICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2Fk -NzQxOC5jICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAy -MS5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZG0xMDI1LmMg -ICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMjYuYyAgICAg -ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAyOS5jICAgICAgICB8 -ICAgMTggKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyAgICAgICAg -fCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtOTI0MC5jICAgICAgICB8ICAg -MTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRzMTAxNS5jICAgICAgICB8ICAgMTMg -Ky0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDExLmMgICAgICAgIHwgICAxMiArLS0t -LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWR0NzQ2Mi5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0t -LS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDcwLmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0t -CiBkcml2ZXJzL2h3bW9uL2FkdDc0NzUuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRy -aXZlcnMvaHdtb24vYW1jNjgyMS5jICAgICAgICB8ICAgMTUgKy0tLS0tLS0tLS0tLS0tCiBkcml2 -ZXJzL2h3bW9uL2FzYjEwMC5jICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMv -aHdtb24vYXR4cDEuYyAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21v -bi9kczE2MjEuYyAgICAgICAgIHwgICAxNCArLS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9k -czYyMC5jICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2VtYzE0 -MDMuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZW1jMjEwMy5j -ICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9lbWM2dzIwMS5jICAg -ICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jICAgICAgICB8 -ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9mc2NobWQuYyAgICAgICAgIHwgICAx -MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2c3NjBhLmMgICAgICAgICAgfCAgIDE1ICst -LS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9nbDUxOHNtLmMgICAgICAgIHwgICAxMyArLS0t -LS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2dsNTIwc20uYyAgICAgICAgfCAgIDE1ICstLS0tLS0t -LS0tLS0tLQogZHJpdmVycy9od21vbi9qYzQyLmMgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0t -LS0tCiBkcml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K -IGRyaXZlcnMvaHdtb24vbG02My5jICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp -dmVycy9od21vbi9sbTczLmMgICAgICAgICAgIHwgICAxNSArLS0tLS0tLS0tLS0tLS0KIGRyaXZl -cnMvaHdtb24vbG03NS5jICAgICAgICAgICB8ICAgMTcgKy0tLS0tLS0tLS0tLS0tLS0KIGRyaXZl -cnMvaHdtb24vbG03Ny5jICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9o -d21vbi9sbTgwLmMgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9u -L2xtODMuYyAgICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG04 -NS5jICAgICAgICAgICB8ICAgMTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG04Ny5j -ICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTkwLmMgICAg -ICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTIuYyAgICAgICAg -ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG05My5jICAgICAgICAgICB8 -ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTk1MjQxLmMgICAgICAgIHwgICAx -MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyAgICAgICAgfCAgIDEzICst -LS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbHRjNDE1MS5jICAgICAgICB8ICAgMTMgKy0tLS0t -LS0tLS0tLQogZHJpdmVycy9od21vbi9sdGM0MjE1LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0t -LS0tCiBkcml2ZXJzL2h3bW9uL2x0YzQyNDUuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K -IGRyaXZlcnMvaHdtb24vbHRjNDI2MS5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp -dmVycy9od21vbi9tYXgxNjA2NS5jICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJz -L2h3bW9uL21heDE2MTkuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdt -b24vbWF4MTY2OC5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9t -YXg2NjM5LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL21heDY2 -NDIuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbWF4NjY1MC5j -ICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9wbWJ1cy9hZG0xMjc1 -LmMgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jICB8 -ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3BtYnVzL2x0YzI5NzguYyAgfCAgIDEy -ICstLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9wbWJ1cy9tYXgxNjA2NC5jIHwgICAxMiArLS0t -LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYyB8ICAgMTIgKy0tLS0tLS0t -LS0tCiBkcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYyAgfCAgIDEyICstLS0tLS0tLS0tLQog -ZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZl -cnMvaHdtb24vcG1idXMvdWNkOTAwMC5jICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3 -bW9uL3BtYnVzL3VjZDkyMDAuYyAgfCAgIDEyICstLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9w -bWJ1cy96bDYxMDAuYyAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vc2h0MjEu -YyAgICAgICAgICB8ICAgMjMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24v -c21tNjY1LmMgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9zbXNj -NDdtMTkyLmMgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3RobWM1MC5j -ICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wMTAyLmMgICAg -ICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3RtcDQwMS5jICAgICAgICAg -fCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wNDIxLmMgICAgICAgICB8ICAg -MTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi93ODM3OTFkLmMgICAgICAgIHwgICAxMyAr -LS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYyAgICAgICAgfCAgIDE2ICstLS0t -LS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdzgzNzkzLmMgICAgICAgICB8ICAgMTMgKy0tLS0t -LS0tLS0tLQogZHJpdmVycy9od21vbi93ODM3OTUuYyAgICAgICAgIHwgICAxMyArLS0tLS0tLS0t -LS0tCiBkcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K -IGRyaXZlcnMvaHdtb24vdzgzbDc4Nm5nLmMgICAgICB8ICAgMTUgKy0tLS0tLS0tLS0tLS0tCiA3 -NCBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA5MDkgZGVsZXRpb25zKC0pCgpkaWZm -IC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZDc0MTQuYyBiL2RyaXZlcnMvaHdtb24vYWQ3NDE0LmMK -aW5kZXggZWRiZGI2ZC4uMzY0NjUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZDc0MTQu -YworKysgYi9kcml2ZXJzL2h3bW9uL2FkNzQxNC5jCkBAIC0yNTYsMTcgKzI1Niw3IEBAIHN0YXRp -YyBzdHJ1Y3QgaTJjX2RyaXZlciBhZDc0MTRfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IGFkNzQx -NF9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGFkNzQxNF9pbml0KHZvaWQpCi17Ci0JcmV0 -dXJuIGkyY19hZGRfZHJpdmVyKCZhZDc0MTRfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KGFkNzQx -NF9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IGFkNzQxNF9leGl0KHZvaWQpCi17Ci0JaTJj -X2RlbF9kcml2ZXIoJmFkNzQxNF9kcml2ZXIpOwotfQotbW9kdWxlX2V4aXQoYWQ3NDE0X2V4aXQp -OworbW9kdWxlX2kyY19kcml2ZXIoYWQ3NDE0X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0 -ZWZhbiBSb2VzZSA8c3IgYXQgZGVueC5kZT4sICIKIAkgICAgICAiRnJhbmsgRWRlbGhhZXVzZXIg -PGZyYW5rLmVkZWxoYWV1c2VyIGF0IHNwYW5zaW9uLmNvbT4iKTsKZGlmZiAtLWdpdCBhL2RyaXZl -cnMvaHdtb24vYWQ3NDE4LmMgYi9kcml2ZXJzL2h3bW9uL2FkNzQxOC5jCmluZGV4IDQyNDYxZDEu -LmE1MGE2YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWQ3NDE4LmMKKysrIGIvZHJpdmVy -cy9od21vbi9hZDc0MTguYwpAQCAtMjk1LDIwICsyOTUsOSBAQCBzdGF0aWMgaW50IGFkNzQxOF9y -ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGlj -IGludCBfX2luaXQgYWQ3NDE4X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIo -JmFkNzQxOF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYWQ3NDE4X2V4aXQodm9p -ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWQ3NDE4X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry -aXZlcihhZDc0MThfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQWxlc3NhbmRybyBadW1tbyA8 -YS56dW1tb0B0b3dlcnRlY2guaXQ+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFENzQxNi8xNy8x -OCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9WRVJTSU9OKERSVl9W -RVJTSU9OKTsKLQotbW9kdWxlX2luaXQoYWQ3NDE4X2luaXQpOwotbW9kdWxlX2V4aXQoYWQ3NDE4 -X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZG0xMDIxLmMgYi9kcml2ZXJzL2h3 -bW9uL2FkbTEwMjEuYwppbmRleCBlNmZjMDA2Li5lYzg0MzMxIDEwMDY0NAotLS0gYS9kcml2ZXJz -L2h3bW9uL2FkbTEwMjEuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjEuYwpAQCAtNDcxLDE1 -ICs0NzEsNyBAQCBzdGF0aWMgc3RydWN0IGFkbTEwMjFfZGF0YSAqYWRtMTAyMV91cGRhdGVfZGV2 -aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf -X2luaXQgc2Vuc29yc19hZG0xMDIxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2 -ZXIoJmFkbTEwMjFfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfYWRt -MTAyMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjFfZHJpdmVyKTsKLX0K -K21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRnJv -ZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiBhbmQgIgogCQkiUGhpbGlwIEVkZWxicm9jayA8 -cGhpbEBuZXRyb2VkZ2UuY29tPiIpOwpAQCAtNDg4LDYgKzQ4MCwzIEBAIE1PRFVMRV9MSUNFTlNF -KCJHUEwiKTsKIAogbW9kdWxlX3BhcmFtKHJlYWRfb25seSwgYm9vbCwgMCk7CiBNT0RVTEVfUEFS -TV9ERVNDKHJlYWRfb25seSwgIkRvbid0IHNldCBhbnkgdmFsdWVzLCByZWFkIG9ubHkgbW9kZSIp -OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkbTEwMjFfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNv -cnNfYWRtMTAyMV9leGl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZG0xMDI1LmMgYi9k -cml2ZXJzL2h3bW9uL2FkbTEwMjUuYwppbmRleCAxNGQ4OTk3Li5lZmJjOWM5IDEwMDY0NAotLS0g -YS9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwpA -QCAtNjE4LDE5ICs2MTgsOCBAQCBzdGF0aWMgc3RydWN0IGFkbTEwMjVfZGF0YSAqYWRtMTAyNV91 -cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3Rh -dGljIGludCBfX2luaXQgc2Vuc29yc19hZG0xMDI1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj -X2FkZF9kcml2ZXIoJmFkbTEwMjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl -bnNvcnNfYWRtMTAyNV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjVfZHJp -dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjVfZHJpdmVyKTsKIAogTU9EVUxFX0FV -VEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJ -UFRJT04oIkFETTEwMjUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs -ZV9pbml0KHNlbnNvcnNfYWRtMTAyNV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAy -NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jIGIvZHJpdmVycy9o -d21vbi9hZG0xMDI2LmMKaW5kZXggY2Q3NzNjZS4uMWY0ZjVkZSAxMDA2NDQKLS0tIGEvZHJpdmVy -cy9od21vbi9hZG0xMDI2LmMKKysrIGIvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKQEAgLTE4ODEs -MjAgKzE4ODEsOSBAQCBzdGF0aWMgaW50IGFkbTEwMjZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50 -ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNtX2FkbTEwMjZf -aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWRtMTAyNl9kcml2ZXIpOwot -fQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21fYWRtMTAyNl9leGl0KHZvaWQpCi17Ci0JaTJjX2Rl -bF9kcml2ZXIoJmFkbTEwMjZfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjZf -ZHJpdmVyKTsKIAogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FVVEhPUigiUGhpbGlw -IFBva29ybnkgPHBwb2tvcm55QHBlbmd1aW5jb21wdXRpbmcuY29tPiwgIgogCSAgICAgICJKdXN0 -aW4gVGhpZXNzZW4gPGp0aGllc3NlbkBwZW5ndWluY29tcHV0aW5nLmNvbT4iKTsKIE1PRFVMRV9E -RVNDUklQVElPTigiQURNMTAyNiBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21fYWRtMTAyNl9p -bml0KTsKLW1vZHVsZV9leGl0KHNtX2FkbTEwMjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz -L2h3bW9uL2FkbTEwMjkuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCmluZGV4IGQ3ODljMzMu -LmM2NTMxYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCisrKyBiL2RyaXZl -cnMvaHdtb24vYWRtMTAyOS5jCkBAIC00NTAsMjQgKzQ1MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgYWRt -MTAyOV9kYXRhICphZG0xMDI5X3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJl -dHVybiBkYXRhOwogfQogCi0vKgotCUNvbW1vbiBtb2R1bGUgc3R1ZmYKLSovCi1zdGF0aWMgaW50 -IF9faW5pdCBzZW5zb3JzX2FkbTEwMjlfaW5pdCh2b2lkKQotewotCi0JcmV0dXJuIGkyY19hZGRf -ZHJpdmVyKCZhZG0xMDI5X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3Jz -X2FkbTEwMjlfZXhpdCh2b2lkKQotewotCi0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjlfZHJpdmVy -KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjlfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP -UigiQ29yZW50aW4gTEFCQkUgPGNvcmVudGluLmxhYmJlQGdlb21hdHlzLmZyPiIpOwogTU9EVUxF -X0RFU0NSSVBUSU9OKCJhZG0xMDI5IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIp -OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkbTEwMjlfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z -b3JzX2FkbTEwMjlfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyBi -L2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCmluZGV4IDk3ZTJjZmIuLjcxYjVlYzMgMTAwNjQ0Ci0t -LSBhL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5j -CkBAIC0xMTMxLDE5ICsxMTMxLDggQEAgc3RhdGljIHN0cnVjdCBhZG0xMDMxX2RhdGEgKmFkbTEw -MzFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK -LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRtMTAzMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu -IGkyY19hZGRfZHJpdmVyKCZhZG0xMDMxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhp -dCBzZW5zb3JzX2FkbTEwMzFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZG0xMDMx -X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZG0xMDMxX2RyaXZlcik7CiAKIE1PRFVM -RV9BVVRIT1IoIkFsZXhhbmRyZSBkJ0FsdG9uIDxhbGV4QGFsZXhkYWx0b24ub3JnPiIpOwogTU9E -VUxFX0RFU0NSSVBUSU9OKCJBRE0xMDMxL0FETTEwMzAgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T -RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtMTAzMV9pbml0KTsKLW1vZHVsZV9l -eGl0KHNlbnNvcnNfYWRtMTAzMV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRt -OTI0MC5jIGIvZHJpdmVycy9od21vbi9hZG05MjQwLmMKaW5kZXggMmRlNDUxMS4uMzQwYjg0MiAx -MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZG05MjQwLmMKKysrIGIvZHJpdmVycy9od21vbi9h -ZG05MjQwLmMKQEAgLTgyMSwyMSArODIxLDkgQEAgc3RhdGljIHN0cnVjdCBhZG05MjQwX2RhdGEg -KmFkbTkyNDBfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7 -CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRtOTI0MF9pbml0KHZvaWQpCi17Ci0J -cmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG05MjQwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lk -IF9fZXhpdCBzZW5zb3JzX2FkbTkyNDBfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZh -ZG05MjQwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZG05MjQwX2RyaXZlcik7CiAK -IE1PRFVMRV9BVVRIT1IoIk1pY2hpZWwgUm9vayA8bWljaGllbEBncmVuZGVscHJvamVjdC5ubD4s -ICIKIAkJIkdyYW50IENvYWR5IDxnY29hZHkubGtAZ21haWwuY29tPiBhbmQgb3RoZXJzIik7CiBN -T0RVTEVfREVTQ1JJUFRJT04oIkFETTkyNDAvRFMxNzgwL0xNODEgZHJpdmVyIik7CiBNT0RVTEVf -TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtOTI0MF9pbml0KTsKLW1v -ZHVsZV9leGl0KHNlbnNvcnNfYWRtOTI0MF9leGl0KTsKLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o -d21vbi9hZHMxMDE1LmMgYi9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYwppbmRleCBlZWRjYTNjLi42 -MGJlMzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYworKysgYi9kcml2ZXJz -L2h3bW9uL2FkczEwMTUuYwpAQCAtMzA2LDE5ICszMDYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19k -cml2ZXIgYWRzMTAxNV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gYWRzMTAxNV9pZCwKIH07CiAK -LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRzMTAxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu -IGkyY19hZGRfZHJpdmVyKCZhZHMxMDE1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhp -dCBzZW5zb3JzX2FkczEwMTVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZHMxMDE1 -X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZHMxMDE1X2RyaXZlcik7CiAKIE1PRFVM -RV9BVVRIT1IoIkRpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Iik7CiBNT0RVTEVfREVTQ1JJ -UFRJT04oIkFEUzEwMTUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs -ZV9pbml0KHNlbnNvcnNfYWRzMTAxNV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRzMTAx -NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0NzQxMS5jIGIvZHJpdmVycy9o -d21vbi9hZHQ3NDExLmMKaW5kZXggZmZlNjRmOC4uNzFiYWNjNSAxMDA2NDQKLS0tIGEvZHJpdmVy -cy9od21vbi9hZHQ3NDExLmMKKysrIGIvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKQEAgLTM0OCwx -NyArMzQ4LDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGFkdDc0MTFfZHJpdmVyID0gewog -CS5jbGFzcyA9IEkyQ19DTEFTU19IV01PTiwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNv -cnNfYWR0NzQxMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDEx -X2RyaXZlcik7Ci19Ci1tb2R1bGVfaW5pdChzZW5zb3JzX2FkdDc0MTFfaW5pdCkKLQotc3RhdGlj -IHZvaWQgX19leGl0IHNlbnNvcnNfYWR0NzQxMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2 -ZXIoJmFkdDc0MTFfZHJpdmVyKTsKLX0KLW1vZHVsZV9leGl0KHNlbnNvcnNfYWR0NzQxMV9leGl0 -KQorbW9kdWxlX2kyY19kcml2ZXIoYWR0NzQxMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJT -YXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+IGFuZCAiCiAJIldvbGZyYW0gU2Fu -ZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9h -ZHQ3NDYyLmMgYi9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYwppbmRleCAzZGYzMzFhLi5lNGIxY2M5 -IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYworKysgYi9kcml2ZXJzL2h3bW9u -L2FkdDc0NjIuYwpAQCAtMTk3NCwxOSArMTk3NCw4IEBAIHN0YXRpYyBpbnQgYWR0NzQ2Ml9yZW1v -dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu -dCBfX2luaXQgYWR0NzQ2Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZh -ZHQ3NDYyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhZHQ3NDYyX2V4aXQodm9p -ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWR0NzQ2Ml9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k -cml2ZXIoYWR0NzQ2Ml9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJEYXJyaWNrIEouIFdvbmcg -PGRqd29uZ0B1cy5pYm0uY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJBRFQ3NDYyIGRyaXZl -ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChhZHQ3NDYyX2luaXQp -OwotbW9kdWxlX2V4aXQoYWR0NzQ2Ml9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v -YWR0NzQ3MC5jIGIvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKaW5kZXggYjIzZWZkOS4uNTRlYzg5 -MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKKysrIGIvZHJpdmVycy9od21v -bi9hZHQ3NDcwLmMKQEAgLTEzMTcsMTkgKzEzMTcsOCBAQCBzdGF0aWMgaW50IGFkdDc0NzBfcmVt -b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBp -bnQgX19pbml0IGFkdDc0NzBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigm -YWR0NzQ3MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYWR0NzQ3MF9leGl0KHZv -aWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkdDc0NzBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNf -ZHJpdmVyKGFkdDc0NzBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRGFycmljayBKLiBXb25n -IDxkandvbmdAdXMuaWJtLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiQURUNzQ3MCBkcml2 -ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoYWR0NzQ3MF9pbml0 -KTsKLW1vZHVsZV9leGl0KGFkdDc0NzBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u -L2FkdDc0NzUuYyBiL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCmluZGV4IDcxZTlhYzQuLjUyMmNi -NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCisrKyBiL2RyaXZlcnMvaHdt -b24vYWR0NzQ3NS5jCkBAIC0xNjAwLDE5ICsxNjAwLDggQEAgc3RhdGljIHN0cnVjdCBhZHQ3NDc1 -X2RhdGEgKmFkdDc0NzVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJu -IGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWR0NzQ3NV9pbml0KHZvaWQp -Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Ci0KLXN0YXRp -YyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkdDc0NzVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp -dmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZHQ3NDc1X2RyaXZl -cik7CiAKIE1PRFVMRV9BVVRIT1IoIkFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYyIpOwogTU9E -VUxFX0RFU0NSSVBUSU9OKCJhZHQ3NDc1IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp -OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkdDc0NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z -b3JzX2FkdDc0NzVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FtYzY4MjEuYyBi -L2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCmluZGV4IDRhNGJmZWYuLjUyOTg4NTUgMTAwNjQ0Ci0t -LSBhL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5j -CkBAIC0xMDk1LDIwICsxMDk1LDcgQEAgc3RhdGljIHN0cnVjdCBhbWM2ODIxX2RhdGEgKmFtYzY4 -MjFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK -LQotc3RhdGljIGludCBfX2luaXQgYW1jNjgyMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h -ZGRfZHJpdmVyKCZhbWM2ODIxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhbWM2 -ODIxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYW1jNjgyMV9kcml2ZXIpOwotfQot -Ci1tb2R1bGVfaW5pdChhbWM2ODIxX2luaXQpOwotbW9kdWxlX2V4aXQoYW1jNjgyMV9leGl0KTsK -LQorbW9kdWxlX2kyY19kcml2ZXIoYW1jNjgyMV9kcml2ZXIpOwogCiBNT0RVTEVfTElDRU5TRSgi -R1BMIik7CiBNT0RVTEVfQVVUSE9SKCJULiBNZXJ0ZWxqIDx0b21hei5tZXJ0ZWxqQGd1ZXN0LmFy -bmVzLnNpPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hc2IxMDAuYyBiL2RyaXZlcnMv -aHdtb24vYXNiMTAwLmMKaW5kZXggYTVmMTY0Mi4uNTczZmZmNSAxMDA2NDQKLS0tIGEvZHJpdmVy -cy9od21vbi9hc2IxMDAuYworKysgYi9kcml2ZXJzL2h3bW9uL2FzYjEwMC5jCkBAIC0xMDAyLDE5 -ICsxMDAyLDggQEAgc3RhdGljIHN0cnVjdCBhc2IxMDBfZGF0YSAqYXNiMTAwX3VwZGF0ZV9kZXZp -Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f -aW5pdCBhc2IxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYXNiMTAw -X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhc2IxMDBfZXhpdCh2b2lkKQotewot -CWkyY19kZWxfZHJpdmVyKCZhc2IxMDBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFz -YjEwMF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJNYXJrIE0uIEhvZmZtYW4gPG1ob2ZmbWFu -QGxpZ2h0bGluay5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFTQjEwMCBCYWNoIGRyaXZl -ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChhc2IxMDBfaW5pdCk7 -Ci1tb2R1bGVfZXhpdChhc2IxMDBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2F0 -eHAxLmMgYi9kcml2ZXJzL2h3bW9uL2F0eHAxLmMKaW5kZXggZDRhNTg5Yi4uNWE2NzFjYSAxMDA2 -NDQKLS0tIGEvZHJpdmVycy9od21vbi9hdHhwMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYXR4cDEu -YwpAQCAtMzkwLDE1ICszOTAsNCBAQCBzdGF0aWMgaW50IGF0eHAxX3JlbW92ZShzdHJ1Y3QgaTJj -X2NsaWVudCAqY2xpZW50KQogCXJldHVybiAwOwogfTsKIAotc3RhdGljIGludCBfX2luaXQgYXR4 -cDFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYXR4cDFfZHJpdmVyKTsK -LX07Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhdHhwMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k -cml2ZXIoJmF0eHAxX2RyaXZlcik7Ci19OwotCi1tb2R1bGVfaW5pdChhdHhwMV9pbml0KTsKLW1v -ZHVsZV9leGl0KGF0eHAxX2V4aXQpOworbW9kdWxlX2kyY19kcml2ZXIoYXR4cDFfZHJpdmVyKTsK -ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZHMxNjIxLmMgYi9kcml2ZXJzL2h3bW9uL2RzMTYy -MS5jCmluZGV4IGUyM2E4YWIuLjVkYzU0ODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZHMx -NjIxLmMKKysrIGIvZHJpdmVycy9od21vbi9kczE2MjEuYwpAQCAtMzExLDIwICszMTEsOCBAQCBz -dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZHMxNjIxX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0 -CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGRzMTYyMV9pbml0KHZvaWQp -Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZkczE2MjFfZHJpdmVyKTsKLX0KLQotc3RhdGlj -IHZvaWQgX19leGl0IGRzMTYyMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmRzMTYy -MV9kcml2ZXIpOwotfQotCittb2R1bGVfaTJjX2RyaXZlcihkczE2MjFfZHJpdmVyKTsKIAogTU9E -VUxFX0FVVEhPUigiQ2hyaXN0aWFuIFcuIFp1Y2tzY2h3ZXJkdCA8emFueUB0cmlxLm5ldD4iKTsK -IE1PRFVMRV9ERVNDUklQVElPTigiRFMxNjIxIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQ -TCIpOwotCi1tb2R1bGVfaW5pdChkczE2MjFfaW5pdCk7Ci1tb2R1bGVfZXhpdChkczE2MjFfZXhp -dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2RzNjIwLmMgYi9kcml2ZXJzL2h3bW9uL2Rz -NjIwLmMKaW5kZXggMzAwYzNkNC4uNTA2NjNlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9k -czYyMC5jCisrKyBiL2RyaXZlcnMvaHdtb24vZHM2MjAuYwpAQCAtMjk3LDE5ICsyOTcsOCBAQCBz -dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZHM2MjBfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IGRz -NjIwX2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgZHM2MjBfaW5pdCh2b2lkKQotewotCXJl -dHVybiBpMmNfYWRkX2RyaXZlcigmZHM2MjBfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19l -eGl0IGRzNjIwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZHM2MjBfZHJpdmVyKTsK -LX0KK21vZHVsZV9pMmNfZHJpdmVyKGRzNjIwX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlJv -bGFuZCBTdGlnZ2UgPHN0aWdnZUBhbnRjb20uZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkRT -NjIwIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChkczYy -MF9pbml0KTsKLW1vZHVsZV9leGl0KGRzNjIwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o -d21vbi9lbWMxNDAzLmMgYi9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYwppbmRleCAyNzBmZmFiLi45 -OWFjMTQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYworKysgYi9kcml2ZXJz -L2h3bW9uL2VtYzE0MDMuYwpAQCAtMzY2LDE4ICszNjYsNyBAQCBzdGF0aWMgc3RydWN0IGkyY19k -cml2ZXIgc2Vuc29yX2VtYzE0MDMgPSB7CiAJLmFkZHJlc3NfbGlzdCA9IGVtYzE0MDNfYWRkcmVz -c19saXN0LAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yX2VtYzE0MDNfaW5pdCh2b2lk -KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc2Vuc29yX2VtYzE0MDMpOwotfQotCi1zdGF0 -aWMgdm9pZCAgX19leGl0IHNlbnNvcl9lbWMxNDAzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry -aXZlcigmc2Vuc29yX2VtYzE0MDMpOwotfQotCi1tb2R1bGVfaW5pdChzZW5zb3JfZW1jMTQwM19p -bml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcl9lbWMxNDAzX2V4aXQpOworbW9kdWxlX2kyY19kcml2 -ZXIoc2Vuc29yX2VtYzE0MDMpOwogCiBNT0RVTEVfQVVUSE9SKCJLYWxoYW4gVHJpc2FsIDxrYWxo -YW4udHJpc2FsQGludGVsLmNvbSIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJlbWMxNDAzIFRoZXJt -YWwgRHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzIxMDMuYyBiL2RyaXZl -cnMvaHdtb24vZW1jMjEwMy5jCmluZGV4IDg2NTA2MzkuLjBmNTEzODIgMTAwNjQ0Ci0tLSBhL2Ry -aXZlcnMvaHdtb24vZW1jMjEwMy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jMjEwMy5jCkBAIC03 -MjIsMTkgKzcyMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBlbWMyMTAzX2RyaXZlciA9 -IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0 -IHNlbnNvcnNfZW1jMjEwM19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZl -bWMyMTAzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2VtYzIxMDNf -ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZlbWMyMTAzX2RyaXZlcik7Ci19Cittb2R1 -bGVfaTJjX2RyaXZlcihlbWMyMTAzX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlIEds -ZW5kaW5uaW5nIDxzdGV2ZS5nbGVuZGlubmluZ0BzbXNjLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQ -VElPTigiU01TQyBFTUMyMTAzIGh3bW9uIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp -OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2VtYzIxMDNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z -b3JzX2VtYzIxMDNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMg -Yi9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMKaW5kZXggNmViYjliNy4uODQwZjUxMSAxMDA2NDQK -LS0tIGEvZHJpdmVycy9od21vbi9lbWM2dzIwMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jNncy -MDEuYwpAQCAtNTUyLDE3ICs1NTIsNyBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZW1jNncy -MDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGlj -IGludCBfX2luaXQgc2Vuc29yc19lbWM2dzIwMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h -ZGRfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoc2Vuc29yc19lbWM2 -dzIwMV9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZW1jNncyMDFfZXhpdCh2 -b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2V4 -aXQoc2Vuc29yc19lbWM2dzIwMV9leGl0KTsKK21vZHVsZV9pMmNfZHJpdmVyKGVtYzZ3MjAxX2Ry -aXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3Jn -PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJTTVNDIEVNQzZXMjAxIGhhcmR3YXJlIG1vbml0b3Jp -bmcgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYyBiL2RyaXZl -cnMvaHdtb24vZjc1Mzc1cy5jCmluZGV4IGVlZGY1NzQuLjM5OGRiYzggMTAwNjQ0Ci0tLSBhL2Ry -aXZlcnMvaHdtb24vZjc1Mzc1cy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCkBAIC04 -NTgsMTkgKzg1OCw4IEBAIHN0YXRpYyBpbnQgZjc1Mzc1X2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVu -dCAqY2xpZW50LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2Y3 -NTM3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZmNzUzNzVfZHJpdmVy -KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZjc1Mzc1X2V4aXQodm9pZCkKLXsK -LQlpMmNfZGVsX2RyaXZlcigmZjc1Mzc1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihm -NzUzNzVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUmlrdSBWb2lwaW8iKTsKIE1PRFVMRV9M -SUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9ERVNDUklQVElPTigiRjc1MzczL0Y3NTM3NS9GNzUzODcg -aGFyZHdhcmUgbW9uaXRvcmluZyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19mNzUz -NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2Y3NTM3NV9leGl0KTsKZGlmZiAtLWdpdCBh -L2RyaXZlcnMvaHdtb24vZnNjaG1kLmMgYi9kcml2ZXJzL2h3bW9uL2ZzY2htZC5jCmluZGV4IDA2 -Y2JmNzcuLjM1ZGRmNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZnNjaG1kLmMKKysrIGIv -ZHJpdmVycy9od21vbi9mc2NobWQuYwpAQCAtMTM0MSwyMCArMTM0MSw5IEBAIHN0YXRpYyBzdHJ1 -Y3QgZnNjaG1kX2RhdGEgKmZzY2htZF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikK -IAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgZnNjaG1kX2luaXQodm9pZCkK -LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmZzY2htZF9kcml2ZXIpOwotfQotCi1zdGF0aWMg -dm9pZCBfX2V4aXQgZnNjaG1kX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZnNjaG1k -X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihmc2NobWRfZHJpdmVyKTsKIAogTU9EVUxF -X0FVVEhPUigiSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4iKTsKIE1PRFVMRV9E -RVNDUklQVElPTigiRlNDIFBvc2VpZG9uLCBIZXJtZXMsIFNjeWxsYSwgSGVyYWNsZXMsIEhlaW1k -YWxsLCBIYWRlcyAiCiAJCQkiYW5kIFN5bGV1cyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJH -UEwiKTsKLQotbW9kdWxlX2luaXQoZnNjaG1kX2luaXQpOwotbW9kdWxlX2V4aXQoZnNjaG1kX2V4 -aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9nNzYwYS5jIGIvZHJpdmVycy9od21vbi9n -NzYwYS5jCmluZGV4IDgxYjZlMzUuLjA1MmUzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24v -Zzc2MGEuYworKysgYi9kcml2ZXJzL2h3bW9uL2c3NjBhLmMKQEAgLTI1MCwyMSArMjUwLDggQEAg -c3RhdGljIGludCBnNzYwYV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1 -cm4gMDsKIH0KIAotLyogbW9kdWxlIG1hbmFnZW1lbnQgKi8KLQotc3RhdGljIGludCBfX2luaXQg -Zzc2MGFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmZzc2MGFfZHJpdmVy -KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGc3NjBhX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs -X2RyaXZlcigmZzc2MGFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGc3NjBhX2RyaXZl -cik7CiAKIE1PRFVMRV9BVVRIT1IoIkhlcmJlcnQgVmFsZXJpbyBSaWVkZWwgPGh2ckBnbnUub3Jn -PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJHTVQgRzc2MEEgZHJpdmVyIik7CiBNT0RVTEVfTElD -RU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KGc3NjBhX2luaXQpOwotbW9kdWxlX2V4aXQoZzc2 -MGFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2dsNTE4c20uYyBiL2RyaXZlcnMv -aHdtb24vZ2w1MThzbS5jCmluZGV4IDhkMGY3MWQuLmFlMTkzZjAgMTAwNjQ0Ci0tLSBhL2RyaXZl -cnMvaHdtb24vZ2w1MThzbS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZ2w1MThzbS5jCkBAIC03MTAs -MjEgKzcxMCwxMCBAQCBzdGF0aWMgc3RydWN0IGdsNTE4X2RhdGEgKmdsNTE4X3VwZGF0ZV9kZXZp -Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f -aW5pdCBzZW5zb3JzX2dsNTE4c21faW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl -cigmZ2w1MThfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZ2w1MThz -bV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmdsNTE4X2RyaXZlcik7Ci19Cittb2R1 -bGVfaTJjX2RyaXZlcihnbDUxOF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29p -amFhcmQgPGZyb2RvbEBkZHMubmw+LCAiCiAJIkt5b3N0aSBNYWxra2kgPGttYWxra2lAY2MuaHV0 -LmZpPiBhbmQgIgogCSJIb25nLUd1bm4gQ2hldyA8aGdsaW51eEBndW5uZXQub3JnPiIpOwogTU9E -VUxFX0RFU0NSSVBUSU9OKCJHTDUxOFNNIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp -OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2dsNTE4c21faW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z -b3JzX2dsNTE4c21fZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2dsNTIwc20uYyBi -L2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jCmluZGV4IDE5MDkwOTcuLjUyZGFkYjIgMTAwNjQ0Ci0t -LSBhL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5j -CkBAIC05NzksMjMgKzk3OSwxMCBAQCBzdGF0aWMgc3RydWN0IGdsNTIwX2RhdGEgKmdsNTIwX3Vw -ZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi0KLXN0 -YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfZ2w1MjBzbV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky -Y19hZGRfZHJpdmVyKCZnbDUyMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vu -c29yc19nbDUyMHNtX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZ2w1MjBfZHJpdmVy -KTsKLX0KLQorbW9kdWxlX2kyY19kcml2ZXIoZ2w1MjBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP -UigiRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwgIgogCSJLecO2c3RpIE3DpGxra2kg -PGttYWxra2lAY2MuaHV0LmZpPiwgIgogCSJNYWFydGVuIERlcHJleiA8bWFhcnRlbmRlcHJlekB1 -c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdMNTIwU00gZHJp -dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfZ2w1 -MjBzbV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfZ2w1MjBzbV9leGl0KTsKZGlmZiAtLWdp -dCBhL2RyaXZlcnMvaHdtb24vamM0Mi5jIGIvZHJpdmVycy9od21vbi9qYzQyLmMKaW5kZXggMjhj -MDllZS4uMzA4MzQ2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9qYzQyLmMKKysrIGIvZHJp -dmVycy9od21vbi9qYzQyLmMKQEAgLTU4OCwxOSArNTg4LDggQEAgYWJvcnQ6CiAJcmV0dXJuIHJl -dDsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19qYzQyX2luaXQodm9pZCkKLXsKLQly -ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmpjNDJfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19l -eGl0IHNlbnNvcnNfamM0Ml9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmpjNDJfZHJp -dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGpjNDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP -UigiR3VlbnRlciBSb2VjayA8Z3VlbnRlci5yb2Vja0Blcmljc3Nvbi5jb20+Iik7CiBNT0RVTEVf -REVTQ1JJUFRJT04oIkpDNDIgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1v -ZHVsZV9pbml0KHNlbnNvcnNfamM0Ml9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfamM0Ml9l -eGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbGluZWFnZS1wZW0uYyBiL2RyaXZlcnMv -aHdtb24vbGluZWFnZS1wZW0uYwppbmRleCA1OGVkZWQyLi41YjhjOWFlIDEwMDY0NAotLS0gYS9k -cml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMKKysrIGIvZHJpdmVycy9od21vbi9saW5lYWdlLXBl -bS5jCkBAIC01NjgsMTkgKzU2OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBwZW1fZHJp -dmVyID0gewogCS5pZF90YWJsZSA9IHBlbV9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBl -bV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZwZW1fZHJpdmVyKTsKLX0K -LQotc3RhdGljIHZvaWQgX19leGl0IHBlbV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIo -JnBlbV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIocGVtX2RyaXZlcik7CiAKIE1PRFVM -RV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIpOwog -TU9EVUxFX0RFU0NSSVBUSU9OKCJMaW5lYWdlIENQTCBQRU0gaGFyZHdhcmUgbW9uaXRvcmluZyBk -cml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQocGVtX2luaXQp -OwotbW9kdWxlX2V4aXQocGVtX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTYz -LmMgYi9kcml2ZXJzL2h3bW9uL2xtNjMuYwppbmRleCA1ZTY0NTdhLi4xNWMwNWNjIDEwMDY0NAot -LS0gYS9kcml2ZXJzL2h3bW9uL2xtNjMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtNjMuYwpAQCAt -MTExOSwxOSArMTExOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG02M19kYXRhICpsbTYzX3VwZGF0ZV9k -ZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50 -IF9faW5pdCBzZW5zb3JzX2xtNjNfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl -cigmbG02M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTYzX2V4 -aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG02M19kcml2ZXIpOwotfQorbW9kdWxlX2ky -Y19kcml2ZXIobG02M19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUgPGto -YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE02MyBkcml2ZXIiKTsK -IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTYzX2luaXQp -OwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTYzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o -d21vbi9sbTczLmMgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwppbmRleCA5YzgwOTNjLi44ZmEyNjMy -IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtNzMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xt -NzMuYwpAQCAtMTk0LDIxICsxOTQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG03M19k -cml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi0vKiBtb2R1bGUg -Z2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNzNfaW5pdCh2b2lkKQotewot -CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf -X2V4aXQgc2Vuc29yc19sbTczX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG03M19k -cml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03M19kcml2ZXIpOwogCiBNT0RVTEVfQVVU -SE9SKCJHdWlsbGF1bWUgTGlnbmV1bCA8Z3VpbGxhdW1lLmxpZ25ldWxAZ21haWwuY29tPiIpOwog -TU9EVUxFX0RFU0NSSVBUSU9OKCJMTTczIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp -OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3Jz -X2xtNzNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtNzUuYyBiL2RyaXZlcnMv -aHdtb24vbG03NS5jCmluZGV4IGIzMzExYjEuLmE4M2YyMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv -aHdtb24vbG03NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG03NS5jCkBAIC00MzgsMjMgKzQzOCw4 -IEBAIGFib3J0OgogCXJldHVybiByZXQ7CiB9CiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t -LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBt -b2R1bGUgZ2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNzVfaW5pdCh2b2lk -KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03NV9kcml2ZXIpOwotfQotCi1zdGF0aWMg -dm9pZCBfX2V4aXQgc2Vuc29yc19sbTc1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm -bG03NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03NV9kcml2ZXIpOwogCiBNT0RV -TEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+Iik7CiBNT0RVTEVfREVT -Q1JJUFRJT04oIkxNNzUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs -ZV9pbml0KHNlbnNvcnNfbG03NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG03NV9leGl0 -KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG03Ny5jIGIvZHJpdmVycy9od21vbi9sbTc3 -LmMKaW5kZXggMDhmN2ZmZS4uZDhjMWYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTc3 -LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTc3LmMKQEAgLTQ0MywxOSArNDQzLDggQEAgc3RhdGlj -IHN0cnVjdCBsbTc3X2RhdGEgKmxtNzdfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYp -CiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbG03N19pbml0 -KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTc3X2RyaXZlcik7Ci19Ci0KLXN0 -YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtNzdfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp -dmVyKCZsbTc3X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsbTc3X2RyaXZlcik7CiAK -IE1PRFVMRV9BVVRIT1IoIkFuZHJhcyBCQUxJIDxkcmV3aWVAZnJlZW1haWwuaHU+Iik7CiBNT0RV -TEVfREVTQ1JJUFRJT04oIkxNNzcgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K -LW1vZHVsZV9pbml0KHNlbnNvcnNfbG03N19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG03 -N19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04MC5jIGIvZHJpdmVycy9od21v -bi9sbTgwLmMKaW5kZXggZGM2ZGY0ZS4uNmEyYTc3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v -bi9sbTgwLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTgwLmMKQEAgLTY5NywyMCArNjk3LDkgQEAg -ZG9uZToKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtODBf -aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQot -Ci1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTgwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs -X2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG04MF9kcml2ZXIp -OwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+IGFuZCAi -CiAJIlBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4iKTsKIE1PRFVMRV9ERVND -UklQVElPTigiTE04MCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxl -X2luaXQoc2Vuc29yc19sbTgwX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTgwX2V4aXQp -OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTgzLmMgYi9kcml2ZXJzL2h3bW9uL2xtODMu -YwppbmRleCAxZmVkMjY1Li5jZDQ1YjlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtODMu -YworKysgYi9kcml2ZXJzL2h3bW9uL2xtODMuYwpAQCAtNDMwLDE5ICs0MzAsOCBAQCBzdGF0aWMg -c3RydWN0IGxtODNfZGF0YSAqbG04M191cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikK -IAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTgzX2luaXQo -dm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtODNfZHJpdmVyKTsKLX0KLQotc3Rh -dGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG04M19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2 -ZXIoJmxtODNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtODNfZHJpdmVyKTsKIAog -TU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RV -TEVfREVTQ1JJUFRJT04oIkxNODMgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K -LW1vZHVsZV9pbml0KHNlbnNvcnNfbG04M19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG04 -M19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04NS5jIGIvZHJpdmVycy9od21v -bi9sbTg1LmMKaW5kZXggMjQwYjdmOS4uN2U0NmViYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v -bi9sbTg1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTg1LmMKQEAgLTE2OTUsMjIgKzE2OTUsMTAg -QEAgc3RhdGljIHN0cnVjdCBsbTg1X2RhdGEgKmxtODVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2 -aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLQotc3RhdGljIGludCBfX2luaXQgc21fbG04 -NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTg1X2RyaXZlcik7Ci19 -Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbV9sbTg1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry -aXZlcigmbG04NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG04NV9kcml2ZXIpOwog -CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQVVUSE9SKCJQaGlsaXAgUG9rb3JueSA8 -cHBva29ybnlAcGVuZ3VpbmNvbXB1dGluZy5jb20+LCAiCiAJIk1hcmdpdCBTY2h1YmVydC1XaGls -ZSA8bWFyZ2l0c3dAdC1vbmxpbmUuZGU+LCAiCiAJIkp1c3RpbiBUaGllc3NlbiA8anRoaWVzc2Vu -QHBlbmd1aW5jb21wdXRpbmcuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTg1LUIsIExN -ODUtQyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21fbG04NV9pbml0KTsKLW1vZHVsZV9leGl0 -KHNtX2xtODVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtODcuYyBiL2RyaXZl -cnMvaHdtb24vbG04Ny5jCmluZGV4IGViZjRlZmQuLjA5MGY1ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZl -cnMvaHdtb24vbG04Ny5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG04Ny5jCkBAIC0xMDU0LDE5ICsx -MDU0LDggQEAgc3RhdGljIHN0cnVjdCBsbTg3X2RhdGEgKmxtODdfdXBkYXRlX2RldmljZShzdHJ1 -Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNl -bnNvcnNfbG04N19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTg3X2Ry -aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtODdfZXhpdCh2b2lkKQot -ewotCWkyY19kZWxfZHJpdmVyKCZsbTg3X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihs -bTg3X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgt -ZnIub3JnPiBhbmQgb3RoZXJzIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNODcgZHJpdmVyIik7 -CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbG04N19pbml0 -KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG04N19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv -aHdtb24vbG05MC5jIGIvZHJpdmVycy9od21vbi9sbTkwLmMKaW5kZXggZDJkZDVmOS4uMjQ4ZjJi -NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkwLmMKKysrIGIvZHJpdmVycy9od21vbi9s -bTkwLmMKQEAgLTE1MTQsMTkgKzE1MTQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG05 -MF9kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMg -aW50IF9faW5pdCBzZW5zb3JzX2xtOTBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry -aXZlcigmbG05MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTkw -X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG05MF9kcml2ZXIpOwotfQorbW9kdWxl -X2kyY19kcml2ZXIobG05MF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUg -PGtoYWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE05MC9BRE0xMDMy -IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3Jz -X2xtOTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtOTBfZXhpdCk7CmRpZmYgLS1naXQg -YS9kcml2ZXJzL2h3bW9uL2xtOTIuYyBiL2RyaXZlcnMvaHdtb24vbG05Mi5jCmluZGV4IDk1Y2Rh -NDEuLjBmZTJmMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG05Mi5jCisrKyBiL2RyaXZl -cnMvaHdtb24vbG05Mi5jCkBAIC00MzIsMTkgKzQzMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry -aXZlciBsbTkyX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAK -LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbG05Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky -Y19hZGRfZHJpdmVyKCZsbTkyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5z -b3JzX2xtOTJfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTkyX2RyaXZlcik7Ci19 -Cittb2R1bGVfaTJjX2RyaXZlcihsbTkyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4g -RGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTky -L01BWDY2MzUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0 -KHNlbnNvcnNfbG05Ml9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG05Ml9leGl0KTsKZGlm -ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG05My5jIGIvZHJpdmVycy9od21vbi9sbTkzLmMKaW5k -ZXggZDJmYzRhYy4uMjJhZTVmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkzLmMKKysr -IGIvZHJpdmVycy9od21vbi9sbTkzLmMKQEAgLTI3NjEsMjAgKzI3NjEsOSBAQCBzdGF0aWMgc3Ry -dWN0IGkyY19kcml2ZXIgbG05M19kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9p -MmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsbTkzX2luaXQodm9pZCkKLXsKLQlyZXR1cm4g -aTJjX2FkZF9kcml2ZXIoJmxtOTNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGxt -OTNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTkzX2RyaXZlcik7Ci19Cittb2R1 -bGVfaTJjX2RyaXZlcihsbTkzX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIk1hcmsgTS4gSG9m -Zm1hbiA8bWhvZmZtYW5AbGlnaHRsaW5rLmNvbT4sICIKIAkJIkhhbnMgSi4gS29jaCA8aGprQGhh -bnNqa29jaC5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE05MyBkcml2ZXIiKTsKIE1PRFVM -RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobG05M19pbml0KTsKLW1vZHVsZV9leGl0 -KGxtOTNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTUyNDEuYyBiL2RyaXZl -cnMvaHdtb24vbG05NTI0MS5jCmluZGV4IDcwYmNhNjcuLmJkOGNkYjcgMTAwNjQ0Ci0tLSBhL2Ry -aXZlcnMvaHdtb24vbG05NTI0MS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG05NTI0MS5jCkBAIC00 -NTUsMTkgKzQ1NSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTk1MjQxX2RyaXZlciA9 -IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0 -IHNlbnNvcnNfbG05NTI0MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZs -bTk1MjQxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtOTUyNDFf -ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTk1MjQxX2RyaXZlcik7Ci19Cittb2R1 -bGVfaTJjX2RyaXZlcihsbTk1MjQxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRhdmlkZSBS -aXp6byA8ZWxwYS5yaXp6b0BnbWFpbC5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNOTUy -NDEgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5p -dChzZW5zb3JzX2xtOTUyNDFfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtOTUyNDFfZXhp -dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyBiL2RyaXZlcnMvaHdtb24v -bG05NTI0NS5jCmluZGV4IDVlNWZjMWIuLjlhNDZjMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdt -b24vbG05NTI0NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG05NTI0NS5jCkBAIC01MjUsMTkgKzUy -NSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTk1MjQ1X2RyaXZlciA9IHsKIAkuYWRk -cmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNf -bG05NTI0NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTk1MjQ1X2Ry -aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtOTUyNDVfZXhpdCh2b2lk -KQotewotCWkyY19kZWxfZHJpdmVyKCZsbTk1MjQ1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry -aXZlcihsbTk1MjQ1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkFsZXhhbmRlciBTdGVpbiA8 -YWxleGFuZGVyLnN0ZWluQHN5c3RlYy1lbGVjdHJvbmljLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQ -VElPTigiTE05NTI0NSBzZW5zb3IgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K -LW1vZHVsZV9pbml0KHNlbnNvcnNfbG05NTI0NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNf -bG05NTI0NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbHRjNDE1MS5jIGIvZHJp -dmVycy9od21vbi9sdGM0MTUxLmMKaW5kZXggNGFjMDZiNy4uZjY0NmI0NSAxMDA2NDQKLS0tIGEv -ZHJpdmVycy9od21vbi9sdGM0MTUxLmMKKysrIGIvZHJpdmVycy9od21vbi9sdGM0MTUxLmMKQEAg -LTIzOCwxOSArMjM4LDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGx0YzQxNTFfZHJpdmVy -ID0gewogCS5pZF90YWJsZQk9IGx0YzQxNTFfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBs -dGM0MTUxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmx0YzQxNTFfZHJp -dmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGx0YzQxNTFfZXhpdCh2b2lkKQotewotCWky -Y19kZWxfZHJpdmVyKCZsdGM0MTUxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0 -MTUxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlBlciBEYWxlbiA8cGVyLmRhbGVuQGFwcGVh -cnR2LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDE1MSBkcml2ZXIiKTsKIE1PRFVM -RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDE1MV9pbml0KTsKLW1vZHVsZV9l -eGl0KGx0YzQxNTFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2x0YzQyMTUuYyBi -L2RyaXZlcnMvaHdtb24vbHRjNDIxNS5jCmluZGV4IGM3ZTZkOGUuLjA3ODliNjMgMTAwNjQ0Ci0t -LSBhL2RyaXZlcnMvaHdtb24vbHRjNDIxNS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbHRjNDIxNS5j -CkBAIC0zMDksMTkgKzMwOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0MjE1X2Ry -aXZlciA9IHsKIAkuaWRfdGFibGUJPSBsdGM0MjE1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2lu -aXQgbHRjNDIxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsdGM0MjE1 -X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjE1X2V4aXQodm9pZCkKLXsK -LQlpMmNfZGVsX2RyaXZlcigmbHRjNDIxNV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIo -bHRjNDIxNV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJJcmEgVy4gU255ZGVyIDxpd3NAb3Zy -by5jYWx0ZWNoLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDIxNSBkcml2ZXIiKTsK -IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDIxNV9pbml0KTsKLW1v -ZHVsZV9leGl0KGx0YzQyMTVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2x0YzQy -NDUuYyBiL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jCmluZGV4IDY1OTMwODMuLjY5M2E2YmQgMTAw -NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbHRj -NDI0NS5jCkBAIC01NzgsMTkgKzU3OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0 -MjQ1X2RyaXZlciA9IHsKIAkuaWRfdGFibGUJPSBsdGM0MjQ1X2lkLAogfTsKIAotc3RhdGljIGlu -dCBfX2luaXQgbHRjNDI0NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZs -dGM0MjQ1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjQ1X2V4aXQodm9p -ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjNDI0NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k -cml2ZXIobHRjNDI0NV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJJcmEgVy4gU255ZGVyIDxp -d3NAb3Zyby5jYWx0ZWNoLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDI0NSBkcml2 -ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDI0NV9pbml0 -KTsKLW1vZHVsZV9leGl0KGx0YzQyNDVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u -L2x0YzQyNjEuYyBiL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jCmluZGV4IGNlNTIzNTUuLmFiMWJm -YmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jCisrKyBiL2RyaXZlcnMvaHdt -b24vbHRjNDI2MS5jCkBAIC0yOTcsMTkgKzI5Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZl -ciBsdGM0MjYxX2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBsdGM0MjYxX2lkLAogfTsKIAotc3Rh -dGljIGludCBfX2luaXQgbHRjNDI2MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJp -dmVyKCZsdGM0MjYxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjYxX2V4 -aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjNDI2MV9kcml2ZXIpOwotfQorbW9kdWxl -X2kyY19kcml2ZXIobHRjNDI2MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJv -ZWNrIDxndWVudGVyLnJvZWNrQGVyaWNzc29uLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigi -TFRDNDI2MSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQo -bHRjNDI2MV9pbml0KTsKLW1vZHVsZV9leGl0KGx0YzQyNjFfZXhpdCk7CmRpZmYgLS1naXQgYS9k -cml2ZXJzL2h3bW9uL21heDE2MDY1LmMgYi9kcml2ZXJzL2h3bW9uL21heDE2MDY1LmMKaW5kZXgg -ZjhlMzIzYS4uNTFlZGFlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjA2NS5jCisr -KyBiL2RyaXZlcnMvaHdtb24vbWF4MTYwNjUuYwpAQCAtNjk5LDE5ICs2OTksOCBAQCBzdGF0aWMg -c3RydWN0IGkyY19kcml2ZXIgbWF4MTYwNjVfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IG1heDE2 -MDY1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgbWF4MTYwNjVfaW5pdCh2b2lkKQotewot -CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbWF4MTYwNjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv -aWQgX19leGl0IG1heDE2MDY1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4MTYw -NjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDE2MDY1X2RyaXZlcik7CiAKIE1P -RFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIp -OwogTU9EVUxFX0RFU0NSSVBUSU9OKCJNQVgxNjA2NSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF -KCJHUEwiKTsKLQotbW9kdWxlX2luaXQobWF4MTYwNjVfaW5pdCk7Ci1tb2R1bGVfZXhpdChtYXgx -NjA2NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTYxOS5jIGIvZHJpdmVy -cy9od21vbi9tYXgxNjE5LmMKaW5kZXggZjE5NTk5Zi4uZWNhYzA0YSAxMDA2NDQKLS0tIGEvZHJp -dmVycy9od21vbi9tYXgxNjE5LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjE5LmMKQEAgLTM2 -MCwyMCArMzYwLDkgQEAgc3RhdGljIHN0cnVjdCBtYXgxNjE5X2RhdGEgKm1heDE2MTlfdXBkYXRl -X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBp -bnQgX19pbml0IHNlbnNvcnNfbWF4MTYxOV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf -ZHJpdmVyKCZtYXgxNjE5X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3Jz -X21heDE2MTlfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZtYXgxNjE5X2RyaXZlcik7 -Ci19Cittb2R1bGVfaTJjX2RyaXZlcihtYXgxNjE5X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1Io -IkFsZXhleSBGaXNoZXIgPGZpc2hvckBtYWlsLnJ1PiBhbmQgIgogCSJKZWFuIERlbHZhcmUgPGto -YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYMTYxOSBzZW5zb3Ig -ZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNf -bWF4MTYxOV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbWF4MTYxOV9leGl0KTsKZGlmZiAt -LWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTY2OC5jIGIvZHJpdmVycy9od21vbi9tYXgxNjY4LmMK -aW5kZXggODg5NTNmOS4uMTIyNDlmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjY4 -LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjY4LmMKQEAgLTQ4NCwxOSArNDg0LDggQEAgc3Rh -dGljIHN0cnVjdCBpMmNfZHJpdmVyIG1heDE2NjhfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3Qg -PSBtYXgxNjY4X2FkZHJfbGlzdCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbWF4 -MTY2OF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgxNjY4X2RyaXZl -cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX21heDE2NjhfZXhpdCh2b2lkKQot -ewotCWkyY19kZWxfZHJpdmVyKCZtYXgxNjY4X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl -cihtYXgxNjY4X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRhdmlkIEdlb3JnZSA8ZGF2aWQu -Z2VvcmdlQHNrYS5hYy56YT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYMTY2OCByZW1vdGUg -dGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1t -b2R1bGVfaW5pdChzZW5zb3JzX21heDE2NjhfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNvcnNfbWF4 -MTY2OF9leGl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXg2NjM5LmMgYi9kcml2ZXJz -L2h3bW9uL21heDY2MzkuYwppbmRleCBlMTBhMDkyLi5kMjAzZWIxIDEwMDY0NAotLS0gYS9kcml2 -ZXJzL2h3bW9uL21heDY2MzkuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDY2MzkuYwpAQCAtNjM1 -LDE5ICs2MzUsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4NjYzOV9kcml2ZXIgPSB7 -CiAJLmFkZHJlc3NfbGlzdCA9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBt -YXg2NjM5X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2MzlfZHJp -dmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDY2MzlfZXhpdCh2b2lkKQotewotCWky -Y19kZWxfZHJpdmVyKCZtYXg2NjM5X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihtYXg2 -NjM5X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlJvbGFuZCBTdGlnZ2UgPHN0aWdnZUBhbnRj -b20uZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIm1heDY2MzkgZHJpdmVyIik7CiBNT0RVTEVf -TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KG1heDY2MzlfaW5pdCk7Ci1tb2R1bGVfZXhp -dChtYXg2NjM5X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXg2NjQyLmMgYi9k -cml2ZXJzL2h3bW9uL21heDY2NDIuYwppbmRleCAyMDllOGE1Li40Mjk4OTA5IDEwMDY0NAotLS0g -YS9kcml2ZXJzL2h3bW9uL21heDY2NDIuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDY2NDIuYwpA -QCAtMzUyLDE5ICszNTIsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4NjY0Ml9kcml2 -ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9f -aW5pdCBtYXg2NjQyX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2 -NDJfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDY2NDJfZXhpdCh2b2lkKQot -ewotCWkyY19kZWxfZHJpdmVyKCZtYXg2NjQyX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl -cihtYXg2NjQyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlBlciBEYWxlbiA8cGVyLmRhbGVu -QGFwcGVhcnR2LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYNjY0MiBzZW5zb3IgZHJp -dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KG1heDY2NDJfaW5p -dCk7Ci1tb2R1bGVfZXhpdChtYXg2NjQyX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21v -bi9tYXg2NjUwLmMgYi9kcml2ZXJzL2h3bW9uL21heDY2NTAuYwppbmRleCAxNTljZTAyLi4zMjk2 -ZTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL21heDY2NTAuYworKysgYi9kcml2ZXJzL2h3 -bW9uL21heDY2NTAuYwpAQCAtNzI2LDE5ICs3MjYsOCBAQCBzdGF0aWMgc3RydWN0IG1heDY2NTBf -ZGF0YSAqbWF4NjY1MF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4g -ZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19tYXg2NjUwX2luaXQodm9pZCkK -LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2NTBfZHJpdmVyKTsKLX0KLQotc3RhdGlj -IHZvaWQgX19leGl0IHNlbnNvcnNfbWF4NjY1MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2 -ZXIoJm1heDY2NTBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDY2NTBfZHJpdmVy -KTsKIAogTU9EVUxFX0FVVEhPUigiSGFucyBKLiBLb2NoIik7CiBNT0RVTEVfREVTQ1JJUFRJT04o -Ik1BWDY2NTAgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1 -bGVfaW5pdChzZW5zb3JzX21heDY2NTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX21heDY2 -NTBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BtYnVzL2FkbTEyNzUuYyBiL2Ry -aXZlcnMvaHdtb24vcG1idXMvYWRtMTI3NS5jCmluZGV4IDgxYzdjMmUuLmZlNTJjM2MgMTAwNjQ0 -Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvYWRtMTI3NS5jCisrKyBiL2RyaXZlcnMvaHdtb24v -cG1idXMvYWRtMTI3NS5jCkBAIC0zMjYsMTggKzMyNiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry -aXZlciBhZG0xMjc1X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBhZG0xMjc1X2lkLAogfTsKIAot -c3RhdGljIGludCBfX2luaXQgYWRtMTI3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf -ZHJpdmVyKCZhZG0xMjc1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhZG0xMjc1 -X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWRtMTI3NV9kcml2ZXIpOwotfQorbW9k -dWxlX2kyY19kcml2ZXIoYWRtMTI3NV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVy -IFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRyaXZlciBmb3IgQW5hbG9nIERl -dmljZXMgQURNMTI3NSBhbmQgY29tcGF0aWJsZXMiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK -LW1vZHVsZV9pbml0KGFkbTEyNzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChhZG0xMjc1X2V4aXQpOwpk -aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmMgYi9kcml2ZXJzL2h3bW9u -L3BtYnVzL2xtMjUwNjYuYwppbmRleCA4NGEzN2YwLi44NmFjMTVhIDEwMDY0NAotLS0gYS9kcml2 -ZXJzL2h3bW9uL3BtYnVzL2xtMjUwNjYuYworKysgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL2xtMjUw -NjYuYwpAQCAtMzM0LDE4ICszMzQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG0yNTA2 -Nl9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gbG0yNTA2Nl9pZCwKIH07CiAKLXN0YXRpYyBpbnQg -X19pbml0IGxtMjUwNjZfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG0y -NTA2Nl9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbG0yNTA2Nl9leGl0KHZvaWQp -Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtMjUwNjZfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJp -dmVyKGxtMjUwNjZfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwog -TU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9yIExNMjUwNjYvTE01MDY0L0xNNTA2 -NiIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQobG0yNTA2Nl9pbml0KTsK -LW1vZHVsZV9leGl0KGxtMjUwNjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3Bt -YnVzL2x0YzI5NzguYyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCmluZGV4IDgyMGZm -ZjQuLmM5ZTRkZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCisr -KyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCkBAIC0zOTEsMTggKzM5MSw4IEBAIHN0 -YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGMyOTc4X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBs -dGMyOTc4X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgbHRjMjk3OF9pbml0KHZvaWQpCi17 -Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsdGMyOTc4X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2 -b2lkIF9fZXhpdCBsdGMyOTc4X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjMjk3 -OF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobHRjMjk3OF9kcml2ZXIpOwogCiBNT0RV -TEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRy -aXZlciBmb3IgTFRDMjk3OCBhbmQgTFRDMzg4MCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwot -bW9kdWxlX2luaXQobHRjMjk3OF9pbml0KTsKLW1vZHVsZV9leGl0KGx0YzI5NzhfZXhpdCk7CmRp -ZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDE2MDY0LmMgYi9kcml2ZXJzL2h3bW9u -L3BtYnVzL21heDE2MDY0LmMKaW5kZXggMWQ3N2NmNC4uNWNmZTIwZiAxMDA2NDQKLS0tIGEvZHJp -dmVycy9od21vbi9wbWJ1cy9tYXgxNjA2NC5jCisrKyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbWF4 -MTYwNjQuYwpAQCAtMTI2LDE4ICsxMjYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4 -MTYwNjRfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IG1heDE2MDY0X2lkLAogfTsKIAotc3RhdGlj -IGludCBfX2luaXQgbWF4MTYwNjRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl -cigmbWF4MTYwNjRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDE2MDY0X2V4 -aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4MTYwNjRfZHJpdmVyKTsKLX0KK21vZHVs -ZV9pMmNfZHJpdmVyKG1heDE2MDY0X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkd1ZW50ZXIg -Um9lY2siKTsKIE1PRFVMRV9ERVNDUklQVElPTigiUE1CdXMgZHJpdmVyIGZvciBNYXhpbSBNQVgx -NjA2NCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQobWF4MTYwNjRfaW5p -dCk7Ci1tb2R1bGVfZXhpdChtYXgxNjA2NF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt -b24vcG1idXMvbWF4MzQ0NDAuYyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYwppbmRl -eCBiZWFmNWE4Li44OWFlMzAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0 -NDQwLmMKKysrIGIvZHJpdmVycy9od21vbi9wbWJ1cy9tYXgzNDQ0MC5jCkBAIC0yNDgsMTggKzI0 -OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtYXgzNDQ0MF9kcml2ZXIgPSB7CiAJLmlk -X3RhYmxlID0gbWF4MzQ0NDBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBtYXgzNDQ0MF9p -bml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgzNDQ0MF9kcml2ZXIpOwot -fQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbWF4MzQ0NDBfZXhpdCh2b2lkKQotewotCWkyY19kZWxf -ZHJpdmVyKCZtYXgzNDQ0MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobWF4MzQ0NDBf -ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NS -SVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9yIE1heGltIE1BWDM0NDQwL01BWDM0NDQxIik7CiBNT0RV -TEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdChtYXgzNDQ0MF9pbml0KTsKLW1vZHVsZV9l -eGl0KG1heDM0NDQwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1cy9tYXg4 -Njg4LmMgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYwppbmRleCBlMmI3NGJiLi44MmM1 -OThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYworKysgYi9kcml2 -ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYwpAQCAtMjAzLDE4ICsyMDMsOCBAQCBzdGF0aWMgc3Ry -dWN0IGkyY19kcml2ZXIgbWF4ODY4OF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gbWF4ODY4OF9p -ZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IG1heDg2ODhfaW5pdCh2b2lkKQotewotCXJldHVy -biBpMmNfYWRkX2RyaXZlcigmbWF4ODY4OF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4 -aXQgbWF4ODY4OF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDg2ODhfZHJpdmVy -KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDg2ODhfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP -UigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9y -IE1heGltIE1BWDg2ODgiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLW1vZHVsZV9pbml0KG1h -eDg2ODhfaW5pdCk7Ci1tb2R1bGVfZXhpdChtYXg4Njg4X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJp -dmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jIGIvZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jCmlu -ZGV4IDE4YTM4NWUuLmRhNWZlMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvcG1i -dXMuYworKysgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmMKQEAgLTIyNCwxOCArMjI0LDgg -QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHBtYnVzX2RyaXZlciA9IHsKIAkuaWRfdGFibGUg -PSBwbWJ1c19pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBtYnVzX2luaXQodm9pZCkKLXsK -LQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnBtYnVzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lk -IF9fZXhpdCBwbWJ1c19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnBtYnVzX2RyaXZl -cik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihwbWJ1c19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9S -KCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdlbmVyaWMgUE1CdXMgZHJp -dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdChwbWJ1c19pbml0KTsK -LW1vZHVsZV9leGl0KHBtYnVzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1 -cy91Y2Q5MDAwLmMgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYwppbmRleCA0ZmY2Y2Yy -Li43NTlhNTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYworKysg -Yi9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYwpAQCAtMjU4LDE4ICsyNTgsOCBAQCBzdGF0 -aWMgc3RydWN0IGkyY19kcml2ZXIgdWNkOTAwMF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gdWNk -OTAwMF9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHVjZDkwMDBfaW5pdCh2b2lkKQotewot -CXJldHVybiBpMmNfYWRkX2RyaXZlcigmdWNkOTAwMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9p -ZCBfX2V4aXQgdWNkOTAwMF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnVjZDkwMDBf -ZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHVjZDkwMDBfZHJpdmVyKTsKIAogTU9EVUxF -X0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2 -ZXIgZm9yIFRJIFVDRDkweHh4Iik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5p -dCh1Y2Q5MDAwX2luaXQpOwotbW9kdWxlX2V4aXQodWNkOTAwMF9leGl0KTsKZGlmZiAtLWdpdCBh -L2RyaXZlcnMvaHdtb24vcG1idXMvdWNkOTIwMC5jIGIvZHJpdmVycy9od21vbi9wbWJ1cy91Y2Q5 -MjAwLmMKaW5kZXggNmUxYzFhOC4uNjI5ZDBjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9w -bWJ1cy91Y2Q5MjAwLmMKKysrIGIvZHJpdmVycy9od21vbi9wbWJ1cy91Y2Q5MjAwLmMKQEAgLTE5 -MCwxOCArMTkwLDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHVjZDkyMDBfZHJpdmVyID0g -ewogCS5pZF90YWJsZSA9IHVjZDkyMDBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB1Y2Q5 -MjAwX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnVjZDkyMDBfZHJpdmVy -KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHVjZDkyMDBfZXhpdCh2b2lkKQotewotCWkyY19k -ZWxfZHJpdmVyKCZ1Y2Q5MjAwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih1Y2Q5MjAw -X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2siKTsKIE1PRFVMRV9ERVND -UklQVElPTigiUE1CdXMgZHJpdmVyIGZvciBUSSBVQ0Q5MjJ4LCBVQ0Q5MjR4Iik7CiBNT0RVTEVf -TElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdCh1Y2Q5MjAwX2luaXQpOwotbW9kdWxlX2V4aXQo -dWNkOTIwMF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vcG1idXMvemw2MTAwLmMg -Yi9kcml2ZXJzL2h3bW9uL3BtYnVzL3psNjEwMC5jCmluZGV4IDQ4YzdiNGEuLjBiYjdiYmEgMTAw -NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvemw2MTAwLmMKKysrIGIvZHJpdmVycy9od21v -bi9wbWJ1cy96bDYxMDAuYwpAQCAtMjY4LDE4ICsyNjgsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19k -cml2ZXIgemw2MTAwX2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSB6bDYxMDBfaWQsCiB9OwogCi1z -dGF0aWMgaW50IF9faW5pdCB6bDYxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry -aXZlcigmemw2MTAwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB6bDYxMDBfZXhp -dCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ6bDYxMDBfZHJpdmVyKTsKLX0KK21vZHVsZV9p -MmNfZHJpdmVyKHpsNjEwMF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNr -Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRyaXZlciBmb3IgWkw2MTAwIGFuZCBjb21w -YXRpYmxlcyIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQoemw2MTAwX2lu -aXQpOwotbW9kdWxlX2V4aXQoemw2MTAwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21v -bi9zaHQyMS5jIGIvZHJpdmVycy9od21vbi9zaHQyMS5jCmluZGV4IDE1Mzk4NzguLjZjMmRlZGUg -MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vc2h0MjEuYworKysgYi9kcml2ZXJzL2h3bW9uL3No -dDIxLmMKQEAgLTI2MSwyOCArMjYxLDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHNodDIx -X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgICAgPSBzaHQyMV9pZCwKIH07CiAKLS8qKgotICogc2h0 -MjFfaW5pdCgpIC0gaW5pdGlhbGl6ZSBkcml2ZXIKLSAqCi0gKiBDYWxsZWQgd2hlbiBrZXJuZWwg -aXMgYm9vdGVkIG9yIG1vZHVsZSBpcyBpbnNlcnRlZC4KLSAqIFJldHVybnMgMCBvbiBzdWNjZXNz -LgotICovCi1zdGF0aWMgaW50IF9faW5pdCBzaHQyMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky -Y19hZGRfZHJpdmVyKCZzaHQyMV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoc2h0MjFfaW5pdCk7 -Ci0KLS8qKgotICogc2h0MjFfaW5pdCgpIC0gY2xlYW4gdXAgZHJpdmVyCi0gKgotICogQ2FsbGVk -IHdoZW4gbW9kdWxlIGlzIHJlbW92ZWQuCi0gKi8KLXN0YXRpYyB2b2lkIF9fZXhpdCBzaHQyMV9l -eGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnNodDIxX2RyaXZlcik7Ci19Ci1tb2R1bGVf -ZXhpdChzaHQyMV9leGl0KTsKK21vZHVsZV9pMmNfZHJpdmVyKHNodDIxX2RyaXZlcik7CiAKIE1P -RFVMRV9BVVRIT1IoIlVycyBGbGVpc2NoIDx1cnMuZmxlaXNjaEBzZW5zaXJpb24uY29tPiIpOwog -TU9EVUxFX0RFU0NSSVBUSU9OKCJTZW5zaXJpb24gU0hUMjEgaHVtaWRpdHkgYW5kIHRlbXBlcmF0 -dXJlIHNlbnNvciBkcml2ZXIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vc21tNjY1LmMg -Yi9kcml2ZXJzL2h3bW9uL3NtbTY2NS5jCmluZGV4IDFiNDMwMWYuLjI0MzgyYzcgMTAwNjQ0Ci0t -LSBhL2RyaXZlcnMvaHdtb24vc21tNjY1LmMKKysrIGIvZHJpdmVycy9od21vbi9zbW02NjUuYwpA -QCAtNzE4LDE5ICs3MTgsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc21tNjY1X2RyaXZl -ciA9IHsKIAkuaWRfdGFibGUgPSBzbW02NjVfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBz -bW02NjVfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc21tNjY1X2RyaXZl -cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbW02NjVfZXhpdCh2b2lkKQotewotCWkyY19k -ZWxfZHJpdmVyKCZzbW02NjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHNtbTY2NV9k -cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJ -UFRJT04oIlNNTTY2NSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxl -X2luaXQoc21tNjY1X2luaXQpOwotbW9kdWxlX2V4aXQoc21tNjY1X2V4aXQpOwpkaWZmIC0tZ2l0 -IGEvZHJpdmVycy9od21vbi9zbXNjNDdtMTkyLmMgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIu -YwppbmRleCA5NTc2MWJkLi4zMDdlNmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3Ntc2M0 -N20xOTIuYworKysgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIuYwpAQCAtNjY5LDE5ICs2Njks -OCBAQCBzdGF0aWMgc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqc21zYzQ3bTE5Ml91cGRhdGVfZGV2 -aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf -X2luaXQgc21zYzQ3bTE5Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZz -bXNjNDdtMTkyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbXNjNDdtMTkyX2V4 -aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmc21zYzQ3bTE5Ml9kcml2ZXIpOwotfQorbW9k -dWxlX2kyY19kcml2ZXIoc21zYzQ3bTE5Ml9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYXJ0 -bXV0IFJpY2sgPGxpbnV4QHJpY2suY2xhcmFuZXQuZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04o -IlNNU0M0N00xOTIgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9p -bml0KHNtc2M0N20xOTJfaW5pdCk7Ci1tb2R1bGVfZXhpdChzbXNjNDdtMTkyX2V4aXQpOwpkaWZm -IC0tZ2l0IGEvZHJpdmVycy9od21vbi90aG1jNTAuYyBiL2RyaXZlcnMvaHdtb24vdGhtYzUwLmMK -aW5kZXggYTE5NTkxNC4uNTFkZGIzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90aG1jNTAu -YworKysgYi9kcml2ZXJzL2h3bW9uL3RobWM1MC5jCkBAIC00ODIsMTggKzQ4Miw3IEBAIHN0YXRp -YyBzdHJ1Y3QgdGhtYzUwX2RhdGEgKnRobWM1MF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2Ug -KmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc21fdGhtYzUwX2lu -aXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnRobWM1MF9kcml2ZXIpOwotfQot -Ci1zdGF0aWMgdm9pZCBfX2V4aXQgc21fdGhtYzUwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry -aXZlcigmdGhtYzUwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih0aG1jNTBfZHJpdmVy -KTsKIAogTU9EVUxFX0FVVEhPUigiS3J6eXN6dG9mIEhlbHQgPGtyenlzenRvZi5oMUB3cC5wbD4i -KTsKIE1PRFVMRV9ERVNDUklQVElPTigiVEhNQzUwIGRyaXZlciIpOwotCi1tb2R1bGVfaW5pdChz -bV90aG1jNTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzbV90aG1jNTBfZXhpdCk7CmRpZmYgLS1naXQg -YS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jIGIvZHJpdmVycy9od21vbi90bXAxMDIuYwppbmRleCBj -MDhlZWUyLi4wZDQ2NmI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCisrKyBi -L2RyaXZlcnMvaHdtb24vdG1wMTAyLmMKQEAgLTI5MiwxNyArMjkyLDcgQEAgc3RhdGljIHN0cnVj -dCBpMmNfZHJpdmVyIHRtcDEwMl9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlCT0gdG1wMTAyX2lkLAog -fTsKIAotc3RhdGljIGludCBfX2luaXQgdG1wMTAyX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj -X2FkZF9kcml2ZXIoJnRtcDEwMl9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQodG1wMTAyX2luaXQp -OwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgdG1wMTAyX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry -aXZlcigmdG1wMTAyX2RyaXZlcik7Ci19Ci1tb2R1bGVfZXhpdCh0bXAxMDJfZXhpdCk7Cittb2R1 -bGVfaTJjX2RyaXZlcih0bXAxMDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiU3RldmVuIEtp -bmcgPHNma2luZ0BmZHdkYy5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlRleGFzIEluc3Ry -dW1lbnRzIFRNUDEwMiB0ZW1wZXJhdHVyZSBzZW5zb3IgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9k -cml2ZXJzL2h3bW9uL3RtcDQwMS5jIGIvZHJpdmVycy9od21vbi90bXA0MDEuYwppbmRleCA4Yjlh -Nzc0Li45MmI3ZjFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDQwMS5jCisrKyBiL2Ry -aXZlcnMvaHdtb24vdG1wNDAxLmMKQEAgLTY2MiwxOSArNjYyLDggQEAgc3RhdGljIHN0cnVjdCBp -MmNfZHJpdmVyIHRtcDQwMV9kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMs -CiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB0bXA0MDFfaW5pdCh2b2lkKQotewotCXJldHVybiBp -MmNfYWRkX2RyaXZlcigmdG1wNDAxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB0 -bXA0MDFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ0bXA0MDFfZHJpdmVyKTsKLX0K -K21vZHVsZV9pMmNfZHJpdmVyKHRtcDQwMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYW5z -IGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJU -ZXhhcyBJbnN0cnVtZW50cyBUTVA0MDEgdGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwogTU9E -VUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdCh0bXA0MDFfaW5pdCk7Ci1tb2R1bGVf -ZXhpdCh0bXA0MDFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jIGIv -ZHJpdmVycy9od21vbi90bXA0MjEuYwppbmRleCBjNDgzODFmLi44ZmFjODdhIDEwMDY0NAotLS0g -YS9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vdG1wNDIxLmMKQEAg -LTMyNCwyMCArMzI0LDkgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHRtcDQyMV9kcml2ZXIg -PSB7CiAJLmFkZHJlc3NfbGlzdCA9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5p -dCB0bXA0MjFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdG1wNDIxX2Ry -aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB0bXA0MjFfZXhpdCh2b2lkKQotewotCWky -Y19kZWxfZHJpdmVyKCZ0bXA0MjFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHRtcDQy -MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJBbmRyZSBQcmVuZGVsIDxhbmRyZS5wcmVuZGVs -QGdteC5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiVGV4YXMgSW5zdHJ1bWVudHMgVE1QNDIx -LzQyMi80MjMgdGVtcGVyYXR1cmUgc2Vuc29yIgogCQkgICAiIGRyaXZlciIpOwogTU9EVUxFX0xJ -Q0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdCh0bXA0MjFfaW5pdCk7Ci1tb2R1bGVfZXhpdCh0 -bXA0MjFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYyBiL2RyaXZl -cnMvaHdtb24vdzgzNzkxZC5jCmluZGV4IDY3OTE0NmQuLmI5MmYwMWYgMTAwNjQ0Ci0tLSBhL2Ry -aXZlcnMvaHdtb24vdzgzNzkxZC5jCisrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzkxZC5jCkBAIC0x -NjY4LDE5ICsxNjY4LDggQEAgc3RhdGljIHZvaWQgdzgzNzkxZF9wcmludF9kZWJ1ZyhzdHJ1Y3Qg -dzgzNzkxZF9kYXRhICpkYXRhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiB9CiAjZW5kaWYKIAotc3Rh -dGljIGludCBfX2luaXQgc2Vuc29yc193ODM3OTFkX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj -X2FkZF9kcml2ZXIoJnc4Mzc5MWRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl -bnNvcnNfdzgzNzkxZF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4Mzc5MWRfZHJp -dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4Mzc5MWRfZHJpdmVyKTsKIAogTU9EVUxFX0FV -VEhPUigiQ2hhcmxlcyBTcGlyYWtpcyA8YmV6YXVyQGdtYWlsLmNvbT4iKTsKIE1PRFVMRV9ERVND -UklQVElPTigiVzgzNzkxRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9k -dWxlX2luaXQoc2Vuc29yc193ODM3OTFkX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc193ODM3 -OTFkX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTJkLmMgYi9kcml2ZXJz -L2h3bW9uL3c4Mzc5MmQuYwppbmRleCBlMzU2NjE4Li4xMTc1ZGNmIDEwMDY0NAotLS0gYS9kcml2 -ZXJzL2h3bW9uL3c4Mzc5MmQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYwpAQCAtMTcw -OCwyMiArMTcwOCw4IEBAIHN0YXRpYyB2b2lkIHc4Mzc5MmRfcHJpbnRfZGVidWcoc3RydWN0IHc4 -Mzc5MmRfZGF0YSAqZGF0YSwgc3RydWN0IGRldmljZSAqZGV2KQogfQogI2VuZGlmCiAKLXN0YXRp -YyBpbnQgX19pbml0Ci1zZW5zb3JzX3c4Mzc5MmRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf -YWRkX2RyaXZlcigmdzgzNzkyZF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQKLXNl -bnNvcnNfdzgzNzkyZF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4Mzc5MmRfZHJp -dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4Mzc5MmRfZHJpdmVyKTsKIAogTU9EVUxFX0FV -VEhPUigiQ2h1bmhhbyBIdWFuZyBAIFdpbmJvbmQgPERaU2hlbkBXaW5ib25kLmNvbS50dz4iKTsK -IE1PRFVMRV9ERVNDUklQVElPTigiVzgzNzkyQUQvRCBkcml2ZXIgZm9yIGxpbnV4LTIuNiIpOwog -TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX3c4Mzc5MmRfaW5p -dCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX3c4Mzc5MmRfZXhpdCk7Ci0KZGlmZiAtLWdpdCBhL2Ry -aXZlcnMvaHdtb24vdzgzNzkzLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCmluZGV4IDU5Mjlk -NDQuLjQ3Zjk3NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzNzkzLmMKKysrIGIvZHJp -dmVycy9od21vbi93ODM3OTMuYwpAQCAtMjE2OSwxOSArMjE2OSw4IEBAIEVORDoKIAlyZXR1cm4g -cmVzOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX3c4Mzc5M19pbml0KHZvaWQpCi17 -Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv -aWQgX19leGl0IHNlbnNvcnNfdzgzNzkzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm -dzgzNzkzX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3OTNfZHJpdmVyKTsKIAog -TU9EVUxFX0FVVEhPUigiWXVhbiBNdSwgU3ZlbiBBbmRlcnMiKTsKIE1PRFVMRV9ERVNDUklQVElP -TigidzgzNzkzIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5p -dChzZW5zb3JzX3c4Mzc5M19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzkzX2V4aXQp -OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTUuYyBiL2RyaXZlcnMvaHdtb24vdzgz -Nzk1LmMKaW5kZXggYWE1OGIyNS4uZGViMTJjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi93 -ODM3OTUuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5NS5jCkBAIC0yMjQ0LDE5ICsyMjQ0LDgg -QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHc4Mzc5NV9kcml2ZXIgPSB7CiAJLmFkZHJlc3Nf -bGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX3c4Mzc5 -NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTVfZHJpdmVyKTsK -LX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfdzgzNzk1X2V4aXQodm9pZCkKLXsKLQlp -MmNfZGVsX2RyaXZlcigmdzgzNzk1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3 -OTVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiV2VpIFNvbmcsIEplYW4gRGVsdmFyZSA8a2hh -bGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJXODM3OTVHL0FERyBoYXJk -d2FyZSBtb25pdG9yaW5nIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1 -bGVfaW5pdChzZW5zb3JzX3c4Mzc5NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzk1 -X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODNsNzg1dHMuYyBiL2RyaXZlcnMv -aHdtb24vdzgzbDc4NXRzLmMKaW5kZXggZWRmYzFlYy4uYmMwNzE0NCAxMDA2NDQKLS0tIGEvZHJp -dmVycy9od21vbi93ODNsNzg1dHMuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jCkBA -IC0zMDIsMTkgKzMwMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgdzgzbDc4NXRzX2RhdGEgKnc4M2w3ODV0 -c191cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAot -c3RhdGljIGludCBfX2luaXQgc2Vuc29yc193ODNsNzg1dHNfaW5pdCh2b2lkKQotewotCXJldHVy -biBpMmNfYWRkX2RyaXZlcigmdzgzbDc4NXRzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9f -ZXhpdCBzZW5zb3JzX3c4M2w3ODV0c19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4 -M2w3ODV0c19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodzgzbDc4NXRzX2RyaXZlcik7 -CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwog -TU9EVUxFX0RFU0NSSVBUSU9OKCJXODNMNzg1VFMtUyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF -KCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODNsNzg1dHNfaW5pdCk7Ci1tb2R1bGVf -ZXhpdChzZW5zb3JzX3c4M2w3ODV0c19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v -dzgzbDc4Nm5nLmMgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODZuZy5jCmluZGV4IDZlYWM1ZDkuLmE2 -MzEwYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzbDc4Nm5nLmMKKysrIGIvZHJpdmVy -cy9od21vbi93ODNsNzg2bmcuYwpAQCAtODA2LDIxICs4MDYsOCBAQCBzdGF0aWMgc3RydWN0IHc4 -M2w3ODZuZ19kYXRhICp3ODNsNzg2bmdfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYp -CiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0Ci1zZW5zb3JzX3c4M2w3ODZu -Z19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODNsNzg2bmdfZHJpdmVy -KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0Ci1zZW5zb3JzX3c4M2w3ODZuZ19leGl0KHZvaWQp -Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4M2w3ODZuZ19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k -cml2ZXIodzgzbDc4Nm5nX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIktldmluIExvIik7CiBN -T0RVTEVfREVTQ1JJUFRJT04oInc4M2w3ODZuZyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJH -UEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODNsNzg2bmdfaW5pdCk7Ci1tb2R1bGVfZXhp -dChzZW5zb3JzX3c4M2w3ODZuZ19leGl0KTsKLS0gCjEuNy41LjQKCgoKCl9fX19fX19fX19fX19f -X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0 -CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21h -aWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw= +This patch converts the drivers in drivers/hwmon/* to use the +module_i2c_driver() macro which makes the code smaller and a bit simpler. + +Signed-off-by: Axel Lin <axel.lin@gmail.com> +Cc: Corentin Labbe <corentin.labbe@geomatys.fr> +Cc: Dirk Eibach <eibach@gdsys.de> +Cc: "Mark M. Hoffman" <mhoffman@lightlink.com> +Cc: Steve Glendinning <steve.glendinning@smsc.com> +Cc: Riku Voipio <riku.voipio@iki.fi> +Cc: Guillaume Ligneul <guillaume.ligneul@gmail.com> +Cc: David George <david.george@ska.ac.za> +Cc: "Hans J. Koch" <hjk@hansjkoch.de> +Cc: Marc Hulsman <m.hulsman@tudelft.nl> +Cc: Rudolf Marek <r.marek@assembler.cz> +--- + drivers/hwmon/ad7414.c | 12 +----------- + drivers/hwmon/ad7418.c | 13 +------------ + drivers/hwmon/adm1021.c | 13 +------------ + drivers/hwmon/adm1025.c | 13 +------------ + drivers/hwmon/adm1026.c | 13 +------------ + drivers/hwmon/adm1029.c | 18 +----------------- + drivers/hwmon/adm1031.c | 13 +------------ + drivers/hwmon/adm9240.c | 14 +------------- + drivers/hwmon/ads1015.c | 13 +------------ + drivers/hwmon/adt7411.c | 12 +----------- + drivers/hwmon/adt7462.c | 13 +------------ + drivers/hwmon/adt7470.c | 13 +------------ + drivers/hwmon/adt7475.c | 13 +------------ + drivers/hwmon/amc6821.c | 15 +-------------- + drivers/hwmon/asb100.c | 13 +------------ + drivers/hwmon/atxp1.c | 13 +------------ + drivers/hwmon/ds1621.c | 14 +------------- + drivers/hwmon/ds620.c | 13 +------------ + drivers/hwmon/emc1403.c | 13 +------------ + drivers/hwmon/emc2103.c | 13 +------------ + drivers/hwmon/emc6w201.c | 12 +----------- + drivers/hwmon/f75375s.c | 13 +------------ + drivers/hwmon/fschmd.c | 13 +------------ + drivers/hwmon/g760a.c | 15 +-------------- + drivers/hwmon/gl518sm.c | 13 +------------ + drivers/hwmon/gl520sm.c | 15 +-------------- + drivers/hwmon/jc42.c | 13 +------------ + drivers/hwmon/lineage-pem.c | 13 +------------ + drivers/hwmon/lm63.c | 13 +------------ + drivers/hwmon/lm73.c | 15 +-------------- + drivers/hwmon/lm75.c | 17 +---------------- + drivers/hwmon/lm77.c | 13 +------------ + drivers/hwmon/lm80.c | 13 +------------ + drivers/hwmon/lm83.c | 13 +------------ + drivers/hwmon/lm85.c | 14 +------------- + drivers/hwmon/lm87.c | 13 +------------ + drivers/hwmon/lm90.c | 13 +------------ + drivers/hwmon/lm92.c | 13 +------------ + drivers/hwmon/lm93.c | 13 +------------ + drivers/hwmon/lm95241.c | 13 +------------ + drivers/hwmon/lm95245.c | 13 +------------ + drivers/hwmon/ltc4151.c | 13 +------------ + drivers/hwmon/ltc4215.c | 13 +------------ + drivers/hwmon/ltc4245.c | 13 +------------ + drivers/hwmon/ltc4261.c | 13 +------------ + drivers/hwmon/max16065.c | 13 +------------ + drivers/hwmon/max1619.c | 13 +------------ + drivers/hwmon/max1668.c | 13 +------------ + drivers/hwmon/max6639.c | 13 +------------ + drivers/hwmon/max6642.c | 13 +------------ + drivers/hwmon/max6650.c | 13 +------------ + drivers/hwmon/pmbus/adm1275.c | 12 +----------- + drivers/hwmon/pmbus/lm25066.c | 12 +----------- + drivers/hwmon/pmbus/ltc2978.c | 12 +----------- + drivers/hwmon/pmbus/max16064.c | 12 +----------- + drivers/hwmon/pmbus/max34440.c | 12 +----------- + drivers/hwmon/pmbus/max8688.c | 12 +----------- + drivers/hwmon/pmbus/pmbus.c | 12 +----------- + drivers/hwmon/pmbus/ucd9000.c | 12 +----------- + drivers/hwmon/pmbus/ucd9200.c | 12 +----------- + drivers/hwmon/pmbus/zl6100.c | 12 +----------- + drivers/hwmon/sht21.c | 23 +---------------------- + drivers/hwmon/smm665.c | 13 +------------ + drivers/hwmon/smsc47m192.c | 13 +------------ + drivers/hwmon/thmc50.c | 13 +------------ + drivers/hwmon/tmp102.c | 12 +----------- + drivers/hwmon/tmp401.c | 13 +------------ + drivers/hwmon/tmp421.c | 13 +------------ + drivers/hwmon/w83791d.c | 13 +------------ + drivers/hwmon/w83792d.c | 16 +--------------- + drivers/hwmon/w83793.c | 13 +------------ + drivers/hwmon/w83795.c | 13 +------------ + drivers/hwmon/w83l785ts.c | 13 +------------ + drivers/hwmon/w83l786ng.c | 15 +-------------- + 74 files changed, 74 insertions(+), 909 deletions(-) + +diff --git a/drivers/hwmon/ad7414.c b/drivers/hwmon/ad7414.c +index edbdb6d..3646500 100644 +--- a/drivers/hwmon/ad7414.c ++++ b/drivers/hwmon/ad7414.c +@@ -256,17 +256,7 @@ static struct i2c_driver ad7414_driver = { + .id_table = ad7414_id, + }; + +-static int __init ad7414_init(void) +-{ +- return i2c_add_driver(&ad7414_driver); +-} +-module_init(ad7414_init); +- +-static void __exit ad7414_exit(void) +-{ +- i2c_del_driver(&ad7414_driver); +-} +-module_exit(ad7414_exit); ++module_i2c_driver(ad7414_driver); + + MODULE_AUTHOR("Stefan Roese <sr at denx.de>, " + "Frank Edelhaeuser <frank.edelhaeuser at spansion.com>"); +diff --git a/drivers/hwmon/ad7418.c b/drivers/hwmon/ad7418.c +index 42461d1..a50a6be 100644 +--- a/drivers/hwmon/ad7418.c ++++ b/drivers/hwmon/ad7418.c +@@ -295,20 +295,9 @@ static int ad7418_remove(struct i2c_client *client) + return 0; + } + +-static int __init ad7418_init(void) +-{ +- return i2c_add_driver(&ad7418_driver); +-} +- +-static void __exit ad7418_exit(void) +-{ +- i2c_del_driver(&ad7418_driver); +-} ++module_i2c_driver(ad7418_driver); + + MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); + MODULE_DESCRIPTION("AD7416/17/18 driver"); + MODULE_LICENSE("GPL"); + MODULE_VERSION(DRV_VERSION); +- +-module_init(ad7418_init); +-module_exit(ad7418_exit); +diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c +index e6fc006..ec84331 100644 +--- a/drivers/hwmon/adm1021.c ++++ b/drivers/hwmon/adm1021.c +@@ -471,15 +471,7 @@ static struct adm1021_data *adm1021_update_device(struct device *dev) + return data; + } + +-static int __init sensors_adm1021_init(void) +-{ +- return i2c_add_driver(&adm1021_driver); +-} +- +-static void __exit sensors_adm1021_exit(void) +-{ +- i2c_del_driver(&adm1021_driver); +-} ++module_i2c_driver(adm1021_driver); + + MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl> and " + "Philip Edelbrock <phil@netroedge.com>"); +@@ -488,6 +480,3 @@ MODULE_LICENSE("GPL"); + + module_param(read_only, bool, 0); + MODULE_PARM_DESC(read_only, "Don't set any values, read only mode"); +- +-module_init(sensors_adm1021_init) +-module_exit(sensors_adm1021_exit) +diff --git a/drivers/hwmon/adm1025.c b/drivers/hwmon/adm1025.c +index 14d8997..efbc9c9 100644 +--- a/drivers/hwmon/adm1025.c ++++ b/drivers/hwmon/adm1025.c +@@ -618,19 +618,8 @@ static struct adm1025_data *adm1025_update_device(struct device *dev) + return data; + } + +-static int __init sensors_adm1025_init(void) +-{ +- return i2c_add_driver(&adm1025_driver); +-} +- +-static void __exit sensors_adm1025_exit(void) +-{ +- i2c_del_driver(&adm1025_driver); +-} ++module_i2c_driver(adm1025_driver); + + MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>"); + MODULE_DESCRIPTION("ADM1025 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_adm1025_init); +-module_exit(sensors_adm1025_exit); +diff --git a/drivers/hwmon/adm1026.c b/drivers/hwmon/adm1026.c +index cd773ce..1f4f5de 100644 +--- a/drivers/hwmon/adm1026.c ++++ b/drivers/hwmon/adm1026.c +@@ -1881,20 +1881,9 @@ static int adm1026_remove(struct i2c_client *client) + return 0; + } + +-static int __init sm_adm1026_init(void) +-{ +- return i2c_add_driver(&adm1026_driver); +-} +- +-static void __exit sm_adm1026_exit(void) +-{ +- i2c_del_driver(&adm1026_driver); +-} ++module_i2c_driver(adm1026_driver); + + MODULE_LICENSE("GPL"); + MODULE_AUTHOR("Philip Pokorny <ppokorny@penguincomputing.com>, " + "Justin Thiessen <jthiessen@penguincomputing.com>"); + MODULE_DESCRIPTION("ADM1026 driver"); +- +-module_init(sm_adm1026_init); +-module_exit(sm_adm1026_exit); +diff --git a/drivers/hwmon/adm1029.c b/drivers/hwmon/adm1029.c +index d789c33..c6531a8 100644 +--- a/drivers/hwmon/adm1029.c ++++ b/drivers/hwmon/adm1029.c +@@ -450,24 +450,8 @@ static struct adm1029_data *adm1029_update_device(struct device *dev) + return data; + } + +-/* +- Common module stuff +-*/ +-static int __init sensors_adm1029_init(void) +-{ +- +- return i2c_add_driver(&adm1029_driver); +-} +- +-static void __exit sensors_adm1029_exit(void) +-{ +- +- i2c_del_driver(&adm1029_driver); +-} ++module_i2c_driver(adm1029_driver); + + MODULE_AUTHOR("Corentin LABBE <corentin.labbe@geomatys.fr>"); + MODULE_DESCRIPTION("adm1029 driver"); + MODULE_LICENSE("GPL v2"); +- +-module_init(sensors_adm1029_init); +-module_exit(sensors_adm1029_exit); +diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c +index 97e2cfb..71b5ec3 100644 +--- a/drivers/hwmon/adm1031.c ++++ b/drivers/hwmon/adm1031.c +@@ -1131,19 +1131,8 @@ static struct adm1031_data *adm1031_update_device(struct device *dev) + return data; + } + +-static int __init sensors_adm1031_init(void) +-{ +- return i2c_add_driver(&adm1031_driver); +-} +- +-static void __exit sensors_adm1031_exit(void) +-{ +- i2c_del_driver(&adm1031_driver); +-} ++module_i2c_driver(adm1031_driver); + + MODULE_AUTHOR("Alexandre d'Alton <alex@alexdalton.org>"); + MODULE_DESCRIPTION("ADM1031/ADM1030 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_adm1031_init); +-module_exit(sensors_adm1031_exit); +diff --git a/drivers/hwmon/adm9240.c b/drivers/hwmon/adm9240.c +index 2de4511..340b842 100644 +--- a/drivers/hwmon/adm9240.c ++++ b/drivers/hwmon/adm9240.c +@@ -821,21 +821,9 @@ static struct adm9240_data *adm9240_update_device(struct device *dev) + return data; + } + +-static int __init sensors_adm9240_init(void) +-{ +- return i2c_add_driver(&adm9240_driver); +-} +- +-static void __exit sensors_adm9240_exit(void) +-{ +- i2c_del_driver(&adm9240_driver); +-} ++module_i2c_driver(adm9240_driver); + + MODULE_AUTHOR("Michiel Rook <michiel@grendelproject.nl>, " + "Grant Coady <gcoady.lk@gmail.com> and others"); + MODULE_DESCRIPTION("ADM9240/DS1780/LM81 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_adm9240_init); +-module_exit(sensors_adm9240_exit); +- +diff --git a/drivers/hwmon/ads1015.c b/drivers/hwmon/ads1015.c +index eedca3c..60be358 100644 +--- a/drivers/hwmon/ads1015.c ++++ b/drivers/hwmon/ads1015.c +@@ -306,19 +306,8 @@ static struct i2c_driver ads1015_driver = { + .id_table = ads1015_id, + }; + +-static int __init sensors_ads1015_init(void) +-{ +- return i2c_add_driver(&ads1015_driver); +-} +- +-static void __exit sensors_ads1015_exit(void) +-{ +- i2c_del_driver(&ads1015_driver); +-} ++module_i2c_driver(ads1015_driver); + + MODULE_AUTHOR("Dirk Eibach <eibach@gdsys.de>"); + MODULE_DESCRIPTION("ADS1015 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_ads1015_init); +-module_exit(sensors_ads1015_exit); +diff --git a/drivers/hwmon/adt7411.c b/drivers/hwmon/adt7411.c +index ffe64f8..71bacc5 100644 +--- a/drivers/hwmon/adt7411.c ++++ b/drivers/hwmon/adt7411.c +@@ -348,17 +348,7 @@ static struct i2c_driver adt7411_driver = { + .class = I2C_CLASS_HWMON, + }; + +-static int __init sensors_adt7411_init(void) +-{ +- return i2c_add_driver(&adt7411_driver); +-} +-module_init(sensors_adt7411_init) +- +-static void __exit sensors_adt7411_exit(void) +-{ +- i2c_del_driver(&adt7411_driver); +-} +-module_exit(sensors_adt7411_exit) ++module_i2c_driver(adt7411_driver); + + MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de> and " + "Wolfram Sang <w.sang@pengutronix.de>"); +diff --git a/drivers/hwmon/adt7462.c b/drivers/hwmon/adt7462.c +index 3df331a..e4b1cc9 100644 +--- a/drivers/hwmon/adt7462.c ++++ b/drivers/hwmon/adt7462.c +@@ -1974,19 +1974,8 @@ static int adt7462_remove(struct i2c_client *client) + return 0; + } + +-static int __init adt7462_init(void) +-{ +- return i2c_add_driver(&adt7462_driver); +-} +- +-static void __exit adt7462_exit(void) +-{ +- i2c_del_driver(&adt7462_driver); +-} ++module_i2c_driver(adt7462_driver); + + MODULE_AUTHOR("Darrick J. Wong <djwong@us.ibm.com>"); + MODULE_DESCRIPTION("ADT7462 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(adt7462_init); +-module_exit(adt7462_exit); +diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c +index b23efd9..54ec890 100644 +--- a/drivers/hwmon/adt7470.c ++++ b/drivers/hwmon/adt7470.c +@@ -1317,19 +1317,8 @@ static int adt7470_remove(struct i2c_client *client) + return 0; + } + +-static int __init adt7470_init(void) +-{ +- return i2c_add_driver(&adt7470_driver); +-} +- +-static void __exit adt7470_exit(void) +-{ +- i2c_del_driver(&adt7470_driver); +-} ++module_i2c_driver(adt7470_driver); + + MODULE_AUTHOR("Darrick J. Wong <djwong@us.ibm.com>"); + MODULE_DESCRIPTION("ADT7470 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(adt7470_init); +-module_exit(adt7470_exit); +diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c +index 71e9ac4..522cb76 100644 +--- a/drivers/hwmon/adt7475.c ++++ b/drivers/hwmon/adt7475.c +@@ -1600,19 +1600,8 @@ static struct adt7475_data *adt7475_update_device(struct device *dev) + return data; + } + +-static int __init sensors_adt7475_init(void) +-{ +- return i2c_add_driver(&adt7475_driver); +-} +- +-static void __exit sensors_adt7475_exit(void) +-{ +- i2c_del_driver(&adt7475_driver); +-} ++module_i2c_driver(adt7475_driver); + + MODULE_AUTHOR("Advanced Micro Devices, Inc"); + MODULE_DESCRIPTION("adt7475 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_adt7475_init); +-module_exit(sensors_adt7475_exit); +diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c +index 4a4bfef..5298855 100644 +--- a/drivers/hwmon/amc6821.c ++++ b/drivers/hwmon/amc6821.c +@@ -1095,20 +1095,7 @@ static struct amc6821_data *amc6821_update_device(struct device *dev) + return data; + } + +- +-static int __init amc6821_init(void) +-{ +- return i2c_add_driver(&amc6821_driver); +-} +- +-static void __exit amc6821_exit(void) +-{ +- i2c_del_driver(&amc6821_driver); +-} +- +-module_init(amc6821_init); +-module_exit(amc6821_exit); +- ++module_i2c_driver(amc6821_driver); + + MODULE_LICENSE("GPL"); + MODULE_AUTHOR("T. Mertelj <tomaz.mertelj@guest.arnes.si>"); +diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c +index a5f1642..573fff5 100644 +--- a/drivers/hwmon/asb100.c ++++ b/drivers/hwmon/asb100.c +@@ -1002,19 +1002,8 @@ static struct asb100_data *asb100_update_device(struct device *dev) + return data; + } + +-static int __init asb100_init(void) +-{ +- return i2c_add_driver(&asb100_driver); +-} +- +-static void __exit asb100_exit(void) +-{ +- i2c_del_driver(&asb100_driver); +-} ++module_i2c_driver(asb100_driver); + + MODULE_AUTHOR("Mark M. Hoffman <mhoffman@lightlink.com>"); + MODULE_DESCRIPTION("ASB100 Bach driver"); + MODULE_LICENSE("GPL"); +- +-module_init(asb100_init); +-module_exit(asb100_exit); +diff --git a/drivers/hwmon/atxp1.c b/drivers/hwmon/atxp1.c +index d4a589b..5a671ca 100644 +--- a/drivers/hwmon/atxp1.c ++++ b/drivers/hwmon/atxp1.c +@@ -390,15 +390,4 @@ static int atxp1_remove(struct i2c_client *client) + return 0; + }; + +-static int __init atxp1_init(void) +-{ +- return i2c_add_driver(&atxp1_driver); +-}; +- +-static void __exit atxp1_exit(void) +-{ +- i2c_del_driver(&atxp1_driver); +-}; +- +-module_init(atxp1_init); +-module_exit(atxp1_exit); ++module_i2c_driver(atxp1_driver); +diff --git a/drivers/hwmon/ds1621.c b/drivers/hwmon/ds1621.c +index e23a8ab..5dc5489 100644 +--- a/drivers/hwmon/ds1621.c ++++ b/drivers/hwmon/ds1621.c +@@ -311,20 +311,8 @@ static struct i2c_driver ds1621_driver = { + .address_list = normal_i2c, + }; + +-static int __init ds1621_init(void) +-{ +- return i2c_add_driver(&ds1621_driver); +-} +- +-static void __exit ds1621_exit(void) +-{ +- i2c_del_driver(&ds1621_driver); +-} +- ++module_i2c_driver(ds1621_driver); + + MODULE_AUTHOR("Christian W. Zuckschwerdt <zany@triq.net>"); + MODULE_DESCRIPTION("DS1621 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(ds1621_init); +-module_exit(ds1621_exit); +diff --git a/drivers/hwmon/ds620.c b/drivers/hwmon/ds620.c +index 300c3d4..50663ef 100644 +--- a/drivers/hwmon/ds620.c ++++ b/drivers/hwmon/ds620.c +@@ -297,19 +297,8 @@ static struct i2c_driver ds620_driver = { + .id_table = ds620_id, + }; + +-static int __init ds620_init(void) +-{ +- return i2c_add_driver(&ds620_driver); +-} +- +-static void __exit ds620_exit(void) +-{ +- i2c_del_driver(&ds620_driver); +-} ++module_i2c_driver(ds620_driver); + + MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>"); + MODULE_DESCRIPTION("DS620 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(ds620_init); +-module_exit(ds620_exit); +diff --git a/drivers/hwmon/emc1403.c b/drivers/hwmon/emc1403.c +index 270ffab..99ac141 100644 +--- a/drivers/hwmon/emc1403.c ++++ b/drivers/hwmon/emc1403.c +@@ -366,18 +366,7 @@ static struct i2c_driver sensor_emc1403 = { + .address_list = emc1403_address_list, + }; + +-static int __init sensor_emc1403_init(void) +-{ +- return i2c_add_driver(&sensor_emc1403); +-} +- +-static void __exit sensor_emc1403_exit(void) +-{ +- i2c_del_driver(&sensor_emc1403); +-} +- +-module_init(sensor_emc1403_init); +-module_exit(sensor_emc1403_exit); ++module_i2c_driver(sensor_emc1403); + + MODULE_AUTHOR("Kalhan Trisal <kalhan.trisal@intel.com"); + MODULE_DESCRIPTION("emc1403 Thermal Driver"); +diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c +index 8650639..0f51382 100644 +--- a/drivers/hwmon/emc2103.c ++++ b/drivers/hwmon/emc2103.c +@@ -722,19 +722,8 @@ static struct i2c_driver emc2103_driver = { + .address_list = normal_i2c, + }; + +-static int __init sensors_emc2103_init(void) +-{ +- return i2c_add_driver(&emc2103_driver); +-} +- +-static void __exit sensors_emc2103_exit(void) +-{ +- i2c_del_driver(&emc2103_driver); +-} ++module_i2c_driver(emc2103_driver); + + MODULE_AUTHOR("Steve Glendinning <steve.glendinning@smsc.com>"); + MODULE_DESCRIPTION("SMSC EMC2103 hwmon driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_emc2103_init); +-module_exit(sensors_emc2103_exit); +diff --git a/drivers/hwmon/emc6w201.c b/drivers/hwmon/emc6w201.c +index 6ebb9b7..840f511 100644 +--- a/drivers/hwmon/emc6w201.c ++++ b/drivers/hwmon/emc6w201.c +@@ -552,17 +552,7 @@ static struct i2c_driver emc6w201_driver = { + .address_list = normal_i2c, + }; + +-static int __init sensors_emc6w201_init(void) +-{ +- return i2c_add_driver(&emc6w201_driver); +-} +-module_init(sensors_emc6w201_init); +- +-static void __exit sensors_emc6w201_exit(void) +-{ +- i2c_del_driver(&emc6w201_driver); +-} +-module_exit(sensors_emc6w201_exit); ++module_i2c_driver(emc6w201_driver); + + MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>"); + MODULE_DESCRIPTION("SMSC EMC6W201 hardware monitoring driver"); +diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c +index eedf574..398dbc8 100644 +--- a/drivers/hwmon/f75375s.c ++++ b/drivers/hwmon/f75375s.c +@@ -858,19 +858,8 @@ static int f75375_detect(struct i2c_client *client, + return 0; + } + +-static int __init sensors_f75375_init(void) +-{ +- return i2c_add_driver(&f75375_driver); +-} +- +-static void __exit sensors_f75375_exit(void) +-{ +- i2c_del_driver(&f75375_driver); +-} ++module_i2c_driver(f75375_driver); + + MODULE_AUTHOR("Riku Voipio"); + MODULE_LICENSE("GPL"); + MODULE_DESCRIPTION("F75373/F75375/F75387 hardware monitoring driver"); +- +-module_init(sensors_f75375_init); +-module_exit(sensors_f75375_exit); +diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c +index 06cbf77..35ddf6d 100644 +--- a/drivers/hwmon/fschmd.c ++++ b/drivers/hwmon/fschmd.c +@@ -1341,20 +1341,9 @@ static struct fschmd_data *fschmd_update_device(struct device *dev) + return data; + } + +-static int __init fschmd_init(void) +-{ +- return i2c_add_driver(&fschmd_driver); +-} +- +-static void __exit fschmd_exit(void) +-{ +- i2c_del_driver(&fschmd_driver); +-} ++module_i2c_driver(fschmd_driver); + + MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>"); + MODULE_DESCRIPTION("FSC Poseidon, Hermes, Scylla, Heracles, Heimdall, Hades " + "and Syleus driver"); + MODULE_LICENSE("GPL"); +- +-module_init(fschmd_init); +-module_exit(fschmd_exit); +diff --git a/drivers/hwmon/g760a.c b/drivers/hwmon/g760a.c +index 81b6e35..052e304 100644 +--- a/drivers/hwmon/g760a.c ++++ b/drivers/hwmon/g760a.c +@@ -250,21 +250,8 @@ static int g760a_remove(struct i2c_client *client) + return 0; + } + +-/* module management */ +- +-static int __init g760a_init(void) +-{ +- return i2c_add_driver(&g760a_driver); +-} +- +-static void __exit g760a_exit(void) +-{ +- i2c_del_driver(&g760a_driver); +-} ++module_i2c_driver(g760a_driver); + + MODULE_AUTHOR("Herbert Valerio Riedel <hvr@gnu.org>"); + MODULE_DESCRIPTION("GMT G760A driver"); + MODULE_LICENSE("GPL"); +- +-module_init(g760a_init); +-module_exit(g760a_exit); +diff --git a/drivers/hwmon/gl518sm.c b/drivers/hwmon/gl518sm.c +index 8d0f71d..ae193f0 100644 +--- a/drivers/hwmon/gl518sm.c ++++ b/drivers/hwmon/gl518sm.c +@@ -710,21 +710,10 @@ static struct gl518_data *gl518_update_device(struct device *dev) + return data; + } + +-static int __init sensors_gl518sm_init(void) +-{ +- return i2c_add_driver(&gl518_driver); +-} +- +-static void __exit sensors_gl518sm_exit(void) +-{ +- i2c_del_driver(&gl518_driver); +-} ++module_i2c_driver(gl518_driver); + + MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>, " + "Kyosti Malkki <kmalkki@cc.hut.fi> and " + "Hong-Gunn Chew <hglinux@gunnet.org>"); + MODULE_DESCRIPTION("GL518SM driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_gl518sm_init); +-module_exit(sensors_gl518sm_exit); +diff --git a/drivers/hwmon/gl520sm.c b/drivers/hwmon/gl520sm.c +index 1909097..52dadb2 100644 +--- a/drivers/hwmon/gl520sm.c ++++ b/drivers/hwmon/gl520sm.c +@@ -979,23 +979,10 @@ static struct gl520_data *gl520_update_device(struct device *dev) + return data; + } + +- +-static int __init sensors_gl520sm_init(void) +-{ +- return i2c_add_driver(&gl520_driver); +-} +- +-static void __exit sensors_gl520sm_exit(void) +-{ +- i2c_del_driver(&gl520_driver); +-} +- ++module_i2c_driver(gl520_driver); + + MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>, " + "Kyösti Mälkki <kmalkki@cc.hut.fi>, " + "Maarten Deprez <maartendeprez@users.sourceforge.net>"); + MODULE_DESCRIPTION("GL520SM driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_gl520sm_init); +-module_exit(sensors_gl520sm_exit); +diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c +index 28c09ee..308346c 100644 +--- a/drivers/hwmon/jc42.c ++++ b/drivers/hwmon/jc42.c +@@ -588,19 +588,8 @@ abort: + return ret; + } + +-static int __init sensors_jc42_init(void) +-{ +- return i2c_add_driver(&jc42_driver); +-} +- +-static void __exit sensors_jc42_exit(void) +-{ +- i2c_del_driver(&jc42_driver); +-} ++module_i2c_driver(jc42_driver); + + MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>"); + MODULE_DESCRIPTION("JC42 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_jc42_init); +-module_exit(sensors_jc42_exit); +diff --git a/drivers/hwmon/lineage-pem.c b/drivers/hwmon/lineage-pem.c +index 58eded2..5b8c9ae 100644 +--- a/drivers/hwmon/lineage-pem.c ++++ b/drivers/hwmon/lineage-pem.c +@@ -568,19 +568,8 @@ static struct i2c_driver pem_driver = { + .id_table = pem_id, + }; + +-static int __init pem_init(void) +-{ +- return i2c_add_driver(&pem_driver); +-} +- +-static void __exit pem_exit(void) +-{ +- i2c_del_driver(&pem_driver); +-} ++module_i2c_driver(pem_driver); + + MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>"); + MODULE_DESCRIPTION("Lineage CPL PEM hardware monitoring driver"); + MODULE_LICENSE("GPL"); +- +-module_init(pem_init); +-module_exit(pem_exit); +diff --git a/drivers/hwmon/lm63.c b/drivers/hwmon/lm63.c +index 5e6457a..15c05cc 100644 +--- a/drivers/hwmon/lm63.c ++++ b/drivers/hwmon/lm63.c +@@ -1119,19 +1119,8 @@ static struct lm63_data *lm63_update_device(struct device *dev) + return data; + } + +-static int __init sensors_lm63_init(void) +-{ +- return i2c_add_driver(&lm63_driver); +-} +- +-static void __exit sensors_lm63_exit(void) +-{ +- i2c_del_driver(&lm63_driver); +-} ++module_i2c_driver(lm63_driver); + + MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>"); + MODULE_DESCRIPTION("LM63 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm63_init); +-module_exit(sensors_lm63_exit); +diff --git a/drivers/hwmon/lm73.c b/drivers/hwmon/lm73.c +index 9c8093c..8fa2632 100644 +--- a/drivers/hwmon/lm73.c ++++ b/drivers/hwmon/lm73.c +@@ -194,21 +194,8 @@ static struct i2c_driver lm73_driver = { + .address_list = normal_i2c, + }; + +-/* module glue */ +- +-static int __init sensors_lm73_init(void) +-{ +- return i2c_add_driver(&lm73_driver); +-} +- +-static void __exit sensors_lm73_exit(void) +-{ +- i2c_del_driver(&lm73_driver); +-} ++module_i2c_driver(lm73_driver); + + MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@gmail.com>"); + MODULE_DESCRIPTION("LM73 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm73_init); +-module_exit(sensors_lm73_exit); +diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c +index b3311b1..a83f206 100644 +--- a/drivers/hwmon/lm75.c ++++ b/drivers/hwmon/lm75.c +@@ -438,23 +438,8 @@ abort: + return ret; + } + +-/*-----------------------------------------------------------------------*/ +- +-/* module glue */ +- +-static int __init sensors_lm75_init(void) +-{ +- return i2c_add_driver(&lm75_driver); +-} +- +-static void __exit sensors_lm75_exit(void) +-{ +- i2c_del_driver(&lm75_driver); +-} ++module_i2c_driver(lm75_driver); + + MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl>"); + MODULE_DESCRIPTION("LM75 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm75_init); +-module_exit(sensors_lm75_exit); +diff --git a/drivers/hwmon/lm77.c b/drivers/hwmon/lm77.c +index 08f7ffe..d8c1f35 100644 +--- a/drivers/hwmon/lm77.c ++++ b/drivers/hwmon/lm77.c +@@ -443,19 +443,8 @@ static struct lm77_data *lm77_update_device(struct device *dev) + return data; + } + +-static int __init sensors_lm77_init(void) +-{ +- return i2c_add_driver(&lm77_driver); +-} +- +-static void __exit sensors_lm77_exit(void) +-{ +- i2c_del_driver(&lm77_driver); +-} ++module_i2c_driver(lm77_driver); + + MODULE_AUTHOR("Andras BALI <drewie@freemail.hu>"); + MODULE_DESCRIPTION("LM77 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm77_init); +-module_exit(sensors_lm77_exit); +diff --git a/drivers/hwmon/lm80.c b/drivers/hwmon/lm80.c +index dc6df4e..6a2a777 100644 +--- a/drivers/hwmon/lm80.c ++++ b/drivers/hwmon/lm80.c +@@ -697,20 +697,9 @@ done: + return ret; + } + +-static int __init sensors_lm80_init(void) +-{ +- return i2c_add_driver(&lm80_driver); +-} +- +-static void __exit sensors_lm80_exit(void) +-{ +- i2c_del_driver(&lm80_driver); +-} ++module_i2c_driver(lm80_driver); + + MODULE_AUTHOR("Frodo Looijaard <frodol@dds.nl> and " + "Philip Edelbrock <phil@netroedge.com>"); + MODULE_DESCRIPTION("LM80 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm80_init); +-module_exit(sensors_lm80_exit); +diff --git a/drivers/hwmon/lm83.c b/drivers/hwmon/lm83.c +index 1fed265..cd45b9d 100644 +--- a/drivers/hwmon/lm83.c ++++ b/drivers/hwmon/lm83.c +@@ -430,19 +430,8 @@ static struct lm83_data *lm83_update_device(struct device *dev) + return data; + } + +-static int __init sensors_lm83_init(void) +-{ +- return i2c_add_driver(&lm83_driver); +-} +- +-static void __exit sensors_lm83_exit(void) +-{ +- i2c_del_driver(&lm83_driver); +-} ++module_i2c_driver(lm83_driver); + + MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>"); + MODULE_DESCRIPTION("LM83 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm83_init); +-module_exit(sensors_lm83_exit); +diff --git a/drivers/hwmon/lm85.c b/drivers/hwmon/lm85.c +index 240b7f9..7e46ebb 100644 +--- a/drivers/hwmon/lm85.c ++++ b/drivers/hwmon/lm85.c +@@ -1695,22 +1695,10 @@ static struct lm85_data *lm85_update_device(struct device *dev) + return data; + } + +- +-static int __init sm_lm85_init(void) +-{ +- return i2c_add_driver(&lm85_driver); +-} +- +-static void __exit sm_lm85_exit(void) +-{ +- i2c_del_driver(&lm85_driver); +-} ++module_i2c_driver(lm85_driver); + + MODULE_LICENSE("GPL"); + MODULE_AUTHOR("Philip Pokorny <ppokorny@penguincomputing.com>, " + "Margit Schubert-While <margitsw@t-online.de>, " + "Justin Thiessen <jthiessen@penguincomputing.com>"); + MODULE_DESCRIPTION("LM85-B, LM85-C driver"); +- +-module_init(sm_lm85_init); +-module_exit(sm_lm85_exit); +diff --git a/drivers/hwmon/lm87.c b/drivers/hwmon/lm87.c +index ebf4efd..090f5ef 100644 +--- a/drivers/hwmon/lm87.c ++++ b/drivers/hwmon/lm87.c +@@ -1054,19 +1054,8 @@ static struct lm87_data *lm87_update_device(struct device *dev) + return data; + } + +-static int __init sensors_lm87_init(void) +-{ +- return i2c_add_driver(&lm87_driver); +-} +- +-static void __exit sensors_lm87_exit(void) +-{ +- i2c_del_driver(&lm87_driver); +-} ++module_i2c_driver(lm87_driver); + + MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org> and others"); + MODULE_DESCRIPTION("LM87 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm87_init); +-module_exit(sensors_lm87_exit); +diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c +index d2dd5f9..248f2b4 100644 +--- a/drivers/hwmon/lm90.c ++++ b/drivers/hwmon/lm90.c +@@ -1514,19 +1514,8 @@ static struct i2c_driver lm90_driver = { + .address_list = normal_i2c, + }; + +-static int __init sensors_lm90_init(void) +-{ +- return i2c_add_driver(&lm90_driver); +-} +- +-static void __exit sensors_lm90_exit(void) +-{ +- i2c_del_driver(&lm90_driver); +-} ++module_i2c_driver(lm90_driver); + + MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>"); + MODULE_DESCRIPTION("LM90/ADM1032 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm90_init); +-module_exit(sensors_lm90_exit); +diff --git a/drivers/hwmon/lm92.c b/drivers/hwmon/lm92.c +index 95cda41..0fe2f37 100644 +--- a/drivers/hwmon/lm92.c ++++ b/drivers/hwmon/lm92.c +@@ -432,19 +432,8 @@ static struct i2c_driver lm92_driver = { + .address_list = normal_i2c, + }; + +-static int __init sensors_lm92_init(void) +-{ +- return i2c_add_driver(&lm92_driver); +-} +- +-static void __exit sensors_lm92_exit(void) +-{ +- i2c_del_driver(&lm92_driver); +-} ++module_i2c_driver(lm92_driver); + + MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>"); + MODULE_DESCRIPTION("LM92/MAX6635 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm92_init); +-module_exit(sensors_lm92_exit); +diff --git a/drivers/hwmon/lm93.c b/drivers/hwmon/lm93.c +index d2fc4ac..22ae5f0 100644 +--- a/drivers/hwmon/lm93.c ++++ b/drivers/hwmon/lm93.c +@@ -2761,20 +2761,9 @@ static struct i2c_driver lm93_driver = { + .address_list = normal_i2c, + }; + +-static int __init lm93_init(void) +-{ +- return i2c_add_driver(&lm93_driver); +-} +- +-static void __exit lm93_exit(void) +-{ +- i2c_del_driver(&lm93_driver); +-} ++module_i2c_driver(lm93_driver); + + MODULE_AUTHOR("Mark M. Hoffman <mhoffman@lightlink.com>, " + "Hans J. Koch <hjk@hansjkoch.de>"); + MODULE_DESCRIPTION("LM93 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(lm93_init); +-module_exit(lm93_exit); +diff --git a/drivers/hwmon/lm95241.c b/drivers/hwmon/lm95241.c +index 70bca67..bd8cdb7 100644 +--- a/drivers/hwmon/lm95241.c ++++ b/drivers/hwmon/lm95241.c +@@ -455,19 +455,8 @@ static struct i2c_driver lm95241_driver = { + .address_list = normal_i2c, + }; + +-static int __init sensors_lm95241_init(void) +-{ +- return i2c_add_driver(&lm95241_driver); +-} +- +-static void __exit sensors_lm95241_exit(void) +-{ +- i2c_del_driver(&lm95241_driver); +-} ++module_i2c_driver(lm95241_driver); + + MODULE_AUTHOR("Davide Rizzo <elpa.rizzo@gmail.com>"); + MODULE_DESCRIPTION("LM95241 sensor driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm95241_init); +-module_exit(sensors_lm95241_exit); +diff --git a/drivers/hwmon/lm95245.c b/drivers/hwmon/lm95245.c +index 5e5fc1b..9a46c10 100644 +--- a/drivers/hwmon/lm95245.c ++++ b/drivers/hwmon/lm95245.c +@@ -525,19 +525,8 @@ static struct i2c_driver lm95245_driver = { + .address_list = normal_i2c, + }; + +-static int __init sensors_lm95245_init(void) +-{ +- return i2c_add_driver(&lm95245_driver); +-} +- +-static void __exit sensors_lm95245_exit(void) +-{ +- i2c_del_driver(&lm95245_driver); +-} ++module_i2c_driver(lm95245_driver); + + MODULE_AUTHOR("Alexander Stein <alexander.stein@systec-electronic.com>"); + MODULE_DESCRIPTION("LM95245 sensor driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_lm95245_init); +-module_exit(sensors_lm95245_exit); +diff --git a/drivers/hwmon/ltc4151.c b/drivers/hwmon/ltc4151.c +index 4ac06b7..f646b45 100644 +--- a/drivers/hwmon/ltc4151.c ++++ b/drivers/hwmon/ltc4151.c +@@ -238,19 +238,8 @@ static struct i2c_driver ltc4151_driver = { + .id_table = ltc4151_id, + }; + +-static int __init ltc4151_init(void) +-{ +- return i2c_add_driver(<c4151_driver); +-} +- +-static void __exit ltc4151_exit(void) +-{ +- i2c_del_driver(<c4151_driver); +-} ++module_i2c_driver(ltc4151_driver); + + MODULE_AUTHOR("Per Dalen <per.dalen@appeartv.com>"); + MODULE_DESCRIPTION("LTC4151 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(ltc4151_init); +-module_exit(ltc4151_exit); +diff --git a/drivers/hwmon/ltc4215.c b/drivers/hwmon/ltc4215.c +index c7e6d8e..0789b63 100644 +--- a/drivers/hwmon/ltc4215.c ++++ b/drivers/hwmon/ltc4215.c +@@ -309,19 +309,8 @@ static struct i2c_driver ltc4215_driver = { + .id_table = ltc4215_id, + }; + +-static int __init ltc4215_init(void) +-{ +- return i2c_add_driver(<c4215_driver); +-} +- +-static void __exit ltc4215_exit(void) +-{ +- i2c_del_driver(<c4215_driver); +-} ++module_i2c_driver(ltc4215_driver); + + MODULE_AUTHOR("Ira W. Snyder <iws@ovro.caltech.edu>"); + MODULE_DESCRIPTION("LTC4215 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(ltc4215_init); +-module_exit(ltc4215_exit); +diff --git a/drivers/hwmon/ltc4245.c b/drivers/hwmon/ltc4245.c +index 6593083..693a6bd 100644 +--- a/drivers/hwmon/ltc4245.c ++++ b/drivers/hwmon/ltc4245.c +@@ -578,19 +578,8 @@ static struct i2c_driver ltc4245_driver = { + .id_table = ltc4245_id, + }; + +-static int __init ltc4245_init(void) +-{ +- return i2c_add_driver(<c4245_driver); +-} +- +-static void __exit ltc4245_exit(void) +-{ +- i2c_del_driver(<c4245_driver); +-} ++module_i2c_driver(ltc4245_driver); + + MODULE_AUTHOR("Ira W. Snyder <iws@ovro.caltech.edu>"); + MODULE_DESCRIPTION("LTC4245 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(ltc4245_init); +-module_exit(ltc4245_exit); +diff --git a/drivers/hwmon/ltc4261.c b/drivers/hwmon/ltc4261.c +index ce52355..ab1bfbf 100644 +--- a/drivers/hwmon/ltc4261.c ++++ b/drivers/hwmon/ltc4261.c +@@ -297,19 +297,8 @@ static struct i2c_driver ltc4261_driver = { + .id_table = ltc4261_id, + }; + +-static int __init ltc4261_init(void) +-{ +- return i2c_add_driver(<c4261_driver); +-} +- +-static void __exit ltc4261_exit(void) +-{ +- i2c_del_driver(<c4261_driver); +-} ++module_i2c_driver(ltc4261_driver); + + MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>"); + MODULE_DESCRIPTION("LTC4261 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(ltc4261_init); +-module_exit(ltc4261_exit); +diff --git a/drivers/hwmon/max16065.c b/drivers/hwmon/max16065.c +index f8e323a..51edae9 100644 +--- a/drivers/hwmon/max16065.c ++++ b/drivers/hwmon/max16065.c +@@ -699,19 +699,8 @@ static struct i2c_driver max16065_driver = { + .id_table = max16065_id, + }; + +-static int __init max16065_init(void) +-{ +- return i2c_add_driver(&max16065_driver); +-} +- +-static void __exit max16065_exit(void) +-{ +- i2c_del_driver(&max16065_driver); +-} ++module_i2c_driver(max16065_driver); + + MODULE_AUTHOR("Guenter Roeck <guenter.roeck@ericsson.com>"); + MODULE_DESCRIPTION("MAX16065 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(max16065_init); +-module_exit(max16065_exit); +diff --git a/drivers/hwmon/max1619.c b/drivers/hwmon/max1619.c +index f19599f..ecac04a 100644 +--- a/drivers/hwmon/max1619.c ++++ b/drivers/hwmon/max1619.c +@@ -360,20 +360,9 @@ static struct max1619_data *max1619_update_device(struct device *dev) + return data; + } + +-static int __init sensors_max1619_init(void) +-{ +- return i2c_add_driver(&max1619_driver); +-} +- +-static void __exit sensors_max1619_exit(void) +-{ +- i2c_del_driver(&max1619_driver); +-} ++module_i2c_driver(max1619_driver); + + MODULE_AUTHOR("Alexey Fisher <fishor@mail.ru> and " + "Jean Delvare <khali@linux-fr.org>"); + MODULE_DESCRIPTION("MAX1619 sensor driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_max1619_init); +-module_exit(sensors_max1619_exit); +diff --git a/drivers/hwmon/max1668.c b/drivers/hwmon/max1668.c +index 88953f9..12249f7 100644 +--- a/drivers/hwmon/max1668.c ++++ b/drivers/hwmon/max1668.c +@@ -484,19 +484,8 @@ static struct i2c_driver max1668_driver = { + .address_list = max1668_addr_list, + }; + +-static int __init sensors_max1668_init(void) +-{ +- return i2c_add_driver(&max1668_driver); +-} +- +-static void __exit sensors_max1668_exit(void) +-{ +- i2c_del_driver(&max1668_driver); +-} ++module_i2c_driver(max1668_driver); + + MODULE_AUTHOR("David George <david.george@ska.ac.za>"); + MODULE_DESCRIPTION("MAX1668 remote temperature sensor driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_max1668_init) +-module_exit(sensors_max1668_exit) +diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c +index e10a092..d203eb1 100644 +--- a/drivers/hwmon/max6639.c ++++ b/drivers/hwmon/max6639.c +@@ -635,19 +635,8 @@ static struct i2c_driver max6639_driver = { + .address_list = normal_i2c, + }; + +-static int __init max6639_init(void) +-{ +- return i2c_add_driver(&max6639_driver); +-} +- +-static void __exit max6639_exit(void) +-{ +- i2c_del_driver(&max6639_driver); +-} ++module_i2c_driver(max6639_driver); + + MODULE_AUTHOR("Roland Stigge <stigge@antcom.de>"); + MODULE_DESCRIPTION("max6639 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(max6639_init); +-module_exit(max6639_exit); +diff --git a/drivers/hwmon/max6642.c b/drivers/hwmon/max6642.c +index 209e8a5..4298909 100644 +--- a/drivers/hwmon/max6642.c ++++ b/drivers/hwmon/max6642.c +@@ -352,19 +352,8 @@ static struct i2c_driver max6642_driver = { + .address_list = normal_i2c, + }; + +-static int __init max6642_init(void) +-{ +- return i2c_add_driver(&max6642_driver); +-} +- +-static void __exit max6642_exit(void) +-{ +- i2c_del_driver(&max6642_driver); +-} ++module_i2c_driver(max6642_driver); + + MODULE_AUTHOR("Per Dalen <per.dalen@appeartv.com>"); + MODULE_DESCRIPTION("MAX6642 sensor driver"); + MODULE_LICENSE("GPL"); +- +-module_init(max6642_init); +-module_exit(max6642_exit); +diff --git a/drivers/hwmon/max6650.c b/drivers/hwmon/max6650.c +index 159ce02..3296e6e 100644 +--- a/drivers/hwmon/max6650.c ++++ b/drivers/hwmon/max6650.c +@@ -726,19 +726,8 @@ static struct max6650_data *max6650_update_device(struct device *dev) + return data; + } + +-static int __init sensors_max6650_init(void) +-{ +- return i2c_add_driver(&max6650_driver); +-} +- +-static void __exit sensors_max6650_exit(void) +-{ +- i2c_del_driver(&max6650_driver); +-} ++module_i2c_driver(max6650_driver); + + MODULE_AUTHOR("Hans J. Koch"); + MODULE_DESCRIPTION("MAX6650 sensor driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_max6650_init); +-module_exit(sensors_max6650_exit); +diff --git a/drivers/hwmon/pmbus/adm1275.c b/drivers/hwmon/pmbus/adm1275.c +index 81c7c2e..fe52c3c 100644 +--- a/drivers/hwmon/pmbus/adm1275.c ++++ b/drivers/hwmon/pmbus/adm1275.c +@@ -326,18 +326,8 @@ static struct i2c_driver adm1275_driver = { + .id_table = adm1275_id, + }; + +-static int __init adm1275_init(void) +-{ +- return i2c_add_driver(&adm1275_driver); +-} +- +-static void __exit adm1275_exit(void) +-{ +- i2c_del_driver(&adm1275_driver); +-} ++module_i2c_driver(adm1275_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("PMBus driver for Analog Devices ADM1275 and compatibles"); + MODULE_LICENSE("GPL"); +-module_init(adm1275_init); +-module_exit(adm1275_exit); +diff --git a/drivers/hwmon/pmbus/lm25066.c b/drivers/hwmon/pmbus/lm25066.c +index 84a37f0..86ac15a 100644 +--- a/drivers/hwmon/pmbus/lm25066.c ++++ b/drivers/hwmon/pmbus/lm25066.c +@@ -334,18 +334,8 @@ static struct i2c_driver lm25066_driver = { + .id_table = lm25066_id, + }; + +-static int __init lm25066_init(void) +-{ +- return i2c_add_driver(&lm25066_driver); +-} +- +-static void __exit lm25066_exit(void) +-{ +- i2c_del_driver(&lm25066_driver); +-} ++module_i2c_driver(lm25066_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("PMBus driver for LM25066/LM5064/LM5066"); + MODULE_LICENSE("GPL"); +-module_init(lm25066_init); +-module_exit(lm25066_exit); +diff --git a/drivers/hwmon/pmbus/ltc2978.c b/drivers/hwmon/pmbus/ltc2978.c +index 820fff4..c9e4dd2 100644 +--- a/drivers/hwmon/pmbus/ltc2978.c ++++ b/drivers/hwmon/pmbus/ltc2978.c +@@ -391,18 +391,8 @@ static struct i2c_driver ltc2978_driver = { + .id_table = ltc2978_id, + }; + +-static int __init ltc2978_init(void) +-{ +- return i2c_add_driver(<c2978_driver); +-} +- +-static void __exit ltc2978_exit(void) +-{ +- i2c_del_driver(<c2978_driver); +-} ++module_i2c_driver(ltc2978_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("PMBus driver for LTC2978 and LTC3880"); + MODULE_LICENSE("GPL"); +-module_init(ltc2978_init); +-module_exit(ltc2978_exit); +diff --git a/drivers/hwmon/pmbus/max16064.c b/drivers/hwmon/pmbus/max16064.c +index 1d77cf4..5cfe20f 100644 +--- a/drivers/hwmon/pmbus/max16064.c ++++ b/drivers/hwmon/pmbus/max16064.c +@@ -126,18 +126,8 @@ static struct i2c_driver max16064_driver = { + .id_table = max16064_id, + }; + +-static int __init max16064_init(void) +-{ +- return i2c_add_driver(&max16064_driver); +-} +- +-static void __exit max16064_exit(void) +-{ +- i2c_del_driver(&max16064_driver); +-} ++module_i2c_driver(max16064_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("PMBus driver for Maxim MAX16064"); + MODULE_LICENSE("GPL"); +-module_init(max16064_init); +-module_exit(max16064_exit); +diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c +index beaf5a8..89ae303 100644 +--- a/drivers/hwmon/pmbus/max34440.c ++++ b/drivers/hwmon/pmbus/max34440.c +@@ -248,18 +248,8 @@ static struct i2c_driver max34440_driver = { + .id_table = max34440_id, + }; + +-static int __init max34440_init(void) +-{ +- return i2c_add_driver(&max34440_driver); +-} +- +-static void __exit max34440_exit(void) +-{ +- i2c_del_driver(&max34440_driver); +-} ++module_i2c_driver(max34440_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("PMBus driver for Maxim MAX34440/MAX34441"); + MODULE_LICENSE("GPL"); +-module_init(max34440_init); +-module_exit(max34440_exit); +diff --git a/drivers/hwmon/pmbus/max8688.c b/drivers/hwmon/pmbus/max8688.c +index e2b74bb..82c598d 100644 +--- a/drivers/hwmon/pmbus/max8688.c ++++ b/drivers/hwmon/pmbus/max8688.c +@@ -203,18 +203,8 @@ static struct i2c_driver max8688_driver = { + .id_table = max8688_id, + }; + +-static int __init max8688_init(void) +-{ +- return i2c_add_driver(&max8688_driver); +-} +- +-static void __exit max8688_exit(void) +-{ +- i2c_del_driver(&max8688_driver); +-} ++module_i2c_driver(max8688_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("PMBus driver for Maxim MAX8688"); + MODULE_LICENSE("GPL"); +-module_init(max8688_init); +-module_exit(max8688_exit); +diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c +index 18a385e..da5fe36 100644 +--- a/drivers/hwmon/pmbus/pmbus.c ++++ b/drivers/hwmon/pmbus/pmbus.c +@@ -224,18 +224,8 @@ static struct i2c_driver pmbus_driver = { + .id_table = pmbus_id, + }; + +-static int __init pmbus_init(void) +-{ +- return i2c_add_driver(&pmbus_driver); +-} +- +-static void __exit pmbus_exit(void) +-{ +- i2c_del_driver(&pmbus_driver); +-} ++module_i2c_driver(pmbus_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("Generic PMBus driver"); + MODULE_LICENSE("GPL"); +-module_init(pmbus_init); +-module_exit(pmbus_exit); +diff --git a/drivers/hwmon/pmbus/ucd9000.c b/drivers/hwmon/pmbus/ucd9000.c +index 4ff6cf2..759a563 100644 +--- a/drivers/hwmon/pmbus/ucd9000.c ++++ b/drivers/hwmon/pmbus/ucd9000.c +@@ -258,18 +258,8 @@ static struct i2c_driver ucd9000_driver = { + .id_table = ucd9000_id, + }; + +-static int __init ucd9000_init(void) +-{ +- return i2c_add_driver(&ucd9000_driver); +-} +- +-static void __exit ucd9000_exit(void) +-{ +- i2c_del_driver(&ucd9000_driver); +-} ++module_i2c_driver(ucd9000_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("PMBus driver for TI UCD90xxx"); + MODULE_LICENSE("GPL"); +-module_init(ucd9000_init); +-module_exit(ucd9000_exit); +diff --git a/drivers/hwmon/pmbus/ucd9200.c b/drivers/hwmon/pmbus/ucd9200.c +index 6e1c1a8..629d0c9 100644 +--- a/drivers/hwmon/pmbus/ucd9200.c ++++ b/drivers/hwmon/pmbus/ucd9200.c +@@ -190,18 +190,8 @@ static struct i2c_driver ucd9200_driver = { + .id_table = ucd9200_id, + }; + +-static int __init ucd9200_init(void) +-{ +- return i2c_add_driver(&ucd9200_driver); +-} +- +-static void __exit ucd9200_exit(void) +-{ +- i2c_del_driver(&ucd9200_driver); +-} ++module_i2c_driver(ucd9200_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("PMBus driver for TI UCD922x, UCD924x"); + MODULE_LICENSE("GPL"); +-module_init(ucd9200_init); +-module_exit(ucd9200_exit); +diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c +index 48c7b4a..0bb7bba 100644 +--- a/drivers/hwmon/pmbus/zl6100.c ++++ b/drivers/hwmon/pmbus/zl6100.c +@@ -268,18 +268,8 @@ static struct i2c_driver zl6100_driver = { + .id_table = zl6100_id, + }; + +-static int __init zl6100_init(void) +-{ +- return i2c_add_driver(&zl6100_driver); +-} +- +-static void __exit zl6100_exit(void) +-{ +- i2c_del_driver(&zl6100_driver); +-} ++module_i2c_driver(zl6100_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("PMBus driver for ZL6100 and compatibles"); + MODULE_LICENSE("GPL"); +-module_init(zl6100_init); +-module_exit(zl6100_exit); +diff --git a/drivers/hwmon/sht21.c b/drivers/hwmon/sht21.c +index 1539878..6c2dede 100644 +--- a/drivers/hwmon/sht21.c ++++ b/drivers/hwmon/sht21.c +@@ -261,28 +261,7 @@ static struct i2c_driver sht21_driver = { + .id_table = sht21_id, + }; + +-/** +- * sht21_init() - initialize driver +- * +- * Called when kernel is booted or module is inserted. +- * Returns 0 on success. +- */ +-static int __init sht21_init(void) +-{ +- return i2c_add_driver(&sht21_driver); +-} +-module_init(sht21_init); +- +-/** +- * sht21_init() - clean up driver +- * +- * Called when module is removed. +- */ +-static void __exit sht21_exit(void) +-{ +- i2c_del_driver(&sht21_driver); +-} +-module_exit(sht21_exit); ++module_i2c_driver(sht21_driver); + + MODULE_AUTHOR("Urs Fleisch <urs.fleisch@sensirion.com>"); + MODULE_DESCRIPTION("Sensirion SHT21 humidity and temperature sensor driver"); +diff --git a/drivers/hwmon/smm665.c b/drivers/hwmon/smm665.c +index 1b4301f..24382c7 100644 +--- a/drivers/hwmon/smm665.c ++++ b/drivers/hwmon/smm665.c +@@ -718,19 +718,8 @@ static struct i2c_driver smm665_driver = { + .id_table = smm665_id, + }; + +-static int __init smm665_init(void) +-{ +- return i2c_add_driver(&smm665_driver); +-} +- +-static void __exit smm665_exit(void) +-{ +- i2c_del_driver(&smm665_driver); +-} ++module_i2c_driver(smm665_driver); + + MODULE_AUTHOR("Guenter Roeck"); + MODULE_DESCRIPTION("SMM665 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(smm665_init); +-module_exit(smm665_exit); +diff --git a/drivers/hwmon/smsc47m192.c b/drivers/hwmon/smsc47m192.c +index 95761bd..307e6a6 100644 +--- a/drivers/hwmon/smsc47m192.c ++++ b/drivers/hwmon/smsc47m192.c +@@ -669,19 +669,8 @@ static struct smsc47m192_data *smsc47m192_update_device(struct device *dev) + return data; + } + +-static int __init smsc47m192_init(void) +-{ +- return i2c_add_driver(&smsc47m192_driver); +-} +- +-static void __exit smsc47m192_exit(void) +-{ +- i2c_del_driver(&smsc47m192_driver); +-} ++module_i2c_driver(smsc47m192_driver); + + MODULE_AUTHOR("Hartmut Rick <linux@rick.claranet.de>"); + MODULE_DESCRIPTION("SMSC47M192 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(smsc47m192_init); +-module_exit(smsc47m192_exit); +diff --git a/drivers/hwmon/thmc50.c b/drivers/hwmon/thmc50.c +index a195914..51ddb37 100644 +--- a/drivers/hwmon/thmc50.c ++++ b/drivers/hwmon/thmc50.c +@@ -482,18 +482,7 @@ static struct thmc50_data *thmc50_update_device(struct device *dev) + return data; + } + +-static int __init sm_thmc50_init(void) +-{ +- return i2c_add_driver(&thmc50_driver); +-} +- +-static void __exit sm_thmc50_exit(void) +-{ +- i2c_del_driver(&thmc50_driver); +-} ++module_i2c_driver(thmc50_driver); + + MODULE_AUTHOR("Krzysztof Helt <krzysztof.h1@wp.pl>"); + MODULE_DESCRIPTION("THMC50 driver"); +- +-module_init(sm_thmc50_init); +-module_exit(sm_thmc50_exit); +diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c +index c08eee2..0d466b9 100644 +--- a/drivers/hwmon/tmp102.c ++++ b/drivers/hwmon/tmp102.c +@@ -292,17 +292,7 @@ static struct i2c_driver tmp102_driver = { + .id_table = tmp102_id, + }; + +-static int __init tmp102_init(void) +-{ +- return i2c_add_driver(&tmp102_driver); +-} +-module_init(tmp102_init); +- +-static void __exit tmp102_exit(void) +-{ +- i2c_del_driver(&tmp102_driver); +-} +-module_exit(tmp102_exit); ++module_i2c_driver(tmp102_driver); + + MODULE_AUTHOR("Steven King <sfking@fdwdc.com>"); + MODULE_DESCRIPTION("Texas Instruments TMP102 temperature sensor driver"); +diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c +index 8b9a774..92b7f1b 100644 +--- a/drivers/hwmon/tmp401.c ++++ b/drivers/hwmon/tmp401.c +@@ -662,19 +662,8 @@ static struct i2c_driver tmp401_driver = { + .address_list = normal_i2c, + }; + +-static int __init tmp401_init(void) +-{ +- return i2c_add_driver(&tmp401_driver); +-} +- +-static void __exit tmp401_exit(void) +-{ +- i2c_del_driver(&tmp401_driver); +-} ++module_i2c_driver(tmp401_driver); + + MODULE_AUTHOR("Hans de Goede <hdegoede@redhat.com>"); + MODULE_DESCRIPTION("Texas Instruments TMP401 temperature sensor driver"); + MODULE_LICENSE("GPL"); +- +-module_init(tmp401_init); +-module_exit(tmp401_exit); +diff --git a/drivers/hwmon/tmp421.c b/drivers/hwmon/tmp421.c +index c48381f..8fac87a 100644 +--- a/drivers/hwmon/tmp421.c ++++ b/drivers/hwmon/tmp421.c +@@ -324,20 +324,9 @@ static struct i2c_driver tmp421_driver = { + .address_list = normal_i2c, + }; + +-static int __init tmp421_init(void) +-{ +- return i2c_add_driver(&tmp421_driver); +-} +- +-static void __exit tmp421_exit(void) +-{ +- i2c_del_driver(&tmp421_driver); +-} ++module_i2c_driver(tmp421_driver); + + MODULE_AUTHOR("Andre Prendel <andre.prendel@gmx.de>"); + MODULE_DESCRIPTION("Texas Instruments TMP421/422/423 temperature sensor" + " driver"); + MODULE_LICENSE("GPL"); +- +-module_init(tmp421_init); +-module_exit(tmp421_exit); +diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c +index 679146d..b92f01f 100644 +--- a/drivers/hwmon/w83791d.c ++++ b/drivers/hwmon/w83791d.c +@@ -1668,19 +1668,8 @@ static void w83791d_print_debug(struct w83791d_data *data, struct device *dev) + } + #endif + +-static int __init sensors_w83791d_init(void) +-{ +- return i2c_add_driver(&w83791d_driver); +-} +- +-static void __exit sensors_w83791d_exit(void) +-{ +- i2c_del_driver(&w83791d_driver); +-} ++module_i2c_driver(w83791d_driver); + + MODULE_AUTHOR("Charles Spirakis <bezaur@gmail.com>"); + MODULE_DESCRIPTION("W83791D driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_w83791d_init); +-module_exit(sensors_w83791d_exit); +diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c +index e356618..1175dcf 100644 +--- a/drivers/hwmon/w83792d.c ++++ b/drivers/hwmon/w83792d.c +@@ -1708,22 +1708,8 @@ static void w83792d_print_debug(struct w83792d_data *data, struct device *dev) + } + #endif + +-static int __init +-sensors_w83792d_init(void) +-{ +- return i2c_add_driver(&w83792d_driver); +-} +- +-static void __exit +-sensors_w83792d_exit(void) +-{ +- i2c_del_driver(&w83792d_driver); +-} ++module_i2c_driver(w83792d_driver); + + MODULE_AUTHOR("Chunhao Huang @ Winbond <DZShen@Winbond.com.tw>"); + MODULE_DESCRIPTION("W83792AD/D driver for linux-2.6"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_w83792d_init); +-module_exit(sensors_w83792d_exit); +- +diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c +index 5929d44..47f975c 100644 +--- a/drivers/hwmon/w83793.c ++++ b/drivers/hwmon/w83793.c +@@ -2169,19 +2169,8 @@ END: + return res; + } + +-static int __init sensors_w83793_init(void) +-{ +- return i2c_add_driver(&w83793_driver); +-} +- +-static void __exit sensors_w83793_exit(void) +-{ +- i2c_del_driver(&w83793_driver); +-} ++module_i2c_driver(w83793_driver); + + MODULE_AUTHOR("Yuan Mu, Sven Anders"); + MODULE_DESCRIPTION("w83793 driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_w83793_init); +-module_exit(sensors_w83793_exit); +diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c +index aa58b25..deb12c9 100644 +--- a/drivers/hwmon/w83795.c ++++ b/drivers/hwmon/w83795.c +@@ -2244,19 +2244,8 @@ static struct i2c_driver w83795_driver = { + .address_list = normal_i2c, + }; + +-static int __init sensors_w83795_init(void) +-{ +- return i2c_add_driver(&w83795_driver); +-} +- +-static void __exit sensors_w83795_exit(void) +-{ +- i2c_del_driver(&w83795_driver); +-} ++module_i2c_driver(w83795_driver); + + MODULE_AUTHOR("Wei Song, Jean Delvare <khali@linux-fr.org>"); + MODULE_DESCRIPTION("W83795G/ADG hardware monitoring driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_w83795_init); +-module_exit(sensors_w83795_exit); +diff --git a/drivers/hwmon/w83l785ts.c b/drivers/hwmon/w83l785ts.c +index edfc1ec..bc07144 100644 +--- a/drivers/hwmon/w83l785ts.c ++++ b/drivers/hwmon/w83l785ts.c +@@ -302,19 +302,8 @@ static struct w83l785ts_data *w83l785ts_update_device(struct device *dev) + return data; + } + +-static int __init sensors_w83l785ts_init(void) +-{ +- return i2c_add_driver(&w83l785ts_driver); +-} +- +-static void __exit sensors_w83l785ts_exit(void) +-{ +- i2c_del_driver(&w83l785ts_driver); +-} ++module_i2c_driver(w83l785ts_driver); + + MODULE_AUTHOR("Jean Delvare <khali@linux-fr.org>"); + MODULE_DESCRIPTION("W83L785TS-S driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_w83l785ts_init); +-module_exit(sensors_w83l785ts_exit); +diff --git a/drivers/hwmon/w83l786ng.c b/drivers/hwmon/w83l786ng.c +index 6eac5d9..a6310b8 100644 +--- a/drivers/hwmon/w83l786ng.c ++++ b/drivers/hwmon/w83l786ng.c +@@ -806,21 +806,8 @@ static struct w83l786ng_data *w83l786ng_update_device(struct device *dev) + return data; + } + +-static int __init +-sensors_w83l786ng_init(void) +-{ +- return i2c_add_driver(&w83l786ng_driver); +-} +- +-static void __exit +-sensors_w83l786ng_exit(void) +-{ +- i2c_del_driver(&w83l786ng_driver); +-} ++module_i2c_driver(w83l786ng_driver); + + MODULE_AUTHOR("Kevin Lo"); + MODULE_DESCRIPTION("w83l786ng driver"); + MODULE_LICENSE("GPL"); +- +-module_init(sensors_w83l786ng_init); +-module_exit(sensors_w83l786ng_exit); +-- +1.7.5.4 diff --git a/a/content_digest b/N1/content_digest index 15b0027..2257fec 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,6 +1,6 @@ "From\0Axel Lin <axel.lin@gmail.com>\0" - "Subject\0[lm-sensors] [PATCH 1/2] hwmon: convert drivers/hwmon/* to use module_i2c_driver()\0" - "Date\0Fri, 20 Jan 2012 07:38:18 +0000\0" + "Subject\0[PATCH 1/2] hwmon: convert drivers/hwmon/* to use module_i2c_driver()\0" + "Date\0Fri, 20 Jan 2012 15:38:18 +0800\0" "To\0linux-kernel@vger.kernel.org\0" "Cc\0Jean Delvare <khali@linux-fr.org>" Guenter Roeck <guenter.roeck@ericsson.com> @@ -17,949 +17,1974 @@ " lm-sensors@lm-sensors.org\0" "\00:1\0" "b\0" - "VGhpcyBwYXRjaCBjb252ZXJ0cyB0aGUgZHJpdmVycyBpbiBkcml2ZXJzL2h3bW9uLyogdG8gdXNl\n" - "IHRoZQptb2R1bGVfaTJjX2RyaXZlcigpIG1hY3JvIHdoaWNoIG1ha2VzIHRoZSBjb2RlIHNtYWxs\n" - "ZXIgYW5kIGEgYml0IHNpbXBsZXIuCgpTaWduZWQtb2ZmLWJ5OiBBeGVsIExpbiA8YXhlbC5saW5A\n" - "Z21haWwuY29tPgpDYzogQ29yZW50aW4gTGFiYmUgPGNvcmVudGluLmxhYmJlQGdlb21hdHlzLmZy\n" - "PgpDYzogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KQ2M6ICJNYXJrIE0uIEhvZmZtYW4i\n" - "IDxtaG9mZm1hbkBsaWdodGxpbmsuY29tPgpDYzogU3RldmUgR2xlbmRpbm5pbmcgPHN0ZXZlLmds\n" - "ZW5kaW5uaW5nQHNtc2MuY29tPgpDYzogUmlrdSBWb2lwaW8gPHJpa3Uudm9pcGlvQGlraS5maT4K\n" - "Q2M6IEd1aWxsYXVtZSBMaWduZXVsIDxndWlsbGF1bWUubGlnbmV1bEBnbWFpbC5jb20+CkNjOiBE\n" - "YXZpZCBHZW9yZ2UgPGRhdmlkLmdlb3JnZUBza2EuYWMuemE+CkNjOiAiSGFucyBKLiBLb2NoIiA8\n" - "aGprQGhhbnNqa29jaC5kZT4KQ2M6IE1hcmMgSHVsc21hbiA8bS5odWxzbWFuQHR1ZGVsZnQubmw+\n" - "CkNjOiBSdWRvbGYgTWFyZWsgPHIubWFyZWtAYXNzZW1ibGVyLmN6PgotLS0KIGRyaXZlcnMvaHdt\n" - "b24vYWQ3NDE0LmMgICAgICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2Fk\n" - "NzQxOC5jICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAy\n" - "MS5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZG0xMDI1LmMg\n" - "ICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMjYuYyAgICAg\n" - "ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtMTAyOS5jICAgICAgICB8\n" - "ICAgMTggKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyAgICAgICAg\n" - "fCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRtOTI0MC5jICAgICAgICB8ICAg\n" - "MTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWRzMTAxNS5jICAgICAgICB8ICAgMTMg\n" - "Ky0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDExLmMgICAgICAgIHwgICAxMiArLS0t\n" - "LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vYWR0NzQ2Mi5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0t\n" - "LS0tLQogZHJpdmVycy9od21vbi9hZHQ3NDcwLmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0t\n" - "CiBkcml2ZXJzL2h3bW9uL2FkdDc0NzUuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRy\n" - "aXZlcnMvaHdtb24vYW1jNjgyMS5jICAgICAgICB8ICAgMTUgKy0tLS0tLS0tLS0tLS0tCiBkcml2\n" - "ZXJzL2h3bW9uL2FzYjEwMC5jICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMv\n" - "aHdtb24vYXR4cDEuYyAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21v\n" - "bi9kczE2MjEuYyAgICAgICAgIHwgICAxNCArLS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9k\n" - "czYyMC5jICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2VtYzE0\n" - "MDMuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZW1jMjEwMy5j\n" - "ICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9lbWM2dzIwMS5jICAg\n" - "ICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jICAgICAgICB8\n" - "ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9mc2NobWQuYyAgICAgICAgIHwgICAx\n" - "MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2c3NjBhLmMgICAgICAgICAgfCAgIDE1ICst\n" - "LS0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9nbDUxOHNtLmMgICAgICAgIHwgICAxMyArLS0t\n" - "LS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2dsNTIwc20uYyAgICAgICAgfCAgIDE1ICstLS0tLS0t\n" - "LS0tLS0tLQogZHJpdmVycy9od21vbi9qYzQyLmMgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0t\n" - "LS0tCiBkcml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K\n" - "IGRyaXZlcnMvaHdtb24vbG02My5jICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp\n" - "dmVycy9od21vbi9sbTczLmMgICAgICAgICAgIHwgICAxNSArLS0tLS0tLS0tLS0tLS0KIGRyaXZl\n" - "cnMvaHdtb24vbG03NS5jICAgICAgICAgICB8ICAgMTcgKy0tLS0tLS0tLS0tLS0tLS0KIGRyaXZl\n" - "cnMvaHdtb24vbG03Ny5jICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9o\n" - "d21vbi9sbTgwLmMgICAgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9u\n" - "L2xtODMuYyAgICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG04\n" - "NS5jICAgICAgICAgICB8ICAgMTQgKy0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG04Ny5j\n" - "ICAgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTkwLmMgICAg\n" - "ICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTIuYyAgICAgICAg\n" - "ICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbG05My5jICAgICAgICAgICB8\n" - "ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9sbTk1MjQxLmMgICAgICAgIHwgICAx\n" - "MyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyAgICAgICAgfCAgIDEzICst\n" - "LS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbHRjNDE1MS5jICAgICAgICB8ICAgMTMgKy0tLS0t\n" - "LS0tLS0tLQogZHJpdmVycy9od21vbi9sdGM0MjE1LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0t\n" - "LS0tCiBkcml2ZXJzL2h3bW9uL2x0YzQyNDUuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K\n" - "IGRyaXZlcnMvaHdtb24vbHRjNDI2MS5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJp\n" - "dmVycy9od21vbi9tYXgxNjA2NS5jICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJz\n" - "L2h3bW9uL21heDE2MTkuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdt\n" - "b24vbWF4MTY2OC5jICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9t\n" - "YXg2NjM5LmMgICAgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL21heDY2\n" - "NDIuYyAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vbWF4NjY1MC5j\n" - "ICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9wbWJ1cy9hZG0xMjc1\n" - "LmMgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jICB8\n" - "ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3BtYnVzL2x0YzI5NzguYyAgfCAgIDEy\n" - "ICstLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9wbWJ1cy9tYXgxNjA2NC5jIHwgICAxMiArLS0t\n" - "LS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYyB8ICAgMTIgKy0tLS0tLS0t\n" - "LS0tCiBkcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYyAgfCAgIDEyICstLS0tLS0tLS0tLQog\n" - "ZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jICAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZl\n" - "cnMvaHdtb24vcG1idXMvdWNkOTAwMC5jICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3\n" - "bW9uL3BtYnVzL3VjZDkyMDAuYyAgfCAgIDEyICstLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9w\n" - "bWJ1cy96bDYxMDAuYyAgIHwgICAxMiArLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vc2h0MjEu\n" - "YyAgICAgICAgICB8ICAgMjMgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24v\n" - "c21tNjY1LmMgICAgICAgICB8ICAgMTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi9zbXNj\n" - "NDdtMTkyLmMgICAgIHwgICAxMyArLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3RobWM1MC5j\n" - "ICAgICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wMTAyLmMgICAg\n" - "ICAgICB8ICAgMTIgKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3RtcDQwMS5jICAgICAgICAg\n" - "fCAgIDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdG1wNDIxLmMgICAgICAgICB8ICAg\n" - "MTMgKy0tLS0tLS0tLS0tLQogZHJpdmVycy9od21vbi93ODM3OTFkLmMgICAgICAgIHwgICAxMyAr\n" - "LS0tLS0tLS0tLS0tCiBkcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYyAgICAgICAgfCAgIDE2ICstLS0t\n" - "LS0tLS0tLS0tLS0KIGRyaXZlcnMvaHdtb24vdzgzNzkzLmMgICAgICAgICB8ICAgMTMgKy0tLS0t\n" - "LS0tLS0tLQogZHJpdmVycy9od21vbi93ODM3OTUuYyAgICAgICAgIHwgICAxMyArLS0tLS0tLS0t\n" - "LS0tCiBkcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jICAgICAgfCAgIDEzICstLS0tLS0tLS0tLS0K\n" - "IGRyaXZlcnMvaHdtb24vdzgzbDc4Nm5nLmMgICAgICB8ICAgMTUgKy0tLS0tLS0tLS0tLS0tCiA3\n" - "NCBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspLCA5MDkgZGVsZXRpb25zKC0pCgpkaWZm\n" - "IC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZDc0MTQuYyBiL2RyaXZlcnMvaHdtb24vYWQ3NDE0LmMK\n" - "aW5kZXggZWRiZGI2ZC4uMzY0NjUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZDc0MTQu\n" - "YworKysgYi9kcml2ZXJzL2h3bW9uL2FkNzQxNC5jCkBAIC0yNTYsMTcgKzI1Niw3IEBAIHN0YXRp\n" - "YyBzdHJ1Y3QgaTJjX2RyaXZlciBhZDc0MTRfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IGFkNzQx\n" - "NF9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGFkNzQxNF9pbml0KHZvaWQpCi17Ci0JcmV0\n" - "dXJuIGkyY19hZGRfZHJpdmVyKCZhZDc0MTRfZHJpdmVyKTsKLX0KLW1vZHVsZV9pbml0KGFkNzQx\n" - "NF9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IGFkNzQxNF9leGl0KHZvaWQpCi17Ci0JaTJj\n" - "X2RlbF9kcml2ZXIoJmFkNzQxNF9kcml2ZXIpOwotfQotbW9kdWxlX2V4aXQoYWQ3NDE0X2V4aXQp\n" - "OworbW9kdWxlX2kyY19kcml2ZXIoYWQ3NDE0X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0\n" - "ZWZhbiBSb2VzZSA8c3IgYXQgZGVueC5kZT4sICIKIAkgICAgICAiRnJhbmsgRWRlbGhhZXVzZXIg\n" - "PGZyYW5rLmVkZWxoYWV1c2VyIGF0IHNwYW5zaW9uLmNvbT4iKTsKZGlmZiAtLWdpdCBhL2RyaXZl\n" - "cnMvaHdtb24vYWQ3NDE4LmMgYi9kcml2ZXJzL2h3bW9uL2FkNzQxOC5jCmluZGV4IDQyNDYxZDEu\n" - "LmE1MGE2YmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWQ3NDE4LmMKKysrIGIvZHJpdmVy\n" - "cy9od21vbi9hZDc0MTguYwpAQCAtMjk1LDIwICsyOTUsOSBAQCBzdGF0aWMgaW50IGFkNzQxOF9y\n" - "ZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGlj\n" - "IGludCBfX2luaXQgYWQ3NDE4X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIo\n" - "JmFkNzQxOF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYWQ3NDE4X2V4aXQodm9p\n" - "ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWQ3NDE4X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry\n" - "aXZlcihhZDc0MThfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiQWxlc3NhbmRybyBadW1tbyA8\n" - "YS56dW1tb0B0b3dlcnRlY2guaXQ+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFENzQxNi8xNy8x\n" - "OCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9WRVJTSU9OKERSVl9W\n" - "RVJTSU9OKTsKLQotbW9kdWxlX2luaXQoYWQ3NDE4X2luaXQpOwotbW9kdWxlX2V4aXQoYWQ3NDE4\n" - "X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZG0xMDIxLmMgYi9kcml2ZXJzL2h3\n" - "bW9uL2FkbTEwMjEuYwppbmRleCBlNmZjMDA2Li5lYzg0MzMxIDEwMDY0NAotLS0gYS9kcml2ZXJz\n" - "L2h3bW9uL2FkbTEwMjEuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjEuYwpAQCAtNDcxLDE1\n" - "ICs0NzEsNyBAQCBzdGF0aWMgc3RydWN0IGFkbTEwMjFfZGF0YSAqYWRtMTAyMV91cGRhdGVfZGV2\n" - "aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf\n" - "X2luaXQgc2Vuc29yc19hZG0xMDIxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2\n" - "ZXIoJmFkbTEwMjFfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfYWRt\n" - "MTAyMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjFfZHJpdmVyKTsKLX0K\n" - "K21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjFfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRnJv\n" - "ZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiBhbmQgIgogCQkiUGhpbGlwIEVkZWxicm9jayA8\n" - "cGhpbEBuZXRyb2VkZ2UuY29tPiIpOwpAQCAtNDg4LDYgKzQ4MCwzIEBAIE1PRFVMRV9MSUNFTlNF\n" - "KCJHUEwiKTsKIAogbW9kdWxlX3BhcmFtKHJlYWRfb25seSwgYm9vbCwgMCk7CiBNT0RVTEVfUEFS\n" - "TV9ERVNDKHJlYWRfb25seSwgIkRvbid0IHNldCBhbnkgdmFsdWVzLCByZWFkIG9ubHkgbW9kZSIp\n" - "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkbTEwMjFfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNv\n" - "cnNfYWRtMTAyMV9leGl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hZG0xMDI1LmMgYi9k\n" - "cml2ZXJzL2h3bW9uL2FkbTEwMjUuYwppbmRleCAxNGQ4OTk3Li5lZmJjOWM5IDEwMDY0NAotLS0g\n" - "YS9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYworKysgYi9kcml2ZXJzL2h3bW9uL2FkbTEwMjUuYwpA\n" - "QCAtNjE4LDE5ICs2MTgsOCBAQCBzdGF0aWMgc3RydWN0IGFkbTEwMjVfZGF0YSAqYWRtMTAyNV91\n" - "cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3Rh\n" - "dGljIGludCBfX2luaXQgc2Vuc29yc19hZG0xMDI1X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj\n" - "X2FkZF9kcml2ZXIoJmFkbTEwMjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl\n" - "bnNvcnNfYWRtMTAyNV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjVfZHJp\n" - "dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjVfZHJpdmVyKTsKIAogTU9EVUxFX0FV\n" - "VEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RVTEVfREVTQ1JJ\n" - "UFRJT04oIkFETTEwMjUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs\n" - "ZV9pbml0KHNlbnNvcnNfYWRtMTAyNV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRtMTAy\n" - "NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRtMTAyNi5jIGIvZHJpdmVycy9o\n" - "d21vbi9hZG0xMDI2LmMKaW5kZXggY2Q3NzNjZS4uMWY0ZjVkZSAxMDA2NDQKLS0tIGEvZHJpdmVy\n" - "cy9od21vbi9hZG0xMDI2LmMKKysrIGIvZHJpdmVycy9od21vbi9hZG0xMDI2LmMKQEAgLTE4ODEs\n" - "MjAgKzE4ODEsOSBAQCBzdGF0aWMgaW50IGFkbTEwMjZfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50\n" - "ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNtX2FkbTEwMjZf\n" - "aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYWRtMTAyNl9kcml2ZXIpOwot\n" - "fQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc21fYWRtMTAyNl9leGl0KHZvaWQpCi17Ci0JaTJjX2Rl\n" - "bF9kcml2ZXIoJmFkbTEwMjZfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjZf\n" - "ZHJpdmVyKTsKIAogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogTU9EVUxFX0FVVEhPUigiUGhpbGlw\n" - "IFBva29ybnkgPHBwb2tvcm55QHBlbmd1aW5jb21wdXRpbmcuY29tPiwgIgogCSAgICAgICJKdXN0\n" - "aW4gVGhpZXNzZW4gPGp0aGllc3NlbkBwZW5ndWluY29tcHV0aW5nLmNvbT4iKTsKIE1PRFVMRV9E\n" - "RVNDUklQVElPTigiQURNMTAyNiBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21fYWRtMTAyNl9p\n" - "bml0KTsKLW1vZHVsZV9leGl0KHNtX2FkbTEwMjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz\n" - "L2h3bW9uL2FkbTEwMjkuYyBiL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCmluZGV4IGQ3ODljMzMu\n" - "LmM2NTMxYTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWRtMTAyOS5jCisrKyBiL2RyaXZl\n" - "cnMvaHdtb24vYWRtMTAyOS5jCkBAIC00NTAsMjQgKzQ1MCw4IEBAIHN0YXRpYyBzdHJ1Y3QgYWRt\n" - "MTAyOV9kYXRhICphZG0xMDI5X3VwZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJl\n" - "dHVybiBkYXRhOwogfQogCi0vKgotCUNvbW1vbiBtb2R1bGUgc3R1ZmYKLSovCi1zdGF0aWMgaW50\n" - "IF9faW5pdCBzZW5zb3JzX2FkbTEwMjlfaW5pdCh2b2lkKQotewotCi0JcmV0dXJuIGkyY19hZGRf\n" - "ZHJpdmVyKCZhZG0xMDI5X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3Jz\n" - "X2FkbTEwMjlfZXhpdCh2b2lkKQotewotCi0JaTJjX2RlbF9kcml2ZXIoJmFkbTEwMjlfZHJpdmVy\n" - "KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFkbTEwMjlfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n" - "UigiQ29yZW50aW4gTEFCQkUgPGNvcmVudGluLmxhYmJlQGdlb21hdHlzLmZyPiIpOwogTU9EVUxF\n" - "X0RFU0NSSVBUSU9OKCJhZG0xMDI5IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIp\n" - "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkbTEwMjlfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z\n" - "b3JzX2FkbTEwMjlfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYyBi\n" - "L2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCmluZGV4IDk3ZTJjZmIuLjcxYjVlYzMgMTAwNjQ0Ci0t\n" - "LSBhL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYWRtMTAzMS5j\n" - "CkBAIC0xMTMxLDE5ICsxMTMxLDggQEAgc3RhdGljIHN0cnVjdCBhZG0xMDMxX2RhdGEgKmFkbTEw\n" - "MzFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK\n" - "LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRtMTAzMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu\n" - "IGkyY19hZGRfZHJpdmVyKCZhZG0xMDMxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhp\n" - "dCBzZW5zb3JzX2FkbTEwMzFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZG0xMDMx\n" - "X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZG0xMDMxX2RyaXZlcik7CiAKIE1PRFVM\n" - "RV9BVVRIT1IoIkFsZXhhbmRyZSBkJ0FsdG9uIDxhbGV4QGFsZXhkYWx0b24ub3JnPiIpOwogTU9E\n" - "VUxFX0RFU0NSSVBUSU9OKCJBRE0xMDMxL0FETTEwMzAgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5T\n" - "RSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtMTAzMV9pbml0KTsKLW1vZHVsZV9l\n" - "eGl0KHNlbnNvcnNfYWRtMTAzMV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWRt\n" - "OTI0MC5jIGIvZHJpdmVycy9od21vbi9hZG05MjQwLmMKaW5kZXggMmRlNDUxMS4uMzQwYjg0MiAx\n" - "MDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZG05MjQwLmMKKysrIGIvZHJpdmVycy9od21vbi9h\n" - "ZG05MjQwLmMKQEAgLTgyMSwyMSArODIxLDkgQEAgc3RhdGljIHN0cnVjdCBhZG05MjQwX2RhdGEg\n" - "KmFkbTkyNDBfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7\n" - "CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRtOTI0MF9pbml0KHZvaWQpCi17Ci0J\n" - "cmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZG05MjQwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lk\n" - "IF9fZXhpdCBzZW5zb3JzX2FkbTkyNDBfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZh\n" - "ZG05MjQwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZG05MjQwX2RyaXZlcik7CiAK\n" - "IE1PRFVMRV9BVVRIT1IoIk1pY2hpZWwgUm9vayA8bWljaGllbEBncmVuZGVscHJvamVjdC5ubD4s\n" - "ICIKIAkJIkdyYW50IENvYWR5IDxnY29hZHkubGtAZ21haWwuY29tPiBhbmQgb3RoZXJzIik7CiBN\n" - "T0RVTEVfREVTQ1JJUFRJT04oIkFETTkyNDAvRFMxNzgwL0xNODEgZHJpdmVyIik7CiBNT0RVTEVf\n" - "TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfYWRtOTI0MF9pbml0KTsKLW1v\n" - "ZHVsZV9leGl0KHNlbnNvcnNfYWRtOTI0MF9leGl0KTsKLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o\n" - "d21vbi9hZHMxMDE1LmMgYi9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYwppbmRleCBlZWRjYTNjLi42\n" - "MGJlMzU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkczEwMTUuYworKysgYi9kcml2ZXJz\n" - "L2h3bW9uL2FkczEwMTUuYwpAQCAtMzA2LDE5ICszMDYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19k\n" - "cml2ZXIgYWRzMTAxNV9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gYWRzMTAxNV9pZCwKIH07CiAK\n" - "LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWRzMTAxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJu\n" - "IGkyY19hZGRfZHJpdmVyKCZhZHMxMDE1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhp\n" - "dCBzZW5zb3JzX2FkczEwMTVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZhZHMxMDE1\n" - "X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZHMxMDE1X2RyaXZlcik7CiAKIE1PRFVM\n" - "RV9BVVRIT1IoIkRpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Iik7CiBNT0RVTEVfREVTQ1JJ\n" - "UFRJT04oIkFEUzEwMTUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs\n" - "ZV9pbml0KHNlbnNvcnNfYWRzMTAxNV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfYWRzMTAx\n" - "NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vYWR0NzQxMS5jIGIvZHJpdmVycy9o\n" - "d21vbi9hZHQ3NDExLmMKaW5kZXggZmZlNjRmOC4uNzFiYWNjNSAxMDA2NDQKLS0tIGEvZHJpdmVy\n" - "cy9od21vbi9hZHQ3NDExLmMKKysrIGIvZHJpdmVycy9od21vbi9hZHQ3NDExLmMKQEAgLTM0OCwx\n" - "NyArMzQ4LDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGFkdDc0MTFfZHJpdmVyID0gewog\n" - "CS5jbGFzcyA9IEkyQ19DTEFTU19IV01PTiwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNv\n" - "cnNfYWR0NzQxMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDEx\n" - "X2RyaXZlcik7Ci19Ci1tb2R1bGVfaW5pdChzZW5zb3JzX2FkdDc0MTFfaW5pdCkKLQotc3RhdGlj\n" - "IHZvaWQgX19leGl0IHNlbnNvcnNfYWR0NzQxMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2\n" - "ZXIoJmFkdDc0MTFfZHJpdmVyKTsKLX0KLW1vZHVsZV9leGl0KHNlbnNvcnNfYWR0NzQxMV9leGl0\n" - "KQorbW9kdWxlX2kyY19kcml2ZXIoYWR0NzQxMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJT\n" - "YXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+IGFuZCAiCiAJIldvbGZyYW0gU2Fu\n" - "ZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9h\n" - "ZHQ3NDYyLmMgYi9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYwppbmRleCAzZGYzMzFhLi5lNGIxY2M5\n" - "IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2FkdDc0NjIuYworKysgYi9kcml2ZXJzL2h3bW9u\n" - "L2FkdDc0NjIuYwpAQCAtMTk3NCwxOSArMTk3NCw4IEBAIHN0YXRpYyBpbnQgYWR0NzQ2Ml9yZW1v\n" - "dmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGlu\n" - "dCBfX2luaXQgYWR0NzQ2Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZh\n" - "ZHQ3NDYyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhZHQ3NDYyX2V4aXQodm9p\n" - "ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWR0NzQ2Ml9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k\n" - "cml2ZXIoYWR0NzQ2Ml9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJEYXJyaWNrIEouIFdvbmcg\n" - "PGRqd29uZ0B1cy5pYm0uY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJBRFQ3NDYyIGRyaXZl\n" - "ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChhZHQ3NDYyX2luaXQp\n" - "OwotbW9kdWxlX2V4aXQoYWR0NzQ2Ml9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v\n" - "YWR0NzQ3MC5jIGIvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKaW5kZXggYjIzZWZkOS4uNTRlYzg5\n" - "MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9hZHQ3NDcwLmMKKysrIGIvZHJpdmVycy9od21v\n" - "bi9hZHQ3NDcwLmMKQEAgLTEzMTcsMTkgKzEzMTcsOCBAQCBzdGF0aWMgaW50IGFkdDc0NzBfcmVt\n" - "b3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBp\n" - "bnQgX19pbml0IGFkdDc0NzBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigm\n" - "YWR0NzQ3MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgYWR0NzQ3MF9leGl0KHZv\n" - "aWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmFkdDc0NzBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNf\n" - "ZHJpdmVyKGFkdDc0NzBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiRGFycmljayBKLiBXb25n\n" - "IDxkandvbmdAdXMuaWJtLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiQURUNzQ3MCBkcml2\n" - "ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoYWR0NzQ3MF9pbml0\n" - "KTsKLW1vZHVsZV9leGl0KGFkdDc0NzBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u\n" - "L2FkdDc0NzUuYyBiL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCmluZGV4IDcxZTlhYzQuLjUyMmNi\n" - "NzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vYWR0NzQ3NS5jCisrKyBiL2RyaXZlcnMvaHdt\n" - "b24vYWR0NzQ3NS5jCkBAIC0xNjAwLDE5ICsxNjAwLDggQEAgc3RhdGljIHN0cnVjdCBhZHQ3NDc1\n" - "X2RhdGEgKmFkdDc0NzVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJu\n" - "IGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfYWR0NzQ3NV9pbml0KHZvaWQp\n" - "Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Ci0KLXN0YXRp\n" - "YyB2b2lkIF9fZXhpdCBzZW5zb3JzX2FkdDc0NzVfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp\n" - "dmVyKCZhZHQ3NDc1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihhZHQ3NDc1X2RyaXZl\n" - "cik7CiAKIE1PRFVMRV9BVVRIT1IoIkFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYyIpOwogTU9E\n" - "VUxFX0RFU0NSSVBUSU9OKCJhZHQ3NDc1IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp\n" - "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2FkdDc0NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z\n" - "b3JzX2FkdDc0NzVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2FtYzY4MjEuYyBi\n" - "L2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCmluZGV4IDRhNGJmZWYuLjUyOTg4NTUgMTAwNjQ0Ci0t\n" - "LSBhL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYW1jNjgyMS5j\n" - "CkBAIC0xMDk1LDIwICsxMDk1LDcgQEAgc3RhdGljIHN0cnVjdCBhbWM2ODIxX2RhdGEgKmFtYzY4\n" - "MjFfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAK\n" - "LQotc3RhdGljIGludCBfX2luaXQgYW1jNjgyMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h\n" - "ZGRfZHJpdmVyKCZhbWM2ODIxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhbWM2\n" - "ODIxX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYW1jNjgyMV9kcml2ZXIpOwotfQot\n" - "Ci1tb2R1bGVfaW5pdChhbWM2ODIxX2luaXQpOwotbW9kdWxlX2V4aXQoYW1jNjgyMV9leGl0KTsK\n" - "LQorbW9kdWxlX2kyY19kcml2ZXIoYW1jNjgyMV9kcml2ZXIpOwogCiBNT0RVTEVfTElDRU5TRSgi\n" - "R1BMIik7CiBNT0RVTEVfQVVUSE9SKCJULiBNZXJ0ZWxqIDx0b21hei5tZXJ0ZWxqQGd1ZXN0LmFy\n" - "bmVzLnNpPiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9hc2IxMDAuYyBiL2RyaXZlcnMv\n" - "aHdtb24vYXNiMTAwLmMKaW5kZXggYTVmMTY0Mi4uNTczZmZmNSAxMDA2NDQKLS0tIGEvZHJpdmVy\n" - "cy9od21vbi9hc2IxMDAuYworKysgYi9kcml2ZXJzL2h3bW9uL2FzYjEwMC5jCkBAIC0xMDAyLDE5\n" - "ICsxMDAyLDggQEAgc3RhdGljIHN0cnVjdCBhc2IxMDBfZGF0YSAqYXNiMTAwX3VwZGF0ZV9kZXZp\n" - "Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f\n" - "aW5pdCBhc2IxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYXNiMTAw\n" - "X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhc2IxMDBfZXhpdCh2b2lkKQotewot\n" - "CWkyY19kZWxfZHJpdmVyKCZhc2IxMDBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGFz\n" - "YjEwMF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJNYXJrIE0uIEhvZmZtYW4gPG1ob2ZmbWFu\n" - "QGxpZ2h0bGluay5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkFTQjEwMCBCYWNoIGRyaXZl\n" - "ciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChhc2IxMDBfaW5pdCk7\n" - "Ci1tb2R1bGVfZXhpdChhc2IxMDBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2F0\n" - "eHAxLmMgYi9kcml2ZXJzL2h3bW9uL2F0eHAxLmMKaW5kZXggZDRhNTg5Yi4uNWE2NzFjYSAxMDA2\n" - "NDQKLS0tIGEvZHJpdmVycy9od21vbi9hdHhwMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vYXR4cDEu\n" - "YwpAQCAtMzkwLDE1ICszOTAsNCBAQCBzdGF0aWMgaW50IGF0eHAxX3JlbW92ZShzdHJ1Y3QgaTJj\n" - "X2NsaWVudCAqY2xpZW50KQogCXJldHVybiAwOwogfTsKIAotc3RhdGljIGludCBfX2luaXQgYXR4\n" - "cDFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmYXR4cDFfZHJpdmVyKTsK\n" - "LX07Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhdHhwMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9k\n" - "cml2ZXIoJmF0eHAxX2RyaXZlcik7Ci19OwotCi1tb2R1bGVfaW5pdChhdHhwMV9pbml0KTsKLW1v\n" - "ZHVsZV9leGl0KGF0eHAxX2V4aXQpOworbW9kdWxlX2kyY19kcml2ZXIoYXR4cDFfZHJpdmVyKTsK\n" - "ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vZHMxNjIxLmMgYi9kcml2ZXJzL2h3bW9uL2RzMTYy\n" - "MS5jCmluZGV4IGUyM2E4YWIuLjVkYzU0ODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZHMx\n" - "NjIxLmMKKysrIGIvZHJpdmVycy9od21vbi9kczE2MjEuYwpAQCAtMzExLDIwICszMTEsOCBAQCBz\n" - "dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZHMxNjIxX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0\n" - "CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IGRzMTYyMV9pbml0KHZvaWQp\n" - "Ci17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZkczE2MjFfZHJpdmVyKTsKLX0KLQotc3RhdGlj\n" - "IHZvaWQgX19leGl0IGRzMTYyMV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmRzMTYy\n" - "MV9kcml2ZXIpOwotfQotCittb2R1bGVfaTJjX2RyaXZlcihkczE2MjFfZHJpdmVyKTsKIAogTU9E\n" - "VUxFX0FVVEhPUigiQ2hyaXN0aWFuIFcuIFp1Y2tzY2h3ZXJkdCA8emFueUB0cmlxLm5ldD4iKTsK\n" - "IE1PRFVMRV9ERVNDUklQVElPTigiRFMxNjIxIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQ\n" - "TCIpOwotCi1tb2R1bGVfaW5pdChkczE2MjFfaW5pdCk7Ci1tb2R1bGVfZXhpdChkczE2MjFfZXhp\n" - "dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2RzNjIwLmMgYi9kcml2ZXJzL2h3bW9uL2Rz\n" - "NjIwLmMKaW5kZXggMzAwYzNkNC4uNTA2NjNlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9k\n" - "czYyMC5jCisrKyBiL2RyaXZlcnMvaHdtb24vZHM2MjAuYwpAQCAtMjk3LDE5ICsyOTcsOCBAQCBz\n" - "dGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZHM2MjBfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IGRz\n" - "NjIwX2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgZHM2MjBfaW5pdCh2b2lkKQotewotCXJl\n" - "dHVybiBpMmNfYWRkX2RyaXZlcigmZHM2MjBfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19l\n" - "eGl0IGRzNjIwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZHM2MjBfZHJpdmVyKTsK\n" - "LX0KK21vZHVsZV9pMmNfZHJpdmVyKGRzNjIwX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlJv\n" - "bGFuZCBTdGlnZ2UgPHN0aWdnZUBhbnRjb20uZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkRT\n" - "NjIwIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChkczYy\n" - "MF9pbml0KTsKLW1vZHVsZV9leGl0KGRzNjIwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o\n" - "d21vbi9lbWMxNDAzLmMgYi9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYwppbmRleCAyNzBmZmFiLi45\n" - "OWFjMTQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2VtYzE0MDMuYworKysgYi9kcml2ZXJz\n" - "L2h3bW9uL2VtYzE0MDMuYwpAQCAtMzY2LDE4ICszNjYsNyBAQCBzdGF0aWMgc3RydWN0IGkyY19k\n" - "cml2ZXIgc2Vuc29yX2VtYzE0MDMgPSB7CiAJLmFkZHJlc3NfbGlzdCA9IGVtYzE0MDNfYWRkcmVz\n" - "c19saXN0LAogfTsKIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yX2VtYzE0MDNfaW5pdCh2b2lk\n" - "KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc2Vuc29yX2VtYzE0MDMpOwotfQotCi1zdGF0\n" - "aWMgdm9pZCAgX19leGl0IHNlbnNvcl9lbWMxNDAzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry\n" - "aXZlcigmc2Vuc29yX2VtYzE0MDMpOwotfQotCi1tb2R1bGVfaW5pdChzZW5zb3JfZW1jMTQwM19p\n" - "bml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcl9lbWMxNDAzX2V4aXQpOworbW9kdWxlX2kyY19kcml2\n" - "ZXIoc2Vuc29yX2VtYzE0MDMpOwogCiBNT0RVTEVfQVVUSE9SKCJLYWxoYW4gVHJpc2FsIDxrYWxo\n" - "YW4udHJpc2FsQGludGVsLmNvbSIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJlbWMxNDAzIFRoZXJt\n" - "YWwgRHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzIxMDMuYyBiL2RyaXZl\n" - "cnMvaHdtb24vZW1jMjEwMy5jCmluZGV4IDg2NTA2MzkuLjBmNTEzODIgMTAwNjQ0Ci0tLSBhL2Ry\n" - "aXZlcnMvaHdtb24vZW1jMjEwMy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jMjEwMy5jCkBAIC03\n" - "MjIsMTkgKzcyMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBlbWMyMTAzX2RyaXZlciA9\n" - "IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0\n" - "IHNlbnNvcnNfZW1jMjEwM19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZl\n" - "bWMyMTAzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2VtYzIxMDNf\n" - "ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZlbWMyMTAzX2RyaXZlcik7Ci19Cittb2R1\n" - "bGVfaTJjX2RyaXZlcihlbWMyMTAzX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlN0ZXZlIEds\n" - "ZW5kaW5uaW5nIDxzdGV2ZS5nbGVuZGlubmluZ0BzbXNjLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQ\n" - "VElPTigiU01TQyBFTUMyMTAzIGh3bW9uIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp\n" - "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2VtYzIxMDNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z\n" - "b3JzX2VtYzIxMDNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMg\n" - "Yi9kcml2ZXJzL2h3bW9uL2VtYzZ3MjAxLmMKaW5kZXggNmViYjliNy4uODQwZjUxMSAxMDA2NDQK\n" - "LS0tIGEvZHJpdmVycy9od21vbi9lbWM2dzIwMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZW1jNncy\n" - "MDEuYwpAQCAtNTUyLDE3ICs1NTIsNyBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgZW1jNncy\n" - "MDFfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3QJPSBub3JtYWxfaTJjLAogfTsKIAotc3RhdGlj\n" - "IGludCBfX2luaXQgc2Vuc29yc19lbWM2dzIwMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19h\n" - "ZGRfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoc2Vuc29yc19lbWM2\n" - "dzIwMV9pbml0KTsKLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZW1jNncyMDFfZXhpdCh2\n" - "b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZlbWM2dzIwMV9kcml2ZXIpOwotfQotbW9kdWxlX2V4\n" - "aXQoc2Vuc29yc19lbWM2dzIwMV9leGl0KTsKK21vZHVsZV9pMmNfZHJpdmVyKGVtYzZ3MjAxX2Ry\n" - "aXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3Jn\n" - "PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJTTVNDIEVNQzZXMjAxIGhhcmR3YXJlIG1vbml0b3Jp\n" - "bmcgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYyBiL2RyaXZl\n" - "cnMvaHdtb24vZjc1Mzc1cy5jCmluZGV4IGVlZGY1NzQuLjM5OGRiYzggMTAwNjQ0Ci0tLSBhL2Ry\n" - "aXZlcnMvaHdtb24vZjc1Mzc1cy5jCisrKyBiL2RyaXZlcnMvaHdtb24vZjc1Mzc1cy5jCkBAIC04\n" - "NTgsMTkgKzg1OCw4IEBAIHN0YXRpYyBpbnQgZjc1Mzc1X2RldGVjdChzdHJ1Y3QgaTJjX2NsaWVu\n" - "dCAqY2xpZW50LAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2Y3\n" - "NTM3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZmNzUzNzVfZHJpdmVy\n" - "KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZjc1Mzc1X2V4aXQodm9pZCkKLXsK\n" - "LQlpMmNfZGVsX2RyaXZlcigmZjc1Mzc1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihm\n" - "NzUzNzVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiUmlrdSBWb2lwaW8iKTsKIE1PRFVMRV9M\n" - "SUNFTlNFKCJHUEwiKTsKIE1PRFVMRV9ERVNDUklQVElPTigiRjc1MzczL0Y3NTM3NS9GNzUzODcg\n" - "aGFyZHdhcmUgbW9uaXRvcmluZyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19mNzUz\n" - "NzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2Y3NTM3NV9leGl0KTsKZGlmZiAtLWdpdCBh\n" - "L2RyaXZlcnMvaHdtb24vZnNjaG1kLmMgYi9kcml2ZXJzL2h3bW9uL2ZzY2htZC5jCmluZGV4IDA2\n" - "Y2JmNzcuLjM1ZGRmNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vZnNjaG1kLmMKKysrIGIv\n" - "ZHJpdmVycy9od21vbi9mc2NobWQuYwpAQCAtMTM0MSwyMCArMTM0MSw5IEBAIHN0YXRpYyBzdHJ1\n" - "Y3QgZnNjaG1kX2RhdGEgKmZzY2htZF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikK\n" - "IAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgZnNjaG1kX2luaXQodm9pZCkK\n" - "LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmZzY2htZF9kcml2ZXIpOwotfQotCi1zdGF0aWMg\n" - "dm9pZCBfX2V4aXQgZnNjaG1kX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZnNjaG1k\n" - "X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihmc2NobWRfZHJpdmVyKTsKIAogTU9EVUxF\n" - "X0FVVEhPUigiSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4iKTsKIE1PRFVMRV9E\n" - "RVNDUklQVElPTigiRlNDIFBvc2VpZG9uLCBIZXJtZXMsIFNjeWxsYSwgSGVyYWNsZXMsIEhlaW1k\n" - "YWxsLCBIYWRlcyAiCiAJCQkiYW5kIFN5bGV1cyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJH\n" - "UEwiKTsKLQotbW9kdWxlX2luaXQoZnNjaG1kX2luaXQpOwotbW9kdWxlX2V4aXQoZnNjaG1kX2V4\n" - "aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9nNzYwYS5jIGIvZHJpdmVycy9od21vbi9n\n" - "NzYwYS5jCmluZGV4IDgxYjZlMzUuLjA1MmUzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24v\n" - "Zzc2MGEuYworKysgYi9kcml2ZXJzL2h3bW9uL2c3NjBhLmMKQEAgLTI1MCwyMSArMjUwLDggQEAg\n" - "c3RhdGljIGludCBnNzYwYV9yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCkKIAlyZXR1\n" - "cm4gMDsKIH0KIAotLyogbW9kdWxlIG1hbmFnZW1lbnQgKi8KLQotc3RhdGljIGludCBfX2luaXQg\n" - "Zzc2MGFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmZzc2MGFfZHJpdmVy\n" - "KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGc3NjBhX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs\n" - "X2RyaXZlcigmZzc2MGFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGc3NjBhX2RyaXZl\n" - "cik7CiAKIE1PRFVMRV9BVVRIT1IoIkhlcmJlcnQgVmFsZXJpbyBSaWVkZWwgPGh2ckBnbnUub3Jn\n" - "PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJHTVQgRzc2MEEgZHJpdmVyIik7CiBNT0RVTEVfTElD\n" - "RU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KGc3NjBhX2luaXQpOwotbW9kdWxlX2V4aXQoZzc2\n" - "MGFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2dsNTE4c20uYyBiL2RyaXZlcnMv\n" - "aHdtb24vZ2w1MThzbS5jCmluZGV4IDhkMGY3MWQuLmFlMTkzZjAgMTAwNjQ0Ci0tLSBhL2RyaXZl\n" - "cnMvaHdtb24vZ2w1MThzbS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZ2w1MThzbS5jCkBAIC03MTAs\n" - "MjEgKzcxMCwxMCBAQCBzdGF0aWMgc3RydWN0IGdsNTE4X2RhdGEgKmdsNTE4X3VwZGF0ZV9kZXZp\n" - "Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50IF9f\n" - "aW5pdCBzZW5zb3JzX2dsNTE4c21faW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl\n" - "cigmZ2w1MThfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfZ2w1MThz\n" - "bV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmdsNTE4X2RyaXZlcik7Ci19Cittb2R1\n" - "bGVfaTJjX2RyaXZlcihnbDUxOF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29p\n" - "amFhcmQgPGZyb2RvbEBkZHMubmw+LCAiCiAJIkt5b3N0aSBNYWxra2kgPGttYWxra2lAY2MuaHV0\n" - "LmZpPiBhbmQgIgogCSJIb25nLUd1bm4gQ2hldyA8aGdsaW51eEBndW5uZXQub3JnPiIpOwogTU9E\n" - "VUxFX0RFU0NSSVBUSU9OKCJHTDUxOFNNIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp\n" - "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2dsNTE4c21faW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5z\n" - "b3JzX2dsNTE4c21fZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2dsNTIwc20uYyBi\n" - "L2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jCmluZGV4IDE5MDkwOTcuLjUyZGFkYjIgMTAwNjQ0Ci0t\n" - "LSBhL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5jCisrKyBiL2RyaXZlcnMvaHdtb24vZ2w1MjBzbS5j\n" - "CkBAIC05NzksMjMgKzk3OSwxMCBAQCBzdGF0aWMgc3RydWN0IGdsNTIwX2RhdGEgKmdsNTIwX3Vw\n" - "ZGF0ZV9kZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi0KLXN0\n" - "YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfZ2w1MjBzbV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky\n" - "Y19hZGRfZHJpdmVyKCZnbDUyMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vu\n" - "c29yc19nbDUyMHNtX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmZ2w1MjBfZHJpdmVy\n" - "KTsKLX0KLQorbW9kdWxlX2kyY19kcml2ZXIoZ2w1MjBfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n" - "UigiRnJvZG8gTG9vaWphYXJkIDxmcm9kb2xAZGRzLm5sPiwgIgogCSJLecO2c3RpIE3DpGxra2kg\n" - "PGttYWxra2lAY2MuaHV0LmZpPiwgIgogCSJNYWFydGVuIERlcHJleiA8bWFhcnRlbmRlcHJlekB1\n" - "c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdMNTIwU00gZHJp\n" - "dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfZ2w1\n" - "MjBzbV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfZ2w1MjBzbV9leGl0KTsKZGlmZiAtLWdp\n" - "dCBhL2RyaXZlcnMvaHdtb24vamM0Mi5jIGIvZHJpdmVycy9od21vbi9qYzQyLmMKaW5kZXggMjhj\n" - "MDllZS4uMzA4MzQ2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9qYzQyLmMKKysrIGIvZHJp\n" - "dmVycy9od21vbi9qYzQyLmMKQEAgLTU4OCwxOSArNTg4LDggQEAgYWJvcnQ6CiAJcmV0dXJuIHJl\n" - "dDsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19qYzQyX2luaXQodm9pZCkKLXsKLQly\n" - "ZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmpjNDJfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19l\n" - "eGl0IHNlbnNvcnNfamM0Ml9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJmpjNDJfZHJp\n" - "dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGpjNDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n" - "UigiR3VlbnRlciBSb2VjayA8Z3VlbnRlci5yb2Vja0Blcmljc3Nvbi5jb20+Iik7CiBNT0RVTEVf\n" - "REVTQ1JJUFRJT04oIkpDNDIgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1v\n" - "ZHVsZV9pbml0KHNlbnNvcnNfamM0Ml9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfamM0Ml9l\n" - "eGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbGluZWFnZS1wZW0uYyBiL2RyaXZlcnMv\n" - "aHdtb24vbGluZWFnZS1wZW0uYwppbmRleCA1OGVkZWQyLi41YjhjOWFlIDEwMDY0NAotLS0gYS9k\n" - "cml2ZXJzL2h3bW9uL2xpbmVhZ2UtcGVtLmMKKysrIGIvZHJpdmVycy9od21vbi9saW5lYWdlLXBl\n" - "bS5jCkBAIC01NjgsMTkgKzU2OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBwZW1fZHJp\n" - "dmVyID0gewogCS5pZF90YWJsZSA9IHBlbV9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBl\n" - "bV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZwZW1fZHJpdmVyKTsKLX0K\n" - "LQotc3RhdGljIHZvaWQgX19leGl0IHBlbV9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIo\n" - "JnBlbV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIocGVtX2RyaXZlcik7CiAKIE1PRFVM\n" - "RV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIpOwog\n" - "TU9EVUxFX0RFU0NSSVBUSU9OKCJMaW5lYWdlIENQTCBQRU0gaGFyZHdhcmUgbW9uaXRvcmluZyBk\n" - "cml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQocGVtX2luaXQp\n" - "OwotbW9kdWxlX2V4aXQocGVtX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTYz\n" - "LmMgYi9kcml2ZXJzL2h3bW9uL2xtNjMuYwppbmRleCA1ZTY0NTdhLi4xNWMwNWNjIDEwMDY0NAot\n" - "LS0gYS9kcml2ZXJzL2h3bW9uL2xtNjMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xtNjMuYwpAQCAt\n" - "MTExOSwxOSArMTExOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgbG02M19kYXRhICpsbTYzX3VwZGF0ZV9k\n" - "ZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiBkYXRhOwogfQogCi1zdGF0aWMgaW50\n" - "IF9faW5pdCBzZW5zb3JzX2xtNjNfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl\n" - "cigmbG02M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTYzX2V4\n" - "aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG02M19kcml2ZXIpOwotfQorbW9kdWxlX2ky\n" - "Y19kcml2ZXIobG02M19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUgPGto\n" - "YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE02MyBkcml2ZXIiKTsK\n" - "IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc19sbTYzX2luaXQp\n" - "OwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTYzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9o\n" - "d21vbi9sbTczLmMgYi9kcml2ZXJzL2h3bW9uL2xtNzMuYwppbmRleCA5YzgwOTNjLi44ZmEyNjMy\n" - "IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtNzMuYworKysgYi9kcml2ZXJzL2h3bW9uL2xt\n" - "NzMuYwpAQCAtMTk0LDIxICsxOTQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG03M19k\n" - "cml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi0vKiBtb2R1bGUg\n" - "Z2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNzNfaW5pdCh2b2lkKQotewot\n" - "CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03M19kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBf\n" - "X2V4aXQgc2Vuc29yc19sbTczX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG03M19k\n" - "cml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03M19kcml2ZXIpOwogCiBNT0RVTEVfQVVU\n" - "SE9SKCJHdWlsbGF1bWUgTGlnbmV1bCA8Z3VpbGxhdW1lLmxpZ25ldWxAZ21haWwuY29tPiIpOwog\n" - "TU9EVUxFX0RFU0NSSVBUSU9OKCJMTTczIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIp\n" - "OwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX2xtNzNfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3Jz\n" - "X2xtNzNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtNzUuYyBiL2RyaXZlcnMv\n" - "aHdtb24vbG03NS5jCmluZGV4IGIzMzExYjEuLmE4M2YyMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv\n" - "aHdtb24vbG03NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG03NS5jCkBAIC00MzgsMjMgKzQzOCw4\n" - "IEBAIGFib3J0OgogCXJldHVybiByZXQ7CiB9CiAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t\n" - "LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBt\n" - "b2R1bGUgZ2x1ZSAqLwotCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtNzVfaW5pdCh2b2lk\n" - "KQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG03NV9kcml2ZXIpOwotfQotCi1zdGF0aWMg\n" - "dm9pZCBfX2V4aXQgc2Vuc29yc19sbTc1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm\n" - "bG03NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG03NV9kcml2ZXIpOwogCiBNT0RV\n" - "TEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+Iik7CiBNT0RVTEVfREVT\n" - "Q1JJUFRJT04oIkxNNzUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVs\n" - "ZV9pbml0KHNlbnNvcnNfbG03NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG03NV9leGl0\n" - "KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG03Ny5jIGIvZHJpdmVycy9od21vbi9sbTc3\n" - "LmMKaW5kZXggMDhmN2ZmZS4uZDhjMWYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTc3\n" - "LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTc3LmMKQEAgLTQ0MywxOSArNDQzLDggQEAgc3RhdGlj\n" - "IHN0cnVjdCBsbTc3X2RhdGEgKmxtNzdfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYp\n" - "CiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbG03N19pbml0\n" - "KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTc3X2RyaXZlcik7Ci19Ci0KLXN0\n" - "YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtNzdfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJp\n" - "dmVyKCZsbTc3X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsbTc3X2RyaXZlcik7CiAK\n" - "IE1PRFVMRV9BVVRIT1IoIkFuZHJhcyBCQUxJIDxkcmV3aWVAZnJlZW1haWwuaHU+Iik7CiBNT0RV\n" - "TEVfREVTQ1JJUFRJT04oIkxNNzcgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K\n" - "LW1vZHVsZV9pbml0KHNlbnNvcnNfbG03N19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG03\n" - "N19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04MC5jIGIvZHJpdmVycy9od21v\n" - "bi9sbTgwLmMKaW5kZXggZGM2ZGY0ZS4uNmEyYTc3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v\n" - "bi9sbTgwLmMKKysrIGIvZHJpdmVycy9od21vbi9sbTgwLmMKQEAgLTY5NywyMCArNjk3LDkgQEAg\n" - "ZG9uZToKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX2xtODBf\n" - "aW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQot\n" - "Ci1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTgwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVs\n" - "X2RyaXZlcigmbG04MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG04MF9kcml2ZXIp\n" - "OwogCiBNT0RVTEVfQVVUSE9SKCJGcm9kbyBMb29pamFhcmQgPGZyb2RvbEBkZHMubmw+IGFuZCAi\n" - "CiAJIlBoaWxpcCBFZGVsYnJvY2sgPHBoaWxAbmV0cm9lZGdlLmNvbT4iKTsKIE1PRFVMRV9ERVND\n" - "UklQVElPTigiTE04MCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxl\n" - "X2luaXQoc2Vuc29yc19sbTgwX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc19sbTgwX2V4aXQp\n" - "OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9sbTgzLmMgYi9kcml2ZXJzL2h3bW9uL2xtODMu\n" - "YwppbmRleCAxZmVkMjY1Li5jZDQ1YjlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL2xtODMu\n" - "YworKysgYi9kcml2ZXJzL2h3bW9uL2xtODMuYwpAQCAtNDMwLDE5ICs0MzAsOCBAQCBzdGF0aWMg\n" - "c3RydWN0IGxtODNfZGF0YSAqbG04M191cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikK\n" - "IAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19sbTgzX2luaXQo\n" - "dm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmxtODNfZHJpdmVyKTsKLX0KLQotc3Rh\n" - "dGljIHZvaWQgX19leGl0IHNlbnNvcnNfbG04M19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2\n" - "ZXIoJmxtODNfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKGxtODNfZHJpdmVyKTsKIAog\n" - "TU9EVUxFX0FVVEhPUigiSmVhbiBEZWx2YXJlIDxraGFsaUBsaW51eC1mci5vcmc+Iik7CiBNT0RV\n" - "TEVfREVTQ1JJUFRJT04oIkxNODMgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K\n" - "LW1vZHVsZV9pbml0KHNlbnNvcnNfbG04M19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG04\n" - "M19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG04NS5jIGIvZHJpdmVycy9od21v\n" - "bi9sbTg1LmMKaW5kZXggMjQwYjdmOS4uN2U0NmViYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21v\n" - "bi9sbTg1LmMKKysrIGIvZHJpdmVycy9od21vbi9sbTg1LmMKQEAgLTE2OTUsMjIgKzE2OTUsMTAg\n" - "QEAgc3RhdGljIHN0cnVjdCBsbTg1X2RhdGEgKmxtODVfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2\n" - "aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLQotc3RhdGljIGludCBfX2luaXQgc21fbG04\n" - "NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTg1X2RyaXZlcik7Ci19\n" - "Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbV9sbTg1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry\n" - "aXZlcigmbG04NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobG04NV9kcml2ZXIpOwog\n" - "CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7CiBNT0RVTEVfQVVUSE9SKCJQaGlsaXAgUG9rb3JueSA8\n" - "cHBva29ybnlAcGVuZ3VpbmNvbXB1dGluZy5jb20+LCAiCiAJIk1hcmdpdCBTY2h1YmVydC1XaGls\n" - "ZSA8bWFyZ2l0c3dAdC1vbmxpbmUuZGU+LCAiCiAJIkp1c3RpbiBUaGllc3NlbiA8anRoaWVzc2Vu\n" - "QHBlbmd1aW5jb21wdXRpbmcuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTg1LUIsIExN\n" - "ODUtQyBkcml2ZXIiKTsKLQotbW9kdWxlX2luaXQoc21fbG04NV9pbml0KTsKLW1vZHVsZV9leGl0\n" - "KHNtX2xtODVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtODcuYyBiL2RyaXZl\n" - "cnMvaHdtb24vbG04Ny5jCmluZGV4IGViZjRlZmQuLjA5MGY1ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZl\n" - "cnMvaHdtb24vbG04Ny5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG04Ny5jCkBAIC0xMDU0LDE5ICsx\n" - "MDU0LDggQEAgc3RhdGljIHN0cnVjdCBsbTg3X2RhdGEgKmxtODdfdXBkYXRlX2RldmljZShzdHJ1\n" - "Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0IHNl\n" - "bnNvcnNfbG04N19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTg3X2Ry\n" - "aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtODdfZXhpdCh2b2lkKQot\n" - "ewotCWkyY19kZWxfZHJpdmVyKCZsbTg3X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihs\n" - "bTg3X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgt\n" - "ZnIub3JnPiBhbmQgb3RoZXJzIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNODcgZHJpdmVyIik7\n" - "CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNfbG04N19pbml0\n" - "KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG04N19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv\n" - "aHdtb24vbG05MC5jIGIvZHJpdmVycy9od21vbi9sbTkwLmMKaW5kZXggZDJkZDVmOS4uMjQ4ZjJi\n" - "NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkwLmMKKysrIGIvZHJpdmVycy9od21vbi9s\n" - "bTkwLmMKQEAgLTE1MTQsMTkgKzE1MTQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG05\n" - "MF9kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMg\n" - "aW50IF9faW5pdCBzZW5zb3JzX2xtOTBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry\n" - "aXZlcigmbG05MF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgc2Vuc29yc19sbTkw\n" - "X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbG05MF9kcml2ZXIpOwotfQorbW9kdWxl\n" - "X2kyY19kcml2ZXIobG05MF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJKZWFuIERlbHZhcmUg\n" - "PGtoYWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE05MC9BRE0xMDMy\n" - "IGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3Jz\n" - "X2xtOTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtOTBfZXhpdCk7CmRpZmYgLS1naXQg\n" - "YS9kcml2ZXJzL2h3bW9uL2xtOTIuYyBiL2RyaXZlcnMvaHdtb24vbG05Mi5jCmluZGV4IDk1Y2Rh\n" - "NDEuLjBmZTJmMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbG05Mi5jCisrKyBiL2RyaXZl\n" - "cnMvaHdtb24vbG05Mi5jCkBAIC00MzIsMTkgKzQzMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry\n" - "aXZlciBsbTkyX2RyaXZlciA9IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAK\n" - "LXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbG05Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky\n" - "Y19hZGRfZHJpdmVyKCZsbTkyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5z\n" - "b3JzX2xtOTJfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTkyX2RyaXZlcik7Ci19\n" - "Cittb2R1bGVfaTJjX2RyaXZlcihsbTkyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4g\n" - "RGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJMTTky\n" - "L01BWDY2MzUgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0\n" - "KHNlbnNvcnNfbG05Ml9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbG05Ml9leGl0KTsKZGlm\n" - "ZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbG05My5jIGIvZHJpdmVycy9od21vbi9sbTkzLmMKaW5k\n" - "ZXggZDJmYzRhYy4uMjJhZTVmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9sbTkzLmMKKysr\n" - "IGIvZHJpdmVycy9od21vbi9sbTkzLmMKQEAgLTI3NjEsMjAgKzI3NjEsOSBAQCBzdGF0aWMgc3Ry\n" - "dWN0IGkyY19kcml2ZXIgbG05M19kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9p\n" - "MmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBsbTkzX2luaXQodm9pZCkKLXsKLQlyZXR1cm4g\n" - "aTJjX2FkZF9kcml2ZXIoJmxtOTNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGxt\n" - "OTNfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTkzX2RyaXZlcik7Ci19Cittb2R1\n" - "bGVfaTJjX2RyaXZlcihsbTkzX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIk1hcmsgTS4gSG9m\n" - "Zm1hbiA8bWhvZmZtYW5AbGlnaHRsaW5rLmNvbT4sICIKIAkJIkhhbnMgSi4gS29jaCA8aGprQGhh\n" - "bnNqa29jaC5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTE05MyBkcml2ZXIiKTsKIE1PRFVM\n" - "RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobG05M19pbml0KTsKLW1vZHVsZV9leGl0\n" - "KGxtOTNfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTUyNDEuYyBiL2RyaXZl\n" - "cnMvaHdtb24vbG05NTI0MS5jCmluZGV4IDcwYmNhNjcuLmJkOGNkYjcgMTAwNjQ0Ci0tLSBhL2Ry\n" - "aXZlcnMvaHdtb24vbG05NTI0MS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG05NTI0MS5jCkBAIC00\n" - "NTUsMTkgKzQ1NSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTk1MjQxX2RyaXZlciA9\n" - "IHsKIAkuYWRkcmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0\n" - "IHNlbnNvcnNfbG05NTI0MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZs\n" - "bTk1MjQxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtOTUyNDFf\n" - "ZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZsbTk1MjQxX2RyaXZlcik7Ci19Cittb2R1\n" - "bGVfaTJjX2RyaXZlcihsbTk1MjQxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRhdmlkZSBS\n" - "aXp6byA8ZWxwYS5yaXp6b0BnbWFpbC5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkxNOTUy\n" - "NDEgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5p\n" - "dChzZW5zb3JzX2xtOTUyNDFfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX2xtOTUyNDFfZXhp\n" - "dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2xtOTUyNDUuYyBiL2RyaXZlcnMvaHdtb24v\n" - "bG05NTI0NS5jCmluZGV4IDVlNWZjMWIuLjlhNDZjMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdt\n" - "b24vbG05NTI0NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbG05NTI0NS5jCkBAIC01MjUsMTkgKzUy\n" - "NSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsbTk1MjQ1X2RyaXZlciA9IHsKIAkuYWRk\n" - "cmVzc19saXN0CT0gbm9ybWFsX2kyYywKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNf\n" - "bG05NTI0NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsbTk1MjQ1X2Ry\n" - "aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX2xtOTUyNDVfZXhpdCh2b2lk\n" - "KQotewotCWkyY19kZWxfZHJpdmVyKCZsbTk1MjQ1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2Ry\n" - "aXZlcihsbTk1MjQ1X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkFsZXhhbmRlciBTdGVpbiA8\n" - "YWxleGFuZGVyLnN0ZWluQHN5c3RlYy1lbGVjdHJvbmljLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQ\n" - "VElPTigiTE05NTI0NSBzZW5zb3IgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0K\n" - "LW1vZHVsZV9pbml0KHNlbnNvcnNfbG05NTI0NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNf\n" - "bG05NTI0NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbHRjNDE1MS5jIGIvZHJp\n" - "dmVycy9od21vbi9sdGM0MTUxLmMKaW5kZXggNGFjMDZiNy4uZjY0NmI0NSAxMDA2NDQKLS0tIGEv\n" - "ZHJpdmVycy9od21vbi9sdGM0MTUxLmMKKysrIGIvZHJpdmVycy9od21vbi9sdGM0MTUxLmMKQEAg\n" - "LTIzOCwxOSArMjM4LDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIGx0YzQxNTFfZHJpdmVy\n" - "ID0gewogCS5pZF90YWJsZQk9IGx0YzQxNTFfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBs\n" - "dGM0MTUxX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJmx0YzQxNTFfZHJp\n" - "dmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IGx0YzQxNTFfZXhpdCh2b2lkKQotewotCWky\n" - "Y19kZWxfZHJpdmVyKCZsdGM0MTUxX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihsdGM0\n" - "MTUxX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlBlciBEYWxlbiA8cGVyLmRhbGVuQGFwcGVh\n" - "cnR2LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDE1MSBkcml2ZXIiKTsKIE1PRFVM\n" - "RV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDE1MV9pbml0KTsKLW1vZHVsZV9l\n" - "eGl0KGx0YzQxNTFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2x0YzQyMTUuYyBi\n" - "L2RyaXZlcnMvaHdtb24vbHRjNDIxNS5jCmluZGV4IGM3ZTZkOGUuLjA3ODliNjMgMTAwNjQ0Ci0t\n" - "LSBhL2RyaXZlcnMvaHdtb24vbHRjNDIxNS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbHRjNDIxNS5j\n" - "CkBAIC0zMDksMTkgKzMwOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0MjE1X2Ry\n" - "aXZlciA9IHsKIAkuaWRfdGFibGUJPSBsdGM0MjE1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2lu\n" - "aXQgbHRjNDIxNV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsdGM0MjE1\n" - "X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjE1X2V4aXQodm9pZCkKLXsK\n" - "LQlpMmNfZGVsX2RyaXZlcigmbHRjNDIxNV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIo\n" - "bHRjNDIxNV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJJcmEgVy4gU255ZGVyIDxpd3NAb3Zy\n" - "by5jYWx0ZWNoLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDIxNSBkcml2ZXIiKTsK\n" - "IE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDIxNV9pbml0KTsKLW1v\n" - "ZHVsZV9leGl0KGx0YzQyMTVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL2x0YzQy\n" - "NDUuYyBiL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jCmluZGV4IDY1OTMwODMuLjY5M2E2YmQgMTAw\n" - "NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbHRjNDI0NS5jCisrKyBiL2RyaXZlcnMvaHdtb24vbHRj\n" - "NDI0NS5jCkBAIC01NzgsMTkgKzU3OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGM0\n" - "MjQ1X2RyaXZlciA9IHsKIAkuaWRfdGFibGUJPSBsdGM0MjQ1X2lkLAogfTsKIAotc3RhdGljIGlu\n" - "dCBfX2luaXQgbHRjNDI0NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZs\n" - "dGM0MjQ1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjQ1X2V4aXQodm9p\n" - "ZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjNDI0NV9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k\n" - "cml2ZXIobHRjNDI0NV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJJcmEgVy4gU255ZGVyIDxp\n" - "d3NAb3Zyby5jYWx0ZWNoLmVkdT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTFRDNDI0NSBkcml2\n" - "ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQobHRjNDI0NV9pbml0\n" - "KTsKLW1vZHVsZV9leGl0KGx0YzQyNDVfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9u\n" - "L2x0YzQyNjEuYyBiL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jCmluZGV4IGNlNTIzNTUuLmFiMWJm\n" - "YmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vbHRjNDI2MS5jCisrKyBiL2RyaXZlcnMvaHdt\n" - "b24vbHRjNDI2MS5jCkBAIC0yOTcsMTkgKzI5Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZl\n" - "ciBsdGM0MjYxX2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBsdGM0MjYxX2lkLAogfTsKIAotc3Rh\n" - "dGljIGludCBfX2luaXQgbHRjNDI2MV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJp\n" - "dmVyKCZsdGM0MjYxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBsdGM0MjYxX2V4\n" - "aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjNDI2MV9kcml2ZXIpOwotfQorbW9kdWxl\n" - "X2kyY19kcml2ZXIobHRjNDI2MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJv\n" - "ZWNrIDxndWVudGVyLnJvZWNrQGVyaWNzc29uLmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigi\n" - "TFRDNDI2MSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxlX2luaXQo\n" - "bHRjNDI2MV9pbml0KTsKLW1vZHVsZV9leGl0KGx0YzQyNjFfZXhpdCk7CmRpZmYgLS1naXQgYS9k\n" - "cml2ZXJzL2h3bW9uL21heDE2MDY1LmMgYi9kcml2ZXJzL2h3bW9uL21heDE2MDY1LmMKaW5kZXgg\n" - "ZjhlMzIzYS4uNTFlZGFlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjA2NS5jCisr\n" - "KyBiL2RyaXZlcnMvaHdtb24vbWF4MTYwNjUuYwpAQCAtNjk5LDE5ICs2OTksOCBAQCBzdGF0aWMg\n" - "c3RydWN0IGkyY19kcml2ZXIgbWF4MTYwNjVfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IG1heDE2\n" - "MDY1X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgbWF4MTYwNjVfaW5pdCh2b2lkKQotewot\n" - "CXJldHVybiBpMmNfYWRkX2RyaXZlcigmbWF4MTYwNjVfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv\n" - "aWQgX19leGl0IG1heDE2MDY1X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4MTYw\n" - "NjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDE2MDY1X2RyaXZlcik7CiAKIE1P\n" - "RFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2sgPGd1ZW50ZXIucm9lY2tAZXJpY3Nzb24uY29tPiIp\n" - "OwogTU9EVUxFX0RFU0NSSVBUSU9OKCJNQVgxNjA2NSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF\n" - "KCJHUEwiKTsKLQotbW9kdWxlX2luaXQobWF4MTYwNjVfaW5pdCk7Ci1tb2R1bGVfZXhpdChtYXgx\n" - "NjA2NV9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTYxOS5jIGIvZHJpdmVy\n" - "cy9od21vbi9tYXgxNjE5LmMKaW5kZXggZjE5NTk5Zi4uZWNhYzA0YSAxMDA2NDQKLS0tIGEvZHJp\n" - "dmVycy9od21vbi9tYXgxNjE5LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjE5LmMKQEAgLTM2\n" - "MCwyMCArMzYwLDkgQEAgc3RhdGljIHN0cnVjdCBtYXgxNjE5X2RhdGEgKm1heDE2MTlfdXBkYXRl\n" - "X2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBp\n" - "bnQgX19pbml0IHNlbnNvcnNfbWF4MTYxOV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf\n" - "ZHJpdmVyKCZtYXgxNjE5X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3Jz\n" - "X21heDE2MTlfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZtYXgxNjE5X2RyaXZlcik7\n" - "Ci19Cittb2R1bGVfaTJjX2RyaXZlcihtYXgxNjE5X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1Io\n" - "IkFsZXhleSBGaXNoZXIgPGZpc2hvckBtYWlsLnJ1PiBhbmQgIgogCSJKZWFuIERlbHZhcmUgPGto\n" - "YWxpQGxpbnV4LWZyLm9yZz4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYMTYxOSBzZW5zb3Ig\n" - "ZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KHNlbnNvcnNf\n" - "bWF4MTYxOV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfbWF4MTYxOV9leGl0KTsKZGlmZiAt\n" - "LWdpdCBhL2RyaXZlcnMvaHdtb24vbWF4MTY2OC5jIGIvZHJpdmVycy9od21vbi9tYXgxNjY4LmMK\n" - "aW5kZXggODg5NTNmOS4uMTIyNDlmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9tYXgxNjY4\n" - "LmMKKysrIGIvZHJpdmVycy9od21vbi9tYXgxNjY4LmMKQEAgLTQ4NCwxOSArNDg0LDggQEAgc3Rh\n" - "dGljIHN0cnVjdCBpMmNfZHJpdmVyIG1heDE2NjhfZHJpdmVyID0gewogCS5hZGRyZXNzX2xpc3Qg\n" - "PSBtYXgxNjY4X2FkZHJfbGlzdCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHNlbnNvcnNfbWF4\n" - "MTY2OF9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgxNjY4X2RyaXZl\n" - "cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzZW5zb3JzX21heDE2NjhfZXhpdCh2b2lkKQot\n" - "ewotCWkyY19kZWxfZHJpdmVyKCZtYXgxNjY4X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl\n" - "cihtYXgxNjY4X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkRhdmlkIEdlb3JnZSA8ZGF2aWQu\n" - "Z2VvcmdlQHNrYS5hYy56YT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYMTY2OCByZW1vdGUg\n" - "dGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1t\n" - "b2R1bGVfaW5pdChzZW5zb3JzX21heDE2NjhfaW5pdCkKLW1vZHVsZV9leGl0KHNlbnNvcnNfbWF4\n" - "MTY2OF9leGl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXg2NjM5LmMgYi9kcml2ZXJz\n" - "L2h3bW9uL21heDY2MzkuYwppbmRleCBlMTBhMDkyLi5kMjAzZWIxIDEwMDY0NAotLS0gYS9kcml2\n" - "ZXJzL2h3bW9uL21heDY2MzkuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDY2MzkuYwpAQCAtNjM1\n" - "LDE5ICs2MzUsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4NjYzOV9kcml2ZXIgPSB7\n" - "CiAJLmFkZHJlc3NfbGlzdCA9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBt\n" - "YXg2NjM5X2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2MzlfZHJp\n" - "dmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDY2MzlfZXhpdCh2b2lkKQotewotCWky\n" - "Y19kZWxfZHJpdmVyKCZtYXg2NjM5X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihtYXg2\n" - "NjM5X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlJvbGFuZCBTdGlnZ2UgPHN0aWdnZUBhbnRj\n" - "b20uZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIm1heDY2MzkgZHJpdmVyIik7CiBNT0RVTEVf\n" - "TElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KG1heDY2MzlfaW5pdCk7Ci1tb2R1bGVfZXhp\n" - "dChtYXg2NjM5X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9tYXg2NjQyLmMgYi9k\n" - "cml2ZXJzL2h3bW9uL21heDY2NDIuYwppbmRleCAyMDllOGE1Li40Mjk4OTA5IDEwMDY0NAotLS0g\n" - "YS9kcml2ZXJzL2h3bW9uL21heDY2NDIuYworKysgYi9kcml2ZXJzL2h3bW9uL21heDY2NDIuYwpA\n" - "QCAtMzUyLDE5ICszNTIsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4NjY0Ml9kcml2\n" - "ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9f\n" - "aW5pdCBtYXg2NjQyX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2\n" - "NDJfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDY2NDJfZXhpdCh2b2lkKQot\n" - "ewotCWkyY19kZWxfZHJpdmVyKCZtYXg2NjQyX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZl\n" - "cihtYXg2NjQyX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIlBlciBEYWxlbiA8cGVyLmRhbGVu\n" - "QGFwcGVhcnR2LmNvbT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiTUFYNjY0MiBzZW5zb3IgZHJp\n" - "dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9pbml0KG1heDY2NDJfaW5p\n" - "dCk7Ci1tb2R1bGVfZXhpdChtYXg2NjQyX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21v\n" - "bi9tYXg2NjUwLmMgYi9kcml2ZXJzL2h3bW9uL21heDY2NTAuYwppbmRleCAxNTljZTAyLi4zMjk2\n" - "ZTZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL21heDY2NTAuYworKysgYi9kcml2ZXJzL2h3\n" - "bW9uL21heDY2NTAuYwpAQCAtNzI2LDE5ICs3MjYsOCBAQCBzdGF0aWMgc3RydWN0IG1heDY2NTBf\n" - "ZGF0YSAqbWF4NjY1MF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4g\n" - "ZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc2Vuc29yc19tYXg2NjUwX2luaXQodm9pZCkK\n" - "LXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJm1heDY2NTBfZHJpdmVyKTsKLX0KLQotc3RhdGlj\n" - "IHZvaWQgX19leGl0IHNlbnNvcnNfbWF4NjY1MF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2\n" - "ZXIoJm1heDY2NTBfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDY2NTBfZHJpdmVy\n" - "KTsKIAogTU9EVUxFX0FVVEhPUigiSGFucyBKLiBLb2NoIik7CiBNT0RVTEVfREVTQ1JJUFRJT04o\n" - "Ik1BWDY2NTAgc2Vuc29yIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1\n" - "bGVfaW5pdChzZW5zb3JzX21heDY2NTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX21heDY2\n" - "NTBfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BtYnVzL2FkbTEyNzUuYyBiL2Ry\n" - "aXZlcnMvaHdtb24vcG1idXMvYWRtMTI3NS5jCmluZGV4IDgxYzdjMmUuLmZlNTJjM2MgMTAwNjQ0\n" - "Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvYWRtMTI3NS5jCisrKyBiL2RyaXZlcnMvaHdtb24v\n" - "cG1idXMvYWRtMTI3NS5jCkBAIC0zMjYsMTggKzMyNiw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2Ry\n" - "aXZlciBhZG0xMjc1X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBhZG0xMjc1X2lkLAogfTsKIAot\n" - "c3RhdGljIGludCBfX2luaXQgYWRtMTI3NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRf\n" - "ZHJpdmVyKCZhZG0xMjc1X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBhZG0xMjc1\n" - "X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmYWRtMTI3NV9kcml2ZXIpOwotfQorbW9k\n" - "dWxlX2kyY19kcml2ZXIoYWRtMTI3NV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVy\n" - "IFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRyaXZlciBmb3IgQW5hbG9nIERl\n" - "dmljZXMgQURNMTI3NSBhbmQgY29tcGF0aWJsZXMiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsK\n" - "LW1vZHVsZV9pbml0KGFkbTEyNzVfaW5pdCk7Ci1tb2R1bGVfZXhpdChhZG0xMjc1X2V4aXQpOwpk\n" - "aWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmMgYi9kcml2ZXJzL2h3bW9u\n" - "L3BtYnVzL2xtMjUwNjYuYwppbmRleCA4NGEzN2YwLi44NmFjMTVhIDEwMDY0NAotLS0gYS9kcml2\n" - "ZXJzL2h3bW9uL3BtYnVzL2xtMjUwNjYuYworKysgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL2xtMjUw\n" - "NjYuYwpAQCAtMzM0LDE4ICszMzQsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbG0yNTA2\n" - "Nl9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gbG0yNTA2Nl9pZCwKIH07CiAKLXN0YXRpYyBpbnQg\n" - "X19pbml0IGxtMjUwNjZfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmbG0y\n" - "NTA2Nl9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbG0yNTA2Nl9leGl0KHZvaWQp\n" - "Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJmxtMjUwNjZfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJp\n" - "dmVyKGxtMjUwNjZfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwog\n" - "TU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9yIExNMjUwNjYvTE01MDY0L0xNNTA2\n" - "NiIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQobG0yNTA2Nl9pbml0KTsK\n" - "LW1vZHVsZV9leGl0KGxtMjUwNjZfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3Bt\n" - "YnVzL2x0YzI5NzguYyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCmluZGV4IDgyMGZm\n" - "ZjQuLmM5ZTRkZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCisr\n" - "KyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbHRjMjk3OC5jCkBAIC0zOTEsMTggKzM5MSw4IEBAIHN0\n" - "YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBsdGMyOTc4X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSBs\n" - "dGMyOTc4X2lkLAogfTsKIAotc3RhdGljIGludCBfX2luaXQgbHRjMjk3OF9pbml0KHZvaWQpCi17\n" - "Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZsdGMyOTc4X2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2\n" - "b2lkIF9fZXhpdCBsdGMyOTc4X2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbHRjMjk3\n" - "OF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobHRjMjk3OF9kcml2ZXIpOwogCiBNT0RV\n" - "TEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRy\n" - "aXZlciBmb3IgTFRDMjk3OCBhbmQgTFRDMzg4MCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwot\n" - "bW9kdWxlX2luaXQobHRjMjk3OF9pbml0KTsKLW1vZHVsZV9leGl0KGx0YzI5NzhfZXhpdCk7CmRp\n" - "ZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDE2MDY0LmMgYi9kcml2ZXJzL2h3bW9u\n" - "L3BtYnVzL21heDE2MDY0LmMKaW5kZXggMWQ3N2NmNC4uNWNmZTIwZiAxMDA2NDQKLS0tIGEvZHJp\n" - "dmVycy9od21vbi9wbWJ1cy9tYXgxNjA2NC5jCisrKyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbWF4\n" - "MTYwNjQuYwpAQCAtMTI2LDE4ICsxMjYsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgbWF4\n" - "MTYwNjRfZHJpdmVyID0gewogCS5pZF90YWJsZSA9IG1heDE2MDY0X2lkLAogfTsKIAotc3RhdGlj\n" - "IGludCBfX2luaXQgbWF4MTYwNjRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZl\n" - "cigmbWF4MTYwNjRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IG1heDE2MDY0X2V4\n" - "aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmbWF4MTYwNjRfZHJpdmVyKTsKLX0KK21vZHVs\n" - "ZV9pMmNfZHJpdmVyKG1heDE2MDY0X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkd1ZW50ZXIg\n" - "Um9lY2siKTsKIE1PRFVMRV9ERVNDUklQVElPTigiUE1CdXMgZHJpdmVyIGZvciBNYXhpbSBNQVgx\n" - "NjA2NCIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQobWF4MTYwNjRfaW5p\n" - "dCk7Ci1tb2R1bGVfZXhpdChtYXgxNjA2NF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdt\n" - "b24vcG1idXMvbWF4MzQ0NDAuYyBiL2RyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYwppbmRl\n" - "eCBiZWFmNWE4Li44OWFlMzAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0\n" - "NDQwLmMKKysrIGIvZHJpdmVycy9od21vbi9wbWJ1cy9tYXgzNDQ0MC5jCkBAIC0yNDgsMTggKzI0\n" - "OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBtYXgzNDQ0MF9kcml2ZXIgPSB7CiAJLmlk\n" - "X3RhYmxlID0gbWF4MzQ0NDBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBtYXgzNDQ0MF9p\n" - "bml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZtYXgzNDQ0MF9kcml2ZXIpOwot\n" - "fQotCi1zdGF0aWMgdm9pZCBfX2V4aXQgbWF4MzQ0NDBfZXhpdCh2b2lkKQotewotCWkyY19kZWxf\n" - "ZHJpdmVyKCZtYXgzNDQ0MF9kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIobWF4MzQ0NDBf\n" - "ZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NS\n" - "SVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9yIE1heGltIE1BWDM0NDQwL01BWDM0NDQxIik7CiBNT0RV\n" - "TEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdChtYXgzNDQ0MF9pbml0KTsKLW1vZHVsZV9l\n" - "eGl0KG1heDM0NDQwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1cy9tYXg4\n" - "Njg4LmMgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYwppbmRleCBlMmI3NGJiLi44MmM1\n" - "OThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYworKysgYi9kcml2\n" - "ZXJzL2h3bW9uL3BtYnVzL21heDg2ODguYwpAQCAtMjAzLDE4ICsyMDMsOCBAQCBzdGF0aWMgc3Ry\n" - "dWN0IGkyY19kcml2ZXIgbWF4ODY4OF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gbWF4ODY4OF9p\n" - "ZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IG1heDg2ODhfaW5pdCh2b2lkKQotewotCXJldHVy\n" - "biBpMmNfYWRkX2RyaXZlcigmbWF4ODY4OF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4\n" - "aXQgbWF4ODY4OF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJm1heDg2ODhfZHJpdmVy\n" - "KTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKG1heDg2ODhfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhP\n" - "UigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2ZXIgZm9y\n" - "IE1heGltIE1BWDg2ODgiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLW1vZHVsZV9pbml0KG1h\n" - "eDg2ODhfaW5pdCk7Ci1tb2R1bGVfZXhpdChtYXg4Njg4X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJp\n" - "dmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jIGIvZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jCmlu\n" - "ZGV4IDE4YTM4NWUuLmRhNWZlMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvcG1i\n" - "dXMuYworKysgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmMKQEAgLTIyNCwxOCArMjI0LDgg\n" - "QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHBtYnVzX2RyaXZlciA9IHsKIAkuaWRfdGFibGUg\n" - "PSBwbWJ1c19pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHBtYnVzX2luaXQodm9pZCkKLXsK\n" - "LQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnBtYnVzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lk\n" - "IF9fZXhpdCBwbWJ1c19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnBtYnVzX2RyaXZl\n" - "cik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcihwbWJ1c19kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9S\n" - "KCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIkdlbmVyaWMgUE1CdXMgZHJp\n" - "dmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdChwbWJ1c19pbml0KTsK\n" - "LW1vZHVsZV9leGl0KHBtYnVzX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9wbWJ1\n" - "cy91Y2Q5MDAwLmMgYi9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYwppbmRleCA0ZmY2Y2Yy\n" - "Li43NTlhNTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYworKysg\n" - "Yi9kcml2ZXJzL2h3bW9uL3BtYnVzL3VjZDkwMDAuYwpAQCAtMjU4LDE4ICsyNTgsOCBAQCBzdGF0\n" - "aWMgc3RydWN0IGkyY19kcml2ZXIgdWNkOTAwMF9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlID0gdWNk\n" - "OTAwMF9pZCwKIH07CiAKLXN0YXRpYyBpbnQgX19pbml0IHVjZDkwMDBfaW5pdCh2b2lkKQotewot\n" - "CXJldHVybiBpMmNfYWRkX2RyaXZlcigmdWNkOTAwMF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9p\n" - "ZCBfX2V4aXQgdWNkOTAwMF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnVjZDkwMDBf\n" - "ZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHVjZDkwMDBfZHJpdmVyKTsKIAogTU9EVUxF\n" - "X0FVVEhPUigiR3VlbnRlciBSb2VjayIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJQTUJ1cyBkcml2\n" - "ZXIgZm9yIFRJIFVDRDkweHh4Iik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5p\n" - "dCh1Y2Q5MDAwX2luaXQpOwotbW9kdWxlX2V4aXQodWNkOTAwMF9leGl0KTsKZGlmZiAtLWdpdCBh\n" - "L2RyaXZlcnMvaHdtb24vcG1idXMvdWNkOTIwMC5jIGIvZHJpdmVycy9od21vbi9wbWJ1cy91Y2Q5\n" - "MjAwLmMKaW5kZXggNmUxYzFhOC4uNjI5ZDBjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi9w\n" - "bWJ1cy91Y2Q5MjAwLmMKKysrIGIvZHJpdmVycy9od21vbi9wbWJ1cy91Y2Q5MjAwLmMKQEAgLTE5\n" - "MCwxOCArMTkwLDggQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHVjZDkyMDBfZHJpdmVyID0g\n" - "ewogCS5pZF90YWJsZSA9IHVjZDkyMDBfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB1Y2Q5\n" - "MjAwX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnVjZDkyMDBfZHJpdmVy\n" - "KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHVjZDkyMDBfZXhpdCh2b2lkKQotewotCWkyY19k\n" - "ZWxfZHJpdmVyKCZ1Y2Q5MjAwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih1Y2Q5MjAw\n" - "X2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIkd1ZW50ZXIgUm9lY2siKTsKIE1PRFVMRV9ERVND\n" - "UklQVElPTigiUE1CdXMgZHJpdmVyIGZvciBUSSBVQ0Q5MjJ4LCBVQ0Q5MjR4Iik7CiBNT0RVTEVf\n" - "TElDRU5TRSgiR1BMIik7Ci1tb2R1bGVfaW5pdCh1Y2Q5MjAwX2luaXQpOwotbW9kdWxlX2V4aXQo\n" - "dWNkOTIwMF9leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vcG1idXMvemw2MTAwLmMg\n" - "Yi9kcml2ZXJzL2h3bW9uL3BtYnVzL3psNjEwMC5jCmluZGV4IDQ4YzdiNGEuLjBiYjdiYmEgMTAw\n" - "NjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vcG1idXMvemw2MTAwLmMKKysrIGIvZHJpdmVycy9od21v\n" - "bi9wbWJ1cy96bDYxMDAuYwpAQCAtMjY4LDE4ICsyNjgsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19k\n" - "cml2ZXIgemw2MTAwX2RyaXZlciA9IHsKIAkuaWRfdGFibGUgPSB6bDYxMDBfaWQsCiB9OwogCi1z\n" - "dGF0aWMgaW50IF9faW5pdCB6bDYxMDBfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2Ry\n" - "aXZlcigmemw2MTAwX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB6bDYxMDBfZXhp\n" - "dCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ6bDYxMDBfZHJpdmVyKTsKLX0KK21vZHVsZV9p\n" - "MmNfZHJpdmVyKHpsNjEwMF9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNr\n" - "Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlBNQnVzIGRyaXZlciBmb3IgWkw2MTAwIGFuZCBjb21w\n" - "YXRpYmxlcyIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotbW9kdWxlX2luaXQoemw2MTAwX2lu\n" - "aXQpOwotbW9kdWxlX2V4aXQoemw2MTAwX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21v\n" - "bi9zaHQyMS5jIGIvZHJpdmVycy9od21vbi9zaHQyMS5jCmluZGV4IDE1Mzk4NzguLjZjMmRlZGUg\n" - "MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vc2h0MjEuYworKysgYi9kcml2ZXJzL2h3bW9uL3No\n" - "dDIxLmMKQEAgLTI2MSwyOCArMjYxLDcgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHNodDIx\n" - "X2RyaXZlciA9IHsKIAkuaWRfdGFibGUgICAgPSBzaHQyMV9pZCwKIH07CiAKLS8qKgotICogc2h0\n" - "MjFfaW5pdCgpIC0gaW5pdGlhbGl6ZSBkcml2ZXIKLSAqCi0gKiBDYWxsZWQgd2hlbiBrZXJuZWwg\n" - "aXMgYm9vdGVkIG9yIG1vZHVsZSBpcyBpbnNlcnRlZC4KLSAqIFJldHVybnMgMCBvbiBzdWNjZXNz\n" - "LgotICovCi1zdGF0aWMgaW50IF9faW5pdCBzaHQyMV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGky\n" - "Y19hZGRfZHJpdmVyKCZzaHQyMV9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQoc2h0MjFfaW5pdCk7\n" - "Ci0KLS8qKgotICogc2h0MjFfaW5pdCgpIC0gY2xlYW4gdXAgZHJpdmVyCi0gKgotICogQ2FsbGVk\n" - "IHdoZW4gbW9kdWxlIGlzIHJlbW92ZWQuCi0gKi8KLXN0YXRpYyB2b2lkIF9fZXhpdCBzaHQyMV9l\n" - "eGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnNodDIxX2RyaXZlcik7Ci19Ci1tb2R1bGVf\n" - "ZXhpdChzaHQyMV9leGl0KTsKK21vZHVsZV9pMmNfZHJpdmVyKHNodDIxX2RyaXZlcik7CiAKIE1P\n" - "RFVMRV9BVVRIT1IoIlVycyBGbGVpc2NoIDx1cnMuZmxlaXNjaEBzZW5zaXJpb24uY29tPiIpOwog\n" - "TU9EVUxFX0RFU0NSSVBUSU9OKCJTZW5zaXJpb24gU0hUMjEgaHVtaWRpdHkgYW5kIHRlbXBlcmF0\n" - "dXJlIHNlbnNvciBkcml2ZXIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vc21tNjY1LmMg\n" - "Yi9kcml2ZXJzL2h3bW9uL3NtbTY2NS5jCmluZGV4IDFiNDMwMWYuLjI0MzgyYzcgMTAwNjQ0Ci0t\n" - "LSBhL2RyaXZlcnMvaHdtb24vc21tNjY1LmMKKysrIGIvZHJpdmVycy9od21vbi9zbW02NjUuYwpA\n" - "QCAtNzE4LDE5ICs3MTgsOCBAQCBzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgc21tNjY1X2RyaXZl\n" - "ciA9IHsKIAkuaWRfdGFibGUgPSBzbW02NjVfaWQsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBz\n" - "bW02NjVfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmc21tNjY1X2RyaXZl\n" - "cik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbW02NjVfZXhpdCh2b2lkKQotewotCWkyY19k\n" - "ZWxfZHJpdmVyKCZzbW02NjVfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHNtbTY2NV9k\n" - "cml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJHdWVudGVyIFJvZWNrIik7CiBNT0RVTEVfREVTQ1JJ\n" - "UFRJT04oIlNNTTY2NSBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9kdWxl\n" - "X2luaXQoc21tNjY1X2luaXQpOwotbW9kdWxlX2V4aXQoc21tNjY1X2V4aXQpOwpkaWZmIC0tZ2l0\n" - "IGEvZHJpdmVycy9od21vbi9zbXNjNDdtMTkyLmMgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIu\n" - "YwppbmRleCA5NTc2MWJkLi4zMDdlNmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3Ntc2M0\n" - "N20xOTIuYworKysgYi9kcml2ZXJzL2h3bW9uL3Ntc2M0N20xOTIuYwpAQCAtNjY5LDE5ICs2Njks\n" - "OCBAQCBzdGF0aWMgc3RydWN0IHNtc2M0N20xOTJfZGF0YSAqc21zYzQ3bTE5Ml91cGRhdGVfZGV2\n" - "aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBf\n" - "X2luaXQgc21zYzQ3bTE5Ml9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZz\n" - "bXNjNDdtMTkyX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCBzbXNjNDdtMTkyX2V4\n" - "aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigmc21zYzQ3bTE5Ml9kcml2ZXIpOwotfQorbW9k\n" - "dWxlX2kyY19kcml2ZXIoc21zYzQ3bTE5Ml9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYXJ0\n" - "bXV0IFJpY2sgPGxpbnV4QHJpY2suY2xhcmFuZXQuZGU+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04o\n" - "IlNNU0M0N00xOTIgZHJpdmVyIik7CiBNT0RVTEVfTElDRU5TRSgiR1BMIik7Ci0KLW1vZHVsZV9p\n" - "bml0KHNtc2M0N20xOTJfaW5pdCk7Ci1tb2R1bGVfZXhpdChzbXNjNDdtMTkyX2V4aXQpOwpkaWZm\n" - "IC0tZ2l0IGEvZHJpdmVycy9od21vbi90aG1jNTAuYyBiL2RyaXZlcnMvaHdtb24vdGhtYzUwLmMK\n" - "aW5kZXggYTE5NTkxNC4uNTFkZGIzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi90aG1jNTAu\n" - "YworKysgYi9kcml2ZXJzL2h3bW9uL3RobWM1MC5jCkBAIC00ODIsMTggKzQ4Miw3IEBAIHN0YXRp\n" - "YyBzdHJ1Y3QgdGhtYzUwX2RhdGEgKnRobWM1MF91cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2Ug\n" - "KmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBfX2luaXQgc21fdGhtYzUwX2lu\n" - "aXQodm9pZCkKLXsKLQlyZXR1cm4gaTJjX2FkZF9kcml2ZXIoJnRobWM1MF9kcml2ZXIpOwotfQot\n" - "Ci1zdGF0aWMgdm9pZCBfX2V4aXQgc21fdGhtYzUwX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry\n" - "aXZlcigmdGhtYzUwX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih0aG1jNTBfZHJpdmVy\n" - "KTsKIAogTU9EVUxFX0FVVEhPUigiS3J6eXN6dG9mIEhlbHQgPGtyenlzenRvZi5oMUB3cC5wbD4i\n" - "KTsKIE1PRFVMRV9ERVNDUklQVElPTigiVEhNQzUwIGRyaXZlciIpOwotCi1tb2R1bGVfaW5pdChz\n" - "bV90aG1jNTBfaW5pdCk7Ci1tb2R1bGVfZXhpdChzbV90aG1jNTBfZXhpdCk7CmRpZmYgLS1naXQg\n" - "YS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jIGIvZHJpdmVycy9od21vbi90bXAxMDIuYwppbmRleCBj\n" - "MDhlZWUyLi4wZDQ2NmI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCisrKyBi\n" - "L2RyaXZlcnMvaHdtb24vdG1wMTAyLmMKQEAgLTI5MiwxNyArMjkyLDcgQEAgc3RhdGljIHN0cnVj\n" - "dCBpMmNfZHJpdmVyIHRtcDEwMl9kcml2ZXIgPSB7CiAJLmlkX3RhYmxlCT0gdG1wMTAyX2lkLAog\n" - "fTsKIAotc3RhdGljIGludCBfX2luaXQgdG1wMTAyX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj\n" - "X2FkZF9kcml2ZXIoJnRtcDEwMl9kcml2ZXIpOwotfQotbW9kdWxlX2luaXQodG1wMTAyX2luaXQp\n" - "OwotCi1zdGF0aWMgdm9pZCBfX2V4aXQgdG1wMTAyX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2Ry\n" - "aXZlcigmdG1wMTAyX2RyaXZlcik7Ci19Ci1tb2R1bGVfZXhpdCh0bXAxMDJfZXhpdCk7Cittb2R1\n" - "bGVfaTJjX2RyaXZlcih0bXAxMDJfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiU3RldmVuIEtp\n" - "bmcgPHNma2luZ0BmZHdkYy5jb20+Iik7CiBNT0RVTEVfREVTQ1JJUFRJT04oIlRleGFzIEluc3Ry\n" - "dW1lbnRzIFRNUDEwMiB0ZW1wZXJhdHVyZSBzZW5zb3IgZHJpdmVyIik7CmRpZmYgLS1naXQgYS9k\n" - "cml2ZXJzL2h3bW9uL3RtcDQwMS5jIGIvZHJpdmVycy9od21vbi90bXA0MDEuYwppbmRleCA4Yjlh\n" - "Nzc0Li45MmI3ZjFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDQwMS5jCisrKyBiL2Ry\n" - "aXZlcnMvaHdtb24vdG1wNDAxLmMKQEAgLTY2MiwxOSArNjYyLDggQEAgc3RhdGljIHN0cnVjdCBp\n" - "MmNfZHJpdmVyIHRtcDQwMV9kcml2ZXIgPSB7CiAJLmFkZHJlc3NfbGlzdAk9IG5vcm1hbF9pMmMs\n" - "CiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCB0bXA0MDFfaW5pdCh2b2lkKQotewotCXJldHVybiBp\n" - "MmNfYWRkX2RyaXZlcigmdG1wNDAxX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB0\n" - "bXA0MDFfZXhpdCh2b2lkKQotewotCWkyY19kZWxfZHJpdmVyKCZ0bXA0MDFfZHJpdmVyKTsKLX0K\n" - "K21vZHVsZV9pMmNfZHJpdmVyKHRtcDQwMV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJIYW5z\n" - "IGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJU\n" - "ZXhhcyBJbnN0cnVtZW50cyBUTVA0MDEgdGVtcGVyYXR1cmUgc2Vuc29yIGRyaXZlciIpOwogTU9E\n" - "VUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdCh0bXA0MDFfaW5pdCk7Ci1tb2R1bGVf\n" - "ZXhpdCh0bXA0MDFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jIGIv\n" - "ZHJpdmVycy9od21vbi90bXA0MjEuYwppbmRleCBjNDgzODFmLi44ZmFjODdhIDEwMDY0NAotLS0g\n" - "YS9kcml2ZXJzL2h3bW9uL3RtcDQyMS5jCisrKyBiL2RyaXZlcnMvaHdtb24vdG1wNDIxLmMKQEAg\n" - "LTMyNCwyMCArMzI0LDkgQEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHRtcDQyMV9kcml2ZXIg\n" - "PSB7CiAJLmFkZHJlc3NfbGlzdCA9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5p\n" - "dCB0bXA0MjFfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNfYWRkX2RyaXZlcigmdG1wNDIxX2Ry\n" - "aXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9fZXhpdCB0bXA0MjFfZXhpdCh2b2lkKQotewotCWky\n" - "Y19kZWxfZHJpdmVyKCZ0bXA0MjFfZHJpdmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHRtcDQy\n" - "MV9kcml2ZXIpOwogCiBNT0RVTEVfQVVUSE9SKCJBbmRyZSBQcmVuZGVsIDxhbmRyZS5wcmVuZGVs\n" - "QGdteC5kZT4iKTsKIE1PRFVMRV9ERVNDUklQVElPTigiVGV4YXMgSW5zdHJ1bWVudHMgVE1QNDIx\n" - "LzQyMi80MjMgdGVtcGVyYXR1cmUgc2Vuc29yIgogCQkgICAiIGRyaXZlciIpOwogTU9EVUxFX0xJ\n" - "Q0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdCh0bXA0MjFfaW5pdCk7Ci1tb2R1bGVfZXhpdCh0\n" - "bXA0MjFfZXhpdCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYyBiL2RyaXZl\n" - "cnMvaHdtb24vdzgzNzkxZC5jCmluZGV4IDY3OTE0NmQuLmI5MmYwMWYgMTAwNjQ0Ci0tLSBhL2Ry\n" - "aXZlcnMvaHdtb24vdzgzNzkxZC5jCisrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzkxZC5jCkBAIC0x\n" - "NjY4LDE5ICsxNjY4LDggQEAgc3RhdGljIHZvaWQgdzgzNzkxZF9wcmludF9kZWJ1ZyhzdHJ1Y3Qg\n" - "dzgzNzkxZF9kYXRhICpkYXRhLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiB9CiAjZW5kaWYKIAotc3Rh\n" - "dGljIGludCBfX2luaXQgc2Vuc29yc193ODM3OTFkX2luaXQodm9pZCkKLXsKLQlyZXR1cm4gaTJj\n" - "X2FkZF9kcml2ZXIoJnc4Mzc5MWRfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNl\n" - "bnNvcnNfdzgzNzkxZF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4Mzc5MWRfZHJp\n" - "dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4Mzc5MWRfZHJpdmVyKTsKIAogTU9EVUxFX0FV\n" - "VEhPUigiQ2hhcmxlcyBTcGlyYWtpcyA8YmV6YXVyQGdtYWlsLmNvbT4iKTsKIE1PRFVMRV9ERVND\n" - "UklQVElPTigiVzgzNzkxRCBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJHUEwiKTsKLQotbW9k\n" - "dWxlX2luaXQoc2Vuc29yc193ODM3OTFkX2luaXQpOwotbW9kdWxlX2V4aXQoc2Vuc29yc193ODM3\n" - "OTFkX2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTJkLmMgYi9kcml2ZXJz\n" - "L2h3bW9uL3c4Mzc5MmQuYwppbmRleCBlMzU2NjE4Li4xMTc1ZGNmIDEwMDY0NAotLS0gYS9kcml2\n" - "ZXJzL2h3bW9uL3c4Mzc5MmQuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYwpAQCAtMTcw\n" - "OCwyMiArMTcwOCw4IEBAIHN0YXRpYyB2b2lkIHc4Mzc5MmRfcHJpbnRfZGVidWcoc3RydWN0IHc4\n" - "Mzc5MmRfZGF0YSAqZGF0YSwgc3RydWN0IGRldmljZSAqZGV2KQogfQogI2VuZGlmCiAKLXN0YXRp\n" - "YyBpbnQgX19pbml0Ci1zZW5zb3JzX3c4Mzc5MmRfaW5pdCh2b2lkKQotewotCXJldHVybiBpMmNf\n" - "YWRkX2RyaXZlcigmdzgzNzkyZF9kcml2ZXIpOwotfQotCi1zdGF0aWMgdm9pZCBfX2V4aXQKLXNl\n" - "bnNvcnNfdzgzNzkyZF9leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4Mzc5MmRfZHJp\n" - "dmVyKTsKLX0KK21vZHVsZV9pMmNfZHJpdmVyKHc4Mzc5MmRfZHJpdmVyKTsKIAogTU9EVUxFX0FV\n" - "VEhPUigiQ2h1bmhhbyBIdWFuZyBAIFdpbmJvbmQgPERaU2hlbkBXaW5ib25kLmNvbS50dz4iKTsK\n" - "IE1PRFVMRV9ERVNDUklQVElPTigiVzgzNzkyQUQvRCBkcml2ZXIgZm9yIGxpbnV4LTIuNiIpOwog\n" - "TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5pdChzZW5zb3JzX3c4Mzc5MmRfaW5p\n" - "dCk7Ci1tb2R1bGVfZXhpdChzZW5zb3JzX3c4Mzc5MmRfZXhpdCk7Ci0KZGlmZiAtLWdpdCBhL2Ry\n" - "aXZlcnMvaHdtb24vdzgzNzkzLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCmluZGV4IDU5Mjlk\n" - "NDQuLjQ3Zjk3NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzNzkzLmMKKysrIGIvZHJp\n" - "dmVycy9od21vbi93ODM3OTMuYwpAQCAtMjE2OSwxOSArMjE2OSw4IEBAIEVORDoKIAlyZXR1cm4g\n" - "cmVzOwogfQogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX3c4Mzc5M19pbml0KHZvaWQpCi17\n" - "Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTNfZHJpdmVyKTsKLX0KLQotc3RhdGljIHZv\n" - "aWQgX19leGl0IHNlbnNvcnNfdzgzNzkzX2V4aXQodm9pZCkKLXsKLQlpMmNfZGVsX2RyaXZlcigm\n" - "dzgzNzkzX2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3OTNfZHJpdmVyKTsKIAog\n" - "TU9EVUxFX0FVVEhPUigiWXVhbiBNdSwgU3ZlbiBBbmRlcnMiKTsKIE1PRFVMRV9ERVNDUklQVElP\n" - "TigidzgzNzkzIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1bGVfaW5p\n" - "dChzZW5zb3JzX3c4Mzc5M19pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzkzX2V4aXQp\n" - "OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODM3OTUuYyBiL2RyaXZlcnMvaHdtb24vdzgz\n" - "Nzk1LmMKaW5kZXggYWE1OGIyNS4uZGViMTJjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9od21vbi93\n" - "ODM3OTUuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5NS5jCkBAIC0yMjQ0LDE5ICsyMjQ0LDgg\n" - "QEAgc3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHc4Mzc5NV9kcml2ZXIgPSB7CiAJLmFkZHJlc3Nf\n" - "bGlzdAk9IG5vcm1hbF9pMmMsCiB9OwogCi1zdGF0aWMgaW50IF9faW5pdCBzZW5zb3JzX3c4Mzc5\n" - "NV9pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODM3OTVfZHJpdmVyKTsK\n" - "LX0KLQotc3RhdGljIHZvaWQgX19leGl0IHNlbnNvcnNfdzgzNzk1X2V4aXQodm9pZCkKLXsKLQlp\n" - "MmNfZGVsX2RyaXZlcigmdzgzNzk1X2RyaXZlcik7Ci19Cittb2R1bGVfaTJjX2RyaXZlcih3ODM3\n" - "OTVfZHJpdmVyKTsKIAogTU9EVUxFX0FVVEhPUigiV2VpIFNvbmcsIEplYW4gRGVsdmFyZSA8a2hh\n" - "bGlAbGludXgtZnIub3JnPiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKCJXODM3OTVHL0FERyBoYXJk\n" - "d2FyZSBtb25pdG9yaW5nIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwotCi1tb2R1\n" - "bGVfaW5pdChzZW5zb3JzX3c4Mzc5NV9pbml0KTsKLW1vZHVsZV9leGl0KHNlbnNvcnNfdzgzNzk1\n" - "X2V4aXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi93ODNsNzg1dHMuYyBiL2RyaXZlcnMv\n" - "aHdtb24vdzgzbDc4NXRzLmMKaW5kZXggZWRmYzFlYy4uYmMwNzE0NCAxMDA2NDQKLS0tIGEvZHJp\n" - "dmVycy9od21vbi93ODNsNzg1dHMuYworKysgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODV0cy5jCkBA\n" - "IC0zMDIsMTkgKzMwMiw4IEBAIHN0YXRpYyBzdHJ1Y3QgdzgzbDc4NXRzX2RhdGEgKnc4M2w3ODV0\n" - "c191cGRhdGVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gZGF0YTsKIH0KIAot\n" - "c3RhdGljIGludCBfX2luaXQgc2Vuc29yc193ODNsNzg1dHNfaW5pdCh2b2lkKQotewotCXJldHVy\n" - "biBpMmNfYWRkX2RyaXZlcigmdzgzbDc4NXRzX2RyaXZlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIF9f\n" - "ZXhpdCBzZW5zb3JzX3c4M2w3ODV0c19leGl0KHZvaWQpCi17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4\n" - "M2w3ODV0c19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19kcml2ZXIodzgzbDc4NXRzX2RyaXZlcik7\n" - "CiAKIE1PRFVMRV9BVVRIT1IoIkplYW4gRGVsdmFyZSA8a2hhbGlAbGludXgtZnIub3JnPiIpOwog\n" - "TU9EVUxFX0RFU0NSSVBUSU9OKCJXODNMNzg1VFMtUyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNF\n" - "KCJHUEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODNsNzg1dHNfaW5pdCk7Ci1tb2R1bGVf\n" - "ZXhpdChzZW5zb3JzX3c4M2w3ODV0c19leGl0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24v\n" - "dzgzbDc4Nm5nLmMgYi9kcml2ZXJzL2h3bW9uL3c4M2w3ODZuZy5jCmluZGV4IDZlYWM1ZDkuLmE2\n" - "MzEwYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzbDc4Nm5nLmMKKysrIGIvZHJpdmVy\n" - "cy9od21vbi93ODNsNzg2bmcuYwpAQCAtODA2LDIxICs4MDYsOCBAQCBzdGF0aWMgc3RydWN0IHc4\n" - "M2w3ODZuZ19kYXRhICp3ODNsNzg2bmdfdXBkYXRlX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYp\n" - "CiAJcmV0dXJuIGRhdGE7CiB9CiAKLXN0YXRpYyBpbnQgX19pbml0Ci1zZW5zb3JzX3c4M2w3ODZu\n" - "Z19pbml0KHZvaWQpCi17Ci0JcmV0dXJuIGkyY19hZGRfZHJpdmVyKCZ3ODNsNzg2bmdfZHJpdmVy\n" - "KTsKLX0KLQotc3RhdGljIHZvaWQgX19leGl0Ci1zZW5zb3JzX3c4M2w3ODZuZ19leGl0KHZvaWQp\n" - "Ci17Ci0JaTJjX2RlbF9kcml2ZXIoJnc4M2w3ODZuZ19kcml2ZXIpOwotfQorbW9kdWxlX2kyY19k\n" - "cml2ZXIodzgzbDc4Nm5nX2RyaXZlcik7CiAKIE1PRFVMRV9BVVRIT1IoIktldmluIExvIik7CiBN\n" - "T0RVTEVfREVTQ1JJUFRJT04oInc4M2w3ODZuZyBkcml2ZXIiKTsKIE1PRFVMRV9MSUNFTlNFKCJH\n" - "UEwiKTsKLQotbW9kdWxlX2luaXQoc2Vuc29yc193ODNsNzg2bmdfaW5pdCk7Ci1tb2R1bGVfZXhp\n" - "dChzZW5zb3JzX3c4M2w3ODZuZ19leGl0KTsKLS0gCjEuNy41LjQKCgoKCl9fX19fX19fX19fX19f\n" - "X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxtLXNlbnNvcnMgbWFpbGluZyBsaXN0\n" - "CmxtLXNlbnNvcnNAbG0tc2Vuc29ycy5vcmcKaHR0cDovL2xpc3RzLmxtLXNlbnNvcnMub3JnL21h\n" - aWxtYW4vbGlzdGluZm8vbG0tc2Vuc29ycw= + "This patch converts the drivers in drivers/hwmon/* to use the\n" + "module_i2c_driver() macro which makes the code smaller and a bit simpler.\n" + "\n" + "Signed-off-by: Axel Lin <axel.lin@gmail.com>\n" + "Cc: Corentin Labbe <corentin.labbe@geomatys.fr>\n" + "Cc: Dirk Eibach <eibach@gdsys.de>\n" + "Cc: \"Mark M. Hoffman\" <mhoffman@lightlink.com>\n" + "Cc: Steve Glendinning <steve.glendinning@smsc.com>\n" + "Cc: Riku Voipio <riku.voipio@iki.fi>\n" + "Cc: Guillaume Ligneul <guillaume.ligneul@gmail.com>\n" + "Cc: David George <david.george@ska.ac.za>\n" + "Cc: \"Hans J. Koch\" <hjk@hansjkoch.de>\n" + "Cc: Marc Hulsman <m.hulsman@tudelft.nl>\n" + "Cc: Rudolf Marek <r.marek@assembler.cz>\n" + "---\n" + " drivers/hwmon/ad7414.c | 12 +-----------\n" + " drivers/hwmon/ad7418.c | 13 +------------\n" + " drivers/hwmon/adm1021.c | 13 +------------\n" + " drivers/hwmon/adm1025.c | 13 +------------\n" + " drivers/hwmon/adm1026.c | 13 +------------\n" + " drivers/hwmon/adm1029.c | 18 +-----------------\n" + " drivers/hwmon/adm1031.c | 13 +------------\n" + " drivers/hwmon/adm9240.c | 14 +-------------\n" + " drivers/hwmon/ads1015.c | 13 +------------\n" + " drivers/hwmon/adt7411.c | 12 +-----------\n" + " drivers/hwmon/adt7462.c | 13 +------------\n" + " drivers/hwmon/adt7470.c | 13 +------------\n" + " drivers/hwmon/adt7475.c | 13 +------------\n" + " drivers/hwmon/amc6821.c | 15 +--------------\n" + " drivers/hwmon/asb100.c | 13 +------------\n" + " drivers/hwmon/atxp1.c | 13 +------------\n" + " drivers/hwmon/ds1621.c | 14 +-------------\n" + " drivers/hwmon/ds620.c | 13 +------------\n" + " drivers/hwmon/emc1403.c | 13 +------------\n" + " drivers/hwmon/emc2103.c | 13 +------------\n" + " drivers/hwmon/emc6w201.c | 12 +-----------\n" + " drivers/hwmon/f75375s.c | 13 +------------\n" + " drivers/hwmon/fschmd.c | 13 +------------\n" + " drivers/hwmon/g760a.c | 15 +--------------\n" + " drivers/hwmon/gl518sm.c | 13 +------------\n" + " drivers/hwmon/gl520sm.c | 15 +--------------\n" + " drivers/hwmon/jc42.c | 13 +------------\n" + " drivers/hwmon/lineage-pem.c | 13 +------------\n" + " drivers/hwmon/lm63.c | 13 +------------\n" + " drivers/hwmon/lm73.c | 15 +--------------\n" + " drivers/hwmon/lm75.c | 17 +----------------\n" + " drivers/hwmon/lm77.c | 13 +------------\n" + " drivers/hwmon/lm80.c | 13 +------------\n" + " drivers/hwmon/lm83.c | 13 +------------\n" + " drivers/hwmon/lm85.c | 14 +-------------\n" + " drivers/hwmon/lm87.c | 13 +------------\n" + " drivers/hwmon/lm90.c | 13 +------------\n" + " drivers/hwmon/lm92.c | 13 +------------\n" + " drivers/hwmon/lm93.c | 13 +------------\n" + " drivers/hwmon/lm95241.c | 13 +------------\n" + " drivers/hwmon/lm95245.c | 13 +------------\n" + " drivers/hwmon/ltc4151.c | 13 +------------\n" + " drivers/hwmon/ltc4215.c | 13 +------------\n" + " drivers/hwmon/ltc4245.c | 13 +------------\n" + " drivers/hwmon/ltc4261.c | 13 +------------\n" + " drivers/hwmon/max16065.c | 13 +------------\n" + " drivers/hwmon/max1619.c | 13 +------------\n" + " drivers/hwmon/max1668.c | 13 +------------\n" + " drivers/hwmon/max6639.c | 13 +------------\n" + " drivers/hwmon/max6642.c | 13 +------------\n" + " drivers/hwmon/max6650.c | 13 +------------\n" + " drivers/hwmon/pmbus/adm1275.c | 12 +-----------\n" + " drivers/hwmon/pmbus/lm25066.c | 12 +-----------\n" + " drivers/hwmon/pmbus/ltc2978.c | 12 +-----------\n" + " drivers/hwmon/pmbus/max16064.c | 12 +-----------\n" + " drivers/hwmon/pmbus/max34440.c | 12 +-----------\n" + " drivers/hwmon/pmbus/max8688.c | 12 +-----------\n" + " drivers/hwmon/pmbus/pmbus.c | 12 +-----------\n" + " drivers/hwmon/pmbus/ucd9000.c | 12 +-----------\n" + " drivers/hwmon/pmbus/ucd9200.c | 12 +-----------\n" + " drivers/hwmon/pmbus/zl6100.c | 12 +-----------\n" + " drivers/hwmon/sht21.c | 23 +----------------------\n" + " drivers/hwmon/smm665.c | 13 +------------\n" + " drivers/hwmon/smsc47m192.c | 13 +------------\n" + " drivers/hwmon/thmc50.c | 13 +------------\n" + " drivers/hwmon/tmp102.c | 12 +-----------\n" + " drivers/hwmon/tmp401.c | 13 +------------\n" + " drivers/hwmon/tmp421.c | 13 +------------\n" + " drivers/hwmon/w83791d.c | 13 +------------\n" + " drivers/hwmon/w83792d.c | 16 +---------------\n" + " drivers/hwmon/w83793.c | 13 +------------\n" + " drivers/hwmon/w83795.c | 13 +------------\n" + " drivers/hwmon/w83l785ts.c | 13 +------------\n" + " drivers/hwmon/w83l786ng.c | 15 +--------------\n" + " 74 files changed, 74 insertions(+), 909 deletions(-)\n" + "\n" + "diff --git a/drivers/hwmon/ad7414.c b/drivers/hwmon/ad7414.c\n" + "index edbdb6d..3646500 100644\n" + "--- a/drivers/hwmon/ad7414.c\n" + "+++ b/drivers/hwmon/ad7414.c\n" + "@@ -256,17 +256,7 @@ static struct i2c_driver ad7414_driver = {\n" + " \t.id_table = ad7414_id,\n" + " };\n" + " \n" + "-static int __init ad7414_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&ad7414_driver);\n" + "-}\n" + "-module_init(ad7414_init);\n" + "-\n" + "-static void __exit ad7414_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&ad7414_driver);\n" + "-}\n" + "-module_exit(ad7414_exit);\n" + "+module_i2c_driver(ad7414_driver);\n" + " \n" + " MODULE_AUTHOR(\"Stefan Roese <sr at denx.de>, \"\n" + " \t \"Frank Edelhaeuser <frank.edelhaeuser at spansion.com>\");\n" + "diff --git a/drivers/hwmon/ad7418.c b/drivers/hwmon/ad7418.c\n" + "index 42461d1..a50a6be 100644\n" + "--- a/drivers/hwmon/ad7418.c\n" + "+++ b/drivers/hwmon/ad7418.c\n" + "@@ -295,20 +295,9 @@ static int ad7418_remove(struct i2c_client *client)\n" + " \treturn 0;\n" + " }\n" + " \n" + "-static int __init ad7418_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&ad7418_driver);\n" + "-}\n" + "-\n" + "-static void __exit ad7418_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&ad7418_driver);\n" + "-}\n" + "+module_i2c_driver(ad7418_driver);\n" + " \n" + " MODULE_AUTHOR(\"Alessandro Zummo <a.zummo@towertech.it>\");\n" + " MODULE_DESCRIPTION(\"AD7416/17/18 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + " MODULE_VERSION(DRV_VERSION);\n" + "-\n" + "-module_init(ad7418_init);\n" + "-module_exit(ad7418_exit);\n" + "diff --git a/drivers/hwmon/adm1021.c b/drivers/hwmon/adm1021.c\n" + "index e6fc006..ec84331 100644\n" + "--- a/drivers/hwmon/adm1021.c\n" + "+++ b/drivers/hwmon/adm1021.c\n" + "@@ -471,15 +471,7 @@ static struct adm1021_data *adm1021_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_adm1021_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&adm1021_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_adm1021_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&adm1021_driver);\n" + "-}\n" + "+module_i2c_driver(adm1021_driver);\n" + " \n" + " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl> and \"\n" + " \t\t\"Philip Edelbrock <phil@netroedge.com>\");\n" + "@@ -488,6 +480,3 @@ MODULE_LICENSE(\"GPL\");\n" + " \n" + " module_param(read_only, bool, 0);\n" + " MODULE_PARM_DESC(read_only, \"Don't set any values, read only mode\");\n" + "-\n" + "-module_init(sensors_adm1021_init)\n" + "-module_exit(sensors_adm1021_exit)\n" + "diff --git a/drivers/hwmon/adm1025.c b/drivers/hwmon/adm1025.c\n" + "index 14d8997..efbc9c9 100644\n" + "--- a/drivers/hwmon/adm1025.c\n" + "+++ b/drivers/hwmon/adm1025.c\n" + "@@ -618,19 +618,8 @@ static struct adm1025_data *adm1025_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_adm1025_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&adm1025_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_adm1025_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&adm1025_driver);\n" + "-}\n" + "+module_i2c_driver(adm1025_driver);\n" + " \n" + " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n" + " MODULE_DESCRIPTION(\"ADM1025 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_adm1025_init);\n" + "-module_exit(sensors_adm1025_exit);\n" + "diff --git a/drivers/hwmon/adm1026.c b/drivers/hwmon/adm1026.c\n" + "index cd773ce..1f4f5de 100644\n" + "--- a/drivers/hwmon/adm1026.c\n" + "+++ b/drivers/hwmon/adm1026.c\n" + "@@ -1881,20 +1881,9 @@ static int adm1026_remove(struct i2c_client *client)\n" + " \treturn 0;\n" + " }\n" + " \n" + "-static int __init sm_adm1026_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&adm1026_driver);\n" + "-}\n" + "-\n" + "-static void __exit sm_adm1026_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&adm1026_driver);\n" + "-}\n" + "+module_i2c_driver(adm1026_driver);\n" + " \n" + " MODULE_LICENSE(\"GPL\");\n" + " MODULE_AUTHOR(\"Philip Pokorny <ppokorny@penguincomputing.com>, \"\n" + " \t \"Justin Thiessen <jthiessen@penguincomputing.com>\");\n" + " MODULE_DESCRIPTION(\"ADM1026 driver\");\n" + "-\n" + "-module_init(sm_adm1026_init);\n" + "-module_exit(sm_adm1026_exit);\n" + "diff --git a/drivers/hwmon/adm1029.c b/drivers/hwmon/adm1029.c\n" + "index d789c33..c6531a8 100644\n" + "--- a/drivers/hwmon/adm1029.c\n" + "+++ b/drivers/hwmon/adm1029.c\n" + "@@ -450,24 +450,8 @@ static struct adm1029_data *adm1029_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-/*\n" + "-\tCommon module stuff\n" + "-*/\n" + "-static int __init sensors_adm1029_init(void)\n" + "-{\n" + "-\n" + "-\treturn i2c_add_driver(&adm1029_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_adm1029_exit(void)\n" + "-{\n" + "-\n" + "-\ti2c_del_driver(&adm1029_driver);\n" + "-}\n" + "+module_i2c_driver(adm1029_driver);\n" + " \n" + " MODULE_AUTHOR(\"Corentin LABBE <corentin.labbe@geomatys.fr>\");\n" + " MODULE_DESCRIPTION(\"adm1029 driver\");\n" + " MODULE_LICENSE(\"GPL v2\");\n" + "-\n" + "-module_init(sensors_adm1029_init);\n" + "-module_exit(sensors_adm1029_exit);\n" + "diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c\n" + "index 97e2cfb..71b5ec3 100644\n" + "--- a/drivers/hwmon/adm1031.c\n" + "+++ b/drivers/hwmon/adm1031.c\n" + "@@ -1131,19 +1131,8 @@ static struct adm1031_data *adm1031_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_adm1031_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&adm1031_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_adm1031_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&adm1031_driver);\n" + "-}\n" + "+module_i2c_driver(adm1031_driver);\n" + " \n" + " MODULE_AUTHOR(\"Alexandre d'Alton <alex@alexdalton.org>\");\n" + " MODULE_DESCRIPTION(\"ADM1031/ADM1030 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_adm1031_init);\n" + "-module_exit(sensors_adm1031_exit);\n" + "diff --git a/drivers/hwmon/adm9240.c b/drivers/hwmon/adm9240.c\n" + "index 2de4511..340b842 100644\n" + "--- a/drivers/hwmon/adm9240.c\n" + "+++ b/drivers/hwmon/adm9240.c\n" + "@@ -821,21 +821,9 @@ static struct adm9240_data *adm9240_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_adm9240_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&adm9240_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_adm9240_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&adm9240_driver);\n" + "-}\n" + "+module_i2c_driver(adm9240_driver);\n" + " \n" + " MODULE_AUTHOR(\"Michiel Rook <michiel@grendelproject.nl>, \"\n" + " \t\t\"Grant Coady <gcoady.lk@gmail.com> and others\");\n" + " MODULE_DESCRIPTION(\"ADM9240/DS1780/LM81 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_adm9240_init);\n" + "-module_exit(sensors_adm9240_exit);\n" + "-\n" + "diff --git a/drivers/hwmon/ads1015.c b/drivers/hwmon/ads1015.c\n" + "index eedca3c..60be358 100644\n" + "--- a/drivers/hwmon/ads1015.c\n" + "+++ b/drivers/hwmon/ads1015.c\n" + "@@ -306,19 +306,8 @@ static struct i2c_driver ads1015_driver = {\n" + " \t.id_table = ads1015_id,\n" + " };\n" + " \n" + "-static int __init sensors_ads1015_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&ads1015_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_ads1015_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&ads1015_driver);\n" + "-}\n" + "+module_i2c_driver(ads1015_driver);\n" + " \n" + " MODULE_AUTHOR(\"Dirk Eibach <eibach@gdsys.de>\");\n" + " MODULE_DESCRIPTION(\"ADS1015 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_ads1015_init);\n" + "-module_exit(sensors_ads1015_exit);\n" + "diff --git a/drivers/hwmon/adt7411.c b/drivers/hwmon/adt7411.c\n" + "index ffe64f8..71bacc5 100644\n" + "--- a/drivers/hwmon/adt7411.c\n" + "+++ b/drivers/hwmon/adt7411.c\n" + "@@ -348,17 +348,7 @@ static struct i2c_driver adt7411_driver = {\n" + " \t.class = I2C_CLASS_HWMON,\n" + " };\n" + " \n" + "-static int __init sensors_adt7411_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&adt7411_driver);\n" + "-}\n" + "-module_init(sensors_adt7411_init)\n" + "-\n" + "-static void __exit sensors_adt7411_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&adt7411_driver);\n" + "-}\n" + "-module_exit(sensors_adt7411_exit)\n" + "+module_i2c_driver(adt7411_driver);\n" + " \n" + " MODULE_AUTHOR(\"Sascha Hauer <s.hauer@pengutronix.de> and \"\n" + " \t\"Wolfram Sang <w.sang@pengutronix.de>\");\n" + "diff --git a/drivers/hwmon/adt7462.c b/drivers/hwmon/adt7462.c\n" + "index 3df331a..e4b1cc9 100644\n" + "--- a/drivers/hwmon/adt7462.c\n" + "+++ b/drivers/hwmon/adt7462.c\n" + "@@ -1974,19 +1974,8 @@ static int adt7462_remove(struct i2c_client *client)\n" + " \treturn 0;\n" + " }\n" + " \n" + "-static int __init adt7462_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&adt7462_driver);\n" + "-}\n" + "-\n" + "-static void __exit adt7462_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&adt7462_driver);\n" + "-}\n" + "+module_i2c_driver(adt7462_driver);\n" + " \n" + " MODULE_AUTHOR(\"Darrick J. Wong <djwong@us.ibm.com>\");\n" + " MODULE_DESCRIPTION(\"ADT7462 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(adt7462_init);\n" + "-module_exit(adt7462_exit);\n" + "diff --git a/drivers/hwmon/adt7470.c b/drivers/hwmon/adt7470.c\n" + "index b23efd9..54ec890 100644\n" + "--- a/drivers/hwmon/adt7470.c\n" + "+++ b/drivers/hwmon/adt7470.c\n" + "@@ -1317,19 +1317,8 @@ static int adt7470_remove(struct i2c_client *client)\n" + " \treturn 0;\n" + " }\n" + " \n" + "-static int __init adt7470_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&adt7470_driver);\n" + "-}\n" + "-\n" + "-static void __exit adt7470_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&adt7470_driver);\n" + "-}\n" + "+module_i2c_driver(adt7470_driver);\n" + " \n" + " MODULE_AUTHOR(\"Darrick J. Wong <djwong@us.ibm.com>\");\n" + " MODULE_DESCRIPTION(\"ADT7470 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(adt7470_init);\n" + "-module_exit(adt7470_exit);\n" + "diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c\n" + "index 71e9ac4..522cb76 100644\n" + "--- a/drivers/hwmon/adt7475.c\n" + "+++ b/drivers/hwmon/adt7475.c\n" + "@@ -1600,19 +1600,8 @@ static struct adt7475_data *adt7475_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_adt7475_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&adt7475_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_adt7475_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&adt7475_driver);\n" + "-}\n" + "+module_i2c_driver(adt7475_driver);\n" + " \n" + " MODULE_AUTHOR(\"Advanced Micro Devices, Inc\");\n" + " MODULE_DESCRIPTION(\"adt7475 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_adt7475_init);\n" + "-module_exit(sensors_adt7475_exit);\n" + "diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c\n" + "index 4a4bfef..5298855 100644\n" + "--- a/drivers/hwmon/amc6821.c\n" + "+++ b/drivers/hwmon/amc6821.c\n" + "@@ -1095,20 +1095,7 @@ static struct amc6821_data *amc6821_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-\n" + "-static int __init amc6821_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&amc6821_driver);\n" + "-}\n" + "-\n" + "-static void __exit amc6821_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&amc6821_driver);\n" + "-}\n" + "-\n" + "-module_init(amc6821_init);\n" + "-module_exit(amc6821_exit);\n" + "-\n" + "+module_i2c_driver(amc6821_driver);\n" + " \n" + " MODULE_LICENSE(\"GPL\");\n" + " MODULE_AUTHOR(\"T. Mertelj <tomaz.mertelj@guest.arnes.si>\");\n" + "diff --git a/drivers/hwmon/asb100.c b/drivers/hwmon/asb100.c\n" + "index a5f1642..573fff5 100644\n" + "--- a/drivers/hwmon/asb100.c\n" + "+++ b/drivers/hwmon/asb100.c\n" + "@@ -1002,19 +1002,8 @@ static struct asb100_data *asb100_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init asb100_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&asb100_driver);\n" + "-}\n" + "-\n" + "-static void __exit asb100_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&asb100_driver);\n" + "-}\n" + "+module_i2c_driver(asb100_driver);\n" + " \n" + " MODULE_AUTHOR(\"Mark M. Hoffman <mhoffman@lightlink.com>\");\n" + " MODULE_DESCRIPTION(\"ASB100 Bach driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(asb100_init);\n" + "-module_exit(asb100_exit);\n" + "diff --git a/drivers/hwmon/atxp1.c b/drivers/hwmon/atxp1.c\n" + "index d4a589b..5a671ca 100644\n" + "--- a/drivers/hwmon/atxp1.c\n" + "+++ b/drivers/hwmon/atxp1.c\n" + "@@ -390,15 +390,4 @@ static int atxp1_remove(struct i2c_client *client)\n" + " \treturn 0;\n" + " };\n" + " \n" + "-static int __init atxp1_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&atxp1_driver);\n" + "-};\n" + "-\n" + "-static void __exit atxp1_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&atxp1_driver);\n" + "-};\n" + "-\n" + "-module_init(atxp1_init);\n" + "-module_exit(atxp1_exit);\n" + "+module_i2c_driver(atxp1_driver);\n" + "diff --git a/drivers/hwmon/ds1621.c b/drivers/hwmon/ds1621.c\n" + "index e23a8ab..5dc5489 100644\n" + "--- a/drivers/hwmon/ds1621.c\n" + "+++ b/drivers/hwmon/ds1621.c\n" + "@@ -311,20 +311,8 @@ static struct i2c_driver ds1621_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init ds1621_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&ds1621_driver);\n" + "-}\n" + "-\n" + "-static void __exit ds1621_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&ds1621_driver);\n" + "-}\n" + "-\n" + "+module_i2c_driver(ds1621_driver);\n" + " \n" + " MODULE_AUTHOR(\"Christian W. Zuckschwerdt <zany@triq.net>\");\n" + " MODULE_DESCRIPTION(\"DS1621 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(ds1621_init);\n" + "-module_exit(ds1621_exit);\n" + "diff --git a/drivers/hwmon/ds620.c b/drivers/hwmon/ds620.c\n" + "index 300c3d4..50663ef 100644\n" + "--- a/drivers/hwmon/ds620.c\n" + "+++ b/drivers/hwmon/ds620.c\n" + "@@ -297,19 +297,8 @@ static struct i2c_driver ds620_driver = {\n" + " \t.id_table = ds620_id,\n" + " };\n" + " \n" + "-static int __init ds620_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&ds620_driver);\n" + "-}\n" + "-\n" + "-static void __exit ds620_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&ds620_driver);\n" + "-}\n" + "+module_i2c_driver(ds620_driver);\n" + " \n" + " MODULE_AUTHOR(\"Roland Stigge <stigge@antcom.de>\");\n" + " MODULE_DESCRIPTION(\"DS620 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(ds620_init);\n" + "-module_exit(ds620_exit);\n" + "diff --git a/drivers/hwmon/emc1403.c b/drivers/hwmon/emc1403.c\n" + "index 270ffab..99ac141 100644\n" + "--- a/drivers/hwmon/emc1403.c\n" + "+++ b/drivers/hwmon/emc1403.c\n" + "@@ -366,18 +366,7 @@ static struct i2c_driver sensor_emc1403 = {\n" + " \t.address_list = emc1403_address_list,\n" + " };\n" + " \n" + "-static int __init sensor_emc1403_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&sensor_emc1403);\n" + "-}\n" + "-\n" + "-static void __exit sensor_emc1403_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&sensor_emc1403);\n" + "-}\n" + "-\n" + "-module_init(sensor_emc1403_init);\n" + "-module_exit(sensor_emc1403_exit);\n" + "+module_i2c_driver(sensor_emc1403);\n" + " \n" + " MODULE_AUTHOR(\"Kalhan Trisal <kalhan.trisal@intel.com\");\n" + " MODULE_DESCRIPTION(\"emc1403 Thermal Driver\");\n" + "diff --git a/drivers/hwmon/emc2103.c b/drivers/hwmon/emc2103.c\n" + "index 8650639..0f51382 100644\n" + "--- a/drivers/hwmon/emc2103.c\n" + "+++ b/drivers/hwmon/emc2103.c\n" + "@@ -722,19 +722,8 @@ static struct i2c_driver emc2103_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init sensors_emc2103_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&emc2103_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_emc2103_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&emc2103_driver);\n" + "-}\n" + "+module_i2c_driver(emc2103_driver);\n" + " \n" + " MODULE_AUTHOR(\"Steve Glendinning <steve.glendinning@smsc.com>\");\n" + " MODULE_DESCRIPTION(\"SMSC EMC2103 hwmon driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_emc2103_init);\n" + "-module_exit(sensors_emc2103_exit);\n" + "diff --git a/drivers/hwmon/emc6w201.c b/drivers/hwmon/emc6w201.c\n" + "index 6ebb9b7..840f511 100644\n" + "--- a/drivers/hwmon/emc6w201.c\n" + "+++ b/drivers/hwmon/emc6w201.c\n" + "@@ -552,17 +552,7 @@ static struct i2c_driver emc6w201_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init sensors_emc6w201_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&emc6w201_driver);\n" + "-}\n" + "-module_init(sensors_emc6w201_init);\n" + "-\n" + "-static void __exit sensors_emc6w201_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&emc6w201_driver);\n" + "-}\n" + "-module_exit(sensors_emc6w201_exit);\n" + "+module_i2c_driver(emc6w201_driver);\n" + " \n" + " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n" + " MODULE_DESCRIPTION(\"SMSC EMC6W201 hardware monitoring driver\");\n" + "diff --git a/drivers/hwmon/f75375s.c b/drivers/hwmon/f75375s.c\n" + "index eedf574..398dbc8 100644\n" + "--- a/drivers/hwmon/f75375s.c\n" + "+++ b/drivers/hwmon/f75375s.c\n" + "@@ -858,19 +858,8 @@ static int f75375_detect(struct i2c_client *client,\n" + " \treturn 0;\n" + " }\n" + " \n" + "-static int __init sensors_f75375_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&f75375_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_f75375_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&f75375_driver);\n" + "-}\n" + "+module_i2c_driver(f75375_driver);\n" + " \n" + " MODULE_AUTHOR(\"Riku Voipio\");\n" + " MODULE_LICENSE(\"GPL\");\n" + " MODULE_DESCRIPTION(\"F75373/F75375/F75387 hardware monitoring driver\");\n" + "-\n" + "-module_init(sensors_f75375_init);\n" + "-module_exit(sensors_f75375_exit);\n" + "diff --git a/drivers/hwmon/fschmd.c b/drivers/hwmon/fschmd.c\n" + "index 06cbf77..35ddf6d 100644\n" + "--- a/drivers/hwmon/fschmd.c\n" + "+++ b/drivers/hwmon/fschmd.c\n" + "@@ -1341,20 +1341,9 @@ static struct fschmd_data *fschmd_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init fschmd_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&fschmd_driver);\n" + "-}\n" + "-\n" + "-static void __exit fschmd_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&fschmd_driver);\n" + "-}\n" + "+module_i2c_driver(fschmd_driver);\n" + " \n" + " MODULE_AUTHOR(\"Hans de Goede <hdegoede@redhat.com>\");\n" + " MODULE_DESCRIPTION(\"FSC Poseidon, Hermes, Scylla, Heracles, Heimdall, Hades \"\n" + " \t\t\t\"and Syleus driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(fschmd_init);\n" + "-module_exit(fschmd_exit);\n" + "diff --git a/drivers/hwmon/g760a.c b/drivers/hwmon/g760a.c\n" + "index 81b6e35..052e304 100644\n" + "--- a/drivers/hwmon/g760a.c\n" + "+++ b/drivers/hwmon/g760a.c\n" + "@@ -250,21 +250,8 @@ static int g760a_remove(struct i2c_client *client)\n" + " \treturn 0;\n" + " }\n" + " \n" + "-/* module management */\n" + "-\n" + "-static int __init g760a_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&g760a_driver);\n" + "-}\n" + "-\n" + "-static void __exit g760a_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&g760a_driver);\n" + "-}\n" + "+module_i2c_driver(g760a_driver);\n" + " \n" + " MODULE_AUTHOR(\"Herbert Valerio Riedel <hvr@gnu.org>\");\n" + " MODULE_DESCRIPTION(\"GMT G760A driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(g760a_init);\n" + "-module_exit(g760a_exit);\n" + "diff --git a/drivers/hwmon/gl518sm.c b/drivers/hwmon/gl518sm.c\n" + "index 8d0f71d..ae193f0 100644\n" + "--- a/drivers/hwmon/gl518sm.c\n" + "+++ b/drivers/hwmon/gl518sm.c\n" + "@@ -710,21 +710,10 @@ static struct gl518_data *gl518_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_gl518sm_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&gl518_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_gl518sm_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&gl518_driver);\n" + "-}\n" + "+module_i2c_driver(gl518_driver);\n" + " \n" + " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl>, \"\n" + " \t\"Kyosti Malkki <kmalkki@cc.hut.fi> and \"\n" + " \t\"Hong-Gunn Chew <hglinux@gunnet.org>\");\n" + " MODULE_DESCRIPTION(\"GL518SM driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_gl518sm_init);\n" + "-module_exit(sensors_gl518sm_exit);\n" + "diff --git a/drivers/hwmon/gl520sm.c b/drivers/hwmon/gl520sm.c\n" + "index 1909097..52dadb2 100644\n" + "--- a/drivers/hwmon/gl520sm.c\n" + "+++ b/drivers/hwmon/gl520sm.c\n" + "@@ -979,23 +979,10 @@ static struct gl520_data *gl520_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-\n" + "-static int __init sensors_gl520sm_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&gl520_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_gl520sm_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&gl520_driver);\n" + "-}\n" + "-\n" + "+module_i2c_driver(gl520_driver);\n" + " \n" + " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl>, \"\n" + " \t\"Ky\303\266sti M\303\244lkki <kmalkki@cc.hut.fi>, \"\n" + " \t\"Maarten Deprez <maartendeprez@users.sourceforge.net>\");\n" + " MODULE_DESCRIPTION(\"GL520SM driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_gl520sm_init);\n" + "-module_exit(sensors_gl520sm_exit);\n" + "diff --git a/drivers/hwmon/jc42.c b/drivers/hwmon/jc42.c\n" + "index 28c09ee..308346c 100644\n" + "--- a/drivers/hwmon/jc42.c\n" + "+++ b/drivers/hwmon/jc42.c\n" + "@@ -588,19 +588,8 @@ abort:\n" + " \treturn ret;\n" + " }\n" + " \n" + "-static int __init sensors_jc42_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&jc42_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_jc42_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&jc42_driver);\n" + "-}\n" + "+module_i2c_driver(jc42_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n" + " MODULE_DESCRIPTION(\"JC42 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_jc42_init);\n" + "-module_exit(sensors_jc42_exit);\n" + "diff --git a/drivers/hwmon/lineage-pem.c b/drivers/hwmon/lineage-pem.c\n" + "index 58eded2..5b8c9ae 100644\n" + "--- a/drivers/hwmon/lineage-pem.c\n" + "+++ b/drivers/hwmon/lineage-pem.c\n" + "@@ -568,19 +568,8 @@ static struct i2c_driver pem_driver = {\n" + " \t.id_table = pem_id,\n" + " };\n" + " \n" + "-static int __init pem_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&pem_driver);\n" + "-}\n" + "-\n" + "-static void __exit pem_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&pem_driver);\n" + "-}\n" + "+module_i2c_driver(pem_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n" + " MODULE_DESCRIPTION(\"Lineage CPL PEM hardware monitoring driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(pem_init);\n" + "-module_exit(pem_exit);\n" + "diff --git a/drivers/hwmon/lm63.c b/drivers/hwmon/lm63.c\n" + "index 5e6457a..15c05cc 100644\n" + "--- a/drivers/hwmon/lm63.c\n" + "+++ b/drivers/hwmon/lm63.c\n" + "@@ -1119,19 +1119,8 @@ static struct lm63_data *lm63_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_lm63_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm63_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm63_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm63_driver);\n" + "-}\n" + "+module_i2c_driver(lm63_driver);\n" + " \n" + " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n" + " MODULE_DESCRIPTION(\"LM63 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm63_init);\n" + "-module_exit(sensors_lm63_exit);\n" + "diff --git a/drivers/hwmon/lm73.c b/drivers/hwmon/lm73.c\n" + "index 9c8093c..8fa2632 100644\n" + "--- a/drivers/hwmon/lm73.c\n" + "+++ b/drivers/hwmon/lm73.c\n" + "@@ -194,21 +194,8 @@ static struct i2c_driver lm73_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-/* module glue */\n" + "-\n" + "-static int __init sensors_lm73_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm73_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm73_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm73_driver);\n" + "-}\n" + "+module_i2c_driver(lm73_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guillaume Ligneul <guillaume.ligneul@gmail.com>\");\n" + " MODULE_DESCRIPTION(\"LM73 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm73_init);\n" + "-module_exit(sensors_lm73_exit);\n" + "diff --git a/drivers/hwmon/lm75.c b/drivers/hwmon/lm75.c\n" + "index b3311b1..a83f206 100644\n" + "--- a/drivers/hwmon/lm75.c\n" + "+++ b/drivers/hwmon/lm75.c\n" + "@@ -438,23 +438,8 @@ abort:\n" + " \treturn ret;\n" + " }\n" + " \n" + "-/*-----------------------------------------------------------------------*/\n" + "-\n" + "-/* module glue */\n" + "-\n" + "-static int __init sensors_lm75_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm75_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm75_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm75_driver);\n" + "-}\n" + "+module_i2c_driver(lm75_driver);\n" + " \n" + " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl>\");\n" + " MODULE_DESCRIPTION(\"LM75 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm75_init);\n" + "-module_exit(sensors_lm75_exit);\n" + "diff --git a/drivers/hwmon/lm77.c b/drivers/hwmon/lm77.c\n" + "index 08f7ffe..d8c1f35 100644\n" + "--- a/drivers/hwmon/lm77.c\n" + "+++ b/drivers/hwmon/lm77.c\n" + "@@ -443,19 +443,8 @@ static struct lm77_data *lm77_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_lm77_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm77_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm77_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm77_driver);\n" + "-}\n" + "+module_i2c_driver(lm77_driver);\n" + " \n" + " MODULE_AUTHOR(\"Andras BALI <drewie@freemail.hu>\");\n" + " MODULE_DESCRIPTION(\"LM77 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm77_init);\n" + "-module_exit(sensors_lm77_exit);\n" + "diff --git a/drivers/hwmon/lm80.c b/drivers/hwmon/lm80.c\n" + "index dc6df4e..6a2a777 100644\n" + "--- a/drivers/hwmon/lm80.c\n" + "+++ b/drivers/hwmon/lm80.c\n" + "@@ -697,20 +697,9 @@ done:\n" + " \treturn ret;\n" + " }\n" + " \n" + "-static int __init sensors_lm80_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm80_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm80_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm80_driver);\n" + "-}\n" + "+module_i2c_driver(lm80_driver);\n" + " \n" + " MODULE_AUTHOR(\"Frodo Looijaard <frodol@dds.nl> and \"\n" + " \t\"Philip Edelbrock <phil@netroedge.com>\");\n" + " MODULE_DESCRIPTION(\"LM80 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm80_init);\n" + "-module_exit(sensors_lm80_exit);\n" + "diff --git a/drivers/hwmon/lm83.c b/drivers/hwmon/lm83.c\n" + "index 1fed265..cd45b9d 100644\n" + "--- a/drivers/hwmon/lm83.c\n" + "+++ b/drivers/hwmon/lm83.c\n" + "@@ -430,19 +430,8 @@ static struct lm83_data *lm83_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_lm83_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm83_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm83_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm83_driver);\n" + "-}\n" + "+module_i2c_driver(lm83_driver);\n" + " \n" + " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n" + " MODULE_DESCRIPTION(\"LM83 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm83_init);\n" + "-module_exit(sensors_lm83_exit);\n" + "diff --git a/drivers/hwmon/lm85.c b/drivers/hwmon/lm85.c\n" + "index 240b7f9..7e46ebb 100644\n" + "--- a/drivers/hwmon/lm85.c\n" + "+++ b/drivers/hwmon/lm85.c\n" + "@@ -1695,22 +1695,10 @@ static struct lm85_data *lm85_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-\n" + "-static int __init sm_lm85_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm85_driver);\n" + "-}\n" + "-\n" + "-static void __exit sm_lm85_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm85_driver);\n" + "-}\n" + "+module_i2c_driver(lm85_driver);\n" + " \n" + " MODULE_LICENSE(\"GPL\");\n" + " MODULE_AUTHOR(\"Philip Pokorny <ppokorny@penguincomputing.com>, \"\n" + " \t\"Margit Schubert-While <margitsw@t-online.de>, \"\n" + " \t\"Justin Thiessen <jthiessen@penguincomputing.com>\");\n" + " MODULE_DESCRIPTION(\"LM85-B, LM85-C driver\");\n" + "-\n" + "-module_init(sm_lm85_init);\n" + "-module_exit(sm_lm85_exit);\n" + "diff --git a/drivers/hwmon/lm87.c b/drivers/hwmon/lm87.c\n" + "index ebf4efd..090f5ef 100644\n" + "--- a/drivers/hwmon/lm87.c\n" + "+++ b/drivers/hwmon/lm87.c\n" + "@@ -1054,19 +1054,8 @@ static struct lm87_data *lm87_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_lm87_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm87_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm87_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm87_driver);\n" + "-}\n" + "+module_i2c_driver(lm87_driver);\n" + " \n" + " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org> and others\");\n" + " MODULE_DESCRIPTION(\"LM87 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm87_init);\n" + "-module_exit(sensors_lm87_exit);\n" + "diff --git a/drivers/hwmon/lm90.c b/drivers/hwmon/lm90.c\n" + "index d2dd5f9..248f2b4 100644\n" + "--- a/drivers/hwmon/lm90.c\n" + "+++ b/drivers/hwmon/lm90.c\n" + "@@ -1514,19 +1514,8 @@ static struct i2c_driver lm90_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init sensors_lm90_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm90_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm90_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm90_driver);\n" + "-}\n" + "+module_i2c_driver(lm90_driver);\n" + " \n" + " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n" + " MODULE_DESCRIPTION(\"LM90/ADM1032 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm90_init);\n" + "-module_exit(sensors_lm90_exit);\n" + "diff --git a/drivers/hwmon/lm92.c b/drivers/hwmon/lm92.c\n" + "index 95cda41..0fe2f37 100644\n" + "--- a/drivers/hwmon/lm92.c\n" + "+++ b/drivers/hwmon/lm92.c\n" + "@@ -432,19 +432,8 @@ static struct i2c_driver lm92_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init sensors_lm92_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm92_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm92_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm92_driver);\n" + "-}\n" + "+module_i2c_driver(lm92_driver);\n" + " \n" + " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n" + " MODULE_DESCRIPTION(\"LM92/MAX6635 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm92_init);\n" + "-module_exit(sensors_lm92_exit);\n" + "diff --git a/drivers/hwmon/lm93.c b/drivers/hwmon/lm93.c\n" + "index d2fc4ac..22ae5f0 100644\n" + "--- a/drivers/hwmon/lm93.c\n" + "+++ b/drivers/hwmon/lm93.c\n" + "@@ -2761,20 +2761,9 @@ static struct i2c_driver lm93_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init lm93_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm93_driver);\n" + "-}\n" + "-\n" + "-static void __exit lm93_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm93_driver);\n" + "-}\n" + "+module_i2c_driver(lm93_driver);\n" + " \n" + " MODULE_AUTHOR(\"Mark M. Hoffman <mhoffman@lightlink.com>, \"\n" + " \t\t\"Hans J. Koch <hjk@hansjkoch.de>\");\n" + " MODULE_DESCRIPTION(\"LM93 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(lm93_init);\n" + "-module_exit(lm93_exit);\n" + "diff --git a/drivers/hwmon/lm95241.c b/drivers/hwmon/lm95241.c\n" + "index 70bca67..bd8cdb7 100644\n" + "--- a/drivers/hwmon/lm95241.c\n" + "+++ b/drivers/hwmon/lm95241.c\n" + "@@ -455,19 +455,8 @@ static struct i2c_driver lm95241_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init sensors_lm95241_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm95241_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm95241_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm95241_driver);\n" + "-}\n" + "+module_i2c_driver(lm95241_driver);\n" + " \n" + " MODULE_AUTHOR(\"Davide Rizzo <elpa.rizzo@gmail.com>\");\n" + " MODULE_DESCRIPTION(\"LM95241 sensor driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm95241_init);\n" + "-module_exit(sensors_lm95241_exit);\n" + "diff --git a/drivers/hwmon/lm95245.c b/drivers/hwmon/lm95245.c\n" + "index 5e5fc1b..9a46c10 100644\n" + "--- a/drivers/hwmon/lm95245.c\n" + "+++ b/drivers/hwmon/lm95245.c\n" + "@@ -525,19 +525,8 @@ static struct i2c_driver lm95245_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init sensors_lm95245_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm95245_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_lm95245_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm95245_driver);\n" + "-}\n" + "+module_i2c_driver(lm95245_driver);\n" + " \n" + " MODULE_AUTHOR(\"Alexander Stein <alexander.stein@systec-electronic.com>\");\n" + " MODULE_DESCRIPTION(\"LM95245 sensor driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_lm95245_init);\n" + "-module_exit(sensors_lm95245_exit);\n" + "diff --git a/drivers/hwmon/ltc4151.c b/drivers/hwmon/ltc4151.c\n" + "index 4ac06b7..f646b45 100644\n" + "--- a/drivers/hwmon/ltc4151.c\n" + "+++ b/drivers/hwmon/ltc4151.c\n" + "@@ -238,19 +238,8 @@ static struct i2c_driver ltc4151_driver = {\n" + " \t.id_table\t= ltc4151_id,\n" + " };\n" + " \n" + "-static int __init ltc4151_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(<c4151_driver);\n" + "-}\n" + "-\n" + "-static void __exit ltc4151_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(<c4151_driver);\n" + "-}\n" + "+module_i2c_driver(ltc4151_driver);\n" + " \n" + " MODULE_AUTHOR(\"Per Dalen <per.dalen@appeartv.com>\");\n" + " MODULE_DESCRIPTION(\"LTC4151 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(ltc4151_init);\n" + "-module_exit(ltc4151_exit);\n" + "diff --git a/drivers/hwmon/ltc4215.c b/drivers/hwmon/ltc4215.c\n" + "index c7e6d8e..0789b63 100644\n" + "--- a/drivers/hwmon/ltc4215.c\n" + "+++ b/drivers/hwmon/ltc4215.c\n" + "@@ -309,19 +309,8 @@ static struct i2c_driver ltc4215_driver = {\n" + " \t.id_table\t= ltc4215_id,\n" + " };\n" + " \n" + "-static int __init ltc4215_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(<c4215_driver);\n" + "-}\n" + "-\n" + "-static void __exit ltc4215_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(<c4215_driver);\n" + "-}\n" + "+module_i2c_driver(ltc4215_driver);\n" + " \n" + " MODULE_AUTHOR(\"Ira W. Snyder <iws@ovro.caltech.edu>\");\n" + " MODULE_DESCRIPTION(\"LTC4215 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(ltc4215_init);\n" + "-module_exit(ltc4215_exit);\n" + "diff --git a/drivers/hwmon/ltc4245.c b/drivers/hwmon/ltc4245.c\n" + "index 6593083..693a6bd 100644\n" + "--- a/drivers/hwmon/ltc4245.c\n" + "+++ b/drivers/hwmon/ltc4245.c\n" + "@@ -578,19 +578,8 @@ static struct i2c_driver ltc4245_driver = {\n" + " \t.id_table\t= ltc4245_id,\n" + " };\n" + " \n" + "-static int __init ltc4245_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(<c4245_driver);\n" + "-}\n" + "-\n" + "-static void __exit ltc4245_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(<c4245_driver);\n" + "-}\n" + "+module_i2c_driver(ltc4245_driver);\n" + " \n" + " MODULE_AUTHOR(\"Ira W. Snyder <iws@ovro.caltech.edu>\");\n" + " MODULE_DESCRIPTION(\"LTC4245 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(ltc4245_init);\n" + "-module_exit(ltc4245_exit);\n" + "diff --git a/drivers/hwmon/ltc4261.c b/drivers/hwmon/ltc4261.c\n" + "index ce52355..ab1bfbf 100644\n" + "--- a/drivers/hwmon/ltc4261.c\n" + "+++ b/drivers/hwmon/ltc4261.c\n" + "@@ -297,19 +297,8 @@ static struct i2c_driver ltc4261_driver = {\n" + " \t.id_table = ltc4261_id,\n" + " };\n" + " \n" + "-static int __init ltc4261_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(<c4261_driver);\n" + "-}\n" + "-\n" + "-static void __exit ltc4261_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(<c4261_driver);\n" + "-}\n" + "+module_i2c_driver(ltc4261_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n" + " MODULE_DESCRIPTION(\"LTC4261 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(ltc4261_init);\n" + "-module_exit(ltc4261_exit);\n" + "diff --git a/drivers/hwmon/max16065.c b/drivers/hwmon/max16065.c\n" + "index f8e323a..51edae9 100644\n" + "--- a/drivers/hwmon/max16065.c\n" + "+++ b/drivers/hwmon/max16065.c\n" + "@@ -699,19 +699,8 @@ static struct i2c_driver max16065_driver = {\n" + " \t.id_table = max16065_id,\n" + " };\n" + " \n" + "-static int __init max16065_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&max16065_driver);\n" + "-}\n" + "-\n" + "-static void __exit max16065_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&max16065_driver);\n" + "-}\n" + "+module_i2c_driver(max16065_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck <guenter.roeck@ericsson.com>\");\n" + " MODULE_DESCRIPTION(\"MAX16065 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(max16065_init);\n" + "-module_exit(max16065_exit);\n" + "diff --git a/drivers/hwmon/max1619.c b/drivers/hwmon/max1619.c\n" + "index f19599f..ecac04a 100644\n" + "--- a/drivers/hwmon/max1619.c\n" + "+++ b/drivers/hwmon/max1619.c\n" + "@@ -360,20 +360,9 @@ static struct max1619_data *max1619_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_max1619_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&max1619_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_max1619_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&max1619_driver);\n" + "-}\n" + "+module_i2c_driver(max1619_driver);\n" + " \n" + " MODULE_AUTHOR(\"Alexey Fisher <fishor@mail.ru> and \"\n" + " \t\"Jean Delvare <khali@linux-fr.org>\");\n" + " MODULE_DESCRIPTION(\"MAX1619 sensor driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_max1619_init);\n" + "-module_exit(sensors_max1619_exit);\n" + "diff --git a/drivers/hwmon/max1668.c b/drivers/hwmon/max1668.c\n" + "index 88953f9..12249f7 100644\n" + "--- a/drivers/hwmon/max1668.c\n" + "+++ b/drivers/hwmon/max1668.c\n" + "@@ -484,19 +484,8 @@ static struct i2c_driver max1668_driver = {\n" + " \t.address_list = max1668_addr_list,\n" + " };\n" + " \n" + "-static int __init sensors_max1668_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&max1668_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_max1668_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&max1668_driver);\n" + "-}\n" + "+module_i2c_driver(max1668_driver);\n" + " \n" + " MODULE_AUTHOR(\"David George <david.george@ska.ac.za>\");\n" + " MODULE_DESCRIPTION(\"MAX1668 remote temperature sensor driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_max1668_init)\n" + "-module_exit(sensors_max1668_exit)\n" + "diff --git a/drivers/hwmon/max6639.c b/drivers/hwmon/max6639.c\n" + "index e10a092..d203eb1 100644\n" + "--- a/drivers/hwmon/max6639.c\n" + "+++ b/drivers/hwmon/max6639.c\n" + "@@ -635,19 +635,8 @@ static struct i2c_driver max6639_driver = {\n" + " \t.address_list = normal_i2c,\n" + " };\n" + " \n" + "-static int __init max6639_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&max6639_driver);\n" + "-}\n" + "-\n" + "-static void __exit max6639_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&max6639_driver);\n" + "-}\n" + "+module_i2c_driver(max6639_driver);\n" + " \n" + " MODULE_AUTHOR(\"Roland Stigge <stigge@antcom.de>\");\n" + " MODULE_DESCRIPTION(\"max6639 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(max6639_init);\n" + "-module_exit(max6639_exit);\n" + "diff --git a/drivers/hwmon/max6642.c b/drivers/hwmon/max6642.c\n" + "index 209e8a5..4298909 100644\n" + "--- a/drivers/hwmon/max6642.c\n" + "+++ b/drivers/hwmon/max6642.c\n" + "@@ -352,19 +352,8 @@ static struct i2c_driver max6642_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init max6642_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&max6642_driver);\n" + "-}\n" + "-\n" + "-static void __exit max6642_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&max6642_driver);\n" + "-}\n" + "+module_i2c_driver(max6642_driver);\n" + " \n" + " MODULE_AUTHOR(\"Per Dalen <per.dalen@appeartv.com>\");\n" + " MODULE_DESCRIPTION(\"MAX6642 sensor driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(max6642_init);\n" + "-module_exit(max6642_exit);\n" + "diff --git a/drivers/hwmon/max6650.c b/drivers/hwmon/max6650.c\n" + "index 159ce02..3296e6e 100644\n" + "--- a/drivers/hwmon/max6650.c\n" + "+++ b/drivers/hwmon/max6650.c\n" + "@@ -726,19 +726,8 @@ static struct max6650_data *max6650_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_max6650_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&max6650_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_max6650_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&max6650_driver);\n" + "-}\n" + "+module_i2c_driver(max6650_driver);\n" + " \n" + " MODULE_AUTHOR(\"Hans J. Koch\");\n" + " MODULE_DESCRIPTION(\"MAX6650 sensor driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_max6650_init);\n" + "-module_exit(sensors_max6650_exit);\n" + "diff --git a/drivers/hwmon/pmbus/adm1275.c b/drivers/hwmon/pmbus/adm1275.c\n" + "index 81c7c2e..fe52c3c 100644\n" + "--- a/drivers/hwmon/pmbus/adm1275.c\n" + "+++ b/drivers/hwmon/pmbus/adm1275.c\n" + "@@ -326,18 +326,8 @@ static struct i2c_driver adm1275_driver = {\n" + " \t.id_table = adm1275_id,\n" + " };\n" + " \n" + "-static int __init adm1275_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&adm1275_driver);\n" + "-}\n" + "-\n" + "-static void __exit adm1275_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&adm1275_driver);\n" + "-}\n" + "+module_i2c_driver(adm1275_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"PMBus driver for Analog Devices ADM1275 and compatibles\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-module_init(adm1275_init);\n" + "-module_exit(adm1275_exit);\n" + "diff --git a/drivers/hwmon/pmbus/lm25066.c b/drivers/hwmon/pmbus/lm25066.c\n" + "index 84a37f0..86ac15a 100644\n" + "--- a/drivers/hwmon/pmbus/lm25066.c\n" + "+++ b/drivers/hwmon/pmbus/lm25066.c\n" + "@@ -334,18 +334,8 @@ static struct i2c_driver lm25066_driver = {\n" + " \t.id_table = lm25066_id,\n" + " };\n" + " \n" + "-static int __init lm25066_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&lm25066_driver);\n" + "-}\n" + "-\n" + "-static void __exit lm25066_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&lm25066_driver);\n" + "-}\n" + "+module_i2c_driver(lm25066_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"PMBus driver for LM25066/LM5064/LM5066\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-module_init(lm25066_init);\n" + "-module_exit(lm25066_exit);\n" + "diff --git a/drivers/hwmon/pmbus/ltc2978.c b/drivers/hwmon/pmbus/ltc2978.c\n" + "index 820fff4..c9e4dd2 100644\n" + "--- a/drivers/hwmon/pmbus/ltc2978.c\n" + "+++ b/drivers/hwmon/pmbus/ltc2978.c\n" + "@@ -391,18 +391,8 @@ static struct i2c_driver ltc2978_driver = {\n" + " \t.id_table = ltc2978_id,\n" + " };\n" + " \n" + "-static int __init ltc2978_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(<c2978_driver);\n" + "-}\n" + "-\n" + "-static void __exit ltc2978_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(<c2978_driver);\n" + "-}\n" + "+module_i2c_driver(ltc2978_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"PMBus driver for LTC2978 and LTC3880\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-module_init(ltc2978_init);\n" + "-module_exit(ltc2978_exit);\n" + "diff --git a/drivers/hwmon/pmbus/max16064.c b/drivers/hwmon/pmbus/max16064.c\n" + "index 1d77cf4..5cfe20f 100644\n" + "--- a/drivers/hwmon/pmbus/max16064.c\n" + "+++ b/drivers/hwmon/pmbus/max16064.c\n" + "@@ -126,18 +126,8 @@ static struct i2c_driver max16064_driver = {\n" + " \t.id_table = max16064_id,\n" + " };\n" + " \n" + "-static int __init max16064_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&max16064_driver);\n" + "-}\n" + "-\n" + "-static void __exit max16064_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&max16064_driver);\n" + "-}\n" + "+module_i2c_driver(max16064_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"PMBus driver for Maxim MAX16064\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-module_init(max16064_init);\n" + "-module_exit(max16064_exit);\n" + "diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c\n" + "index beaf5a8..89ae303 100644\n" + "--- a/drivers/hwmon/pmbus/max34440.c\n" + "+++ b/drivers/hwmon/pmbus/max34440.c\n" + "@@ -248,18 +248,8 @@ static struct i2c_driver max34440_driver = {\n" + " \t.id_table = max34440_id,\n" + " };\n" + " \n" + "-static int __init max34440_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&max34440_driver);\n" + "-}\n" + "-\n" + "-static void __exit max34440_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&max34440_driver);\n" + "-}\n" + "+module_i2c_driver(max34440_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"PMBus driver for Maxim MAX34440/MAX34441\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-module_init(max34440_init);\n" + "-module_exit(max34440_exit);\n" + "diff --git a/drivers/hwmon/pmbus/max8688.c b/drivers/hwmon/pmbus/max8688.c\n" + "index e2b74bb..82c598d 100644\n" + "--- a/drivers/hwmon/pmbus/max8688.c\n" + "+++ b/drivers/hwmon/pmbus/max8688.c\n" + "@@ -203,18 +203,8 @@ static struct i2c_driver max8688_driver = {\n" + " \t.id_table = max8688_id,\n" + " };\n" + " \n" + "-static int __init max8688_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&max8688_driver);\n" + "-}\n" + "-\n" + "-static void __exit max8688_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&max8688_driver);\n" + "-}\n" + "+module_i2c_driver(max8688_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"PMBus driver for Maxim MAX8688\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-module_init(max8688_init);\n" + "-module_exit(max8688_exit);\n" + "diff --git a/drivers/hwmon/pmbus/pmbus.c b/drivers/hwmon/pmbus/pmbus.c\n" + "index 18a385e..da5fe36 100644\n" + "--- a/drivers/hwmon/pmbus/pmbus.c\n" + "+++ b/drivers/hwmon/pmbus/pmbus.c\n" + "@@ -224,18 +224,8 @@ static struct i2c_driver pmbus_driver = {\n" + " \t.id_table = pmbus_id,\n" + " };\n" + " \n" + "-static int __init pmbus_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&pmbus_driver);\n" + "-}\n" + "-\n" + "-static void __exit pmbus_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&pmbus_driver);\n" + "-}\n" + "+module_i2c_driver(pmbus_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"Generic PMBus driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-module_init(pmbus_init);\n" + "-module_exit(pmbus_exit);\n" + "diff --git a/drivers/hwmon/pmbus/ucd9000.c b/drivers/hwmon/pmbus/ucd9000.c\n" + "index 4ff6cf2..759a563 100644\n" + "--- a/drivers/hwmon/pmbus/ucd9000.c\n" + "+++ b/drivers/hwmon/pmbus/ucd9000.c\n" + "@@ -258,18 +258,8 @@ static struct i2c_driver ucd9000_driver = {\n" + " \t.id_table = ucd9000_id,\n" + " };\n" + " \n" + "-static int __init ucd9000_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&ucd9000_driver);\n" + "-}\n" + "-\n" + "-static void __exit ucd9000_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&ucd9000_driver);\n" + "-}\n" + "+module_i2c_driver(ucd9000_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"PMBus driver for TI UCD90xxx\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-module_init(ucd9000_init);\n" + "-module_exit(ucd9000_exit);\n" + "diff --git a/drivers/hwmon/pmbus/ucd9200.c b/drivers/hwmon/pmbus/ucd9200.c\n" + "index 6e1c1a8..629d0c9 100644\n" + "--- a/drivers/hwmon/pmbus/ucd9200.c\n" + "+++ b/drivers/hwmon/pmbus/ucd9200.c\n" + "@@ -190,18 +190,8 @@ static struct i2c_driver ucd9200_driver = {\n" + " \t.id_table = ucd9200_id,\n" + " };\n" + " \n" + "-static int __init ucd9200_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&ucd9200_driver);\n" + "-}\n" + "-\n" + "-static void __exit ucd9200_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&ucd9200_driver);\n" + "-}\n" + "+module_i2c_driver(ucd9200_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"PMBus driver for TI UCD922x, UCD924x\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-module_init(ucd9200_init);\n" + "-module_exit(ucd9200_exit);\n" + "diff --git a/drivers/hwmon/pmbus/zl6100.c b/drivers/hwmon/pmbus/zl6100.c\n" + "index 48c7b4a..0bb7bba 100644\n" + "--- a/drivers/hwmon/pmbus/zl6100.c\n" + "+++ b/drivers/hwmon/pmbus/zl6100.c\n" + "@@ -268,18 +268,8 @@ static struct i2c_driver zl6100_driver = {\n" + " \t.id_table = zl6100_id,\n" + " };\n" + " \n" + "-static int __init zl6100_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&zl6100_driver);\n" + "-}\n" + "-\n" + "-static void __exit zl6100_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&zl6100_driver);\n" + "-}\n" + "+module_i2c_driver(zl6100_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"PMBus driver for ZL6100 and compatibles\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-module_init(zl6100_init);\n" + "-module_exit(zl6100_exit);\n" + "diff --git a/drivers/hwmon/sht21.c b/drivers/hwmon/sht21.c\n" + "index 1539878..6c2dede 100644\n" + "--- a/drivers/hwmon/sht21.c\n" + "+++ b/drivers/hwmon/sht21.c\n" + "@@ -261,28 +261,7 @@ static struct i2c_driver sht21_driver = {\n" + " \t.id_table = sht21_id,\n" + " };\n" + " \n" + "-/**\n" + "- * sht21_init() - initialize driver\n" + "- *\n" + "- * Called when kernel is booted or module is inserted.\n" + "- * Returns 0 on success.\n" + "- */\n" + "-static int __init sht21_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&sht21_driver);\n" + "-}\n" + "-module_init(sht21_init);\n" + "-\n" + "-/**\n" + "- * sht21_init() - clean up driver\n" + "- *\n" + "- * Called when module is removed.\n" + "- */\n" + "-static void __exit sht21_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&sht21_driver);\n" + "-}\n" + "-module_exit(sht21_exit);\n" + "+module_i2c_driver(sht21_driver);\n" + " \n" + " MODULE_AUTHOR(\"Urs Fleisch <urs.fleisch@sensirion.com>\");\n" + " MODULE_DESCRIPTION(\"Sensirion SHT21 humidity and temperature sensor driver\");\n" + "diff --git a/drivers/hwmon/smm665.c b/drivers/hwmon/smm665.c\n" + "index 1b4301f..24382c7 100644\n" + "--- a/drivers/hwmon/smm665.c\n" + "+++ b/drivers/hwmon/smm665.c\n" + "@@ -718,19 +718,8 @@ static struct i2c_driver smm665_driver = {\n" + " \t.id_table = smm665_id,\n" + " };\n" + " \n" + "-static int __init smm665_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&smm665_driver);\n" + "-}\n" + "-\n" + "-static void __exit smm665_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&smm665_driver);\n" + "-}\n" + "+module_i2c_driver(smm665_driver);\n" + " \n" + " MODULE_AUTHOR(\"Guenter Roeck\");\n" + " MODULE_DESCRIPTION(\"SMM665 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(smm665_init);\n" + "-module_exit(smm665_exit);\n" + "diff --git a/drivers/hwmon/smsc47m192.c b/drivers/hwmon/smsc47m192.c\n" + "index 95761bd..307e6a6 100644\n" + "--- a/drivers/hwmon/smsc47m192.c\n" + "+++ b/drivers/hwmon/smsc47m192.c\n" + "@@ -669,19 +669,8 @@ static struct smsc47m192_data *smsc47m192_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init smsc47m192_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&smsc47m192_driver);\n" + "-}\n" + "-\n" + "-static void __exit smsc47m192_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&smsc47m192_driver);\n" + "-}\n" + "+module_i2c_driver(smsc47m192_driver);\n" + " \n" + " MODULE_AUTHOR(\"Hartmut Rick <linux@rick.claranet.de>\");\n" + " MODULE_DESCRIPTION(\"SMSC47M192 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(smsc47m192_init);\n" + "-module_exit(smsc47m192_exit);\n" + "diff --git a/drivers/hwmon/thmc50.c b/drivers/hwmon/thmc50.c\n" + "index a195914..51ddb37 100644\n" + "--- a/drivers/hwmon/thmc50.c\n" + "+++ b/drivers/hwmon/thmc50.c\n" + "@@ -482,18 +482,7 @@ static struct thmc50_data *thmc50_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sm_thmc50_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&thmc50_driver);\n" + "-}\n" + "-\n" + "-static void __exit sm_thmc50_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&thmc50_driver);\n" + "-}\n" + "+module_i2c_driver(thmc50_driver);\n" + " \n" + " MODULE_AUTHOR(\"Krzysztof Helt <krzysztof.h1@wp.pl>\");\n" + " MODULE_DESCRIPTION(\"THMC50 driver\");\n" + "-\n" + "-module_init(sm_thmc50_init);\n" + "-module_exit(sm_thmc50_exit);\n" + "diff --git a/drivers/hwmon/tmp102.c b/drivers/hwmon/tmp102.c\n" + "index c08eee2..0d466b9 100644\n" + "--- a/drivers/hwmon/tmp102.c\n" + "+++ b/drivers/hwmon/tmp102.c\n" + "@@ -292,17 +292,7 @@ static struct i2c_driver tmp102_driver = {\n" + " \t.id_table\t= tmp102_id,\n" + " };\n" + " \n" + "-static int __init tmp102_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&tmp102_driver);\n" + "-}\n" + "-module_init(tmp102_init);\n" + "-\n" + "-static void __exit tmp102_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&tmp102_driver);\n" + "-}\n" + "-module_exit(tmp102_exit);\n" + "+module_i2c_driver(tmp102_driver);\n" + " \n" + " MODULE_AUTHOR(\"Steven King <sfking@fdwdc.com>\");\n" + " MODULE_DESCRIPTION(\"Texas Instruments TMP102 temperature sensor driver\");\n" + "diff --git a/drivers/hwmon/tmp401.c b/drivers/hwmon/tmp401.c\n" + "index 8b9a774..92b7f1b 100644\n" + "--- a/drivers/hwmon/tmp401.c\n" + "+++ b/drivers/hwmon/tmp401.c\n" + "@@ -662,19 +662,8 @@ static struct i2c_driver tmp401_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init tmp401_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&tmp401_driver);\n" + "-}\n" + "-\n" + "-static void __exit tmp401_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&tmp401_driver);\n" + "-}\n" + "+module_i2c_driver(tmp401_driver);\n" + " \n" + " MODULE_AUTHOR(\"Hans de Goede <hdegoede@redhat.com>\");\n" + " MODULE_DESCRIPTION(\"Texas Instruments TMP401 temperature sensor driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(tmp401_init);\n" + "-module_exit(tmp401_exit);\n" + "diff --git a/drivers/hwmon/tmp421.c b/drivers/hwmon/tmp421.c\n" + "index c48381f..8fac87a 100644\n" + "--- a/drivers/hwmon/tmp421.c\n" + "+++ b/drivers/hwmon/tmp421.c\n" + "@@ -324,20 +324,9 @@ static struct i2c_driver tmp421_driver = {\n" + " \t.address_list = normal_i2c,\n" + " };\n" + " \n" + "-static int __init tmp421_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&tmp421_driver);\n" + "-}\n" + "-\n" + "-static void __exit tmp421_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&tmp421_driver);\n" + "-}\n" + "+module_i2c_driver(tmp421_driver);\n" + " \n" + " MODULE_AUTHOR(\"Andre Prendel <andre.prendel@gmx.de>\");\n" + " MODULE_DESCRIPTION(\"Texas Instruments TMP421/422/423 temperature sensor\"\n" + " \t\t \" driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(tmp421_init);\n" + "-module_exit(tmp421_exit);\n" + "diff --git a/drivers/hwmon/w83791d.c b/drivers/hwmon/w83791d.c\n" + "index 679146d..b92f01f 100644\n" + "--- a/drivers/hwmon/w83791d.c\n" + "+++ b/drivers/hwmon/w83791d.c\n" + "@@ -1668,19 +1668,8 @@ static void w83791d_print_debug(struct w83791d_data *data, struct device *dev)\n" + " }\n" + " #endif\n" + " \n" + "-static int __init sensors_w83791d_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&w83791d_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_w83791d_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&w83791d_driver);\n" + "-}\n" + "+module_i2c_driver(w83791d_driver);\n" + " \n" + " MODULE_AUTHOR(\"Charles Spirakis <bezaur@gmail.com>\");\n" + " MODULE_DESCRIPTION(\"W83791D driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_w83791d_init);\n" + "-module_exit(sensors_w83791d_exit);\n" + "diff --git a/drivers/hwmon/w83792d.c b/drivers/hwmon/w83792d.c\n" + "index e356618..1175dcf 100644\n" + "--- a/drivers/hwmon/w83792d.c\n" + "+++ b/drivers/hwmon/w83792d.c\n" + "@@ -1708,22 +1708,8 @@ static void w83792d_print_debug(struct w83792d_data *data, struct device *dev)\n" + " }\n" + " #endif\n" + " \n" + "-static int __init\n" + "-sensors_w83792d_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&w83792d_driver);\n" + "-}\n" + "-\n" + "-static void __exit\n" + "-sensors_w83792d_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&w83792d_driver);\n" + "-}\n" + "+module_i2c_driver(w83792d_driver);\n" + " \n" + " MODULE_AUTHOR(\"Chunhao Huang @ Winbond <DZShen@Winbond.com.tw>\");\n" + " MODULE_DESCRIPTION(\"W83792AD/D driver for linux-2.6\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_w83792d_init);\n" + "-module_exit(sensors_w83792d_exit);\n" + "-\n" + "diff --git a/drivers/hwmon/w83793.c b/drivers/hwmon/w83793.c\n" + "index 5929d44..47f975c 100644\n" + "--- a/drivers/hwmon/w83793.c\n" + "+++ b/drivers/hwmon/w83793.c\n" + "@@ -2169,19 +2169,8 @@ END:\n" + " \treturn res;\n" + " }\n" + " \n" + "-static int __init sensors_w83793_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&w83793_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_w83793_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&w83793_driver);\n" + "-}\n" + "+module_i2c_driver(w83793_driver);\n" + " \n" + " MODULE_AUTHOR(\"Yuan Mu, Sven Anders\");\n" + " MODULE_DESCRIPTION(\"w83793 driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_w83793_init);\n" + "-module_exit(sensors_w83793_exit);\n" + "diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c\n" + "index aa58b25..deb12c9 100644\n" + "--- a/drivers/hwmon/w83795.c\n" + "+++ b/drivers/hwmon/w83795.c\n" + "@@ -2244,19 +2244,8 @@ static struct i2c_driver w83795_driver = {\n" + " \t.address_list\t= normal_i2c,\n" + " };\n" + " \n" + "-static int __init sensors_w83795_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&w83795_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_w83795_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&w83795_driver);\n" + "-}\n" + "+module_i2c_driver(w83795_driver);\n" + " \n" + " MODULE_AUTHOR(\"Wei Song, Jean Delvare <khali@linux-fr.org>\");\n" + " MODULE_DESCRIPTION(\"W83795G/ADG hardware monitoring driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_w83795_init);\n" + "-module_exit(sensors_w83795_exit);\n" + "diff --git a/drivers/hwmon/w83l785ts.c b/drivers/hwmon/w83l785ts.c\n" + "index edfc1ec..bc07144 100644\n" + "--- a/drivers/hwmon/w83l785ts.c\n" + "+++ b/drivers/hwmon/w83l785ts.c\n" + "@@ -302,19 +302,8 @@ static struct w83l785ts_data *w83l785ts_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init sensors_w83l785ts_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&w83l785ts_driver);\n" + "-}\n" + "-\n" + "-static void __exit sensors_w83l785ts_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&w83l785ts_driver);\n" + "-}\n" + "+module_i2c_driver(w83l785ts_driver);\n" + " \n" + " MODULE_AUTHOR(\"Jean Delvare <khali@linux-fr.org>\");\n" + " MODULE_DESCRIPTION(\"W83L785TS-S driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_w83l785ts_init);\n" + "-module_exit(sensors_w83l785ts_exit);\n" + "diff --git a/drivers/hwmon/w83l786ng.c b/drivers/hwmon/w83l786ng.c\n" + "index 6eac5d9..a6310b8 100644\n" + "--- a/drivers/hwmon/w83l786ng.c\n" + "+++ b/drivers/hwmon/w83l786ng.c\n" + "@@ -806,21 +806,8 @@ static struct w83l786ng_data *w83l786ng_update_device(struct device *dev)\n" + " \treturn data;\n" + " }\n" + " \n" + "-static int __init\n" + "-sensors_w83l786ng_init(void)\n" + "-{\n" + "-\treturn i2c_add_driver(&w83l786ng_driver);\n" + "-}\n" + "-\n" + "-static void __exit\n" + "-sensors_w83l786ng_exit(void)\n" + "-{\n" + "-\ti2c_del_driver(&w83l786ng_driver);\n" + "-}\n" + "+module_i2c_driver(w83l786ng_driver);\n" + " \n" + " MODULE_AUTHOR(\"Kevin Lo\");\n" + " MODULE_DESCRIPTION(\"w83l786ng driver\");\n" + " MODULE_LICENSE(\"GPL\");\n" + "-\n" + "-module_init(sensors_w83l786ng_init);\n" + "-module_exit(sensors_w83l786ng_exit);\n" + "-- \n" + 1.7.5.4 -0bf3f07c97e9d184b153e0460758d0712f46c662d4f8382f7583cbf1ff8c3e28 +464d2b268879981eee20bf014a1cf2dfcb67637a33c4d6e316726a2e461d76b7
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.