From: Bjorn Munch Date: February 9 2011 6:20am Subject: bzr commit into mysql-5.1-mtr branch (bjorn.munch:2981) List-Archive: http://lists.mysql.com/commits/130787 Message-Id: <201102090620.p196KQ7j021360@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 I0F0IGZpbGU6Ly8vaG9tZS9ibTEzNjgwMS9teS9tZXJnZS01MS8gYmFzZWQgb24gcmV2aWQ6Ympv cm4ubXVuY2hAb3JhY2xlLmNvbS0yMDExMDIwNzExNDIyMS12ZGJrbm9lc2w1dWdjZzgwCgogMjk4 MSBCam9ybiBNdW5jaAkyMDExLTAyLTA5IFttZXJnZV0KICAgICAgbWVyZ2UgZnJvbSA1LjEKCiAg ICByZW1vdmVkOgogICAgICBteXNxbC10ZXN0L2NvbGxlY3Rpb25zL215c3FsLTUuMS1idWd0ZWFt LmRhaWx5CiAgICAgIG15c3FsLXRlc3QvY29sbGVjdGlvbnMvbXlzcWwtNS4xLWJ1Z3RlYW0ucHVz aAogICAgYWRkZWQ6CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiX3BsdWdpbi9yL2lubm9k Yi1hdXRvaW5jLTU2MjI4LnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVn aW4vdC9pbm5vZGItYXV0b2luYy01NjIyOC1tYXN0ZXIub3B0CiAgICAgIG15c3FsLXRlc3Qvc3Vp dGUvaW5ub2RiX3BsdWdpbi90L2lubm9kYi1hdXRvaW5jLTU2MjI4LnRlc3QKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9zeXNfdmFycy9yL3NlY3VyZV9maWxlX3ByaXYyLnJlc3VsdAogICAgICBteXNx bC10ZXN0L3N1aXRlL3N5c192YXJzL3Qvc2VjdXJlX2ZpbGVfcHJpdjItbWFzdGVyLm9wdAogICAg ICBteXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3Qvc2VjdXJlX2ZpbGVfcHJpdjIudGVzdAogICAg bW9kaWZpZWQ6CiAgICAgIFJFQURNRQogICAgICBjbGllbnQvbXlfcmVhZGxpbmUuaAogICAgICBj bGllbnQvbXlzcWwuY2MKICAgICAgY2xpZW50L3JlYWRsaW5lLmNjCiAgICAgIGluY2x1ZGUvbXlf cHRocmVhZC5oCiAgICAgIGluY2x1ZGUvbXlfc3lzLmgKICAgICAgbXlzcWwtdGVzdC9jb2xsZWN0 aW9ucy9kZWZhdWx0LndlZWtseQogICAgICBteXNxbC10ZXN0L2luY2x1ZGUvbXlzcWxob3Rjb3B5 LmluYwogICAgICBteXNxbC10ZXN0L2luY2x1ZGUvcnBsX3N5bmMuaW5jCiAgICAgIG15c3FsLXRl c3QvbXlzcWwtdGVzdC1ydW4ucGwKICAgICAgbXlzcWwtdGVzdC9yL2dyYW50LnJlc3VsdAogICAg ICBteXNxbC10ZXN0L3Ivb3JkZXJfYnkucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci90eXBlX3ll YXIucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci91c2VyX3Zhci5yZXN1bHQKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9iaW5sb2cvci9iaW5sb2dfdW5zYWZlLnJlc3VsdAogICAgICBteXNxbC10ZXN0 L3N1aXRlL2JpbmxvZy90L2JpbmxvZ191bnNhZmUudGVzdAogICAgICBteXNxbC10ZXN0L3N1aXRl L2VuZ2luZXMvZnVuY3Mvci9wc19zdHJpbmdfbm90X251bGwucmVzdWx0CiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvZW5naW5lcy9mdW5jcy90L3BzX3N0cmluZ19ub3RfbnVsbC50ZXN0CiAgICAgIG15 c3FsLXRlc3Qvc3VpdGUvcnBsL3IvcnBsX2NpcmN1bGFyX2Zvcl80X2hvc3RzLnJlc3VsdAogICAg ICBteXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9jaXJjdWxhcl9mb3JfNF9ob3N0cy50ZXN0CiAg ICAgIG15c3FsLXRlc3QvdC9ncmFudC50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC9teXNxbC50ZXN0 CiAgICAgIG15c3FsLXRlc3QvdC9vcmRlcl9ieS50ZXN0CiAgICAgIG15c3FsLXRlc3QvdC90eXBl X3llYXIudGVzdAogICAgICBteXNxbC10ZXN0L3QvdXNlcl92YXIudGVzdAogICAgICBteXNxbC10 ZXN0L3ZhbGdyaW5kLnN1cHAKICAgICAgbXlzeXMvbXlfZm9wZW4uYwogICAgICBteXN5cy9teV9n ZXRzeXN0aW1lLmMKICAgICAgc3FsL2hhbmRsZXIuY2MKICAgICAgc3FsL2l0ZW0uaAogICAgICBz cWwvaXRlbV9jbXBmdW5jLmNjCiAgICAgIHNxbC9pdGVtX2Z1bmMuY2MKICAgICAgc3FsL2l0ZW1f Z2VvZnVuYy5oCiAgICAgIHNxbC9sb2cuY2MKICAgICAgc3FsL25ldF9zZXJ2LmNjCiAgICAgIHNx bC9zcWxfYmFzZS5jYwogICAgICBzcWwvc3FsX2xvYWQuY2MKICAgICAgc3FsL3NxbF9zZWxlY3Qu Y2MKICAgICAgc3FsL3NxbF9zaG93LmNjCiAgICAgIHNxbC9zcWxfdmlldy5jYwogICAgICBzdG9y YWdlL2lubm9kYl9wbHVnaW4vQ2hhbmdlTG9nCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9i dHIvYnRyMGN1ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idWYvYnVmMGJ1Zi5jCiAg ICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9kaWN0L2RpY3QwZGljdC5jCiAgICAgIHN0b3JhZ2Uv aW5ub2RiX3BsdWdpbi9mc3AvZnNwMGZzcC5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9o YW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaGFuZGxlci9p X3MuY2MKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2lidWYvaWJ1ZjBpYnVmLmMKICAgICAg c3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMGN1ci5oCiAgICAgIHN0b3JhZ2UvaW5u b2RiX3BsdWdpbi9pbmNsdWRlL2J1ZjBidWYuaAogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4v aW5jbHVkZS9yb3cwdXBkLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvdW5p di5pCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3V0MHZlYy5oCiAgICAgIHN0 b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3V0MHZlYy5pYwogICAgICBzdG9yYWdlL2lubm9k Yl9wbHVnaW4vbG9jay9sb2NrMGxvY2suYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93 L3JvdzBpbnMuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzBtZXJnZS5jCiAg ICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHB1cmdlLmMKICAgICAgc3RvcmFnZS9p bm5vZGJfcGx1Z2luL3Jvdy9yb3cwdW1vZC5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9y b3cvcm93MHVwZC5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi90cngvdHJ4MHJvbGwuYwo9 PT0gbW9kaWZpZWQgZmlsZSAnUkVBRE1FJwotLS0gYS9SRUFETUUJMjAxMC0xMS0yNCAxMzoxNDo0 MyArMDAwMAorKysgYi9SRUFETUUJMjAxMS0wMS0yNSAxNDo0Mjo0MCArMDAwMApAQCAtNSw3ICs1 LDcgQEAgRm9yIHRoZSBhdm9pZGFuY2Ugb2YgZG91YnQsIHRoaXMgcGFydGljdQogaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Uu IA0KIE15U1FMIGlzIGJyb3VnaHQgdG8geW91IGJ5IHRoZSBNeVNRTCB0ZWFtIGF0IE9yYWNsZS4N CiANCi1Db3B5cmlnaHQgKGMpIDIwMDAsIDIwMTAsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0 ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFj bGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KIA0KIExpY2Vu c2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUuDQogDQoKPT09 IG1vZGlmaWVkIGZpbGUgJ2NsaWVudC9teV9yZWFkbGluZS5oJwotLS0gYS9jbGllbnQvbXlfcmVh ZGxpbmUuaAkyMDA5LTAzLTE4IDA4OjI3OjQ5ICswMDAwCisrKyBiL2NsaWVudC9teV9yZWFkbGlu ZS5oCTIwMTEtMDItMDUgMDU6MDI6MDAgKzAwMDAKQEAgLTI1LDkgKzI1LDExIEBAIHR5cGVkZWYg c3RydWN0IHN0X2xpbmVfYnVmZmVyCiAgIHVpbnQgZW9mOwogICB1bG9uZyBtYXhfc2l6ZTsKICAg dWxvbmcgcmVhZF9sZW5ndGg7CQkvKiBMZW5ndGggb2YgbGFzdCByZWFkIHN0cmluZyAqLworICBp bnQgZXJyb3I7CisgIGJvb2wgdHJ1bmNhdGVkOwogfSBMSU5FX0JVRkZFUjsKIAogZXh0ZXJuIExJ TkVfQlVGRkVSICpiYXRjaF9yZWFkbGluZV9pbml0KHVsb25nIG1heF9zaXplLEZJTEUgKmZpbGUp OwogZXh0ZXJuIExJTkVfQlVGRkVSICpiYXRjaF9yZWFkbGluZV9jb21tYW5kKExJTkVfQlVGRkVS ICpidWZmZXIsIGNoYXIgKiBzdHIpOwotZXh0ZXJuIGNoYXIgKmJhdGNoX3JlYWRsaW5lKExJTkVf QlVGRkVSICpidWZmZXIsIGJvb2wgKnRydW5jYXRlZCk7CitleHRlcm4gY2hhciAqYmF0Y2hfcmVh ZGxpbmUoTElORV9CVUZGRVIgKmJ1ZmZlcik7CiBleHRlcm4gdm9pZCBiYXRjaF9yZWFkbGluZV9l bmQoTElORV9CVUZGRVIgKmJ1ZmZlcik7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnY2xpZW50L215c3Fs LmNjJwotLS0gYS9jbGllbnQvbXlzcWwuY2MJMjAxMC0xMS0yNiAxMzo1Nzo1OSArMDAwMAorKysg Yi9jbGllbnQvbXlzcWwuY2MJMjAxMS0wMi0wNSAwNTowMjowMCArMDAwMApAQCAtMTg3MiwxNCAr MTg3MiwxMyBAQCBzdGF0aWMgaW50IHJlYWRfYW5kX2V4ZWN1dGUoYm9vbCBpbnRlcmFjCiAgIHVs b25nIGxpbmVfbnVtYmVyPTA7CiAgIGJvb2wgbWxfY29tbWVudD0gMDsgIAogICBDT01NQU5EUyAq Y29tOwotICBib29sIHRydW5jYXRlZD0gMDsKICAgc3RhdHVzLmV4aXRfc3RhdHVzPTE7Ci0gIAor CiAgIGZvciAoOzspCiAgIHsKICAgICBpZiAoIWludGVyYWN0aXZlKQogICAgIHsKLSAgICAgIGxp bmU9YmF0Y2hfcmVhZGxpbmUoc3RhdHVzLmxpbmVfYnVmZiwgJnRydW5jYXRlZCk7CisgICAgICBs aW5lPWJhdGNoX3JlYWRsaW5lKHN0YXR1cy5saW5lX2J1ZmYpOwogICAgICAgLyoKICAgICAgICAg U2tpcCBVVEY4IEJ5dGUgT3JkZXIgTWFya2VyIChCT00pIDB4RUZCQkJGLgogICAgICAgICBFZGl0 b3JzIGxpa2UgIm5vdGVwYWQiIHB1dCB0aGlzIG1hcmtlciBpbgpAQCAtMTk1Myw5ICsxOTUyLDEz IEBAIHN0YXRpYyBpbnQgcmVhZF9hbmRfZXhlY3V0ZShib29sIGludGVyYWMKICAgICAgIGlmIChv cHRfb3V0ZmlsZSAmJiBsaW5lKQogCWZwcmludGYoT1VURklMRSwgIiVzXG4iLCBsaW5lKTsKICAg ICB9Ci0gICAgaWYgKCFsaW5lKQkJCQkJLy8gRW5kIG9mIGZpbGUKKyAgICAvLyBFbmQgb2YgZmls ZSBvciBzeXN0ZW0gZXJyb3IKKyAgICBpZiAoIWxpbmUpCiAgICAgewotICAgICAgc3RhdHVzLmV4 aXRfc3RhdHVzPTA7CisgICAgICBpZiAoc3RhdHVzLmxpbmVfYnVmZiAmJiBzdGF0dXMubGluZV9i dWZmLT5lcnJvcikKKyAgICAgICAgc3RhdHVzLmV4aXRfc3RhdHVzPSAxOworICAgICAgZWxzZQor ICAgICAgICBzdGF0dXMuZXhpdF9zdGF0dXM9IDA7CiAgICAgICBicmVhazsKICAgICB9CiAKQEAg LTE5NzYsNyArMTk3OSw4IEBAIHN0YXRpYyBpbnQgcmVhZF9hbmRfZXhlY3V0ZShib29sIGludGVy YWMKICNlbmRpZgogICAgICAgY29udGludWU7CiAgICAgfQotICAgIGlmIChhZGRfbGluZShnbG9i X2J1ZmZlcixsaW5lLCZpbl9zdHJpbmcsJm1sX2NvbW1lbnQsIHRydW5jYXRlZCkpCisgICAgaWYg KGFkZF9saW5lKGdsb2JfYnVmZmVyLCBsaW5lLCAmaW5fc3RyaW5nLCAmbWxfY29tbWVudCwKKyAg ICAgICAgICAgICAgICAgc3RhdHVzLmxpbmVfYnVmZiA/IHN0YXR1cy5saW5lX2J1ZmYtPnRydW5j YXRlZCA6IDApKQogICAgICAgYnJlYWs7CiAgIH0KICAgLyogaWYgaW4gYmF0Y2ggbW9kZSwgc2Vu ZCBsYXN0IHF1ZXJ5IGV2ZW4gaWYgaXQgZG9lc24ndCBlbmQgd2l0aCBcZyBvciBnbyAqLwoKPT09 IG1vZGlmaWVkIGZpbGUgJ2NsaWVudC9yZWFkbGluZS5jYycKLS0tIGEvY2xpZW50L3JlYWRsaW5l LmNjCTIwMDktMDMtMTggMDg6Mjc6NDkgKzAwMDAKKysrIGIvY2xpZW50L3JlYWRsaW5lLmNjCTIw MTEtMDItMDUgMDU6MDI6MDAgKzAwMDAKQEAgLTI0LDcgKzI0LDcgQEAgc3RhdGljIGJvb2wgaW5p dF9saW5lX2J1ZmZlcihMSU5FX0JVRkZFUgogCQkJICAgIHVsb25nIG1heF9zaXplKTsKIHN0YXRp YyBib29sIGluaXRfbGluZV9idWZmZXJfZnJvbV9zdHJpbmcoTElORV9CVUZGRVIgKmJ1ZmZlcixj aGFyICogc3RyKTsKIHN0YXRpYyBzaXplX3QgZmlsbF9idWZmZXIoTElORV9CVUZGRVIgKmJ1ZmZl cik7Ci1zdGF0aWMgY2hhciAqaW50ZXJuX3JlYWRfbGluZShMSU5FX0JVRkZFUiAqYnVmZmVyLCB1 bG9uZyAqb3V0X2xlbmd0aCwgYm9vbCAqdHJ1bmNhdGVkKTsKK3N0YXRpYyBjaGFyICppbnRlcm5f cmVhZF9saW5lKExJTkVfQlVGRkVSICpidWZmZXIsIHVsb25nICpvdXRfbGVuZ3RoKTsKIAogCiBM SU5FX0JVRkZFUiAqYmF0Y2hfcmVhZGxpbmVfaW5pdCh1bG9uZyBtYXhfc2l6ZSxGSUxFICpmaWxl KQpAQCAtNDIsMTMgKzQyLDEyIEBAIExJTkVfQlVGRkVSICpiYXRjaF9yZWFkbGluZV9pbml0KHVs b25nIG0KIH0KIAogCi1jaGFyICpiYXRjaF9yZWFkbGluZShMSU5FX0JVRkZFUiAqbGluZV9idWZm LCBib29sICp0cnVuY2F0ZWQpCitjaGFyICpiYXRjaF9yZWFkbGluZShMSU5FX0JVRkZFUiAqbGlu ZV9idWZmKQogewogICBjaGFyICpwb3M7CiAgIHVsb25nIG91dF9sZW5ndGg7Ci0gIERCVUdfQVNT RVJUKHRydW5jYXRlZCAhPSBOVUxMKTsKIAotICBpZiAoIShwb3M9aW50ZXJuX3JlYWRfbGluZShs aW5lX2J1ZmYsJm91dF9sZW5ndGgsIHRydW5jYXRlZCkpKQorICBpZiAoIShwb3M9aW50ZXJuX3Jl YWRfbGluZShsaW5lX2J1ZmYsICZvdXRfbGVuZ3RoKSkpCiAgICAgcmV0dXJuIDA7CiAgIGlmIChv dXRfbGVuZ3RoICYmIHBvc1tvdXRfbGVuZ3RoLTFdID09ICdcbicpCiAgICAgaWYgKC0tb3V0X2xl bmd0aCAmJiBwb3Nbb3V0X2xlbmd0aC0xXSA9PSAnXHInKSAgLyogUmVtb3ZlICdcbicgKi8KQEAg LTE2Miw3ICsxNjEsMTAgQEAgc3RhdGljIHNpemVfdCBmaWxsX2J1ZmZlcihMSU5FX0JVRkZFUiAq YgogICAgIGlmICghKGJ1ZmZlci0+YnVmZmVyID0gKGNoYXIqKSBteV9yZWFsbG9jKGJ1ZmZlci0+ YnVmZmVyLAogCQkJCQkgICAgICBidWZmZXItPmJ1ZnJlYWQrMSwKIAkJCQkJICAgICAgTVlGKE1Z X1dNRSB8IE1ZX0ZBRSkpKSkKLSAgICAgIHJldHVybiAodWludCkgLTE7CisgICAgeworICAgICAg YnVmZmVyLT5lcnJvcj0gbXlfZXJybm87CisgICAgICByZXR1cm4gKHNpemVfdCkgLTE7CisgICAg fQogICAgIGJ1ZmZlci0+c3RhcnRfb2ZfbGluZT1idWZmZXItPmJ1ZmZlcitzdGFydF9vZmZzZXQ7 CiAgICAgYnVmZmVyLT5lbmQ9YnVmZmVyLT5idWZmZXIrYnVmYnl0ZXM7CiAgIH0KQEAgLTE3Nyw3 ICsxNzksMTAgQEAgc3RhdGljIHNpemVfdCBmaWxsX2J1ZmZlcihMSU5FX0JVRkZFUiAqYgogICAv KiBSZWFkIGluIG5ldyBzdHVmZi4gKi8KICAgaWYgKChyZWFkX2NvdW50PSBteV9yZWFkKGJ1ZmZl ci0+ZmlsZSwgKHVjaGFyKikgYnVmZmVyLT5lbmQsIHJlYWRfY291bnQsCiAJCQkgICBNWUYoTVlf V01FKSkpID09IE1ZX0ZJTEVfRVJST1IpCisgIHsKKyAgICBidWZmZXItPmVycm9yPSBteV9lcnJu bzsKICAgICByZXR1cm4gKHNpemVfdCkgLTE7CisgIH0KIAogICBEQlVHX1BSSU5UKCJmaWxsX2J1 ZmYiLCAoIkdvdCAlbHUgYnl0ZXMiLCAodWxvbmcpIHJlYWRfY291bnQpKTsKIApAQCAtMTk4LDgg KzIwMyw3IEBAIHN0YXRpYyBzaXplX3QgZmlsbF9idWZmZXIoTElORV9CVUZGRVIgKmIKIH0KIAog Ci0KLWNoYXIgKmludGVybl9yZWFkX2xpbmUoTElORV9CVUZGRVIgKmJ1ZmZlciwgdWxvbmcgKm91 dF9sZW5ndGgsIGJvb2wgKnRydW5jYXRlZCkKK2NoYXIgKmludGVybl9yZWFkX2xpbmUoTElORV9C VUZGRVIgKmJ1ZmZlciwgdWxvbmcgKm91dF9sZW5ndGgpCiB7CiAgIGNoYXIgKnBvczsKICAgc2l6 ZV90IGxlbmd0aDsKQEAgLTIxNCwyMiArMjE4LDI1IEBAIGNoYXIgKmludGVybl9yZWFkX2xpbmUo TElORV9CVUZGRVIgKmJ1ZmYKICAgICBpZiAocG9zID09IGJ1ZmZlci0+ZW5kKQogICAgIHsKICAg ICAgIC8qCi0gICAgICAgIGZpbGxfYnVmZmVyKCkgY2FuIHJldHVybiAwIGVpdGhlciBvbiBFT0Yg aW4gd2hpY2ggY2FzZSB3ZSBhYm9ydAotICAgICAgICBvciB3aGVuIHRoZSBpbnRlcm5hbCBidWZm ZXIgaGFzIGhpdCB0aGUgc2l6ZSBsaW1pdC4gSW4gdGhlIGxhdHRlciBjYXNlCi0gICAgICAgIHJl dHVybiB3aGF0IHdlIGhhdmUgcmVhZCBzbyBmYXIgYW5kIHNpZ25hbCBzdHJpbmcgdHJ1bmNhdGlv bi4KKyAgICAgICAgZmlsbF9idWZmZXIoKSBjYW4gcmV0dXJuIE5VTEwgb24gRU9GIChpbiB3aGlj aCBjYXNlIHdlIGFib3J0KSwKKyAgICAgICAgb24gZXJyb3IsIG9yIHdoZW4gdGhlIGludGVybmFs IGJ1ZmZlciBoYXMgaGl0IHRoZSBzaXplIGxpbWl0LgorICAgICAgICBJbiB0aGUgbGF0dGVyIGNh c2UgcmV0dXJuIHdoYXQgd2UgaGF2ZSByZWFkIHNvIGZhciBhbmQgc2lnbmFsCisgICAgICAgIHN0 cmluZyB0cnVuY2F0aW9uLgogICAgICAgKi8KLSAgICAgIGlmICghKGxlbmd0aD1maWxsX2J1ZmZl cihidWZmZXIpKSB8fCBsZW5ndGggPT0gKHVpbnQpIC0xKQorICAgICAgaWYgKCEobGVuZ3RoPSBm aWxsX2J1ZmZlcihidWZmZXIpKSkKICAgICAgIHsKICAgICAgICAgaWYgKGJ1ZmZlci0+ZW9mKQog ICAgICAgICAgIERCVUdfUkVUVVJOKDApOwogICAgICAgfQorICAgICAgZWxzZSBpZiAobGVuZ3Ro ID09IChzaXplX3QpIC0xKQorICAgICAgICBEQlVHX1JFVFVSTihOVUxMKTsKICAgICAgIGVsc2UK ICAgICAgICAgY29udGludWU7CiAgICAgICBwb3MtLTsJCQkJCS8qIGJyZWFrIGxpbmUgaGVyZSAq LwotICAgICAgKnRydW5jYXRlZD0gMTsKKyAgICAgIGJ1ZmZlci0+dHJ1bmNhdGVkPSAxOwogICAg IH0KICAgICBlbHNlCi0gICAgICAqdHJ1bmNhdGVkPSAwOworICAgICAgYnVmZmVyLT50cnVuY2F0 ZWQ9IDA7CiAgICAgYnVmZmVyLT5lbmRfb2ZfbGluZT1wb3MrMTsKICAgICAqb3V0X2xlbmd0aD0o dWxvbmcpIChwb3MgKyAxIC0gYnVmZmVyLT5lb2YgLSBidWZmZXItPnN0YXJ0X29mX2xpbmUpOwog ICAgIERCVUdfUkVUVVJOKGJ1ZmZlci0+c3RhcnRfb2ZfbGluZSk7Cgo9PT0gbW9kaWZpZWQgZmls ZSAnaW5jbHVkZS9teV9wdGhyZWFkLmgnCi0tLSBhL2luY2x1ZGUvbXlfcHRocmVhZC5oCTIwMTEt MDEtMDcgMTk6Mjg6MDYgKzAwMDAKKysrIGIvaW5jbHVkZS9teV9wdGhyZWFkLmgJMjAxMS0wMS0y NSAxNDo0Mjo0MCArMDAwMApAQCAtMSw0ICsxLDQgQEAKLS8qIENvcHlyaWdodCAoQykgMjAwMCBN eVNRTCBBQgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBh ZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKCj09PSBtb2RpZmllZCBmaWxlICdpbmNsdWRlL215X3N5cy5oJwotLS0gYS9pbmNs dWRlL215X3N5cy5oCTIwMTEtMDEtMDcgMTg6MzM6MzYgKzAwMDAKKysrIGIvaW5jbHVkZS9teV9z eXMuaAkyMDExLTAxLTI1IDE0OjQyOjQwICswMDAwCkBAIC0xLDQgKzEsNCBAQAotLyogQ29weXJp Z2h0IChjKSAyMDAwLCAyMDEwLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmln aHRzIHJlc2VydmVkLgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29y IGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQog ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L2NvbGxlY3Rpb25z L2RlZmF1bHQud2Vla2x5JwotLS0gYS9teXNxbC10ZXN0L2NvbGxlY3Rpb25zL2RlZmF1bHQud2Vl a2x5CTIwMTEtMDEtMDYgMTA6Mzk6NDUgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9jb2xsZWN0aW9u cy9kZWZhdWx0LndlZWtseQkyMDExLTAyLTA4IDA2OjAwOjM1ICswMDAwCkBAIC0xLDQgKzEsMyBA QAotcGVybCBteXNxbC10ZXN0LXJ1bi5wbCAtLXRpbWVyIC0tZm9yY2UgLS1jb21tZW50PTFzdCAg ICAgICAtLWV4cGVyaW1lbnRhbD1jb2xsZWN0aW9ucy9kZWZhdWx0LmV4cGVyaW1lbnRhbCAxc3QK IHBlcmwgbXlzcWwtdGVzdC1ydW4ucGwgLS10aW1lciAtLWZvcmNlIC0tY29tbWVudD1iaWctdGVz dHMgLS1leHBlcmltZW50YWw9Y29sbGVjdGlvbnMvZGVmYXVsdC5leHBlcmltZW50YWwgLS12YXJk aXI9dmFyLWJpZy10ZXN0cyAtLWJpZy10ZXN0IC0tdGVzdGNhc2UtdGltZW91dD02MCAtLXN1aXRl LXRpbWVvdXQ9NjAwIHBhcnRzLnBhcnRpdGlvbl9hbHRlcjFfMl9uZGIgcGFydHMucGFydF9zdXBw b3J0ZWRfc3FsX2Z1bmNfaW5ub2RiIHBhcnRzLnBhcnRpdGlvbl9hbHRlcjFfMl9pbm5vZGIgcGFy dHMucGFydGl0aW9uX2FsdGVyNF9pbm5vZGIgcGFydHMucGFydGl0aW9uX2FsdGVyMV8xXzJfbmRi IHBhcnRzLnBhcnRpdGlvbl9hbHRlcjFfMV8yX2lubm9kYiBwYXJ0cy5wYXJ0aXRpb25fYWx0ZXIx XzFfbmRiIHJwbF9uZGIucnBsX3RydW5jYXRlXzduZGJfMiBtYWluLmFyY2hpdmUtYmlnIG1haW4u c3VtX2Rpc3RpbmN0LWJpZyBtYWluLm15c3FsYmlubG9nX3Jvd19iaWcgbWFpbi5hbHRlcl90YWJs ZS1iaWcgbWFpbi52YXJpYWJsZXMtYmlnIG1haW4udHlwZV9uZXdkZWNpbWFsLWJpZyBtYWluLnJl YWRfbWFueV9yb3dzX2lubm9kYiBtYWluLmxvZ190YWJsZXMtYmlnIG1haW4uY291bnRfZGlzdGlu Y3QzIG1haW4uZXZlbnRzX3RpbWVfem9uZSBtYWluLm1lcmdlLWJpZyBtYWluLmNyZWF0ZS1iaWcg bWFpbi5ldmVudHNfc3RyZXNzIG1haW4uc3NsLWJpZyBmdW5jc18xLm15aXNhbV92aWV3cy1iaWcK IHBlcmwgbXlzcWwtdGVzdC1ydW4ucGwgLS10aW1lciAtLWZvcmNlIC0tcGFyYWxsZWw9YXV0byAt LWNvbW1lbnQ9ZWl0cy10ZXN0cy1teWlzYW0tZW5naW5lIC0tZXhwZXJpbWVudGFsPWNvbGxlY3Rp b25zL2RlZmF1bHQuZXhwZXJpbWVudGFsIC0tdmFyZGlyPXZhci1zdG10LWVpdHMtdGVzdHMtbXlp c2FtLWVuZ2luZSAtLXN1aXRlPWVuZ2luZXMvaXVkcyxlbmdpbmVzL2Z1bmNzIC0tc3VpdGUtdGlt ZW91dD01MDAgLS1tYXgtdGVzdC1mYWlsPTAgLS1yZXRyeS1mYWlsdXJlPTAgLS1teXNxbGQ9LS1k ZWZhdWx0LXN0b3JhZ2UtZW5naW5lPW15aXNhbSAKIHBlcmwgbXlzcWwtdGVzdC1ydW4ucGwgLS10 aW1lciAtLWZvcmNlIC0tcGFyYWxsZWw9YXV0byAtLWNvbW1lbnQ9ZWl0cy1ycGwtYmlubG9nLXJv dy10ZXN0cy1teWlzYW0tZW5naW5lIC0tZXhwZXJpbWVudGFsPWNvbGxlY3Rpb25zL2RlZmF1bHQu ZXhwZXJpbWVudGFsIC0tdmFyZGlyPXZhci1iaW5sb2ctcm93LWVpdHMtdGVzdHMtbXlpc2FtLWVu Z2luZSAtLXN1aXRlPWVuZ2luZXMvaXVkcyxlbmdpbmVzL2Z1bmNzIC0tc3VpdGUtdGltZW91dD01 MDAgLS1tYXgtdGVzdC1mYWlsPTAgLS1yZXRyeS1mYWlsdXJlPTAgLS1teXNxbGQ9LS1kZWZhdWx0 LXN0b3JhZ2UtZW5naW5lPW15aXNhbSAtLWRvLXRlc3Q9cnBsIC0tbXlzcWxkPS0tYmlubG9nLWZv cm1hdD1yb3cKCj09PSByZW1vdmVkIGZpbGUgJ215c3FsLXRlc3QvY29sbGVjdGlvbnMvbXlzcWwt NS4xLWJ1Z3RlYW0uZGFpbHknCi0tLSBhL215c3FsLXRlc3QvY29sbGVjdGlvbnMvbXlzcWwtNS4x LWJ1Z3RlYW0uZGFpbHkJMjAxMC0xMS0wOCAwOToyNzowNSArMDAwMAorKysgYi9teXNxbC10ZXN0 L2NvbGxlY3Rpb25zL215c3FsLTUuMS1idWd0ZWFtLmRhaWx5CTE5NzAtMDEtMDEgMDA6MDA6MDAg KzAwMDAKQEAgLTEsNSArMCwwIEBACi1wZXJsIG15c3FsLXRlc3QtcnVuLnBsIC0tdGltZXIgLS1m b3JjZSAtLXBhcmFsbGVsPWF1dG8gLS1jb21tZW50PW5fbWl4IC0tdmFyZGlyPXZhci1uX21peCAt LW15c3FsZD0tLWJpbmxvZy1mb3JtYXQ9bWl4ZWQgLS1leHBlcmltZW50YWw9Y29sbGVjdGlvbnMv ZGVmYXVsdC5leHBlcmltZW50YWwKLXBlcmwgbXlzcWwtdGVzdC1ydW4ucGwgLS10aW1lciAtLWZv cmNlIC0tcGFyYWxsZWw9YXV0byAtLWNvbW1lbnQ9cHNfcm93IC0tdmFyZGlyPXZhci1wc19yb3cg LS1wcy1wcm90b2NvbCAtLW15c3FsZD0tLWJpbmxvZy1mb3JtYXQ9cm93IC0tZXhwZXJpbWVudGFs PWNvbGxlY3Rpb25zL2RlZmF1bHQuZXhwZXJpbWVudGFsCi1wZXJsIG15c3FsLXRlc3QtcnVuLnBs IC0tdGltZXIgLS1mb3JjZSAtLXBhcmFsbGVsPWF1dG8gLS1jb21tZW50PWVtYmVkZGVkIC0tdmFy ZGlyPXZhci1lbWViYmVkICAtLWVtYmVkZGVkIC0tZXhwZXJpbWVudGFsPWNvbGxlY3Rpb25zL2Rl ZmF1bHQuZXhwZXJpbWVudGFsCi1wZXJsIG15c3FsLXRlc3QtcnVuLnBsIC0tdGltZXIgLS1mb3Jj ZSAtLXBhcmFsbGVsPWF1dG8gLS1jb21tZW50PXJwbF9iaW5sb2dfcm93IC0tdmFyZGlyPXZhci1y cGxfYmlubG9nX3JvdyAgLS1zdWl0ZT1ycGwsYmlubG9nIC0tbXlzcWxkPS0tYmlubG9nLWZvcm1h dD1yb3cgLS1leHBlcmltZW50YWw9Y29sbGVjdGlvbnMvZGVmYXVsdC5leHBlcmltZW50YWwKLXBl cmwgbXlzcWwtdGVzdC1ydW4ucGwgLS10aW1lciAtLWZvcmNlIC0tcGFyYWxsZWw9YXV0byAtLWNv bW1lbnQ9ZnVuY3NfMSAtLXZhcmRpcj12YXItZnVuY3NfMSAtLXN1aXRlPWZ1bmNzXzEgLS1leHBl cmltZW50YWw9Y29sbGVjdGlvbnMvZGVmYXVsdC5leHBlcmltZW50YWwKCj09PSByZW1vdmVkIGZp bGUgJ215c3FsLXRlc3QvY29sbGVjdGlvbnMvbXlzcWwtNS4xLWJ1Z3RlYW0ucHVzaCcKLS0tIGEv bXlzcWwtdGVzdC9jb2xsZWN0aW9ucy9teXNxbC01LjEtYnVndGVhbS5wdXNoCTIwMTAtMTEtMDgg MDk6Mjc6MDUgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9jb2xsZWN0aW9ucy9teXNxbC01LjEtYnVn dGVhbS5wdXNoCTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKQEAgLTEsNCArMCwwIEBACi1wZXJs IG15c3FsLXRlc3QtcnVuLnBsIC0tdGltZXIgLS1mb3JjZSAtLXBhcmFsbGVsPWF1dG8gLS1jb21t ZW50PW5fbWl4IC0tdmFyZGlyPXZhci1uX21peCAtLW15c3FsZD0tLWJpbmxvZy1mb3JtYXQ9bWl4 ZWQgLS1leHBlcmltZW50YWw9Y29sbGVjdGlvbnMvZGVmYXVsdC5leHBlcmltZW50YWwgLS1za2lw LW5kYgotcGVybCBteXNxbC10ZXN0LXJ1bi5wbCAtLXRpbWVyIC0tZm9yY2UgLS1wYXJhbGxlbD1h dXRvIC0tY29tbWVudD1wc19yb3cgLS12YXJkaXI9dmFyLXBzX3JvdyAtLXN1aXRlPW1haW4gLS1w cy1wcm90b2NvbCAtLW15c3FsZD0tLWJpbmxvZy1mb3JtYXQ9cm93IC0tZXhwZXJpbWVudGFsPWNv bGxlY3Rpb25zL2RlZmF1bHQuZXhwZXJpbWVudGFsIC0tc2tpcC1uZGIKLXBlcmwgbXlzcWwtdGVz dC1ydW4ucGwgLS10aW1lciAtLWZvcmNlIC0tcGFyYWxsZWw9YXV0byAtLWNvbW1lbnQ9ZW1iZWRk ZWQgLS12YXJkaXI9dmFyLWVtZWJiZWQgIC0tc3VpdGU9bWFpbiAtLWVtYmVkZGVkIC0tZXhwZXJp bWVudGFsPWNvbGxlY3Rpb25zL2RlZmF1bHQuZXhwZXJpbWVudGFsIC0tc2tpcC1uZGIKLXBlcmwg bXlzcWwtdGVzdC1ydW4ucGwgLS10aW1lciAtLWZvcmNlIC0tcGFyYWxsZWw9YXV0byAtLWNvbW1l bnQ9ZnVuY3NfMSAtLXZhcmRpcj12YXItZnVuY3NfMSAtLXN1aXRlPWZ1bmNzXzEgLS1leHBlcmlt ZW50YWw9Y29sbGVjdGlvbnMvZGVmYXVsdC5leHBlcmltZW50YWwgLS1za2lwLW5kYgoKPT09IG1v ZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvaW5jbHVkZS9teXNxbGhvdGNvcHkuaW5jJwotLS0gYS9t eXNxbC10ZXN0L2luY2x1ZGUvbXlzcWxob3Rjb3B5LmluYwkyMDExLTAxLTI5IDExOjM4OjM2ICsw MDAwCisrKyBiL215c3FsLXRlc3QvaW5jbHVkZS9teXNxbGhvdGNvcHkuaW5jCTIwMTEtMDItMDgg MDk6NTE6MDkgKzAwMDAKQEAgLTEwNyw3ICsxMDcsNyBAQCBEUk9QIERBVEFCQVNFIGhvdGNvcHlf c2F2ZTsKIC0tcmVwbGFjZV9yZXN1bHQgJE1ZU1FMRF9EQVRBRElSIE1ZU1FMRF9EQVRBRElSCiAt LWxpc3RfZmlsZXMgJE1ZU1FMRF9EQVRBRElSL2hvdGNvcHlfc2F2ZQogLS1yZXBsYWNlX3Jlc3Vs dCAkTUFTVEVSX01ZU09DSyBNQVNURVJfTVlTT0NLCi0tLWVycm9yIDksMjMwNAorLS1lcnJvciA5 LDExLDIzMDQKIC0tZXhlYyAkTVlTUUxIT1RDT1BZIC0tcXVpZXQgLVMgJE1BU1RFUl9NWVNPQ0sg LXUgcm9vdCBob3Rjb3B5X3Rlc3QgaG90Y29weV9zYXZlCiAtLXJlcGxhY2VfcmVzdWx0ICRNQVNU RVJfTVlTT0NLIE1BU1RFUl9NWVNPQ0sKIC0tZXhlYyAkTVlTUUxIT1RDT1BZIC0tcXVpZXQgLS1h bGxvd29sZCAtUyAkTUFTVEVSX01ZU09DSyAtdSByb290IGhvdGNvcHlfdGVzdCBob3Rjb3B5X3Nh dmUKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L2luY2x1ZGUvcnBsX3N5bmMuaW5jJwot LS0gYS9teXNxbC10ZXN0L2luY2x1ZGUvcnBsX3N5bmMuaW5jCTIwMTAtMTItMTkgMTc6MDc6Mjgg KzAwMDAKKysrIGIvbXlzcWwtdGVzdC9pbmNsdWRlL3JwbF9zeW5jLmluYwkyMDExLTAyLTAzIDE2 OjA5OjMzICswMDAwCkBAIC04OCw3ICs4OCw3IEBAIHdoaWxlICgkX3JwbF9pKSB7CiAgICAgICB7 CiAgICAgICAgIC0tZWNobyBTeW5jIElPOiAkX3JwbF9zbGF2ZV9pb19ydW5uaW5nOyBTeW5jIFNR TDogJF9ycGxfc2xhdmVfc3FsX3J1bm5pbmcKICAgICAgIH0KLSAgICAgIC0tbGV0ICRfcnBsX3Ns YXZlX2lvX3J1bm5pbmc9IGBTRUxFQ1QgSUYoJyRfcnBsX3NsYXZlX2lvX3J1bm5pbmcnID0gJ1ll cycsIDEsICcnKWAKKyAgICAgIC0tbGV0ICRfcnBsX3NsYXZlX2lvX3J1bm5pbmc9IGBTRUxFQ1Qg SUYoJyRfcnBsX3NsYXZlX2lvX3J1bm5pbmcnICE9ICdObycsIDEsICcnKWAKICAgICAgIC0tbGV0 ICRfcnBsX3NsYXZlX3NxbF9ydW5uaW5nPSBgU0VMRUNUIElGKCckX3JwbF9zbGF2ZV9zcWxfcnVu bmluZycgPSAnWWVzJywgMSwgJycpYAogICAgICAgaWYgKCRfcnBsX3NsYXZlX2lvX3J1bm5pbmcp CiAgICAgICB7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9teXNxbC10ZXN0LXJ1bi5w bCcKLS0tIGEvbXlzcWwtdGVzdC9teXNxbC10ZXN0LXJ1bi5wbAkyMDExLTAyLTA3IDExOjQyOjIx ICswMDAwCisrKyBiL215c3FsLXRlc3QvbXlzcWwtdGVzdC1ydW4ucGwJMjAxMS0wMi0wOCAxMTo1 MjozMyArMDAwMApAQCAtMjA1NSw2ICsyMDU1LDE2IEBAIHN1YiBlbnZpcm9ubWVudF9zZXR1cCB7 CiAgICRFTlZ7J0RFRkFVTFRfTUFTVEVSX1BPUlQnfT0gJG15c3FsZF92YXJpYWJsZXN7J21hc3Rl ci1wb3J0J30gfHwgMzMwNjsKICAgJEVOVnsnTVlTUUxfVE1QX0RJUid9PSAgICAgICRvcHRfdG1w ZGlyOwogICAkRU5WeydNWVNRTFRFU1RfVkFSRElSJ309ICAgJG9wdF92YXJkaXI7CisgIAorICBp ZiAoSVNfV0lORE9XUykKKyAgeworICAgICRFTlZ7J1NFQ1VSRV9MT0FEX1BBVEgnfT0gJGdsb2Jf bXlzcWxfdGVzdF9kaXIuIlxcc3RkX2RhdGEiOworICB9CisgIGVsc2UKKyAgeworICAgICRFTlZ7 J1NFQ1VSRV9MT0FEX1BBVEgnfT0gJGdsb2JfbXlzcWxfdGVzdF9kaXIuIi9zdGRfZGF0YSI7Cisg IH0KKyAgICAKIAogICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAgIyBTZXR1cCBlbnYgZm9yIE5EQgoKPT09IG1vZGlmaWVkIGZpbGUgJ215 c3FsLXRlc3Qvci9ncmFudC5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9ncmFudC5yZXN1bHQJ MjAxMC0xMC0xMyAwNToyODo1OCArMDAwMAorKysgYi9teXNxbC10ZXN0L3IvZ3JhbnQucmVzdWx0 CTIwMTAtMTItMTUgMTY6MDg6MjEgKzAwMDAKQEAgLTEyNTIsNiArMTI1Miw4MCBAQCBDVVJSRU5U X1VTRVIoKQogcm9vdEBsb2NhbGhvc3QKIFNFVCBQQVNTV09SRCBGT1IgQ1VSUkVOVF9VU0VSKCkg PSBQQVNTV09SRCgiYWRtaW4iKTsKIFNFVCBQQVNTV09SRCBGT1IgQ1VSUkVOVF9VU0VSKCkgPSBQ QVNTV09SRCgiIik7CisKKyMgQnVnIzU3OTUyCisKK0RST1AgREFUQUJBU0UgSUYgRVhJU1RTIG15 c3FsdGVzdDE7CitEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBteXNxbHRlc3QyOworQ1JFQVRFIERB VEFCQVNFIG15c3FsdGVzdDE7CitDUkVBVEUgREFUQUJBU0UgbXlzcWx0ZXN0MjsKK3VzZSBteXNx bHRlc3QxOworQ1JFQVRFIFRBQkxFIHQxKGEgSU5ULCBiIElOVCk7CitJTlNFUlQgSU5UTyB0MSBW QUxVRVMgKDEsIDEpOworQ1JFQVRFIFRBQkxFIHQyKGEgSU5UKTsKK0lOU0VSVCBJTlRPIHQyIFZB TFVFUyAoMik7CitDUkVBVEUgVEFCTEUgbXlzcWx0ZXN0Mi50MyhhIElOVCk7CitJTlNFUlQgSU5U TyBteXNxbHRlc3QyLnQzIFZBTFVFUyAoNCk7CitDUkVBVEUgVVNFUiB0ZXN0dXNlckBsb2NhbGhv c3Q7CitHUkFOVCBDUkVBVEUgUk9VVElORSwgRVhFQ1VURSBPTiBteXNxbHRlc3QxLiogVE8gdGVz dHVzZXJAbG9jYWxob3N0OworR1JBTlQgU0VMRUNUKGIpIE9OIHQxIFRPIHRlc3R1c2VyQGxvY2Fs aG9zdDsKK0dSQU5UIFNFTEVDVCAgICBPTiB0MiBUTyB0ZXN0dXNlckBsb2NhbGhvc3Q7CitHUkFO VCBTRUxFQ1QgICAgT04gbXlzcWx0ZXN0Mi4qIFRPIHRlc3R1c2VyQGxvY2FsaG9zdDsKKworIyBD b25uZWN0aW9uOiBidWc1Nzk1Ml9jb24xICh0ZXN0dXNlckBsb2NhbGhvc3QsIGRiOiBteXNxbHRl c3QxKQorUFJFUEFSRSBzMSBGUk9NICdTRUxFQ1QgYiBGUk9NIHQxJzsKK1BSRVBBUkUgczIgRlJP TSAnU0VMRUNUIGEgRlJPTSB0Mic7CitQUkVQQVJFIHMzIEZST00gJ1NIT1cgVEFCTEVTIEZST00g bXlzcWx0ZXN0Mic7CitDUkVBVEUgUFJPQ0VEVVJFIHAxKCkgU0VMRUNUIGIgRlJPTSB0MTsKK0NS RUFURSBQUk9DRURVUkUgcDIoKSBTRUxFQ1QgYSBGUk9NIHQyOworQ1JFQVRFIFBST0NFRFVSRSBw MygpIFNIT1cgVEFCTEVTIEZST00gbXlzcWx0ZXN0MjsKK0NBTEwgcDE7CitiCisxCitDQUxMIHAy OworYQorMgorQ0FMTCBwMzsKK1RhYmxlc19pbl9teXNxbHRlc3QyCit0MworCisjIENvbm5lY3Rp b246IGRlZmF1bHQKK1JFVk9LRSBTRUxFQ1QgT04gdDEgRlJPTSB0ZXN0dXNlckBsb2NhbGhvc3Q7 CitHUkFOVCBTRUxFQ1QoYSkgT04gdDEgVE8gdGVzdHVzZXJAbG9jYWxob3N0OworUkVWT0tFIFNF TEVDVCBPTiB0MiBGUk9NIHRlc3R1c2VyQGxvY2FsaG9zdDsKK1JFVk9LRSBTRUxFQ1QgT04gbXlz cWx0ZXN0Mi4qIEZST00gdGVzdHVzZXJAbG9jYWxob3N0OworCisjIENvbm5lY3Rpb246IGJ1ZzU3 OTUyX2NvbjEgKHRlc3R1c2VyQGxvY2FsaG9zdCwgZGI6IG15c3FsdGVzdDEpCisjICAgLSBDaGVj ayBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcy4uLgorRVhFQ1VURSBzMTsKK0VSUk9SIDQyMDAwOiBT RUxFQ1QgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAndGVzdHVzZXInQCdsb2NhbGhvc3QnIGZvciBj b2x1bW4gJ2InIGluIHRhYmxlICd0MScKK1NFTEVDVCBiIEZST00gdDE7CitFUlJPUiA0MjAwMDog U0VMRUNUIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJ3Rlc3R1c2VyJ0AnbG9jYWxob3N0JyBmb3Ig Y29sdW1uICdiJyBpbiB0YWJsZSAndDEnCitFWEVDVVRFIHMxOworRVJST1IgNDIwMDA6IFNFTEVD VCBjb21tYW5kIGRlbmllZCB0byB1c2VyICd0ZXN0dXNlcidAJ2xvY2FsaG9zdCcgZm9yIGNvbHVt biAnYicgaW4gdGFibGUgJ3QxJworQ0FMTCBwMTsKK0VSUk9SIDQyMDAwOiBTRUxFQ1QgY29tbWFu ZCBkZW5pZWQgdG8gdXNlciAndGVzdHVzZXInQCdsb2NhbGhvc3QnIGZvciBjb2x1bW4gJ2InIGlu IHRhYmxlICd0MScKKyMgICAtIENoZWNrIHRhYmxlLWxldmVsIHByaXZpbGVnZXMuLi4KK1NFTEVD VCBhIEZST00gdDI7CitFUlJPUiA0MjAwMDogU0VMRUNUIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIg J3Rlc3R1c2VyJ0AnbG9jYWxob3N0JyBmb3IgdGFibGUgJ3QyJworRVhFQ1VURSBzMjsKK0VSUk9S IDQyMDAwOiBTRUxFQ1QgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAndGVzdHVzZXInQCdsb2NhbGhv c3QnIGZvciB0YWJsZSAndDInCitDQUxMIHAyOworRVJST1IgNDIwMDA6IFNFTEVDVCBjb21tYW5k IGRlbmllZCB0byB1c2VyICd0ZXN0dXNlcidAJ2xvY2FsaG9zdCcgZm9yIHRhYmxlICd0MicKKyMg ICAtIENoZWNrIGRhdGFiYXNlLWxldmVsIHByaXZpbGVnZXMuLi4KK1NIT1cgVEFCTEVTIEZST00g bXlzcWx0ZXN0MjsKK0VSUk9SIDQyMDAwOiBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICd0ZXN0dXNl cidAJ2xvY2FsaG9zdCcgdG8gZGF0YWJhc2UgJ215c3FsdGVzdDInCitFWEVDVVRFIHMzOworRVJS T1IgNDIwMDA6IEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJ3Rlc3R1c2VyJ0AnbG9jYWxob3N0JyB0 byBkYXRhYmFzZSAnbXlzcWx0ZXN0MicKK0NBTEwgcDM7CitFUlJPUiA0MjAwMDogQWNjZXNzIGRl bmllZCBmb3IgdXNlciAndGVzdHVzZXInQCdsb2NhbGhvc3QnIHRvIGRhdGFiYXNlICdteXNxbHRl c3QyJworCisjIENvbm5lY3Rpb246IGRlZmF1bHQKK0RST1AgREFUQUJBU0UgbXlzcWx0ZXN0MTsK K0RST1AgREFUQUJBU0UgbXlzcWx0ZXN0MjsKK0RST1AgVVNFUiB0ZXN0dXNlckBsb2NhbGhvc3Q7 Cit1c2UgdGVzdDsKKwogRW5kIG9mIDUuMCB0ZXN0cwogc2V0IG5hbWVzIHV0Zjg7CiBncmFudCBz ZWxlY3Qgb24gdGVzdC4qIHRvIO+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vV/vv73vv73vv73vv73v v73vv73vv73vv71AbG9jYWxob3N0OwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9v cmRlcl9ieS5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9vcmRlcl9ieS5yZXN1bHQJMjAxMC0w OS0xMyAxMTozMzoxOSArMDAwMAorKysgYi9teXNxbC10ZXN0L3Ivb3JkZXJfYnkucmVzdWx0CTIw MTEtMDItMDcgMDk6MzY6MjEgKzAwMDAKQEAgLTE2MzgsNCArMTYzOCwyOSBAQCBpZAlzZWxlY3Rf dHlwZQl0YWJsZQl0eXBlCXBvc3NpYmxlX2tleXMKIDEJU0lNUExFCXQxCWluZGV4CU5VTEwJYQk4 CU5VTEwJMTAJVXNpbmcgaW5kZXg7IFVzaW5nIHRlbXBvcmFyeTsgVXNpbmcgZmlsZXNvcnQKIDEJ U0lNUExFCXQyCWVxX3JlZglQUklNQVJZCVBSSU1BUlkJNAl0ZXN0LnQxLmIJMQlVc2luZyB3aGVy ZQogRFJPUCBUQUJMRSB0MSwgdDI7CisjCisjIEJ1ZyAjNTkxMTA6IE1lbW9yeSBsZWFrIG9mIFFV SUNLX1NFTEVDVF9JIGFsbG9jYXRlZCBtZW1vcnkgCisjICBhbmQKKyMgQnVnICM1OTMwODogSW5j b3JyZWN0IHJlc3VsdCBmb3IgCitTRUxFQ1QgRElTVElOQ1QgPGNvbD4uLi4gT1JERVIgQlkgPGNv bD4gREVTQyAKKworIyBVc2UgVmFsZ3JpbmQgdG8gZGV0ZWN0ICM1OTExMCEKKyMKK0NSRUFURSBU QUJMRSB0MSAoYSBJTlQsS0VZIChhKSk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEpLCgyKSwo MyksKDQpLCg1KSwoNiksKDcpLCg4KSwoOSksKDEwKTsKK0VYUExBSU4gU0VMRUNUIERJU1RJTkNU IGEsMSBGUk9NIHQxIFdIRVJFIGEgPD4gMSBPUkRFUiBCWSBhIERFU0M7CitpZAlzZWxlY3RfdHlw ZQl0YWJsZQl0eXBlCXBvc3NpYmxlX2tleXMJa2V5CWtleV9sZW4JcmVmCXJvd3MJRXh0cmEKKzEJ U0lNUExFCXQxCWluZGV4CWEJYQk1CU5VTEwJMTAJVXNpbmcgd2hlcmU7IFVzaW5nIGluZGV4OyBV c2luZyBmaWxlc29ydAorU0VMRUNUIERJU1RJTkNUIGEsMSBGUk9NIHQxIFdIRVJFIGEgPD4gMSBP UkRFUiBCWSBhIERFU0M7CithCTEKKzEwCTEKKzkJMQorOAkxCis3CTEKKzYJMQorNQkxCis0CTEK KzMJMQorMgkxCitEUk9QIFRBQkxFIHQxOwogRW5kIG9mIDUuMSB0ZXN0cwoKPT09IG1vZGlmaWVk IGZpbGUgJ215c3FsLXRlc3Qvci90eXBlX3llYXIucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3Iv dHlwZV95ZWFyLnJlc3VsdAkyMDEwLTAzLTIyIDA4OjMzOjI1ICswMDAwCisrKyBiL215c3FsLXRl c3Qvci90eXBlX3llYXIucmVzdWx0CTIwMTEtMDEtMTIgMDk6Mzc6MTUgKzAwMDAKQEAgLTM0MSw0 ICszNDEsMTggQEAgdGFfeQlzCXRiX3kJcwogMjAwMQkyMDAxCTIwMDEJMjAwMQogRFJPUCBUQUJM RSB0MTsKICMKKyMgQnVnICM1OTIxMTogU2VsZWN0IFJldHVybnMgRGlmZmVyZW50IFZhbHVlIGZv ciBtaW4oeWVhcikgRnVuY3Rpb24KKyMKK0NSRUFURSBUQUJMRSB0MShjMSBZRUFSKDQpKTsKK0lO U0VSVCBJTlRPIHQxIFZBTFVFUyAoMTkwMSksKDIxNTUpLCgwMDAwKTsKK1NFTEVDVCAqIEZST00g dDE7CitjMQorMTkwMQorMjE1NQorMDAwMAorU0VMRUNUIENPVU5UKCopIEFTIHRvdGFsX3Jvd3Ms IE1JTihjMSkgQVMgbWluX3ZhbHVlLCBNQVgoYzEpIEZST00gdDE7Cit0b3RhbF9yb3dzCW1pbl92 YWx1ZQlNQVgoYzEpCiszCTAJMjE1NQorRFJPUCBUQUJMRSB0MTsKKyMKIEVuZCBvZiA1LjEgdGVz dHMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3IvdXNlcl92YXIucmVzdWx0JwotLS0g YS9teXNxbC10ZXN0L3IvdXNlcl92YXIucmVzdWx0CTIwMTAtMTEtMjIgMDg6NTc6NTkgKzAwMDAK KysrIGIvbXlzcWwtdGVzdC9yL3VzZXJfdmFyLnJlc3VsdAkyMDEwLTEyLTA2IDIwOjM4OjMxICsw MDAwCkBAIC00NTAsNCArNDUwLDEwIEBAIERST1AgVEFCTEUgdDE7CiBzZWxlY3QgQHY6PUB2Oj1z dW0oMSkgZnJvbSBkdWFsOwogQHY6PUB2Oj1zdW0oMSkKIDEKK0NSRUFURSBUQUJMRSB0MShhIERF Q0lNQUwoMzEsMjEpKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUyAoMCk7CitTRUxFQ1QgKEB2Oj1h KSA8PiAoQHY6PTEpIEZST00gdDE7CisoQHY6PWEpIDw+IChAdjo9MSkKKzEKK0RST1AgVEFCTEUg dDE7CiBFbmQgb2YgNS4xIHRlc3RzCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0 ZS9iaW5sb2cvci9iaW5sb2dfdW5zYWZlLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9i aW5sb2cvci9iaW5sb2dfdW5zYWZlLnJlc3VsdAkyMDEwLTEyLTIwIDA5OjA3OjM1ICswMDAwCisr KyBiL215c3FsLXRlc3Qvc3VpdGUvYmlubG9nL3IvYmlubG9nX3Vuc2FmZS5yZXN1bHQJMjAxMC0x Mi0yMyAxMTozNTo0MiArMDAwMApAQCAtMjcxLDcgKzI3MSw3IEBAIElOU0VSVCBJTlRPIHQxIFNF TEVDVCAqIEZST00gdDIgTElNSVQgMTsKIERST1AgVEFCTEUgdDEsdDI7CiAiU2hvdWxkIE5PVCBo YXZlIGFueSB3YXJuaW5nIG1lc3NhZ2UgaXNzdWVkIGluIHRoZSBmb2xsb3dpbmcgZnVuYzcoKSBh bmQgdHJpZyIKIENSRUFURSBUQUJMRSB0MSAoYSBJTlQpOwotQ1JFQVRFIFRBQkxFIHQyIChhIENI QVIoNDApKTsKK0NSRUFURSBUQUJMRSB0MiAoYSBURVhUKTsKIENSRUFURSBUQUJMRSB0cmlnZ2Vy X3RhYmxlIChhIENIQVIoNykpOwogQ1JFQVRFIEZVTkNUSU9OIGZ1bmM3KCkKIFJFVFVSTlMgSU5U Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9iaW5sb2cvdC9iaW5sb2dfdW5z YWZlLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvYmlubG9nL3QvYmlubG9nX3Vuc2FmZS50 ZXN0CTIwMTAtMTItMjAgMDk6MDc6MzUgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9iaW5s b2cvdC9iaW5sb2dfdW5zYWZlLnRlc3QJMjAxMC0xMi0yMyAxMTozNTo0MiArMDAwMApAQCAtMzI5 LDcgKzMyOSw3IEBAIERST1AgVEFCTEUgdDEsdDI7CiAKIC0tZWNobyAiU2hvdWxkIE5PVCBoYXZl IGFueSB3YXJuaW5nIG1lc3NhZ2UgaXNzdWVkIGluIHRoZSBmb2xsb3dpbmcgZnVuYzcoKSBhbmQg dHJpZyIKIENSRUFURSBUQUJMRSB0MSAoYSBJTlQpOwotQ1JFQVRFIFRBQkxFIHQyIChhIENIQVIo NDApKTsKK0NSRUFURSBUQUJMRSB0MiAoYSBURVhUKTsKIENSRUFURSBUQUJMRSB0cmlnZ2VyX3Rh YmxlIChhIENIQVIoNykpOwogREVMSU1JVEVSIHw7CiBDUkVBVEUgRlVOQ1RJT04gZnVuYzcoKQoK PT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL3BzX3N0 cmluZ19ub3RfbnVsbC5yZXN1bHQnCkZpbGVzIGEvbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1 bmNzL3IvcHNfc3RyaW5nX25vdF9udWxsLnJlc3VsdAkyMDEwLTAzLTE4IDA2OjQyOjA3ICswMDAw IGFuZCBiL215c3FsLXRlc3Qvc3VpdGUvZW5naW5lcy9mdW5jcy9yL3BzX3N0cmluZ19ub3RfbnVs bC5yZXN1bHQJMjAxMS0wMi0wNyAwNTo0MDozNSArMDAwMCBkaWZmZXIKCj09PSBtb2RpZmllZCBm aWxlICdteXNxbC10ZXN0L3N1aXRlL2VuZ2luZXMvZnVuY3MvdC9wc19zdHJpbmdfbm90X251bGwu dGVzdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9lbmdpbmVzL2Z1bmNzL3QvcHNfc3RyaW5nX25v dF9udWxsLnRlc3QJMjAxMC0wMy0xOCAwNjo0MjowNyArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1 aXRlL2VuZ2luZXMvZnVuY3MvdC9wc19zdHJpbmdfbm90X251bGwudGVzdAkyMDExLTAyLTA3IDA1 OjQwOjM1ICswMDAwCkBAIC0xLDUgKzEsNSBAQAogLS1kaXNhYmxlX3dhcm5pbmdzCi1EUk9QIFRB QkxFIElGIEVYSVNUUyB0MjsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIHQxOwogLS1lbmFibGVfd2Fy bmluZ3MKIENSRUFURSBUQUJMRSB0MShjMSBDSEFSKDEwMCkgTk9UIE5VTEwpOwogUFJFUEFSRSBz dG10MSBGUk9NICdJTlNFUlQgSU5UTyB0MSAoYzEpIFZBTFVFUyg/KSc7Cgo9PT0gYWRkZWQgZmls ZSAnbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3IvaW5ub2RiLWF1dG9pbmMtNTYyMjgu cmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vci9pbm5vZGItYXV0 b2luYy01NjIyOC5yZXN1bHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10 ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vci9pbm5vZGItYXV0b2luYy01NjIyOC5yZXN1bHQJMjAx MC0xMS0zMCAwOToxMToyNiArMDAwMApAQCAtMCwwICsxLDMwIEBACitEUk9QIFRBQkxFIElGIEVY SVNUUyB0MV81NjIyODsKK1dhcm5pbmdzOgorTm90ZQkxMDUxCVVua25vd24gdGFibGUgJ3QxXzU2 MjI4JworRFJPUCBUQUJMRSBJRiBFWElTVFMgdDJfNTYyMjg7CitXYXJuaW5nczoKK05vdGUJMTA1 MQlVbmtub3duIHRhYmxlICd0Ml81NjIyOCcKK0RST1AgRlVOQ1RJT04gSUYgRVhJU1RTIGJ1ZzU2 MjI4OworV2FybmluZ3M6CitOb3RlCTEzMDUJRlVOQ1RJT04gYnVnNTYyMjggZG9lcyBub3QgZXhp c3QKK0NSRUFURSBURU1QT1JBUlkgVEFCTEUgdDFfNTYyMjgoCitjMSBpTlQgQVVUT19JTkNSRU1F TlQgUFJJTUFSWSBLRVkpIEVOR0lORT1Jbm5vREI7CitDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHQy XzU2MjI4KAorYzEgaU5UIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZKSBFTkdJTkU9SW5ub0RC OworQ1JFQVRFIEZVTkNUSU9OIGJ1ZzU2MjI4KCkgUkVUVVJOUyBJTlQgREVURVJNSU5JU1RJQwor QkVHSU4KK0lOU0VSVCBJTlRPIHQxXzU2MjI4IFZBTFVFUyhOVUxMKTsKK0lOU0VSVCBJTlRPIHQy XzU2MjI4IFZBTFVFUyhOVUxMKTsKK0lOU0VSVCBJTlRPIHQxXzU2MjI4IFZBTFVFUyhOVUxMKTsK K0lOU0VSVCBJTlRPIHQyXzU2MjI4IFZBTFVFUyhOVUxMKTsKK0RST1AgVEVNUE9SQVJZIFRBQkxF IHQxXzU2MjI4OworUkVUVVJOIDQyOworRU5EIC8vCitTRUxFQ1QgYnVnNTYyMjgoKTsKK2J1ZzU2 MjI4KCkKKzQyCitEUk9QIEZVTkNUSU9OIGJ1ZzU2MjI4OworRFJPUCBURU1QT1JBUlkgVEFCTEUg dDJfNTYyMjg7CitEUk9QIFRFTVBPUkFSWSBUQUJMRSBJRiBFWElTVFMgdDFfNTYyMjg7CitXYXJu aW5nczoKK05vdGUJMTA1MQlVbmtub3duIHRhYmxlICd0MV81NjIyOCcKCj09PSBhZGRlZCBmaWxl ICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5vZGItYXV0b2luYy01NjIyOC1t YXN0ZXIub3B0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5vZGIt YXV0b2luYy01NjIyOC1tYXN0ZXIub3B0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIv bXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3QvaW5ub2RiLWF1dG9pbmMtNTYyMjgtbWFz dGVyLm9wdAkyMDEwLTExLTMwIDA5OjExOjI2ICswMDAwCkBAIC0wLDAgKzEgQEAKKy0taW5ub2Ri X2F1dG9pbmNfbG9ja19tb2RlPTAKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lu bm9kYl9wbHVnaW4vdC9pbm5vZGItYXV0b2luYy01NjIyOC50ZXN0JwotLS0gYS9teXNxbC10ZXN0 L3N1aXRlL2lubm9kYl9wbHVnaW4vdC9pbm5vZGItYXV0b2luYy01NjIyOC50ZXN0CTE5NzAtMDEt MDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGJfcGx1Z2luL3Qv aW5ub2RiLWF1dG9pbmMtNTYyMjgudGVzdAkyMDEwLTExLTMwIDA5OjExOjI2ICswMDAwCkBAIC0w LDAgKzEsNDIgQEAKKy0tIHNvdXJjZSBpbmNsdWRlL2hhdmVfaW5ub2RiX3BsdWdpbi5pbmMKKwor bGV0ICRpbm5vZGJfZmlsZV9mb3JtYXRfY2hlY2tfb3JpZz1gc2VsZWN0IEBAaW5ub2RiX2ZpbGVf Zm9ybWF0X2NoZWNrYDsKKworIyMKKyMgQnVnICM1NjIyODogZHJvcHBpbmcgdGFibGVzIGZyb20g d2l0aGluIGFuIGFjdGl2ZSBzdGF0ZW1lbnQgY3Jhc2hlcyBzZXJ2ZXIKKyMKK0RST1AgVEFCTEUg SUYgRVhJU1RTIHQxXzU2MjI4OworRFJPUCBUQUJMRSBJRiBFWElTVFMgdDJfNTYyMjg7CitEUk9Q IEZVTkNUSU9OIElGIEVYSVNUUyBidWc1NjIyODsKKworQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0 MV81NjIyOCgKKwljMSBpTlQgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVkpIEVOR0lORT1Jbm5v REI7CitDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIHQyXzU2MjI4KAorCWMxIGlOVCBBVVRPX0lOQ1JF TUVOVCBQUklNQVJZIEtFWSkgRU5HSU5FPUlubm9EQjsKKworREVMSU1JVEVSIC8vOworCitDUkVB VEUgRlVOQ1RJT04gYnVnNTYyMjgoKSBSRVRVUk5TIElOVCBERVRFUk1JTklTVElDCitCRUdJTgor IElOU0VSVCBJTlRPIHQxXzU2MjI4IFZBTFVFUyhOVUxMKTsKKyBJTlNFUlQgSU5UTyB0Ml81NjIy OCBWQUxVRVMoTlVMTCk7CisgSU5TRVJUIElOVE8gdDFfNTYyMjggVkFMVUVTKE5VTEwpOworIElO U0VSVCBJTlRPIHQyXzU2MjI4IFZBTFVFUyhOVUxMKTsKKyBEUk9QIFRFTVBPUkFSWSBUQUJMRSB0 MV81NjIyODsKKyBSRVRVUk4gNDI7CitFTkQgLy8KKworREVMSU1JVEVSIDsvLworCitTRUxFQ1Qg YnVnNTYyMjgoKTsKKworRFJPUCBGVU5DVElPTiBidWc1NjIyODsKK0RST1AgVEVNUE9SQVJZIFRB QkxFIHQyXzU2MjI4OworRFJPUCBURU1QT1JBUlkgVEFCTEUgSUYgRVhJU1RTIHQxXzU2MjI4Owor CisjCisjIHJlc3RvcmUgZW52aXJvbm1lbnQgdG8gdGhlIHN0YXRlIGl0IHdhcyBiZWZvcmUgdGhp cyB0ZXN0IGV4ZWN1dGlvbgorIworCistLSBkaXNhYmxlX3F1ZXJ5X2xvZworZXZhbCBzZXQgZ2xv YmFsIGlubm9kYl9maWxlX2Zvcm1hdF9jaGVjaz0kaW5ub2RiX2ZpbGVfZm9ybWF0X2NoZWNrX29y aWc7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9ycGwvci9ycGxfY2lyY3Vs YXJfZm9yXzRfaG9zdHMucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9j aXJjdWxhcl9mb3JfNF9ob3N0cy5yZXN1bHQJMjAxMC0xMi0xOSAxNzowNzoyOCArMDAwMAorKysg Yi9teXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9jaXJjdWxhcl9mb3JfNF9ob3N0cy5yZXN1bHQJ MjAxMS0wMi0wMyAxNjowOTozMyArMDAwMApAQCAtMTIxLDExICsxMjEsMTEgQEAgTWFzdGVyIEQJ MTIJRAogKiBSZW1vdmUgd3JvbmcgZXZlbnQgZnJvbSBDIGFuZCByZXN0b3JlIEItPkMtPkQgKgog aW5jbHVkZS9zdG9wX3NsYXZlLmluYwogREVMRVRFIEZST00gdDEgV0hFUkUgYSA9IDY7Ci1TVEFS VCBTTEFWRTsKK2luY2x1ZGUvc3RhcnRfc2xhdmUuaW5jCiBSRVNFVCBNQVNURVI7CiBSRVNFVCBT TEFWRTsKIGluY2x1ZGUvcnBsX2NoYW5nZV90b3BvbG9neS5pbmMgW25ldyB0b3BvbG9neT0xLT4y LT4zLT40LT4xXQotU1RBUlQgU0xBVkU7CitpbmNsdWRlL3N0YXJ0X3NsYXZlLmluYwogaW5jbHVk ZS9ycGxfc3luYy5pbmMKIAogKiBDaGVjayBkYXRhIGluc2VydGVkIGJlZm9yZSByZXN0b3Jpbmcg c2NoZW1hIEEtPkItPkMtPkQtPkEgKgoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3Vp dGUvcnBsL3QvcnBsX2NpcmN1bGFyX2Zvcl80X2hvc3RzLnRlc3QnCi0tLSBhL215c3FsLXRlc3Qv c3VpdGUvcnBsL3QvcnBsX2NpcmN1bGFyX2Zvcl80X2hvc3RzLnRlc3QJMjAxMC0xMi0xOSAxNzow NzoyOCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL3JwbC90L3JwbF9jaXJjdWxhcl9mb3Jf NF9ob3N0cy50ZXN0CTIwMTEtMDItMDMgMTY6MDk6MzMgKzAwMDAKQEAgLTE3NSw3ICsxNzUsNyBA QCBTRUxFQ1QgJ01hc3RlciBEJyxhLGIgRlJPTSB0MSBXSEVSRSBjID0KIHNvdXJjZSBpbmNsdWRl L3N0b3Bfc2xhdmUuaW5jOwogLS1jb25uZWN0aW9uIHNlcnZlcl8zCiBERUxFVEUgRlJPTSB0MSBX SEVSRSBhID0gNjsKLVNUQVJUIFNMQVZFOworLS1zb3VyY2UgaW5jbHVkZS9zdGFydF9zbGF2ZS5p bmMKIC0tY29ubmVjdGlvbiBzZXJ2ZXJfMgogLS1zeW5jX3NsYXZlX3dpdGhfbWFzdGVyIHNlcnZl cl8zCiBSRVNFVCBNQVNURVI7CkBAIC0xODksNyArMTg5LDcgQEAgUkVTRVQgU0xBVkU7CiAtLXNv dXJjZSBpbmNsdWRlL3JwbF9jaGFuZ2VfdG9wb2xvZ3kuaW5jCiAjLS1yZXBsYWNlX3Jlc3VsdCAk U0VSVkVSX01ZUE9SVF8zIFNFUlZFUl9NWVBPUlRfMyAkZmlsZV9kIExPR19GSUxFICRwb3NfZCBM T0dfUE9TIAogIy0tZXZhbCBDSEFOR0UgTUFTVEVSIFRPIG1hc3Rlcl9ob3N0PScxMjcuMC4wLjEn LG1hc3Rlcl9wb3J0PSRTRVJWRVJfTVlQT1JUXzMsbWFzdGVyX3VzZXI9J3Jvb3QnLG1hc3Rlcl9s b2dfZmlsZT0nJGZpbGVfZCcsbWFzdGVyX2xvZ19wb3M9JHBvc19kCi1TVEFSVCBTTEFWRTsKKy0t c291cmNlIGluY2x1ZGUvc3RhcnRfc2xhdmUuaW5jCiAtLWNvbm5lY3Rpb24gc2VydmVyXzMKIC0t c3luY19zbGF2ZV93aXRoX21hc3RlciBzZXJ2ZXJfNAogLS1zb3VyY2UgaW5jbHVkZS9ycGxfc3lu Yy5pbmMKCj09PSBhZGRlZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3Ivc2VjdXJl X2ZpbGVfcHJpdjIucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3Ivc2Vj dXJlX2ZpbGVfcHJpdjIucmVzdWx0CTE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAKKysrIGIvbXlz cWwtdGVzdC9zdWl0ZS9zeXNfdmFycy9yL3NlY3VyZV9maWxlX3ByaXYyLnJlc3VsdAkyMDEwLTEy LTE2IDEwOjQ5OjQwICswMDAwCkBAIC0wLDAgKzEsNiBAQAorQ1JFQVRFIFRBQkxFIHQxIChjMSBJ TlQpOworTE9BRCBEQVRBIElORklMRSAidDEuTVlJIiBpbnRvIHRhYmxlIHQxOworRVJST1IgSFkw MDA6IFRoZSBNeVNRTCBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIHRoZSAtLXNlY3VyZS1maWxlLXBy aXYgb3B0aW9uIHNvIGl0IGNhbm5vdCBleGVjdXRlIHRoaXMgc3RhdGVtZW50CitMT0FEIERBVEEg SU5GSUxFICIvdGVzdCIgaW50byB0YWJsZSB0MTsKK0VSUk9SIEhZMDAwOiBUaGUgTXlTUUwgc2Vy dmVyIGlzIHJ1bm5pbmcgd2l0aCB0aGUgLS1zZWN1cmUtZmlsZS1wcml2IG9wdGlvbiBzbyBpdCBj YW5ub3QgZXhlY3V0ZSB0aGlzIHN0YXRlbWVudAorRFJPUCBUQUJMRSB0MTsKCj09PSBhZGRlZCBm aWxlICdteXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3Qvc2VjdXJlX2ZpbGVfcHJpdjItbWFzdGVy Lm9wdCcKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9zeXNfdmFycy90L3NlY3VyZV9maWxlX3ByaXYy LW1hc3Rlci5vcHQJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1 aXRlL3N5c192YXJzL3Qvc2VjdXJlX2ZpbGVfcHJpdjItbWFzdGVyLm9wdAkyMDEwLTEyLTE2IDEw OjQ5OjQwICswMDAwCkBAIC0wLDAgKzEgQEAKKy0tc2VjdXJlX2ZpbGVfcHJpdj0kU0VDVVJFX0xP QURfUEFUSAoKPT09IGFkZGVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9zZWN1 cmVfZmlsZV9wcml2Mi50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL3N5c192YXJzL3Qvc2Vj dXJlX2ZpbGVfcHJpdjIudGVzdAkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL215c3Fs LXRlc3Qvc3VpdGUvc3lzX3ZhcnMvdC9zZWN1cmVfZmlsZV9wcml2Mi50ZXN0CTIwMTAtMTItMTYg MTA6NDk6NDAgKzAwMDAKQEAgLTAsMCArMSwyMyBAQAorIworIyBCdWc1ODc0NyBicmVha3Mgc2Vj dXJlX2ZpbGVfcHJpditub3Qgc2VjdXJlIHlldCtzdGlsbCBhY2Nlc3NlcyBvdGhlciBmb2xkZXJz CisjCitDUkVBVEUgVEFCTEUgdDEgKGMxIElOVCk7CisjCisjIEJlZm9yZSB0aGUgcGF0Y2ggdGhp cyBzdGF0ZW1lbnQgZmFpbGVkIHdpdGgKKyMgTGludXg6CisjICAtPiBlcnJubyAxMzogJ0Nhbid0 IGdldCBzdGF0IG9mICcKKyMgV2luZG93czoKKyMgIC0+IFdhcm5pbmcgMTM2NiBJbmNvcnJlY3Qg aW50ZWdlciB2YWx1ZTogJ++/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vScgZm9yCisjICAtPiAg ICAgICAgICAgICAgY29sdW1uICdjMScgYXQgcm93IDEKKyMgTm93IGl0IHNob3VsZCBjb25zaXN0 ZW50bHkgZmFpbCB3aXRoIEVSX09QVElPTl9QUkVWRU5UU19TVEFURU1FTlQKKyMgb24gYWxsIHBs YXRmb3Jtcy4KKy0tZXJyb3IgRVJfT1BUSU9OX1BSRVZFTlRTX1NUQVRFTUVOVAorTE9BRCBEQVRB IElORklMRSAidDEuTVlJIiBpbnRvIHRhYmxlIHQxOworCisjCisjIFRoZSBmb2xsb3dpbmcgdGVz dCBtYWtlcyB0aGUgYXNzdXB0aW9uIHRoYXQgL3Rlc3QgaXNuJ3QgYSB2YWxpZCBwYXRoIGluIGFu eQorIyBvcGVyYXRpbmcgc3lzdGVtIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUuCistLWVycm9yIEVS X09QVElPTl9QUkVWRU5UU19TVEFURU1FTlQKK0xPQUQgREFUQSBJTkZJTEUgIi90ZXN0IiBpbnRv IHRhYmxlIHQxOworCitEUk9QIFRBQkxFIHQxOwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRl c3QvdC9ncmFudC50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3QvZ3JhbnQudGVzdAkyMDEwLTEwLTEz IDA1OjI4OjU4ICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9ncmFudC50ZXN0CTIwMTAtMTItMTUg MTY6MDg6MjEgKzAwMDAKQEAgLTEyOTUsNiArMTI5NSwxMDcgQEAgU0VMRUNUIENVUlJFTlRfVVNF UigpOwogU0VUIFBBU1NXT1JEIEZPUiBDVVJSRU5UX1VTRVIoKSA9IFBBU1NXT1JEKCJhZG1pbiIp OwogU0VUIFBBU1NXT1JEIEZPUiBDVVJSRU5UX1VTRVIoKSA9IFBBU1NXT1JEKCIiKTsKIAorIwor IyBCdWcjNTc5NTI6IHByaXZpbGVnZSBjaGFuZ2UgaXMgbm90IHRha2VuIGludG8gYWNjb3VudCBi eSBFWEVDVVRFLgorIworCistLWVjaG8KKy0tZWNobyAjIEJ1ZyM1Nzk1MgorLS1lY2hvCisKKy0t ZGlzYWJsZV93YXJuaW5ncworRFJPUCBEQVRBQkFTRSBJRiBFWElTVFMgbXlzcWx0ZXN0MTsKK0RS T1AgREFUQUJBU0UgSUYgRVhJU1RTIG15c3FsdGVzdDI7CistLWVuYWJsZV93YXJuaW5ncworCitD UkVBVEUgREFUQUJBU0UgbXlzcWx0ZXN0MTsKK0NSRUFURSBEQVRBQkFTRSBteXNxbHRlc3QyOwor Cit1c2UgbXlzcWx0ZXN0MTsKK0NSRUFURSBUQUJMRSB0MShhIElOVCwgYiBJTlQpOworSU5TRVJU IElOVE8gdDEgVkFMVUVTICgxLCAxKTsKKworQ1JFQVRFIFRBQkxFIHQyKGEgSU5UKTsKK0lOU0VS VCBJTlRPIHQyIFZBTFVFUyAoMik7CisKK0NSRUFURSBUQUJMRSBteXNxbHRlc3QyLnQzKGEgSU5U KTsKK0lOU0VSVCBJTlRPIG15c3FsdGVzdDIudDMgVkFMVUVTICg0KTsKKworQ1JFQVRFIFVTRVIg dGVzdHVzZXJAbG9jYWxob3N0OworR1JBTlQgQ1JFQVRFIFJPVVRJTkUsIEVYRUNVVEUgT04gbXlz cWx0ZXN0MS4qIFRPIHRlc3R1c2VyQGxvY2FsaG9zdDsKK0dSQU5UIFNFTEVDVChiKSBPTiB0MSBU TyB0ZXN0dXNlckBsb2NhbGhvc3Q7CitHUkFOVCBTRUxFQ1QgICAgT04gdDIgVE8gdGVzdHVzZXJA bG9jYWxob3N0OworR1JBTlQgU0VMRUNUICAgIE9OIG15c3FsdGVzdDIuKiBUTyB0ZXN0dXNlckBs b2NhbGhvc3Q7CisKKy0tZWNobworLS1lY2hvICMgQ29ubmVjdGlvbjogYnVnNTc5NTJfY29uMSAo dGVzdHVzZXJAbG9jYWxob3N0LCBkYjogbXlzcWx0ZXN0MSkKKy0tY29ubmVjdCAoYnVnNTc5NTJf Y29uMSxsb2NhbGhvc3QsdGVzdHVzZXIsLG15c3FsdGVzdDEpCitQUkVQQVJFIHMxIEZST00gJ1NF TEVDVCBiIEZST00gdDEnOworUFJFUEFSRSBzMiBGUk9NICdTRUxFQ1QgYSBGUk9NIHQyJzsKK1BS RVBBUkUgczMgRlJPTSAnU0hPVyBUQUJMRVMgRlJPTSBteXNxbHRlc3QyJzsKKworQ1JFQVRFIFBS T0NFRFVSRSBwMSgpIFNFTEVDVCBiIEZST00gdDE7CitDUkVBVEUgUFJPQ0VEVVJFIHAyKCkgU0VM RUNUIGEgRlJPTSB0MjsKK0NSRUFURSBQUk9DRURVUkUgcDMoKSBTSE9XIFRBQkxFUyBGUk9NIG15 c3FsdGVzdDI7CisKK0NBTEwgcDE7CitDQUxMIHAyOworQ0FMTCBwMzsKKworLS1lY2hvCistLWVj aG8gIyBDb25uZWN0aW9uOiBkZWZhdWx0CistLWNvbm5lY3Rpb24gZGVmYXVsdAorUkVWT0tFIFNF TEVDVCBPTiB0MSBGUk9NIHRlc3R1c2VyQGxvY2FsaG9zdDsKK0dSQU5UIFNFTEVDVChhKSBPTiB0 MSBUTyB0ZXN0dXNlckBsb2NhbGhvc3Q7CitSRVZPS0UgU0VMRUNUIE9OIHQyIEZST00gdGVzdHVz ZXJAbG9jYWxob3N0OworUkVWT0tFIFNFTEVDVCBPTiBteXNxbHRlc3QyLiogRlJPTSB0ZXN0dXNl ckBsb2NhbGhvc3Q7CisKKy0tZWNobworLS1lY2hvICMgQ29ubmVjdGlvbjogYnVnNTc5NTJfY29u MSAodGVzdHVzZXJAbG9jYWxob3N0LCBkYjogbXlzcWx0ZXN0MSkKKy0tY29ubmVjdGlvbiBidWc1 Nzk1Ml9jb24xCistLWVjaG8gIyAgIC0gQ2hlY2sgY29sdW1uLWxldmVsIHByaXZpbGVnZXMuLi4K Ky0tZXJyb3IgRVJfQ09MVU1OQUNDRVNTX0RFTklFRF9FUlJPUgorRVhFQ1VURSBzMTsKKworLS1l cnJvciBFUl9DT0xVTU5BQ0NFU1NfREVOSUVEX0VSUk9SCitTRUxFQ1QgYiBGUk9NIHQxOworCist LWVycm9yIEVSX0NPTFVNTkFDQ0VTU19ERU5JRURfRVJST1IKK0VYRUNVVEUgczE7CisKKy0tZXJy b3IgRVJfQ09MVU1OQUNDRVNTX0RFTklFRF9FUlJPUgorQ0FMTCBwMTsKKworLS1lY2hvICMgICAt IENoZWNrIHRhYmxlLWxldmVsIHByaXZpbGVnZXMuLi4KKy0tZXJyb3IgRVJfVEFCTEVBQ0NFU1Nf REVOSUVEX0VSUk9SCitTRUxFQ1QgYSBGUk9NIHQyOworCistLWVycm9yIEVSX1RBQkxFQUNDRVNT X0RFTklFRF9FUlJPUgorRVhFQ1VURSBzMjsKKworLS1lcnJvciBFUl9UQUJMRUFDQ0VTU19ERU5J RURfRVJST1IKK0NBTEwgcDI7CisKKy0tZWNobyAjICAgLSBDaGVjayBkYXRhYmFzZS1sZXZlbCBw cml2aWxlZ2VzLi4uCistLWVycm9yIEVSX0RCQUNDRVNTX0RFTklFRF9FUlJPUgorU0hPVyBUQUJM RVMgRlJPTSBteXNxbHRlc3QyOworCistLWVycm9yIEVSX0RCQUNDRVNTX0RFTklFRF9FUlJPUgor RVhFQ1VURSBzMzsKKworLS1lcnJvciBFUl9EQkFDQ0VTU19ERU5JRURfRVJST1IKK0NBTEwgcDM7 CisKKy0tZWNobworLS1lY2hvICMgQ29ubmVjdGlvbjogZGVmYXVsdAorLS1jb25uZWN0aW9uIGRl ZmF1bHQKKy0tZGlzY29ubmVjdCBidWc1Nzk1Ml9jb24xCitEUk9QIERBVEFCQVNFIG15c3FsdGVz dDE7CitEUk9QIERBVEFCQVNFIG15c3FsdGVzdDI7CitEUk9QIFVTRVIgdGVzdHVzZXJAbG9jYWxo b3N0OwordXNlIHRlc3Q7CistLWVjaG8KKwogLS1lY2hvIEVuZCBvZiA1LjAgdGVzdHMKIAogIwoK PT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9teXNxbC50ZXN0JwotLS0gYS9teXNxbC10 ZXN0L3QvbXlzcWwudGVzdAkyMDEwLTEyLTAxIDA2OjU1OjMxICswMDAwCisrKyBiL215c3FsLXRl c3QvdC9teXNxbC50ZXN0CTIwMTEtMDItMDUgMDU6MDI6MDAgKzAwMDAKQEAgLTQxMiw2ICs0MTIs MTIgQEAgZHJvcCB0YWJsZSB0MTsKIC0tZWNobwogLS1leGVjICRNWVNRTCAtLXNraXAtY29sdW1u LW5hbWVzIC0tdmVydGljYWwgdGVzdCAtZSAic2VsZWN0IDEgYXMgYSIKIAorIworIyBCdWcjNTc0 NTA6IG15c3FsIGNsaWVudCBlbnRlciBpbiBhbiBpbmZpbml0ZSBsb29wIGlmIHRoZSBzdGFuZGFy ZCBpbnB1dCBpcyBhIGRpcmVjdG9yeQorIworLS1lcnJvciAxCistLWV4ZWMgJE1ZU1FMIDwgLgor CiAtLWVjaG8KIAogLS1lY2hvICMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3Qvb3Jk ZXJfYnkudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L29yZGVyX2J5LnRlc3QJMjAxMC0wOS0xMyAx MTozMzoxOSArMDAwMAorKysgYi9teXNxbC10ZXN0L3Qvb3JkZXJfYnkudGVzdAkyMDExLTAyLTA3 IDA5OjM2OjIxICswMDAwCkBAIC0xNDkyLDQgKzE0OTIsMjEgQEAgTElNSVQgMjsKIERST1AgVEFC TEUgdDEsIHQyOwogCiAKKy0tZWNobyAjCistLWVjaG8gIyBCdWcgIzU5MTEwOiBNZW1vcnkgbGVh ayBvZiBRVUlDS19TRUxFQ1RfSSBhbGxvY2F0ZWQgbWVtb3J5IAorLS1lY2hvICMgIGFuZAorLS1l Y2hvICMgQnVnICM1OTMwODogSW5jb3JyZWN0IHJlc3VsdCBmb3IgCistLWVjaG8gICAgICAgICAg ICAgICBTRUxFQ1QgRElTVElOQ1QgPGNvbD4uLi4gT1JERVIgQlkgPGNvbD4gREVTQyAKKy0tZWNo bworLS1lY2hvICMgVXNlIFZhbGdyaW5kIHRvIGRldGVjdCAjNTkxMTAhCistLWVjaG8gIworCitD UkVBVEUgVEFCTEUgdDEgKGEgSU5ULEtFWSAoYSkpOworSU5TRVJUIElOVE8gdDEgVkFMVUVTICgx KSwoMiksKDMpLCg0KSwoNSksKDYpLCg3KSwoOCksKDkpLCgxMCk7CisKK0VYUExBSU4gU0VMRUNU IERJU1RJTkNUIGEsMSBGUk9NIHQxIFdIRVJFIGEgPD4gMSBPUkRFUiBCWSBhIERFU0M7CitTRUxF Q1QgRElTVElOQ1QgYSwxIEZST00gdDEgV0hFUkUgYSA8PiAxIE9SREVSIEJZIGEgREVTQzsKKwor RFJPUCBUQUJMRSB0MTsKKwogLS1lY2hvIEVuZCBvZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBm aWxlICdteXNxbC10ZXN0L3QvdHlwZV95ZWFyLnRlc3QnCi0tLSBhL215c3FsLXRlc3QvdC90eXBl X3llYXIudGVzdAkyMDEwLTAzLTIyIDA4OjMzOjI1ICswMDAwCisrKyBiL215c3FsLXRlc3QvdC90 eXBlX3llYXIudGVzdAkyMDExLTAxLTEyIDA5OjM3OjE1ICswMDAwCkBAIC0xNTAsNSArMTUwLDE1 IEBAIFNFTEVDVCB0YS55IEFTIHRhX3ksIHRhLnMsIHRiLnkgQVMgdGJfeSwKIERST1AgVEFCTEUg dDE7CiAKIC0tZWNobyAjCistLWVjaG8gIyBCdWcgIzU5MjExOiBTZWxlY3QgUmV0dXJucyBEaWZm ZXJlbnQgVmFsdWUgZm9yIG1pbih5ZWFyKSBGdW5jdGlvbgorLS1lY2hvICMKKworQ1JFQVRFIFRB QkxFIHQxKGMxIFlFQVIoNCkpOworSU5TRVJUIElOVE8gdDEgVkFMVUVTICgxOTAxKSwoMjE1NSks KDAwMDApOworU0VMRUNUICogRlJPTSB0MTsKK1NFTEVDVCBDT1VOVCgqKSBBUyB0b3RhbF9yb3dz LCBNSU4oYzEpIEFTIG1pbl92YWx1ZSwgTUFYKGMxKSBGUk9NIHQxOworRFJPUCBUQUJMRSB0MTsK KworLS1lY2hvICMKIAogLS1lY2hvIEVuZCBvZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBmaWxl ICdteXNxbC10ZXN0L3QvdXNlcl92YXIudGVzdCcKLS0tIGEvbXlzcWwtdGVzdC90L3VzZXJfdmFy LnRlc3QJMjAxMC0xMS0yMiAwODo1Nzo1OSArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvdXNlcl92 YXIudGVzdAkyMDEwLTEyLTA2IDIwOjM4OjMxICswMDAwCkBAIC0zNTMsNCArMzUzLDE2IEBAIERS T1AgVEFCTEUgdDE7CiAKIHNlbGVjdCBAdjo9QHY6PXN1bSgxKSBmcm9tIGR1YWw7CiAKKyMKKyMg QnVnICM1NzE4NzogbW9yZSB1c2VyIHZhcmlhYmxlIGZ1biB3aXRoIG11bHRpcGxlIGFzc2lnbm1l bnRzIGFuZAorIyAgICAgICAgICAgICBjb21wYXJpc29uIGluIHF1ZXJ5CisjCisKK0NSRUFURSBU QUJMRSB0MShhIERFQ0lNQUwoMzEsMjEpKTsKK0lOU0VSVCBJTlRPIHQxIFZBTFVFUyAoMCk7CisK K1NFTEVDVCAoQHY6PWEpIDw+IChAdjo9MSkgRlJPTSB0MTsKKworRFJPUCBUQUJMRSB0MTsKKwog LS1lY2hvIEVuZCBvZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3Zh bGdyaW5kLnN1cHAnCi0tLSBhL215c3FsLXRlc3QvdmFsZ3JpbmQuc3VwcAkyMDExLTAxLTE4IDEw OjAzOjQ0ICswMDAwCisrKyBiL215c3FsLXRlc3QvdmFsZ3JpbmQuc3VwcAkyMDExLTAyLTA3IDE0 OjQ1OjM3ICswMDAwCkBAIC03NDQsMyArNzQ0LDUwIEBACiAgICBNZW1jaGVjazpBZGRyMQogICAg ZnVuOmJ1Zl9idWRkeV9yZWxvY2F0ZQogfQorCit7CisgICBCdWcgNTk4NzQgVmFsZ3JpbmQgd2Fy bmluZyBpbiBJbm5vREIgY29tcHJlc3Npb24gY29kZQorICAgTWVtY2hlY2s6Q29uZAorICAgZnVu OioKKyAgIGZ1bjoqCisgICBmdW46ZGVmbGF0ZQorICAgZnVuOmJ0cl9zdG9yZV9iaWdfcmVjX2V4 dGVybl9maWVsZHNfZnVuYworICAgZnVuOnJvd19pbnNfaW5kZXhfZW50cnlfbG93CisgICBmdW46 cm93X2luc19pbmRleF9lbnRyeQorICAgZnVuOnJvd19pbnNfaW5kZXhfZW50cnlfc3RlcAorICAg ZnVuOnJvd19pbnMKKyAgIGZ1bjpyb3dfaW5zX3N0ZXAKKyAgIGZ1bjpyb3dfaW5zZXJ0X2Zvcl9t eXNxbAorfQorCit7CisgICBJbiBwYWdlMHppcC5jIHdlIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRo YXQgdGhlIG1lbW9yeSBpcyBpbml0aWFsaXplZCBiZWZvcmUgY2FsbGluZyBkZWZsYXRlKCkKKyAg IE1lbWNoZWNrOkNvbmQKKyAgIGZ1bjoqCisgICBmdW46KgorICAgZnVuOmRlZmxhdGUKKyAgIGZ1 bjpwYWdlX3ppcF9jb21wcmVzcworICAgZnVuOnBhZ2VfY3VyX2luc2VydF9yZWNfemlwX3Jlb3Jn CisgICBmdW46cGFnZV9jdXJfaW5zZXJ0X3JlY196aXAKKyAgIGZ1bjpwYWdlX2N1cl90dXBsZV9p bnNlcnQKKyAgIGZ1bjpidHJfY3VyX29wdGltaXN0aWNfaW5zZXJ0CisgICBmdW46cm93X2luc19p bmRleF9lbnRyeV9sb3cKKyAgIGZ1bjpyb3dfaW5zX2luZGV4X2VudHJ5CisgICBmdW46cm93X2lu c19pbmRleF9lbnRyeV9zdGVwCisgICBmdW46cm93X2lucworICAgZnVuOnJvd19pbnNfc3RlcAor ICAgZnVuOnJvd19pbnNlcnRfZm9yX215c3FsCit9CisKK3sKKyAgIEJ1ZyA1OTg3NSBWYWxncmlu ZCB3YXJuaW5nIGluIGJ1ZjBidWRkeS5jCisgICBNZW1jaGVjazpBZGRyMQorICAgZnVuOm1hY2hf cmVhZF9mcm9tXzQKKyAgIGZ1bjpidWZfYnVkZHlfcmVsb2NhdGUKKyAgIGZ1bjpidWZfYnVkZHlf ZnJlZV9sb3cKKyAgIGZ1bjpidWZfYnVkZHlfZnJlZQorICAgZnVuOmJ1Zl9MUlVfYmxvY2tfcmVt b3ZlX2hhc2hlZF9wYWdlCisgICBmdW46YnVmX0xSVV9pbnZhbGlkYXRlX3RhYmxlc3BhY2UKKyAg IGZ1bjpmaWxfZGVsZXRlX3RhYmxlc3BhY2UKKyAgIGZ1bjpyb3dfZHJvcF90YWJsZV9mb3JfbXlz cWwKK30KCj09PSBtb2RpZmllZCBmaWxlICdteXN5cy9teV9mb3Blbi5jJwotLS0gYS9teXN5cy9t eV9mb3Blbi5jCTIwMTEtMDEtMDcgMTk6Mjg6MDYgKzAwMDAKKysrIGIvbXlzeXMvbXlfZm9wZW4u YwkyMDExLTAxLTI1IDE0OjQyOjQwICswMDAwCkBAIC0xLDQgKzEsNCBAQAotLyogQ29weXJpZ2h0 IChDKSAyMDAwIE15U1FMIEFCCisvKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMTEsIE9yYWNsZSBh bmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3lzL215X2dldHN5c3Rp bWUuYycKLS0tIGEvbXlzeXMvbXlfZ2V0c3lzdGltZS5jCTIwMTEtMDEtMTEgMTM6NDQ6MzggKzAw MDAKKysrIGIvbXlzeXMvbXlfZ2V0c3lzdGltZS5jCTIwMTEtMDEtMjUgMTQ6NDI6NDAgKzAwMDAK QEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMDQgTXlTUUwgQUIKKy8qIENvcHly aWdodCAoYykgMjAwNCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KIAogICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cgo9PT0gbW9k aWZpZWQgZmlsZSAnc3FsL2hhbmRsZXIuY2MnCi0tLSBhL3NxbC9oYW5kbGVyLmNjCTIwMTEtMDEt MTEgMTE6MDk6NTQgKzAwMDAKKysrIGIvc3FsL2hhbmRsZXIuY2MJMjAxMS0wMS0yNSAxNDo0Mjo0 MCArMDAwMApAQCAtMSw0ICsxLDQgQEAKLS8qIENvcHlyaWdodCAyMDAwLTIwMDggTXlTUUwgQUIs IDIwMDggU3VuIE1pY3Jvc3lzdGVtcywgSW5jLgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDEx LCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvaXRl bS5oJwotLS0gYS9zcWwvaXRlbS5oCTIwMTEtMDEtMjcgMjI6NDc6MjQgKzAwMDAKKysrIGIvc3Fs L2l0ZW0uaAkyMDExLTAyLTA4IDExOjUyOjMzICswMDAwCkBAIC0yOTYwLDExICsyOTYwLDEwIEBA IGNsYXNzIEl0ZW1fY2FjaGU6IHB1YmxpYyBJdGVtX2Jhc2ljX2NvbnMKIHByb3RlY3RlZDoKICAg SXRlbSAqZXhhbXBsZTsKICAgdGFibGVfbWFwIHVzZWRfdGFibGVfbWFwOwotICAvKgotICAgIEZp ZWxkIHRoYXQgdGhpcyBvYmplY3Qgd2lsbCBnZXQgdmFsdWUgZnJvbS4gVGhpcyBpcyBzZXQvdXNl ZCBieSAKKyAgLyoqCisgICAgRmllbGQgdGhhdCB0aGlzIG9iamVjdCB3aWxsIGdldCB2YWx1ZSBm cm9tLiBUaGlzIGlzIHVzZWQgYnkgCiAgICAgaW5kZXgtYmFzZWQgc3VicXVlcnkgZW5naW5lcyB0 byBkZXRlY3QgYW5kIHJlbW92ZSB0aGUgZXF1YWxpdHkgaW5qZWN0ZWQgCiAgICAgYnkgSU4tPkVY SVNUUyB0cmFuc2Zvcm1hdGlvbi4KLSAgICBGb3IgYWxsIG90aGVyIHVzZXMgb2YgSXRlbV9jYWNo ZSwgY2FjaGVkX2ZpZWxkIGRvZXNuJ3QgbWF0dGVyLgogICAqLyAgCiAgIEZpZWxkICpjYWNoZWRf ZmllbGQ7CiAgIGVudW0gZW51bV9maWVsZF90eXBlcyBjYWNoZWRfZmllbGRfdHlwZTsKQEAgLTMw MjEsNiArMzAyMCwxNCBAQCBwdWJsaWM6CiAgIHsKICAgICByZXR1cm4gdGhpcyA9PSBpdGVtOwog ICB9CisKKyAgLyoqIAorICAgIElmIHRoaXMgaXRlbSBjYWNoZXMgYSBmaWVsZCB2YWx1ZSwgcmV0 dXJuIHBvaW50ZXIgdG8gdW5kZXJseWluZyBmaWVsZC4KKworICAgIEByZXR1cm4gUG9pbnRlciB0 byBmaWVsZCwgb3IgTlVMTCBpZiB0aGlzIGlzIG5vdCBhIGNhY2hlIGZvciBhIGZpZWxkIHZhbHVl LgorICAqLworICBGaWVsZCogZmllbGQoKSB7IHJldHVybiBjYWNoZWRfZmllbGQ7IH0KKwogICB2 aXJ0dWFsIHZvaWQgc3RvcmUoSXRlbSAqaXRlbSk7CiAgIHZpcnR1YWwgYm9vbCBjYWNoZV92YWx1 ZSgpPSAwOwogfTsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvaXRlbV9jbXBmdW5jLmNjJwotLS0g YS9zcWwvaXRlbV9jbXBmdW5jLmNjCTIwMTEtMDEtMTkgMTQ6MDk6MzIgKzAwMDAKKysrIGIvc3Fs L2l0ZW1fY21wZnVuYy5jYwkyMDExLTAyLTA4IDExOjUyOjMzICswMDAwCkBAIC0xLDQgKzEsNCBA QAotLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDEwLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlh dGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBP cmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTExOTYsOSArMTE5NiwxMiBAQCBnZXRfeWVh cl92YWx1ZShUSEQgKnRoZCwgSXRlbSAqKippdGVtX2FyCiAgICAgICAgICB2YWx1ZSBvZiAyMDAw LgogICAqLwogICBJdGVtICpyZWFsX2l0ZW09IGl0ZW0tPnJlYWxfaXRlbSgpOwotICBpZiAoIShy ZWFsX2l0ZW0tPnR5cGUoKSA9PSBJdGVtOjpGSUVMRF9JVEVNICYmCi0gICAgICAgICgoSXRlbV9m aWVsZCAqKXJlYWxfaXRlbSktPmZpZWxkLT50eXBlKCkgPT0gTVlTUUxfVFlQRV9ZRUFSICYmCi0g ICAgICAgICgoSXRlbV9maWVsZCAqKXJlYWxfaXRlbSktPmZpZWxkLT5maWVsZF9sZW5ndGggPT0g NCkpCisgIEZpZWxkICpmaWVsZD0gTlVMTDsKKyAgaWYgKHJlYWxfaXRlbS0+dHlwZSgpID09IEl0 ZW06OkZJRUxEX0lURU0pCisgICAgZmllbGQ9ICgoSXRlbV9maWVsZCAqKXJlYWxfaXRlbSktPmZp ZWxkOworICBlbHNlIGlmIChyZWFsX2l0ZW0tPnR5cGUoKSA9PSBJdGVtOjpDQUNIRV9JVEVNKQor ICAgIGZpZWxkPSAoKEl0ZW1fY2FjaGUgKilyZWFsX2l0ZW0pLT5maWVsZCgpOworICBpZiAoIShm aWVsZCAmJiBmaWVsZC0+dHlwZSgpID09IE1ZU1FMX1RZUEVfWUVBUiAmJiBmaWVsZC0+ZmllbGRf bGVuZ3RoID09IDQpKQogICB7CiAgICAgaWYgKHZhbHVlIDwgNzApCiAgICAgICB2YWx1ZSs9IDEw MDsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvaXRlbV9mdW5jLmNjJwotLS0gYS9zcWwvaXRlbV9m dW5jLmNjCTIwMTAtMTItMjggMjM6NDc6MDUgKzAwMDAKKysrIGIvc3FsL2l0ZW1fZnVuYy5jYwky MDExLTAxLTA3IDE0OjA2OjI0ICswMDAwCkBAIC00MDY5LDcgKzQwNjksNyBAQCBteV9kZWNpbWFs ICp1c2VyX3Zhcl9lbnRyeTo6dmFsX2RlY2ltYWwoCiAgICAgaW50Mm15X2RlY2ltYWwoRV9ERUNf RkFUQUxfRVJST1IsICoobG9uZ2xvbmcqKSB2YWx1ZSwgMCwgdmFsKTsKICAgICBicmVhazsKICAg Y2FzZSBERUNJTUFMX1JFU1VMVDoKLSAgICB2YWw9IChteV9kZWNpbWFsICopdmFsdWU7CisgICAg bXlfZGVjaW1hbDJkZWNpbWFsKChteV9kZWNpbWFsICopIHZhbHVlLCB2YWwpOwogICAgIGJyZWFr OwogICBjYXNlIFNUUklOR19SRVNVTFQ6CiAgICAgc3RyMm15X2RlY2ltYWwoRV9ERUNfRkFUQUxf RVJST1IsIHZhbHVlLCBsZW5ndGgsIGNvbGxhdGlvbi5jb2xsYXRpb24sIHZhbCk7Cgo9PT0gbW9k aWZpZWQgZmlsZSAnc3FsL2l0ZW1fZ2VvZnVuYy5oJwotLS0gYS9zcWwvaXRlbV9nZW9mdW5jLmgJ MjAxMS0wMS0xMiAxMzowMjo0MSArMDAwMAorKysgYi9zcWwvaXRlbV9nZW9mdW5jLmgJMjAxMS0w MS0yNSAxNDo0Mjo0MCArMDAwMApAQCAtMSw0ICsxLDQgQEAKLS8qIENvcHlyaWdodCAoQykgMjAw MC0yMDAzIE15U1FMIEFCCisvKiBDb3B5cmlnaHQgKGMpIDIwMDMsIDIwMTEsIE9yYWNsZSBhbmQv b3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9sb2cuY2MnCi0tLSBhL3Nx bC9sb2cuY2MJMjAxMS0wMS0wNyAxODozMzozNiArMDAwMAorKysgYi9zcWwvbG9nLmNjCTIwMTEt MDEtMjUgMTQ6NDI6NDAgKzAwMDAKQEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgMjAwMC0y MDA4IE15U1FMIEFCLCAyMDA4IFN1biBNaWNyb3N5c3RlbXMsIEluYy4KKy8qIENvcHlyaWdodCAo YykgMjAwMCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KIAogICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL25ldF9zZXJ2LmNjJwotLS0gYS9zcWwvbmV0X3NlcnYuY2MJMjAxMS0wMS0xMSAx NToxODoyNSArMDAwMAorKysgYi9zcWwvbmV0X3NlcnYuY2MJMjAxMS0wMS0yNSAxNDo0Mjo0MCAr MDAwMApAQCAtMSw0ICsxLDQgQEAKLS8qIENvcHlyaWdodCAoYykgMjAwMCwgMjAxMCwgT3JhY2xl IGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8qIENvcHlyaWdo dCAoYykgMjAwMCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KIAogICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3FsL3NxbF9iYXNlLmNjJwotLS0gYS9zcWwvc3FsX2Jhc2UuY2MJMjAxMS0wMS0x MSAxMTowOTo1NCArMDAwMAorKysgYi9zcWwvc3FsX2Jhc2UuY2MJMjAxMS0wMS0yNSAxNDo0Mjo0 MCArMDAwMApAQCAtMSw0ICsxLDQgQEAKLS8qIENvcHlyaWdodCAoYykgMjAwMCwgMjAxMCwgT3Jh Y2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8qIENvcHly aWdodCAoYykgMjAwMCwgMjAxMSwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KIAogICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC01OTQx LDYgKzU5NDEsOCBAQCBmaW5kX2ZpZWxkX2luX25hdHVyYWxfam9pbihUSEQgKnRoZCwgVEFCCiAv KgogICBGaW5kIGZpZWxkIGJ5IG5hbWUgaW4gYSBiYXNlIHRhYmxlIG9yIGEgdmlldyB3aXRoIHRl bXAgdGFibGUgYWxnb3JpdGhtLgogCisgIFRoZSBjYWxsZXIgaXMgZXhwZWN0ZWQgdG8gY2hlY2sg Y29sdW1uLWxldmVsIHByaXZpbGVnZXMuCisKICAgU1lOT1BTSVMKICAgICBmaW5kX2ZpZWxkX2lu X3RhYmxlKCkKICAgICB0aGQJCQkJdGhyZWFkIGhhbmRsZXIKQEAgLTYwNDgsNiArNjA1MCw4IEBA IGZpbmRfZmllbGRfaW5fdGFibGUoVEhEICp0aGQsIFRBQkxFICp0YWIKICAgICBUaGlzIHByb2Nl ZHVyZSBkZXRlY3RzIHRoZSB0eXBlIG9mIHRoZSB0YWJsZSByZWZlcmVuY2UgJ3RhYmxlX2xpc3Qn CiAgICAgYW5kIGNhbGxzIHRoZSBjb3JyZXNwb25kaW5nIHNlYXJjaCByb3V0aW5lLgogCisgICAg VGhlIHJvdXRpbmUgY2hlY2tzIGNvbHVtbi1sZXZlbCBwcml2aWVsZWdlcyBmb3IgdGhlIGZvdW5k IGZpZWxkLgorCiAgIFJFVFVSTgogICAgIDAJCQlmaWVsZCBpcyBub3QgZm91bmQKICAgICB2aWV3 X3JlZl9mb3VuZAlmb3VuZCB2YWx1ZSBpbiBWSUVXIChyZWFsIHJlc3VsdCBpcyBpbiAqcmVmKQpA QCAtNjMyMSw4ICs2MzI1LDE2IEBAIGZpbmRfZmllbGRfaW5fdGFibGVzKFRIRCAqdGhkLCBJdGVt X2lkZW4KICAgICAgIHdoZW4gdGFibGVfcmVmLT5maWVsZF90cmFuc2xhdGlvbiAhPSBOVUxMLgog ICAgICAgKi8KICAgICBpZiAodGFibGVfcmVmLT50YWJsZSAmJiAhdGFibGVfcmVmLT52aWV3KQor ICAgIHsKICAgICAgIGZvdW5kPSBmaW5kX2ZpZWxkX2luX3RhYmxlKHRoZCwgdGFibGVfcmVmLT50 YWJsZSwgbmFtZSwgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJV RSwgJihpdGVtLT5jYWNoZWRfZmllbGRfaW5kZXgpKTsKKyNpZm5kZWYgTk9fRU1CRURERURfQUND RVNTX0NIRUNLUworICAgICAgLyogQ2hlY2sgaWYgdGhlcmUgYXJlIHN1ZmZpY2llbnQgYWNjZXNz IHJpZ2h0cyB0byB0aGUgZm91bmQgZmllbGQuICovCisgICAgICBpZiAoZm91bmQgJiYgY2hlY2tf cHJpdmlsZWdlcyAmJgorICAgICAgICAgIGNoZWNrX2NvbHVtbl9ncmFudF9pbl90YWJsZV9yZWYo dGhkLCB0YWJsZV9yZWYsIG5hbWUsIGxlbmd0aCkpCisgICAgICAgIGZvdW5kPSBXUk9OR19HUkFO VDsKKyNlbmRpZgorICAgIH0KICAgICBlbHNlCiAgICAgICBmb3VuZD0gZmluZF9maWVsZF9pbl90 YWJsZV9yZWYodGhkLCB0YWJsZV9yZWYsIG5hbWUsIGxlbmd0aCwgaXRlbS0+bmFtZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCByZWYsIGNoZWNrX3By aXZpbGVnZXMsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3NxbF9sb2FkLmNjJwotLS0gYS9zcWwv c3FsX2xvYWQuY2MJMjAxMC0xMS0zMCAyMzozMjo1MSArMDAwMAorKysgYi9zcWwvc3FsX2xvYWQu Y2MJMjAxMC0xMi0xNyAxMzowNTo1MCArMDAwMApAQCAtMzE0LDU2ICszMTQsNTcgQEAgaW50IG15 c3FsX2xvYWQoVEhEICp0aGQsc3FsX2V4Y2hhbmdlICpleAogICAgICAgKHZvaWQpIGZuX2Zvcm1h dChuYW1lLCBleC0+ZmlsZV9uYW1lLCBteXNxbF9yZWFsX2RhdGFfaG9tZSwgIiIsCiAgICAgICAg ICAgICAgICAgICAgICAgIE1ZX1JFTEFUSVZFX1BBVEggfCBNWV9VTlBBQ0tfRklMRU5BTUUgfAog ICAgICAgICAgICAgICAgICAgICAgICBNWV9SRVRVUk5fUkVBTF9QQVRIKTsKLSNpZiAhZGVmaW5l ZChfX1dJTl9fKSAmJiAhIGRlZmluZWQoX19ORVRXQVJFX18pCi0gICAgICBNWV9TVEFUIHN0YXRf aW5mbzsKLSAgICAgIGlmICghbXlfc3RhdChuYW1lLCZzdGF0X2luZm8sTVlGKE1ZX1dNRSkpKQot CURCVUdfUkVUVVJOKFRSVUUpOwotCi0gICAgICAvLyBpZiB3ZSBhcmUgbm90IGluIHNsYXZlIHRo cmVhZCwgdGhlIGZpbGUgbXVzdCBiZToKLSAgICAgIGlmICghdGhkLT5zbGF2ZV90aHJlYWQgJiYK LQkgICEoKHN0YXRfaW5mby5zdF9tb2RlICYgU19JUk9USCkgPT0gU19JUk9USCAmJiAgLy8gcmVh ZGFibGUgYnkgb3RoZXJzCi0JICAgIChzdGF0X2luZm8uc3RfbW9kZSAmIFNfSUZMTkspICE9IFNf SUZMTksgJiYgLy8gYW5kIG5vdCBhIHN5bWxpbmsKLQkgICAgKChzdGF0X2luZm8uc3RfbW9kZSAm IFNfSUZSRUcpID09IFNfSUZSRUcgfHwKLQkgICAgIChzdGF0X2luZm8uc3RfbW9kZSAmIFNfSUZJ Rk8pID09IFNfSUZJRk8pKSkKLSAgICAgIHsKLQlteV9lcnJvcihFUl9URVhURklMRV9OT1RfUkVB REFCTEUsIE1ZRigwKSwgbmFtZSk7Ci0JREJVR19SRVRVUk4oVFJVRSk7Ci0gICAgICB9Ci0gICAg ICBpZiAoKHN0YXRfaW5mby5zdF9tb2RlICYgU19JRklGTykgPT0gU19JRklGTykKLQlpc19maWZv ID0gMTsKLSNlbmRpZgorICAgIH0KIAotICAgICAgaWYgKHRoZC0+c2xhdmVfdGhyZWFkKQotICAg ICAgeworICAgIGlmICh0aGQtPnNsYXZlX3RocmVhZCkKKyAgICB7CiAjaWYgZGVmaW5lZChIQVZF X1JFUExJQ0FUSU9OKSAmJiAhZGVmaW5lZChNWVNRTF9DTElFTlQpCi0gICAgICAgIGlmIChzdHJu Y21wKGFjdGl2ZV9taS0+cmxpLnNsYXZlX3BhdHRlcm5sb2FkX2ZpbGUsIG5hbWUsIAotICAgICAg ICAgICAgYWN0aXZlX21pLT5ybGkuc2xhdmVfcGF0dGVybmxvYWRfZmlsZV9zaXplKSkKLSAgICAg ICAgewotICAgICAgICAgIC8qCi0gICAgICAgICAgICBMT0FEIERBVEEgSU5GSUxFIGluIHRoZSBz bGF2ZSBTUUwgVGhyZWFkIGNhbiBvbmx5IHJlYWQgZnJvbSAKLSAgICAgICAgICAgIC0tc2xhdmUt bG9hZC10bXBkaXIiLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uIFBsZWFzZSwgcmVwb3J0IGEg YnVnLgotICAgICAgICAgICAqLwotCi0gICAgICAgICAgc3FsX3ByaW50X2Vycm9yKCJMT0FEIERB VEEgSU5GSUxFIGluIHRoZSBzbGF2ZSBTUUwgVGhyZWFkIGNhbiBvbmx5IHJlYWQgZnJvbSAtLXNs YXZlLWxvYWQtdG1wZGlyLiAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSwg cmVwb3J0IGEgYnVnLiIpOwotICAgICAgICAgIG15X2Vycm9yKEVSX09QVElPTl9QUkVWRU5UU19T VEFURU1FTlQsIE1ZRigwKSwgIi0tc2xhdmUtbG9hZC10bXBkaXIiKTsKLSAgICAgICAgICBEQlVH X1JFVFVSTihUUlVFKTsKLSAgICAgICAgfQotI2Vsc2UKKyAgICAgIGlmIChzdHJuY21wKGFjdGl2 ZV9taS0+cmxpLnNsYXZlX3BhdHRlcm5sb2FkX2ZpbGUsIG5hbWUsIAorICAgICAgICAgIGFjdGl2 ZV9taS0+cmxpLnNsYXZlX3BhdHRlcm5sb2FkX2ZpbGVfc2l6ZSkpCisgICAgICB7CiAgICAgICAg IC8qCi0gICAgICAgICAgVGhpcyBpcyBpbXBvc3NpYmxlIGFuZCBzaG91bGQgbmV2ZXIgaGFwcGVu LgorICAgICAgICAgIExPQUQgREFUQSBJTkZJTEUgaW4gdGhlIHNsYXZlIFNRTCBUaHJlYWQgY2Fu IG9ubHkgcmVhZCBmcm9tIAorICAgICAgICAgIC0tc2xhdmUtbG9hZC10bXBkaXIiLiBUaGlzIHNo b3VsZCBuZXZlciBoYXBwZW4uIFBsZWFzZSwgcmVwb3J0IGEgYnVnLgogICAgICAgICAqLwotICAg ICAgICBEQlVHX0FTU0VSVChGQUxTRSk7IAotI2VuZGlmCi0gICAgICB9Ci0gICAgICBlbHNlIGlm ICghaXNfc2VjdXJlX2ZpbGVfcGF0aChuYW1lKSkKLSAgICAgIHsKLSAgICAgICAgLyogUmVhZCBv bmx5IGFsbG93ZWQgZnJvbSB3aXRoaW4gZGlyIHNwZWNpZmllZCBieSBzZWN1cmVfZmlsZV9wcml2 ICovCi0gICAgICAgIG15X2Vycm9yKEVSX09QVElPTl9QUkVWRU5UU19TVEFURU1FTlQsIE1ZRigw KSwgIi0tc2VjdXJlLWZpbGUtcHJpdiIpOworCisgICAgICAgIHNxbF9wcmludF9lcnJvcigiTE9B RCBEQVRBIElORklMRSBpbiB0aGUgc2xhdmUgU1FMIFRocmVhZCBjYW4gb25seSByZWFkIGZyb20g LS1zbGF2ZS1sb2FkLXRtcGRpci4gIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAiUGxlYXNl LCByZXBvcnQgYSBidWcuIik7CisgICAgICAgIG15X2Vycm9yKEVSX09QVElPTl9QUkVWRU5UU19T VEFURU1FTlQsIE1ZRigwKSwgIi0tc2xhdmUtbG9hZC10bXBkaXIiKTsKICAgICAgICAgREJVR19S RVRVUk4oVFJVRSk7CiAgICAgICB9CisjZWxzZQorICAgICAgLyoKKyAgICAgICAgVGhpcyBpcyBp bXBvc3NpYmxlIGFuZCBzaG91bGQgbmV2ZXIgaGFwcGVuLgorICAgICAgKi8KKyAgICAgIERCVUdf QVNTRVJUKEZBTFNFKTsgCisjZW5kaWYKKyAgICB9CisgICAgZWxzZSBpZiAoIWlzX3NlY3VyZV9m aWxlX3BhdGgobmFtZSkpCisgICAgeworICAgICAgLyogUmVhZCBvbmx5IGFsbG93ZWQgZnJvbSB3 aXRoaW4gZGlyIHNwZWNpZmllZCBieSBzZWN1cmVfZmlsZV9wcml2ICovCisgICAgICBteV9lcnJv cihFUl9PUFRJT05fUFJFVkVOVFNfU1RBVEVNRU5ULCBNWUYoMCksICItLXNlY3VyZS1maWxlLXBy aXYiKTsKKyAgICAgIERCVUdfUkVUVVJOKFRSVUUpOworICAgIH0KKworI2lmICFkZWZpbmVkKF9f V0lOX18pICYmICEgZGVmaW5lZChfX05FVFdBUkVfXykKKyAgICBNWV9TVEFUIHN0YXRfaW5mbzsK KyAgICBpZiAoIW15X3N0YXQobmFtZSwmc3RhdF9pbmZvLE1ZRihNWV9XTUUpKSkKKwkgICAgREJV R19SRVRVUk4oVFJVRSk7CiAKKyAgICAvLyBpZiB3ZSBhcmUgbm90IGluIHNsYXZlIHRocmVhZCwg dGhlIGZpbGUgbXVzdCBiZToKKyAgICBpZiAoIXRoZC0+c2xhdmVfdGhyZWFkICYmCisJICAgICAg ISgoc3RhdF9pbmZvLnN0X21vZGUgJiBTX0lST1RIKSA9PSBTX0lST1RIICYmICAvLyByZWFkYWJs ZSBieSBvdGhlcnMKKwkgICAgICAgIChzdGF0X2luZm8uc3RfbW9kZSAmIFNfSUZMTkspICE9IFNf SUZMTksgJiYgLy8gYW5kIG5vdCBhIHN5bWxpbmsKKwkgICAgICAgICgoc3RhdF9pbmZvLnN0X21v ZGUgJiBTX0lGUkVHKSA9PSBTX0lGUkVHIHx8CisJICAgICAgICAgKHN0YXRfaW5mby5zdF9tb2Rl ICYgU19JRklGTykgPT0gU19JRklGTykpKQorICAgIHsKKwkgICAgbXlfZXJyb3IoRVJfVEVYVEZJ TEVfTk9UX1JFQURBQkxFLCBNWUYoMCksIG5hbWUpOworCSAgICBEQlVHX1JFVFVSTihUUlVFKTsK ICAgICB9CisgICAgaWYgKChzdGF0X2luZm8uc3RfbW9kZSAmIFNfSUZJRk8pID09IFNfSUZJRk8p CisJICAgIGlzX2ZpZm8gPSAxOworI2VuZGlmCisKICAgICBpZiAoKGZpbGU9bXlfb3BlbihuYW1l LE9fUkRPTkxZLE1ZRihNWV9XTUUpKSkgPCAwKQogICAgICAgREJVR19SRVRVUk4oVFJVRSk7CiAg IH0KCj09PSBtb2RpZmllZCBmaWxlICdzcWwvc3FsX3NlbGVjdC5jYycKLS0tIGEvc3FsL3NxbF9z ZWxlY3QuY2MJMjAxMS0wMi0wMSAxMjoyMDoxNiArMDAwMAorKysgYi9zcWwvc3FsX3NlbGVjdC5j YwkyMDExLTAyLTA4IDExOjUyOjMzICswMDAwCkBAIC0xLDQgKzEsNCBAQAotLyogQ29weXJpZ2h0 IChjKSAyMDAwLCAyMDEwLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRz IHJlc2VydmVkLgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKQEAgLTEzMzY0LDEyICsxMzM2NCwxNCBAQCB0ZXN0X2lmX3NraXBfc29ydF9v cmRlcihKT0lOX1RBQiAqdGFiLE9SCiB7CiAgIGludCByZWZfa2V5OwogICB1aW50IHJlZl9rZXlf cGFydHM7Ci0gIGludCBvcmRlcl9kaXJlY3Rpb247CisgIGludCBvcmRlcl9kaXJlY3Rpb249IDA7 CiAgIHVpbnQgdXNlZF9rZXlfcGFydHM7CiAgIFRBQkxFICp0YWJsZT10YWItPnRhYmxlOwogICBT UUxfU0VMRUNUICpzZWxlY3Q9dGFiLT5zZWxlY3Q7CiAgIGtleV9tYXAgdXNhYmxlX2tleXM7CiAg IFFVSUNLX1NFTEVDVF9JICpzYXZlX3F1aWNrPSAwOworICBpbnQgYmVzdF9rZXk9IC0xOworCiAg IERCVUdfRU5URVIoInRlc3RfaWZfc2tpcF9zb3J0X29yZGVyIik7CiAgIExJTlRfSU5JVChyZWZf a2V5X3BhcnRzKTsKIApAQCAtMTM0NzMsMTMgKzEzNDc1LDE0IEBAIHRlc3RfaWZfc2tpcF9zb3J0 X29yZGVyKEpPSU5fVEFCICp0YWIsT1IKICAgICAgICAgICBuZXdfcmVmX2tleV9tYXAuY2xlYXJf YWxsKCk7ICAvLyBGb3JjZSB0aGUgY3JlYXRpb24gb2YgcXVpY2sgc2VsZWN0CiAgICAgICAgICAg bmV3X3JlZl9rZXlfbWFwLnNldF9iaXQobmV3X3JlZl9rZXkpOyAvLyBvbmx5IGZvciBuZXdfcmVm X2tleS4KIAorICAgICAgICAgIHNlbGVjdC0+cXVpY2s9IDA7CiAgICAgICAgICAgaWYgKHNlbGVj dC0+dGVzdF9xdWlja19zZWxlY3QodGFiLT5qb2luLT50aGQsIG5ld19yZWZfa2V5X21hcCwgMCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFiLT5qb2luLT5zZWxl Y3Rfb3B0aW9ucyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9Q VElPTl9GT1VORF9ST1dTKSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSEFfUE9TX0VSUk9SIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0YWItPmpvaW4tPnVuaXQtPnNlbGVjdF9saW1pdF9jbnQsMCkgPD0KICAgICAgICAgICAgICAg MCkKLSAgICAgICAgICAgIERCVUdfUkVUVVJOKDApOworICAgICAgICAgICAgZ290byB1c2VfZmls ZXNvcnQ7CiAJfQogICAgICAgICByZWZfa2V5PSBuZXdfcmVmX2tleTsKICAgICAgIH0KQEAgLTEz NTA0LDcgKzEzNTA3LDYgQEAgdGVzdF9pZl9za2lwX3NvcnRfb3JkZXIoSk9JTl9UQUIgKnRhYixP UgogICAgIGludCBiZXN0X2tleV9kaXJlY3Rpb249IDA7CiAgICAgaGFfcm93cyBiZXN0X3JlY29y ZHM9IDA7CiAgICAgZG91YmxlIHJlYWRfdGltZTsKLSAgICBpbnQgYmVzdF9rZXk9IC0xOwogICAg IGJvb2wgaXNfYmVzdF9jb3ZlcmluZz0gRkFMU0U7CiAgICAgZG91YmxlIGZhbm91dD0gMTsKICAg ICBKT0lOICpqb2luPSB0YWItPmpvaW47CkBAIC0xMzY4MSw3MiArMTM2ODMsMjEgQEAgdGVzdF9p Zl9za2lwX3NvcnRfb3JkZXIoSk9JTl9UQUIgKnRhYixPUgogICAgICAgICAgdGFiLT5qb2luLT50 YWJsZXMgPiB0YWItPmpvaW4tPmNvbnN0X3RhYmxlcyArIDEpICYmCiAgICAgICAgICAoKHVuc2ln bmVkKSBiZXN0X2tleSAhPSB0YWJsZS0+cy0+cHJpbWFyeV9rZXkgfHwKICAgICAgICAgICAhdGFi bGUtPmZpbGUtPnByaW1hcnlfa2V5X2lzX2NsdXN0ZXJlZCgpKSkKLSAgICAgIERCVUdfUkVUVVJO KDApOworICAgICAgZ290byB1c2VfZmlsZXNvcnQ7CiAKICAgICBpZiAoYmVzdF9rZXkgPj0gMCkK ICAgICB7Ci0gICAgICBib29sIHF1aWNrX2NyZWF0ZWQ9IEZBTFNFOwogICAgICAgaWYgKHRhYmxl LT5xdWlja19rZXlzLmlzX3NldChiZXN0X2tleSkgJiYgYmVzdF9rZXkgIT0gcmVmX2tleSkKICAg ICAgIHsKICAgICAgICAga2V5X21hcCBtYXA7CiAgICAgICAgIG1hcC5jbGVhcl9hbGwoKTsgICAg ICAgLy8gRm9yY2UgdGhlIGNyZWF0aW9uIG9mIHF1aWNrIHNlbGVjdAogICAgICAgICBtYXAuc2V0 X2JpdChiZXN0X2tleSk7IC8vIG9ubHkgYmVzdF9rZXkuCi0gICAgICAgIHF1aWNrX2NyZWF0ZWQ9 ICAgICAgICAgCi0gICAgICAgICAgc2VsZWN0LT50ZXN0X3F1aWNrX3NlbGVjdChqb2luLT50aGQs IG1hcCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW4tPnNlbGVj dF9vcHRpb25zICYgT1BUSU9OX0ZPVU5EX1JPV1MgPwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSEFfUE9TX0VSUk9SIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGpvaW4tPnVuaXQtPnNlbGVjdF9saW1pdF9jbnQsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAwKSA+IDA7Ci0gICAgICB9Ci0gICAgICBpZiAoIW5vX2NoYW5nZXMp Ci0gICAgICB7Ci0gICAgICAgIC8qIAotICAgICAgICAgICBJZiByZWZfa2V5IHVzZWQgaW5kZXgg dHJlZSByZWFkaW5nIG9ubHkgKCdVc2luZyBpbmRleCcgaW4gRVhQTEFJTiksCi0gICAgICAgICAg IGFuZCBiZXN0X2tleSBkb2Vzbid0LCB0aGVuIHJldmVydCB0aGUgZGVjaXNpb24uCi0gICAgICAg ICovCi0gICAgICAgIGlmICghdGFibGUtPmNvdmVyaW5nX2tleXMuaXNfc2V0KGJlc3Rfa2V5KSkK LSAgICAgICAgICB0YWJsZS0+c2V0X2tleXJlYWQoRkFMU0UpOwotICAgICAgICBpZiAoIXF1aWNr X2NyZWF0ZWQpCi0JewotICAgICAgICAgIHRhYi0+aW5kZXg9IGJlc3Rfa2V5OwotICAgICAgICAg IHRhYi0+cmVhZF9maXJzdF9yZWNvcmQ9IGJlc3Rfa2V5X2RpcmVjdGlvbiA+IDAgPwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW5fcmVhZF9maXJzdDpqb2luX3JlYWRfbGFz dDsKLSAgICAgICAgICB0YWItPnR5cGU9SlRfTkVYVDsgICAgICAgICAgIC8vIFJlYWQgd2l0aCBp bmRleF9maXJzdCgpLCBpbmRleF9uZXh0KCkKLSAgICAgICAgICBpZiAoc2VsZWN0ICYmIHNlbGVj dC0+cXVpY2spCi0gICAgICAgICAgewotICAgICAgICAgICAgZGVsZXRlIHNlbGVjdC0+cXVpY2s7 Ci0gICAgICAgICAgICBzZWxlY3QtPnF1aWNrPSAwOwotICAgICAgICAgIH0KLSAgICAgICAgICBp ZiAodGFibGUtPmNvdmVyaW5nX2tleXMuaXNfc2V0KGJlc3Rfa2V5KSkKLSAgICAgICAgICAgIHRh YmxlLT5zZXRfa2V5cmVhZChUUlVFKTsKLSAgICAgICAgICB0YWJsZS0+ZmlsZS0+aGFfaW5kZXhf b3Jfcm5kX2VuZCgpOwotICAgICAgICAgIGlmIChqb2luLT5zZWxlY3Rfb3B0aW9ucyAmIFNFTEVD VF9ERVNDUklCRSkKLSAgICAgICAgICB7Ci0gICAgICAgICAgICB0YWItPnJlZi5rZXk9IC0xOwot ICAgICAgICAgICAgdGFiLT5yZWYua2V5X3BhcnRzPSAwOwotICAgICAgICAgICAgaWYgKHNlbGVj dF9saW1pdCA8IHRhYmxlX3JlY29yZHMpIAotICAgICAgICAgICAgICB0YWItPmxpbWl0PSBzZWxl Y3RfbGltaXQ7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHRhYi0+ dHlwZSAhPSBKVF9BTEwpCi0gICAgICAgIHsKLSAgICAgICAgICAvKgotICAgICAgICAgICAgV2Un cmUgYWJvdXQgdG8gdXNlIGEgcXVpY2sgYWNjZXNzIHRvIHRoZSB0YWJsZS4KLSAgICAgICAgICAg IFdlIG5lZWQgdG8gY2hhbmdlIHRoZSBhY2Nlc3MgbWV0aG9kIHNvIGFzIHRoZSBxdWljayBhY2Nl c3MKLSAgICAgICAgICAgIG1ldGhvZCBpcyBhY3R1YWxseSB1c2VkLgotICAgICAgICAgICovCi0g ICAgICAgICAgREJVR19BU1NFUlQodGFiLT5zZWxlY3QtPnF1aWNrKTsKLSAgICAgICAgICB0YWIt PnR5cGU9SlRfQUxMOwotICAgICAgICAgIHRhYi0+dXNlX3F1aWNrPTE7Ci0gICAgICAgICAgdGFi LT5yZWYua2V5PSAtMTsKLSAgICAgICAgICB0YWItPnJlZi5rZXlfcGFydHM9MDsJCS8vIERvbid0 IHVzZSByZWYga2V5LgotICAgICAgICAgIHRhYi0+cmVhZF9maXJzdF9yZWNvcmQ9IGpvaW5faW5p dF9yZWFkX3JlY29yZDsKLSAgICAgICAgICBpZiAodGFiLT5pc191c2luZ19sb29zZV9pbmRleF9z Y2FuKCkpCi0gICAgICAgICAgICBqb2luLT50bXBfdGFibGVfcGFyYW0ucHJlY29tcHV0ZWRfZ3Jv dXBfYnk9IFRSVUU7Ci0gICAgICAgICAgLyoKLSAgICAgICAgICAgIFRPRE86IHVwZGF0ZSB0aGUg bnVtYmVyIG9mIHJlY29yZHMgaW4gam9pbi0+YmVzdF9wb3NpdGlvbnNbdGFibGVucl0KLSAgICAg ICAgICAqLwotICAgICAgICB9CisgICAgICAgIHNlbGVjdC0+cXVpY2s9IDA7CisgICAgICAgIHNl bGVjdC0+dGVzdF9xdWlja19zZWxlY3Qoam9pbi0+dGhkLCBtYXAsIDAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgam9pbi0+c2VsZWN0X29wdGlvbnMgJiBPUFRJT05fRk9VTkRf Uk9XUyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFfUE9TX0VSUk9SIDoK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luLT51bml0LT5zZWxlY3RfbGlt aXRfY250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogICAgICAgfQog ICAgICAgb3JkZXJfZGlyZWN0aW9uPSBiZXN0X2tleV9kaXJlY3Rpb247CiAgICAgICAvKgpAQCAt MTM3NTksMTAgKzEzNzEwLDEyIEBAIHRlc3RfaWZfc2tpcF9zb3J0X29yZGVyKEpPSU5fVEFCICp0 YWIsT1IKICAgICAgICAgc2F2ZWRfYmVzdF9rZXlfcGFydHMgOiAgYmVzdF9rZXlfcGFydHM7CiAg ICAgfQogICAgIGVsc2UKLSAgICAgIERCVUdfUkVUVVJOKDApOyAKKyAgICAgIGdvdG8gdXNlX2Zp bGVzb3J0OwogICB9IAogCiBjaGVja19yZXZlcnNlX29yZGVyOiAgICAgICAgICAgICAgICAgIAor ICBEQlVHX0FTU0VSVChvcmRlcl9kaXJlY3Rpb24gIT0gMCk7CisKICAgaWYgKG9yZGVyX2RpcmVj dGlvbiA9PSAtMSkJCS8vIElmIE9SREVSIEJZIC4uLiBERVNDCiAgIHsKICAgICBpZiAoc2VsZWN0 ICYmIHNlbGVjdC0+cXVpY2spCkBAIC0xMzc3MSw5ICsxMzcyNCwxMCBAQCBjaGVja19yZXZlcnNl X29yZGVyOgogCURvbid0IHJldmVyc2UgdGhlIHNvcnQgb3JkZXIsIGlmIGl0J3MgYWxyZWFkeSBk b25lLgogICAgICAgICAoSW4gc29tZSBjYXNlcyB0ZXN0X2lmX29yZGVyX2J5X2tleSgpIGNhbiBi ZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMKICAgICAgICovCi0gICAgICBpZiAoIXNlbGVjdC0+cXVp Y2stPnJldmVyc2Vfc29ydGVkKCkpCisgICAgICBpZiAoc2VsZWN0LT5xdWljay0+cmV2ZXJzZV9z b3J0ZWQoKSkKKyAgICAgICAgZ290byBza2lwcGVkX2ZpbGVzb3J0OworICAgICAgZWxzZQogICAg ICAgewotICAgICAgICBRVUlDS19TRUxFQ1RfREVTQyAqdG1wOwogICAgICAgICBpbnQgcXVpY2tf dHlwZT0gc2VsZWN0LT5xdWljay0+Z2V0X3R5cGUoKTsKICAgICAgICAgaWYgKHF1aWNrX3R5cGUg PT0gUVVJQ0tfU0VMRUNUX0k6OlFTX1RZUEVfSU5ERVhfTUVSR0UgfHwKICAgICAgICAgICAgIHF1 aWNrX3R5cGUgPT0gUVVJQ0tfU0VMRUNUX0k6OlFTX1RZUEVfUk9SX0lOVEVSU0VDVCB8fApAQCAt MTM3ODEsMzkgKzEzNzM1LDEzMiBAQCBjaGVja19yZXZlcnNlX29yZGVyOgogICAgICAgICAgICAg cXVpY2tfdHlwZSA9PSBRVUlDS19TRUxFQ1RfSTo6UVNfVFlQRV9HUk9VUF9NSU5fTUFYKQogICAg ICAgICB7CiAgICAgICAgICAgdGFiLT5saW1pdD0gMDsKLSAgICAgICAgICBzZWxlY3QtPnF1aWNr PSBzYXZlX3F1aWNrOwotICAgICAgICAgIERCVUdfUkVUVVJOKDApOyAgICAgICAgICAgICAgICAg ICAvLyBVc2UgZmlsZXNvcnQKKyAgICAgICAgICBnb3RvIHVzZV9maWxlc29ydDsgICAgICAgICAg ICAgICAvLyBVc2UgZmlsZXNvcnQKICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIC8q IE9SREVSIEJZIHJhbmdlX2tleSBERVNDICovCi0JdG1wPSBuZXcgUVVJQ0tfU0VMRUNUX0RFU0Mo KFFVSUNLX1JBTkdFX1NFTEVDVCopKHNlbGVjdC0+cXVpY2spLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdXNlZF9rZXlfcGFydHMpOwotCWlmICghdG1wIHx8IHRtcC0+ZXJy b3IpCi0JewotCSAgZGVsZXRlIHRtcDsKLSAgICAgICAgICBzZWxlY3QtPnF1aWNrPSBzYXZlX3F1 aWNrOwotICAgICAgICAgIHRhYi0+bGltaXQ9IDA7Ci0JICBEQlVHX1JFVFVSTigwKTsJCS8vIFJl dmVyc2Ugc29ydCBub3Qgc3VwcG9ydGVkCi0JfQotCXNlbGVjdC0+cXVpY2s9dG1wOwogICAgICAg fQogICAgIH0KLSAgICBlbHNlIGlmICh0YWItPnR5cGUgIT0gSlRfTkVYVCAmJiB0YWItPnR5cGUg IT0gSlRfUkVGX09SX05VTEwgJiYKLSAgICAgICAgICAgICB0YWItPnJlZi5rZXkgPj0gMCAmJiB0 YWItPnJlZi5rZXlfcGFydHMgPD0gdXNlZF9rZXlfcGFydHMpCisgIH0KKworICAvKgorICAgIFVw ZGF0ZSBxdWVyeSBwbGFuIHdpdGggYWNjZXNzIHBhdHRlcm4gZm9yIGRvaW5nIAorICAgIG9yZGVy ZWQgYWNjZXNzIGFjY29yZGluZyB0byB3aGF0IHdlIGhhdmUgZGVjaWRlZAorICAgIGFib3ZlLgor ICAqLworICBpZiAoIW5vX2NoYW5nZXMpIC8vIFdlIGFyZSBhbGxvd2VkIHRvIHVwZGF0ZSBRRVAK KyAgeworICAgIGlmIChiZXN0X2tleSA+PSAwKQogICAgIHsKLSAgICAgIC8qCi0JU0VMRUNUICog RlJPTSB0MSBXSEVSRSBhPTEgT1JERVIgQlkgYSBERVNDLGIgREVTQworICAgICAgYm9vbCBxdWlj a19jcmVhdGVkPSAKKyAgICAgICAgKHNlbGVjdCAmJiBzZWxlY3QtPnF1aWNrICYmIHNlbGVjdC0+ cXVpY2shPXNhdmVfcXVpY2spOwogCi0JVXNlIGEgdHJhdmVyc2FsIGZ1bmN0aW9uIHRoYXQgc3Rh cnRzIGJ5IHJlYWRpbmcgdGhlIGxhc3Qgcm93Ci0Jd2l0aCBrZXkgcGFydCAoQSkgYW5kIHRoZW4g dHJhdmVyc2UgdGhlIGluZGV4IGJhY2t3YXJkcy4KKyAgICAgIC8qIAorICAgICAgICAgSWYgcmVm X2tleSB1c2VkIGluZGV4IHRyZWUgcmVhZGluZyBvbmx5ICgnVXNpbmcgaW5kZXgnIGluIEVYUExB SU4pLAorICAgICAgICAgYW5kIGJlc3Rfa2V5IGRvZXNuJ3QsIHRoZW4gcmV2ZXJ0IHRoZSBkZWNp c2lvbi4KICAgICAgICovCi0gICAgICB0YWItPnJlYWRfZmlyc3RfcmVjb3JkPSBqb2luX3JlYWRf bGFzdF9rZXk7Ci0gICAgICB0YWItPnJlYWRfcmVjb3JkLnJlYWRfcmVjb3JkPSBqb2luX3JlYWRf cHJldl9zYW1lOworICAgICAgaWYgKCF0YWJsZS0+Y292ZXJpbmdfa2V5cy5pc19zZXQoYmVzdF9r ZXkpKQorICAgICAgICB0YWJsZS0+c2V0X2tleXJlYWQoRkFMU0UpOworICAgICAgaWYgKCFxdWlj a19jcmVhdGVkKQorICAgICAgeworICAgICAgICBpZiAoc2VsZWN0KSAgICAgICAgICAgICAgICAg IC8vIFRocm93IGFueSBleGlzdGluZyBxdWljayBzZWxlY3QKKyAgICAgICAgICBzZWxlY3QtPnF1 aWNrPSAwOyAgICAgICAgICAvLyBDbGVhbnVwIGVpdGhlciByZXNldCB0byBzYXZlX3F1aWNrLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yICdkZWxldGUgc2F2ZV9x dWljaycKKyAgICAgICAgdGFiLT5pbmRleD0gYmVzdF9rZXk7CisgICAgICAgIHRhYi0+cmVhZF9m aXJzdF9yZWNvcmQ9IG9yZGVyX2RpcmVjdGlvbiA+IDAgPworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBqb2luX3JlYWRfZmlyc3Q6am9pbl9yZWFkX2xhc3Q7CisgICAgICAgIHRhYi0+ dHlwZT1KVF9ORVhUOyAgICAgICAgICAgLy8gUmVhZCB3aXRoIGluZGV4X2ZpcnN0KCksIGluZGV4 X25leHQoKQorCisgICAgICAgIGlmICh0YWJsZS0+Y292ZXJpbmdfa2V5cy5pc19zZXQoYmVzdF9r ZXkpKQorICAgICAgICAgIHRhYmxlLT5zZXRfa2V5cmVhZChUUlVFKTsKKyAgICAgICAgdGFibGUt PmZpbGUtPmhhX2luZGV4X29yX3JuZF9lbmQoKTsKKyAgICAgICAgaWYgKHRhYi0+am9pbi0+c2Vs ZWN0X29wdGlvbnMgJiBTRUxFQ1RfREVTQ1JJQkUpCisgICAgICAgIHsKKyAgICAgICAgICB0YWIt PnJlZi5rZXk9IC0xOworICAgICAgICAgIHRhYi0+cmVmLmtleV9wYXJ0cz0gMDsKKyAgICAgICAg ICBpZiAoc2VsZWN0X2xpbWl0IDwgdGFibGUtPmZpbGUtPnN0YXRzLnJlY29yZHMpIAorICAgICAg ICAgICAgdGFiLT5saW1pdD0gc2VsZWN0X2xpbWl0OworICAgICAgICB9CisgICAgICB9CisgICAg ICBlbHNlIGlmICh0YWItPnR5cGUgIT0gSlRfQUxMKQorICAgICAgeworICAgICAgICAvKgorICAg ICAgICAgIFdlJ3JlIGFib3V0IHRvIHVzZSBhIHF1aWNrIGFjY2VzcyB0byB0aGUgdGFibGUuCisg ICAgICAgICAgV2UgbmVlZCB0byBjaGFuZ2UgdGhlIGFjY2VzcyBtZXRob2Qgc28gYXMgdGhlIHF1 aWNrIGFjY2VzcworICAgICAgICAgIG1ldGhvZCBpcyBhY3R1YWxseSB1c2VkLgorICAgICAgICAq LworICAgICAgICBEQlVHX0FTU0VSVCh0YWItPnNlbGVjdC0+cXVpY2spOworICAgICAgICB0YWIt PnR5cGU9SlRfQUxMOworICAgICAgICB0YWItPnVzZV9xdWljaz0xOworICAgICAgICB0YWItPnJl Zi5rZXk9IC0xOworICAgICAgICB0YWItPnJlZi5rZXlfcGFydHM9MDsJCS8vIERvbid0IHVzZSBy ZWYga2V5LgorICAgICAgICB0YWItPnJlYWRfZmlyc3RfcmVjb3JkPSBqb2luX2luaXRfcmVhZF9y ZWNvcmQ7CisgICAgICAgIGlmICh0YWItPmlzX3VzaW5nX2xvb3NlX2luZGV4X3NjYW4oKSkKKyAg ICAgICAgICB0YWItPmpvaW4tPnRtcF90YWJsZV9wYXJhbS5wcmVjb21wdXRlZF9ncm91cF9ieT0g VFJVRTsKKyAgICAgICAgLyoKKyAgICAgICAgICBUT0RPOiB1cGRhdGUgdGhlIG51bWJlciBvZiBy ZWNvcmRzIGluIGpvaW4tPmJlc3RfcG9zaXRpb25zW3RhYmxlbnJdCisgICAgICAgICovCisgICAg ICB9CisgICAgfSAvLyBiZXN0X2tleSA+PSAwCisKKyAgICBpZiAob3JkZXJfZGlyZWN0aW9uID09 IC0xKQkJLy8gSWYgT1JERVIgQlkgLi4uIERFU0MKKyAgICB7CisgICAgICBpZiAoc2VsZWN0ICYm IHNlbGVjdC0+cXVpY2spCisgICAgICB7CisgICAgICAgIFFVSUNLX1NFTEVDVF9ERVNDICp0bXA7 CisgICAgICAgIC8qIE9SREVSIEJZIHJhbmdlX2tleSBERVNDICovCisgICAgICAgIHRtcD0gbmV3 IFFVSUNLX1NFTEVDVF9ERVNDKChRVUlDS19SQU5HRV9TRUxFQ1QqKShzZWxlY3QtPnF1aWNrKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRfa2V5X3BhcnRzKTsKKyAg ICAgICAgaWYgKHRtcCAmJiBzZWxlY3QtPnF1aWNrID09IHNhdmVfcXVpY2spCisgICAgICAgICAg c2F2ZV9xdWljaz0gMDsgICAgLy8gOjpRVUlDS19TRUxFQ1RfREVTQyBjb25zdW1lZCBpdAorCisg ICAgICAgIGlmICghdG1wIHx8IHRtcC0+ZXJyb3IpCisgICAgICAgIHsKKyAgICAgICAgICBkZWxl dGUgdG1wOworICAgICAgICAgIHRhYi0+bGltaXQ9IDA7CisgICAgICAgICAgZ290byB1c2VfZmls ZXNvcnQ7ICAgICAgICAgICAvLyBSZXZlcnNlIHNvcnQgZmFpbGVkIC0+IGZpbGVzb3J0CisgICAg ICAgIH0KKyAgICAgICAgc2VsZWN0LT5xdWljaz0gdG1wOworICAgICAgfQorICAgICAgZWxzZSBp ZiAodGFiLT50eXBlICE9IEpUX05FWFQgJiYgdGFiLT50eXBlICE9IEpUX1JFRl9PUl9OVUxMICYm CisgICAgICAgICAgICAgICB0YWItPnJlZi5rZXkgPj0gMCAmJiB0YWItPnJlZi5rZXlfcGFydHMg PD0gdXNlZF9rZXlfcGFydHMpCisgICAgICB7CisgICAgICAgIC8qCisgICAgICAgICAgU0VMRUNU ICogRlJPTSB0MSBXSEVSRSBhPTEgT1JERVIgQlkgYSBERVNDLGIgREVTQworCisgICAgICAgICAg VXNlIGEgdHJhdmVyc2FsIGZ1bmN0aW9uIHRoYXQgc3RhcnRzIGJ5IHJlYWRpbmcgdGhlIGxhc3Qg cm93CisgICAgICAgICAgd2l0aCBrZXkgcGFydCAoQSkgYW5kIHRoZW4gdHJhdmVyc2UgdGhlIGlu ZGV4IGJhY2t3YXJkcy4KKyAgICAgICAgKi8KKyAgICAgICAgdGFiLT5yZWFkX2ZpcnN0X3JlY29y ZD0gam9pbl9yZWFkX2xhc3Rfa2V5OworICAgICAgICB0YWItPnJlYWRfcmVjb3JkLnJlYWRfcmVj b3JkPSBqb2luX3JlYWRfcHJldl9zYW1lOworICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChz ZWxlY3QgJiYgc2VsZWN0LT5xdWljaykKKyAgICAgIHNlbGVjdC0+cXVpY2stPnNvcnRlZD0gMTsK KworICB9IC8vIFFFUCBoYXMgYmVlbiBtb2RpZmllZAorCisgIC8qCisgICAgQ2xlYW51cDoKKyAg ICBXZSBtYXkgaGF2ZSBib3RoIGEgJ3NlbGVjdC0+cXVpY2snIGFuZCAnc2F2ZV9xdWljaycgKG9y aWdpbmFsKQorICAgIGF0IHRoaXMgcG9pbnQuIERlbGV0ZSB0aGUgb25lIHRoYXQgd2Ugd2FuJ3Qg dXNlLgorICAqLworCitza2lwcGVkX2ZpbGVzb3J0OgorICAvLyBLZWVwIGN1cnJlbnQgKG9yZGVy ZWQpIHNlbGVjdC0+cXVpY2sgCisgIGlmIChzZWxlY3QgJiYgc2F2ZV9xdWljayAhPSBzZWxlY3Qt PnF1aWNrKQorICB7CisgICAgZGVsZXRlIHNhdmVfcXVpY2s7CisgICAgc2F2ZV9xdWljaz0gTlVM TDsKICAgfQotICBlbHNlIGlmIChzZWxlY3QgJiYgc2VsZWN0LT5xdWljaykKLSAgICBzZWxlY3Qt PnF1aWNrLT5zb3J0ZWQ9IDE7CiAgIERCVUdfUkVUVVJOKDEpOworCit1c2VfZmlsZXNvcnQ6Cisg IC8vIFJlc3RvcmUgb3JpZ2luYWwgc2F2ZV9xdWljaworICBpZiAoc2VsZWN0ICYmIHNlbGVjdC0+ cXVpY2sgIT0gc2F2ZV9xdWljaykKKyAgeworICAgIGRlbGV0ZSBzZWxlY3QtPnF1aWNrOworICAg IHNlbGVjdC0+cXVpY2s9IHNhdmVfcXVpY2s7CisgIH0KKyAgREJVR19SRVRVUk4oMCk7CiB9CiAK IAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfc2hvdy5jYycKLS0tIGEvc3FsL3NxbF9zaG93 LmNjCTIwMTEtMDEtMDcgMTE6NDY6MjEgKzAwMDAKKysrIGIvc3FsL3NxbF9zaG93LmNjCTIwMTEt MDEtMjUgMTQ6NDI6NDAgKzAwMDAKQEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKGMpIDIw MDAsIDIwMTAsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCisvKiBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmls aWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfdmlldy5jYycKLS0tIGEvc3FsL3NxbF92 aWV3LmNjCTIwMTEtMDEtMTIgMTM6MDg6MzAgKzAwMDAKKysrIGIvc3FsL3NxbF92aWV3LmNjCTIw MTEtMDEtMjUgMTQ6NDI6NDAgKzAwMDAKQEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKEMp IDIwMDQgTXlTUUwgQUIKKy8qIENvcHlyaWdodCAoYykgMjAwNCwgMjAxMSwgT3JhY2xlIGFuZC9v ciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK ICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L0NoYW5nZUxvZycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL0NoYW5nZUxvZwkyMDExLTAx LTMwIDE2OjQxOjU4ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9DaGFuZ2VMb2cJ MjAxMS0wMi0wOCAxNzoyNjo0MiArMDAwMApAQCAtMSwzICsxLDEwIEBACisyMDExLTAxLTMxCVRo ZSBJbm5vREIgVGVhbQorCisJKiBidHIvYnRyMGN1ci5jLCBpbmNsdWRlL3JvdzB1cGQuaCwKKwly b3cvcm93MHB1cmdlLmMsIHJvdy9yb3cwdW1vZC5jLCByb3cvcm93MHVwZC5jOgorCUJ1ZyM1OTIz MCBhc3NlcnQgMCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeSgpCisJaW4gcG9zdC1j cmFzaCByb2xsYmFjayBvciBwdXJnZQorCiAyMDExLTAxLTI3CVRoZSBJbm5vREIgVGVhbQogCiAJ KiBidHIvYnRyMGN1ci5jOgpAQCAtNTAsNiArNTcsMTYgQEAKIAliYWQgInJvd3MgZXhhbWluZWQi IGVzdGltYXRlcwogCiAyMDExLTAxLTA2CVRoZSBJbm5vREIgVGVhbQorCSogcm93L3JvdzBtZXJn ZS5jOgorCUZpeCBCdWcjNTkzMTIgRXhhbWluZSBNQVhfRlVMTF9OQU1FX0xFTiBpbiBJbm5vREIg dG8gYWRkcmVzcworCXBvc3NpYmxlIGluc3VmZmljaWVudCBuYW1lIGJ1ZmZlcgorCisyMDExLTAx LTA2CVRoZSBJbm5vREIgVGVhbQorCSogZGljdC9kaWN0MGRpY3QuYywgaGFuZGxlci9oYV9pbm5v ZGIuY2MsIGhhbmRsZXIvaV9zLmNjLAorCWluY2x1ZGUvdW5pdi5pOiAKKwlGaXggQnVnIzU4NjQz IElubm9EQjogdG9vIGxvbmcgdGFibGUgbmFtZQorCisyMDExLTAxLTA2CVRoZSBJbm5vREIgVGVh bQogCSogaGFuZGxlci9pX3MuY2MsIGluY2x1ZGUvdHJ4MGlfcy5oLCB0cngvdHJ4MGlfcy5jOgog CUZpeCBCdWcjNTUzOTcgY2Fubm90IHNlbGVjdCBmcm9tIGlubm9kYl90cnggd2hlbiB0cnhfcXVl cnkgY29udGFpbnMKIAlibG9icyB0aGF0IGFyZW4ndCBzdHJpbmdzCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwY3VyLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9idHIvYnRyMGN1ci5jCTIwMTEtMDEtMjggMDg6NTA6MTAgKzAwMDAKKysrIGIv c3RvcmFnZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwY3VyLmMJMjAxMS0wMi0wMiAxMzo1MTowOCAr MDAwMApAQCAtMTg2LDcgKzE4Niw3IEBAIHN0YXRpYwogdWxpbnQKIGJ0cl9yZWNfZ2V0X2V4dGVy bmFsbHlfc3RvcmVkX2xlbigKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQly ZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3JkICovCisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBp bjogcmVjb3JkICovCiAJY29uc3QgdWxpbnQqCW9mZnNldHMpOy8qITwgaW46IGFycmF5IHJldHVy bmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygpICovCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICov CiAKQEAgLTE3NjgsOCArMTc2OCw4IEBAIGJ0cl9jdXJfdXBkYXRlX2luX3BsYWNlKAogCQlOT1Qg Y2FsbCBpdCBpZiBpbmRleCBpcyBzZWNvbmRhcnkgKi8KIAogCQlpZiAoIWRpY3RfaW5kZXhfaXNf Y2x1c3QoaW5kZXgpCi0JCSAgICB8fCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShO VUxMLCBOVUxMLAotCQkJCQkJCWluZGV4LCB1cGRhdGUpKSB7CisJCSAgICB8fCByb3dfdXBkX2No YW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShpbmRleCwgdXBkYXRlLCB0aHIsCisJCQkJCQkJTlVMTCwg TlVMTCkpIHsKIAogCQkJLyogUmVtb3ZlIHBvc3NpYmxlIGhhc2ggaW5kZXggcG9pbnRlciB0byB0 aGlzIHJlY29yZCAqLwogCQkJYnRyX3NlYXJjaF91cGRhdGVfaGFzaF9vbl9kZWxldGUoY3Vyc29y KTsKQEAgLTM0ODQsMzQgKzM0ODQsNjIgQEAgYnRyX2VzdGltYXRlX251bWJlcl9vZl9kaWZmZXJl bnRfa2V5X3ZhbAogLyo9PT09PT09PT09PT09PT09PT0gRVhURVJOQUwgU1RPUkFHRSBPRiBCSUcg RklFTERTID09PT09PT09PT09PT09PT09PT0qLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitHZXRzIHRoZSBvZmZzZXQg b2YgdGhlIHBvaW50ZXIgdG8gdGhlIGV4dGVybmFsbHkgc3RvcmVkIHBhcnQgb2YgYSBmaWVsZC4K K0ByZXR1cm4Jb2Zmc2V0IG9mIHRoZSBwb2ludGVyIHRvIHRoZSBleHRlcm5hbGx5IHN0b3JlZCBw YXJ0ICovCitzdGF0aWMKK3VsaW50CitidHJfcmVjX2dldF9maWVsZF9yZWZfb2ZmcygKKy8qPT09 PT09PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IGFy cmF5IHJldHVybmVkIGJ5IHJlY19nZXRfb2Zmc2V0cygpICovCisJdWxpbnQJCW4pCS8qITwgaW46 IGluZGV4IG9mIHRoZSBleHRlcm5hbCBmaWVsZCAqLworeworCXVsaW50CWZpZWxkX3JlZl9vZmZz OworCXVsaW50CWxvY2FsX2xlbjsKKworCXV0X2EocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRz LCBuKSk7CisJZmllbGRfcmVmX29mZnMgPSByZWNfZ2V0X250aF9maWVsZF9vZmZzKG9mZnNldHMs IG4sICZsb2NhbF9sZW4pOworCXV0X2EobG9jYWxfbGVuICE9IFVOSVZfU1FMX05VTEwpOworCXV0 X2EobG9jYWxfbGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOworCisJcmV0dXJuKGZp ZWxkX3JlZl9vZmZzICsgbG9jYWxfbGVuIC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7Cit9 CisKKy8qKiBHZXRzIGEgcG9pbnRlciB0byB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgcGFydCBvZiBh IGZpZWxkLgorQHBhcmFtIHJlYwlyZWNvcmQKK0BwYXJhbSBvZmZzZXRzCXJlY19nZXRfb2Zmc2V0 cyhyZWMpCitAcGFyYW0gbglpbmRleCBvZiB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQKK0By ZXR1cm4gcG9pbnRlciB0byB0aGUgZXh0ZXJuYWxseSBzdG9yZWQgcGFydCAqLworI2RlZmluZSBi dHJfcmVjX2dldF9maWVsZF9yZWYocmVjLCBvZmZzZXRzLCBuKQkJCVwKKwkoKHJlYykgKyBidHJf cmVjX2dldF9maWVsZF9yZWZfb2ZmcyhvZmZzZXRzLCBuKSkKKworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyB0aGUg ZXh0ZXJuYWxseSBzdG9yZWQgc2l6ZSBvZiBhIHJlY29yZCwgaW4gdW5pdHMgb2YgYSBkYXRhYmFz ZSBwYWdlLgogQHJldHVybglleHRlcm5hbGx5IHN0b3JlZCBwYXJ0LCBpbiB1bml0cyBvZiBhIGRh dGFiYXNlIHBhZ2UgKi8KIHN0YXRpYwogdWxpbnQKIGJ0cl9yZWNfZ2V0X2V4dGVybmFsbHlfc3Rv cmVkX2xlbigKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KLQlyZWNfdCoJCXJl YywJLyohPCBpbjogcmVjb3JkICovCisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogcmVjb3Jk ICovCiAJY29uc3QgdWxpbnQqCW9mZnNldHMpLyohPCBpbjogYXJyYXkgcmV0dXJuZWQgYnkgcmVj X2dldF9vZmZzZXRzKCkgKi8KIHsKIAl1bGludAluX2ZpZWxkczsKLQlieXRlKglkYXRhOwotCXVs aW50CWxvY2FsX2xlbjsKLQl1bGludAlleHRlcm5fbGVuOwogCXVsaW50CXRvdGFsX2V4dGVybl9s ZW4gPSAwOwogCXVsaW50CWk7CiAKIAl1dF9hZCghcmVjX29mZnNfY29tcChvZmZzZXRzKSB8fCAh cmVjX2dldF9ub2RlX3B0cl9mbGFnKHJlYykpOworCisJaWYgKCFyZWNfb2Zmc19hbnlfZXh0ZXJu KG9mZnNldHMpKSB7CisJCXJldHVybigwKTsKKwl9CisKIAluX2ZpZWxkcyA9IHJlY19vZmZzX25f ZmllbGRzKG9mZnNldHMpOwogCiAJZm9yIChpID0gMDsgaSA8IG5fZmllbGRzOyBpKyspIHsKIAkJ aWYgKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKIAotCQkJZGF0YSA9IHJlY19n ZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxvY2FsX2xlbik7Ci0KLQkJCWxvY2FsX2xl biAtPSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFOwotCi0JCQlleHRlcm5fbGVuID0gbWFjaF9y ZWFkX2Zyb21fNChkYXRhICsgbG9jYWxfbGVuCi0JCQkJCQkgICAgICArIEJUUl9FWFRFUk5fTEVO ICsgNCk7CisJCQl1bGludAlleHRlcm5fbGVuID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJCQlidHJf cmVjX2dldF9maWVsZF9yZWYocmVjLCBvZmZzZXRzLCBpKQorCQkJCSsgQlRSX0VYVEVSTl9MRU4g KyA0KTsKIAogCQkJdG90YWxfZXh0ZXJuX2xlbiArPSB1dF9jYWxjX2FsaWduKGV4dGVybl9sZW4s CiAJCQkJCQkJICBVTklWX1BBR0VfU0laRSk7CkBAIC0zNTQxLDcgKzM1NjksNyBAQCBidHJfY3Vy X3NldF9vd25lcnNoaXBfb2ZfZXh0ZXJuX2ZpZWxkKAogCXVsaW50CWJ5dGVfdmFsOwogCiAJZGF0 YSA9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxvY2FsX2xlbik7Ci0KKwl1 dF9hZChyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkpKTsKIAl1dF9hKGxvY2FsX2xlbiA+ PSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKTsKIAogCWxvY2FsX2xlbiAtPSBCVFJfRVhURVJO X0ZJRUxEX1JFRl9TSVpFOwpAQCAtMzU1MSw2ICszNTc5LDkgQEAgYnRyX2N1cl9zZXRfb3duZXJz aGlwX29mX2V4dGVybl9maWVsZCgKIAlpZiAodmFsKSB7CiAJCWJ5dGVfdmFsID0gYnl0ZV92YWwg JiAofkJUUl9FWFRFUk5fT1dORVJfRkxBRyk7CiAJfSBlbHNlIHsKKyNpZiBkZWZpbmVkIFVOSVZf REVCVUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKKwkJdXRfYSghKGJ5dGVfdmFs ICYgQlRSX0VYVEVSTl9PV05FUl9GTEFHKSk7CisjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBVTklW X0JMT0JfTElHSFRfREVCVUcgKi8KIAkJYnl0ZV92YWwgPSBieXRlX3ZhbCB8IEJUUl9FWFRFUk5f T1dORVJfRkxBRzsKIAl9CiAKQEAgLTM3ODgsOCArMzgxOSw4IEBAIGZpbGUgc2VnbWVudCBvZiB0 aGUgaW5kZXggdHJlZS4KIEByZXR1cm4JREJfU1VDQ0VTUyBvciBEQl9PVVRfT0ZfRklMRV9TUEFD RSAqLwogVU5JVl9JTlRFUk4KIHVsaW50Ci1idHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRz KAotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK2J0cl9zdG9yZV9iaWdfcmVjX2V4 dGVybl9maWVsZHNfZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K IAlkaWN0X2luZGV4X3QqCWluZGV4LAkJLyohPCBpbjogaW5kZXggb2YgcmVjOyB0aGUgaW5kZXgg dHJlZQogCQkJCQlNVVNUIGJlIFgtbGF0Y2hlZCAqLwogCWJ1Zl9ibG9ja190KglyZWNfYmxvY2ss CS8qITwgaW4vb3V0OiBibG9jayBjb250YWluaW5nIHJlYyAqLwpAQCAtMzc5OCwxMSArMzgyOSwx NyBAQCBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzKAogCQkJCQl0aGUgImV4dGVybmFs IHN0b3JhZ2UiIGZsYWdzIGluIG9mZnNldHMKIAkJCQkJd2lsbCBub3QgY29ycmVzcG9uZCB0byBy ZWMgd2hlbgogCQkJCQl0aGlzIGZ1bmN0aW9uIHJldHVybnMgKi8KLQliaWdfcmVjX3QqCWJpZ19y ZWNfdmVjLAkvKiE8IGluOiB2ZWN0b3IgY29udGFpbmluZyBmaWVsZHMKKyNpZmRlZiBVTklWX0RF QlVHCisJbXRyX3QqCQlsb2NhbF9tdHIsCS8qITwgaW46IG10ciBjb250YWluaW5nIHRoZQorCQkJ CQlsYXRjaCB0byByZWMgYW5kIHRvIHRoZSB0cmVlICovCisjZW5kaWYgLyogVU5JVl9ERUJVRyAq LworI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJV RworCWlib29sCQl1cGRhdGVfaW5fcGxhY2UsLyohIGluOiBUUlVFIGlmIHRoZSByZWNvcmQgaXMg dXBkYXRlZAorCQkJCQlpbiBwbGFjZSAobm90IGRlbGV0ZStpbnNlcnQpICovCisjZW5kaWYgLyog VU5JVl9ERUJVRyB8fCBVTklWX0JMT0JfTElHSFRfREVCVUcgKi8KKwljb25zdCBiaWdfcmVjX3Qq YmlnX3JlY192ZWMpCS8qITwgaW46IHZlY3RvciBjb250YWluaW5nIGZpZWxkcwogCQkJCQl0byBi ZSBzdG9yZWQgZXh0ZXJuYWxseSAqLwotCW10cl90KgkJbG9jYWxfbXRyIF9fYXR0cmlidXRlX18o KHVudXNlZCkpKSAvKiE8IGluOiBtdHIKLQkJCQkJY29udGFpbmluZyB0aGUgbGF0Y2ggdG8gcmVj IGFuZCB0byB0aGUKLQkJCQkJdHJlZSAqLworCiB7CiAJdWxpbnQJcmVjX3BhZ2Vfbm87CiAJYnl0 ZSoJZmllbGRfcmVmOwpAQCAtMzgyMCw2ICszODU3LDcgQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0 ZXJuX2ZpZWxkcygKIAl6X3N0cmVhbSBjX3N0cmVhbTsKIAogCXV0X2FkKHJlY19vZmZzX3ZhbGlk YXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKKwl1dF9hZChyZWNfb2Zmc19hbnlfZXh0ZXJuKG9m ZnNldHMpKTsKIAl1dF9hZChtdHJfbWVtb19jb250YWlucyhsb2NhbF9tdHIsIGRpY3RfaW5kZXhf Z2V0X2xvY2soaW5kZXgpLAogCQkJCU1UUl9NRU1PX1hfTE9DSykpOwogCXV0X2FkKG10cl9tZW1v X2NvbnRhaW5zKGxvY2FsX210ciwgcmVjX2Jsb2NrLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7CkBA IC0zODUxLDIxICszODg5LDM3IEBAIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCiAJ CXV0X2EoZXJyID09IFpfT0spOwogCX0KIAorI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZp bmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRworCS8qIEFsbCBwb2ludGVycyB0byBleHRlcm5hbGx5 IHN0b3JlZCBjb2x1bW5zIGluIHRoZSByZWNvcmQKKwltdXN0IGVpdGhlciBiZSB6ZXJvIG9yIHRo ZXkgbXVzdCBiZSBwb2ludGVycyB0byBpbmhlcml0ZWQKKwljb2x1bW5zLCBvd25lZCBieSB0aGlz IHJlY29yZCBvciBhbiBlYXJsaWVyIHJlY29yZCB2ZXJzaW9uLiAqLworCWZvciAoaSA9IDA7IGkg PCByZWNfb2Zmc19uX2ZpZWxkcyhvZmZzZXRzKTsgaSsrKSB7CisJCWlmICghcmVjX29mZnNfbnRo X2V4dGVybihvZmZzZXRzLCBpKSkgeworCQkJY29udGludWU7CisJCX0KKwkJZmllbGRfcmVmID0g YnRyX3JlY19nZXRfZmllbGRfcmVmKHJlYywgb2Zmc2V0cywgaSk7CisKKwkJdXRfYSghKGZpZWxk X3JlZltCVFJfRVhURVJOX0xFTl0gJiBCVFJfRVhURVJOX09XTkVSX0ZMQUcpKTsKKwkJLyogRWl0 aGVyIHRoaXMgbXVzdCBiZSBhbiB1cGRhdGUgaW4gcGxhY2UsCisJCW9yIHRoZSBCTE9CIG11c3Qg YmUgaW5oZXJpdGVkLCBvciB0aGUgQkxPQiBwb2ludGVyCisJCW11c3QgYmUgemVybyAod2lsbCBi ZSB3cml0dGVuIGluIHRoaXMgZnVuY3Rpb24pLiAqLworCQl1dF9hKHVwZGF0ZV9pbl9wbGFjZQor CQkgICAgIHx8IChmaWVsZF9yZWZbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VYVEVSTl9JTkhFUklU RURfRkxBRykKKwkJICAgICB8fCAhbWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJ CQkJQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCX0KKyNlbmRpZiAvKiBVTklWX0RFQlVH IHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCS8qIFdlIGhhdmUgdG8gY3JlYXRlIGEgZmls ZSBzZWdtZW50IHRvIHRoZSB0YWJsZXNwYWNlCiAJZm9yIGVhY2ggZmllbGQgYW5kIHB1dCB0aGUg cG9pbnRlciB0byB0aGUgZmllbGQgaW4gcmVjICovCiAKIAlmb3IgKGkgPSAwOyBpIDwgYmlnX3Jl Y192ZWMtPm5fZmllbGRzOyBpKyspIHsKLQkJdXRfYWQocmVjX29mZnNfbnRoX2V4dGVybihvZmZz ZXRzLAotCQkJCQkgIGJpZ19yZWNfdmVjLT5maWVsZHNbaV0uZmllbGRfbm8pKTsKLQkJewotCQkJ dWxpbnQJbG9jYWxfbGVuOwotCQkJZmllbGRfcmVmID0gcmVjX2dldF9udGhfZmllbGQoCi0JCQkJ cmVjLCBvZmZzZXRzLCBiaWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmZpZWxkX25vLAotCQkJCSZsb2Nh bF9sZW4pOwotCQkJdXRfYShsb2NhbF9sZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7 Ci0JCQlsb2NhbF9sZW4gLT0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKLQkJCWZpZWxkX3Jl ZiArPSBsb2NhbF9sZW47Ci0JCX0KKwkJZmllbGRfcmVmID0gYnRyX3JlY19nZXRfZmllbGRfcmVm KAorCQkJcmVjLCBvZmZzZXRzLCBiaWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmZpZWxkX25vKTsKKyNp ZiBkZWZpbmVkIFVOSVZfREVCVUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKKwkJ LyogQSB6ZXJvIEJMT0IgcG9pbnRlciBzaG91bGQgaGF2ZSBiZWVuIGluaXRpYWxseSBpbnNlcnRl ZC4gKi8KKwkJdXRfYSghbWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJCQkgICAg IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpKTsKKyNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVO SVZfQkxPQl9MSUdIVF9ERUJVRyAqLwogCQlleHRlcm5fbGVuID0gYmlnX3JlY192ZWMtPmZpZWxk c1tpXS5sZW47CiAJCVVOSVZfTUVNX0FTU0VSVF9SVyhiaWdfcmVjX3ZlYy0+ZmllbGRzW2ldLmRh dGEsCiAJCQkJICAgZXh0ZXJuX2xlbik7CkBAIC00MTQ3LDYgKzQyMDEsMjMgQEAgbmV4dF96aXBf cGFnZToKIAkJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAl9CiAKKyNpZiBkZWZpbmVkIFVOSVZfREVC VUcgfHwgZGVmaW5lZCBVTklWX0JMT0JfTElHSFRfREVCVUcKKwkvKiBBbGwgcG9pbnRlcnMgdG8g ZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1ucyBpbiB0aGUgcmVjb3JkCisJbXVzdCBiZSB2YWxpZC4g Ki8KKwlmb3IgKGkgPSAwOyBpIDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7IGkrKykgewor CQlpZiAoIXJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKKwkJCWNvbnRpbnVlOwor CQl9CisKKwkJZmllbGRfcmVmID0gYnRyX3JlY19nZXRfZmllbGRfcmVmKHJlYywgb2Zmc2V0cywg aSk7CisKKwkJLyogVGhlIHBvaW50ZXIgbXVzdCBub3QgYmUgemVyby4gKi8KKwkJdXRfYSgwICE9 IG1lbWNtcChmaWVsZF9yZWYsIGZpZWxkX3JlZl96ZXJvLAorCQkJCSBCVFJfRVhURVJOX0ZJRUxE X1JFRl9TSVpFKSk7CisJCS8qIFRoZSBjb2x1bW4gbXVzdCBub3QgYmUgZGlzb3duZWQgYnkgdGhp cyByZWNvcmQuICovCisJCXV0X2EoIShmaWVsZF9yZWZbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VY VEVSTl9PV05FUl9GTEFHKSk7CisJfQorI2VuZGlmIC8qIFVOSVZfREVCVUcgfHwgVU5JVl9CTE9C X0xJR0hUX0RFQlVHICovCiAJcmV0dXJuKERCX1NVQ0NFU1MpOwogfQogCkBAIC00MTY5LDYgKzQy NDAsNyBAQCBidHJfY2hlY2tfYmxvYl9maWxfcGFnZV90eXBlKAogCWlmIChVTklWX1VOTElLRUxZ KHR5cGUgIT0gRklMX1BBR0VfVFlQRV9CTE9CKSkgewogCQl1bGludAlmbGFncyA9IGZpbF9zcGFj ZV9nZXRfZmxhZ3Moc3BhY2VfaWQpOwogCisjaWZuZGVmIFVOSVZfREVCVUcgLyogSW1wcm92ZSBk ZWJ1ZyB0ZXN0IGNvdmVyYWdlICovCiAJCWlmIChVTklWX0xJS0VMWQogCQkgICAgKChmbGFncyAm IERJQ1RfVEZfRk9STUFUX01BU0spID09IERJQ1RfVEZfRk9STUFUXzUxKSkgewogCQkJLyogT2xk IHZlcnNpb25zIG9mIElubm9EQiBkaWQgbm90IGluaXRpYWxpemUKQEAgLTQxNzcsNiArNDI0OSw3 IEBAIGJ0cl9jaGVja19ibG9iX2ZpbF9wYWdlX3R5cGUoCiAJCQlhIEJMT0IgcGFnZSB0aGF0IGlz IGluIEFudGVsb3BlIGZvcm1hdC4qLwogCQkJcmV0dXJuOwogCQl9CisjZW5kaWYgLyogIVVOSVZf REVCVUcgKi8KIAogCQl1dF9wcmludF90aW1lc3RhbXAoc3RkZXJyKTsKIAkJZnByaW50ZihzdGRl cnIsCkBAIC00MjI2LDIzICs0Mjk5LDEzIEBAIGJ0cl9mcmVlX2V4dGVybmFsbHlfc3RvcmVkX2Zp ZWxkKAogCXVsaW50CQlwYWdlX25vOwogCXVsaW50CQluZXh0X3BhZ2Vfbm87CiAJbXRyX3QJCW10 cjsKLSNpZmRlZiBVTklWX0RFQlVHCisKIAl1dF9hZChtdHJfbWVtb19jb250YWlucyhsb2NhbF9t dHIsIGRpY3RfaW5kZXhfZ2V0X2xvY2soaW5kZXgpLAogCQkJCU1UUl9NRU1PX1hfTE9DSykpOwog CXV0X2FkKG10cl9tZW1vX2NvbnRhaW5zX3BhZ2UobG9jYWxfbXRyLCBmaWVsZF9yZWYsCiAJCQkJ ICAgICBNVFJfTUVNT19QQUdFX1hfRklYKSk7CiAJdXRfYWQoIXJlYyB8fCByZWNfb2Zmc192YWxp ZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7Ci0KLQlpZiAocmVjKSB7Ci0JCXVsaW50CWxvY2Fs X2xlbjsKLQkJY29uc3QgYnl0ZSoJZiA9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywK LQkJCQkJCSAgICAgIGksICZsb2NhbF9sZW4pOwotCQl1dF9hKGxvY2FsX2xlbiA+PSBCVFJfRVhU RVJOX0ZJRUxEX1JFRl9TSVpFKTsKLQkJbG9jYWxfbGVuIC09IEJUUl9FWFRFUk5fRklFTERfUkVG X1NJWkU7Ci0JCWYgKz0gbG9jYWxfbGVuOwotCQl1dF9hZChmID09IGZpZWxkX3JlZik7Ci0JfQot I2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KKwl1dF9hZCghcmVjIHx8IGZpZWxkX3JlZiA9PSBidHJf cmVjX2dldF9maWVsZF9yZWYocmVjLCBvZmZzZXRzLCBpKSk7CiAKIAlpZiAoVU5JVl9VTkxJS0VM WSghbWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCiAJCQkJICBCVFJfRVhURVJOX0ZJ RUxEX1JFRl9TSVpFKSkpIHsKQEAgLTQ0MDcsMTMgKzQ0NzAsOCBAQCBidHJfcmVjX2ZyZWVfZXh0 ZXJuYWxseV9zdG9yZWRfZmllbGRzKAogCiAJZm9yIChpID0gMDsgaSA8IG5fZmllbGRzOyBpKysp IHsKIAkJaWYgKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsKLQkJCXVsaW50CWxl bjsKLQkJCWJ5dGUqCWRhdGEKLQkJCQk9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywg aSwgJmxlbik7Ci0JCQl1dF9hKGxlbiA+PSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKTsKLQog CQkJYnRyX2ZyZWVfZXh0ZXJuYWxseV9zdG9yZWRfZmllbGQoCi0JCQkJaW5kZXgsIGRhdGEgKyBs ZW4gLSBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFLAorCQkJCWluZGV4LCBidHJfcmVjX2dldF9m aWVsZF9yZWYocmVjLCBvZmZzZXRzLCBpKSwKIAkJCQlyZWMsIG9mZnNldHMsIHBhZ2VfemlwLCBp LCByYl9jdHgsIG10cik7CiAJCX0KIAl9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL2J1Zi9idWYwYnVmLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idWYv YnVmMGJ1Zi5jCTIwMTEtMDEtMjUgMDc6NTY6MTggKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vZGJf cGx1Z2luL2J1Zi9idWYwYnVmLmMJMjAxMS0wMi0wMiAxMjowNToxMiArMDAwMApAQCAtNjU3LDkg KzY1Nyw5IEBAIGJ1Zl9ibG9ja19pbml0KAogCiAJYmxvY2stPm1vZGlmeV9jbG9jayA9IDA7CiAK LSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdf RklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlibG9jay0+cGFnZS5maWxlX3Bh Z2Vfd2FzX2ZyZWVkID0gRkFMU0U7Ci0jZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VT ICovCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IFVOSVZfREVCVUcgKi8K IAogCWJsb2NrLT5jaGVja19pbmRleF9wYWdlX2F0X2ZsdXNoID0gRkFMU0U7CiAJYmxvY2stPmlu ZGV4ID0gTlVMTDsKQEAgLTE2MDAsNyArMTYwMCw3IEBAIGJ1Zl9wYWdlX3BlZWtfaWZfc2VhcmNo X2hhc2hlZCgKIAlyZXR1cm4oaXNfaGFzaGVkKTsKIH0KIAotI2lmZGVmIFVOSVZfREVCVUdfRklM RV9BQ0NFU1NFUworI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRlZmlu ZWQgVU5JVl9ERUJVRwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogU2V0cyBmaWxlX3BhZ2Vfd2FzX2ZyZWVk IFRSVUUgaWYgdGhlIHBhZ2UgaXMgZm91bmQgaW4gdGhlIGJ1ZmZlciBwb29sLgogVGhpcyBmdW5j dGlvbiBzaG91bGQgYmUgY2FsbGVkIHdoZW4gd2UgZnJlZSBhIGZpbGUgcGFnZSBhbmQgd2FudCB0 aGUKQEAgLTE2MjEsNiArMTYyMSw4IEBAIGJ1Zl9wYWdlX3NldF9maWxlX3BhZ2Vfd2FzX2ZyZWVk KAogCWJwYWdlID0gYnVmX3BhZ2VfaGFzaF9nZXQoc3BhY2UsIG9mZnNldCk7CiAKIAlpZiAoYnBh Z2UpIHsKKwkJLyogYnBhZ2UtPmZpbGVfcGFnZV93YXNfZnJlZWQgY2FuIGFscmVhZHkgaG9sZAor CQl3aGVuIHRoaXMgY29kZSBpcyBpbnZva2VkIGZyb20gZGljdF9kcm9wX2luZGV4X3RyZWUoKSAq LwogCQlicGFnZS0+ZmlsZV9wYWdlX3dhc19mcmVlZCA9IFRSVUU7CiAJfQogCkBAIC0xNjU2LDcg KzE2NTgsNyBAQCBidWZfcGFnZV9yZXNldF9maWxlX3BhZ2Vfd2FzX2ZyZWVkKAogCiAJcmV0dXJu KGJwYWdlKTsKIH0KLSNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgKi8KKyNlbmRp ZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogCiAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCiBHZXQgcmVhZCBhY2Nlc3MgdG8gYSBjb21wcmVzc2VkIHBhZ2UgKHVzdWFsbHkg b2YgdHlwZQpAQCAtMTc1Myw3ICsxNzU1LDcgQEAgZ290X2Jsb2NrOgogCiAJYnVmX3BhZ2Vfc2V0 X2FjY2Vzc2VkX21ha2VfeW91bmcoYnBhZ2UsIGFjY2Vzc190aW1lKTsKIAotI2lmZGVmIFVOSVZf REVCVUdfRklMRV9BQ0NFU1NFUworI2lmIGRlZmluZWQgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VT IHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCXV0X2EoIWJwYWdlLT5maWxlX3BhZ2Vfd2FzX2ZyZWVk KTsKICNlbmRpZgogCkBAIC0yMzIxLDcgKzIzMjMsNyBAQCB3YWl0X3VudGlsX3VuZml4ZWQ6CiAK IAlidWZfcGFnZV9zZXRfYWNjZXNzZWRfbWFrZV95b3VuZygmYmxvY2stPnBhZ2UsIGFjY2Vzc190 aW1lKTsKIAotI2lmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUworI2lmIGRlZmluZWQgVU5J Vl9ERUJVR19GSUxFX0FDQ0VTU0VTIHx8IGRlZmluZWQgVU5JVl9ERUJVRwogCXV0X2EoIWJsb2Nr LT5wYWdlLmZpbGVfcGFnZV93YXNfZnJlZWQpOwogI2VuZGlmCiAKQEAgLTI0NzksNyArMjQ4MSw3 IEBAIGJ1Zl9wYWdlX29wdGltaXN0aWNfZ2V0KAogCXV0X2EoYnVmX2Jsb2NrX2dldF9zdGF0ZShi bG9jaykgPT0gQlVGX0JMT0NLX0ZJTEVfUEFHRSk7CiAjZW5kaWYgLyogVU5JVl9ERUJVRyB8fCBV TklWX0JVRl9ERUJVRyAqLwogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYg ZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJ dXRfYShibG9jay0+cGFnZS5maWxlX3BhZ2Vfd2FzX2ZyZWVkID09IEZBTFNFKTsKICNlbmRpZgog CWlmIChVTklWX1VOTElLRUxZKCFhY2Nlc3NfdGltZSkpIHsKQEAgLTI1ODcsNyArMjU4OSw3IEBA IGJ1Zl9wYWdlX2dldF9rbm93bl9ub3dhaXQoCiAJdXRfYShibG9jay0+cGFnZS5idWZfZml4X2Nv dW50ID4gMCk7CiAJdXRfYShidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSA9PSBCVUZfQkxPQ0tf RklMRV9QQUdFKTsKICNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCi0j aWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJ TEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJdXRfYShibG9jay0+cGFnZS5maWxl X3BhZ2Vfd2FzX2ZyZWVkID09IEZBTFNFKTsKICNlbmRpZgogCkBAIC0yNjcwLDkgKzI2NzIsOSBA QCBidWZfcGFnZV90cnlfZ2V0X2Z1bmMoCiAJdXRfYShibG9jay0+cGFnZS5idWZfZml4X2NvdW50 ID4gMCk7CiAJdXRfYShidWZfYmxvY2tfZ2V0X3N0YXRlKGJsb2NrKSA9PSBCVUZfQkxPQ0tfRklM RV9QQUdFKTsKICNlbmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQlVGX0RFQlVHICovCi0jaWZk ZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVf QUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJdXRfYShibG9jay0+cGFnZS5maWxlX3Bh Z2Vfd2FzX2ZyZWVkID09IEZBTFNFKTsKLSNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNT RVMgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAq LwogCWJ1Zl9ibG9ja19kYmdfYWRkX2xldmVsKGJsb2NrLCBTWU5DX05PX09SREVSX0NIRUNLKTsK IAogCWJ1Zl9wb29sLT5zdGF0Lm5fcGFnZV9nZXRzKys7CkBAIC0yNzAxLDkgKzI3MDMsOSBAQCBi dWZfcGFnZV9pbml0X2xvdygKIAlicGFnZS0+bmV3ZXN0X21vZGlmaWNhdGlvbiA9IDA7CiAJYnBh Z2UtPm9sZGVzdF9tb2RpZmljYXRpb24gPSAwOwogCUhBU0hfSU5WQUxJREFURShicGFnZSwgaGFz aCk7Ci0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RF QlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJYnBhZ2UtPmZpbGVfcGFn ZV93YXNfZnJlZWQgPSBGQUxTRTsKLSNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMg Ki8KKyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwog fQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCkBAIC0zMDA5LDkgKzMwMTEsOSBAQCBidWZfcGFnZV9jcmVh dGUoCiAjaWZkZWYgVU5JVl9JQlVGX0NPVU5UX0RFQlVHCiAJCXV0X2EoaWJ1Zl9jb3VudF9nZXQo c3BhY2UsIG9mZnNldCkgPT0gMCk7CiAjZW5kaWYKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUND RVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVO SVZfREVCVUcKIAkJYmxvY2stPnBhZ2UuZmlsZV9wYWdlX3dhc19mcmVlZCA9IEZBTFNFOwotI2Vu ZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyAqLworI2VuZGlmIC8qIFVOSVZfREVCVUdf RklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVHICovCiAKIAkJLyogUGFnZSBjYW4gYmUgZm91bmQg aW4gYnVmX3Bvb2wgKi8KIAkJYnVmX3Bvb2xfbXV0ZXhfZXhpdCgpOwoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9kaWN0L2RpY3QwZGljdC5jJwotLS0gYS9zdG9yYWdl L2lubm9kYl9wbHVnaW4vZGljdC9kaWN0MGRpY3QuYwkyMDExLTAxLTE0IDE3OjAyOjI4ICswMDAw CisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9kaWN0L2RpY3QwZGljdC5jCTIwMTEtMDItMDgg MTE6NTI6MzMgKzAwMDAKQEAgLTkzMiw3ICs5MzIsNyBAQCBkaWN0X3RhYmxlX3JlbmFtZV9pbl9j YWNoZSgKIAlkaWN0X2ZvcmVpZ25fdCoJZm9yZWlnbjsKIAlkaWN0X2luZGV4X3QqCWluZGV4Owog CXVsaW50CQlmb2xkOwotCWNoYXIJCW9sZF9uYW1lW01BWF9UQUJMRV9OQU1FX0xFTiArIDFdOwor CWNoYXIJCW9sZF9uYW1lW01BWF9GVUxMX05BTUVfTEVOICsgMV07CiAKIAl1dF9hZCh0YWJsZSk7 CiAJdXRfYWQobXV0ZXhfb3duKCYoZGljdF9zeXMtPm11dGV4KSkpOwpAQCAtOTQ0LDcgKzk0NCw3 IEBAIGRpY3RfdGFibGVfcmVuYW1lX2luX2NhY2hlKAogCQl1dF9wcmludF90aW1lc3RhbXAoc3Rk ZXJyKTsKIAkJZnByaW50ZihzdGRlcnIsICJJbm5vREI6IHRvbyBsb25nIHRhYmxlIG5hbWU6ICcl cycsICIKIAkJCSJtYXggbGVuZ3RoIGlzICVkXG4iLCB0YWJsZS0+bmFtZSwKLQkJCU1BWF9UQUJM RV9OQU1FX0xFTik7CisJCQlNQVhfRlVMTF9OQU1FX0xFTik7CiAJCXV0X2Vycm9yOwogCX0KIApA QCAtOTk0LDExICs5OTQsMTEgQEAgZGljdF90YWJsZV9yZW5hbWVfaW5fY2FjaGUoCiAJCSAgICB1 dF9mb2xkX3N0cmluZyhvbGRfbmFtZSksIHRhYmxlKTsKIAogCWlmIChzdHJsZW4obmV3X25hbWUp ID4gc3RybGVuKHRhYmxlLT5uYW1lKSkgewotCQkvKiBXZSBhbGxvY2F0ZSBNQVhfVEFCTEVfTkFN RV9MRU4rMSBieXRlcyBoZXJlIHRvIGF2b2lkCisJCS8qIFdlIGFsbG9jYXRlIE1BWF9GVUxMX05B TUVfTEVOICsgMSBieXRlcyBoZXJlIHRvIGF2b2lkCiAJCW1lbW9yeSBmcmFnbWVudGF0aW9uLCB3 ZSBhc3N1bWUgYSByZXBlYXRlZCBjYWxscyBvZgogCQl1dF9yZWFsbG9jKCkgd2l0aCB0aGUgc2Ft ZSBzaXplIGRvIG5vdCBjYXVzZSBmcmFnbWVudGF0aW9uICovCi0JCXV0X2Eoc3RybGVuKG5ld19u YW1lKSA8PSBNQVhfVEFCTEVfTkFNRV9MRU4pOwotCQl0YWJsZS0+bmFtZSA9IHV0X3JlYWxsb2Mo dGFibGUtPm5hbWUsIE1BWF9UQUJMRV9OQU1FX0xFTiArIDEpOworCQl1dF9hKHN0cmxlbihuZXdf bmFtZSkgPD0gTUFYX0ZVTExfTkFNRV9MRU4pOworCQl0YWJsZS0+bmFtZSA9IHV0X3JlYWxsb2Mo dGFibGUtPm5hbWUsIE1BWF9GVUxMX05BTUVfTEVOICsgMSk7CiAJfQogCW1lbWNweSh0YWJsZS0+ bmFtZSwgbmV3X25hbWUsIHN0cmxlbihuZXdfbmFtZSkgKyAxKTsKIAoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9mc3AvZnNwMGZzcC5jJwotLS0gYS9zdG9yYWdlL2lu bm9kYl9wbHVnaW4vZnNwL2ZzcDBmc3AuYwkyMDExLTAxLTA2IDA3OjEyOjUzICswMDAwCisrKyBi L3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9mc3AvZnNwMGZzcC5jCTIwMTEtMDItMDIgMTI6MDU6MTIg KzAwMDAKQEAgLTM0NDQsOSArMzQ0NCw5IEBAIGZzZWdfZnJlZV9wYWdlKAogCiAJZnNlZ19mcmVl X3BhZ2VfbG93KHNlZ19pbm9kZSwgc3BhY2UsIHppcF9zaXplLCBwYWdlLCBtdHIpOwogCi0jaWZk ZWYgVU5JVl9ERUJVR19GSUxFX0FDQ0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVf QUNDRVNTRVMgfHwgZGVmaW5lZCBVTklWX0RFQlVHCiAJYnVmX3BhZ2Vfc2V0X2ZpbGVfcGFnZV93 YXNfZnJlZWQoc3BhY2UsIHBhZ2UpOwotI2VuZGlmCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTIHx8IFVOSVZfREVCVUcgKi8KIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC0z NTEzLDEzICszNTEzLDEzIEBAIGZzZWdfZnJlZV9leHRlbnQoCiAKIAlmc3BfZnJlZV9leHRlbnQo c3BhY2UsIHppcF9zaXplLCBwYWdlLCBtdHIpOwogCi0jaWZkZWYgVU5JVl9ERUJVR19GSUxFX0FD Q0VTU0VTCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgfHwgZGVmaW5lZCBV TklWX0RFQlVHCiAJZm9yIChpID0gMDsgaSA8IEZTUF9FWFRFTlRfU0laRTsgaSsrKSB7CiAKIAkJ YnVmX3BhZ2Vfc2V0X2ZpbGVfcGFnZV93YXNfZnJlZWQoc3BhY2UsCiAJCQkJCQkgZmlyc3RfcGFn ZV9pbl9leHRlbnQgKyBpKTsKIAl9Ci0jZW5kaWYKKyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVf QUNDRVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaGFuZGxlci9oYV9pbm5vZGIuY2Mn Ci0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYW5kbGVyL2hhX2lubm9kYi5jYwkyMDExLTAx LTE0IDE3OjAyOjI4ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYW5kbGVyL2hh X2lubm9kYi5jYwkyMDExLTAyLTA4IDExOjUyOjMzICswMDAwCkBAIC02MDI4LDYgKzYwMjgsMTYg QEAgY3JlYXRlX3RhYmxlX2RlZigKIAkJREJVR19SRVRVUk4oSEFfRVJSX0dFTkVSSUMpOwogCX0K IAorCS8qIE15U1FMIGRvZXMgdGhlIG5hbWUgbGVuZ3RoIGNoZWNrLiBCdXQgd2UgZG8gYWRkaXRp b25hbCBjaGVjaworCW9uIHRoZSBuYW1lIGxlbmd0aCBoZXJlICovCisJaWYgKHN0cmxlbih0YWJs ZV9uYW1lKSA+IE1BWF9GVUxMX05BTUVfTEVOKSB7CisJCXB1c2hfd2FybmluZ19wcmludGYoCisJ CQkoVEhEKikgdHJ4LT5teXNxbF90aGQsIE1ZU1FMX0VSUk9SOjpXQVJOX0xFVkVMX1dBUk4sCisJ CQlFUl9UQUJMRV9OQU1FLAorCQkJIklubm9EQjogVGFibGUgTmFtZSBvciBEYXRhYmFzZSBOYW1l IGlzIHRvbyBsb25nIik7CisJCURCVUdfUkVUVVJOKEVSX1RBQkxFX05BTUUpOworCX0KKwogCW5f Y29scyA9IGZvcm0tPnMtPmZpZWxkczsKIAogCS8qIFdlIHBhc3MgMCBhcyB0aGUgc3BhY2UgaWQs IGFuZCBkZXRlcm1pbmUgYXQgYSBsb3dlciBsZXZlbCB0aGUgc3BhY2UKCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaGFuZGxlci9pX3MuY2MnCi0tLSBhL3N0b3JhZ2Uv aW5ub2RiX3BsdWdpbi9oYW5kbGVyL2lfcy5jYwkyMDExLTAxLTA3IDAzOjM2OjIwICswMDAwCisr KyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9oYW5kbGVyL2lfcy5jYwkyMDExLTAxLTEwIDEzOjA4 OjMzICswMDAwCkBAIC01ODcsMTYgKzU4Nyw3IEBAIGZpbGxfaW5ub2RiX2xvY2tzX2Zyb21fY2Fj aGUoCiAJZm9yIChpID0gMDsgaSA8IHJvd3NfbnVtOyBpKyspIHsKIAogCQlpX3NfbG9ja3Nfcm93 X3QqCXJvdzsKLQotCQkvKiBub3RlIHRoYXQgdGhlIGRlY29kZWQgZGF0YWJhc2Ugb3IgdGFibGUg bmFtZSBpcwotCQluZXZlciBleHBlY3RlZCB0byBiZSBsb25nZXIgdGhhbiBOQU1FX0xFTjsKLQkJ TkFNRV9MRU4gZm9yIGRhdGFiYXNlIG5hbWUKLQkJMiBmb3Igc3Vycm91bmRpbmcgcXVvdGVzIGFy b3VuZCBkYXRhYmFzZSBuYW1lCi0JCU5BTUVfTEVOIGZvciB0YWJsZSBuYW1lCi0JCTIgZm9yIHN1 cnJvdW5kaW5nIHF1b3RlcyBhcm91bmQgdGFibGUgbmFtZQotCQkxIGZvciB0aGUgc2VwYXJhdGlu ZyBkb3QgKC4pCi0JCTkgZm9yIHRoZSAjbXlzcWw1MCMgcHJlZml4ICovCi0JCWNoYXIJCQlidWZb MiAqIE5BTUVfTEVOICsgMTRdOworCQljaGFyCQkJYnVmW01BWF9GVUxMX05BTUVfTEVOICsgMV07 CiAJCWNvbnN0IGNoYXIqCQlidWZlbmQ7CiAKIAkJY2hhcgkJCWxvY2tfdHJ4X2lkW1RSWF9JRF9N QVhfTEVOICsgMV07Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2li dWYvaWJ1ZjBpYnVmLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pYnVmL2lidWYwaWJ1 Zi5jCTIwMTAtMTAtMTkgMDY6MDQ6MTUgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2lu L2lidWYvaWJ1ZjBpYnVmLmMJMjAxMS0wMi0wMiAxMjowNToxMiArMDAwMApAQCAtMTg3OCw5ICsx ODc4LDkgQEAgaWJ1Zl9yZW1vdmVfZnJlZV9wYWdlKHZvaWQpCiAJZnNlZ19mcmVlX3BhZ2UoaGVh ZGVyX3BhZ2UgKyBJQlVGX0hFQURFUiArIElCVUZfVFJFRV9TRUdfSEVBREVSLAogCQkgICAgICAg SUJVRl9TUEFDRV9JRCwgcGFnZV9ubywgJm10cik7CiAKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVf QUNDRVNTRVMKKyNpZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVk IFVOSVZfREVCVUcKIAlidWZfcGFnZV9yZXNldF9maWxlX3BhZ2Vfd2FzX2ZyZWVkKElCVUZfU1BB Q0VfSUQsIHBhZ2Vfbm8pOwotI2VuZGlmCisjZW5kaWYgLyogVU5JVl9ERUJVR19GSUxFX0FDQ0VT U0VTIHx8IFVOSVZfREVCVUcgKi8KIAogCWlidWZfZW50ZXIoKTsKIApAQCAtMTkyMiw5ICsxOTIy LDkgQEAgaWJ1Zl9yZW1vdmVfZnJlZV9wYWdlKHZvaWQpCiAJaWJ1Zl9iaXRtYXBfcGFnZV9zZXRf Yml0cygKIAkJYml0bWFwX3BhZ2UsIHBhZ2Vfbm8sIHppcF9zaXplLCBJQlVGX0JJVE1BUF9JQlVG LCBGQUxTRSwgJm10cik7CiAKLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNpZiBk ZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAli dWZfcGFnZV9zZXRfZmlsZV9wYWdlX3dhc19mcmVlZChJQlVGX1NQQUNFX0lELCBwYWdlX25vKTsK LSNlbmRpZgorI2VuZGlmIC8qIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBVTklWX0RFQlVH ICovCiAJbXRyX2NvbW1pdCgmbXRyKTsKIAogCW11dGV4X2V4aXQoJmlidWZfbXV0ZXgpOwoKPT09 IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBjdXIuaCcK LS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMGN1ci5oCTIwMTEtMDEtMTQg MTc6MDI6MjggKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMGN1 ci5oCTIwMTEtMDItMDIgMTM6NTE6MDggKzAwMDAKQEAgLTUxMiw4ICs1MTIsOCBAQCBmaWxlIHNl Z21lbnQgb2YgdGhlIGluZGV4IHRyZWUuCiBAcmV0dXJuCURCX1NVQ0NFU1Mgb3IgREJfT1VUX09G X0ZJTEVfU1BBQ0UgKi8KIFVOSVZfSU5URVJOCiB1bGludAotYnRyX3N0b3JlX2JpZ19yZWNfZXh0 ZXJuX2ZpZWxkcygKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCitidHJfc3RvcmVf YmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSovCiAJZGljdF9pbmRleF90KglpbmRleCwJCS8qITwgaW46IGluZGV4IG9mIHJlYzsg dGhlIGluZGV4IHRyZWUKIAkJCQkJTVVTVCBiZSBYLWxhdGNoZWQgKi8KIAlidWZfYmxvY2tfdCoJ cmVjX2Jsb2NrLAkvKiE8IGluL291dDogYmxvY2sgY29udGFpbmluZyByZWMgKi8KQEAgLTUyMiwx MCArNTIyLDQyIEBAIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVybl9maWVsZHMoCiAJCQkJCXRoZSAi ZXh0ZXJuYWwgc3RvcmFnZSIgZmxhZ3MgaW4gb2Zmc2V0cwogCQkJCQl3aWxsIG5vdCBjb3JyZXNw b25kIHRvIHJlYyB3aGVuCiAJCQkJCXRoaXMgZnVuY3Rpb24gcmV0dXJucyAqLwotCWJpZ19yZWNf dCoJYmlnX3JlY192ZWMsCS8qITwgaW46IHZlY3RvciBjb250YWluaW5nIGZpZWxkcworI2lmZGVm IFVOSVZfREVCVUcKKwltdHJfdCoJCWxvY2FsX210ciwJLyohPCBpbjogbXRyIGNvbnRhaW5pbmcg dGhlCisJCQkJCWxhdGNoIHRvIHJlYyBhbmQgdG8gdGhlIHRyZWUgKi8KKyNlbmRpZiAvKiBVTklW X0RFQlVHICovCisjaWYgZGVmaW5lZCBVTklWX0RFQlVHIHx8IGRlZmluZWQgVU5JVl9CTE9CX0xJ R0hUX0RFQlVHCisJaWJvb2wJCXVwZGF0ZV9pbl9wbGFjZSwvKiEgaW46IFRSVUUgaWYgdGhlIHJl Y29yZCBpcyB1cGRhdGVkCisJCQkJCWluIHBsYWNlIChub3QgZGVsZXRlK2luc2VydCkgKi8KKyNl bmRpZiAvKiBVTklWX0RFQlVHIHx8IFVOSVZfQkxPQl9MSUdIVF9ERUJVRyAqLworCWNvbnN0IGJp Z19yZWNfdCpiaWdfcmVjX3ZlYykJLyohPCBpbjogdmVjdG9yIGNvbnRhaW5pbmcgZmllbGRzCiAJ CQkJCXRvIGJlIHN0b3JlZCBleHRlcm5hbGx5ICovCi0JbXRyX3QqCQlsb2NhbF9tdHIpOwkvKiE8 IGluOiBtdHIgY29udGFpbmluZyB0aGUgbGF0Y2ggdG8KLQkJCQkJcmVjIGFuZCB0byB0aGUgdHJl ZSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKworLyoqIFN0b3JlcyB0aGUgZmllbGRz IGluIGJpZ19yZWNfdmVjIHRvIHRoZSB0YWJsZXNwYWNlIGFuZCBwdXRzIHBvaW50ZXJzIHRvCit0 aGVtIGluIHJlYy4gIFRoZSBleHRlcm4gZmxhZ3MgaW4gcmVjIHdpbGwgaGF2ZSB0byBiZSBzZXQg YmVmb3JlaGFuZC4KK1RoZSBmaWVsZHMgYXJlIHN0b3JlZCBvbiBwYWdlcyBhbGxvY2F0ZWQgZnJv bSBsZWFmIG5vZGUKK2ZpbGUgc2VnbWVudCBvZiB0aGUgaW5kZXggdHJlZS4KK0BwYXJhbSBpbmRl eAlpbjogY2x1c3RlcmVkIGluZGV4OyBNVVNUIGJlIFgtbGF0Y2hlZCBieSBtdHIKK0BwYXJhbSBi CWluL291dDogYmxvY2sgY29udGFpbmluZyByZWM7IE1VU1QgYmUgWC1sYXRjaGVkIGJ5IG10cgor QHBhcmFtIHJlYwlpbi9vdXQ6IGNsdXN0ZXJlZCBpbmRleCByZWNvcmQKK0BwYXJhbSBvZmZzZXRz CWluOiByZWNfZ2V0X29mZnNldHMocmVjLCBpbmRleCk7CisJCXRoZSAiZXh0ZXJuYWwgc3RvcmFn ZSIgZmxhZ3MgaW4gb2Zmc2V0cyB3aWxsIG5vdCBiZSBhZGp1c3RlZAorQHBhcmFtIG10cglpbjog bWluaS10cmFuc2FjdGlvbiB0aGF0IGhvbGRzIHgtbGF0Y2ggb24gaW5kZXggYW5kIGIKK0BwYXJh bSB1cGQJaW46IFRSVUUgaWYgdGhlIHJlY29yZCBpcyB1cGRhdGVkIGluIHBsYWNlIChub3QgZGVs ZXRlK2luc2VydCkKK0BwYXJhbSBiaWcJaW46IHZlY3RvciBjb250YWluaW5nIGZpZWxkcyB0byBi ZSBzdG9yZWQgZXh0ZXJuYWxseQorQHJldHVybglEQl9TVUNDRVNTIG9yIERCX09VVF9PRl9GSUxF X1NQQUNFICovCisjaWZkZWYgVU5JVl9ERUJVRworIyBkZWZpbmUgYnRyX3N0b3JlX2JpZ19yZWNf ZXh0ZXJuX2ZpZWxkcyhpbmRleCxiLHJlYyxvZmZzZXRzLG10cix1cGQsYmlnKSBcCisJYnRyX3N0 b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKGluZGV4LGIscmVjLG9mZnNldHMsbXRyLHVw ZCxiaWcpCisjZWxpZiBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRworIyBkZWZpbmUgYnRy X3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkcyhpbmRleCxiLHJlYyxvZmZzZXRzLG10cix1cGQs YmlnKSBcCisJYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKGluZGV4LGIscmVj LG9mZnNldHMsdXBkLGJpZykKKyNlbHNlCisjIGRlZmluZSBidHJfc3RvcmVfYmlnX3JlY19leHRl cm5fZmllbGRzKGluZGV4LGIscmVjLG9mZnNldHMsbXRyLHVwZCxiaWcpIFwKKwlidHJfc3RvcmVf YmlnX3JlY19leHRlcm5fZmllbGRzX2Z1bmMoaW5kZXgsYixyZWMsb2Zmc2V0cyxiaWcpCisjZW5k aWYKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovLyoqCiBGcmVlcyB0aGUgc3BhY2UgaW4gYW4gZXh0ZXJuYWxseSBz dG9yZWQgZmllbGQgdG8gdGhlIGZpbGUgc3BhY2UKIG1hbmFnZW1lbnQgaWYgdGhlIGZpZWxkIGlu IGRhdGEgaXMgb3duZWQgdGhlIGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkLAoKPT09IG1vZGlmaWVk IGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J1ZjBidWYuaCcKLS0tIGEvc3Rv cmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnVmMGJ1Zi5oCTIwMTEtMDEtMjUgMDc6NTY6MTgg KzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnVmMGJ1Zi5oCTIwMTEt MDItMDIgMTI6MDU6MTIgKzAwMDAKQEAgLTM2OCw3ICszNjgsNyBAQCBidWZfcmVzZXRfY2hlY2tf aW5kZXhfcGFnZV9hdF9mbHVzaCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0q LwogCXVsaW50CXNwYWNlLAkvKiE8IGluOiBzcGFjZSBpZCAqLwogCXVsaW50CW9mZnNldCk7Lyoh PCBpbjogcGFnZSBudW1iZXIgKi8KLSNpZmRlZiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMKKyNp ZiBkZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8vKioKIFNldHMgZmlsZV9wYWdlX3dhc19mcmVlZCBUUlVFIGlmIHRoZSBw YWdlIGlzIGZvdW5kIGluIHRoZSBidWZmZXIgcG9vbC4KIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJl IGNhbGxlZCB3aGVuIHdlIGZyZWUgYSBmaWxlIHBhZ2UgYW5kIHdhbnQgdGhlCkBAIC0zOTMsNyAr MzkzLDcgQEAgYnVmX3BhZ2VfcmVzZXRfZmlsZV9wYWdlX3dhc19mcmVlZCgKIC8qPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PSovCiAJdWxpbnQJc3BhY2UsCS8qITwgaW46IHNwYWNlIGlk ICovCiAJdWxpbnQJb2Zmc2V0KTsJLyohPCBpbjogcGFnZSBudW1iZXIgKi8KLSNlbmRpZiAvKiBV TklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgKi8KKyNlbmRpZiAvKiBVTklWX0RFQlVHX0ZJTEVfQUND RVNTRVMgfHwgVU5JVl9ERUJVRyAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmVhZHMgdGhlIGZyZWVk X3BhZ2VfY2xvY2sgb2YgYSBidWZmZXIgYmxvY2suCiBAcmV0dXJuCWZyZWVkX3BhZ2VfY2xvY2sg Ki8KQEAgLTExMzUsMTEgKzExMzUsMTEgQEAgc3RydWN0IGJ1Zl9wYWdlX3N0cnVjdHsKIAkJCQkJ MCBpZiB0aGUgYmxvY2sgd2FzIG5ldmVyIGFjY2Vzc2VkCiAJCQkJCWluIHRoZSBidWZmZXIgcG9v bCAqLwogCS8qIEB9ICovCi0jIGlmZGVmIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUworIyBpZiBk ZWZpbmVkIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUyB8fCBkZWZpbmVkIFVOSVZfREVCVUcKIAlp Ym9vbAkJZmlsZV9wYWdlX3dhc19mcmVlZDsKIAkJCQkJLyohPCB0aGlzIGlzIHNldCB0byBUUlVF IHdoZW4gZnNwCiAJCQkJCWZyZWVzIGEgcGFnZSBpbiBidWZmZXIgcG9vbCAqLwotIyBlbmRpZiAv KiBVTklWX0RFQlVHX0ZJTEVfQUNDRVNTRVMgKi8KKyMgZW5kaWYgLyogVU5JVl9ERUJVR19GSUxF X0FDQ0VTU0VTIHx8IFVOSVZfREVCVUcgKi8KICNlbmRpZiAvKiAhVU5JVl9IT1RCQUNLVVAgKi8K IH07CiAKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9y b3cwdXBkLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3JvdzB1cGQuaAky MDEwLTEyLTIxIDExOjI3OjIyICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNs dWRlL3JvdzB1cGQuaAkyMDExLTAxLTMxIDA3OjU2OjUxICswMDAwCkBAIC0yODAsMTkgKzI4MCwy OSBAQCBOT1RFOiB3ZSBjb21wYXJlIHRoZSBmaWVsZHMgYXMgYmluYXJ5IHN0CiBAcmV0dXJuIFRS VUUgaWYgdXBkYXRlIHZlY3RvciBjaGFuZ2VzIGFuIG9yZGVyaW5nIGZpZWxkIGluIHRoZSBpbmRl eCByZWNvcmQgKi8KIFVOSVZfSU5URVJOCiBpYm9vbAotcm93X3VwZF9jaGFuZ2VzX29yZF9maWVs ZF9iaW5hcnkoCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KK3Jvd191cGRfY2hh bmdlc19vcmRfZmllbGRfYmluYXJ5X2Z1bmMoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW46IGluZGV4IG9mIHRoZSBy ZWNvcmQgKi8KKwljb25zdCB1cGRfdCoJdXBkYXRlLAkvKiE8IGluOiB1cGRhdGUgdmVjdG9yIGZv ciB0aGUgcm93OyBOT1RFOiB0aGUKKwkJCQlmaWVsZCBudW1iZXJzIGluIHRoaXMgTVVTVCBiZSBj bHVzdGVyZWQgaW5kZXgKKwkJCQlwb3NpdGlvbnMhICovCisjaWZkZWYgVU5JVl9ERUJVRworCWNv bnN0IHF1ZV90aHJfdCp0aHIsCS8qITwgaW46IHF1ZXJ5IHRocmVhZCAqLworI2VuZGlmIC8qIFVO SVZfREVCVUcgKi8KIAljb25zdCBkdHVwbGVfdCoJcm93LAkvKiE8IGluOiBvbGQgdmFsdWUgb2Yg cm93LCBvciBOVUxMIGlmIHRoZQogCQkJCXJvdyBhbmQgdGhlIGRhdGEgdmFsdWVzIGluIHVwZGF0 ZSBhcmUgbm90CiAJCQkJa25vd24gd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgZS5nLiwg YXQKIAkJCQljb21waWxlIHRpbWUgKi8KLQljb25zdCByb3dfZXh0X3QqZXh0LAkvKiE8IE5VTEws IG9yIHByZWZpeGVzIG9mIHRoZSBleHRlcm5hbGx5CisJY29uc3Qgcm93X2V4dF90KmV4dCkJLyoh PCBOVUxMLCBvciBwcmVmaXhlcyBvZiB0aGUgZXh0ZXJuYWxseQogCQkJCXN0b3JlZCBjb2x1bW5z IGluIHRoZSBvbGQgcm93ICovCi0JZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbjogaW5kZXgg b2YgdGhlIHJlY29yZCAqLwotCWNvbnN0IHVwZF90Kgl1cGRhdGUpCS8qITwgaW46IHVwZGF0ZSB2 ZWN0b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRoZQotCQkJCWZpZWxkIG51bWJlcnMgaW4gdGhpcyBN VVNUIGJlIGNsdXN0ZXJlZCBpbmRleAotCQkJCXBvc2l0aW9ucyEgKi8KLQlfX2F0dHJpYnV0ZV9f KChub25udWxsKDMsNCksIHdhcm5fdW51c2VkX3Jlc3VsdCkpOworCV9fYXR0cmlidXRlX18oKG5v bm51bGwoMSwyKSwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CisjaWZkZWYgVU5JVl9ERUJVRworIyBk ZWZpbmUgcm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkoaW5kZXgsdXBkYXRlLHRocixy b3csZXh0KQlcCisJcm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnlfZnVuYyhpbmRleCx1 cGRhdGUsdGhyLHJvdyxleHQpCisjZWxzZSAvKiBVTklWX0RFQlVHICovCisjIGRlZmluZSByb3df dXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShpbmRleCx1cGRhdGUsdGhyLHJvdyxleHQpCVwK Kwlyb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeV9mdW5jKGluZGV4LHVwZGF0ZSxyb3cs ZXh0KQorI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENoZWNrcyBpZiBhbiB1cGRh dGUgdmVjdG9yIGNoYW5nZXMgYW4gb3JkZXJpbmcgZmllbGQgb2YgYW4gaW5kZXggcmVjb3JkLgog VGhpcyBmdW5jdGlvbiBpcyBmYXN0IGlmIHRoZSB1cGRhdGUgdmVjdG9yIGlzIHNob3J0IG9yIHRo ZSBudW1iZXIgb2Ygb3JkZXJpbmcKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9w bHVnaW4vaW5jbHVkZS91bml2LmknCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRl L3VuaXYuaQkyMDExLTAxLTEwIDEzOjM0OjQ1ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9pbmNsdWRlL3VuaXYuaQkyMDExLTAyLTA4IDE3OjI2OjQyICswMDAwCkBAIC0xNzcsMTQg KzE3NywxNSBAQCBjb21tYW5kLiBOb3QgdGVzdGVkIG9uIFdpbmRvd3MuICovCiAJCQkJCQlkZWJ1 Z2dpbmcgd2l0aG91dCBVTklWX0RFQlVHICovCiAjZGVmaW5lIFVOSVZfQlVGX0RFQlVHCQkJCS8q IEVuYWJsZSBidWZmZXIgcG9vbAogCQkJCQkJZGVidWdnaW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAq LworI2RlZmluZSBVTklWX0JMT0JfTElHSFRfREVCVUcJCQkvKiBFbmFibGUgb2ZmLXBhZ2UgY29s dW1uCisJCQkJCQlkZWJ1Z2dpbmcgd2l0aG91dCBVTklWX0RFQlVHICovCiAjZGVmaW5lIFVOSVZf REVCVUcJCQkJLyogRW5hYmxlIHV0X2FkKCkgYXNzZXJ0aW9ucwogCQkJCQkJYW5kIGRpc2FibGUg VU5JVl9JTkxJTkUgKi8KICNkZWZpbmUgVU5JVl9ERUJVR19MT0NLX1ZBTElEQVRFCQkvKiBFbmFi bGUKIAkJCQkJCXV0X2FkKGxvY2tfcmVjX3ZhbGlkYXRlX3BhZ2UoKSkKIAkJCQkJCWFzc2VydGlv bnMuICovCi0jZGVmaW5lIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUwkJLyogRGVidWcgLmliZCBm aWxlIGFjY2VzcwotCQkJCQkJKGZpZWxkIGZpbGVfcGFnZV93YXNfZnJlZWQKLQkJCQkJCWluIGJ1 Zl9wYWdlX3QpICovCisjZGVmaW5lIFVOSVZfREVCVUdfRklMRV9BQ0NFU1NFUwkJLyogRW5hYmxl IGZyZWVkIGJsb2NrIGFjY2VzcworCQkJCQkJZGVidWdnaW5nIHdpdGhvdXQgVU5JVl9ERUJVRyAq LwogI2RlZmluZSBVTklWX0xSVV9ERUJVRwkJCQkvKiBkZWJ1ZyB0aGUgYnVmZmVyIHBvb2wgTFJV ICovCiAjZGVmaW5lIFVOSVZfSEFTSF9ERUJVRwkJCQkvKiBkZWJ1ZyBIQVNIXyBtYWNyb3MgKi8K ICNkZWZpbmUgVU5JVl9MSVNUX0RFQlVHCQkJCS8qIGRlYnVnIFVUX0xJU1RfIG1hY3JvcyAqLwpA QCAtMjk2LDYgKzI5NywxOCBAQCBudW1iZXIgZG9lcyBub3QgaW5jbHVkZSBhIHRlcm1pbmF0aW5n ICdcCiBsb25nZXIgbmFtZXMgaW50ZXJuYWxseSAqLwogI2RlZmluZSBNQVhfVEFCTEVfTkFNRV9M RU4JMTkyCiAKKy8qIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGRhdGFiYXNlIG5hbWUuIExpa2Ug TUFYX1RBQkxFX05BTUVfTEVOIHRoaXMgaXMKK3RoZSBNeVNRTCdzIE5BTUVfTEVOLCBzZWUgY2hl Y2tfYW5kX2NvbnZlcnRfZGJfbmFtZSgpLiAqLworI2RlZmluZSBNQVhfREFUQUJBU0VfTkFNRV9M RU4JTUFYX1RBQkxFX05BTUVfTEVOCisKKy8qIE1BWF9GVUxMX05BTUVfTEVOIGRlZmluZXMgdGhl IGZ1bGwgbmFtZSBwYXRoIGluY2x1ZGluZyB0aGUKK2RhdGFiYXNlIG5hbWUgYW5kIHRhYmxlIG5h bWUuIEluIGFkZGl0aW9uLCAxNCBieXRlcyBpcyBhZGRlZCBmb3I6CisJMiBmb3Igc3Vycm91bmRp bmcgcXVvdGVzIGFyb3VuZCB0YWJsZSBuYW1lCisJMSBmb3IgdGhlIHNlcGFyYXRpbmcgZG90ICgu KQorCTkgZm9yIHRoZSAjbXlzcWw1MCMgcHJlZml4ICovCisjZGVmaW5lIE1BWF9GVUxMX05BTUVf TEVOCQkJCVwKKwkoTUFYX1RBQkxFX05BTUVfTEVOICsgTUFYX0RBVEFCQVNFX05BTUVfTEVOICsg MTQpCisKIC8qCiAJCQlVTklWRVJTQUwgVFlQRSBERUZJTklUSU9OUwogCQkJPT09PT09PT09PT09 PT09PT09PT09PT09PT0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4v aW5jbHVkZS91dDB2ZWMuaCcKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvdXQw dmVjLmgJMjAwOS0wNS0yNSAxMjowOToyNCArMDAwMAorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVn aW4vaW5jbHVkZS91dDB2ZWMuaAkyMDEwLTExLTMwIDA5OjExOjI2ICswMDAwCkBAIC05NCw2ICs5 NCwyNSBAQCBpYl92ZWN0b3JfZ2V0KAogCXVsaW50CQluKTsJLyohPCBpbjogZWxlbWVudCBpbmRl eCB0byBnZXQgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovLyoqCitHZXQgbGFzdCBlbGVtZW50LiBUaGUgdmVjdG9y IG11c3Qgbm90IGJlIGVtcHR5LgorQHJldHVybglsYXN0IGVsZW1lbnQgKi8KK1VOSVZfSU5MSU5F Cit2b2lkKgoraWJfdmVjdG9yX2dldF9sYXN0KAorLyo9PT09PT09PT09PT09PT0qLworCWliX3Zl Y3Rvcl90Kgl2ZWMpOwkvKiE8IGluOiB2ZWN0b3IgKi8KKworLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitTZXQgdGhl IG4ndGggZWxlbWVudC4gKi8KK1VOSVZfSU5MSU5FCit2b2lkCitpYl92ZWN0b3Jfc2V0KAorLyo9 PT09PT09PT09Ki8KKwlpYl92ZWN0b3JfdCoJdmVjLAkvKiE8IGluL291dDogdmVjdG9yICovCisJ dWxpbnQJCW4sCS8qITwgaW46IGVsZW1lbnQgaW5kZXggdG8gc2V0ICovCisJdm9pZCoJCWVsZW0p OwkvKiE8IGluOiBkYXRhIGVsZW1lbnQgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBSZW1vdmUgdGhlIGxh c3QgZWxlbWVudCBmcm9tIHRoZSB2ZWN0b3IuICovCiBVTklWX0lOTElORQogdm9pZCoKCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91dDB2ZWMuaWMnCi0t LSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3V0MHZlYy5pYwkyMDA5LTA1LTI1IDA5 OjUyOjI5ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3V0MHZlYy5p YwkyMDEwLTExLTMwIDA5OjExOjI2ICswMDAwCkBAIC01MSw2ICs1MSwzNSBAQCBpYl92ZWN0b3Jf Z2V0KAogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKK0dldCBsYXN0IGVsZW1lbnQuIFRoZSB2ZWN0b3IgbXVz dCBub3QgYmUgZW1wdHkuCitAcmV0dXJuCWxhc3QgZWxlbWVudCAqLworVU5JVl9JTkxJTkUKK3Zv aWQqCitpYl92ZWN0b3JfZ2V0X2xhc3QoCisvKj09PT09PT09PT09PT09PSovCisJaWJfdmVjdG9y X3QqCXZlYykJLyohPCBpbjogdmVjdG9yICovCit7CisJdXRfYSh2ZWMtPnVzZWQgPiAwKTsKKwor CXJldHVybih2ZWMtPmRhdGFbdmVjLT51c2VkIC0gMV0pOworfQorCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1Nl dCB0aGUgbid0aCBlbGVtZW50LiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2liX3ZlY3Rvcl9zZXQo CisvKj09PT09PT09PT0qLworCWliX3ZlY3Rvcl90Kgl2ZWMsCS8qITwgaW4vb3V0OiB2ZWN0b3Ig Ki8KKwl1bGludAkJbiwJLyohPCBpbjogZWxlbWVudCBpbmRleCB0byBzZXQgKi8KKwl2b2lkKgkJ ZWxlbSkJLyohPCBpbjogZGF0YSBlbGVtZW50ICovCit7CisJdXRfYShuIDwgdmVjLT51c2VkKTsK KworCXZlYy0+ZGF0YVtuXSA9IGVsZW07Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogUmVtb3ZlIHRoZSBs YXN0IGVsZW1lbnQgZnJvbSB0aGUgdmVjdG9yLgogQHJldHVybglsYXN0IHZlY3RvciBlbGVtZW50 ICovCiBVTklWX0lOTElORQoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdp bi9sb2NrL2xvY2swbG9jay5jJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vbG9jay9sb2Nr MGxvY2suYwkyMDEwLTA2LTAyIDEwOjM3OjE0ICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9sb2NrL2xvY2swbG9jay5jCTIwMTAtMTEtMzAgMDk6MTE6MjYgKzAwMDAKQEAgLTM2MjUs NiArMzYyNSw4MCBAQCBsb2NrX3RhYmxlX2NyZWF0ZSgKIH0KIAogLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitQb3BzIGF1 dG9pbmMgbG9jayByZXF1ZXN0cyBmcm9tIHRoZSB0cmFuc2FjdGlvbidzIGF1dG9pbmNfbG9ja3Mu IFdlCitoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgYXJlIGdhcHMgaW4gdGhlIGFycmF5IGFu ZCB0aGV5IG5lZWQgdG8KK2JlIHBvcHBlZCBvZmYgdGhlIHN0YWNrLiAqLworVU5JVl9JTkxJTkUK K3ZvaWQKK2xvY2tfdGFibGVfcG9wX2F1dG9pbmNfbG9ja3MoCisvKj09PT09PT09PT09PT09PT09 PT09PT09PT0qLworCXRyeF90Kgl0cngpCS8qITwgaW4vb3V0OiB0cmFuc2FjdGlvbiB0aGF0IG93 bnMgdGhlIEFVVE9JTkMgbG9ja3MgKi8KK3sKKwl1dF9hZChtdXRleF9vd24oJmtlcm5lbF9tdXRl eCkpOworCXV0X2FkKCFpYl92ZWN0b3JfaXNfZW1wdHkodHJ4LT5hdXRvaW5jX2xvY2tzKSk7CisK KwkvKiBTa2lwIGFueSBnYXBzLCBnYXBzIGFyZSBOVUxMIGxvY2sgZW50cmllcyBpbiB0aGUKKwl0 cngtPmF1dG9pbmNfbG9ja3MgdmVjdG9yLiAqLworCisJZG8geworCQlpYl92ZWN0b3JfcG9wKHRy eC0+YXV0b2luY19sb2Nrcyk7CisKKwkJaWYgKGliX3ZlY3Rvcl9pc19lbXB0eSh0cngtPmF1dG9p bmNfbG9ja3MpKSB7CisJCQlyZXR1cm47CisJCX0KKworCX0gd2hpbGUgKGliX3ZlY3Rvcl9nZXRf bGFzdCh0cngtPmF1dG9pbmNfbG9ja3MpID09IE5VTEwpOworfQorCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK1JlbW92 ZXMgYW4gYXV0b2luYyBsb2NrIHJlcXVlc3QgZnJvbSB0aGUgdHJhbnNhY3Rpb24ncyBhdXRvaW5j X2xvY2tzLiAqLworVU5JVl9JTkxJTkUKK3ZvaWQKK2xvY2tfdGFibGVfcmVtb3ZlX2F1dG9pbmNf bG9jaygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KKwlsb2NrX3QqCWxvY2ssCS8q ITwgaW46IHRhYmxlIGxvY2sgKi8KKwl0cnhfdCoJdHJ4KQkvKiE8IGluL291dDogdHJhbnNhY3Rp b24gdGhhdCBvd25zIHRoZSBsb2NrICovCit7CisJbG9ja190KglhdXRvaW5jX2xvY2s7CisJbGlu dAlpID0gaWJfdmVjdG9yX3NpemUodHJ4LT5hdXRvaW5jX2xvY2tzKSAtIDE7CisKKwl1dF9hZCht dXRleF9vd24oJmtlcm5lbF9tdXRleCkpOworCXV0X2FkKGxvY2tfZ2V0X21vZGUobG9jaykgPT0g TE9DS19BVVRPX0lOQyk7CisJdXRfYWQobG9ja19nZXRfdHlwZV9sb3cobG9jaykgJiBMT0NLX1RB QkxFKTsKKwl1dF9hZCghaWJfdmVjdG9yX2lzX2VtcHR5KHRyeC0+YXV0b2luY19sb2NrcykpOwor CisJLyogV2l0aCBzdG9yZWQgZnVuY3Rpb25zIGFuZCBwcm9jZWR1cmVzIHRoZSB1c2VyIG1heSBk cm9wCisJYSB0YWJsZSB3aXRoaW4gdGhlIHNhbWUgInN0YXRlbWVudCIuIFRoaXMgc3BlY2lhbCBj YXNlIGhhcworCXRvIGJlIGhhbmRsZWQgYnkgZGVsZXRpbmcgb25seSB0aG9zZSBBVVRPSU5DIGxv Y2tzIHRoYXQgd2VyZQorCWhlbGQgYnkgdGhlIHRhYmxlIGJlaW5nIGRyb3BwZWQuICovCisKKwlh dXRvaW5jX2xvY2sgPSBpYl92ZWN0b3JfZ2V0KHRyeC0+YXV0b2luY19sb2NrcywgaSk7CisKKwkv KiBUaGlzIGlzIHRoZSBkZWZhdWx0IGZhc3QgY2FzZS4gKi8KKworCWlmIChhdXRvaW5jX2xvY2sg PT0gbG9jaykgeworCQlsb2NrX3RhYmxlX3BvcF9hdXRvaW5jX2xvY2tzKHRyeCk7CisJfSBlbHNl IHsKKwkJLyogVGhlIGxhc3QgZWxlbWVudCBzaG91bGQgbmV2ZXIgYmUgTlVMTCAqLworCQl1dF9h KGF1dG9pbmNfbG9jayAhPSBOVUxMKTsKKworCQkvKiBIYW5kbGUgZnJlZWluZyB0aGUgbG9ja3Mg ZnJvbSB3aXRoaW4gdGhlIHN0YWNrLiAqLworCisJCXdoaWxlICgtLWkgPj0gMCkgeworCQkJYXV0 b2luY19sb2NrID0gaWJfdmVjdG9yX2dldCh0cngtPmF1dG9pbmNfbG9ja3MsIGkpOworCisJCQlp ZiAoVU5JVl9MSUtFTFkoYXV0b2luY19sb2NrID09IGxvY2spKSB7CisJCQkJaWJfdmVjdG9yX3Nl dCh0cngtPmF1dG9pbmNfbG9ja3MsIGksIE5VTEwpOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQor CisJCS8qIE11c3QgZmluZCB0aGUgYXV0b2luYyBsb2NrLiAqLworCQl1dF9lcnJvcjsKKwl9Cit9 CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgogUmVtb3ZlcyBhIHRhYmxlIGxvY2sgcmVxdWVzdCBmcm9tIHRoZSBxdWV1 ZSBhbmQgdGhlIHRyeCBsaXN0IG9mIGxvY2tzOwogdGhpcyBpcyBhIGxvdy1sZXZlbCBmdW5jdGlv biB3aGljaCBkb2VzIE5PVCBjaGVjayBpZiB3YWl0aW5nIHJlcXVlc3RzCiBjYW4gbm93IGJlIGdy YW50ZWQuICovCkBAIC0zNjYzLDEwICszNzM3LDggQEAgbG9ja190YWJsZV9yZW1vdmVfbG93KAog CiAJCWlmICghbG9ja19nZXRfd2FpdChsb2NrKQogCQkgICAgJiYgIWliX3ZlY3Rvcl9pc19lbXB0 eSh0cngtPmF1dG9pbmNfbG9ja3MpKSB7Ci0JCQlsb2NrX3QqCWF1dG9pbmNfbG9jazsKIAotCQkJ YXV0b2luY19sb2NrID0gaWJfdmVjdG9yX3BvcCh0cngtPmF1dG9pbmNfbG9ja3MpOwotCQkJdXRf YShhdXRvaW5jX2xvY2sgPT0gbG9jayk7CisJCQlsb2NrX3RhYmxlX3JlbW92ZV9hdXRvaW5jX2xv Y2sobG9jaywgdHJ4KTsKIAkJfQogCiAJCXV0X2EodGFibGUtPm5fd2FpdGluZ19vcl9ncmFudGVk X2F1dG9faW5jX2xvY2tzID4gMCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJf cGx1Z2luL3Jvdy9yb3cwaW5zLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93 MGlucy5jCTIwMTAtMTEtMDQgMTM6MTI6MTUgKzAwMDAKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1 Z2luL3Jvdy9yb3cwaW5zLmMJMjAxMS0wMi0wMiAxMzo1MTowOCArMDAwMApAQCAtMjEzMCw3ICsy MTMwLDcgQEAgZnVuY3Rpb25fZXhpdDoKIAogCQllcnIgPSBidHJfc3RvcmVfYmlnX3JlY19leHRl cm5fZmllbGRzKAogCQkJaW5kZXgsIGJ0cl9jdXJfZ2V0X2Jsb2NrKCZjdXJzb3IpLAotCQkJcmVj LCBvZmZzZXRzLCBiaWdfcmVjLCAmbXRyKTsKKwkJCXJlYywgb2Zmc2V0cywgJm10ciwgRkFMU0Us IGJpZ19yZWMpOwogCiAJCWlmIChtb2RpZnkpIHsKIAkJCWR0dXBsZV9iaWdfcmVjX2ZyZWUoYmln X3JlYyk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cw bWVyZ2UuYycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwbWVyZ2UuYwkyMDEw LTExLTExIDA1OjMyOjEyICswMDAwCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93 MG1lcmdlLmMJMjAxMS0wMS0wNyAwNzo0NTo1OSArMDAwMApAQCAtMjM0MSw3ICsyMzQxLDcgQEAg cm93X21lcmdlX3JlbmFtZV90YWJsZXMoCiB7CiAJdWxpbnQJCWVycgk9IERCX0VSUk9SOwogCXBh cnNfaW5mb190KglpbmZvOwotCWNoYXIJCW9sZF9uYW1lW01BWF9UQUJMRV9OQU1FX0xFTiArIDFd OworCWNoYXIJCW9sZF9uYW1lW01BWF9GVUxMX05BTUVfTEVOICsgMV07CiAKIAl1dF9hZCh0cngt Pm15c3FsX3RocmVhZF9pZCA9PSBvc190aHJlYWRfZ2V0X2N1cnJfaWQoKSk7CiAJdXRfYWQob2xk X3RhYmxlICE9IG5ld190YWJsZSk7CkBAIC0yMzU2LDcgKzIzNTYsNyBAQCByb3dfbWVyZ2VfcmVu YW1lX3RhYmxlcygKIAkJdXRfcHJpbnRfdGltZXN0YW1wKHN0ZGVycik7CiAJCWZwcmludGYoc3Rk ZXJyLCAiSW5ub0RCOiB0b28gbG9uZyB0YWJsZSBuYW1lOiAnJXMnLCAiCiAJCQkibWF4IGxlbmd0 aCBpcyAlZFxuIiwgb2xkX3RhYmxlLT5uYW1lLAotCQkJTUFYX1RBQkxFX05BTUVfTEVOKTsKKwkJ CU1BWF9GVUxMX05BTUVfTEVOKTsKIAkJdXRfZXJyb3I7CiAJfQogCgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwcHVyZ2UuYycKLS0tIGEvc3RvcmFnZS9p bm5vZGJfcGx1Z2luL3Jvdy9yb3cwcHVyZ2UuYwkyMDEwLTEyLTIxIDA5OjM5OjE5ICswMDAwCisr KyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHB1cmdlLmMJMjAxMS0wMi0wMiAxMjox Mjo0OSArMDAwMApAQCAtMzg3LDggKzM4NywxMSBAQCBQdXJnZXMgYW4gdXBkYXRlIG9mIGFuIGV4 aXN0aW5nIHJlY29yZC4KIG1hcmtlZCByZWNvcmQgaWYgdGhhdCByZWNvcmQgY29udGFpbmVkIGFu IGV4dGVybmFsbHkgc3RvcmVkIGZpZWxkLiAqLwogc3RhdGljCiB2b2lkCi1yb3dfcHVyZ2VfdXBk X2V4aXN0X29yX2V4dGVybigKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT0qLworcm93X3B1 cmdlX3VwZF9leGlzdF9vcl9leHRlcm5fZnVuYygKKy8qPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PSovCisjaWZkZWYgVU5JVl9ERUJVRworCWNvbnN0IHF1ZV90aHJfdCp0aHIsCS8qITwg aW46IHF1ZXJ5IHRocmVhZCAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAlwdXJnZV9ub2Rl X3QqCW5vZGUpCS8qITwgaW46IHJvdyBwdXJnZSBub2RlICovCiB7CiAJbWVtX2hlYXBfdCoJaGVh cDsKQEAgLTQxMyw4ICs0MTYsOCBAQCByb3dfcHVyZ2VfdXBkX2V4aXN0X29yX2V4dGVybigKIAl3 aGlsZSAobm9kZS0+aW5kZXggIT0gTlVMTCkgewogCQlpbmRleCA9IG5vZGUtPmluZGV4OwogCi0J CWlmIChyb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShOVUxMLCBOVUxMLCBub2RlLT5p bmRleCwKLQkJCQkJCSAgICAgbm9kZS0+dXBkYXRlKSkgeworCQlpZiAocm93X3VwZF9jaGFuZ2Vz X29yZF9maWVsZF9iaW5hcnkobm9kZS0+aW5kZXgsIG5vZGUtPnVwZGF0ZSwKKwkJCQkJCSAgICAg dGhyLCBOVUxMLCBOVUxMKSkgewogCQkJLyogQnVpbGQgdGhlIG9sZGVyIHZlcnNpb24gb2YgdGhl IGluZGV4IGVudHJ5ICovCiAJCQllbnRyeSA9IHJvd19idWlsZF9pbmRleF9lbnRyeShub2RlLT5y b3csIE5VTEwsCiAJCQkJCQkgICAgICBpbmRleCwgaGVhcCk7CkBAIC00OTYsNiArNDk5LDE0IEBA IHNraXBfc2Vjb25kYXJpZXM6CiAJfQogfQogCisjaWZkZWYgVU5JVl9ERUJVRworIyBkZWZpbmUg cm93X3B1cmdlX3VwZF9leGlzdF9vcl9leHRlcm4odGhyLG5vZGUpCVwKKwlyb3dfcHVyZ2VfdXBk X2V4aXN0X29yX2V4dGVybl9mdW5jKHRocixub2RlKQorI2Vsc2UgLyogVU5JVl9ERUJVRyAqLwor IyBkZWZpbmUgcm93X3B1cmdlX3VwZF9leGlzdF9vcl9leHRlcm4odGhyLG5vZGUpCVwKKwlyb3df cHVyZ2VfdXBkX2V4aXN0X29yX2V4dGVybl9mdW5jKG5vZGUpCisjZW5kaWYgLyogVU5JVl9ERUJV RyAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiovLyoqCiBQYXJzZXMgdGhlIHJvdyByZWZlcmVuY2UgYW5kIG90aGVyIGluZm8g aW4gYSBtb2RpZnkgdW5kbyBsb2cgcmVjb3JkLgogQHJldHVybiBUUlVFIGlmIHB1cmdlIG9wZXJh dGlvbiByZXF1aXJlZDogTk9URSB0aGF0IHRoZW4gdGhlIENBTExFUgpAQCAtNjAyLDQ3ICs2MTMs MzIgQEAgZXJyX2V4aXQ6CiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCiBGZXRjaGVzIGFuIHVuZG8gbG9nIHJlY29yZCBhbmQg ZG9lcyB0aGUgcHVyZ2UgZm9yIHRoZSByZWNvcmRlZCBvcGVyYXRpb24uCiBJZiBub25lIGxlZnQs IG9yIHRoZSBjdXJyZW50IHB1cmdlIGNvbXBsZXRlZCwgcmV0dXJucyB0aGUgY29udHJvbCB0byB0 aGUKLXBhcmVudCBub2RlLCB3aGljaCBpcyBhbHdheXMgYSBxdWVyeSB0aHJlYWQgbm9kZS4KLUBy ZXR1cm4JREJfU1VDQ0VTUyBpZiBvcGVyYXRpb24gc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCwgZWxz ZSBlcnJvciBjb2RlICovCi1zdGF0aWMKLXVsaW50CitwYXJlbnQgbm9kZSwgd2hpY2ggaXMgYWx3 YXlzIGEgcXVlcnkgdGhyZWFkIG5vZGUuICovCitzdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVs bCkpCit2b2lkCiByb3dfcHVyZ2UoCiAvKj09PT09PSovCiAJcHVyZ2Vfbm9kZV90Kglub2RlLAkv KiE8IGluOiByb3cgcHVyZ2Ugbm9kZSAqLwogCXF1ZV90aHJfdCoJdGhyKQkvKiE8IGluOiBxdWVy eSB0aHJlYWQgKi8KIHsKLQlyb2xsX3B0cl90CXJvbGxfcHRyOwotCWlib29sCQlwdXJnZV9uZWVk ZWQ7CiAJaWJvb2wJCXVwZGF0ZWRfZXh0ZXJuOwotCXRyeF90KgkJdHJ4OwogCi0JdXRfYWQobm9k ZSAmJiB0aHIpOwotCi0JdHJ4ID0gdGhyX2dldF90cngodGhyKTsKKwl1dF9hZChub2RlKTsKKwl1 dF9hZCh0aHIpOwogCi0Jbm9kZS0+dW5kb19yZWMgPSB0cnhfcHVyZ2VfZmV0Y2hfbmV4dF9yZWMo JnJvbGxfcHRyLAotCQkJCQkJICAmKG5vZGUtPnJlc2VydmF0aW9uKSwKKwlub2RlLT51bmRvX3Jl YyA9IHRyeF9wdXJnZV9mZXRjaF9uZXh0X3JlYygmbm9kZS0+cm9sbF9wdHIsCisJCQkJCQkgICZu b2RlLT5yZXNlcnZhdGlvbiwKIAkJCQkJCSAgbm9kZS0+aGVhcCk7CiAJaWYgKCFub2RlLT51bmRv X3JlYykgewogCQkvKiBQdXJnZSBjb21wbGV0ZWQgZm9yIHRoaXMgcXVlcnkgdGhyZWFkICovCiAK IAkJdGhyLT5ydW5fbm9kZSA9IHF1ZV9ub2RlX2dldF9wYXJlbnQobm9kZSk7CiAKLQkJcmV0dXJu KERCX1NVQ0NFU1MpOwotCX0KLQotCW5vZGUtPnJvbGxfcHRyID0gcm9sbF9wdHI7Ci0KLQlpZiAo bm9kZS0+dW5kb19yZWMgPT0gJnRyeF9wdXJnZV9kdW1teV9yZWMpIHsKLQkJcHVyZ2VfbmVlZGVk ID0gRkFMU0U7Ci0JfSBlbHNlIHsKLQkJcHVyZ2VfbmVlZGVkID0gcm93X3B1cmdlX3BhcnNlX3Vu ZG9fcmVjKG5vZGUsICZ1cGRhdGVkX2V4dGVybiwKLQkJCQkJCQl0aHIpOwotCQkvKiBJZiBwdXJn ZV9uZWVkZWQgPT0gVFJVRSwgd2UgbXVzdCBhbHNvIHJlbWVtYmVyIHRvIHVuZnJlZXplCi0JCWRh dGEgZGljdGlvbmFyeSEgKi8KKwkJcmV0dXJuOwogCX0KIAotCWlmIChwdXJnZV9uZWVkZWQpIHsK KwlpZiAobm9kZS0+dW5kb19yZWMgIT0gJnRyeF9wdXJnZV9kdW1teV9yZWMKKwkgICAgJiYgcm93 X3B1cmdlX3BhcnNlX3VuZG9fcmVjKG5vZGUsICZ1cGRhdGVkX2V4dGVybiwgdGhyKSkgewogCQlu b2RlLT5mb3VuZF9jbHVzdCA9IEZBTFNFOwogCiAJCW5vZGUtPmluZGV4ID0gZGljdF90YWJsZV9n ZXRfbmV4dF9pbmRleCgKQEAgLTY1NCwxNCArNjUwLDE0IEBAIHJvd19wdXJnZSgKIAkJfSBlbHNl IGlmICh1cGRhdGVkX2V4dGVybgogCQkJICAgfHwgbm9kZS0+cmVjX3R5cGUgPT0gVFJYX1VORE9f VVBEX0VYSVNUX1JFQykgewogCi0JCQlyb3dfcHVyZ2VfdXBkX2V4aXN0X29yX2V4dGVybihub2Rl KTsKKwkJCXJvd19wdXJnZV91cGRfZXhpc3Rfb3JfZXh0ZXJuKHRociwgbm9kZSk7CiAJCX0KIAog CQlpZiAobm9kZS0+Zm91bmRfY2x1c3QpIHsKIAkJCWJ0cl9wY3VyX2Nsb3NlKCYobm9kZS0+cGN1 cikpOwogCQl9CiAKLQkJcm93X215c3FsX3VuZnJlZXplX2RhdGFfZGljdGlvbmFyeSh0cngpOwor CQlyb3dfbXlzcWxfdW5mcmVlemVfZGF0YV9kaWN0aW9uYXJ5KHRocl9nZXRfdHJ4KHRocikpOwog CX0KIAogCS8qIERvIHNvbWUgY2xlYW51cCAqLwpAQCAtNjY5LDggKzY2NSw2IEBAIHJvd19wdXJn ZSgKIAltZW1faGVhcF9lbXB0eShub2RlLT5oZWFwKTsKIAogCXRoci0+cnVuX25vZGUgPSBub2Rl OwotCi0JcmV0dXJuKERCX1NVQ0NFU1MpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC02ODQsOSArNjc4LDYg QEAgcm93X3B1cmdlX3N0ZXAoCiAJcXVlX3Rocl90Kgl0aHIpCS8qITwgaW46IHF1ZXJ5IHRocmVh ZCAqLwogewogCXB1cmdlX25vZGVfdCoJbm9kZTsKLSNpZmRlZiBVTklWX0RFQlVHCi0JdWxpbnQJ CWVycjsKLSNlbmRpZiAvKiBVTklWX0RFQlVHICovCiAKIAl1dF9hZCh0aHIpOwogCkBAIC02OTQs MTIgKzY4NSw3IEBAIHJvd19wdXJnZV9zdGVwKAogCiAJdXRfYWQocXVlX25vZGVfZ2V0X3R5cGUo bm9kZSkgPT0gUVVFX05PREVfUFVSR0UpOwogCi0jaWZkZWYgVU5JVl9ERUJVRwotCWVyciA9Ci0j ZW5kaWYgLyogVU5JVl9ERUJVRyAqLwogCXJvd19wdXJnZShub2RlLCB0aHIpOwogCi0JdXRfYWQo ZXJyID09IERCX1NVQ0NFU1MpOwotCiAJcmV0dXJuKHRocik7CiB9Cgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwdW1vZC5jJwotLS0gYS9zdG9yYWdlL2lu bm9kYl9wbHVnaW4vcm93L3JvdzB1bW9kLmMJMjAxMC0xMi0yMSAxMToyNzoyMiArMDAwMAorKysg Yi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcm93L3JvdzB1bW9kLmMJMjAxMS0wMi0wMiAxMjoxMjo0 OSArMDAwMApAQCAtMTczLDQwICsxNzMsMjYgQEAgcm93X3VuZG9fbW9kX3JlbW92ZV9jbHVzdF9s b3coCiAJbXRyX3QqCQltdHIsCS8qITwgaW46IG10ciAqLwogCXVsaW50CQltb2RlKQkvKiE8IGlu OiBCVFJfTU9ESUZZX0xFQUYgb3IgQlRSX01PRElGWV9UUkVFICovCiB7Ci0JYnRyX3BjdXJfdCoJ cGN1cjsKIAlidHJfY3VyX3QqCWJ0cl9jdXI7CiAJdWxpbnQJCWVycjsKLQlpYm9vbAkJc3VjY2Vz czsKIAogCXV0X2FkKG5vZGUtPnJlY190eXBlID09IFRSWF9VTkRPX1VQRF9ERUxfUkVDKTsKLQlw Y3VyID0gJihub2RlLT5wY3VyKTsKLQlidHJfY3VyID0gYnRyX3BjdXJfZ2V0X2J0cl9jdXIocGN1 cik7CiAKLQlzdWNjZXNzID0gYnRyX3BjdXJfcmVzdG9yZV9wb3NpdGlvbihtb2RlLCBwY3VyLCBt dHIpOworCS8qIEZpbmQgb3V0IGlmIHRoZSByZWNvcmQgaGFzIGJlZW4gcHVyZ2VkIGFscmVhZHkK KwlvciBpZiB3ZSBjYW4gcmVtb3ZlIGl0LiAqLwogCi0JaWYgKCFzdWNjZXNzKSB7CisJaWYgKCFi dHJfcGN1cl9yZXN0b3JlX3Bvc2l0aW9uKG1vZGUsICZub2RlLT5wY3VyLCBtdHIpCisJICAgIHx8 IHJvd192ZXJzX211c3RfcHJlc2VydmVfZGVsX21hcmtlZChub2RlLT5uZXdfdHJ4X2lkLCBtdHIp KSB7CiAKIAkJcmV0dXJuKERCX1NVQ0NFU1MpOwogCX0KIAotCS8qIEZpbmQgb3V0IGlmIHdlIGNh biByZW1vdmUgdGhlIHdob2xlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQgKi8KLQotCWlmIChub2Rl LT5yZWNfdHlwZSA9PSBUUlhfVU5ET19VUERfREVMX1JFQwotCSAgICAmJiAhcm93X3ZlcnNfbXVz dF9wcmVzZXJ2ZV9kZWxfbWFya2VkKG5vZGUtPm5ld190cnhfaWQsIG10cikpIHsKLQotCQkvKiBP aywgd2UgY2FuIHJlbW92ZSAqLwotCX0gZWxzZSB7Ci0JCXJldHVybihEQl9TVUNDRVNTKTsKLQl9 CisJYnRyX2N1ciA9IGJ0cl9wY3VyX2dldF9idHJfY3VyKCZub2RlLT5wY3VyKTsKIAogCWlmICht b2RlID09IEJUUl9NT0RJRllfTEVBRikgewotCQlzdWNjZXNzID0gYnRyX2N1cl9vcHRpbWlzdGlj X2RlbGV0ZShidHJfY3VyLCBtdHIpOwotCi0JCWlmIChzdWNjZXNzKSB7Ci0JCQllcnIgPSBEQl9T VUNDRVNTOwotCQl9IGVsc2UgewotCQkJZXJyID0gREJfRkFJTDsKLQkJfQorCQllcnIgPSBidHJf Y3VyX29wdGltaXN0aWNfZGVsZXRlKGJ0cl9jdXIsIG10cikKKwkJCT8gREJfU1VDQ0VTUworCQkJ OiBEQl9GQUlMOwogCX0gZWxzZSB7CiAJCXV0X2FkKG1vZGUgPT0gQlRSX01PRElGWV9UUkVFKTsK IApAQCAtNjY4LDggKzY1NCw5IEBAIHJvd191bmRvX21vZF91cGRfZXhpc3Rfc2VjKAogCXdoaWxl IChub2RlLT5pbmRleCAhPSBOVUxMKSB7CiAJCWluZGV4ID0gbm9kZS0+aW5kZXg7CiAKLQkJaWYg KHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5KAotCQkJICAgIG5vZGUtPnJvdywgbm9k ZS0+ZXh0LCBub2RlLT5pbmRleCwgbm9kZS0+dXBkYXRlKSkgeworCQlpZiAocm93X3VwZF9jaGFu Z2VzX29yZF9maWVsZF9iaW5hcnkobm9kZS0+aW5kZXgsIG5vZGUtPnVwZGF0ZSwKKwkJCQkJCSAg ICAgdGhyLAorCQkJCQkJICAgICBub2RlLT5yb3csIG5vZGUtPmV4dCkpIHsKIAogCQkJLyogQnVp bGQgdGhlIG5ld2VzdCB2ZXJzaW9uIG9mIHRoZSBpbmRleCBlbnRyeSAqLwogCQkJZW50cnkgPSBy b3dfYnVpbGRfaW5kZXhfZW50cnkobm9kZS0+cm93LCBub2RlLT5leHQsCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwdXBkLmMnCi0tLSBhL3N0b3JhZ2Uv aW5ub2RiX3BsdWdpbi9yb3cvcm93MHVwZC5jCTIwMTEtMDEtMjUgMTM6NDM6MDggKzAwMDAKKysr IGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwdXBkLmMJMjAxMS0wMi0wMiAxMzo1MTow OCArMDAwMApAQCAtMTE5MiwyNSArMTE5MiwzMSBAQCBOT1RFOiB3ZSBjb21wYXJlIHRoZSBmaWVs ZHMgYXMgYmluYXJ5IHN0CiBAcmV0dXJuIFRSVUUgaWYgdXBkYXRlIHZlY3RvciBjaGFuZ2VzIGFu IG9yZGVyaW5nIGZpZWxkIGluIHRoZSBpbmRleCByZWNvcmQgKi8KIFVOSVZfSU5URVJOCiBpYm9v bAotcm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkoCi0vKj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ki8KK3Jvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5X2Z1bmMoCisv Kj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJaW5k ZXgsCS8qITwgaW46IGluZGV4IG9mIHRoZSByZWNvcmQgKi8KKwljb25zdCB1cGRfdCoJdXBkYXRl LAkvKiE8IGluOiB1cGRhdGUgdmVjdG9yIGZvciB0aGUgcm93OyBOT1RFOiB0aGUKKwkJCQlmaWVs ZCBudW1iZXJzIGluIHRoaXMgTVVTVCBiZSBjbHVzdGVyZWQgaW5kZXgKKwkJCQlwb3NpdGlvbnMh ICovCisjaWZkZWYgVU5JVl9ERUJVRworCWNvbnN0IHF1ZV90aHJfdCp0aHIsCS8qITwgaW46IHF1 ZXJ5IHRocmVhZCAqLworI2VuZGlmIC8qIFVOSVZfREVCVUcgKi8KIAljb25zdCBkdHVwbGVfdCoJ cm93LAkvKiE8IGluOiBvbGQgdmFsdWUgb2Ygcm93LCBvciBOVUxMIGlmIHRoZQogCQkJCXJvdyBh bmQgdGhlIGRhdGEgdmFsdWVzIGluIHVwZGF0ZSBhcmUgbm90CiAJCQkJa25vd24gd2hlbiB0aGlz IGZ1bmN0aW9uIGlzIGNhbGxlZCwgZS5nLiwgYXQKIAkJCQljb21waWxlIHRpbWUgKi8KLQljb25z dCByb3dfZXh0X3QqZXh0LAkvKiE8IE5VTEwsIG9yIHByZWZpeGVzIG9mIHRoZSBleHRlcm5hbGx5 CisJY29uc3Qgcm93X2V4dF90KmV4dCkJLyohPCBOVUxMLCBvciBwcmVmaXhlcyBvZiB0aGUgZXh0 ZXJuYWxseQogCQkJCXN0b3JlZCBjb2x1bW5zIGluIHRoZSBvbGQgcm93ICovCi0JZGljdF9pbmRl eF90KglpbmRleCwJLyohPCBpbjogaW5kZXggb2YgdGhlIHJlY29yZCAqLwotCWNvbnN0IHVwZF90 Kgl1cGRhdGUpCS8qITwgaW46IHVwZGF0ZSB2ZWN0b3IgZm9yIHRoZSByb3c7IE5PVEU6IHRoZQot CQkJCWZpZWxkIG51bWJlcnMgaW4gdGhpcyBNVVNUIGJlIGNsdXN0ZXJlZCBpbmRleAotCQkJCXBv c2l0aW9ucyEgKi8KIHsKIAl1bGludAkJCW5fdW5pcXVlOwogCXVsaW50CQkJaTsKIAljb25zdCBk aWN0X2luZGV4X3QqCWNsdXN0X2luZGV4OwogCi0JdXRfYWQodXBkYXRlKTsKIAl1dF9hZChpbmRl eCk7CisJdXRfYWQodXBkYXRlKTsKKwl1dF9hZCh0aHIpOworCXV0X2FkKHRoci0+Z3JhcGgpOwor CXV0X2FkKHRoci0+Z3JhcGgtPnRyeCk7CiAKIAluX3VuaXF1ZSA9IGRpY3RfaW5kZXhfZ2V0X25f dW5pcXVlKGluZGV4KTsKIApAQCAtMTI2Myw5ICsxMjY5LDE0IEBAIHJvd191cGRfY2hhbmdlc19v cmRfZmllbGRfYmluYXJ5KAogCiAJCQlpZiAoVU5JVl9MSUtFTFlfTlVMTChidWYpKSB7CiAJCQkJ aWYgKFVOSVZfVU5MSUtFTFkoYnVmID09IGZpZWxkX3JlZl96ZXJvKSkgewotCQkJCQkvKiBUaGlz IHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dAotCQkJCQl3ZSB0cnkgdG8gZmFpbCBzYWZlIGhlcmUu ICovCi0JCQkJCXV0X2FkKDApOworCQkJCQkvKiBUaGUgZXh0ZXJuYWxseSBzdG9yZWQgZmllbGQK KwkJCQkJd2FzIG5vdCB3cml0dGVuIHlldC4gVGhpcworCQkJCQlyZWNvcmQgc2hvdWxkIG9ubHkg YmUgc2VlbiBieQorCQkJCQlyZWN2X3JlY292ZXJ5X3JvbGxiYWNrX2FjdGl2ZSgpLAorCQkJCQl3 aGVuIHRoZSBzZXJ2ZXIgaGFkIGNyYXNoZWQgYmVmb3JlCisJCQkJCXN0b3JpbmcgdGhlIGZpZWxk LiAqLworCQkJCQl1dF9hZCh0aHItPmdyYXBoLT50cngtPmlzX3JlY292ZXJlZCk7CisJCQkJCXV0 X2FkKHRyeF9pc19yZWN2KHRoci0+Z3JhcGgtPnRyeCkpOwogCQkJCQlyZXR1cm4oVFJVRSk7CiAJ CQkJfQogCkBAIC0xNjEyLDggKzE2MjMsOCBAQCByb3dfdXBkX3NlY19zdGVwKAogCXV0X2FkKCFk aWN0X2luZGV4X2lzX2NsdXN0KG5vZGUtPmluZGV4KSk7CiAKIAlpZiAobm9kZS0+c3RhdGUgPT0g VVBEX05PREVfVVBEQVRFX0FMTF9TRUMKLQkgICAgfHwgcm93X3VwZF9jaGFuZ2VzX29yZF9maWVs ZF9iaW5hcnkobm9kZS0+cm93LCBub2RlLT5leHQsCi0JCQkJCQlub2RlLT5pbmRleCwgbm9kZS0+ dXBkYXRlKSkgeworCSAgICB8fCByb3dfdXBkX2NoYW5nZXNfb3JkX2ZpZWxkX2JpbmFyeShub2Rl LT5pbmRleCwgbm9kZS0+dXBkYXRlLAorCQkJCQkJdGhyLCBub2RlLT5yb3csIG5vZGUtPmV4dCkp IHsKIAkJcmV0dXJuKHJvd191cGRfc2VjX2luZGV4X2VudHJ5KG5vZGUsIHRocikpOwogCX0KIApA QCAtMTk0MSw3ICsxOTUyLDcgQEAgcm93X3VwZF9jbHVzdF9yZWMoCiAJCQlpbmRleCwgYnRyX2N1 cl9nZXRfYmxvY2soYnRyX2N1ciksIHJlYywKIAkJCXJlY19nZXRfb2Zmc2V0cyhyZWMsIGluZGV4 LCBvZmZzZXRzXywKIAkJCQkJVUxJTlRfVU5ERUZJTkVELCAmaGVhcCksCi0JCQliaWdfcmVjLCBt dHIpOworCQkJbXRyLCBUUlVFLCBiaWdfcmVjKTsKIAkJbXRyX2NvbW1pdChtdHIpOwogCX0KIApA QCAtMjE0MCw4ICsyMTUxLDggQEAgZXhpdF9mdW5jOgogCiAJcm93X3VwZF9zdG9yZV9yb3cobm9k ZSk7CiAKLQlpZiAocm93X3VwZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkobm9kZS0+cm93LCBu b2RlLT5leHQsIGluZGV4LAotCQkJCQkgICAgIG5vZGUtPnVwZGF0ZSkpIHsKKwlpZiAocm93X3Vw ZF9jaGFuZ2VzX29yZF9maWVsZF9iaW5hcnkoaW5kZXgsIG5vZGUtPnVwZGF0ZSwgdGhyLAorCQkJ CQkgICAgIG5vZGUtPnJvdywgbm9kZS0+ZXh0KSkgewogCiAJCS8qIFVwZGF0ZSBjYXVzZXMgYW4g b3JkZXJpbmcgZmllbGQgKG9yZGVyaW5nIGZpZWxkcyB3aXRoaW4KIAkJdGhlIEItdHJlZSkgb2Yg dGhlIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQgdG8gY2hhbmdlOiBwZXJmb3JtCgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3RyeC90cngwcm9sbC5jJwotLS0gYS9zdG9y YWdlL2lubm9kYl9wbHVnaW4vdHJ4L3RyeDByb2xsLmMJMjAxMC0wOS0xNSAxNjowNjozMSArMDAw MAorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vdHJ4L3RyeDByb2xsLmMJMjAxMS0wMS0zMSAw Nzo1Njo1MSArMDAwMApAQCAtNDgsOCArNDgsOCBAQCBDcmVhdGVkIDMvMjYvMTk5NiBIZWlra2kg VHV1cmkKIHJvbGxiYWNrICovCiAjZGVmaW5lIFRSWF9ST0xMX1RSVU5DX1RIUkVTSE9MRAkxCiAK LS8qKiBJbiBjcmFzaCByZWNvdmVyeSwgdGhlIGN1cnJlbnQgdHJ4IHRvIGJlIHJvbGxlZCBiYWNr ICovCi1zdGF0aWMgdHJ4X3QqCQl0cnhfcm9sbF9jcmFzaF9yZWN2X3RyeAk9IE5VTEw7CisvKiog SW4gY3Jhc2ggcmVjb3ZlcnksIHRoZSBjdXJyZW50IHRyeCB0byBiZSByb2xsZWQgYmFjazsgTlVM TCBvdGhlcndpc2UgKi8KK3N0YXRpYyBjb25zdCB0cnhfdCoJdHJ4X3JvbGxfY3Jhc2hfcmVjdl90 cngJPSBOVUxMOwogCiAvKiogSW4gY3Jhc2ggcmVjb3Zlcnkgd2Ugc2V0IHRoaXMgdG8gdGhlIHVu ZG8gbjpvIG9mIHRoZSBjdXJyZW50IHRyeCB0byBiZQogcm9sbGVkIGJhY2suIFRoZW4gd2UgY2Fu IHByaW50IGhvdyBtYW55ICUgdGhlIHJvbGxiYWNrIGhhcyBwcm9ncmVzc2VkLiAqLwoKTm8gYnVu ZGxlIChyZWFzb246IHJldmlzaW9uIGlzIGEgbWVyZ2UpLg==