From: marko.makela Date: September 8 2011 6:48am Subject: bzr push into mysql-trunk branch (marko.makela:3445 to 3446) Bug#12956276 List-Archive: http://lists.mysql.com/commits/140959 X-Bug: 12956276 Message-Id: <201109080648.p886m7P8009047@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM0NDYgTWFya28gTcOka2Vsw6QJMjAxMS0wOS0wOAogICAgICBCdWcjMTI5NTYyNzYgUE9URU5U SUFMTFkgQk9HVVMgQlJBTkNIIFBSRURJQ1RJT04gSElOVFMKICAgICAgCiAgICAgIFJlbW92ZSBw b3NzaWJseSBib2d1cyBicmFuY2ggcHJlZGljdGlvbiBoaW50cy4KICAgICAgCiAgICAgIGRpY3Rf aW5kZXhfaXNfdW5pdigpOiBBIG5ldyB0ZXN0LCBmb3IgcmVkdWNpbmcgVU5JVl9VTkxJS0VMWSBj bHV0dGVyLgogICAgICBSZXR1cm5zIFRSVUUgZm9yIHRoZSBpbnNlcnQgYnVmZmVyIHRyZWUsIEZB TFNFIGZvciBvdGhlcnMuCiAgICAgIAogICAgICBkaWN0X2luZGV4X2lzX2NsdXN0KCksIGRpY3Rf aW5kZXhfaXNfdW5pcXVlKCksIGRpY3RfaW5kZXhfaXNfc2VjX29yX2lidWYoKToKICAgICAgUmVt b3ZlIHRoZSBicmFuY2ggcHJlZGljdGlvbiBoaW50cy4gV2hldGhlciB0aGVzZSBjb25kaXRpb25z IGhvbGQKICAgICAgbW9zdCBvZiB0aGUgdGltZSBkZXBlbmRzIG9uIHRoZSB3b3JrbG9hZCAocHJv cG9ydGlvbiBvZiBzZWNvbmRhcnkgaW5kZXhlcwogICAgICBhbmQgdW5pcXVlIGluZGV4ZXMuKQog ICAgICAKICAgICAgUmVtb3ZlIGhpbnRzIGNsYWltaW5nIHRoYXQgcmVjb3JkcyB3aWxsIG5vdCBi ZSBkZWxldGUtbWFya2VkIG9yCiAgICAgIGNvbXByZXNzZWQgb3IgZmllbGRzIHdpbGwgbm90IGJl IE5VTEwgb3IgZXh0ZXJuYWxseSBzdG9yZWQgbW9zdCBvZiB0aGUKICAgICAgdGltZS4gVGhpcyBk ZXBlbmRzIG9uIHRoZSB3b3JrbG9hZCB0b28uCiAgICAgIAogICAgICBSZW1vdmUgaGludHMgY2xh aW1pbmcgdGhhdCBjb21wcmVzc2luZyBhIHdob2xlIHBhZ2Ugd2lsbCBzdWNjZWVkLgogICAgICAK ICAgICAgYnVmX3BhZ2VfcHJpbnQoKTogQWRkIFVOSVZfQ09MRCBhdHRyaWJ1dGUsIG1lYW5pbmcg dGhhdCBhbnkgZXhlY3V0aW9uCiAgICAgIHBhdGggbGVhZGluZyB0byB0aGlzIGZ1bmN0aW9uIGV4 ZWN1dGlvbiBzaG91bGQgYmUgdW5saWtlbHkuIFRoZQogICAgICBmdW5jdGlvbiBpcyBvbmx5IGlu dm9rZWQgd2hlbiBzb21lIGNvcnJ1cHRpb24gaXMgbm90aWNlZC4KICAgICAgCiAgICAgIHJiOjc1 NyBhcHByb3ZlZCBieSBTdW5ueSBCYWlucwoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lu bm9iYXNlL2J0ci9idHIwYnRyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5j CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYwogICAgICBzdG9yYWdlL2lubm9i YXNlL2J1Zi9idWYwZmx1LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9kYXRhL2RhdGEwZGF0YS5j CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MGRpY3QuYwogICAgICBzdG9yYWdlL2lu bm9iYXNlL2ZzcC9mc3AwZnNwLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBi dHIuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaAogICAgICBzdG9y YWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGJ1Zi5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvZGF0YTBkYXRhLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMHR5 cGUuaWMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RpY3QwZGljdC5pYwogICAgICBz dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcGFnZTBwYWdlLmljCiAgICAgIHN0b3JhZ2UvaW5ub2Jh c2UvaW5jbHVkZS9wYWdlMHppcC5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcmVt MHJlYy5pYwogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHVwZC5pYwogICAgICBz dG9yYWdlL2lubm9iYXNlL210ci9tdHIwbG9nLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9wYWdl L3BhZ2UwY3VyLmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwcGFnZS5jCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHppcC5jCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uv cmVtL3JlbTBjbXAuYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuYwogICAg ICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYwogICAgICBzdG9yYWdlL2lubm9iYXNl L3Jvdy9yb3cwcm93LmMKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwogMzQ0NSBWYXNpbCBEaW1vdgkyMDExLTA5 LTA3IFttZXJnZV0KICAgICAgTWVyZ2UgbXlzcWwtNS41IC0+IG15c3FsLXRydW5rCgogICAgbW9k aWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2J0ci9idHIwYnRyLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2Jhc2UvYnRyL2J0cjBidHIuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwOTA3 MTUyNTU3LTRmanB2OGp1b28wMjA4d3kKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGJ0 ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwOTA4MDY0NjUxLWtqYnVjbW95 OTFkNHU5enUKQEAgLTg1NCw3ICs4NTQsNyBAQCBidHJfcGFnZV9jcmVhdGUoCiAJdXRfYWQobXRy X21lbW9fY29udGFpbnMobXRyLCBibG9jaywgTVRSX01FTU9fUEFHRV9YX0ZJWCkpOwogCWJ0cl9i bG9iX2RiZ19hc3NlcnRfZW1wdHkoaW5kZXgsIGJ1Zl9ibG9ja19nZXRfcGFnZV9ubyhibG9jaykp OwogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7CisJaWYgKHBhZ2VfemlwKSB7 CiAJCXBhZ2VfY3JlYXRlX3ppcChibG9jaywgaW5kZXgsIGxldmVsLCBtdHIpOwogCX0gZWxzZSB7 CiAJCXBhZ2VfY3JlYXRlKGJsb2NrLCBtdHIsIGRpY3RfdGFibGVfaXNfY29tcChpbmRleC0+dGFi bGUpKTsKQEAgLTEyOTAsNyArMTI5MCw3IEBAIGJ0cl9ub2RlX3B0cl9zZXRfY2hpbGRfcGFnZV9u bygKIAogCXV0X2FkKGxlbiA9PSBSRUNfTk9ERV9QVFJfU0laRSk7CiAKLQlpZiAoVU5JVl9MSUtF TFlfTlVMTChwYWdlX3ppcCkpIHsKKwlpZiAocGFnZV96aXApIHsKIAkJcGFnZV96aXBfd3JpdGVf bm9kZV9wdHIocGFnZV96aXAsIHJlYywKIAkJCQkJcmVjX29mZnNfZGF0YV9zaXplKG9mZnNldHMp LAogCQkJCQlwYWdlX25vLCBtdHIpOwpAQCAtMTU2MCw3ICsxNTYwLDcgQEAgYnRyX2NyZWF0ZSgK IAkvKiBDcmVhdGUgYSBuZXcgaW5kZXggcGFnZSBvbiB0aGUgYWxsb2NhdGVkIHNlZ21lbnQgcGFn ZSAqLwogCXBhZ2VfemlwID0gYnVmX2Jsb2NrX2dldF9wYWdlX3ppcChibG9jayk7CiAKLQlpZiAo VU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkpIHsKKwlpZiAocGFnZV96aXApIHsKIAkJcGFnZSA9 IHBhZ2VfY3JlYXRlX3ppcChibG9jaywgaW5kZXgsIDAsIG10cik7CiAJfSBlbHNlIHsKIAkJcGFn ZSA9IHBhZ2VfY3JlYXRlKGJsb2NrLCBtdHIsCkBAIC0xNzcyLDcgKzE3NzIsNyBAQCBidHJfcGFn ZV9yZW9yZ2FuaXplX2xvdygKIAkJdXRfYWQobWF4X3RyeF9pZCAhPSAwIHx8IHJlY292ZXJ5KTsK IAl9CiAKLQlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkKKwlpZiAocGFnZV96aXAKIAkg ICAgJiYgVU5JVl9VTkxJS0VMWQogCSAgICAoIXBhZ2VfemlwX2NvbXByZXNzKHBhZ2VfemlwLCBw YWdlLCBpbmRleCwgTlVMTCkpKSB7CiAKQEAgLTE5MTcsNyArMTkxNyw3IEBAIGJ0cl9wYWdlX2Vt cHR5KAogCS8qIFJlY3JlYXRlIHRoZSBwYWdlOiBub3RlIHRoYXQgZ2xvYmFsIGRhdGEgb24gcGFn ZSAocG9zc2libGUKIAlzZWdtZW50IGhlYWRlcnMsIG5leHQgcGFnZS1maWVsZCwgZXRjLikgaXMg cHJlc2VydmVkIGludGFjdCAqLwogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7 CisJaWYgKHBhZ2VfemlwKSB7CiAJCXBhZ2VfY3JlYXRlX3ppcChibG9jaywgaW5kZXgsIGxldmVs LCBtdHIpOwogCX0gZWxzZSB7CiAJCXBhZ2VfY3JlYXRlKGJsb2NrLCBtdHIsIGRpY3RfdGFibGVf aXNfY29tcChpbmRleC0+dGFibGUpKTsKQEAgLTIyMzcsNyArMjIzNyw3IEBAIGJ0cl9wYWdlX2dl dF9zcGxpdF9yZWMoCiAJZnJlZV9zcGFjZSAgPSBwYWdlX2dldF9mcmVlX3NwYWNlX29mX2VtcHR5 KHBhZ2VfaXNfY29tcChwYWdlKSk7CiAKIAlwYWdlX3ppcCA9IGJ0cl9jdXJfZ2V0X3BhZ2Vfemlw KGN1cnNvcik7Ci0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7CisJaWYgKHBhZ2Vf emlwKSB7CiAJCS8qIEVzdGltYXRlIHRoZSBmcmVlIHNwYWNlIG9mIGFuIGVtcHR5IGNvbXByZXNz ZWQgcGFnZS4gKi8KIAkJdWxpbnQJZnJlZV9zcGFjZV96aXAgPSBwYWdlX3ppcF9lbXB0eV9zaXpl KAogCQkJY3Vyc29yLT5pbmRleC0+bl9maWVsZHMsCkBAIC0yODg4LDcgKzI4ODgsNyBAQCBpbnNl cnRfZW1wdHk6CiAJfQogCiAjaWZkZWYgVU5JVl9aSVBfREVCVUcKLQlpZiAoVU5JVl9MSUtFTFlf TlVMTChwYWdlX3ppcCkpIHsKKwlpZiAocGFnZV96aXApIHsKIAkJdXRfYShwYWdlX3ppcF92YWxp ZGF0ZShwYWdlX3ppcCwgcGFnZSkpOwogCQl1dF9hKHBhZ2VfemlwX3ZhbGlkYXRlKG5ld19wYWdl X3ppcCwgbmV3X3BhZ2UpKTsKIAl9CkBAIC0zNDYxLDcgKzM0NjEsNyBAQCBlcnJfZXhpdDoKIAog CW1lcmdlX3BhZ2VfemlwID0gYnVmX2Jsb2NrX2dldF9wYWdlX3ppcChtZXJnZV9ibG9jayk7CiAj aWZkZWYgVU5JVl9aSVBfREVCVUcKLQlpZiAoVU5JVl9MSUtFTFlfTlVMTChtZXJnZV9wYWdlX3pp cCkpIHsKKwlpZiAobWVyZ2VfcGFnZV96aXApIHsKIAkJY29uc3QgcGFnZV96aXBfZGVzX3QqCXBh Z2VfemlwCiAJCQk9IGJ1Zl9ibG9ja19nZXRfcGFnZV96aXAoYmxvY2spOwogCQl1dF9hKHBhZ2Vf emlwKTsKQEAgLTM0OTcsNyArMzQ5Nyw3IEBAIGVycl9leGl0OgogCQlieXRlCQlmaWxfcGFnZV9w cmV2WzRdOwogI2VuZGlmIC8qIFVOSVZfQlRSX0RFQlVHICovCiAKLQkJaWYgKFVOSVZfTElLRUxZ X05VTEwobWVyZ2VfcGFnZV96aXApKSB7CisJCWlmIChtZXJnZV9wYWdlX3ppcCkgewogCQkJLyog VGhlIGZ1bmN0aW9uIHBhZ2VfemlwX2NvbXByZXNzKCksIHdoaWNoIHdpbGwgYmUKIAkJCWludm9r ZWQgYnkgcGFnZV9jb3B5X3JlY19saXN0X2VuZCgpIGJlbG93LAogCQkJcmVxdWlyZXMgdGhhdCBG SUxfUEFHRV9QUkVWIGJlIEZJTF9OVUxMLgpAQCAtMzUyOCw3ICszNTI4LDcgQEAgZXJyX2V4aXQ6 CiAJCWJ0cl9zZWFyY2hfZHJvcF9wYWdlX2hhc2hfaW5kZXgoYmxvY2spOwogCiAjaWZkZWYgVU5J Vl9CVFJfREVCVUcKLQkJaWYgKFVOSVZfTElLRUxZX05VTEwobWVyZ2VfcGFnZV96aXApKSB7CisJ CWlmIChtZXJnZV9wYWdlX3ppcCkgewogCQkJLyogUmVzdG9yZSBGSUxfUEFHRV9QUkVWIGluIG9y ZGVyIHRvIGF2b2lkIGFuIGFzc2VydGlvbgogCQkJZmFpbHVyZSBpbiBidHJfbGV2ZWxfbGlzdF9y ZW1vdmUoKSwgd2hpY2ggd2lsbCBzZXQKIAkJCXRoZSBmaWVsZCBhZ2FpbiB0byBGSUxfTlVMTC4g IEV2ZW4gdGhvdWdoIHRoaXMgbWFrZXMKQEAgLTM4MzEsNyArMzgzMSw3IEBAIGJ0cl9wcmludF9z aXplKAogCWZwdXRzKCJJTkZPIE9GIFRIRSBOT04tTEVBRiBQQUdFIFNFR01FTlRcbiIsIHN0ZGVy cik7CiAJZnNlZ19wcmludChzZWcsICZtdHIpOwogCi0JaWYgKCEoaW5kZXgtPnR5cGUgJiBESUNU X1VOSVZFUlNBTCkpIHsKKwlpZiAoIWRpY3RfaW5kZXhfaXNfdW5pdihpbmRleCkpIHsKIAogCQlz ZWcgPSByb290ICsgUEFHRV9IRUFERVIgKyBQQUdFX0JUUl9TRUdfTEVBRjsKIApAQCAtNDAyNSw3 ICs0MDI1LDcgQEAgYnRyX2luZGV4X3JlY192YWxpZGF0ZSgKIAogCXBhZ2UgPSBwYWdlX2FsaWdu KHJlYyk7CiAKLQlpZiAoVU5JVl9VTkxJS0VMWShpbmRleC0+dHlwZSAmIERJQ1RfVU5JVkVSU0FM KSkgeworCWlmIChkaWN0X2luZGV4X2lzX3VuaXYoaW5kZXgpKSB7CiAJCS8qIFRoZSBpbnNlcnQg YnVmZmVyIGluZGV4IHRyZWUgY2FuIGNvbnRhaW4gcmVjb3JkcyBmcm9tIGFueQogCQlvdGhlciBp bmRleDogd2UgY2Fubm90IGNoZWNrIHRoZSBudW1iZXIgb2YgZmllbGRzIG9yCiAJCXRoZWlyIGxl bmd0aCAqLwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnRyL2J0cjBjdXIu YycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idHIvYnRyMGN1ci5jCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMTA5MDcxNTI1NTctNGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdl L2lubm9iYXNlL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MTA5MDgwNjQ2NTEta2pidWNtb3k5MWQ0dTl6dQpAQCAtMTI0Niw3ICsxMjQ2LDcgQEAgYnRyX2N1 cl9vcHRpbWlzdGljX2luc2VydCgKIAkJcmVjX3NpemUgPSByZWNfZ2V0X2NvbnZlcnRlZF9zaXpl KGluZGV4LCBlbnRyeSwgbl9leHQpOwogCX0KIAotCWlmIChVTklWX1VOTElLRUxZKHppcF9zaXpl KSkgeworCWlmICh6aXBfc2l6ZSkgewogCQkvKiBFc3RpbWF0ZSB0aGUgZnJlZSBzcGFjZSBvZiBh biBlbXB0eSBjb21wcmVzc2VkIHBhZ2UuCiAJCVN1YnRyYWN0IG9uZSBieXRlIGZvciB0aGUgZW5j b2RlZCBoZWFwX25vIGluIHRoZQogCQltb2RpZmljYXRpb24gbG9nLiAqLwpAQCAtMTM1NCw3ICsx MzU0LDcgQEAgZmFpbF9lcnI6CiAJCQkJCSAgICAgbl9leHQsIG10cik7CiAKIAkJaWYgKFVOSVZf VU5MSUtFTFkoISpyZWMpKSB7Ci0JCQlpZiAoVU5JVl9MSUtFTFkoemlwX3NpemUgIT0gMCkpIHsK KwkJCWlmICh6aXBfc2l6ZSAhPSAwKSB7CiAKIAkJCQlnb3RvIGZhaWw7CiAJCQl9CkBAIC0xODY3 LDcgKzE4NjcsNyBAQCBidHJfY3VyX3VwZGF0ZV9pbl9wbGFjZSgKIAlwYWdlX3ppcCA9IGJ1Zl9i bG9ja19nZXRfcGFnZV96aXAoYmxvY2spOwogCiAJLyogQ2hlY2sgdGhhdCBlbm91Z2ggc3BhY2Ug aXMgYXZhaWxhYmxlIG9uIHRoZSBjb21wcmVzc2VkIHBhZ2UuICovCi0JaWYgKFVOSVZfTElLRUxZ X05VTEwocGFnZV96aXApCisJaWYgKHBhZ2VfemlwCiAJICAgICYmICFidHJfY3VyX3VwZGF0ZV9h bGxvY196aXAocGFnZV96aXAsIGJsb2NrLCBpbmRleCwKIAkJCQkJIHJlY19vZmZzX3NpemUob2Zm c2V0cyksIEZBTFNFLCBtdHIpKSB7CiAJCXJldHVybihEQl9aSVBfT1ZFUkZMT1cpOwpAQCAtMjA1 Miw3ICsyMDUyLDcgQEAgYW55X2V4dGVybjoKIAl1dF9hKCFwYWdlX3ppcCB8fCBwYWdlX3ppcF92 YWxpZGF0ZShwYWdlX3ppcCwgcGFnZSkpOwogI2VuZGlmIC8qIFVOSVZfWklQX0RFQlVHICovCiAK LQlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkKKwlpZiAocGFnZV96aXAKIAkgICAgJiYg IWJ0cl9jdXJfdXBkYXRlX2FsbG9jX3ppcChwYWdlX3ppcCwgYmxvY2ssIGluZGV4LAogCQkJCQkg bmV3X3JlY19zaXplLCBUUlVFLCBtdHIpKSB7CiAJCWVyciA9IERCX1pJUF9PVkVSRkxPVzsKQEAg LTIzNTIsNyArMjM1Miw3IEBAIGJ0cl9jdXJfcGVzc2ltaXN0aWNfdXBkYXRlKAogCXV0X2FkKHJl Y19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKIAluX2V4dCArPSBidHJfcHVz aF91cGRhdGVfZXh0ZXJuX2ZpZWxkcyhuZXdfZW50cnksIHVwZGF0ZSwgKmhlYXApOwogCi0JaWYg KFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7CisJaWYgKHBhZ2VfemlwKSB7CiAJCXV0X2Fk KHBhZ2VfaXNfY29tcChwYWdlKSk7CiAJCWlmIChwYWdlX3ppcF9yZWNfbmVlZHNfZXh0KAogCQkJ ICAgIHJlY19nZXRfY29udmVydGVkX3NpemUoaW5kZXgsIG5ld19lbnRyeSwgbl9leHQpLApAQCAt MzkxMSw3ICszOTExLDcgQEAgYnRyX2N1cl9zZXRfb3duZXJzaGlwX29mX2V4dGVybl9maWVsZCgK IAkJYnl0ZV92YWwgPSBieXRlX3ZhbCB8IEJUUl9FWFRFUk5fT1dORVJfRkxBRzsKIAl9CiAKLQlp ZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkpIHsKKwlpZiAocGFnZV96aXApIHsKIAkJbWFj aF93cml0ZV90b18xKGRhdGEgKyBsb2NhbF9sZW4gKyBCVFJfRVhURVJOX0xFTiwgYnl0ZV92YWwp OwogCQlwYWdlX3ppcF93cml0ZV9ibG9iX3B0cihwYWdlX3ppcCwgcmVjLCBpbmRleCwgb2Zmc2V0 cywgaSwgbXRyKTsKIAl9IGVsc2UgaWYgKFVOSVZfTElLRUxZKG10ciAhPSBOVUxMKSkgewpAQCAt NDIyNyw3ICs0MjI3LDcgQEAgYnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKAog CQlhbGxvY19tdHIgPSAmbXRyOwogCX0KIAotCWlmIChVTklWX0xJS0VMWV9OVUxMKHBhZ2Vfemlw KSkgeworCWlmIChwYWdlX3ppcCkgewogCQlpbnQJZXJyOwogCiAJCS8qIFpsaWIgZGVmbGF0ZSBu ZWVkcyAxMjgga2lsb2J5dGVzIGZvciB0aGUgZGVmYXVsdApAQCAtNDI4Miw3ICs0MjgyLDcgQEAg YnRyX3N0b3JlX2JpZ19yZWNfZXh0ZXJuX2ZpZWxkc19mdW5jKAogCiAJCXByZXZfcGFnZV9ubyA9 IEZJTF9OVUxMOwogCi0JCWlmIChVTklWX0xJS0VMWV9OVUxMKHBhZ2VfemlwKSkgeworCQlpZiAo cGFnZV96aXApIHsKIAkJCWludAllcnIgPSBkZWZsYXRlUmVzZXQoJmNfc3RyZWFtKTsKIAkJCXV0 X2EoZXJyID09IFpfT0spOwogCkBAIC00MzA4LDcgKzQzMDgsNyBAQCBidHJfc3RvcmVfYmlnX3Jl Y19leHRlcm5fZmllbGRzX2Z1bmMoCiAKIAkJCQltdHJfY29tbWl0KCZtdHIpOwogCi0JCQkJaWYg KFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7CisJCQkJaWYgKHBhZ2VfemlwKSB7CiAJCQkJ CWRlZmxhdGVFbmQoJmNfc3RyZWFtKTsKIAkJCQkJbWVtX2hlYXBfZnJlZShoZWFwKTsKIAkJCQl9 CkBAIC00MzMwLDcgKzQzMzAsNyBAQCBidHJfc3RvcmVfYmlnX3JlY19leHRlcm5fZmllbGRzX2Z1 bmMoCiAJCQkJCQkJU1lOQ19FWFRFUk5fU1RPUkFHRSk7CiAJCQkJcHJldl9wYWdlID0gYnVmX2Js b2NrX2dldF9mcmFtZShwcmV2X2Jsb2NrKTsKIAotCQkJCWlmIChVTklWX0xJS0VMWV9OVUxMKHBh Z2VfemlwKSkgeworCQkJCWlmIChwYWdlX3ppcCkgewogCQkJCQltbG9nX3dyaXRlX3VsaW50KAog CQkJCQkJcHJldl9wYWdlICsgRklMX1BBR0VfTkVYVCwKIAkJCQkJCXBhZ2Vfbm8sIE1MT0dfNEJZ VEVTLCAmbXRyKTsKQEAgLTQzNDcsNyArNDM0Nyw3IEBAIGJ0cl9zdG9yZV9iaWdfcmVjX2V4dGVy bl9maWVsZHNfZnVuYygKIAogCQkJfQogCi0JCQlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3pp cCkpIHsKKwkJCWlmIChwYWdlX3ppcCkgewogCQkJCWludAkJZXJyOwogCQkJCXBhZ2VfemlwX2Rl c190KglibG9iX3BhZ2VfemlwOwogCkBAIC00NTcwLDcgKzQ1NzAsNyBAQCBuZXh0X3ppcF9wYWdl OgogCQl9CiAJfQogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7CisJaWYgKHBh Z2VfemlwKSB7CiAJCWRlZmxhdGVFbmQoJmNfc3RyZWFtKTsKIAkJbWVtX2hlYXBfZnJlZShoZWFw KTsKIAl9CkBAIC00Nzk1LDcgKzQ3OTUsNyBAQCBidHJfZnJlZV9leHRlcm5hbGx5X3N0b3JlZF9m aWVsZCgKIAogCQkJYnRyX3BhZ2VfZnJlZV9sb3coaW5kZXgsIGV4dF9ibG9jaywgMCwgJm10cik7 CiAKLQkJCWlmIChVTklWX0xJS0VMWShwYWdlX3ppcCAhPSBOVUxMKSkgeworCQkJaWYgKHBhZ2Vf emlwICE9IE5VTEwpIHsKIAkJCQltYWNoX3dyaXRlX3RvXzQoZmllbGRfcmVmICsgQlRSX0VYVEVS Tl9QQUdFX05PLAogCQkJCQkJbmV4dF9wYWdlX25vKTsKIAkJCQltYWNoX3dyaXRlX3RvXzQoZmll bGRfcmVmICsgQlRSX0VYVEVSTl9MRU4gKyA0LApAQCAtNTE1OCw3ICs1MTU4LDcgQEAgYnRyX2Nv cHlfZXh0ZXJuYWxseV9zdG9yZWRfZmllbGRfcHJlZml4XwogCQlyZXR1cm4oMCk7CiAJfQogCi0J aWYgKFVOSVZfVU5MSUtFTFkoemlwX3NpemUpKSB7CisJaWYgKHppcF9zaXplKSB7CiAJCXJldHVy bihidHJfY29weV96YmxvYl9wcmVmaXgoYnVmLCBsZW4sIHppcF9zaXplLAogCQkJCQkgICAgIHNw YWNlX2lkLCBwYWdlX25vLCBvZmZzZXQpKTsKIAl9IGVsc2UgewoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBidWYuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9i dWYvYnVmMGJ1Zi5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA5MDcxNTI1NTct NGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2J1Zi9idWYwYnVmLmMJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA5MDgwNjQ2NTEta2pidWNtb3k5MWQ0dTl6 dQpAQCAtNDYzLDcgKzQ2Myw3IEBAIGJ1Zl9wYWdlX2lzX2NvcnJ1cHRlZCgKIAl1bGludAkJY2hl Y2tzdW1fZmllbGQyOwogCWliX3VpbnQzMl90CWNyYzMyOwogCi0JaWYgKFVOSVZfTElLRUxZKCF6 aXBfc2l6ZSkKKwlpZiAoIXppcF9zaXplCiAJICAgICYmIG1lbWNtcChyZWFkX2J1ZiArIEZJTF9Q QUdFX0xTTiArIDQsCiAJCSAgICAgIHJlYWRfYnVmICsgVU5JVl9QQUdFX1NJWkUKIAkJICAgICAg LSBGSUxfUEFHRV9FTkRfTFNOX09MRF9DSEtTVU0gKyA0LCA0KSkgewpAQCAtNTA5LDcgKzUwOSw3 IEBAIGJ1Zl9wYWdlX2lzX2NvcnJ1cHRlZCgKIAkJcmV0dXJuKEZBTFNFKTsKIAl9CiAKLQlpZiAo VU5JVl9VTkxJS0VMWSh6aXBfc2l6ZSkpIHsKKwlpZiAoemlwX3NpemUpIHsKIAkJcmV0dXJuKCFw YWdlX3ppcF92ZXJpZnlfY2hlY2tzdW0ocmVhZF9idWYsIHppcF9zaXplKSk7CiAJfQogCkBAIC0x OTc4LDcgKzE5NzgsNyBAQCBsb29rdXA6CiAKIAl1dF9hZChidWZfcGFnZV9oYXNoX2xvY2tfaGVs ZF9zKGJ1Zl9wb29sLCBicGFnZSkpOwogCi0JaWYgKFVOSVZfVU5MSUtFTFkoIWJwYWdlLT56aXAu ZGF0YSkpIHsKKwlpZiAoIWJwYWdlLT56aXAuZGF0YSkgewogCQkvKiBUaGVyZSBpcyBubyBjb21w cmVzc2VkIHBhZ2UuICovCiBlcnJfZXhpdDoKIAkJcndfbG9ja19zX3VubG9jayhoYXNoX2xvY2sp OwpAQCAtMzMyMCw4ICszMzIwLDcgQEAgYnVmX3BhZ2VfaW5pdF9mb3JfcmVhZCgKIAkJdXRfYWQo bW9kZSA9PSBCVUZfUkVBRF9BTllfUEFHRSk7CiAJfQogCi0JaWYgKHppcF9zaXplICYmIFVOSVZf TElLRUxZKCF1bnppcCkKLQkgICAgJiYgVU5JVl9MSUtFTFkoIXJlY3ZfcmVjb3ZlcnlfaXNfb24o KSkpIHsKKwlpZiAoemlwX3NpemUgJiYgIXVuemlwICYmICFyZWN2X3JlY292ZXJ5X2lzX29uKCkp IHsKIAkJYmxvY2sgPSBOVUxMOwogCX0gZWxzZSB7CiAJCWJsb2NrID0gYnVmX0xSVV9nZXRfZnJl ZV9ibG9jayhidWZfcG9vbCk7CkBAIC0zMzg1LDcgKzMzODQsNyBAQCBlcnJfZXhpdDoKIAkJcndf bG9ja194X2xvY2tfZ2VuKCZibG9jay0+bG9jaywgQlVGX0lPX1JFQUQpOwogCQlidWZfcGFnZV9z ZXRfaW9fZml4KGJwYWdlLCBCVUZfSU9fUkVBRCk7CiAKLQkJaWYgKFVOSVZfVU5MSUtFTFkoemlw X3NpemUpKSB7CisJCWlmICh6aXBfc2l6ZSkgewogCQkJcGFnZV96aXBfc2V0X3NpemUoJmJsb2Nr LT5wYWdlLnppcCwgemlwX3NpemUpOwogCiAJCQkvKiBidWZfcG9vbC0+bXV0ZXggbWF5IGJlIHJl bGVhc2VkIGFuZAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvYnVmL2J1ZjBm bHUuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9idWYvYnVmMGZsdS5jCXJldmlkOnZhc2lsLmRp bW92QG9yYWNsZS5jb20tMjAxMTA5MDcxNTI1NTctNGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9y YWdlL2lubm9iYXNlL2J1Zi9idWYwZmx1LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20t MjAxMTA5MDgwNjQ2NTEta2pidWNtb3k5MWQ0dTl6dQpAQCAtMzQyLDcgKzM0Miw3IEBAIGJ1Zl9m bHVzaF9pbnNlcnRfaW50b19mbHVzaF9saXN0KAogCXsKIAkJdWxpbnQJemlwX3NpemUgPSBidWZf YmxvY2tfZ2V0X3ppcF9zaXplKGJsb2NrKTsKIAotCQlpZiAoVU5JVl9VTkxJS0VMWSh6aXBfc2l6 ZSkpIHsKKwkJaWYgKHppcF9zaXplKSB7CiAJCQlVTklWX01FTV9BU1NFUlRfUlcoYmxvY2stPnBh Z2UuemlwLmRhdGEsIHppcF9zaXplKTsKIAkJfSBlbHNlIHsKIAkJCVVOSVZfTUVNX0FTU0VSVF9S VyhibG9jay0+ZnJhbWUsIFVOSVZfUEFHRV9TSVpFKTsKQEAgLTQwMiw3ICs0MDIsNyBAQCBidWZf Zmx1c2hfaW5zZXJ0X3NvcnRlZF9pbnRvX2ZsdXNoX2xpc3QoCiAJewogCQl1bGludAl6aXBfc2l6 ZSA9IGJ1Zl9ibG9ja19nZXRfemlwX3NpemUoYmxvY2spOwogCi0JCWlmIChVTklWX1VOTElLRUxZ KHppcF9zaXplKSkgeworCQlpZiAoemlwX3NpemUpIHsKIAkJCVVOSVZfTUVNX0FTU0VSVF9SVyhi bG9jay0+cGFnZS56aXAuZGF0YSwgemlwX3NpemUpOwogCQl9IGVsc2UgewogCQkJVU5JVl9NRU1f QVNTRVJUX1JXKGJsb2NrLT5mcmFtZSwgVU5JVl9QQUdFX1NJWkUpOwpAQCAtODE4LDcgKzgxOCw3 IEBAIGJ1Zl9mbHVzaF93cml0ZV9ibG9ja190b19kYXRhZmlsZSgKIAl1dF9hKGJsb2NrKTsKIAl1 dF9hKGJ1Zl9wYWdlX2luX2ZpbGUoJmJsb2NrLT5wYWdlKSk7CiAKLQlpZiAoVU5JVl9MSUtFTFlf TlVMTChibG9jay0+cGFnZS56aXAuZGF0YSkpIHsKKwlpZiAoYmxvY2stPnBhZ2UuemlwLmRhdGEp IHsKIAkJZmlsX2lvKE9TX0ZJTEVfV1JJVEUgfCBPU19BSU9fU0lNVUxBVEVEX1dBS0VfTEFURVIs CiAJCSAgICAgICBGQUxTRSwgYnVmX3BhZ2VfZ2V0X3NwYWNlKCZibG9jay0+cGFnZSksCiAJCSAg ICAgICBidWZfcGFnZV9nZXRfemlwX3NpemUoJmJsb2NrLT5wYWdlKSwKQEAgLTEwMjQsNyArMTAy NCw3IEBAIHRyeV9hZ2FpbjoKIAogCXppcF9zaXplID0gYnVmX3BhZ2VfZ2V0X3ppcF9zaXplKGJw YWdlKTsKIAotCWlmIChVTklWX1VOTElLRUxZKHppcF9zaXplKSkgeworCWlmICh6aXBfc2l6ZSkg ewogCQlVTklWX01FTV9BU1NFUlRfUlcoYnBhZ2UtPnppcC5kYXRhLCB6aXBfc2l6ZSk7CiAJCS8q IENvcHkgdGhlIGNvbXByZXNzZWQgcGFnZSBhbmQgY2xlYXIgdGhlIHJlc3QuICovCiAJCW1lbWNw eSh0cnhfZG91Ymxld3JpdGUtPndyaXRlX2J1ZgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2UvZGF0YS9kYXRhMGRhdGEuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9kYXRhL2Rh dGEwZGF0YS5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA5MDcxNTI1NTctNGZq cHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2RhdGEvZGF0YTBkYXRhLmMJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA5MDgwNjQ2NTEta2pidWNtb3k5MWQ0dTl6 dQpAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMp IDE5OTQsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0 IChjKSAxOTk0LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRz IFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUK QEAgLTU3OSw3ICs1NzksNyBAQCBkdHVwbGVfY29udmVydF9iaWdfcmVjKAogCXVsaW50CQlsb2Nh bF9sZW47CiAJdWxpbnQJCWxvY2FsX3ByZWZpeF9sZW47CiAKLQlpZiAoVU5JVl9VTkxJS0VMWSgh ZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpKSB7CisJaWYgKCFkaWN0X2luZGV4X2lzX2NsdXN0 KGluZGV4KSkgewogCQlyZXR1cm4oTlVMTCk7CiAJfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9kaWN0L2RpY3QwZGljdC5jJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2Rp Y3QvZGljdDBkaWN0LmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDkwNzE1MjU1 Ny00ZmpwdjhqdW9vMDIwOHd5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvZGljdC9kaWN0MGRpY3Qu YwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDkwODA2NDY1MS1ramJ1Y21veTkx ZDR1OXp1CkBAIC0xNzAzLDcgKzE3MDMsNyBAQCBkaWN0X2luZGV4X3Rvb19iaWdfZm9yX3VuZG8o CiAJCSsgMTAgKyBGSUxfUEFHRV9EQVRBX0VORCAvKiB0cnhfdW5kb19sZWZ0KCkgKi8KIAkJKyAy LyogcG9pbnRlciB0byBwcmV2aW91cyB1bmRvIGxvZyByZWNvcmQgKi87CiAKLQlpZiAoVU5JVl9V TkxJS0VMWSghY2x1c3RfaW5kZXgpKSB7CisJaWYgKCFjbHVzdF9pbmRleCkgewogCQl1dF9hKGRp Y3RfaW5kZXhfaXNfY2x1c3QobmV3X2luZGV4KSk7CiAJCWNsdXN0X2luZGV4ID0gbmV3X2luZGV4 OwogCX0KQEAgLTIwMDgsNyArMjAwOCw3IEBAIHRvb19iaWc6CiAJCXJldHVybihEQl9UT09fQklH X1JFQ09SRCk7CiAJfQogCi0JaWYgKFVOSVZfVU5MSUtFTFkoaW5kZXgtPnR5cGUgJiBESUNUX1VO SVZFUlNBTCkpIHsKKwlpZiAoZGljdF9pbmRleF9pc191bml2KGluZGV4KSkgewogCQluX29yZCA9 IG5ld19pbmRleC0+bl9maWVsZHM7CiAJfSBlbHNlIHsKIAkJbl9vcmQgPSBuZXdfaW5kZXgtPm5f dW5pcTsKQEAgLTIxMDEsNyArMjEwMSw3IEBAIHVuZG9fc2l6ZV9vazoKIAkJICAgICAgIGRpY3Rf aW5kZXhfaXNfaWJ1ZihpbmRleCkKIAkJICAgICAgID8gU1lOQ19JQlVGX0lOREVYX1RSRUUgOiBT WU5DX0lOREVYX1RSRUUpOwogCi0JaWYgKCFVTklWX1VOTElLRUxZKG5ld19pbmRleC0+dHlwZSAm IERJQ1RfVU5JVkVSU0FMKSkgeworCWlmICghZGljdF9pbmRleF9pc191bml2KG5ld19pbmRleCkp IHsKIAogCQluZXdfaW5kZXgtPnN0YXRfbl9kaWZmX2tleV92YWxzID0gbWVtX2hlYXBfYWxsb2Mo CiAJCQluZXdfaW5kZXgtPmhlYXAsCkBAIC0yMzYxLDcgKzIzNjEsNyBAQCBkaWN0X2luZGV4X2Nv cHlfdHlwZXMoCiB7CiAJdWxpbnQJCWk7CiAKLQlpZiAoVU5JVl9VTkxJS0VMWShpbmRleC0+dHlw ZSAmIERJQ1RfVU5JVkVSU0FMKSkgeworCWlmIChkaWN0X2luZGV4X2lzX3VuaXYoaW5kZXgpKSB7 CiAJCWR0dXBsZV9zZXRfdHlwZXNfYmluYXJ5KHR1cGxlLCBuX2ZpZWxkcyk7CiAKIAkJcmV0dXJu OwpAQCAtMjQ0MCw3ICsyNDQwLDcgQEAgZGljdF9pbmRleF9idWlsZF9pbnRlcm5hbF9jbHVzdCgK IAkvKiBDb3B5IHRoZSBmaWVsZHMgb2YgaW5kZXggKi8KIAlkaWN0X2luZGV4X2NvcHkobmV3X2lu ZGV4LCBpbmRleCwgdGFibGUsIDAsIGluZGV4LT5uX2ZpZWxkcyk7CiAKLQlpZiAoVU5JVl9VTkxJ S0VMWShpbmRleC0+dHlwZSAmIERJQ1RfVU5JVkVSU0FMKSkgeworCWlmIChkaWN0X2luZGV4X2lz X3VuaXYoaW5kZXgpKSB7CiAJCS8qIE5vIGZpeGVkIG51bWJlciBvZiBmaWVsZHMgZGV0ZXJtaW5l cyBhbiBlbnRyeSB1bmlxdWVseSAqLwogCiAJCW5ld19pbmRleC0+bl91bmlxID0gUkVDX01BWF9O X0ZJRUxEUzsKQEAgLTI1ODAsNyArMjU4MCw3IEBAIGRpY3RfaW5kZXhfYnVpbGRfaW50ZXJuYWxf bm9uX2NsdXN0KAogCiAJdXRfYWQoY2x1c3RfaW5kZXgpOwogCXV0X2FkKGRpY3RfaW5kZXhfaXNf Y2x1c3QoY2x1c3RfaW5kZXgpKTsKLQl1dF9hZCghKGNsdXN0X2luZGV4LT50eXBlICYgRElDVF9V TklWRVJTQUwpKTsKKwl1dF9hZCghZGljdF9pbmRleF9pc191bml2KGNsdXN0X2luZGV4KSk7CiAK IAkvKiBDcmVhdGUgYSBuZXcgaW5kZXggKi8KIAluZXdfaW5kZXggPSBkaWN0X21lbV9pbmRleF9j cmVhdGUoCkBAIC00NTM3LDcgKzQ1MzcsNyBAQCBkaWN0X2luZGV4X2J1aWxkX25vZGVfcHRyKAog CWJ5dGUqCQlidWY7CiAJdWxpbnQJCW5fdW5pcXVlOwogCi0JaWYgKFVOSVZfVU5MSUtFTFkoaW5k ZXgtPnR5cGUgJiBESUNUX1VOSVZFUlNBTCkpIHsKKwlpZiAoZGljdF9pbmRleF9pc191bml2KGlu ZGV4KSkgewogCQkvKiBJbiBhIHVuaXZlcnNhbCBpbmRleCB0cmVlLCB3ZSB0YWtlIHRoZSB3aG9s ZSByZWNvcmQgYXMKIAkJdGhlIG5vZGUgcG9pbnRlciBpZiB0aGUgcmVjb3JkIGlzIG9uIHRoZSBs ZWFmIGxldmVsLAogCQlvbiBub24tbGVhZiBsZXZlbHMgd2UgcmVtb3ZlIHRoZSBsYXN0IGZpZWxk LCB3aGljaApAQCAtNDYwNCw3ICs0NjA0LDcgQEAgZGljdF9pbmRleF9jb3B5X3JlY19vcmRlcl9w cmVmaXgoCiAKIAlVTklWX1BSRUZFVENIX1IocmVjKTsKIAotCWlmIChVTklWX1VOTElLRUxZKGlu ZGV4LT50eXBlICYgRElDVF9VTklWRVJTQUwpKSB7CisJaWYgKGRpY3RfaW5kZXhfaXNfdW5pdihp bmRleCkpIHsKIAkJdXRfYSghZGljdF90YWJsZV9pc19jb21wKGluZGV4LT50YWJsZSkpOwogCQlu ID0gcmVjX2dldF9uX2ZpZWxkc19vbGQocmVjKTsKIAl9IGVsc2UgewoKPT09IG1vZGlmaWVkIGZp bGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvZnNwL2ZzcDBmc3AuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9mc3AvZnNwMGZzcC5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA5MDcxNTI1 NTctNGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2ZzcC9mc3AwZnNwLmMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA5MDgwNjQ2NTEta2pidWNtb3k5MWQ0 dTl6dQpAQCAtODYwLDcgKzg2MCw3IEBAIGZzcF9pbml0X2ZpbGVfcGFnZV9sb3coCiAJYmxvY2st PmNoZWNrX2luZGV4X3BhZ2VfYXRfZmx1c2ggPSBGQUxTRTsKICNlbmRpZiAvKiAhVU5JVl9IT1RC QUNLVVAgKi8KIAotCWlmIChVTklWX0xJS0VMWV9OVUxMKHBhZ2VfemlwKSkgeworCWlmIChwYWdl X3ppcCkgewogCQltZW1zZXQocGFnZSwgMCwgVU5JVl9QQUdFX1NJWkUpOwogCQltZW1zZXQocGFn ZV96aXAtPmRhdGEsIDAsIHBhZ2VfemlwX2dldF9zaXplKHBhZ2VfemlwKSk7CiAJCW1hY2hfd3Jp dGVfdG9fNChwYWdlICsgRklMX1BBR0VfT0ZGU0VULAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2Jhc2UvaW5jbHVkZS9idHIwYnRyLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvYnRyMGJ0ci5pYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwOTA3MTUy NTU3LTRmanB2OGp1b28wMjA4d3kKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J0cjBi dHIuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA5MDgwNjQ2NTEta2pidWNt b3k5MWQ0dTl6dQpAQCAtODEsNyArODEsNyBAQCBidHJfcGFnZV9zZXRfaW5kZXhfaWQoCiAJaW5k ZXhfaWRfdAlpZCwJLyohPCBpbjogaW5kZXggaWQgKi8KIAltdHJfdCoJCW10cikJLyohPCBpbjog bXRyICovCiB7Ci0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7CisJaWYgKHBhZ2Vf emlwKSB7CiAJCW1hY2hfd3JpdGVfdG9fOChwYWdlICsgKFBBR0VfSEVBREVSICsgUEFHRV9JTkRF WF9JRCksIGlkKTsKIAkJcGFnZV96aXBfd3JpdGVfaGVhZGVyKHBhZ2VfemlwLAogCQkJCSAgICAg IHBhZ2UgKyAoUEFHRV9IRUFERVIgKyBQQUdFX0lOREVYX0lEKSwKQEAgLTE1Niw3ICsxNTYsNyBA QCBidHJfcGFnZV9zZXRfbGV2ZWwoCiAJdXRfYWQocGFnZSAmJiBtdHIpOwogCXV0X2FkKGxldmVs IDw9IEJUUl9NQVhfTk9ERV9MRVZFTCk7CiAKLQlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3pp cCkpIHsKKwlpZiAocGFnZV96aXApIHsKIAkJbWFjaF93cml0ZV90b18yKHBhZ2UgKyAoUEFHRV9I RUFERVIgKyBQQUdFX0xFVkVMKSwgbGV2ZWwpOwogCQlwYWdlX3ppcF93cml0ZV9oZWFkZXIocGFn ZV96aXAsCiAJCQkJICAgICAgcGFnZSArIChQQUdFX0hFQURFUiArIFBBR0VfTEVWRUwpLApAQCAt MTk5LDcgKzE5OSw3IEBAIGJ0cl9wYWdlX3NldF9uZXh0KAogewogCXV0X2FkKHBhZ2UgJiYgbXRy KTsKIAotCWlmIChVTklWX0xJS0VMWV9OVUxMKHBhZ2VfemlwKSkgeworCWlmIChwYWdlX3ppcCkg ewogCQltYWNoX3dyaXRlX3RvXzQocGFnZSArIEZJTF9QQUdFX05FWFQsIG5leHQpOwogCQlwYWdl X3ppcF93cml0ZV9oZWFkZXIocGFnZV96aXAsIHBhZ2UgKyBGSUxfUEFHRV9ORVhULCA0LCBtdHIp OwogCX0gZWxzZSB7CkBAIC0yMzYsNyArMjM2LDcgQEAgYnRyX3BhZ2Vfc2V0X3ByZXYoCiB7CiAJ dXRfYWQocGFnZSAmJiBtdHIpOwogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7 CisJaWYgKHBhZ2VfemlwKSB7CiAJCW1hY2hfd3JpdGVfdG9fNChwYWdlICsgRklMX1BBR0VfUFJF ViwgcHJldik7CiAJCXBhZ2VfemlwX3dyaXRlX2hlYWRlcihwYWdlX3ppcCwgcGFnZSArIEZJTF9Q QUdFX1BSRVYsIDQsIG10cik7CiAJfSBlbHNlIHsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvYnVmMGJ1Zi5oJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1 ZGUvYnVmMGJ1Zi5oCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA5MDcxNTI1NTct NGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVmMGJ1Zi5o CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwOTA4MDY0NjUxLWtqYnVjbW95OTFk NHU5enUKQEAgLTcwMiw4ICs3MDIsOSBAQCB2b2lkCiBidWZfcGFnZV9wcmludCgKIC8qPT09PT09 PT09PT0qLwogCWNvbnN0IGJ5dGUqCXJlYWRfYnVmLAkvKiE8IGluOiBhIGRhdGFiYXNlIHBhZ2Ug Ki8KLQl1bGludAkJemlwX3NpemUpOwkvKiE8IGluOiBjb21wcmVzc2VkIHBhZ2Ugc2l6ZSwgb3IK Kwl1bGludAkJemlwX3NpemUpCS8qITwgaW46IGNvbXByZXNzZWQgcGFnZSBzaXplLCBvcgogCQkJ CQkwIGZvciB1bmNvbXByZXNzZWQgcGFnZXMgKi8KKwlVTklWX0NPTEQgX19hdHRyaWJ1dGVfXygo bm9ubnVsbCkpOwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogRGVjb21wcmVzcyBhIGJsb2NrLgogQHJldHVy bglUUlVFIGlmIHN1Y2Nlc3NmdWwgKi8KQEAgLTEwNjYsNyArMTA2Nyw3IEBAIGJ1Zl9ibG9ja19n ZXRfemlwX3NpemUoCiBHZXRzIHRoZSBjb21wcmVzc2VkIHBhZ2UgZGVzY3JpcHRvciBjb3JyZXNw b25kaW5nIHRvIGFuIHVuY29tcHJlc3NlZCBwYWdlCiBpZiBhcHBsaWNhYmxlLiAqLwogI2RlZmlu ZSBidWZfYmxvY2tfZ2V0X3BhZ2VfemlwKGJsb2NrKSBcCi0JKFVOSVZfTElLRUxZX05VTEwoKGJs b2NrKS0+cGFnZS56aXAuZGF0YSkgPyAmKGJsb2NrKS0+cGFnZS56aXAgOiBOVUxMKQorCSgoYmxv Y2spLT5wYWdlLnppcC5kYXRhID8gJihibG9jayktPnBhZ2UuemlwIDogTlVMTCkKICNpZm5kZWYg VU5JVl9IT1RCQUNLVVAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgogR2V0cyB0aGUgYmxvY2sgdG8gd2hvc2Ug ZnJhbWUgdGhlIHBvaW50ZXIgaXMgcG9pbnRpbmcgdG8uCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2J1ZjBidWYuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9idWYwYnVmLmljCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA5MDcx NTI1NTctNGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvYnVm MGJ1Zi5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDkwODA2NDY1MS1ramJ1 Y21veTkxZDR1OXp1CkBAIC0xNzAsNyArMTcwLDcgQEAgYnVmX3BhZ2VfcGVla19pZl90b29fb2xk KAogewogCWJ1Zl9wb29sX3QqCQlidWZfcG9vbCA9IGJ1Zl9wb29sX2Zyb21fYnBhZ2UoYnBhZ2Up OwogCi0JaWYgKFVOSVZfVU5MSUtFTFkoYnVmX3Bvb2wtPmZyZWVkX3BhZ2VfY2xvY2sgPT0gMCkp IHsKKwlpZiAoYnVmX3Bvb2wtPmZyZWVkX3BhZ2VfY2xvY2sgPT0gMCkgewogCQkvKiBJZiBldmlj dGlvbiBoYXMgbm90IHN0YXJ0ZWQgeWV0LCBkbyBub3QgdXBkYXRlIHRoZQogCQlzdGF0aXN0aWNz IG9yIG1vdmUgYmxvY2tzIGluIHRoZSBMUlUgbGlzdC4gIFRoaXMgaXMKIAkJZWl0aGVyIHRoZSB3 YXJtLXVwIHBoYXNlIG9yIGFuIGluLW1lbW9yeSB3b3JrbG9hZC4gKi8KCj09PSBtb2RpZmllZCBm aWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmljJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmljCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5j b20tMjAxMTA5MDcxNTI1NTctNGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdlL2lubm9iYXNl L2luY2x1ZGUvZGF0YTBkYXRhLmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw OTA4MDY0NjUxLWtqYnVjbW95OTFkNHU5enUKQEAgLTEsNiArMSw2IEBACiAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKIAotQ29weXJpZ2h0IChjKSAxOTk0LCAyMDA5LCBJbm5vYmFzZSBPeS4gQWxsIFJp Z2h0cyBSZXNlcnZlZC4KK0NvcHlyaWdodCAoYykgMTk5NCwgMjAxMSwgT3JhY2xlIGFuZC9vciBp dHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIAogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5k ZXIKIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkBAIC0xMzgsNyArMTM4LDcgQEAgZGZpZWxkX2lzX2V4 dCgKIHsKIAl1dF9hZChmaWVsZCk7CiAKLQlyZXR1cm4oVU5JVl9VTkxJS0VMWShmaWVsZC0+ZXh0 KSk7CisJcmV0dXJuKGZpZWxkLT5leHQpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMHR5cGUuaWMnCi0tLSBh L3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMHR5cGUuaWMJcmV2aWQ6dmFzaWwuZGltb3ZA b3JhY2xlLmNvbS0yMDExMDkwNzE1MjU1Ny00ZmpwdjhqdW9vMDIwOHd5CisrKyBiL3N0b3JhZ2Uv aW5ub2Jhc2UvaW5jbHVkZS9kYXRhMHR5cGUuaWMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5j b20tMjAxMTA5MDgwNjQ2NTEta2pidWNtb3k5MWQ0dTl6dQpAQCAtMSw2ICsxLDYgQEAKIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQgKGMpIDE5OTYsIDIwMTAsIElubm9iYXNlIE95 LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJpZ2h0IChjKSAxOTk2LCAyMDExLCBPcmFjbGUg YW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogCiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKQEAgLTI2MSw4ICsyNjEsOCBAQCBkdHlw ZV9nZXRfcGFkX2NoYXIoCiAJc3dpdGNoIChtdHlwZSkgewogCWNhc2UgREFUQV9GSVhCSU5BUlk6 CiAJY2FzZSBEQVRBX0JJTkFSWToKLQkJaWYgKFVOSVZfVU5MSUtFTFkoZHR5cGVfZ2V0X2NoYXJz ZXRfY29sbChwcnR5cGUpCi0JCQkJICA9PSBEQVRBX01ZU1FMX0JJTkFSWV9DSEFSU0VUX0NPTEwp KSB7CisJCWlmIChkdHlwZV9nZXRfY2hhcnNldF9jb2xsKHBydHlwZSkKKwkJICAgID09IERBVEFf TVlTUUxfQklOQVJZX0NIQVJTRVRfQ09MTCkgewogCQkJLyogU3RhcnRpbmcgZnJvbSA1LjAuMTgs IGRvIG5vdCBwYWQKIAkJCVZBUkJJTkFSWSBvciBCSU5BUlkgY29sdW1ucy4gKi8KIAkJCXJldHVy bihVTElOVF9VTkRFRklORUQpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uv aW5jbHVkZS9kaWN0MGRpY3QuaWMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0 MGRpY3QuaWMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDkwNzE1MjU1Ny00Zmpw djhqdW9vMDIwOHd5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kaWN0MGRpY3QuaWMJ cmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA5MDgwNjQ2NTEta2pidWNtb3k5MWQ0 dTl6dQpAQCAtMSw2ICsxLDYgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCi1Db3B5cmlnaHQg KGMpIDE5OTYsIDIwMDksIElubm9iYXNlIE95LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorQ29weXJp Z2h0IChjKSAxOTk2LCAyMDExLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmln aHRzIFJlc2VydmVkLgogCiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgogdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUKQEAgLTI1MCw3ICsyNTAsNyBAQCBkaWN0X2luZGV4X2lzX2NsdXN0KAogCXV0X2FkKGluZGV4 KTsKIAl1dF9hZChpbmRleC0+bWFnaWNfbiA9PSBESUNUX0lOREVYX01BR0lDX04pOwogCi0JcmV0 dXJuKFVOSVZfVU5MSUtFTFkoaW5kZXgtPnR5cGUgJiBESUNUX0NMVVNURVJFRCkpOworCXJldHVy bihpbmRleC0+dHlwZSAmIERJQ1RfQ0xVU1RFUkVEKTsKIH0KIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKIENo ZWNrIHdoZXRoZXIgdGhlIGluZGV4IGlzIHVuaXF1ZS4KQEAgLTI2NCw3ICsyNjQsNyBAQCBkaWN0 X2luZGV4X2lzX3VuaXF1ZSgKIAl1dF9hZChpbmRleCk7CiAJdXRfYWQoaW5kZXgtPm1hZ2ljX24g PT0gRElDVF9JTkRFWF9NQUdJQ19OKTsKIAotCXJldHVybihVTklWX1VOTElLRUxZKGluZGV4LT50 eXBlICYgRElDVF9VTklRVUUpKTsKKwlyZXR1cm4oaW5kZXgtPnR5cGUgJiBESUNUX1VOSVFVRSk7 CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8vKioKQEAgLTI4Myw2ICsyODMsMjEgQEAgZGljdF9pbmRleF9p c19pYnVmKAogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDaGVjayB3aGV0aGVyIHRoZSBpbmRleCBp cyBhbiB1bml2ZXJzYWwgaW5kZXggdHJlZS4KK0ByZXR1cm4Jbm9uemVybyBmb3IgdW5pdmVyc2Fs IHRyZWUsIHplcm8gZm9yIG90aGVyIGluZGV4ZXMgKi8KK1VOSVZfSU5MSU5FCit1bGludAorZGlj dF9pbmRleF9pc191bml2KAorLyo9PT09PT09PT09PT09PT0qLworCWNvbnN0IGRpY3RfaW5kZXhf dCoJaW5kZXgpCS8qITwgaW46IGluZGV4ICovCit7CisJdXRfYWQoaW5kZXgpOworCXV0X2FkKGlu ZGV4LT5tYWdpY19uID09IERJQ1RfSU5ERVhfTUFHSUNfTik7CisKKwlyZXR1cm4oVU5JVl9VTkxJ S0VMWShpbmRleC0+dHlwZSAmIERJQ1RfVU5JVkVSU0FMKSk7Cit9CisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKIENoZWNrIHdoZXRoZXIgdGhlIGluZGV4IGlzIGEgc2Vjb25kYXJ5IGluZGV4IG9yIHRoZSBp bnNlcnQgYnVmZmVyIHRyZWUuCiBAcmV0dXJuCW5vbnplcm8gZm9yIGluc2VydCBidWZmZXIsIHpl cm8gZm9yIG90aGVyIGluZGV4ZXMgKi8KIFVOSVZfSU5MSU5FCkBAIC0yOTgsNyArMzEzLDcgQEAg ZGljdF9pbmRleF9pc19zZWNfb3JfaWJ1ZigKIAogCXR5cGUgPSBpbmRleC0+dHlwZTsKIAotCXJl dHVybihVTklWX0xJS0VMWSghKHR5cGUgJiBESUNUX0NMVVNURVJFRCkgfHwgKHR5cGUgJiBESUNU X0lCVUYpKSk7CisJcmV0dXJuKCEodHlwZSAmIERJQ1RfQ0xVU1RFUkVEKSB8fCAodHlwZSAmIERJ Q1RfSUJVRikpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC00NjcsNyArNDgyLDcgQEAgZGlj dF90YWJsZV9mbGFnc190b196aXBfc2l6ZSgKIHsKIAl1bGludAl6aXBfc2l6ZSA9IGZsYWdzICYg RElDVF9URl9aU1NJWkVfTUFTSzsKIAotCWlmIChVTklWX1VOTElLRUxZKHppcF9zaXplKSkgewor CWlmICh6aXBfc2l6ZSkgewogCQl6aXBfc2l6ZSA9ICgoVU5JVl9aSVBfU0laRV9NSU4gPj4gMSkK IAkJCSA8PCAoemlwX3NpemUgPj4gRElDVF9URl9aU1NJWkVfU0hJRlQpKTsKIApAQCAtNjQ1LDcg KzY2MCw3IEBAIGRpY3RfaW5kZXhfZ2V0X3N5c19jb2xfcG9zKAogewogCXV0X2FkKGluZGV4KTsK IAl1dF9hZChpbmRleC0+bWFnaWNfbiA9PSBESUNUX0lOREVYX01BR0lDX04pOwotCXV0X2FkKCEo aW5kZXgtPnR5cGUgJiBESUNUX1VOSVZFUlNBTCkpOworCXV0X2FkKCFkaWN0X2luZGV4X2lzX3Vu aXYoaW5kZXgpKTsKIAogCWlmIChkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSkgewogCgo9PT0g bW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwcGFnZS5pYycKLS0t IGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwcGFnZS5pYwlyZXZpZDp2YXNpbC5kaW1v dkBvcmFjbGUuY29tLTIwMTEwOTA3MTUyNTU3LTRmanB2OGp1b28wMjA4d3kKKysrIGIvc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwcGFnZS5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xl LmNvbS0yMDExMDkwODA2NDY1MS1ramJ1Y21veTkxZDR1OXp1CkBAIC0xMzYsNyArMTM2LDcgQEAg cGFnZV9oZWFkZXJfc2V0X2ZpZWxkKAogCXV0X2FkKGZpZWxkICE9IFBBR0VfTl9IRUFQIHx8ICh2 YWwgJiAweDdmZmYpIDwgVU5JVl9QQUdFX1NJWkUpOwogCiAJbWFjaF93cml0ZV90b18yKHBhZ2Ug KyBQQUdFX0hFQURFUiArIGZpZWxkLCB2YWwpOwotCWlmIChVTklWX0xJS0VMWV9OVUxMKHBhZ2Vf emlwKSkgeworCWlmIChwYWdlX3ppcCkgewogCQlwYWdlX3ppcF93cml0ZV9oZWFkZXIocGFnZV96 aXAsCiAJCQkJICAgICAgcGFnZSArIFBBR0VfSEVBREVSICsgZmllbGQsIDIsIE5VTEwpOwogCX0K QEAgLTIxMSw3ICsyMTEsNyBAQCBwYWdlX2hlYWRlcl9yZXNldF9sYXN0X2luc2VydCgKIHsKIAl1 dF9hZChwYWdlICYmIG10cik7CiAKLQlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkpIHsK KwlpZiAocGFnZV96aXApIHsKIAkJbWFjaF93cml0ZV90b18yKHBhZ2UgKyAoUEFHRV9IRUFERVIg KyBQQUdFX0xBU1RfSU5TRVJUKSwgMCk7CiAJCXBhZ2VfemlwX3dyaXRlX2hlYWRlcihwYWdlX3pp cCwKIAkJCQkgICAgICBwYWdlICsgKFBBR0VfSEVBREVSICsgUEFHRV9MQVNUX0lOU0VSVCksCkBA IC0xMTExLDcgKzExMTEsNyBAQCBwYWdlX21lbV9mcmVlKAogCXBhZ2VfaGVhZGVyX3NldF9maWVs ZChwYWdlLCBwYWdlX3ppcCwgUEFHRV9HQVJCQUdFLAogCQkJICAgICAgZ2FyYmFnZSArIHJlY19v ZmZzX3NpemUob2Zmc2V0cykpOwogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7 CisJaWYgKHBhZ2VfemlwKSB7CiAJCXBhZ2VfemlwX2Rpcl9kZWxldGUocGFnZV96aXAsIHJlYywg aW5kZXgsIG9mZnNldHMsIGZyZWUpOwogCX0gZWxzZSB7CiAJCXBhZ2VfaGVhZGVyX3NldF9maWVs ZChwYWdlLCBwYWdlX3ppcCwgUEFHRV9OX1JFQ1MsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFn ZS9pbm5vYmFzZS9pbmNsdWRlL3BhZ2UwemlwLmljJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2lu Y2x1ZGUvcGFnZTB6aXAuaWMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDkwNzE1 MjU1Ny00ZmpwdjhqdW9vMDIwOHd5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9wYWdl MHppcC5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDkwODA2NDY1MS1ramJ1 Y21veTkxZDR1OXp1CkBAIC0xLDYgKzEsNiBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUNv cHlyaWdodCAoYykgMjAwNSwgMjAwOSwgSW5ub2Jhc2UgT3kuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu CitDb3B5cmlnaHQgKGMpIDIwMDUsIDIwMTEsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMu IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAKIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZQpAQCAtMTgwLDcgKzE4MCw3IEBAIHBhZ2VfemlwX3JlY19uZWVkc19leHQoCiAJ fQogI2VuZGlmCiAKLQlpZiAoVU5JVl9VTkxJS0VMWSh6aXBfc2l6ZSkpIHsKKwlpZiAoemlwX3Np emUpIHsKIAkJdXRfYWQoY29tcCk7CiAJCS8qIE9uIGEgY29tcHJlc3NlZCBwYWdlLCB0aGVyZSBp cyBhIHR3by1ieXRlIGVudHJ5IGluCiAJCXRoZSBkZW5zZSBwYWdlIGRpcmVjdG9yeSBmb3IgZXZl cnkgcmVjb3JkLiAgQnV0IHRoZXJlCkBAIC0yMzgsMTEgKzIzOCwxMSBAQCBwYWdlX3ppcF9nZXRf dHJhaWxlcl9sZW4oCiAJdXRfYWQocGFnZV96aXBfc2ltcGxlX3ZhbGlkYXRlKHBhZ2VfemlwKSk7 CiAJVU5JVl9NRU1fQVNTRVJUX1JXKHBhZ2VfemlwLT5kYXRhLCBwYWdlX3ppcF9nZXRfc2l6ZShw YWdlX3ppcCkpOwogCi0JaWYgKFVOSVZfVU5MSUtFTFkoIXBhZ2VfaXNfbGVhZihwYWdlX3ppcC0+ ZGF0YSkpKSB7CisJaWYgKCFwYWdlX2lzX2xlYWYocGFnZV96aXAtPmRhdGEpKSB7CiAJCXVuY29t cHJlc3NlZF9zaXplID0gUEFHRV9aSVBfRElSX1NMT1RfU0laRQogCQkJKyBSRUNfTk9ERV9QVFJf U0laRTsKIAkJdXRfYWQoIXBhZ2VfemlwLT5uX2Jsb2JzKTsKLQl9IGVsc2UgaWYgKFVOSVZfVU5M SUtFTFkoaXNfY2x1c3QpKSB7CisJfSBlbHNlIGlmIChpc19jbHVzdCkgewogCQl1bmNvbXByZXNz ZWRfc2l6ZSA9IFBBR0VfWklQX0RJUl9TTE9UX1NJWkUKIAkJCSsgREFUQV9UUlhfSURfTEVOICsg REFUQV9ST0xMX1BUUl9MRU47CiAJfSBlbHNlIHsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL2luY2x1ZGUvcmVtMHJlYy5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNs dWRlL3JlbTByZWMuaWMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDkwNzE1MjU1 Ny00ZmpwdjhqdW9vMDIwOHd5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yZW0wcmVj LmljCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwOTA4MDY0NjUxLWtqYnVjbW95 OTFkNHU5enUKQEAgLTU3Miw3ICs1NzIsNyBAQCByZWNfc2V0X25fb3duZWRfbmV3KAogewogCXJl Y19zZXRfYml0X2ZpZWxkXzEocmVjLCBuX293bmVkLCBSRUNfTkVXX05fT1dORUQsCiAJCQkgICAg UkVDX05fT1dORURfTUFTSywgUkVDX05fT1dORURfU0hJRlQpOwotCWlmIChVTklWX0xJS0VMWV9O VUxMKHBhZ2VfemlwKQorCWlmIChwYWdlX3ppcAogCSAgICAmJiBVTklWX0xJS0VMWShyZWNfZ2V0 X3N0YXR1cyhyZWMpCiAJCQkgICAhPSBSRUNfU1RBVFVTX1NVUFJFTVVNKSkgewogCQlwYWdlX3pp cF9yZWNfc2V0X293bmVkKHBhZ2VfemlwLCByZWMsIG5fb3duZWQpOwpAQCAtNjg1LDE1ICs2ODUs MTMgQEAgcmVjX2dldF9kZWxldGVkX2ZsYWcoCiAJdWxpbnQJCWNvbXApCS8qITwgaW46IG5vbnpl cm89Y29tcGFjdCBwYWdlIGZvcm1hdCAqLwogewogCWlmIChVTklWX0VYUEVDVChjb21wLCBSRUNf T0ZGU19DT01QQUNUKSkgewotCQlyZXR1cm4oVU5JVl9VTkxJS0VMWSgKLQkJCSAgICAgICByZWNf Z2V0X2JpdF9maWVsZF8xKHJlYywgUkVDX05FV19JTkZPX0JJVFMsCi0JCQkJCQkgICBSRUNfSU5G T19ERUxFVEVEX0ZMQUcsCi0JCQkJCQkgICBSRUNfSU5GT19CSVRTX1NISUZUKSkpOworCQlyZXR1 cm4ocmVjX2dldF9iaXRfZmllbGRfMShyZWMsIFJFQ19ORVdfSU5GT19CSVRTLAorCQkJCQkgICBS RUNfSU5GT19ERUxFVEVEX0ZMQUcsCisJCQkJCSAgIFJFQ19JTkZPX0JJVFNfU0hJRlQpKTsKIAl9 IGVsc2UgewotCQlyZXR1cm4oVU5JVl9VTkxJS0VMWSgKLQkJCSAgICAgICByZWNfZ2V0X2JpdF9m aWVsZF8xKHJlYywgUkVDX09MRF9JTkZPX0JJVFMsCi0JCQkJCQkgICBSRUNfSU5GT19ERUxFVEVE X0ZMQUcsCi0JCQkJCQkgICBSRUNfSU5GT19CSVRTX1NISUZUKSkpOworCQlyZXR1cm4ocmVjX2dl dF9iaXRfZmllbGRfMShyZWMsIFJFQ19PTERfSU5GT19CSVRTLAorCQkJCQkgICBSRUNfSU5GT19E RUxFVEVEX0ZMQUcsCisJCQkJCSAgIFJFQ19JTkZPX0JJVFNfU0hJRlQpKTsKIAl9CiB9CiAKQEAg LTc0MSw3ICs3MzksNyBAQCByZWNfc2V0X2RlbGV0ZWRfZmxhZ19uZXcoCiAKIAlyZWNfc2V0X2lu Zm9fYml0c19uZXcocmVjLCB2YWwpOwogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXAp KSB7CisJaWYgKHBhZ2VfemlwKSB7CiAJCXBhZ2VfemlwX3JlY19zZXRfZGVsZXRlZChwYWdlX3pp cCwgcmVjLCBmbGFnKTsKIAl9CiB9CkBAIC0xMDQxLDcgKzEwMzksNyBAQCByZWNfZ2V0X250aF9m aWVsZF9vZmZzKAogCXV0X2FkKG4gPCByZWNfb2Zmc19uX2ZpZWxkcyhvZmZzZXRzKSk7CiAJdXRf YWQobGVuKTsKIAotCWlmIChVTklWX1VOTElLRUxZKG4gPT0gMCkpIHsKKwlpZiAobiA9PSAwKSB7 CiAJCW9mZnMgPSAwOwogCX0gZWxzZSB7CiAJCW9mZnMgPSByZWNfb2Zmc19iYXNlKG9mZnNldHMp W25dICYgUkVDX09GRlNfTUFTSzsKQEAgLTEwODUsNyArMTA4Myw3IEBAIHJlY19vZmZzX2FueV9l eHRlcm4oCiAJY29uc3QgdWxpbnQqCW9mZnNldHMpLyohPCBpbjogYXJyYXkgcmV0dXJuZWQgYnkg cmVjX2dldF9vZmZzZXRzKCkgKi8KIHsKIAl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShOVUxMLCBO VUxMLCBvZmZzZXRzKSk7Ci0JcmV0dXJuKFVOSVZfVU5MSUtFTFkoKnJlY19vZmZzX2Jhc2Uob2Zm c2V0cykgJiBSRUNfT0ZGU19FWFRFUk5BTCkpOworCXJldHVybigqcmVjX29mZnNfYmFzZShvZmZz ZXRzKSAmIFJFQ19PRkZTX0VYVEVSTkFMKTsKIH0KIAogI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8 fCBkZWZpbmVkIFVOSVZfQkxPQl9MSUdIVF9ERUJVRwpAQCAtMTEzOCw4ICsxMTM2LDcgQEAgcmVj X29mZnNfbnRoX2V4dGVybigKIHsKIAl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShOVUxMLCBOVUxM LCBvZmZzZXRzKSk7CiAJdXRfYWQobiA8IHJlY19vZmZzX25fZmllbGRzKG9mZnNldHMpKTsKLQly ZXR1cm4oVU5JVl9VTkxJS0VMWShyZWNfb2Zmc19iYXNlKG9mZnNldHMpWzEgKyBuXQotCQkJICAg ICAmIFJFQ19PRkZTX0VYVEVSTkFMKSk7CisJcmV0dXJuKHJlY19vZmZzX2Jhc2Uob2Zmc2V0cylb MSArIG5dICYgUkVDX09GRlNfRVhURVJOQUwpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtMTE1NCw4ICsxMTUxLDcg QEAgcmVjX29mZnNfbnRoX3NxbF9udWxsKAogewogCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKE5V TEwsIE5VTEwsIG9mZnNldHMpKTsKIAl1dF9hZChuIDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0 cykpOwotCXJldHVybihVTklWX1VOTElLRUxZKHJlY19vZmZzX2Jhc2Uob2Zmc2V0cylbMSArIG5d Ci0JCQkgICAgICYgUkVDX09GRlNfU1FMX05VTEwpKTsKKwlyZXR1cm4ocmVjX29mZnNfYmFzZShv ZmZzZXRzKVsxICsgbl0gJiBSRUNfT0ZGU19TUUxfTlVMTCk7CiB9CiAKIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCkBAIC0xMzk0LDcg KzEzOTAsNyBAQCByZWNfc2V0X250aF9maWVsZCgKIAl1dF9hZChyZWMpOwogCXV0X2FkKHJlY19v ZmZzX3ZhbGlkYXRlKHJlYywgTlVMTCwgb2Zmc2V0cykpOwogCi0JaWYgKFVOSVZfVU5MSUtFTFko bGVuID09IFVOSVZfU1FMX05VTEwpKSB7CisJaWYgKGxlbiA9PSBVTklWX1NRTF9OVUxMKSB7CiAJ CWlmICghcmVjX29mZnNfbnRoX3NxbF9udWxsKG9mZnNldHMsIG4pKSB7CiAJCQl1dF9hKCFyZWNf b2Zmc19jb21wKG9mZnNldHMpKTsKIAkJCXJlY19zZXRfbnRoX2ZpZWxkX3NxbF9udWxsKHJlYywg bik7CkBAIC0xNTk2LDcgKzE1OTIsNyBAQCByZWNfZ2V0X2NvbnZlcnRlZF9zaXplKAogCXV0X2Fk KGR0dXBsZSk7CiAJdXRfYWQoZHR1cGxlX2NoZWNrX3R5cGVkKGR0dXBsZSkpOwogCi0JdXRfYWQo aW5kZXgtPnR5cGUgJiBESUNUX1VOSVZFUlNBTAorCXV0X2FkKGRpY3RfaW5kZXhfaXNfdW5pdihp bmRleCkKIAkgICAgICB8fCBkdHVwbGVfZ2V0X25fZmllbGRzKGR0dXBsZSkKIAkgICAgICA9PSAo KChkdHVwbGVfZ2V0X2luZm9fYml0cyhkdHVwbGUpICYgUkVDX05FV19TVEFUVVNfTUFTSykKIAkJ ICAgPT0gUkVDX1NUQVRVU19OT0RFX1BUUikKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lu bm9iYXNlL2luY2x1ZGUvcm93MHVwZC5pYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRl L3JvdzB1cGQuaWMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDkwNzE1MjU1Ny00 ZmpwdjhqdW9vMDIwOHd5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwdXBkLmlj CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwOTA4MDY0NjUxLWtqYnVjbW95OTFk NHU5enUKQEAgLTE2Myw3ICsxNjMsNyBAQCByb3dfdXBkX3JlY19zeXNfZmllbGRzKAogCX0KICNl bmRpZiAvKiBVTklWX1NZTkNfREVCVUcgKi8KIAotCWlmIChVTklWX0xJS0VMWV9OVUxMKHBhZ2Vf emlwKSkgeworCWlmIChwYWdlX3ppcCkgewogCQl1bGludAlwb3MgPSBkaWN0X2luZGV4X2dldF9z eXNfY29sX3BvcyhpbmRleCwgREFUQV9UUlhfSUQpOwogCQlwYWdlX3ppcF93cml0ZV90cnhfaWRf YW5kX3JvbGxfcHRyKHBhZ2VfemlwLCByZWMsIG9mZnNldHMsCiAJCQkJCQkgICBwb3MsIHRyeC0+ aWQsIHJvbGxfcHRyKTsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL210ci9t dHIwbG9nLmMnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvbXRyL210cjBsb2cuYwlyZXZpZDp2YXNp bC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwOTA3MTUyNTU3LTRmanB2OGp1b28wMjA4d3kKKysrIGIv c3RvcmFnZS9pbm5vYmFzZS9tdHIvbXRyMGxvZy5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTEwOTA4MDY0NjUxLWtqYnVjbW95OTFkNHU5enUKQEAgLTE3NSw3ICsxNzUsNyBAQCBt bG9nX3BhcnNlX25ieXRlcygKIAkJfQogCiAJCWlmIChwYWdlKSB7Ci0JCQlpZiAoVU5JVl9MSUtF TFlfTlVMTChwYWdlX3ppcCkpIHsKKwkJCWlmIChwYWdlX3ppcCkgewogCQkJCW1hY2hfd3JpdGVf dG9fOAogCQkJCQkoKChwYWdlX3ppcF9kZXNfdCopIHBhZ2VfemlwKS0+ZGF0YQogCQkJCQkgKyBv ZmZzZXQsIGR2YWwpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIG1sb2dfcGFyc2VfbmJ5dGVzKAogCQkJ Z290byBjb3JydXB0OwogCQl9CiAJCWlmIChwYWdlKSB7Ci0JCQlpZiAoVU5JVl9MSUtFTFlfTlVM TChwYWdlX3ppcCkpIHsKKwkJCWlmIChwYWdlX3ppcCkgewogCQkJCW1hY2hfd3JpdGVfdG9fMQog CQkJCQkoKChwYWdlX3ppcF9kZXNfdCopIHBhZ2VfemlwKS0+ZGF0YQogCQkJCQkgKyBvZmZzZXQs IHZhbCk7CkBAIC0yMTIsNyArMjEyLDcgQEAgbWxvZ19wYXJzZV9uYnl0ZXMoCiAJCQlnb3RvIGNv cnJ1cHQ7CiAJCX0KIAkJaWYgKHBhZ2UpIHsKLQkJCWlmIChVTklWX0xJS0VMWV9OVUxMKHBhZ2Vf emlwKSkgeworCQkJaWYgKHBhZ2VfemlwKSB7CiAJCQkJbWFjaF93cml0ZV90b18yCiAJCQkJCSgo KHBhZ2VfemlwX2Rlc190KikgcGFnZV96aXApLT5kYXRhCiAJCQkJCSArIG9mZnNldCwgdmFsKTsK QEAgLTIyMiw3ICsyMjIsNyBAQCBtbG9nX3BhcnNlX25ieXRlcygKIAkJYnJlYWs7CiAJY2FzZSBN TE9HXzRCWVRFUzoKIAkJaWYgKHBhZ2UpIHsKLQkJCWlmIChVTklWX0xJS0VMWV9OVUxMKHBhZ2Vf emlwKSkgeworCQkJaWYgKHBhZ2VfemlwKSB7CiAJCQkJbWFjaF93cml0ZV90b180CiAJCQkJCSgo KHBhZ2VfemlwX2Rlc190KikgcGFnZV96aXApLT5kYXRhCiAJCQkJCSArIG9mZnNldCwgdmFsKTsK QEAgLTQyMCw3ICs0MjAsNyBAQCBtbG9nX3BhcnNlX3N0cmluZygKIAl9CiAKIAlpZiAocGFnZSkg ewotCQlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkpIHsKKwkJaWYgKHBhZ2VfemlwKSB7 CiAJCQltZW1jcHkoKChwYWdlX3ppcF9kZXNfdCopIHBhZ2VfemlwKS0+ZGF0YQogCQkJCSsgb2Zm c2V0LCBwdHIsIGxlbik7CiAJCX0KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNl L3BhZ2UvcGFnZTBjdXIuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwY3VyLmMJ cmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDkwNzE1MjU1Ny00ZmpwdjhqdW9vMDIw OHd5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMGN1ci5jCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTEwOTA4MDY0NjUxLWtqYnVjbW95OTFkNHU5enUKQEAgLTExNzMs NyArMTE3Myw3IEBAIHBhZ2VfY3VyX2luc2VydF9yZWNfemlwX3Jlb3JnKAogCXVsaW50CQlwb3M7 CiAKIAkvKiBSZWNvbXByZXNzIG9yIHJlb3JnYW5pemUgYW5kIHJlY29tcHJlc3MgdGhlIHBhZ2Uu ICovCi0JaWYgKFVOSVZfTElLRUxZKHBhZ2VfemlwX2NvbXByZXNzKHBhZ2VfemlwLCBwYWdlLCBp bmRleCwgbXRyKSkpIHsKKwlpZiAocGFnZV96aXBfY29tcHJlc3MocGFnZV96aXAsIHBhZ2UsIGlu ZGV4LCBtdHIpKSB7CiAJCXJldHVybihyZWMpOwogCX0KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0 b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHBhZ2UuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9w YWdlL3BhZ2UwcGFnZS5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA5MDcxNTI1 NTctNGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3BhZ2UvcGFnZTBwYWdl LmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA5MDgwNjQ2NTEta2pidWNtb3k5 MWQ0dTl6dQpAQCAtMjI4LDcgKzIyOCw3IEBAIHBhZ2Vfc2V0X21heF90cnhfaWQoCiAJZHVyaW5n IGEgZGF0YWJhc2UgcmVjb3Zlcnkgd2UgYXNzdW1lIHRoYXQgdGhlIG1heCB0cnggaWQgb2YgZXZl cnkKIAlwYWdlIGlzIHRoZSBtYXhpbXVtIHRyeCBpZCBhc3NpZ25lZCBiZWZvcmUgdGhlIGNyYXNo LiAqLwogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7CisJaWYgKHBhZ2Vfemlw KSB7CiAJCW1hY2hfd3JpdGVfdG9fOChwYWdlICsgKFBBR0VfSEVBREVSICsgUEFHRV9NQVhfVFJY X0lEKSwgdHJ4X2lkKTsKIAkJcGFnZV96aXBfd3JpdGVfaGVhZGVyKHBhZ2VfemlwLAogCQkJCSAg ICAgIHBhZ2UgKyAoUEFHRV9IRUFERVIgKyBQQUdFX01BWF9UUlhfSUQpLApAQCAtNjQ2LDcgKzY0 Niw3IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9lbmQoCiAJLyogSGVyZSwgInJldCIgbWF5IGJlIHBv aW50aW5nIHRvIGEgdXNlciByZWNvcmQgb3IgdGhlCiAJcHJlZGVmaW5lZCBzdXByZW11bSByZWNv cmQuICovCiAKLQlpZiAoVU5JVl9MSUtFTFlfTlVMTChuZXdfcGFnZV96aXApKSB7CisJaWYgKG5l d19wYWdlX3ppcCkgewogCQlsb2dfbW9kZSA9IG10cl9zZXRfbG9nX21vZGUobXRyLCBNVFJfTE9H X05PTkUpOwogCX0KIApAQCAtNjY2LDExICs2NjYsMTAgQEAgcGFnZV9jb3B5X3JlY19saXN0X2Vu ZCgKIAkJCQkgICAgICAgcGFnZV9nZXRfbWF4X3RyeF9pZChwYWdlKSwgbXRyKTsKIAl9CiAKLQlp ZiAoVU5JVl9MSUtFTFlfTlVMTChuZXdfcGFnZV96aXApKSB7CisJaWYgKG5ld19wYWdlX3ppcCkg ewogCQltdHJfc2V0X2xvZ19tb2RlKG10ciwgbG9nX21vZGUpOwogCi0JCWlmIChVTklWX1VOTElL RUxZCi0JCSAgICAoIXBhZ2VfemlwX2NvbXByZXNzKG5ld19wYWdlX3ppcCwgbmV3X3BhZ2UsIGlu ZGV4LCBtdHIpKSkgeworCQlpZiAoIXBhZ2VfemlwX2NvbXByZXNzKG5ld19wYWdlX3ppcCwgbmV3 X3BhZ2UsIGluZGV4LCBtdHIpKSB7CiAJCQkvKiBCZWZvcmUgdHJ5aW5nIHRvIHJlb3JnYW5pemUg dGhlIHBhZ2UsCiAJCQlzdG9yZSB0aGUgbnVtYmVyIG9mIHByZWNlZGluZyByZWNvcmRzIG9uIHRo ZSBwYWdlLiAqLwogCQkJdWxpbnQJcmV0X3BvcwpAQCAtNjgyLDE0ICs2ODEsMTIgQEAgcGFnZV9j b3B5X3JlY19saXN0X2VuZCgKIAkJCXRoYXQgaXMgc21hbGxlciB0aGFuICJyZXQiKS4gKi8KIAkJ CXV0X2EocmV0X3BvcyA+IDApOwogCi0JCQlpZiAoVU5JVl9VTkxJS0VMWQotCQkJICAgICghcGFn ZV96aXBfcmVvcmdhbml6ZShuZXdfYmxvY2ssIGluZGV4LCBtdHIpKSkgeworCQkJaWYgKCFwYWdl X3ppcF9yZW9yZ2FuaXplKG5ld19ibG9jaywgaW5kZXgsIG10cikpIHsKIAogCQkJCWJ0cl9ibG9i X2RiZ19yZW1vdmUobmV3X3BhZ2UsIGluZGV4LAogCQkJCQkJICAgICJjb3B5X2VuZF9yZW9yZ19m YWlsIik7Ci0JCQkJaWYgKFVOSVZfVU5MSUtFTFkKLQkJCQkgICAgKCFwYWdlX3ppcF9kZWNvbXBy ZXNzKG5ld19wYWdlX3ppcCwKLQkJCQkJCQkgIG5ld19wYWdlLCBGQUxTRSkpKSB7CisJCQkJaWYg KCFwYWdlX3ppcF9kZWNvbXByZXNzKG5ld19wYWdlX3ppcCwKKwkJCQkJCQkgbmV3X3BhZ2UsIEZB TFNFKSkgewogCQkJCQl1dF9lcnJvcjsKIAkJCQl9CiAJCQkJdXRfYWQocGFnZV92YWxpZGF0ZShu ZXdfcGFnZSwgaW5kZXgpKTsKQEAgLTc1Myw3ICs3NTAsNyBAQCBwYWdlX2NvcHlfcmVjX2xpc3Rf c3RhcnQoCiAJCXJldHVybihyZXQpOwogCX0KIAotCWlmIChVTklWX0xJS0VMWV9OVUxMKG5ld19w YWdlX3ppcCkpIHsKKwlpZiAobmV3X3BhZ2VfemlwKSB7CiAJCWxvZ19tb2RlID0gbXRyX3NldF9s b2dfbW9kZShtdHIsIE1UUl9MT0dfTk9ORSk7CiAJfQogCkBAIC03ODksNyArNzg2LDcgQEAgcGFn ZV9jb3B5X3JlY19saXN0X3N0YXJ0KAogCQkJCSAgICAgICBtdHIpOwogCX0KIAotCWlmIChVTklW X0xJS0VMWV9OVUxMKG5ld19wYWdlX3ppcCkpIHsKKwlpZiAobmV3X3BhZ2VfemlwKSB7CiAJCW10 cl9zZXRfbG9nX21vZGUobXRyLCBsb2dfbW9kZSk7CiAKIAkJaWYgKFVOSVZfVU5MSUtFTFkKQEAg LTk4Miw3ICs5NzksNyBAQCBwYWdlX2RlbGV0ZV9yZWNfbGlzdF9lbmQoCiAJCQkJICAgICAgID8g TUxPR19DT01QX0xJU1RfRU5EX0RFTEVURQogCQkJCSAgICAgICA6IE1MT0dfTElTVF9FTkRfREVM RVRFLCBtdHIpOwogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7CisJaWYgKHBh Z2VfemlwKSB7CiAJCXVsaW50CQlsb2dfbW9kZTsKIAogCQl1dF9hKHBhZ2VfaXNfY29tcChwYWdl KSk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9wYWdlL3BhZ2UwemlwLmMn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvcGFnZS9wYWdlMHppcC5jCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMTA5MDcxNTI1NTctNGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdl L2lubm9iYXNlL3BhZ2UvcGFnZTB6aXAuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDkwODA2NDY1MS1ramJ1Y21veTkxZDR1OXp1CkBAIC02NDUsNyArNjQ1LDcgQEAgcGFnZV96 aXBfZGlyX2VuY29kZSgKIAkJfQogCiAJCWluZm9fYml0cyA9IHJlY19nZXRfaW5mb19iaXRzKHJl YywgVFJVRSk7Ci0JCWlmIChVTklWX1VOTElLRUxZKGluZm9fYml0cyAmIFJFQ19JTkZPX0RFTEVU RURfRkxBRykpIHsKKwkJaWYgKGluZm9fYml0cyAmIFJFQ19JTkZPX0RFTEVURURfRkxBRykgewog CQkJaW5mb19iaXRzICY9IH5SRUNfSU5GT19ERUxFVEVEX0ZMQUc7CiAJCQlvZmZzIHw9IFBBR0Vf WklQX0RJUl9TTE9UX0RFTDsKIAkJfQpAQCAtMTA5Myw3ICsxMDkzLDcgQEAgcGFnZV96aXBfY29t cHJlc3NfY2x1c3QoCiAJCS8qIENoZWNrIGlmIHRoZXJlIGFyZSBhbnkgZXh0ZXJuYWxseSBzdG9y ZWQgY29sdW1ucy4KIAkJRm9yIGVhY2ggZXh0ZXJuYWxseSBzdG9yZWQgY29sdW1uLCBzdG9yZSB0 aGUKIAkJQlRSX0VYVEVSTl9GSUVMRF9SRUYgc2VwYXJhdGVseS4gKi8KLQkJaWYgKFVOSVZfVU5M SUtFTFkocmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSkpIHsKKwkJaWYgKHJlY19vZmZzX2Fu eV9leHRlcm4ob2Zmc2V0cykpIHsKIAkJCXV0X2FkKGRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgp KTsKIAogCQkJZXJyID0gcGFnZV96aXBfY29tcHJlc3NfY2x1c3RfZXh0KApAQCAtMTc1NCw3ICsx NzU0LDcgQEAgcGFnZV96aXBfc2V0X2V4dHJhX2J5dGVzKAogCWZvciAoaSA9IDA7IGkgPCBuOyBp KyspIHsKIAkJb2ZmcyA9IHBhZ2VfemlwX2Rpcl9nZXQocGFnZV96aXAsIGkpOwogCi0JCWlmIChV TklWX1VOTElLRUxZKG9mZnMgJiBQQUdFX1pJUF9ESVJfU0xPVF9ERUwpKSB7CisJCWlmIChvZmZz ICYgUEFHRV9aSVBfRElSX1NMT1RfREVMKSB7CiAJCQlpbmZvX2JpdHMgfD0gUkVDX0lORk9fREVM RVRFRF9GTEFHOwogCQl9CiAJCWlmIChVTklWX1VOTElLRUxZKG9mZnMgJiBQQUdFX1pJUF9ESVJf U0xPVF9PV05FRCkpIHsKQEAgLTI2MzYsNyArMjYzNiw3IEBAIHBhZ2VfemlwX2RlY29tcHJlc3Nf Y2x1c3QoCiAJCUZvciBlYWNoIGV4dGVybmFsbHkgc3RvcmVkIGNvbHVtbiwgcmVzdG9yZSB0aGUK IAkJQlRSX0VYVEVSTl9GSUVMRF9SRUYgc2VwYXJhdGVseS4gKi8KIAotCQlpZiAoVU5JVl9VTkxJ S0VMWShyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMpKSkgeworCQlpZiAocmVjX29mZnNfYW55 X2V4dGVybihvZmZzZXRzKSkgewogCQkJaWYgKFVOSVZfVU5MSUtFTFkKIAkJCSAgICAoIXBhZ2Vf emlwX2RlY29tcHJlc3NfY2x1c3RfZXh0KAogCQkJCSAgICBkX3N0cmVhbSwgcmVjLCBvZmZzZXRz LCB0cnhfaWRfY29sKSkpIHsKQEAgLTQyOTYsNyArNDI5Niw3IEBAIHBhZ2VfemlwX2Rpcl9hZGRf c2xvdCgKIAlpZiAoIXBhZ2VfaXNfbGVhZihwYWdlX3ppcC0+ZGF0YSkpIHsKIAkJdXRfYWQoIXBh Z2VfemlwLT5uX2Jsb2JzKTsKIAkJc3RvcmVkID0gZGlyIC0gbl9kZW5zZSAqIFJFQ19OT0RFX1BU Ul9TSVpFOwotCX0gZWxzZSBpZiAoVU5JVl9VTkxJS0VMWShpc19jbHVzdGVyZWQpKSB7CisJfSBl bHNlIGlmIChpc19jbHVzdGVyZWQpIHsKIAkJLyogTW92ZSB0aGUgQkxPQiBwb2ludGVyIGFycmF5 IGJhY2t3YXJkcyB0byBtYWtlIHNwYWNlIGZvciB0aGUKIAkJcm9sbF9wdHIgYW5kIHRyeF9pZCBj b2x1bW5zIGFuZCB0aGUgZGVuc2UgZGlyZWN0b3J5IHNsb3QuICovCiAJCWJ5dGUqCWV4dGVybnM7 CkBAIC00NDk4LDcgKzQ0OTgsNyBAQCBwYWdlX3ppcF9yZW9yZ2FuaXplKAogCS8qIFJlc3RvcmUg bG9nZ2luZy4gKi8KIAltdHJfc2V0X2xvZ19tb2RlKG10ciwgbG9nX21vZGUpOwogCi0JaWYgKFVO SVZfVU5MSUtFTFkoIXBhZ2VfemlwX2NvbXByZXNzKHBhZ2VfemlwLCBwYWdlLCBpbmRleCwgbXRy KSkpIHsKKwlpZiAoIXBhZ2VfemlwX2NvbXByZXNzKHBhZ2VfemlwLCBwYWdlLCBpbmRleCwgbXRy KSkgewogCiAjaWZuZGVmIFVOSVZfSE9UQkFDS1VQCiAJCWJ1Zl9ibG9ja19mcmVlKHRlbXBfYmxv Y2spOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvcmVtL3JlbTBjbXAuYycK LS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yZW0vcmVtMGNtcC5jCXJldmlkOnZhc2lsLmRpbW92QG9y YWNsZS5jb20tMjAxMTA5MDcxNTI1NTctNGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdlL2lu bm9iYXNlL3JlbS9yZW0wY21wLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA5 MDgwNjQ2NTEta2pidWNtb3k5MWQ0dTl6dQpAQCAtOTEyLDcgKzkxMiw3IEBAIGNtcF9yZWNfcmVj X3dpdGhfbWF0Y2goCiAJCXVsaW50CW10eXBlOwogCQl1bGludAlwcnR5cGU7CiAKLQkJaWYgKFVO SVZfVU5MSUtFTFkoaW5kZXgtPnR5cGUgJiBESUNUX1VOSVZFUlNBTCkpIHsKKwkJaWYgKGRpY3Rf aW5kZXhfaXNfdW5pdihpbmRleCkpIHsKIAkJCS8qIFRoaXMgaXMgZm9yIHRoZSBpbnNlcnQgYnVm ZmVyIEItdHJlZS4gKi8KIAkJCW10eXBlID0gREFUQV9CSU5BUlk7CiAJCQlwcnR5cGUgPSAwOwoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBtZXJnZS5jJwotLS0g YS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwOTA3MTUyNTU3LTRmanB2OGp1b28wMjA4d3kKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9yb3cvcm93MG1lcmdlLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMTA5 MDgwNjQ2NTEta2pidWNtb3k5MWQ0dTl6dQpAQCAtMzEwLDcgKzMxMCw3IEBAIHJvd19tZXJnZV9i dWZfYWRkKAogCQlpZiAoZGZpZWxkX2lzX251bGwoZmllbGQpKSB7CiAJCQl1dF9hZCghKGNvbC0+ cHJ0eXBlICYgREFUQV9OT1RfTlVMTCkpOwogCQkJY29udGludWU7Ci0JCX0gZWxzZSBpZiAoVU5J Vl9MSUtFTFkoIWV4dCkpIHsKKwkJfSBlbHNlIGlmICghZXh0KSB7CiAJCX0gZWxzZSBpZiAoZGlj dF9pbmRleF9pc19jbHVzdChpbmRleCkpIHsKIAkJCS8qIEZsYWcgZXh0ZXJuYWxseSBzdG9yZWQg ZmllbGRzLiAqLwogCQkJY29uc3QgYnl0ZSoJYnVmID0gcm93X2V4dF9sb29rdXAoZXh0LCBjb2xf bm8sCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MG15c3FsLmMn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBteXNxbC5jCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMTA5MDcxNTI1NTctNGZqcHY4anVvbzAyMDh3eQorKysgYi9zdG9yYWdl L2lubm9iYXNlL3Jvdy9yb3cwbXlzcWwuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDkwODA2NDY1MS1ramJ1Y21veTkxZDR1OXp1CkBAIC0xNTgxLDcgKzE1ODEsNyBAQCByb3df dW5sb2NrX2Zvcl9teXNxbCgKIAkJCWluZGV4ID0gYnRyX3BjdXJfZ2V0X2J0cl9jdXIoY2x1c3Rf cGN1ciktPmluZGV4OwogCQl9CiAKLQkJaWYgKFVOSVZfVU5MSUtFTFkoIWRpY3RfaW5kZXhfaXNf Y2x1c3QoaW5kZXgpKSkgeworCQlpZiAoIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5kZXgpKSB7CiAJ CQkvKiBUaGlzIGlzIG5vdCBhIGNsdXN0ZXJlZCBpbmRleCByZWNvcmQuICBXZQogCQkJZG8gbm90 IGtub3cgaG93IHRvIHVubG9jayB0aGUgcmVjb3JkLiAqLwogCQkJZ290byBub191bmxvY2s7Cgo9 PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHJvdy5jJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcm93LmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNv bS0yMDExMDkwNzE1MjU1Ny00ZmpwdjhqdW9vMDIwOHd5CisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uv cm93L3JvdzByb3cuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDkwODA2NDY1 MS1ramJ1Y21veTkxZDR1OXp1CkBAIC03NSw3ICs3NSw3IEBAIHJvd19idWlsZF9pbmRleF9lbnRy eSgKIAllbnRyeV9sZW4gPSBkaWN0X2luZGV4X2dldF9uX2ZpZWxkcyhpbmRleCk7CiAJZW50cnkg PSBkdHVwbGVfY3JlYXRlKGhlYXAsIGVudHJ5X2xlbik7CiAKLQlpZiAoVU5JVl9VTkxJS0VMWShp bmRleC0+dHlwZSAmIERJQ1RfVU5JVkVSU0FMKSkgeworCWlmIChkaWN0X2luZGV4X2lzX3VuaXYo aW5kZXgpKSB7CiAJCWR0dXBsZV9zZXRfbl9maWVsZHNfY21wKGVudHJ5LCBlbnRyeV9sZW4pOwog CQkvKiBUaGVyZSBtYXkgb25seSBiZSBleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5zCiAJCWluIGEg Y2x1c3RlcmVkIGluZGV4IEItdHJlZSBvZiBhIHVzZXIgdGFibGUuICovCkBAIC0xMjQsNyArMTI0 LDcgQEAgcm93X2J1aWxkX2luZGV4X2VudHJ5KAogCQlzdG9yZWQgb2ZmLXBhZ2UuICovCiAJCXV0 X2FkKGNvbC0+b3JkX3BhcnQpOwogCi0JCWlmIChVTklWX0xJS0VMWV9OVUxMKGV4dCkpIHsKKwkJ aWYgKGV4dCkgewogCQkJLyogU2VlIGlmIHRoZSBjb2x1bW4gaXMgc3RvcmVkIGV4dGVybmFsbHku ICovCiAJCQljb25zdCBieXRlKglidWYgPSByb3dfZXh0X2xvb2t1cChleHQsIGNvbF9ubywKIAkJ CQkJCQkgICAgICZsZW4pOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzBzZWwuYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHNlbC5jCXJldmlkOnZh c2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTA5MDcxNTI1NTctNGZqcHY4anVvbzAyMDh3eQorKysg Yi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwc2VsLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTA5MDgwNjQ2NTEta2pidWNtb3k5MWQ0dTl6dQpAQCAtNDM4OCw4ICs0Mzg4LDcg QEAgd3Jvbmdfb2ZmczoKIAkJaWYgKCFzZXRfYWxzb19nYXBfbG9ja3MKIAkJICAgIHx8IHNydl9s b2Nrc191bnNhZmVfZm9yX2JpbmxvZwogCQkgICAgfHwgdHJ4LT5pc29sYXRpb25fbGV2ZWwgPD0g VFJYX0lTT19SRUFEX0NPTU1JVFRFRAotCQkgICAgfHwgKHVuaXF1ZV9zZWFyY2gKLQkJCSYmICFV TklWX1VOTElLRUxZKHJlY19nZXRfZGVsZXRlZF9mbGFnKHJlYywgY29tcCkpKSkgeworCQkgICAg fHwgKHVuaXF1ZV9zZWFyY2ggJiYgIXJlY19nZXRfZGVsZXRlZF9mbGFnKHJlYywgY29tcCkpKSB7 CiAKIAkJCWdvdG8gbm9fZ2FwX2xvY2s7CiAJCX0gZWxzZSB7CkBAIC00NTc2LDcgKzQ1NzUsNyBA QCBsb2Nrc19vazoKIAlwb2ludCB0aGF0IHJlYyBpcyBvbiBhIGJ1ZmZlciBwb29sIHBhZ2UuIEZ1 bmN0aW9ucyBsaWtlCiAJcGFnZV9yZWNfaXNfY29tcCgpIGNhbm5vdCBiZSB1c2VkISAqLwogCi0J aWYgKFVOSVZfVU5MSUtFTFkocmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCBjb21wKSkpIHsKKwlp ZiAocmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCBjb21wKSkgewogCiAJCS8qIFRoZSByZWNvcmQg aXMgZGVsZXRlLW1hcmtlZDogd2UgY2FuIHNraXAgaXQgKi8KIApAQCAtNDY3NCw3ICs0NjczLDcg QEAgcmVxdWlyZXNfY2x1c3RfcmVjOgogCQkJZ290byBsb2NrX3dhaXRfb3JfZXJyb3I7CiAJCX0K IAotCQlpZiAoVU5JVl9VTkxJS0VMWShyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhjbHVzdF9yZWMsIGNv bXApKSkgeworCQlpZiAocmVjX2dldF9kZWxldGVkX2ZsYWcoY2x1c3RfcmVjLCBjb21wKSkgewog CiAJCQkvKiBUaGUgcmVjb3JkIGlzIGRlbGV0ZSBtYXJrZWQ6IHdlIGNhbiBza2lwIGl0ICovCiAK Cj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdXBkLmMnCi0tLSBh L3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUu Y29tLTIwMTEwOTA3MTUyNTU3LTRmanB2OGp1b28wMjA4d3kKKysrIGIvc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MHVwZC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwOTA4MDY0 NjUxLWtqYnVjbW95OTFkNHU5enUKQEAgLTM0NSw3ICszNDUsNyBAQCByb3dfdXBkX3JlY19zeXNf ZmllbGRzX2luX3JlY292ZXJ5KAogewogCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgTlVM TCwgb2Zmc2V0cykpOwogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7CisJaWYg KHBhZ2VfemlwKSB7CiAJCXBhZ2VfemlwX3dyaXRlX3RyeF9pZF9hbmRfcm9sbF9wdHIoCiAJCQlw YWdlX3ppcCwgcmVjLCBvZmZzZXRzLCBwb3MsIHRyeF9pZCwgcm9sbF9wdHIpOwogCX0gZWxzZSB7 CkBAIC01NDEsNyArNTQxLDcgQEAgcm93X3VwZF9yZWNfaW5fcGxhY2UoCiAjZW5kaWYgLyogVU5J Vl9CTE9CX0RFQlVHICovCiAJfQogCi0JaWYgKFVOSVZfTElLRUxZX05VTEwocGFnZV96aXApKSB7 CisJaWYgKHBhZ2VfemlwKSB7CiAJCXBhZ2VfemlwX3dyaXRlX3JlYyhwYWdlX3ppcCwgcmVjLCBp bmRleCwgb2Zmc2V0cywgMCk7CiAJfQogfQpAQCAtODg5LDggKzg4OSw4IEBAIHJvd191cGRfYnVp bGRfZGlmZmVyZW5jZV9iaW5hcnkoCiAJCQlnb3RvIHNraXBfY29tcGFyZTsKIAkJfQogCi0JCWlm IChVTklWX1VOTElLRUxZKCFkZmllbGRfaXNfZXh0KGRmaWVsZCkKLQkJCQkgICE9ICFyZWNfb2Zm c19udGhfZXh0ZXJuKG9mZnNldHMsIGkpKQorCQlpZiAoIWRmaWVsZF9pc19leHQoZGZpZWxkKQor CQkgICAgIT0gIXJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkKIAkJICAgIHx8ICFkZmll bGRfZGF0YV9pc19iaW5hcnlfZXF1YWwoZGZpZWxkLCBsZW4sIGRhdGEpKSB7CiAKIAkJCXVwZF9m aWVsZCA9IHVwZF9nZXRfbnRoX2ZpZWxkKHVwZGF0ZSwgbl9kaWZmKTsKQEAgLTEyOTAsNyArMTI5 MCw3IEBAIHJvd191cGRfY2hhbmdlc19vcmRfZmllbGRfYmluYXJ5X2Z1bmMoCiAJCWlmIChVTklW X0xJS0VMWShpbmRfZmllbGQtPnByZWZpeF9sZW4gPT0gMCkKIAkJICAgIHx8IGRmaWVsZF9pc19u dWxsKGRmaWVsZCkpIHsKIAkJCS8qIGRvIG5vdGhpbmcgc3BlY2lhbCAqLwotCQl9IGVsc2UgaWYg KFVOSVZfTElLRUxZX05VTEwoZXh0KSkgeworCQl9IGVsc2UgaWYgKGV4dCkgewogCQkJLyogU2ls ZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcgd2l0aG91dAogCQkJc2lsZW5jaW5nIGEgVmFsZ3JpbmQg ZXJyb3IuICovCiAJCQlkZmllbGRfbGVuID0gMDsKCk5vIGJ1bmRsZSAocmVhc29uOiB1c2VsZXNz IGZvciBwdXNoIGVtYWlscyku