small sysinst(8) without extended partitioning support
Rin Okuyama <[email protected]> Thu, 20 Sep 2018 18:04:40 +0900
| Newsgroups | gmane.os.netbsd.ports.atari,gmane.os.netbsd.current |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------39720A19D060170BB18E2AF7 Content-Type: text/plain; charset=us-ascii; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Hi, Although the recent floppy overflow for atari was gone, I expected that it surely occurs again in the near future. I propose to add NOPARTMAN option to sysinst(8), which drops extended partitioning support provided by partman.c. If this option is enabled, about 30KB is reduced for crunched binary for atari install floppy. It should be useful also for old ports with sysinst(8). It requires - separate extended partitioning stuffs from menu.mi to menu.pm - 8 extra #if(n)def's I've confirmed sysinst(8) with and without this option works on amd64. Any suggestions? Thanks, rin --------------39720A19D060170BB18E2AF7 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="sysinst_nopartman_20180920.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sysinst_nopartman_20180920.patch" SW5kZXg6IHVzci5zYmluL3N5c2luc3QvTWFrZWZpbGUuaW5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9ob21lL25ldGJzZC9zcmMvdXNyLnNiaW4vc3lzaW5zdC9NYWtlZmlsZS5pbmMs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTIKZGlmZiAtcCAtdSAtcjEuMTIgTWFrZWZpbGUu aW5jCi0tLSB1c3Iuc2Jpbi9zeXNpbnN0L01ha2VmaWxlLmluYwkxNiBTZXAgMjAxOCAwOTox NToxMiAtMDAwMAkxLjEyCisrKyB1c3Iuc2Jpbi9zeXNpbnN0L01ha2VmaWxlLmluYwkyMCBT ZXAgMjAxOCAwMDo1OTo0NiAtMDAwMApAQCAtMTMsMTggKzEzLDIyIEBAIFdBUk5TPQkJNAog CiBTUkNTKz0JbWVudV9kZWZzLmMgbXNnX2RlZnMuYyBtYWluLmMgaW5zdGFsbC5jIHVwZ3Jh ZGUuYyBcCiAJdHh0d2Fsay5jIHJ1bi5jIGZhY3Rvci5jIG5ldC5jIGRpc2tzLmMgZGlza3Nf bGZzLmMgdXRpbC5jIGdlb20uYyBcCi0JbGFiZWwuYyB0YXJnZXQuYyBtZC5jIHNpemVtdWx0 bmFtZS5jIGNvbmZpZ21lbnUuYyBjaGVja3JjLmMgcGFydG1hbi5jCisJbGFiZWwuYyB0YXJn ZXQuYyBtZC5jIHNpemVtdWx0bmFtZS5jIGNvbmZpZ21lbnUuYyBjaGVja3JjLmMKIAogU1JD Uys9CSR7TURfT1BUSU9OUzpNQU9VVDJFTEY6Uy9BT1VUMkVMRi9hb3V0MmVsZi5jL30KIFNS Q1MrPQkke01FTlVTX01EOk1tZW51cy5tYnI6Uy9tZW51cy5tYnIvbWJyLmMvfQogU1JDUys9 CSR7Q1BQRkxBR1M6TS1EV1NLQkQ6Uy8tRFdTS0JEL3dza2JkLmMvfQogU1JDUys9CSR7Tk9E SVNLTEFCRUw6RDpVYnNkZGlza2xhYmVsLmMgc2F2ZW5ld2xhYmVsLmN9CitTUkNTKz0JJHtO T1BBUlRNQU46RDpVcGFydG1hbi5jfQogCiBEUFNSQ1MrPSBkZWZzLmgKIAogU1lTSU5TVExB Tkc/PQllbgogTEFOR1VBR0VTPz0JZGUgZW4gZXMgZnIgcGwKIAorTUVOVVNfTUk9CW1lbnVz Lm1pCitNRU5VU19NSSs9CSR7Tk9QQVJUTUFOOkQ6VW1lbnVzLnBtfQorCiBNU0dfTUQ/PQlt c2cubWQuJHtTWVNJTlNUTEFOR30KIE1FTlVTX01EPz0JbWVudXMubWQuJHtTWVNJTlNUTEFO R30KIApAQCAtNDgsNyArNTIsOCBAQCBDQVRBTE9HRElSPQkvdXNyL3NoYXJlL3N5c2luc3Qv Y2F0YWxvZwogQ1BQRkxBR1MrPQktSS4gLUkkey5DVVJESVJ9Ly4uLy4uIC1JJHsuQ1VSRElS fSBcCiAJCS1EUkVMPVwiJHtESVNUUklCVkVSfVwiIC1ETUFDSD1cIiR7TUFDSElORX1cIiBc CiAJCS1ETUFDSF8ke01BQ0hJTkV9IC1EQVJDSF8ke01BQ0hJTkVfQVJDSH0gXAotCQkke05P RElTS0xBQkVMOkQtRE5PX0RJU0tMQUJFTH0KKwkJJHtOT0RJU0tMQUJFTDpELUROT19ESVNL TEFCRUx9IFwKKwkJJHtOT1BBUlRNQU46RC1ETk9fUEFSVE1BTn0KIAogLmlmIGRlZmluZWQo TkVUQlNEX09GRklDSUFMX1JFTEVBU0UpICYmICR7TkVUQlNEX09GRklDSUFMX1JFTEVBU0V9 ID09ICJ5ZXMiCiBDUFBGTEFHUys9IC1EU1lTSU5TVF9GVFBfSE9TVD1cImZ0cC5OZXRCU0Qu b3JnXCIgLURORVRCU0RfT0ZGSUNJQUxfUkVMRUFTRQpAQCAtMTY4LDcgKzE3Myw3IEBAIG1z Zy5kZWY6IG1zZy5taS4ke1NZU0lOU1RMQU5HfSAke01TR19NRH0KIAkke1RPT0xfU0VEfSAi cy9AQE1BQ0hJTkVAQC8ke01BQ0hJTkV9LyIgfCBcCiAJJHtUT09MX0FXS30gLWYgJHtVTklG X0FXS30gLXYgZGVmaW5lcz0iJHtNRF9PUFRJT05TfSIgPiAkey5UQVJHRVR9CiAKLW1lbnVz LmRlZjogbWVudXMubWkgJHtNRU5VU19NRH0gbXNndG91Y2gKK21lbnVzLmRlZjogJHtNRU5V U19NSX0gJHtNRU5VU19NRH0gbXNndG91Y2gKIAkke19NS1RBUkdFVF9DUkVBVEV9CiAJJHtU T09MX1NFRH0gInMvQEBWRVJTSU9OQEAvJHtESVNUUklCVkVSfS8iICR7LkFMTFNSQ30gfCBc CiAJJHtUT09MX1NFRH0gInMvQEBNQUNISU5FQEAvJHtNQUNISU5FfS8iIHwgXApJbmRleDog dXNyLnNiaW4vc3lzaW5zdC9kZWZzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2hvbWUv bmV0YnNkL3NyYy91c3Iuc2Jpbi9zeXNpbnN0L2RlZnMuaCx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4xOApkaWZmIC1wIC11IC1yMS4xOCBkZWZzLmgKLS0tIHVzci5zYmluL3N5c2luc3Qv ZGVmcy5oCTE2IFNlcCAyMDE4IDA5OjE1OjEyIC0wMDAwCTEuMTgKKysrIHVzci5zYmluL3N5 c2luc3QvZGVmcy5oCTIwIFNlcCAyMDE4IDA4OjM5OjQ5IC0wMDAwCkBAIC02MTMsOSArNjEz LDE2IEBAIHZvaWQJdW53aW5kX21vdW50cyh2b2lkKTsKIGludAl0YXJnZXRfbW91bnRlZCh2 b2lkKTsKIAogLyogZnJvbSBwYXJ0bWFuLmMgKi8KKyNpZm5kZWYgTk9fUEFSVE1BTgogaW50 IHBhcnRtYW4odm9pZCk7Ci1pbnQgcG1fcGFydHVzYWdlKHBtX2RldnNfdCAqLCBpbnQsIGlu dCk7CiBpbnQgcG1fZ2V0cmVmZGV2KHBtX2RldnNfdCAqKTsKK3ZvaWQgdXBkYXRlX3dlZGdl cyhjb25zdCBjaGFyICopOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgaW50IHBhcnRtYW4odm9p ZCkgeyByZXR1cm4gLTE7IH0KK3N0YXRpYyBpbmxpbmUgaW50IHBtX2dldHJlZmRldihwbV9k ZXZzX3QgKnggX191bnVzZWQpIHsgcmV0dXJuIC0xOyB9CisjZGVmaW5lIHVwZGF0ZV93ZWRn ZXMoeCkgX19ub3RoaW5nCisjZW5kaWYKK2ludCBwbV9wYXJ0dXNhZ2UocG1fZGV2c190ICos IGludCwgaW50KTsKIHZvaWQgcG1fc2V0ZnN0eXBlKHBtX2RldnNfdCAqLCBpbnQsIGludCk7 CiBpbnQgcG1fZWRpdHBhcnQoaW50KTsKIHZvaWQgcG1fcmVuYW1lKHBtX2RldnNfdCAqKTsK QEAgLTYyNiwxMyArNjMzLDE2IEBAIGludCBwbV9jZ2RfZWRpdCh2b2lkICosIHBhcnRfZW50 cnlfdCAqKTsKIGludCBwbV9ncHRfY29udmVydChwbV9kZXZzX3QgKik7CiB2b2lkIHBtX3dl ZGdlc19maWxsKHBtX2RldnNfdCAqKTsKIHZvaWQgcG1fbWFrZV9ic2RfcGFydGl0aW9ucyhw bV9kZXZzX3QgKik7Ci12b2lkIHVwZGF0ZV93ZWRnZXMoY29uc3QgY2hhciAqKTsKIAogLyog ZmxhZ3Mgd2hldGhlciB0byBvZmZlciB0aGUgcmVzcGVjdGl2ZSBvcHRpb25zIChkZXBlbmRp bmcgb24gaGVscGVyCiAgICBwcm9ncmFtcyBhdmFpbGFibGUgb24gaW5zdGFsbCBtZWRpYSAq LwogaW50IGhhdmVfcmFpZCwgaGF2ZV92bmQsIGhhdmVfY2dkLCBoYXZlX2x2bSwgaGF2ZV9n cHQsIGhhdmVfZGs7CiAvKiBpbml0aWFsaXplIGFib3ZlIHZhcmlhYmxlcyAqLworI2lmbmRl ZiBOT19QQVJUTUFOCiB2b2lkIGNoZWNrX2F2YWlsYWJsZV9iaW5hcmllcyh2b2lkKTsKKyNl bHNlCisjZGVmaW5lIGNoZWNrX2F2YWlsYWJsZV9iaW5hcmllcygpIF9fbm90aGluZworI2Vu ZGlmCiAKIC8qIGZyb20gYnNkZGlza2xhYmVsLmMgKi8KIGludAltYWtlX2JzZF9wYXJ0aXRp b25zKHZvaWQpOwpJbmRleDogdXNyLnNiaW4vc3lzaW5zdC9pbnN0YWxsLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL2hvbWUvbmV0YnNkL3NyYy91c3Iuc2Jpbi9zeXNpbnN0L2luc3Rh bGwuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40CmRpZmYgLXAgLXUgLXIxLjQgaW5zdGFs bC5jCi0tLSB1c3Iuc2Jpbi9zeXNpbnN0L2luc3RhbGwuYwkxMCBNYXkgMjAxNSAxMDoxNDow MiAtMDAwMAkxLjQKKysrIHVzci5zYmluL3N5c2luc3QvaW5zdGFsbC5jCTIwIFNlcCAyMDE4 IDAwOjQyOjA1IC0wMDAwCkBAIC00Nyw3ICs0NywxMSBAQCBkb19pbnN0YWxsKHZvaWQpCiB7 CiAJaW50IGZpbmRfZGlza3NfcmV0OwogCWludCByZXRjb2RlID0gMDsKKyNpZm5kZWYgTk9f UEFSVE1BTgogCXBhcnRtYW5fZ28gPSAtMTsKKyNlbHNlCisJcGFydG1hbl9nbyA9IDA7Cisj ZW5kaWYKIAogI2lmbmRlZiBERUJVRwogCW1zZ19kaXNwbGF5KE1TR19pbnN0YWxsdXN1cmUp OwpJbmRleDogdXNyLnNiaW4vc3lzaW5zdC9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2hvbWUvbmV0YnNkL3NyYy91c3Iuc2Jpbi9zeXNpbnN0L21haW4uYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS45CmRpZmYgLXAgLXUgLXIxLjkgbWFpbi5jCi0tLSB1c3Iuc2Jpbi9z eXNpbnN0L21haW4uYwkxMiBTZXAgMjAxOCAxMzo0NDowNSAtMDAwMAkxLjkKKysrIHVzci5z YmluL3N5c2luc3QvbWFpbi5jCTIwIFNlcCAyMDE4IDAxOjMwOjIwIC0wMDAwCkBAIC0xNzks NyArMTc5LDExIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCX0KIAogCS8qIGFy Z3YgcHJvY2Vzc2luZyAqLwotCXdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwgIkRy OmY6QzpwIikpICE9IC0xKQorCXdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwgIkRy OmY6QzoiCisjaWZuZGVmIE5PX1BBUlRNQU4KKwkgICAgInAiCisjZW5kaWYKKwkgICAgKSkg IT0gLTEpCiAJCXN3aXRjaChjaCkgewogCQljYXNlICdEJzoJLyogc2V0IHRvIGdldCBwYXN0 IGNlcnRhaW4gZXJyb3JzIGluIHRlc3RpbmcgKi8KIAkJCWRlYnVnID0gMTsKQEAgLTE5Niwx MCArMjAwLDEyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJLyogRGVmaW5l IGNvbG9ycyAqLwogCQkJc3NjYW5mKG9wdGFyZywgIiV1OiV1IiwgJmNscl9hcmcuYmcsICZj bHJfYXJnLmZnKTsKIAkJCWJyZWFrOworI2lmbmRlZiBOT19QQVJUTUFOCiAJCWNhc2UgJ3An OgogCQkJLyogUGFydGl0aW9uIHRvb2wgKi8KIAkJCXBhcnRtYW5fZ28gPSAxOwogCQkJYnJl YWs7CisjZW5kaWYKIAkJY2FzZSAnPyc6CiAJCWRlZmF1bHQ6CiAJCQl1c2FnZSgpOwpJbmRl eDogdXNyLnNiaW4vc3lzaW5zdC9tZW51cy5taQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv aG9tZS9uZXRic2Qvc3JjL3Vzci5zYmluL3N5c2luc3QvbWVudXMubWksdgpyZXRyaWV2aW5n IHJldmlzaW9uIDEuMTQKZGlmZiAtcCAtdSAtcjEuMTQgbWVudXMubWkKLS0tIHVzci5zYmlu L3N5c2luc3QvbWVudXMubWkJMTEgU2VwIDIwMTggMDg6MDU6MTggLTAwMDAJMS4xNAorKysg dXNyLnNiaW4vc3lzaW5zdC9tZW51cy5taQkyMCBTZXAgMjAxOCAwMToxMToyMCAtMDAwMApA QCAtODQsNiArODQsNyBAQCByZW1vdmVfc3ViX21lbnUoaW50IG1lbnVJRCkKIAl9CiB9CiAK KyNpZm5kZWYgTk9fUEFSVE1BTgogc3RhdGljIHZvaWQKIHJlbW92ZV9tZW51X29wdGlvbihp bnQgbWVudUlELCBjb25zdCBjaGFyICpvcHRpb24pCiB7CkBAIC0xMDEsNiArMTAyLDcgQEAg cmVtb3ZlX21lbnVfb3B0aW9uKGludCBtZW51SUQsIGNvbnN0IGNoYQogCQl9CiAJfQogfQor I2VuZGlmCiAKIHZvaWQKIHJlbW92ZV9jb2xvcl9vcHRpb25zKCkKQEAgLTExMyw2ICsxMTUs NyBAQCByZW1vdmVfY29sb3Jfb3B0aW9ucygpCiAJcmVtb3ZlX3N1Yl9tZW51KE1FTlVfY29s b3JzKTsKIH0KIAorI2lmbmRlZiBOT19QQVJUTUFOCiB2b2lkCiByZW1vdmVfcmFpZF9vcHRp b25zKCkKIHsKQEAgLTE1Miw2ICsxNTUsNyBAQCByZW1vdmVfY2dkX29wdGlvbnMoKQogCXJl bW92ZV9tZW51X29wdGlvbihNRU5VX3BtZGlza2VudHJ5LCBNU0dfZW5jcnlwdCk7CiAJcmVt b3ZlX21lbnVfb3B0aW9uKE1FTlVfcG1wYXJ0ZW50cnksIE1TR19lbmNyeXB0KTsKIH0KKyNl bmRpZgogCiB9CiAKQEAgLTI3MSw3ICsyNzUsMTMgQEAgbWVudSB1dGlsaXR5LCB0aXRsZSBN U0dfTmV0QlNEX1ZFUlNJT05fVQogCQkJbmV0d29ya191cCA9IDA7CiAJCQljb25maWdfbmV0 d29yaygpOwogCQl9OwotCW9wdGlvbiBNU0dfUGFydGl0aW9uX2FfZGlzaywgYWN0aW9uIHsg cGFydG1hbl9nbyA9IDE7IHBhcnRtYW4oKTsgfTsKKwlvcHRpb24gTVNHX1BhcnRpdGlvbl9h X2Rpc2ssCisJCWFjdGlvbiB7CisjaWZuZGVmIE5PX1BBUlRNQU4KKwkJCXBhcnRtYW5fZ28g PSAxOworCQkJcGFydG1hbigpOworI2VuZGlmCisJCX07CiAJb3B0aW9uIE1TR19Mb2dnaW5n X2Z1bmN0aW9ucywgYWN0aW9uIHsgZG9fbG9nZ2luZygpOyB9OwogCW9wdGlvbiBNU0dfQ29s b3Jfc2NoZW1lLCBzdWIgbWVudSBjb2xvcnM7CiAJb3B0aW9uIE1TR19IYWx0X3RoZV9zeXN0 ZW0sIGV4aXQsCkBAIC02MjIsMTM4ICs2MzIsMyBAQCBtZW51IHVzZXJzaCwgdGl0bGUgTVNH X1VzZXJfc2hlbGwsIG5vIGNsCiAJb3B0aW9uICIvYmluL3NoIiwgIGV4aXQsIGFjdGlvbiB7 IHVzaGVsbCA9ICIvYmluL3NoIjt9OyAKIAlvcHRpb24gIi9iaW4va3NoIiwgZXhpdCwgYWN0 aW9uIHsgdXNoZWxsID0gIi9iaW4va3NoIjt9OwogCW9wdGlvbiAiL2Jpbi9jc2giLCBleGl0 LCBhY3Rpb24geyB1c2hlbGwgPSAiL2Jpbi9jc2giO307Ci0KLQotbWVudSBwbWRpc2tlbnRy eSwgeD01MCwgeT01LCBleGl0LCBkZWZhdWx0IGV4aXQ7Ci0Jb3B0aW9uIE1TR19lZGl0YnNk cGFydCwgZXhpdCwgYWN0aW9uIHsgcG1fbWFrZV9ic2RfcGFydGl0aW9ucyhwbSk7IH07Ci0J b3B0aW9uIE1TR19lZGl0bWJyLAkJZXhpdCwgYWN0aW9uIHsgbWRfZ2V0X2luZm8oKTsKLQkJ CQkJCQkJCQkJbWRfcHJlX2Rpc2tsYWJlbCgpOwotCQkJCQkJCQkJCQltZW1zZXQoJnBtLT5i c2RsYWJlbCwgMCwgc2l6ZW9mIHBtLT5ic2RsYWJlbCk7fTsKLQlvcHRpb24gTVNHX3N3aXRj aGdwdCwJZXhpdCwgYWN0aW9uIHsgaWYgKHBtX2dwdF9jb252ZXJ0KHBtKSA9PSAwKQotCQkJ CQkJCQkJCQkJcG1fcGFydHVzYWdlKHBtLCAtMSwgMSk7IH07Ci0Jb3B0aW9uIE1TR19yZW5h bWVkaXNrLAlleGl0LCBhY3Rpb24geyBwbS0+dW5zYXZlZCA9IDE7IHBtX3JlbmFtZShwbSk7 IH07Ci0Jb3B0aW9uIE1TR19mbXRhc3JhaWQsCWV4aXQsIGFjdGlvbiB7IHBtLT51bnNhdmVk ID0gMTsKLQkJCQkJCQkJCQkJcG1fcGFydHVzYWdlKHBtLCAtMSwgMSk7Ci0JCQkJCQkJCQkJ CWxheW91dGtpbmQgPSBMWV9ORVdSQUlEOwotCQkJCQkJCQkJCQltZF9tYWtlX2JzZF9wYXJ0 aXRpb25zKCk7fTsKLQlvcHRpb24gTVNHX2ZtdGFzbHZtLAlleGl0LCBhY3Rpb24geyBwbS0+ dW5zYXZlZCA9IDE7Ci0JCQkJCQkJCQkJCXBtX3BhcnR1c2FnZShwbSwgLTEsIDEpOwotCQkJ CQkJCQkJCQlsYXlvdXRraW5kID0gTFlfTkVXTFZNOwotCQkJCQkJCQkJCQltZF9tYWtlX2Jz ZF9wYXJ0aXRpb25zKCk7IH07Ci0Jb3B0aW9uIE1TR19lbmNyeXB0LAkJZXhpdCwgYWN0aW9u IHsgcG0tPnVuc2F2ZWQgPSAxOwotCQkJCQkJCQkJCQlwbV9wYXJ0dXNhZ2UocG0sIC0xLCAx KTsKLQkJCQkJCQkJCQkJbGF5b3V0a2luZCA9IExZX05FV0NHRDsKLQkJCQkJCQkJCQkJbWRf bWFrZV9ic2RfcGFydGl0aW9ucygpOwotCQkJCQkJCQkJCQlwbV9jZ2RfZWRpdCgwLCAmKHBh cnRfZW50cnlfdCkKLQkJCQkJCQkJCQkJCXsuZGV2X3B0ciA9IHBtLCAuZGV2X251bSA9IFBB UlRfRX0KLQkJCQkJCQkJCQkJKTsgfTsKLQlvcHRpb24gTVNHX3NldGJvb3RhYmxlLAlleGl0 LCBhY3Rpb24geyBwbS0+dW5zYXZlZCA9IDE7Ci0JCQkJCQkJCQkJCXBtLT5ib290YWJsZSA9 ICFwbS0+Ym9vdGFibGU7IH07Ci0Jb3B0aW9uIE1TR19lcmFzZSwJCW5leHQgbWVudSBzaHJl ZF9tb2RlczsKLQlvcHRpb24gTVNHX3VuZG8sCQlleGl0LCBhY3Rpb24geyBsYWJlbF9yZWFk KCk7IHBtLT51bnNhdmVkID0gMDsKLQkJCQkJCQkJCQkJcG1fcGFydHVzYWdlKHBtLCAtMSwg MSk7IH07Ci0Jb3B0aW9uIE1TR191bmNvbmZpZywJZXhpdCwgYWN0aW9uIHsgaWYgKHBtX3Vu Y29uZmlndXJlKHBtKSA9PSAwKQotCQkJCQkJCQkJCQkJcG1fcGFydHVzYWdlKHBtLCAtMSwg MSk7IH07Ci0KLW1lbnUgcG1wYXJ0ZW50cnksIHg9NTAsIHk9NSwgZXhpdCwgZGVmYXVsdCBl eGl0OwotCW9wdGlvbiBNU0dfZWRpdCwJCWV4aXQsIGFjdGlvbiB7IAotCQkJCQkJCQkJcG0t PnVuc2F2ZWQgPSAxOwotCQkJCQkJCQkJaW50IHRwZnMgPSBwbS0+YnNkbGFiZWxbKihpbnQq KWFyZ10ucGlfZnN0eXBlOwotCQkJCQkJCQkJaW50IHRwbHZtID0gcG0tPmJzZGxhYmVsWyoo aW50KilhcmddLmx2bXB2OwotCQkJCQkJCQkJcG1fZWRpdHBhcnQoKihpbnQqKWFyZyk7Ci0J CQkJCQkJCQlpZiAodHBmcyAhPSBwbS0+YnNkbGFiZWxbKihpbnQqKWFyZ10ucGlfZnN0eXBl IHx8Ci0JCQkJCQkJCQkJdHBsdm0gIT0gcG0tPmJzZGxhYmVsWyooaW50KilhcmddLmx2bXB2 KQotCQkJCQkJCQkJCS8qIE9vcHMsIHBhcnRpdGlvbiB0eXBlIGNoYW5nZWQgKi8KLQkJCQkJ CQkJCQlwbV9wYXJ0dXNhZ2UocG0sICooaW50KilhcmcsIDEpOwotCQkJCQkJCQl9OwotCW9w dGlvbiBNU0dfZm10YXNyYWlkLAlleGl0LCBhY3Rpb24gewotCQkJCQkJCQkJaWYgKHBtLT5n cHQgfHwgcG0tPmlzc3BlY2lhbCkgewotCQkJCQkJCQkJCXByb2Nlc3NfbWVudShNRU5VX29r LCBfX1VOQ09OU1QoTVNHX25vdHN1cHBvcnRlZCkpOwotCQkJCQkJCQkJCXJldHVybiAtMTsK LQkJCQkJCQkJCX0KLQkJCQkJCQkJCXBtLT51bnNhdmVkID0gMTsKLQkJCQkJCQkJCXBtX3Bh cnR1c2FnZShwbSwgKihpbnQqKWFyZywgMSk7Ci0JCQkJCQkJCQlwbV9zZXRmc3R5cGUocG0s ICooaW50KilhcmcsIEZTX1JBSUQpOwotCQkJCQkJCQl9OwotCW9wdGlvbiBNU0dfZm10YXNs dm0sCWV4aXQsIGFjdGlvbiB7Ci0JCQkJCQkJCQlpZiAocG0tPmdwdCB8fCBwbS0+aXNzcGVj aWFsKSB7Ci0JCQkJCQkJCQkJcHJvY2Vzc19tZW51KE1FTlVfb2ssIF9fVU5DT05TVChNU0df bm90c3VwcG9ydGVkKSk7Ci0JCQkJCQkJCQkJcmV0dXJuIC0xOwotCQkJCQkJCQkJfQotCQkJ CQkJCQkJcG0tPnVuc2F2ZWQgPSAxOwotCQkJCQkJCQkJcG1fcGFydHVzYWdlKHBtLCAqKGlu dCopYXJnLCAxKTsKLQkJCQkJCQkJCXBtX3NldGZzdHlwZShwbSwgKihpbnQqKWFyZywgRlNf QlNERkZTKTsKLQkJCQkJCQkJICAgIHBtLT5ic2RsYWJlbFsqKGludCopYXJnXS5sdm1wdiA9 IDE7Ci0JCQkJCQkJCX07Ci0Jb3B0aW9uIE1TR19lbmNyeXB0LAkJZXhpdCwgYWN0aW9uIHsK LQkJCQkJCQkJCWlmIChwbS0+Z3B0IHx8IHBtLT5pc3NwZWNpYWwpIHsKLQkJCQkJCQkJCQlw cm9jZXNzX21lbnUoTUVOVV9vaywgX19VTkNPTlNUKE1TR19ub3RzdXBwb3J0ZWQpKTsKLQkJ CQkJCQkJCQlyZXR1cm4gLTE7Ci0JCQkJCQkJCQl9Ci0JCQkJCQkJCQlwbS0+dW5zYXZlZCA9 IDE7Ci0JCQkJCQkJCQlwbV9wYXJ0dXNhZ2UocG0sICooaW50KilhcmcsIDEpOwotCQkJCQkJ CQkJcG1fc2V0ZnN0eXBlKHBtLCAqKGludCopYXJnLCBGU19DR0QpOwotCQkJCQkJCQkJcG1f Y2dkX2VkaXQoMCwKLQkJCQkJCQkJCQkmKHBhcnRfZW50cnlfdCl7LmRldl9wdHIgPSBwbSwK LQkJCQkJCQkJCQkJCQkJLmRldl9udW0gPSAqKGludCopYXJnfSk7Ci0JCQkJCQkJCX07Ci0J b3B0aW9uIE1TR19lcmFzZSwJCW5leHQgbWVudSBzaHJlZF9tb2RlczsKLQlvcHRpb24gTVNH X2RvdW1vdW50LAlleGl0LCBhY3Rpb24geyBwbV91bW91bnQocG0sICooaW50KilhcmcpOyB9 OwotCW9wdGlvbiBNU0dfRGVsZXRlX3BhcnRpdGlvbiwJZXhpdCwgYWN0aW9uIHsKLQkJCQkJ CQkJCXBtLT51bnNhdmVkID0gMTsKLQkJCQkJCQkJCXBtX3BhcnR1c2FnZShwbSwgKihpbnQq KWFyZywgMSk7Ci0JCQkJCQkJCQlpZiAocG0tPmlzc3BlY2lhbCkKLQkJCQkJCQkJCQlwbV91 bmNvbmZpZ3VyZShwbSk7Ci0JCQkJCQkJCQllbHNlCi0JCQkJCQkJCQkJcG0tPmJzZGxhYmVs WyooaW50KilhcmddLnBpX2ZzdHlwZSA9IEZTX1VOVVNFRDsKLQkJCQkJCQkJCX07Ci0KLW1l bnUgcG1ncHRlbnRyeSwgeD01MCwgeT04LCBleGl0LCBkZWZhdWx0IGV4aXQ7Ci0Jb3B0aW9u IE1TR19lZGl0YnNkcGFydCwgZXhpdCwgYWN0aW9uIHsgcG1fbWFrZV9ic2RfcGFydGl0aW9u cyhwbSk7IH07Ci0Jb3B0aW9uIE1TR19zd2l0Y2htYnIsCWV4aXQsIGFjdGlvbiB7IGlmIChw bV9ncHRfY29udmVydChwbSkgPT0gMCkKLQkJCQkJCQkJCQkJCXBtX3BhcnR1c2FnZShwbSwg LTEsIDEpOyB9OwotCW9wdGlvbiBNU0dfc2V0Ym9vdGFibGUsCWV4aXQsIGFjdGlvbiB7IHBt LT51bnNhdmVkID0gMTsKLQkJCQkJCQkJCQkJCXBtLT5ib290YWJsZSA9ICFwbS0+Ym9vdGFi bGU7IH07Ci0Jb3B0aW9uIE1TR19lcmFzZSwJCW5leHQgbWVudSBzaHJlZF9tb2RlczsKLQlv cHRpb24gTVNHX3VuZG8sCQlleGl0LCBhY3Rpb24geyBsYWJlbF9yZWFkKCk7IHBtLT51bnNh dmVkID0gMDsKLQkJCQkJCQkJCQkJcG1fcGFydHVzYWdlKHBtLCAtMSwgMSk7IH07Ci0Jb3B0 aW9uIE1TR191bmNvbmZpZywJZXhpdCwgYWN0aW9uIHsgaWYgKHBtX3VuY29uZmlndXJlKHBt KSA9PSAwKQotCQkJCQkJCQkJCQkJcG1fcGFydHVzYWdlKHBtLCAtMSwgMSk7IH07Ci0KLW1l bnUgc2hyZWRfbW9kZXMsIHg9NTAsIHk9NSwgZXhpdCwgZGVmYXVsdCBleGl0OwotCW9wdGlv biBNU0dfZmlsbHplcm9zLAlleGl0LAotCQkJCQkJCWFjdGlvbiB7IHBtX3NocmVkKHBtLCAq KGludCopYXJnLCBTSFJFRF9aRVJPUyk7IH07Ci0Jb3B0aW9uIE1TR19maWxscmFuZG9tLAll eGl0LAotCQkJCQkJCWFjdGlvbiB7IHBtX3NocmVkKHBtLCAqKGludCopYXJnLCBTSFJFRF9S QU5ET00pOyB9OwotCW9wdGlvbiBNU0dfZmlsbGNyeXB0bywJZXhpdCwKLQkJCQkJCQlhY3Rp b24geyBwbV9zaHJlZChwbSwgKihpbnQqKWFyZywgU0hSRURfQ1JZUFRPKTsgfTsKLQotbWVu dSByYWlkbGV2ZWw7Ci0Jb3B0aW9uIE1TR19yYWlkMCwgZXhpdCwgYWN0aW9uIHsgKihpbnQg KilhcmcgPSAwOyB9OwotCW9wdGlvbiBNU0dfcmFpZDEsIGV4aXQsIGFjdGlvbiB7ICooaW50 ICopYXJnID0gMTsgfTsKLQlvcHRpb24gTVNHX3JhaWQ0LCBleGl0LCBhY3Rpb24geyAqKGlu dCAqKWFyZyA9IDQ7IH07Ci0Jb3B0aW9uIE1TR19yYWlkNSwgZXhpdCwgYWN0aW9uIHsgKihp bnQgKilhcmcgPSA1OyB9OwotCi1tZW51IGNnZF9lbmN0eXBlOwotCW9wdGlvbiAiYWVzLXh0 cyIsCQkJZXhpdCwgYWN0aW9uIHsgKihjb25zdCBjaGFyKiopYXJnID0gImFlcy14dHMiOyB9 OwotCW9wdGlvbiAiYWVzLWNiYyIsCQkJZXhpdCwgYWN0aW9uIHsgKihjb25zdCBjaGFyKiop YXJnID0gImFlcy1jYmMiOyB9OwotCW9wdGlvbiAiM2Rlcy1jYmMiLAkJCWV4aXQsIGFjdGlv biB7ICooY29uc3QgY2hhcioqKWFyZyA9ICIzZGVzLWNiYyI7IH07Ci0Jb3B0aW9uICJibG93 ZmlzaC1jYmMiLAkJZXhpdCwgYWN0aW9uIHsgKihjb25zdCBjaGFyKiopYXJnID0gImJsb3dm aXNoLWNiYyI7IH07Ci0KLW1lbnUgY2dkX2l2dHlwZTsKLQlvcHRpb24gImVuY2Jsa25vMSIs CQkJZXhpdCwgYWN0aW9uIHsgKihjb25zdCBjaGFyKiopYXJnID0gImVuY2Jsa25vMSI7IH07 Ci0Jb3B0aW9uICJlbmNibGtubzgiLAkJCWV4aXQsIGFjdGlvbiB7ICooY29uc3QgY2hhcioq KWFyZyA9ICJlbmNibGtubzgiOyB9OwotCi1tZW51IGNnZF9rZXlnZW50eXBlOwotCW9wdGlv biAicGtjczVfcGJrZGYyL3NoYTEiLAlleGl0LCBhY3Rpb24geyAqKGNvbnN0IGNoYXIqKilh cmcgPSAicGtjczVfcGJrZGYyL3NoYTEiOyB9OwotCW9wdGlvbiAicGtjczVfcGJrZGYyIiwJ CWV4aXQsIGFjdGlvbiB7ICooY29uc3QgY2hhcioqKWFyZyA9ICJwa2NzNV9wYmtkZjIiOyB9 OwotCW9wdGlvbiAic3RvcmVka2V5IiwJCQlleGl0LCBhY3Rpb24geyAqKGNvbnN0IGNoYXIq KilhcmcgPSAic3RvcmVka2V5IjsgfTsKLQlvcHRpb24gInJhbmRvbWtleSIsCQkJZXhpdCwg YWN0aW9uIHsgKihjb25zdCBjaGFyKiopYXJnID0gInJhbmRvbWtleSI7IH07Ci0Jb3B0aW9u ICJ1cmFuZG9ta2V5IiwJCWV4aXQsIGFjdGlvbiB7ICooY29uc3QgY2hhcioqKWFyZyA9ICJ1 cmFuZG9ta2V5IjsgfTsKLQlvcHRpb24gInNoZWxsX2NtZCIsCQkJZXhpdCwgYWN0aW9uIHsg Kihjb25zdCBjaGFyKiopYXJnID0gInNoZWxsX2NtZCI7IH07Ci0KLW1lbnUgY2dkX3Zlcmlm eXR5cGU7Ci0Jb3B0aW9uICJub25lIiwJCQkJZXhpdCwgYWN0aW9uIHsgKihjb25zdCBjaGFy KiopYXJnID0gIm5vbmUiOyB9OwotCW9wdGlvbiAiZGlza2xhYmVsIiwJCQlleGl0LCBhY3Rp b24geyAqKGNvbnN0IGNoYXIqKilhcmcgPSAiZGlza2xhYmVsIjsgfTsKLQlvcHRpb24gImZm cyIsCQkJCWV4aXQsIGFjdGlvbiB7ICooY29uc3QgY2hhcioqKWFyZyA9ICJmZnMiOyB9Owot CW9wdGlvbiAicmUtZW50ZXIiLAkJCWV4aXQsIGFjdGlvbiB7ICooY29uc3QgY2hhcioqKWFy ZyA9ICJyZS1lbnRlciI7IH07CkluZGV4OiB1c3Iuc2Jpbi9zeXNpbnN0L21lbnVzLnBtCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KUkNTIGZpbGU6IHVzci5zYmluL3N5c2luc3QvbWVudXMucG0KZGlmZiAt TiB1c3Iuc2Jpbi9zeXNpbnN0L21lbnVzLnBtCi0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAw MDowMDowMCAtMDAwMAorKysgdXNyLnNiaW4vc3lzaW5zdC9tZW51cy5wbQkyMCBTZXAgMjAx OCAwMTo0Njo1MyAtMDAwMApAQCAtMCwwICsxLDE2NyBAQAorLyoJJE5ldEJTRCQJKi8KKy8q CU5ldEJTRDogbWVudXMubWksdiAxLjE0IDIwMTgvMDkvMTEgMDg6MDU6MTggbWFydGluIEV4 cCAJCSovCisKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDAzIFRoZSBOZXRCU0QgRm91bmRh dGlvbiwgSW5jLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGNvZGUg aXMgZGVyaXZlZCBmcm9tIHNvZnR3YXJlIGNvbnRyaWJ1dGVkIHRvIFRoZSBOZXRCU0QgRm91 bmRhdGlvbgorICogYnkgRGF2aWQgTGFpZ2h0LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1 bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIE5F VEJTRCBGT1VOREFUSU9OLCBJTkMuIEFORCBDT05UUklCVVRPUlMKKyAqIGBgQVMgSVMnJyBB TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO T1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgRk9VTkRBVElPTiBPUiBDT05UUklC VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKKyAqIFBPU1NJQklMSVRZIE9GIFNVQ0gg REFNQUdFLgorICovCisKKy8qIE1lbnUgc3lzdGVtIGRlZmluaXRpb25zIC0tIGV4dGVuZGVk IHBhcnRpdGlvbmluZyAqLworCittZW51IHBtZGlza2VudHJ5LCB4PTUwLCB5PTUsIGV4aXQs IGRlZmF1bHQgZXhpdDsKKwlvcHRpb24gTVNHX2VkaXRic2RwYXJ0LCBleGl0LCBhY3Rpb24g eyBwbV9tYWtlX2JzZF9wYXJ0aXRpb25zKHBtKTsgfTsKKwlvcHRpb24gTVNHX2VkaXRtYnIs CQlleGl0LCBhY3Rpb24geyBtZF9nZXRfaW5mbygpOworCQkJCQkJCQkJCQltZF9wcmVfZGlz a2xhYmVsKCk7CisJCQkJCQkJCQkJCW1lbXNldCgmcG0tPmJzZGxhYmVsLCAwLCBzaXplb2Yg cG0tPmJzZGxhYmVsKTt9OworCW9wdGlvbiBNU0dfc3dpdGNoZ3B0LAlleGl0LCBhY3Rpb24g eyBpZiAocG1fZ3B0X2NvbnZlcnQocG0pID09IDApCisJCQkJCQkJCQkJCQlwbV9wYXJ0dXNh Z2UocG0sIC0xLCAxKTsgfTsKKwlvcHRpb24gTVNHX3JlbmFtZWRpc2ssCWV4aXQsIGFjdGlv biB7IHBtLT51bnNhdmVkID0gMTsgcG1fcmVuYW1lKHBtKTsgfTsKKwlvcHRpb24gTVNHX2Zt dGFzcmFpZCwJZXhpdCwgYWN0aW9uIHsgcG0tPnVuc2F2ZWQgPSAxOworCQkJCQkJCQkJCQlw bV9wYXJ0dXNhZ2UocG0sIC0xLCAxKTsKKwkJCQkJCQkJCQkJbGF5b3V0a2luZCA9IExZX05F V1JBSUQ7CisJCQkJCQkJCQkJCW1kX21ha2VfYnNkX3BhcnRpdGlvbnMoKTt9OworCW9wdGlv biBNU0dfZm10YXNsdm0sCWV4aXQsIGFjdGlvbiB7IHBtLT51bnNhdmVkID0gMTsKKwkJCQkJ CQkJCQkJcG1fcGFydHVzYWdlKHBtLCAtMSwgMSk7CisJCQkJCQkJCQkJCWxheW91dGtpbmQg PSBMWV9ORVdMVk07CisJCQkJCQkJCQkJCW1kX21ha2VfYnNkX3BhcnRpdGlvbnMoKTsgfTsK KwlvcHRpb24gTVNHX2VuY3J5cHQsCQlleGl0LCBhY3Rpb24geyBwbS0+dW5zYXZlZCA9IDE7 CisJCQkJCQkJCQkJCXBtX3BhcnR1c2FnZShwbSwgLTEsIDEpOworCQkJCQkJCQkJCQlsYXlv dXRraW5kID0gTFlfTkVXQ0dEOworCQkJCQkJCQkJCQltZF9tYWtlX2JzZF9wYXJ0aXRpb25z KCk7CisJCQkJCQkJCQkJCXBtX2NnZF9lZGl0KDAsICYocGFydF9lbnRyeV90KQorCQkJCQkJ CQkJCQkJey5kZXZfcHRyID0gcG0sIC5kZXZfbnVtID0gUEFSVF9FfQorCQkJCQkJCQkJCQkp OyB9OworCW9wdGlvbiBNU0dfc2V0Ym9vdGFibGUsCWV4aXQsIGFjdGlvbiB7IHBtLT51bnNh dmVkID0gMTsKKwkJCQkJCQkJCQkJcG0tPmJvb3RhYmxlID0gIXBtLT5ib290YWJsZTsgfTsK KwlvcHRpb24gTVNHX2VyYXNlLAkJbmV4dCBtZW51IHNocmVkX21vZGVzOworCW9wdGlvbiBN U0dfdW5kbywJCWV4aXQsIGFjdGlvbiB7IGxhYmVsX3JlYWQoKTsgcG0tPnVuc2F2ZWQgPSAw OworCQkJCQkJCQkJCQlwbV9wYXJ0dXNhZ2UocG0sIC0xLCAxKTsgfTsKKwlvcHRpb24gTVNH X3VuY29uZmlnLAlleGl0LCBhY3Rpb24geyBpZiAocG1fdW5jb25maWd1cmUocG0pID09IDAp CisJCQkJCQkJCQkJCQlwbV9wYXJ0dXNhZ2UocG0sIC0xLCAxKTsgfTsKKworbWVudSBwbXBh cnRlbnRyeSwgeD01MCwgeT01LCBleGl0LCBkZWZhdWx0IGV4aXQ7CisJb3B0aW9uIE1TR19l ZGl0LAkJZXhpdCwgYWN0aW9uIHsgCisJCQkJCQkJCQlwbS0+dW5zYXZlZCA9IDE7CisJCQkJ CQkJCQlpbnQgdHBmcyA9IHBtLT5ic2RsYWJlbFsqKGludCopYXJnXS5waV9mc3R5cGU7CisJ CQkJCQkJCQlpbnQgdHBsdm0gPSBwbS0+YnNkbGFiZWxbKihpbnQqKWFyZ10ubHZtcHY7CisJ CQkJCQkJCQlwbV9lZGl0cGFydCgqKGludCopYXJnKTsKKwkJCQkJCQkJCWlmICh0cGZzICE9 IHBtLT5ic2RsYWJlbFsqKGludCopYXJnXS5waV9mc3R5cGUgfHwKKwkJCQkJCQkJCQl0cGx2 bSAhPSBwbS0+YnNkbGFiZWxbKihpbnQqKWFyZ10ubHZtcHYpCisJCQkJCQkJCQkJLyogT29w cywgcGFydGl0aW9uIHR5cGUgY2hhbmdlZCAqLworCQkJCQkJCQkJCXBtX3BhcnR1c2FnZShw bSwgKihpbnQqKWFyZywgMSk7CisJCQkJCQkJCX07CisJb3B0aW9uIE1TR19mbXRhc3JhaWQs CWV4aXQsIGFjdGlvbiB7CisJCQkJCQkJCQlpZiAocG0tPmdwdCB8fCBwbS0+aXNzcGVjaWFs KSB7CisJCQkJCQkJCQkJcHJvY2Vzc19tZW51KE1FTlVfb2ssIF9fVU5DT05TVChNU0dfbm90 c3VwcG9ydGVkKSk7CisJCQkJCQkJCQkJcmV0dXJuIC0xOworCQkJCQkJCQkJfQorCQkJCQkJ CQkJcG0tPnVuc2F2ZWQgPSAxOworCQkJCQkJCQkJcG1fcGFydHVzYWdlKHBtLCAqKGludCop YXJnLCAxKTsKKwkJCQkJCQkJCXBtX3NldGZzdHlwZShwbSwgKihpbnQqKWFyZywgRlNfUkFJ RCk7CisJCQkJCQkJCX07CisJb3B0aW9uIE1TR19mbXRhc2x2bSwJZXhpdCwgYWN0aW9uIHsK KwkJCQkJCQkJCWlmIChwbS0+Z3B0IHx8IHBtLT5pc3NwZWNpYWwpIHsKKwkJCQkJCQkJCQlw cm9jZXNzX21lbnUoTUVOVV9vaywgX19VTkNPTlNUKE1TR19ub3RzdXBwb3J0ZWQpKTsKKwkJ CQkJCQkJCQlyZXR1cm4gLTE7CisJCQkJCQkJCQl9CisJCQkJCQkJCQlwbS0+dW5zYXZlZCA9 IDE7CisJCQkJCQkJCQlwbV9wYXJ0dXNhZ2UocG0sICooaW50KilhcmcsIDEpOworCQkJCQkJ CQkJcG1fc2V0ZnN0eXBlKHBtLCAqKGludCopYXJnLCBGU19CU0RGRlMpOworCQkJCQkJCQkg ICAgcG0tPmJzZGxhYmVsWyooaW50KilhcmddLmx2bXB2ID0gMTsKKwkJCQkJCQkJfTsKKwlv cHRpb24gTVNHX2VuY3J5cHQsCQlleGl0LCBhY3Rpb24geworCQkJCQkJCQkJaWYgKHBtLT5n cHQgfHwgcG0tPmlzc3BlY2lhbCkgeworCQkJCQkJCQkJCXByb2Nlc3NfbWVudShNRU5VX29r LCBfX1VOQ09OU1QoTVNHX25vdHN1cHBvcnRlZCkpOworCQkJCQkJCQkJCXJldHVybiAtMTsK KwkJCQkJCQkJCX0KKwkJCQkJCQkJCXBtLT51bnNhdmVkID0gMTsKKwkJCQkJCQkJCXBtX3Bh cnR1c2FnZShwbSwgKihpbnQqKWFyZywgMSk7CisJCQkJCQkJCQlwbV9zZXRmc3R5cGUocG0s ICooaW50KilhcmcsIEZTX0NHRCk7CisJCQkJCQkJCQlwbV9jZ2RfZWRpdCgwLAorCQkJCQkJ CQkJCSYocGFydF9lbnRyeV90KXsuZGV2X3B0ciA9IHBtLAorCQkJCQkJCQkJCQkJCQkuZGV2 X251bSA9ICooaW50Kilhcmd9KTsKKwkJCQkJCQkJfTsKKwlvcHRpb24gTVNHX2VyYXNlLAkJ bmV4dCBtZW51IHNocmVkX21vZGVzOworCW9wdGlvbiBNU0dfZG91bW91bnQsCWV4aXQsIGFj dGlvbiB7IHBtX3Vtb3VudChwbSwgKihpbnQqKWFyZyk7IH07CisJb3B0aW9uIE1TR19EZWxl dGVfcGFydGl0aW9uLAlleGl0LCBhY3Rpb24geworCQkJCQkJCQkJcG0tPnVuc2F2ZWQgPSAx OworCQkJCQkJCQkJcG1fcGFydHVzYWdlKHBtLCAqKGludCopYXJnLCAxKTsKKwkJCQkJCQkJ CWlmIChwbS0+aXNzcGVjaWFsKQorCQkJCQkJCQkJCXBtX3VuY29uZmlndXJlKHBtKTsKKwkJ CQkJCQkJCWVsc2UKKwkJCQkJCQkJCQlwbS0+YnNkbGFiZWxbKihpbnQqKWFyZ10ucGlfZnN0 eXBlID0gRlNfVU5VU0VEOworCQkJCQkJCQkJfTsKKworbWVudSBwbWdwdGVudHJ5LCB4PTUw LCB5PTgsIGV4aXQsIGRlZmF1bHQgZXhpdDsKKwlvcHRpb24gTVNHX2VkaXRic2RwYXJ0LCBl eGl0LCBhY3Rpb24geyBwbV9tYWtlX2JzZF9wYXJ0aXRpb25zKHBtKTsgfTsKKwlvcHRpb24g TVNHX3N3aXRjaG1iciwJZXhpdCwgYWN0aW9uIHsgaWYgKHBtX2dwdF9jb252ZXJ0KHBtKSA9 PSAwKQorCQkJCQkJCQkJCQkJcG1fcGFydHVzYWdlKHBtLCAtMSwgMSk7IH07CisJb3B0aW9u IE1TR19zZXRib290YWJsZSwJZXhpdCwgYWN0aW9uIHsgcG0tPnVuc2F2ZWQgPSAxOworCQkJ CQkJCQkJCQkJcG0tPmJvb3RhYmxlID0gIXBtLT5ib290YWJsZTsgfTsKKwlvcHRpb24gTVNH X2VyYXNlLAkJbmV4dCBtZW51IHNocmVkX21vZGVzOworCW9wdGlvbiBNU0dfdW5kbywJCWV4 aXQsIGFjdGlvbiB7IGxhYmVsX3JlYWQoKTsgcG0tPnVuc2F2ZWQgPSAwOworCQkJCQkJCQkJ CQlwbV9wYXJ0dXNhZ2UocG0sIC0xLCAxKTsgfTsKKwlvcHRpb24gTVNHX3VuY29uZmlnLAll eGl0LCBhY3Rpb24geyBpZiAocG1fdW5jb25maWd1cmUocG0pID09IDApCisJCQkJCQkJCQkJ CQlwbV9wYXJ0dXNhZ2UocG0sIC0xLCAxKTsgfTsKKworbWVudSBzaHJlZF9tb2RlcywgeD01 MCwgeT01LCBleGl0LCBkZWZhdWx0IGV4aXQ7CisJb3B0aW9uIE1TR19maWxsemVyb3MsCWV4 aXQsCisJCQkJCQkJYWN0aW9uIHsgcG1fc2hyZWQocG0sICooaW50KilhcmcsIFNIUkVEX1pF Uk9TKTsgfTsKKwlvcHRpb24gTVNHX2ZpbGxyYW5kb20sCWV4aXQsCisJCQkJCQkJYWN0aW9u IHsgcG1fc2hyZWQocG0sICooaW50KilhcmcsIFNIUkVEX1JBTkRPTSk7IH07CisJb3B0aW9u IE1TR19maWxsY3J5cHRvLAlleGl0LAorCQkJCQkJCWFjdGlvbiB7IHBtX3NocmVkKHBtLCAq KGludCopYXJnLCBTSFJFRF9DUllQVE8pOyB9OworCittZW51IHJhaWRsZXZlbDsKKwlvcHRp b24gTVNHX3JhaWQwLCBleGl0LCBhY3Rpb24geyAqKGludCAqKWFyZyA9IDA7IH07CisJb3B0 aW9uIE1TR19yYWlkMSwgZXhpdCwgYWN0aW9uIHsgKihpbnQgKilhcmcgPSAxOyB9OworCW9w dGlvbiBNU0dfcmFpZDQsIGV4aXQsIGFjdGlvbiB7ICooaW50ICopYXJnID0gNDsgfTsKKwlv cHRpb24gTVNHX3JhaWQ1LCBleGl0LCBhY3Rpb24geyAqKGludCAqKWFyZyA9IDU7IH07CisK K21lbnUgY2dkX2VuY3R5cGU7CisJb3B0aW9uICJhZXMteHRzIiwJCQlleGl0LCBhY3Rpb24g eyAqKGNvbnN0IGNoYXIqKilhcmcgPSAiYWVzLXh0cyI7IH07CisJb3B0aW9uICJhZXMtY2Jj IiwJCQlleGl0LCBhY3Rpb24geyAqKGNvbnN0IGNoYXIqKilhcmcgPSAiYWVzLWNiYyI7IH07 CisJb3B0aW9uICIzZGVzLWNiYyIsCQkJZXhpdCwgYWN0aW9uIHsgKihjb25zdCBjaGFyKiop YXJnID0gIjNkZXMtY2JjIjsgfTsKKwlvcHRpb24gImJsb3dmaXNoLWNiYyIsCQlleGl0LCBh Y3Rpb24geyAqKGNvbnN0IGNoYXIqKilhcmcgPSAiYmxvd2Zpc2gtY2JjIjsgfTsKKworbWVu dSBjZ2RfaXZ0eXBlOworCW9wdGlvbiAiZW5jYmxrbm8xIiwJCQlleGl0LCBhY3Rpb24geyAq KGNvbnN0IGNoYXIqKilhcmcgPSAiZW5jYmxrbm8xIjsgfTsKKwlvcHRpb24gImVuY2Jsa25v OCIsCQkJZXhpdCwgYWN0aW9uIHsgKihjb25zdCBjaGFyKiopYXJnID0gImVuY2Jsa25vOCI7 IH07CisKK21lbnUgY2dkX2tleWdlbnR5cGU7CisJb3B0aW9uICJwa2NzNV9wYmtkZjIvc2hh MSIsCWV4aXQsIGFjdGlvbiB7ICooY29uc3QgY2hhcioqKWFyZyA9ICJwa2NzNV9wYmtkZjIv c2hhMSI7IH07CisJb3B0aW9uICJwa2NzNV9wYmtkZjIiLAkJZXhpdCwgYWN0aW9uIHsgKihj b25zdCBjaGFyKiopYXJnID0gInBrY3M1X3Bia2RmMiI7IH07CisJb3B0aW9uICJzdG9yZWRr ZXkiLAkJCWV4aXQsIGFjdGlvbiB7ICooY29uc3QgY2hhcioqKWFyZyA9ICJzdG9yZWRrZXki OyB9OworCW9wdGlvbiAicmFuZG9ta2V5IiwJCQlleGl0LCBhY3Rpb24geyAqKGNvbnN0IGNo YXIqKilhcmcgPSAicmFuZG9ta2V5IjsgfTsKKwlvcHRpb24gInVyYW5kb21rZXkiLAkJZXhp dCwgYWN0aW9uIHsgKihjb25zdCBjaGFyKiopYXJnID0gInVyYW5kb21rZXkiOyB9OworCW9w dGlvbiAic2hlbGxfY21kIiwJCQlleGl0LCBhY3Rpb24geyAqKGNvbnN0IGNoYXIqKilhcmcg PSAic2hlbGxfY21kIjsgfTsKKworbWVudSBjZ2RfdmVyaWZ5dHlwZTsKKwlvcHRpb24gIm5v bmUiLAkJCQlleGl0LCBhY3Rpb24geyAqKGNvbnN0IGNoYXIqKilhcmcgPSAibm9uZSI7IH07 CisJb3B0aW9uICJkaXNrbGFiZWwiLAkJCWV4aXQsIGFjdGlvbiB7ICooY29uc3QgY2hhcioq KWFyZyA9ICJkaXNrbGFiZWwiOyB9OworCW9wdGlvbiAiZmZzIiwJCQkJZXhpdCwgYWN0aW9u IHsgKihjb25zdCBjaGFyKiopYXJnID0gImZmcyI7IH07CisJb3B0aW9uICJyZS1lbnRlciIs CQkJZXhpdCwgYWN0aW9uIHsgKihjb25zdCBjaGFyKiopYXJnID0gInJlLWVudGVyIjsgfTsK SW5kZXg6IHVzci5zYmluL3N5c2luc3QvYXJjaC9hdGFyaS9NYWtlZmlsZQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiAvaG9tZS9uZXRic2Qvc3JjL3Vzci5zYmluL3N5c2luc3QvYXJjaC9h dGFyaS9NYWtlZmlsZSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yCmRpZmYgLXAgLXUgLXIx LjIgTWFrZWZpbGUKLS0tIHVzci5zYmluL3N5c2luc3QvYXJjaC9hdGFyaS9NYWtlZmlsZQkx MiBBdWcgMjAxNSAxODoyMDowMiAtMDAwMAkxLjIKKysrIHVzci5zYmluL3N5c2luc3QvYXJj aC9hdGFyaS9NYWtlZmlsZQkyMCBTZXAgMjAxOCAwMToxNTozNyAtMDAwMApAQCAtOCw0ICs4 LDggQEAgTEFOR1VBR0VTPQllbiBkZQogCiBDUFBGTEFHUys9CS1EU1VQUE9SVF84XzNfU09V UkNFX0ZJTEVTWVNURU0KIAorLmlmZGVmIFNNQUxMUFJPRworTk9QQVJUTUFOPQl5ZXMKKy5l bmRpZgorCiAuaW5jbHVkZSAiLi4vLi4vTWFrZWZpbGUuaW5jIgo= --------------39720A19D060170BB18E2AF7--