From: Jon Olav Hauglid Date: May 13 2011 9:16am Subject: bzr commit into mysql-5.5 branch (jon.hauglid:3381) Bug#11853126 List-Archive: http://lists.mysql.com/commits/137296 X-Bug: 11853126 Message-Id: <201105130916.p4D9GdTd027403@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5358625014967584858==" --===============5358625014967584858== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline I0F0IGZpbGU6Ly8vZXhwb3J0L2hvbWUveC9teXNxbC01LjUtYnVnMTE4NTMxMjYvIGJhc2VkIG9u IHJldmlkOmJ1aWxkQG15c3FsLmNvbS0yMDExMDUxMzA1MDAwOS1zMjZ1N3M4Y2N1dWEyeTBuCgog MzM4MSBKb24gT2xhdiBIYXVnbGlkCTIwMTEtMDUtMTMKICAgICAgQnVnIzExODUzMTI2IFJFLUVO QUJMRSBDT05DVVJSRU5UIFJFQURTIFdISUxFIENSRUFUSU5HCiAgICAgICAgICAgICAgICAgICBT RUNPTkRBUlkgSU5ERVggSU4gSU5OT0RCCiAgICAgIAogICAgICBUaGUgcGF0Y2hlcyBmb3IgQnVn IzExNzUxMzg4IGFuZCBCdWcjMTE3ODQwNTYgZW5hYmxlZCBjb25jdXJyZW50CiAgICAgIHJlYWRz IHdoaWxlIGNyZWF0aW5nIHNlY29uZGFyeSBpbmRleGVzIGluIElubm9EQi4gSG93ZXZlciwgdGhl eQogICAgICBpbnRyb2R1Y2VkIGEgcmVncmVzc2lvbi4gVGhpcyByZWdyZXNzaW9uIG9jY3VyZWQg aWYgQUxURVIgVEFCTEUKICAgICAgZmFpbGVkIGFmdGVyIHRoZSBpbmRleCBoYWQgYmVlbiBhZGRl ZCwgZm9yIGV4YW1wbGUgZHVyaW5nIHRoZQogICAgICBsb2NrIHVwZ3JhZGUgbmVlZGVkIHRvIHVw ZGF0ZSAuRlJNLiBJZiB0aGlzIGhhcHBlbmVkLCBJbm5vREIKICAgICAgYW5kIHRoZSBzZXJ2ZXIg Z290IG91dCBvZiBzeW5jIHdpdGggcmVnYXJkcyB0byB3aGljaCBpbmRleGVzCiAgICAgIGFjdHVh bGx5IGV4aXN0ZWQuIFRoZXJlZm9yZSB0aGUgcGF0Y2ggZm9yIEJ1ZyMxMTgxNTYwMCBhZ2Fpbgog ICAgICBkaXNhYmxlZCBjb25jdXJyZW50IHJlYWRzLgogICAgICAKICAgICAgVGhpcyBwYXRjaCBy ZS1lbmFibGVzIGNvbmN1cnJlbnQgcmVhZHMuIFRoZSBvcmlnaW5hbCByZWdyZXNzaW9uCiAgICAg IGlzIGZpeGVkIGJ5IHNwbGl0dGluZyB0aGUgQUREIElOREVYIG9wZXJhdGlvbiBpbnRvIHR3byBw YXJ0cy4KICAgICAgRmlyc3QgdGhlIG5ldyBpbmRleCBpcyBjcmVhdGVkIGJ1dCBub3QgbWFkZSBh Y3RpdmUuIFRoaXMgaXMKICAgICAgZG9uZSB3aGlsZSBjb25jdXJyZW50IHJlYWRzIGFyZSBhbGxv d2VkLiBUaGUgc2Vjb25kIHBhcnQgb2YKICAgICAgdGhlIG9wZXJhdGlvbiBtYWtlcyB0aGUgaW5k ZXggYWN0aXZlIChvciByZXZlcnRzIHRoZSBjaGFuZ2UpLgogICAgICBUaGlzIGlzIGRvbmUgYWZ0 ZXIgbG9jayB1cGdyYWRlLCB3aGljaCBwcmV2ZW50cyB0aGUgb3JpZ2luYWwKICAgICAgcmVncmVz c2lvbi4KICAgICAgCiAgICAgIEluIG9yZGVyIHRvIGltcGxlbWVudCB0aGlzIGNoYW5nZSwgdGhl IHBhdGNoIGNoYW5nZXMgdGhlIHN0b3JhZ2UKICAgICAgQVBJIGZvciBpbi1wbGFjZSBpbmRleCBj cmVhdGlvbi4gaGFuZGxlcjo6YWRkX2luZGV4KCkgaXMgc3BsaXQKICAgICAgaW50byB0d28gZnVu Y3Rpb25zLCBoYW5kbGVyX2FkZF9pbmRleCgpIGFuZAogICAgICBoYW5kbGVyOjpmaW5hbF9hZGRf aW5kZXgoKS4gVGhlIGZyb21lciBmb3IgY3JlYXRpbmcgaW5kZXhlcyB3aXRob3V0CiAgICAgIG1h a2luZyB0aGUgdmlzaWJsZSBhbmQgdGhlIGxhdHRlciBmb3IgY29tbWl0aW5nIChpLmUuIG1ha2lu ZwogICAgICB2aXNpYmxlKSBuZXcgaW5kZXhlcyBvciByZXZlcnRpbmcgdGhlIGNoYW5nZXMuCiAg ICAgIAogICAgICBMYXJnZSBwYXJ0cyBvZiB0aGlzIHBhdGNoIHdhcyB3cml0dGVuIGJ5IE1hcmtv IE3DpGtlbMOkLgogICAgICAKICAgICAgVGVzdCBjYXNlIGFkZGVkIHRvIGlubm9kYl9teXNxbF9s b2NrLnRlc3QuCgogICAgbW9kaWZpZWQ6CiAgICAgIG15c3FsLXRlc3Qvci9pbm5vZGJfbXlzcWxf bG9jay5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9yL2lubm9kYl9teXNxbF9zeW5jLnJlc3VsdAog ICAgICBteXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX2xvY2sudGVzdAogICAgICBteXNxbC10ZXN0 L3QvaW5ub2RiX215c3FsX3N5bmMudGVzdAogICAgICBzcWwvaGFfcGFydGl0aW9uLmNjCiAgICAg IHNxbC9oYV9wYXJ0aXRpb24uaAogICAgICBzcWwvaGFuZGxlci5oCiAgICAgIHNxbC9zcWxfdGFi bGUuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5jYwogICAgICBz dG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qv ci9pbm5vZGJfbXlzcWxfbG9jay5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvci9pbm5vZGJfbXlz cWxfbG9jay5yZXN1bHQJMjAxMS0wMy0wOSAxNTowNjoxMyArMDAwMAorKysgYi9teXNxbC10ZXN0 L3IvaW5ub2RiX215c3FsX2xvY2sucmVzdWx0CTIwMTEtMDUtMTMgMDk6MTY6MjYgKzAwMDAKQEAg LTE3MCwzICsxNzAsMjcgQEAgaWQJdmFsdWUKIDEJMTIzNDUKIENPTU1JVDsKIERST1AgVEFCTEUg dDE7CisjCisjIEJ1ZyMxMTgxNTYwMCBbRVJST1JdIElOTk9EQiBDT1VMRCBOT1QgRklORCBJTkRF WCBQUklNQVJZCisjICAgICAgICAgICAgICBLRVkgTk8gMCBGT1IgVEFCTEUgSU4gRVJST1IgTE9H IAorIworRFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7CitDUkVBVEUgVEFCTEUgdDEgKGlkIElOVCBQ UklNQVJZIEtFWSwgdmFsdWUgSU5UKSBFTkdJTkUgPSBJbm5vREI7CitJTlNFUlQgSU5UTyB0MSBW QUxVRVMgKDEsIDEyMzQ1KTsKKyMgQ29ubmVjdGlvbiBkZWZhdWx0CitTVEFSVCBUUkFOU0FDVElP TjsKK1NFTEVDVCAqIEZST00gdDE7CitpZAl2YWx1ZQorMQkxMjM0NQorIyBDb25uZWN0aW9uIGNv bjEKK1NFVCBsb2NrX3dhaXRfdGltZW91dD0xOworQUxURVIgVEFCTEUgdDEgQUREIElOREVYIGlk eCh2YWx1ZSk7CitFUlJPUiBIWTAwMDogTG9jayB3YWl0IHRpbWVvdXQgZXhjZWVkZWQ7IHRyeSBy ZXN0YXJ0aW5nIHRyYW5zYWN0aW9uCitBTFRFUiBUQUJMRSB0MSBBREQgSU5ERVggaWR4KHZhbHVl KTsKK0VSUk9SIEhZMDAwOiBMb2NrIHdhaXQgdGltZW91dCBleGNlZWRlZDsgdHJ5IHJlc3RhcnRp bmcgdHJhbnNhY3Rpb24KKyMgQ29ubmVjdGlvbiBkZWZhdWx0CitTRUxFQ1QgKiBGUk9NIHQxOwor aWQJdmFsdWUKKzEJMTIzNDUKK0NPTU1JVDsKK0RST1AgVEFCTEUgdDE7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnbXlzcWwtdGVzdC9yL2lubm9kYl9teXNxbF9zeW5jLnJlc3VsdCcKLS0tIGEvbXlzcWwt dGVzdC9yL2lubm9kYl9teXNxbF9zeW5jLnJlc3VsdAkyMDExLTA0LTA3IDA5OjQxOjIwICswMDAw CisrKyBiL215c3FsLXRlc3Qvci9pbm5vZGJfbXlzcWxfc3luYy5yZXN1bHQJMjAxMS0wNS0xMyAw OToxNjoyNiArMDAwMApAQCAtOTQsNiArOTQsNzQgQEAgU0VUIERFQlVHX1NZTkM9ICdSRVNFVCc7 CiAjIEJ1ZyM0MjIzMCBkdXJpbmcgYWRkIGluZGV4LCBjYW5ub3QgZG8gcXVlcmllcyBvbiBzdG9y YWdlIGVuZ2luZXMKICMgICAgICAgICAgIHRoYXQgaW1wbGVtZW50IGFkZF9pbmRleAogIwotIwot IyBESVNBQkxFRCBkdWUgdG8gQnVnIzExODE1NjAwCi0jCitEUk9QIERBVEFCQVNFIElGIEVYSVNU UyBkYjE7CitEUk9QIFRBQkxFIElGIEVYSVNUUyB0MTsKKyMgVGVzdCAxOiBTZWNvbmRhcnkgaW5k ZXgsIHNob3VsZCBub3QgYmxvY2sgcmVhZHMgKG9yaWdpbmFsIHRlc3QgY2FzZSkuCisjIENvbm5l Y3Rpb24gZGVmYXVsdAorQ1JFQVRFIERBVEFCQVNFIGRiMTsKK0NSRUFURSBUQUJMRSBkYjEudDEo aWQgSU5UIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZLCB2YWx1ZSBJTlQpIGVu Z2luZT1pbm5vZGI7CitJTlNFUlQgSU5UTyBkYjEudDEodmFsdWUpIFZBTFVFUyAoMSksICgyKTsK K1NFVCBERUJVR19TWU5DPSAiYWx0ZXJfdGFibGVfbWFuYWdlX2tleXMgU0lHTkFMIG1hbmFnZSBX QUlUX0ZPUiBxdWVyeSI7CisjIFNlbmRpbmc6CitBTFRFUiBUQUJMRSBkYjEudDEgQUREIElOREVY KHZhbHVlKTsKKyMgQ29ubmVjdGlvbiBjb24xCitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZP UiBtYW5hZ2UiOworVVNFIGRiMTsKK1NFTEVDVCAqIEZST00gdDE7CitpZAl2YWx1ZQorMQkxCisy CTIKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7CisjIENvbm5lY3Rpb24gZGVm YXVsdAorIyBSZWFwaW5nOiBBTFRFUiBUQUJMRSBkYjEudDEgQUREIElOREVYKHZhbHVlKQorRFJP UCBEQVRBQkFTRSBkYjE7CisjIFRlc3QgMjogUHJpbWFyeSBpbmRleCAoaW1wbGljaXQpLCBzaG91 bGQgYmxvY2sgcmVhZHMuCitDUkVBVEUgVEFCTEUgdDEoYSBJTlQgTk9UIE5VTEwsIGIgSU5UIE5P VCBOVUxMKSBlbmdpbmU9aW5ub2RiOworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5h Z2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKyMgU2VuZGluZzoKK0FMVEVS IFRBQkxFIHQxIEFERCBVTklRVUUgSU5ERVgoYSk7CisjIENvbm5lY3Rpb24gY29uMQorU0VUIERF QlVHX1NZTkM9ICJub3cgV0FJVF9GT1IgbWFuYWdlIjsKK1VTRSB0ZXN0OworIyBTZW5kaW5nOgor U0VMRUNUICogRlJPTSB0MTsKKyMgQ29ubmVjdGlvbiBjb24yCisjIFdhaXRpbmcgZm9yIFNFTEVD VCB0byBiZSBibG9ja2VkIGJ5IHRoZSBtZXRhZGF0YSBsb2NrIG9uIHQxCitTRVQgREVCVUdfU1lO Qz0gIm5vdyBTSUdOQUwgcXVlcnkiOworIyBDb25uZWN0aW9uIGRlZmF1bHQKKyMgUmVhcGluZzog QUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSBJTkRFWChhKQorIyBDb25uZWN0aW9uIGNvbjEKKyMg UmVhcGluZzogU0VMRUNUICogRlJPTSB0MQorYQliCisjIFRlc3QgMzogUHJpbWFyeSBpbmRleCAo ZXhwbGljaXQpLCBzaG91bGQgYmxvY2sgcmVhZHMuCisjIENvbm5lY3Rpb24gZGVmYXVsdAorQUxU RVIgVEFCTEUgdDEgRFJPUCBJTkRFWCBhOworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9t YW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKyMgU2VuZGluZzoKK0FM VEVSIFRBQkxFIHQxIEFERCBQUklNQVJZIEtFWSAoYSk7CisjIENvbm5lY3Rpb24gY29uMQorU0VU IERFQlVHX1NZTkM9ICJub3cgV0FJVF9GT1IgbWFuYWdlIjsKKyMgU2VuZGluZzoKK1NFTEVDVCAq IEZST00gdDE7CisjIENvbm5lY3Rpb24gY29uMgorIyBXYWl0aW5nIGZvciBTRUxFQ1QgdG8gYmUg YmxvY2tlZCBieSB0aGUgbWV0YWRhdGEgbG9jayBvbiB0MQorU0VUIERFQlVHX1NZTkM9ICJub3cg U0lHTkFMIHF1ZXJ5IjsKKyMgQ29ubmVjdGlvbiBkZWZhdWx0CisjIFJlYXBpbmc6IEFMVEVSIFRB QkxFIHQxIEFERCBQUklNQVJZIEtFWSAoYSkKKyMgQ29ubmVjdGlvbiBjb24xCisjIFJlYXBpbmc6 IFNFTEVDVCAqIEZST00gdDEKK2EJYgorIyBUZXN0IDQ6IFNlY29uZGFyeSB1bmlxdWUgaW5kZXgs IHNob3VsZCBub3QgYmxvY2sgcmVhZHMuCisjIENvbm5lY3Rpb24gZGVmYXVsdAorU0VUIERFQlVH X1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9SIHF1 ZXJ5IjsKKyMgU2VuZGluZzoKK0FMVEVSIFRBQkxFIHQxIEFERCBVTklRVUUgKGIpOworIyBDb25u ZWN0aW9uIGNvbjEKK1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFnZSI7CitTRUxF Q1QgKiBGUk9NIHQxOworYQliCitTRVQgREVCVUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOwor IyBDb25uZWN0aW9uIGRlZmF1bHQKKyMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEgQUREIFVOSVFV RSAoYikKK1NFVCBERUJVR19TWU5DPSAiUkVTRVQiOworRFJPUCBUQUJMRSB0MTsKCj09PSBtb2Rp ZmllZCBmaWxlICdteXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX2xvY2sudGVzdCcKLS0tIGEvbXlz cWwtdGVzdC90L2lubm9kYl9teXNxbF9sb2NrLnRlc3QJMjAxMS0wMy0wOSAxNTowNjoxMyArMDAw MAorKysgYi9teXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX2xvY2sudGVzdAkyMDExLTA1LTEzIDA5 OjE2OjI2ICswMDAwCkBAIC0zMTEsNiArMzExLDQ0IEBAIERST1AgVEFCTEUgdDE7CiBkaXNjb25u ZWN0IGNvbjE7CiAKIAorLS1lY2hvICMKKy0tZWNobyAjIEJ1ZyMxMTgxNTYwMCBbRVJST1JdIElO Tk9EQiBDT1VMRCBOT1QgRklORCBJTkRFWCBQUklNQVJZCistLWVjaG8gIyAgICAgICAgICAgICAg S0VZIE5PIDAgRk9SIFRBQkxFIElOIEVSUk9SIExPRyAKKy0tZWNobyAjCisKKy0tZGlzYWJsZV93 YXJuaW5ncworRFJPUCBUQUJMRSBJRiBFWElTVFMgdDE7CistLWVuYWJsZV93YXJuaW5ncworCitD UkVBVEUgVEFCTEUgdDEgKGlkIElOVCBQUklNQVJZIEtFWSwgdmFsdWUgSU5UKSBFTkdJTkUgPSBJ bm5vREI7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDEsIDEyMzQ1KTsKKworLS1jb25uZWN0IChj b24xLGxvY2FsaG9zdCxyb290KQorCistLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKK2Nvbm5l Y3Rpb24gZGVmYXVsdDsKK1NUQVJUIFRSQU5TQUNUSU9OOworU0VMRUNUICogRlJPTSB0MTsKKwor LS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCistLWNvbm5lY3Rpb24gY29uMQorU0VUIGxvY2tfd2Fp dF90aW1lb3V0PTE7CisjIFRlc3Qgd2l0aCB0d28gdGltZW91dHMsIGFzIHRoZSBmaXJzdCB2ZXJz aW9uIG9mIHRoaXMgcGF0Y2gKKyMgb25seSB3b3JrZWQgd2l0aCBvbmUgdGltZW91dC4KKy0tZXJy b3IgRVJfTE9DS19XQUlUX1RJTUVPVVQKK0FMVEVSIFRBQkxFIHQxIEFERCBJTkRFWCBpZHgodmFs dWUpOworLS1lcnJvciBFUl9MT0NLX1dBSVRfVElNRU9VVAorQUxURVIgVEFCTEUgdDEgQUREIElO REVYIGlkeCh2YWx1ZSk7CisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorLS1jb25uZWN0 aW9uIGRlZmF1bHQKK1NFTEVDVCAqIEZST00gdDE7CitDT01NSVQ7CisKK0RST1AgVEFCTEUgdDE7 CitkaXNjb25uZWN0IGNvbjE7CisKKwogIyBDaGVjayB0aGF0IGFsbCBjb25uZWN0aW9ucyBvcGVu ZWQgYnkgdGVzdCBjYXNlcyBpbiB0aGlzIGZpbGUgYXJlIHJlYWxseQogIyBnb25lIHNvIGV4ZWN1 dGlvbiBvZiBvdGhlciB0ZXN0cyB3b24ndCBiZSBhZmZlY3RlZCBieSB0aGVpciBwcmVzZW5jZS4K IC0tc291cmNlIGluY2x1ZGUvd2FpdF91bnRpbF9jb3VudF9zZXNzaW9ucy5pbmMKCj09PSBtb2Rp ZmllZCBmaWxlICdteXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX3N5bmMudGVzdCcKLS0tIGEvbXlz cWwtdGVzdC90L2lubm9kYl9teXNxbF9zeW5jLnRlc3QJMjAxMS0wMy0yMiAxMzozNDowNCArMDAw MAorKysgYi9teXNxbC10ZXN0L3QvaW5ub2RiX215c3FsX3N5bmMudGVzdAkyMDExLTA1LTEzIDA5 OjE2OjI2ICswMDAwCkBAIC0xNTIsMTMzICsxNTIsMTI5IEBAIGRpc2Nvbm5lY3QgY29uMTsKIC0t ZWNobyAjICAgICAgICAgICB0aGF0IGltcGxlbWVudCBhZGRfaW5kZXgKIC0tZWNobyAjCiAKLS0t ZWNobyAjCi0tLWVjaG8gIyBESVNBQkxFRCBkdWUgdG8gQnVnIzExODE1NjAwCi0tLWVjaG8gIwor LS1kaXNhYmxlX3dhcm5pbmdzCitEUk9QIERBVEFCQVNFIElGIEVYSVNUUyBkYjE7CitEUk9QIFRB QkxFIElGIEVYSVNUUyB0MTsKKy0tZW5hYmxlX3dhcm5pbmdzCisKK2Nvbm5lY3QoY29uMSxsb2Nh bGhvc3Qscm9vdCk7Citjb25uZWN0KGNvbjIsbG9jYWxob3N0LHJvb3QpOworCistLWVjaG8gIyBU ZXN0IDE6IFNlY29uZGFyeSBpbmRleCwgc2hvdWxkIG5vdCBibG9jayByZWFkcyAob3JpZ2luYWwg dGVzdCBjYXNlKS4KKworLS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Citjb25uZWN0aW9uIGRl ZmF1bHQ7CitDUkVBVEUgREFUQUJBU0UgZGIxOworQ1JFQVRFIFRBQkxFIGRiMS50MShpZCBJTlQg Tk9UIE5VTEwgQVVUT19JTkNSRU1FTlQgUFJJTUFSWSBLRVksIHZhbHVlIElOVCkgZW5naW5lPWlu bm9kYjsKK0lOU0VSVCBJTlRPIGRiMS50MSh2YWx1ZSkgVkFMVUVTICgxKSwgKDIpOworU0VUIERF QlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9S IHF1ZXJ5IjsKKy0tZWNobyAjIFNlbmRpbmc6CistLXNlbmQgQUxURVIgVEFCTEUgZGIxLnQxIEFE RCBJTkRFWCh2YWx1ZSkKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCitjb25uZWN0aW9uIGNv bjE7CitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworIyBOZWl0aGVyIG9m IHRoZXNlIHR3byBzdGF0ZW1lbnRzIHNob3VsZCBiZSBibG9ja2VkCitVU0UgZGIxOworU0VMRUNU ICogRlJPTSB0MTsKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7CisKKy0tZWNo byAjIENvbm5lY3Rpb24gZGVmYXVsdAorY29ubmVjdGlvbiBkZWZhdWx0OworLS1lY2hvICMgUmVh cGluZzogQUxURVIgVEFCTEUgZGIxLnQxIEFERCBJTkRFWCh2YWx1ZSkKKy0tcmVhcAorRFJPUCBE QVRBQkFTRSBkYjE7CisKKy0tZWNobyAjIFRlc3QgMjogUHJpbWFyeSBpbmRleCAoaW1wbGljaXQp LCBzaG91bGQgYmxvY2sgcmVhZHMuCisKK0NSRUFURSBUQUJMRSB0MShhIElOVCBOT1QgTlVMTCwg YiBJTlQgTk9UIE5VTEwpIGVuZ2luZT1pbm5vZGI7CitTRVQgREVCVUdfU1lOQz0gImFsdGVyX3Rh YmxlX21hbmFnZV9rZXlzIFNJR05BTCBtYW5hZ2UgV0FJVF9GT1IgcXVlcnkiOworLS1lY2hvICMg U2VuZGluZzoKKy0tc2VuZCBBTFRFUiBUQUJMRSB0MSBBREQgVU5JUVVFIElOREVYKGEpCisKKy0t ZWNobyAjIENvbm5lY3Rpb24gY29uMQorY29ubmVjdGlvbiBjb24xOworU0VUIERFQlVHX1NZTkM9 ICJub3cgV0FJVF9GT1IgbWFuYWdlIjsKK1VTRSB0ZXN0OworLS1lY2hvICMgU2VuZGluZzoKKy0t c2VuZCBTRUxFQ1QgKiBGUk9NIHQxCisKKy0tZWNobyAjIENvbm5lY3Rpb24gY29uMgorY29ubmVj dGlvbiBjb24yOworLS1lY2hvICMgV2FpdGluZyBmb3IgU0VMRUNUIHRvIGJlIGJsb2NrZWQgYnkg dGhlIG1ldGFkYXRhIGxvY2sgb24gdDEKK2xldCAkd2FpdF9jb25kaXRpb249IFNFTEVDVCBDT1VO VCgqKT0gMSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wcm9jZXNzbGlzdAorICBXSEVSRSBzdGF0 ZT0gJ1dhaXRpbmcgZm9yIHRhYmxlIG1ldGFkYXRhIGxvY2snCisgIEFORCBpbmZvPSdTRUxFQ1Qg KiBGUk9NIHQxJzsKKy0tc291cmNlIGluY2x1ZGUvd2FpdF9jb25kaXRpb24uaW5jCitTRVQgREVC VUdfU1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOworCistLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1 bHQKK2Nvbm5lY3Rpb24gZGVmYXVsdDsKKy0tZWNobyAjIFJlYXBpbmc6IEFMVEVSIFRBQkxFIHQx IEFERCBVTklRVUUgSU5ERVgoYSkKKy0tcmVhcAorCistLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEK K2Nvbm5lY3Rpb24gY29uMTsKKy0tZWNobyAjIFJlYXBpbmc6IFNFTEVDVCAqIEZST00gdDEKKy0t cmVhcAorCistLWVjaG8gIyBUZXN0IDM6IFByaW1hcnkgaW5kZXggKGV4cGxpY2l0KSwgc2hvdWxk IGJsb2NrIHJlYWRzLgorCistLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKK2Nvbm5lY3Rpb24g ZGVmYXVsdDsKK0FMVEVSIFRBQkxFIHQxIERST1AgSU5ERVggYTsKK1NFVCBERUJVR19TWU5DPSAi YWx0ZXJfdGFibGVfbWFuYWdlX2tleXMgU0lHTkFMIG1hbmFnZSBXQUlUX0ZPUiBxdWVyeSI7Cist LWVjaG8gIyBTZW5kaW5nOgorLS1zZW5kIEFMVEVSIFRBQkxFIHQxIEFERCBQUklNQVJZIEtFWSAo YSkKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCitjb25uZWN0aW9uIGNvbjE7CitTRVQgREVC VUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworLS1lY2hvICMgU2VuZGluZzoKKy0tc2Vu ZCBTRUxFQ1QgKiBGUk9NIHQxCisKKy0tZWNobyAjIENvbm5lY3Rpb24gY29uMgorY29ubmVjdGlv biBjb24yOworLS1lY2hvICMgV2FpdGluZyBmb3IgU0VMRUNUIHRvIGJlIGJsb2NrZWQgYnkgdGhl IG1ldGFkYXRhIGxvY2sgb24gdDEKK2xldCAkd2FpdF9jb25kaXRpb249IFNFTEVDVCBDT1VOVCgq KT0gMSBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS5wcm9jZXNzbGlzdAorICBXSEVSRSBzdGF0ZT0g J1dhaXRpbmcgZm9yIHRhYmxlIG1ldGFkYXRhIGxvY2snCisgIEFORCBpbmZvPSdTRUxFQ1QgKiBG Uk9NIHQxJzsKKy0tc291cmNlIGluY2x1ZGUvd2FpdF9jb25kaXRpb24uaW5jCitTRVQgREVCVUdf U1lOQz0gIm5vdyBTSUdOQUwgcXVlcnkiOworCistLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQK K2Nvbm5lY3Rpb24gZGVmYXVsdDsKKy0tZWNobyAjIFJlYXBpbmc6IEFMVEVSIFRBQkxFIHQxIEFE RCBQUklNQVJZIEtFWSAoYSkKKy0tcmVhcAorCistLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEKK2Nv bm5lY3Rpb24gY29uMTsKKy0tZWNobyAjIFJlYXBpbmc6IFNFTEVDVCAqIEZST00gdDEKKy0tcmVh cAorCistLWVjaG8gIyBUZXN0IDQ6IFNlY29uZGFyeSB1bmlxdWUgaW5kZXgsIHNob3VsZCBub3Qg YmxvY2sgcmVhZHMuCisKKy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorY29ubmVjdGlvbiBk ZWZhdWx0OworU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwg bWFuYWdlIFdBSVRfRk9SIHF1ZXJ5IjsKKy0tZWNobyAjIFNlbmRpbmc6CistLXNlbmQgQUxURVIg VEFCTEUgdDEgQUREIFVOSVFVRSAoYikKKworLS1lY2hvICMgQ29ubmVjdGlvbiBjb24xCitjb25u ZWN0aW9uIGNvbjE7CitTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOworU0VM RUNUICogRlJPTSB0MTsKK1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7CisKKy0t ZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAorY29ubmVjdGlvbiBkZWZhdWx0OworLS1lY2hvICMg UmVhcGluZzogQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAoYikKKy0tcmVhcAogCi0jLS1kaXNh YmxlX3dhcm5pbmdzCi0jRFJPUCBEQVRBQkFTRSBJRiBFWElTVFMgZGIxOwotI0RST1AgVEFCTEUg SUYgRVhJU1RTIHQxOwotIy0tZW5hYmxlX3dhcm5pbmdzCi0jCi0jY29ubmVjdChjb24xLGxvY2Fs aG9zdCxyb290KTsKLSNjb25uZWN0KGNvbjIsbG9jYWxob3N0LHJvb3QpOwotIwotIy0tZWNobyAj IFRlc3QgMTogU2Vjb25kYXJ5IGluZGV4LCBzaG91bGQgbm90IGJsb2NrIHJlYWRzIChvcmlnaW5h bCB0ZXN0IGNhc2UpLgotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gZGVmYXVsdAotI2Nvbm5lY3Rp b24gZGVmYXVsdDsKLSNDUkVBVEUgREFUQUJBU0UgZGIxOwotI0NSRUFURSBUQUJMRSBkYjEudDEo aWQgSU5UIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZLCB2YWx1ZSBJTlQpIGVu Z2luZT1pbm5vZGI7Ci0jSU5TRVJUIElOVE8gZGIxLnQxKHZhbHVlKSBWQUxVRVMgKDEpLCAoMik7 Ci0jU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdl IFdBSVRfRk9SIHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBBTFRFUiBUQUJM RSBkYjEudDEgQUREIElOREVYKHZhbHVlKQotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQot I2Nvbm5lY3Rpb24gY29uMTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2Ui OwotIyAjIE5laXRoZXIgb2YgdGhlc2UgdHdvIHN0YXRlbWVudHMgc2hvdWxkIGJlIGJsb2NrZWQK LSNVU0UgZGIxOwotI1NFTEVDVCAqIEZST00gdDE7Ci0jU0VUIERFQlVHX1NZTkM9ICJub3cgU0lH TkFMIHF1ZXJ5IjsKLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNjb25uZWN0aW9u IGRlZmF1bHQ7Ci0jLS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgZGIxLnQxIEFERCBJTkRF WCh2YWx1ZSkKLSMtLXJlYXAKLSNEUk9QIERBVEFCQVNFIGRiMTsKLSMKLSMtLWVjaG8gIyBUZXN0 IDI6IFByaW1hcnkgaW5kZXggKGltcGxpY2l0KSwgc2hvdWxkIGJsb2NrIHJlYWRzLgotIwotI0NS RUFURSBUQUJMRSB0MShhIElOVCBOT1QgTlVMTCwgYiBJTlQgTk9UIE5VTEwpIGVuZ2luZT1pbm5v ZGI7Ci0jU0VUIERFQlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFu YWdlIFdBSVRfRk9SIHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBBTFRFUiBU QUJMRSB0MSBBREQgVU5JUVVFIElOREVYKGEpCi0jCi0jLS1lY2hvICMgQ29ubmVjdGlvbiBjb24x Ci0jY29ubmVjdGlvbiBjb24xOwotI1NFVCBERUJVR19TWU5DPSAibm93IFdBSVRfRk9SIG1hbmFn ZSI7Ci0jVVNFIHRlc3Q7Ci0jLS1lY2hvICMgU2VuZGluZzoKLSMtLXNlbmQgU0VMRUNUICogRlJP TSB0MQotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMgotI2Nvbm5lY3Rpb24gY29uMjsKLSMt LWVjaG8gIyBXYWl0aW5nIGZvciBTRUxFQ1QgdG8gYmUgYmxvY2tlZCBieSB0aGUgbWV0YWRhdGEg bG9jayBvbiB0MQotI2xldCAkd2FpdF9jb25kaXRpb249IFNFTEVDVCBDT1VOVCgqKT0gMSBGUk9N IGluZm9ybWF0aW9uX3NjaGVtYS5wcm9jZXNzbGlzdAotIyAgV0hFUkUgc3RhdGU9ICdXYWl0aW5n IGZvciB0YWJsZSBtZXRhZGF0YSBsb2NrJwotIyAgQU5EIGluZm89J1NFTEVDVCAqIEZST00gdDEn OwotIy0tc291cmNlIGluY2x1ZGUvd2FpdF9jb25kaXRpb24uaW5jCi0jU0VUIERFQlVHX1NZTkM9 ICJub3cgU0lHTkFMIHF1ZXJ5IjsKLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNj b25uZWN0aW9uIGRlZmF1bHQ7Ci0jLS1lY2hvICMgUmVhcGluZzogQUxURVIgVEFCTEUgdDEgQURE IFVOSVFVRSBJTkRFWChhKQotIy0tcmVhcAotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQot I2Nvbm5lY3Rpb24gY29uMTsKLSMtLWVjaG8gIyBSZWFwaW5nOiBTRUxFQ1QgKiBGUk9NIHQxCi0j LS1yZWFwCi0jCi0jLS1lY2hvICMgVGVzdCAzOiBQcmltYXJ5IGluZGV4IChleHBsaWNpdCksIHNo b3VsZCBibG9jayByZWFkcy4KLSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNjb25u ZWN0aW9uIGRlZmF1bHQ7Ci0jQUxURVIgVEFCTEUgdDEgRFJPUCBJTkRFWCBhOwotI1NFVCBERUJV R19TWU5DPSAiYWx0ZXJfdGFibGVfbWFuYWdlX2tleXMgU0lHTkFMIG1hbmFnZSBXQUlUX0ZPUiBx dWVyeSI7Ci0jLS1lY2hvICMgU2VuZGluZzoKLSMtLXNlbmQgQUxURVIgVEFCTEUgdDEgQUREIFBS SU1BUlkgS0VZIChhKQotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQotI2Nvbm5lY3Rpb24g Y29uMTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOwotIy0tZWNobyAj IFNlbmRpbmc6Ci0jLS1zZW5kIFNFTEVDVCAqIEZST00gdDEKLSMKLSMtLWVjaG8gIyBDb25uZWN0 aW9uIGNvbjIKLSNjb25uZWN0aW9uIGNvbjI7Ci0jLS1lY2hvICMgV2FpdGluZyBmb3IgU0VMRUNU IHRvIGJlIGJsb2NrZWQgYnkgdGhlIG1ldGFkYXRhIGxvY2sgb24gdDEKLSNsZXQgJHdhaXRfY29u ZGl0aW9uPSBTRUxFQ1QgQ09VTlQoKik9IDEgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEucHJvY2Vz c2xpc3QKLSMgIFdIRVJFIHN0YXRlPSAnV2FpdGluZyBmb3IgdGFibGUgbWV0YWRhdGEgbG9jaycK LSMgIEFORCBpbmZvPSdTRUxFQ1QgKiBGUk9NIHQxJzsKLSMtLXNvdXJjZSBpbmNsdWRlL3dhaXRf Y29uZGl0aW9uLmluYwotI1NFVCBERUJVR19TWU5DPSAibm93IFNJR05BTCBxdWVyeSI7Ci0jCi0j LS1lY2hvICMgQ29ubmVjdGlvbiBkZWZhdWx0Ci0jY29ubmVjdGlvbiBkZWZhdWx0OwotIy0tZWNo byAjIFJlYXBpbmc6IEFMVEVSIFRBQkxFIHQxIEFERCBQUklNQVJZIEtFWSAoYSkKLSMtLXJlYXAK LSMKLSMtLWVjaG8gIyBDb25uZWN0aW9uIGNvbjEKLSNjb25uZWN0aW9uIGNvbjE7Ci0jLS1lY2hv ICMgUmVhcGluZzogU0VMRUNUICogRlJPTSB0MQotIy0tcmVhcAotIwotIy0tZWNobyAjIFRlc3Qg NDogU2Vjb25kYXJ5IHVuaXF1ZSBpbmRleCwgc2hvdWxkIG5vdCBibG9jayByZWFkcy4KLSMKLSMt LWVjaG8gIyBDb25uZWN0aW9uIGRlZmF1bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7Ci0jU0VUIERF QlVHX1NZTkM9ICJhbHRlcl90YWJsZV9tYW5hZ2Vfa2V5cyBTSUdOQUwgbWFuYWdlIFdBSVRfRk9S IHF1ZXJ5IjsKLSMtLWVjaG8gIyBTZW5kaW5nOgotIy0tc2VuZCBBTFRFUiBUQUJMRSB0MSBBREQg VU5JUVVFIChiKQotIwotIy0tZWNobyAjIENvbm5lY3Rpb24gY29uMQotI2Nvbm5lY3Rpb24gY29u MTsKLSNTRVQgREVCVUdfU1lOQz0gIm5vdyBXQUlUX0ZPUiBtYW5hZ2UiOwotI1NFTEVDVCAqIEZS T00gdDE7Ci0jU0VUIERFQlVHX1NZTkM9ICJub3cgU0lHTkFMIHF1ZXJ5IjsKLSMKLSMtLWVjaG8g IyBDb25uZWN0aW9uIGRlZmF1bHQKLSNjb25uZWN0aW9uIGRlZmF1bHQ7Ci0jLS1lY2hvICMgUmVh cGluZzogQUxURVIgVEFCTEUgdDEgQUREIFVOSVFVRSAoYikKLSMtLXJlYXAKLSMKLSNkaXNjb25u ZWN0IGNvbjE7Ci0jZGlzY29ubmVjdCBjb24yOwotI1NFVCBERUJVR19TWU5DPSAiUkVTRVQiOwot I0RST1AgVEFCTEUgdDE7CitkaXNjb25uZWN0IGNvbjE7CitkaXNjb25uZWN0IGNvbjI7CitTRVQg REVCVUdfU1lOQz0gIlJFU0VUIjsKK0RST1AgVEFCTEUgdDE7CiAKIAogIyBDaGVjayB0aGF0IGFs bCBjb25uZWN0aW9ucyBvcGVuZWQgYnkgdGVzdCBjYXNlcyBpbiB0aGlzIGZpbGUgYXJlIHJlYWxs eQoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9oYV9wYXJ0aXRpb24uY2MnCi0tLSBhL3NxbC9oYV9w YXJ0aXRpb24uY2MJMjAxMS0wNS0xMCAxMzoyNDozNCArMDAwMAorKysgYi9zcWwvaGFfcGFydGl0 aW9uLmNjCTIwMTEtMDUtMTMgMDk6MTY6MjYgKzAwMDAKQEAgLTY2NTQsMjAgKzY2NTQsMjYgQEAg Ym9vbCBoYV9wYXJ0aXRpb246OmNoZWNrX2lmX2luY29tcGF0aWJsZQogLyoqCiAgIFN1cHBvcnQg b2YgZmFzdCBvciBvbmxpbmUgYWRkL2Ryb3AgaW5kZXgKICovCi1pbnQgaGFfcGFydGl0aW9uOjph ZGRfaW5kZXgoVEFCTEUgKnRhYmxlX2FyZywgS0VZICprZXlfaW5mbywgdWludCBudW1fb2Zfa2V5 cykKK2ludCBoYV9wYXJ0aXRpb246OmFkZF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtl eV9pbmZvLCB1aW50IG51bV9vZl9rZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhh bmRsZXJfYWRkX2luZGV4ICoqYWRkKQogewogICBoYW5kbGVyICoqZmlsZTsKICAgaW50IHJldD0g MDsKIAogICBEQlVHX0VOVEVSKCJoYV9wYXJ0aXRpb246OmFkZF9pbmRleCIpOworICAqYWRkPSBu ZXcgaGFuZGxlcl9hZGRfaW5kZXgodGFibGUsIGtleV9pbmZvLCBudW1fb2Zfa2V5cyk7CiAgIC8q CiAgICAgVGhlcmUgaGFzIGFscmVhZHkgYmVlbiBhIGNoZWNrIGluIGZpeF9wYXJ0aXRpb25fZnVu YyBpbiBteXNxbF9hbHRlcl90YWJsZQogICAgIGJlZm9yZSB0aGlzIGNhbGwsIHdoaWNoIGNoZWNr cyBmb3IgdW5pcXVlL3ByaW1hcnkga2V5IHZpb2xhdGlvbnMgb2YgdGhlCiAgICAgcGFydGl0aW9u aW5nIGZ1bmN0aW9uLiBTbyBubyBuZWVkIGZvciBleHRyYSBjaGVjayBoZXJlLgogICAqLwogICBm b3IgKGZpbGU9IG1fZmlsZTsgKmZpbGU7IGZpbGUrKykKLSAgICBpZiAoKHJldD0gICgqZmlsZSkt PmFkZF9pbmRleCh0YWJsZV9hcmcsIGtleV9pbmZvLCBudW1fb2Zfa2V5cykpKQorICB7CisgICAg aGFuZGxlcl9hZGRfaW5kZXggKmFkZF9pbmRleDsKKyAgICBpZiAoKHJldD0gICgqZmlsZSktPmFk ZF9pbmRleCh0YWJsZV9hcmcsIGtleV9pbmZvLCBudW1fb2Zfa2V5cywgJmFkZF9pbmRleCkpKQog ICAgICAgZ290byBlcnI7CisgICAgKCpmaWxlKS0+ZmluYWxfYWRkX2luZGV4KGFkZF9pbmRleCwg dHJ1ZSk7CisgIH0KICAgREJVR19SRVRVUk4ocmV0KTsKIGVycjoKICAgaWYgKGZpbGUgPiBtX2Zp bGUpCkBAIC02NjkyLDYgKzY2OTgsMzQgQEAgZXJyOgogfQogCiAKK2ludCBoYV9wYXJ0aXRpb246 OmZpbmFsX2FkZF9pbmRleChoYW5kbGVyX2FkZF9pbmRleCAqYWRkLCBib29sIGNvbW1pdCkKK3sK KyAgREJVR19FTlRFUigiaGFfcGFydGl0aW9uOjpmaW5hbF9hZGRfaW5kZXgiKTsKKyAgLy8gUm9s bGJhY2sgYnkgZHJvcHBpbmcgaW5kZXhlcy4KKyAgaWYgKCFjb21taXQpCisgIHsKKyAgICBUQUJM RSAqdGFibGVfYXJnPSBhZGQtPnRhYmxlOworICAgIHVpbnQgbnVtX29mX2tleXM9IGFkZC0+bnVt X29mX2tleXM7CisgICAgaGFuZGxlciAqKmZpbGU7CisgICAgdWludCAqa2V5X251bWJlcnM9ICh1 aW50KikgaGFfdGhkKCktPmFsbG9jKHNpemVvZih1aW50KSAqIG51bV9vZl9rZXlzKTsKKyAgICB1 aW50IG9sZF9udW1fb2Zfa2V5cz0gdGFibGVfYXJnLT5zLT5rZXlzOworICAgIHVpbnQgaTsKKyAg ICAvKiBUaGUgbmV3bHkgY3JlYXRlZCBrZXlzIGhhdmUgdGhlIGxhc3QgaWQncyAqLworICAgIGZv ciAoaT0gMDsgaSA8IG51bV9vZl9rZXlzOyBpKyspCisgICAgICBrZXlfbnVtYmVyc1tpXT0gaSAr IG9sZF9udW1fb2Zfa2V5czsKKyAgICBpZiAoIXRhYmxlX2FyZy0+a2V5X2luZm8pCisgICAgICB0 YWJsZV9hcmctPmtleV9pbmZvPSBhZGQtPmtleV9pbmZvOworICAgIGZvciAoZmlsZT0gbV9maWxl OyAqZmlsZTsgZmlsZSsrKQorICAgIHsKKyAgICAgICh2b2lkKSAoKmZpbGUpLT5wcmVwYXJlX2Ry b3BfaW5kZXgodGFibGVfYXJnLCBrZXlfbnVtYmVycywgbnVtX29mX2tleXMpOworICAgICAgKHZv aWQpICgqZmlsZSktPmZpbmFsX2Ryb3BfaW5kZXgodGFibGVfYXJnKTsKKyAgICB9CisgICAgaWYg KHRhYmxlX2FyZy0+a2V5X2luZm8gPT0gYWRkLT5rZXlfaW5mbykKKyAgICAgIHRhYmxlX2FyZy0+ a2V5X2luZm89IE5VTEw7CisgIH0KKyAgREJVR19SRVRVUk4oMCk7Cit9CisKIGludCBoYV9wYXJ0 aXRpb246OnByZXBhcmVfZHJvcF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCB1aW50ICprZXlfbnVt LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBudW1fb2Zfa2V5cykKIHsK Cj09PSBtb2RpZmllZCBmaWxlICdzcWwvaGFfcGFydGl0aW9uLmgnCi0tLSBhL3NxbC9oYV9wYXJ0 aXRpb24uaAkyMDExLTA0LTIwIDE3OjUzOjA4ICswMDAwCisrKyBiL3NxbC9oYV9wYXJ0aXRpb24u aAkyMDExLTA1LTEzIDA5OjE2OjI2ICswMDAwCkBAIC0xMDU1LDcgKzEwNTUsOSBAQCBwdWJsaWM6 CiAgICAgVGhleSBhcmUgdXNlZCBmb3Igb24tbGluZS9mYXN0IGFsdGVyIHRhYmxlIGFkZC9kcm9w IGluZGV4OgogICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgKi8KLSAgdmlydHVhbCBpbnQgYWRkX2lu ZGV4KFRBQkxFICp0YWJsZV9hcmcsIEtFWSAqa2V5X2luZm8sIHVpbnQgbnVtX29mX2tleXMpOwor ICB2aXJ0dWFsIGludCBhZGRfaW5kZXgoVEFCTEUgKnRhYmxlX2FyZywgS0VZICprZXlfaW5mbywg dWludCBudW1fb2Zfa2V5cywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfYWRkX2lu ZGV4ICoqYWRkKTsKKyAgdmlydHVhbCBpbnQgZmluYWxfYWRkX2luZGV4KGhhbmRsZXJfYWRkX2lu ZGV4ICphZGQsIGJvb2wgY29tbWl0KTsKICAgdmlydHVhbCBpbnQgcHJlcGFyZV9kcm9wX2luZGV4 KFRBQkxFICp0YWJsZV9hcmcsIHVpbnQgKmtleV9udW0sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50IG51bV9vZl9rZXlzKTsKICAgdmlydHVhbCBpbnQgZmluYWxfZHJvcF9p bmRleChUQUJMRSAqdGFibGVfYXJnKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvaGFuZGxlci5o JwotLS0gYS9zcWwvaGFuZGxlci5oCTIwMTEtMDUtMDUgMjM6NTA6MzEgKzAwMDAKKysrIGIvc3Fs L2hhbmRsZXIuaAkyMDExLTA1LTEzIDA5OjE2OjI2ICswMDAwCkBAIC0xMTU5LDYgKzExNTksMjcg QEAgdWludCBjYWxjdWxhdGVfa2V5X2xlbihUQUJMRSAqLCB1aW50LCBjbwogKi8KICNkZWZpbmUg bWFrZV9wcmV2X2tleXBhcnRfbWFwKE4pICgoKGtleV9wYXJ0X21hcCkxIDw8IChOKSkgLSAxKQog CisKKy8qKgorICBJbmRleCBjcmVhdGlvbiBjb250ZXh0LgorICBDcmVhdGVkIGJ5IGhhbmRsZXI6 OmFkZF9pbmRleCgpIGFuZCBmcmVlZCBieSBoYW5kbGVyOjpmaW5hbF9hZGRfaW5kZXgoKS4KKyov CisKK2NsYXNzIGhhbmRsZXJfYWRkX2luZGV4Cit7CitwdWJsaWM6CisgIC8qIFRhYmxlIHdoZXJl IHRoZSBpbmRleGVzIGFyZSBhZGRlZCAqLworICBUQUJMRSogY29uc3QgdGFibGU7CisgIC8qIElu ZGV4ZXMgYmVpbmcgY3JlYXRlZCAqLworICBLRVkqIGNvbnN0IGtleV9pbmZvOworICAvKiBTaXpl IG9mIGtleV9pbmZvW10gKi8KKyAgY29uc3QgdWludCBudW1fb2Zfa2V5czsKKyAgaGFuZGxlcl9h ZGRfaW5kZXgoVEFCTEUgKnRhYmxlX2FyZywgS0VZICprZXlfaW5mb19hcmcsIHVpbnQgbnVtX29m X2tleXNfYXJnKQorICAgIDogdGFibGUgKHRhYmxlX2FyZyksIGtleV9pbmZvIChrZXlfaW5mb19h cmcpLCBudW1fb2Zfa2V5cyAobnVtX29mX2tleXNfYXJnKQorICB7fQorICB2aXJ0dWFsIH5oYW5k bGVyX2FkZF9pbmRleCgpIHt9Cit9OworCiAvKioKICAgVGhlIGhhbmRsZXIgY2xhc3MgaXMgdGhl IGludGVyZmFjZSBmb3IgZHluYW1pY2FsbHkgbG9hZGFibGUKICAgc3RvcmFnZSBlbmdpbmVzLiBE byBub3QgYWRkIGlmZGVmcyBhbmQgdGFrZSBjYXJlIHdoZW4gYWRkaW5nIG9yCkBAIC0xNzE3LDgg KzE3MzgsMzYgQEAgcHVibGljOgogCiAgIHZpcnR1YWwgdWxvbmcgaW5kZXhfZmxhZ3ModWludCBp ZHgsIHVpbnQgcGFydCwgYm9vbCBhbGxfcGFydHMpIGNvbnN0ID0wOwogCi0gIHZpcnR1YWwgaW50 IGFkZF9pbmRleChUQUJMRSAqdGFibGVfYXJnLCBLRVkgKmtleV9pbmZvLCB1aW50IG51bV9vZl9r ZXlzKQorLyoqCisgICBGaXJzdCBwaGFzZSBvZiBpbi1wbGFjZSBhZGQgaW5kZXguCisgICBIYW5k bGVycyBhcmUgc3VwcG9zZWQgdG8gY3JlYXRlIG5ldyBpbmRleGVzIGhlcmUgYnV0IG5vdCBtYWtl IHRoZW0KKyAgIHZpc2libGUuCisKKyAgIEBwYXJhbSB0YWJsZV9hcmcgICBUYWJsZSB0byBhZGQg aW5kZXggdG8KKyAgIEBwYXJhbSBrZXlfaW5mbyAgICBJbmZvcm1hdGlvbiBhYm91dCBuZXcgaW5k ZXhlcworICAgQHBhcmFtIG51bV9vZl9rZXkgIE51bWJlciBvZiBuZXcgaW5kZXhlcworICAgQHBh cmFtIGFkZFtvdXRdICAgIENvbnRleHQgb2YgaGFuZGxlciBzcGVjaWZpYyBpbmZvcm1hdGlvbiBu ZWVkZWQKKyAgICAgICAgICAgICAgICAgICAgICBmb3IgZmluYWxfYWRkX2luZGV4KCkuCisKKyAg IEBub3RlIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB3aXRoIGxlc3MgdGhhbiBleGNsdXNp dmUgbWV0YWRhdGEKKyAgIGxvY2sgZGVwZW5kaW5nIG9uIHdoaWNoIGZsYWdzIGFyZSBsaXN0ZWQg aW4gYWx0ZXJfdGFibGVfZmxhZ3MuCisqLworICB2aXJ0dWFsIGludCBhZGRfaW5kZXgoVEFCTEUg KnRhYmxlX2FyZywgS0VZICprZXlfaW5mbywgdWludCBudW1fb2Zfa2V5cywKKyAgICAgICAgICAg ICAgICAgICAgICAgIGhhbmRsZXJfYWRkX2luZGV4ICoqYWRkKQorICB7IHJldHVybiAoSEFfRVJS X1dST05HX0NPTU1BTkQpOyB9CisKKy8qKgorICAgU2Vjb25kIGFuZCBsYXN0IHBoYXNlIG9mIGlu LXBsYWNlIGFkZCBpbmRleC4KKyAgIENvbW1pdCBvciByb2xsYmFjayBwZW5kaW5nIG5ldyBpbmRl eGVzLgorCisgICBAcGFyYW0gYWRkICAgICBDb250ZXh0IG9mIGhhbmRsZXIgc3BlY2lmaWMgaW5m b3JtYXRpb24gZnJvbSBhZGRfaW5kZXgoKS4KKyAgIEBwYXJhbSBjb21taXQgIElmIHRydWUsIGNv bW1pdC4gSWYgZmFsc2UsIHJvbGxiYWNrIGluZGV4IGNoYW5nZXMuCisKKyAgIEBub3RlIFRoaXMg ZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggZXhjbHVzaXZlIG1ldGFkYXRhIGxvY2suCisqLworICB2 aXJ0dWFsIGludCBmaW5hbF9hZGRfaW5kZXgoaGFuZGxlcl9hZGRfaW5kZXggKmFkZCwgYm9vbCBj b21taXQpCiAgIHsgcmV0dXJuIChIQV9FUlJfV1JPTkdfQ09NTUFORCk7IH0KKwogICB2aXJ0dWFs IGludCBwcmVwYXJlX2Ryb3BfaW5kZXgoVEFCTEUgKnRhYmxlX2FyZywgdWludCAqa2V5X251bSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgbnVtX29mX2tleXMpCiAgIHsg cmV0dXJuIChIQV9FUlJfV1JPTkdfQ09NTUFORCk7IH0KCj09PSBtb2RpZmllZCBmaWxlICdzcWwv c3FsX3RhYmxlLmNjJwotLS0gYS9zcWwvc3FsX3RhYmxlLmNjCTIwMTEtMDUtMDYgMDg6Mjc6MDQg KzAwMDAKKysrIGIvc3FsL3NxbF90YWJsZS5jYwkyMDExLTA1LTEzIDA5OjE2OjI2ICswMDAwCkBA IC01Njc4LDYgKzU2NzgsOCBAQCBib29sIG15c3FsX2FsdGVyX3RhYmxlKFRIRCAqdGhkLGNoYXIg Km5lCiAgIHVpbnQgaW5kZXhfZHJvcF9jb3VudD0gMDsKICAgdWludCAqaW5kZXhfZHJvcF9idWZm ZXI9IE5VTEw7CiAgIHVpbnQgaW5kZXhfYWRkX2NvdW50PSAwOworICBoYW5kbGVyX2FkZF9pbmRl eCAqYWRkPSBOVUxMOworICBib29sIHBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXg9IGZhbHNlOwog ICB1aW50ICppbmRleF9hZGRfYnVmZmVyPSBOVUxMOwogICB1aW50IGNhbmRpZGF0ZV9rZXlfY291 bnQ9IDA7CiAgIGJvb2wgbm9fcGs7CkBAIC02NDMyLDYgKzY0MzQsOSBAQCBib29sIG15c3FsX2Fs dGVyX3RhYmxlKFRIRCAqdGhkLGNoYXIgKm5lCiAgIH0KICAgdGhkLT5jb3VudF9jdXRlZF9maWVs ZHM9IENIRUNLX0ZJRUxEX0lHTk9SRTsKIAorICBpZiAoZXJyb3IpCisgICAgZ290byBlcnJfbmV3 X3RhYmxlX2NsZWFudXA7CisKICAgLyogSWYgd2UgZGlkIG5vdCBuZWVkIHRvIGNvcHksIHdlIG1p Z2h0IHN0aWxsIG5lZWQgdG8gYWRkL2Ryb3AgaW5kZXhlcy4gKi8KICAgaWYgKCEgbmV3X3RhYmxl KQogICB7CkBAIC02NDYzLDcgKzY0NjgsOCBAQCBib29sIG15c3FsX2FsdGVyX3RhYmxlKFRIRCAq dGhkLGNoYXIgKm5lCiAgICAgICAgICAga2V5X3BhcnQtPmZpZWxkPSB0YWJsZS0+ZmllbGRba2V5 X3BhcnQtPmZpZWxkbnJdOwogICAgICAgfQogICAgICAgLyogQWRkIHRoZSBpbmRleGVzLiAqLwot ICAgICAgaWYgKChlcnJvcj0gdGFibGUtPmZpbGUtPmFkZF9pbmRleCh0YWJsZSwga2V5X2luZm8s IGluZGV4X2FkZF9jb3VudCkpKQorICAgICAgaWYgKChlcnJvcj0gdGFibGUtPmZpbGUtPmFkZF9p bmRleCh0YWJsZSwga2V5X2luZm8sIGluZGV4X2FkZF9jb3VudCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJmFkZCkpKQogICAgICAgewogICAgICAgICAvKgogICAg ICAgICAgIEV4Y2hhbmdlIHRoZSBrZXlfaW5mbyBmb3IgdGhlIGVycm9yIG1lc3NhZ2UuIElmIHdl IGV4Y2hhbmdlCkBAIC02NDc1LDExICs2NDgxLDIzIEBAIGJvb2wgbXlzcWxfYWx0ZXJfdGFibGUo VEhEICp0aGQsY2hhciAqbmUKICAgICAgICAgdGFibGUtPmtleV9pbmZvPSBzYXZlX2tleV9pbmZv OwogICAgICAgICBnb3RvIGVycl9uZXdfdGFibGVfY2xlYW51cDsKICAgICAgIH0KKyAgICAgIHBl bmRpbmdfaW5wbGFjZV9hZGRfaW5kZXg9IHRydWU7CiAgICAgfQogICAgIC8qZW5kIG9mIGlmIChp bmRleF9hZGRfY291bnQpKi8KIAogICAgIGlmIChpbmRleF9kcm9wX2NvdW50KQogICAgIHsKKyAg ICAgIC8qIEN1cnJlbnRseSB3ZSBtdXN0IGZpbmFsaXplIGFkZCBpbmRleCBpZiB3ZSBhbHNvIGRy b3AgaW5kZXhlcyAqLworICAgICAgaWYgKHBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXgpCisgICAg ICB7CisgICAgICAgIC8qIENvbW1pdHRpbmcgaW5kZXggY2hhbmdlcyBuZWVkcyBleGNsdXNpdmUg bWV0YWRhdGEgbG9jay4gKi8KKyAgICAgICAgREJVR19BU1NFUlQodGhkLT5tZGxfY29udGV4dC5p c19sb2NrX293bmVyKE1ETF9rZXk6OlRBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfbGlzdC0+ZGIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9saXN0LT50YWJsZV9uYW1l LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTURM X0VYQ0xVU0lWRSkpOworICAgICAgICB0YWJsZS0+ZmlsZS0+ZmluYWxfYWRkX2luZGV4KGFkZCwg dHJ1ZSk7CisgICAgICAgIHBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXg9IGZhbHNlOworICAgICAg fQogICAgICAgLyogVGhlIHByZXBhcmVfZHJvcF9pbmRleCgpIG1ldGhvZCB0YWtlcyBhbiBhcnJh eSBvZiBrZXkgbnVtYmVycy4gKi8KICAgICAgIGtleV9udW1iZXJzPSAodWludCopIHRoZC0+YWxs b2Moc2l6ZW9mKHVpbnQpICogaW5kZXhfZHJvcF9jb3VudCk7CiAgICAgICBrZXlub19wPSBrZXlf bnVtYmVyczsKQEAgLTY1MjAsMTEgKzY1MzgsMTQgQEAgYm9vbCBteXNxbF9hbHRlcl90YWJsZShU SEQgKnRoZCxjaGFyICpuZQogICB9CiAgIC8qZW5kIG9mIGlmICghIG5ld190YWJsZSkgZm9yIGFk ZC9kcm9wIGluZGV4Ki8KIAotICBpZiAoZXJyb3IpCi0gICAgZ290byBlcnJfbmV3X3RhYmxlX2Ns ZWFudXA7Ci0KICAgaWYgKHRhYmxlLT5zLT50bXBfdGFibGUgIT0gTk9fVE1QX1RBQkxFKQogICB7 CisgICAgLyoKKyAgICAgIEluLXBsYWNlIG9wZXJhdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgZm9y IHRlbXBvcmFyeSB0YWJsZXMsIHNvCisgICAgICB3ZSBkb24ndCBoYXZlIHRvIGNhbGwgZmluYWxf YWRkX2luZGV4KCkgaW4gdGhpcyBjYXNlLiBUaGUgYXNzZXJ0CisgICAgICB2ZXJpZmllcyB0aGF0 IGluLXBsYWNlIGFkZCBpbmRleCBoYXMgbm90IGJlZW4gZG9uZS4KKyAgICAqLworICAgIERCVUdf QVNTRVJUKCFwZW5kaW5nX2lucGxhY2VfYWRkX2luZGV4KTsKICAgICAvKiBDbG9zZSBsb2NrIGlm IHRoaXMgaXMgYSB0cmFuc2FjdGlvbmFsIHRhYmxlICovCiAgICAgaWYgKHRoZC0+bG9jaykKICAg ICB7CkBAIC02NTkxLDggKzY2MTIsMjEgQEAgYm9vbCBteXNxbF9hbHRlcl90YWJsZShUSEQgKnRo ZCxjaGFyICpuZQogICAgIG15X2Nhc2Vkbl9zdHIoZmlsZXNfY2hhcnNldF9pbmZvLCBvbGRfbmFt ZSk7CiAKICAgaWYgKHdhaXRfd2hpbGVfdGFibGVfaXNfdXNlZCh0aGQsIHRhYmxlLCBIQV9FWFRS QV9QUkVQQVJFX0ZPUl9SRU5BTUUpKQorICB7CisgICAgaWYgKHBlbmRpbmdfaW5wbGFjZV9hZGRf aW5kZXgpCisgICAgeworICAgICAgdGFibGUtPmZpbGUtPmZpbmFsX2FkZF9pbmRleChhZGQsIGZh bHNlKTsKKyAgICAgIHBlbmRpbmdfaW5wbGFjZV9hZGRfaW5kZXg9IGZhbHNlOworICAgIH0KKyAg ICAvLyBNYXJrIHRoaXMgVEFCTEUgaW5zdGFuY2UgYXMgc3RhbGUgdG8gYXZvaWQgb3V0LW9mLXN5 bmMgaW5kZXggaW5mb3JtYXRpb24uCisgICAgdGFibGUtPm1fbmVlZHNfcmVvcGVuPSB0cnVlOwog ICAgIGdvdG8gZXJyX25ld190YWJsZV9jbGVhbnVwOwotCisgIH0KKyAgaWYgKHBlbmRpbmdfaW5w bGFjZV9hZGRfaW5kZXgpCisgIHsKKyAgICB0YWJsZS0+ZmlsZS0+ZmluYWxfYWRkX2luZGV4KGFk ZCwgdHJ1ZSk7CisgICAgcGVuZGluZ19pbnBsYWNlX2FkZF9pbmRleD0gZmFsc2U7CisgIH0KIAog ICBjbG9zZV9hbGxfdGFibGVzX2Zvcl9uYW1lKHRoZCwgdGFibGUtPnMsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbmV3X25hbWUgIT0gdGFibGVfbmFtZSB8fCBuZXdfZGIgIT0gZGIpOwoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2Mn Ci0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYV9pbm5vZGIuY2MJMjAxMS0wNS0wNiAw ODoyNzowNCArMDAwMAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmNj CTIwMTEtMDUtMTMgMDk6MTY6MjYgKzAwMDAKQEAgLTI2MjEsOCArMjYyMSwxMCBAQCBpbm5vYmFz ZV9hbHRlcl90YWJsZV9mbGFncygKIAl1aW50CWZsYWdzKQogewogCXJldHVybihIQV9JTlBMQUNF X0FERF9JTkRFWF9OT19SRUFEX1dSSVRFCisJCXwgSEFfSU5QTEFDRV9BRERfSU5ERVhfTk9fV1JJ VEUKIAkJfCBIQV9JTlBMQUNFX0RST1BfSU5ERVhfTk9fUkVBRF9XUklURQogCQl8IEhBX0lOUExB Q0VfQUREX1VOSVFVRV9JTkRFWF9OT19SRUFEX1dSSVRFCisJCXwgSEFfSU5QTEFDRV9BRERfVU5J UVVFX0lOREVYX05PX1dSSVRFCiAJCXwgSEFfSU5QTEFDRV9EUk9QX1VOSVFVRV9JTkRFWF9OT19S RUFEX1dSSVRFCiAJCXwgSEFfSU5QTEFDRV9BRERfUEtfSU5ERVhfTk9fUkVBRF9XUklURSk7CiB9 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5o JwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgJMjAxMS0wNC0xMSAx NDowMzozMiArMDAwMAorKysgYi9zdG9yYWdlL2lubm9iYXNlL2hhbmRsZXIvaGFfaW5ub2RiLmgJ MjAxMS0wNS0xMyAwOToxNjoyNiArMDAwMApAQCAtMjE1LDcgKzIxNSw5IEBAIGNsYXNzIGhhX2lu bm9iYXNlOiBwdWJsaWMgaGFuZGxlcgogCWJvb2wgcHJpbWFyeV9rZXlfaXNfY2x1c3RlcmVkKCk7 CiAJaW50IGNtcF9yZWYoY29uc3QgdWNoYXIgKnJlZjEsIGNvbnN0IHVjaGFyICpyZWYyKTsKIAkv KiogRmFzdCBpbmRleCBjcmVhdGlvbiAoc21hcnQgQUxURVIgVEFCTEUpIEBzZWUgaGFuZGxlcjBh bHRlci5jYyBAeyAqLwotCWludCBhZGRfaW5kZXgoVEFCTEUgKnRhYmxlX2FyZywgS0VZICprZXlf aW5mbywgdWludCBudW1fb2Zfa2V5cyk7CisJaW50IGFkZF9pbmRleChUQUJMRSAqdGFibGVfYXJn LCBLRVkgKmtleV9pbmZvLCB1aW50IG51bV9vZl9rZXlzLAorCQkgICAgICBoYW5kbGVyX2FkZF9p bmRleCAqKmFkZCk7CisJaW50IGZpbmFsX2FkZF9pbmRleChoYW5kbGVyX2FkZF9pbmRleCAqYWRk LCBib29sIGNvbW1pdCk7CiAJaW50IHByZXBhcmVfZHJvcF9pbmRleChUQUJMRSAqdGFibGVfYXJn LCB1aW50ICprZXlfbnVtLAogCQkJICAgICAgIHVpbnQgbnVtX29mX2tleXMpOwogCWludCBmaW5h bF9kcm9wX2luZGV4KFRBQkxFICp0YWJsZV9hcmcpOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3Jh Z2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjJwotLS0gYS9zdG9yYWdlL2lubm9i YXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwkyMDExLTA0LTExIDE0OjAzOjMyICswMDAwCisr KyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCTIwMTEtMDUtMTMg MDk6MTY6MjYgKzAwMDAKQEAgLTYxOSw2ICs2MTksMTggQEAgaW5ub2Jhc2VfY3JlYXRlX3RlbXBv cmFyeV90YWJsZW5hbWUoCiAJcmV0dXJuKG5hbWUpOwogfQogCitjbGFzcyBoYV9pbm5vYmFzZV9h ZGRfaW5kZXggOiBwdWJsaWMgaGFuZGxlcl9hZGRfaW5kZXgKK3sKK3B1YmxpYzoKKwkvKiogdGFi bGUgd2hlcmUgdGhlIGluZGV4ZXMgYXJlIGJlaW5nIGNyZWF0ZWQgKi8KKwlkaWN0X3RhYmxlX3Qq IGluZGV4ZWRfdGFibGU7CisJaGFfaW5ub2Jhc2VfYWRkX2luZGV4KFRBQkxFKiB0YWJsZSwgS0VZ KiBrZXlfaW5mbywgdWludCBudW1fb2Zfa2V5cywKKwkJCSAgICAgIGRpY3RfdGFibGVfdCogaW5k ZXhlZF90YWJsZV9hcmcpIDoKKwkJaGFuZGxlcl9hZGRfaW5kZXgodGFibGUsIGtleV9pbmZvLCBu dW1fb2Zfa2V5cyksCisJCWluZGV4ZWRfdGFibGUgKGluZGV4ZWRfdGFibGVfYXJnKSB7fQorCX5o YV9pbm5vYmFzZV9hZGRfaW5kZXgoKSB7fQorfTsKKwogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBDcmVhdGUg aW5kZXhlcy4KIEByZXR1cm4JMCBvciBlcnJvciBudW1iZXIgKi8KQEAgLTYyNiwxMiArNjM4LDE1 IEBAIFVOSVZfSU5URVJOCiBpbnQKIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAvKj09PT09PT09 PT09PT09PT09PT0qLwotCVRBQkxFKgl0YWJsZSwJCS8qITwgaW46IFRhYmxlIHdoZXJlIGluZGV4 ZXMgYXJlIGNyZWF0ZWQgKi8KLQlLRVkqCWtleV9pbmZvLAkvKiE8IGluOiBJbmRleGVzIHRvIGJl IGNyZWF0ZWQgKi8KLQl1aW50CW51bV9vZl9rZXlzKQkvKiE8IGluOiBOdW1iZXIgb2YgaW5kZXhl cyB0byBiZSBjcmVhdGVkICovCisJVEFCTEUqCQkJdGFibGUsCQkvKiE8IGluOiBUYWJsZSB3aGVy ZSBpbmRleGVzCisJCQkJCQlhcmUgY3JlYXRlZCAqLworCUtFWSoJCQlrZXlfaW5mbywJLyohPCBp bjogSW5kZXhlcworCQkJCQkJdG8gYmUgY3JlYXRlZCAqLworCXVpbnQJCQludW1fb2Zfa2V5cywJ LyohPCBpbjogTnVtYmVyIG9mIGluZGV4ZXMKKwkJCQkJCXRvIGJlIGNyZWF0ZWQgKi8KKwloYW5k bGVyX2FkZF9pbmRleCoqCWFkZCkJCS8qITwgb3V0OiBjb250ZXh0ICovCiB7CiAJZGljdF9pbmRl eF90KioJaW5kZXg7CQkvKiE8IEluZGV4IHRvIGJlIGNyZWF0ZWQgKi8KLQlkaWN0X3RhYmxlX3Qq CWlubm9kYl90YWJsZTsJLyohPCBJbm5vREIgdGFibGUgaW4gZGljdGlvbmFyeSAqLwogCWRpY3Rf dGFibGVfdCoJaW5kZXhlZF90YWJsZTsJLyohPCBUYWJsZSB3aGVyZSBpbmRleGVzIGFyZSBjcmVh dGVkICovCiAJbWVyZ2VfaW5kZXhfZGVmX3QqIGluZGV4X2RlZnM7CS8qITwgSW5kZXggZGVmaW5p dGlvbnMgKi8KIAltZW1faGVhcF90KiAgICAgaGVhcDsJCS8qITwgSGVhcCBmb3IgaW5kZXggZGVm aW5pdGlvbnMgKi8KQEAgLTY0Nyw2ICs2NjIsOCBAQCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAog CXV0X2Eoa2V5X2luZm8pOwogCXV0X2EobnVtX29mX2tleXMpOwogCisJKmFkZCA9IE5VTEw7CisK IAlpZiAoc3J2X2NyZWF0ZWRfbmV3X3JhdyB8fCBzcnZfZm9yY2VfcmVjb3ZlcnkpIHsKIAkJREJV R19SRVRVUk4oSEFfRVJSX1dST05HX0NPTU1BTkQpOwogCX0KQEAgLTY2MiwxNSArNjc5LDE2IEBA IGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAJCURCVUdfUkVUVVJOKC0xKTsKIAl9CiAKLQlpbm5v ZGJfdGFibGUgPSBpbmRleGVkX3RhYmxlCi0JCT0gZGljdF90YWJsZV9nZXQocHJlYnVpbHQtPnRh YmxlLT5uYW1lLCBGQUxTRSk7CisJaW5kZXhlZF90YWJsZSA9IGRpY3RfdGFibGVfZ2V0KHByZWJ1 aWx0LT50YWJsZS0+bmFtZSwgRkFMU0UpOwogCi0JaWYgKFVOSVZfVU5MSUtFTFkoIWlubm9kYl90 YWJsZSkpIHsKKwlpZiAoVU5JVl9VTkxJS0VMWSghaW5kZXhlZF90YWJsZSkpIHsKIAkJREJVR19S RVRVUk4oSEFfRVJSX05PX1NVQ0hfVEFCTEUpOwogCX0KIAorICAgICAgICB1dF9hKGluZGV4ZWRf dGFibGUgPT0gcHJlYnVpbHQtPnRhYmxlKTsKKwogCS8qIENoZWNrIHRoYXQgaW5kZXgga2V5cyBh cmUgc2Vuc2libGUgKi8KLQllcnJvciA9IGlubm9iYXNlX2NoZWNrX2luZGV4X2tleXMoa2V5X2lu Zm8sIG51bV9vZl9rZXlzLCBpbm5vZGJfdGFibGUpOworCWVycm9yID0gaW5ub2Jhc2VfY2hlY2tf aW5kZXhfa2V5cyhrZXlfaW5mbywgbnVtX29mX2tleXMsIHByZWJ1aWx0LT50YWJsZSk7CiAKIAlp ZiAoVU5JVl9VTkxJS0VMWShlcnJvcikpIHsKIAkJREJVR19SRVRVUk4oZXJyb3IpOwpAQCAtNjkx LDcgKzcwOSw3IEBAIGhhX2lubm9iYXNlOjphZGRfaW5kZXgoCiAJbnVtX29mX2lkeCA9IG51bV9v Zl9rZXlzOwogCiAJaW5kZXhfZGVmcyA9IGlubm9iYXNlX2NyZWF0ZV9rZXlfZGVmKAotCQl0cngs IGlubm9kYl90YWJsZSwgaGVhcCwga2V5X2luZm8sIG51bV9vZl9pZHgpOworCQl0cngsIHByZWJ1 aWx0LT50YWJsZSwgaGVhcCwga2V5X2luZm8sIG51bV9vZl9pZHgpOwogCiAJbmV3X3ByaW1hcnkg PSBESUNUX0NMVVNURVJFRCAmIGluZGV4X2RlZnNbMF0uaW5kX3R5cGU7CiAKQEAgLTcwNSw3ICs3 MjMsNyBAQCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAogCXRyeF9zZXRfZGljdF9vcGVyYXRpb24o dHJ4LCBUUlhfRElDVF9PUF9JTkRFWCk7CiAKIAkvKiBBY3F1aXJlIGEgbG9jayBvbiB0aGUgdGFi bGUgYmVmb3JlIGNyZWF0aW5nIGFueSBpbmRleGVzLiAqLwotCWVycm9yID0gcm93X21lcmdlX2xv Y2tfdGFibGUocHJlYnVpbHQtPnRyeCwgaW5ub2RiX3RhYmxlLAorCWVycm9yID0gcm93X21lcmdl X2xvY2tfdGFibGUocHJlYnVpbHQtPnRyeCwgcHJlYnVpbHQtPnRhYmxlLAogCQkJCSAgICAgbmV3 X3ByaW1hcnkgPyBMT0NLX1ggOiBMT0NLX1MpOwogCiAJaWYgKFVOSVZfVU5MSUtFTFkoZXJyb3Ig IT0gREJfU1VDQ0VTUykpIHsKQEAgLTcxOSw3ICs3MzcsNyBAQCBoYV9pbm5vYmFzZTo6YWRkX2lu ZGV4KAogCXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0cngpOwogCWRpY3RfbG9ja2Vk ID0gVFJVRTsKIAotCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2luZGV4ZXMoaW5ub2Ri X3RhYmxlLCBGQUxTRSkpOworCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2luZGV4ZXMo cHJlYnVpbHQtPnRhYmxlLCBGQUxTRSkpOwogCiAJLyogSWYgYSBuZXcgcHJpbWFyeSBrZXkgaXMg ZGVmaW5lZCBmb3IgdGhlIHRhYmxlIHdlIG5lZWQKIAl0byBkcm9wIHRoZSBvcmlnaW5hbCB0YWJs ZSBhbmQgcmVidWlsZCBhbGwgaW5kZXhlcy4gKi8KQEAgLTcyNywxNSArNzQ1LDE1IEBAIGhhX2lu bm9iYXNlOjphZGRfaW5kZXgoCiAJaWYgKFVOSVZfVU5MSUtFTFkobmV3X3ByaW1hcnkpKSB7CiAJ CS8qIFRoaXMgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHRoZSBvbmx5IG9uZQogCQlvcGVyYXRpbmcg b24gdGhlIHRhYmxlLiAqLwotCQl1dF9hKGlubm9kYl90YWJsZS0+bl9teXNxbF9oYW5kbGVzX29w ZW5lZCA9PSAxKTsKKwkJdXRfYShwcmVidWlsdC0+dGFibGUtPm5fbXlzcWxfaGFuZGxlc19vcGVu ZWQgPT0gMSk7CiAKIAkJY2hhcioJbmV3X3RhYmxlX25hbWUgPSBpbm5vYmFzZV9jcmVhdGVfdGVt cG9yYXJ5X3RhYmxlbmFtZSgKLQkJCWhlYXAsICcxJywgaW5ub2RiX3RhYmxlLT5uYW1lKTsKKwkJ CWhlYXAsICcxJywgcHJlYnVpbHQtPnRhYmxlLT5uYW1lKTsKIAogCQkvKiBDbG9uZSB0aGUgdGFi bGUuICovCiAJCXRyeF9zZXRfZGljdF9vcGVyYXRpb24odHJ4LCBUUlhfRElDVF9PUF9UQUJMRSk7 CiAJCWluZGV4ZWRfdGFibGUgPSByb3dfbWVyZ2VfY3JlYXRlX3RlbXBvcmFyeV90YWJsZSgKLQkJ CW5ld190YWJsZV9uYW1lLCBpbmRleF9kZWZzLCBpbm5vZGJfdGFibGUsIHRyeCk7CisJCQluZXdf dGFibGVfbmFtZSwgaW5kZXhfZGVmcywgcHJlYnVpbHQtPnRhYmxlLCB0cngpOwogCiAJCWlmICgh aW5kZXhlZF90YWJsZSkgewogCkBAIC03NDksMTEgKzc2NywxMiBAQCBoYV9pbm5vYmFzZTo6YWRk X2luZGV4KAogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJCQllcnJvciA9IGNvbnZlcnRfZXJy b3JfY29kZV90b19teXNxbCgKLQkJCQkJdHJ4LT5lcnJvcl9zdGF0ZSwgaW5ub2RiX3RhYmxlLT5m bGFncywKKwkJCQkJdHJ4LT5lcnJvcl9zdGF0ZSwKKwkJCQkJcHJlYnVpbHQtPnRhYmxlLT5mbGFn cywKIAkJCQkJdXNlcl90aGQpOwogCQkJfQogCi0JCQl1dF9kKGRpY3RfdGFibGVfY2hlY2tfZm9y X2R1cF9pbmRleGVzKGlubm9kYl90YWJsZSwKKwkJCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3Jf ZHVwX2luZGV4ZXMocHJlYnVpbHQtPnRhYmxlLAogCQkJCQkJCSAgICAgIEZBTFNFKSk7CiAJCQlt ZW1faGVhcF9mcmVlKGhlYXApOwogCQkJdHJ4X2dlbmVyYWxfcm9sbGJhY2tfZm9yX215c3FsKHRy eCwgTlVMTCk7CkBAIC03NjgsMTcgKzc4NywxNSBAQCBoYV9pbm5vYmFzZTo6YWRkX2luZGV4KAog CiAJLyogQ3JlYXRlIHRoZSBpbmRleGVzIGluIFNZU19JTkRFWEVTIGFuZCBsb2FkIGludG8gZGlj dGlvbmFyeS4gKi8KIAotCWZvciAodWxpbnQgaSA9IDA7IGkgPCBudW1fb2ZfaWR4OyBpKyspIHsK Kwlmb3IgKG51bV9jcmVhdGVkID0gMDsgbnVtX2NyZWF0ZWQgPCBudW1fb2ZfaWR4OyBudW1fY3Jl YXRlZCsrKSB7CiAKLQkJaW5kZXhbaV0gPSByb3dfbWVyZ2VfY3JlYXRlX2luZGV4KHRyeCwgaW5k ZXhlZF90YWJsZSwKLQkJCQkJCSAgJmluZGV4X2RlZnNbaV0pOworCQlpbmRleFtudW1fY3JlYXRl ZF0gPSByb3dfbWVyZ2VfY3JlYXRlX2luZGV4KAorCQkJdHJ4LCBpbmRleGVkX3RhYmxlLCAmaW5k ZXhfZGVmc1tudW1fY3JlYXRlZF0pOwogCi0JCWlmICghaW5kZXhbaV0pIHsKKwkJaWYgKCFpbmRl eFtudW1fY3JlYXRlZF0pIHsKIAkJCWVycm9yID0gdHJ4LT5lcnJvcl9zdGF0ZTsKIAkJCWdvdG8g ZXJyb3JfaGFuZGxpbmc7CiAJCX0KLQotCQludW1fY3JlYXRlZCsrOwogCX0KIAogCXV0X2FkKGVy cm9yID09IERCX1NVQ0NFU1MpOwpAQCAtODAwLDcgKzgxNyw3IEBAIGhhX2lubm9iYXNlOjphZGRf aW5kZXgoCiAJaWYgKFVOSVZfVU5MSUtFTFkobmV3X3ByaW1hcnkpKSB7CiAJCS8qIEEgcHJpbWFy eSBrZXkgaXMgdG8gYmUgYnVpbHQuICBBY3F1aXJlIGFuIGV4Y2x1c2l2ZQogCQl0YWJsZSBsb2Nr IGFsc28gb24gdGhlIHRhYmxlIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4gKi8KLQkJdXRfYWQoaW5k ZXhlZF90YWJsZSAhPSBpbm5vZGJfdGFibGUpOworCQl1dF9hZChpbmRleGVkX3RhYmxlICE9IHBy ZWJ1aWx0LT50YWJsZSk7CiAKIAkJZXJyb3IgPSByb3dfbWVyZ2VfbG9ja190YWJsZShwcmVidWls dC0+dHJ4LCBpbmRleGVkX3RhYmxlLAogCQkJCQkgICAgIExPQ0tfWCk7CkBAIC04MTQsNyArODMx LDcgQEAgaGFfaW5ub2Jhc2U6OmFkZF9pbmRleCgKIAkvKiBSZWFkIHRoZSBjbHVzdGVyZWQgaW5k ZXggb2YgdGhlIHRhYmxlIGFuZCBidWlsZCBpbmRleGVzCiAJYmFzZWQgb24gdGhpcyBpbmZvcm1h dGlvbiB1c2luZyB0ZW1wb3JhcnkgZmlsZXMgYW5kIG1lcmdlIHNvcnQuICovCiAJZXJyb3IgPSBy b3dfbWVyZ2VfYnVpbGRfaW5kZXhlcyhwcmVidWlsdC0+dHJ4LAotCQkJCQlpbm5vZGJfdGFibGUs IGluZGV4ZWRfdGFibGUsCisJCQkJCXByZWJ1aWx0LT50YWJsZSwgaW5kZXhlZF90YWJsZSwKIAkJ CQkJaW5kZXgsIG51bV9vZl9pZHgsIHRhYmxlKTsKIAogZXJyb3JfaGFuZGxpbmc6CkBAIC04MjIs NjMgKzgzOSwxNSBAQCBlcnJvcl9oYW5kbGluZzoKIAlkaWN0aW9uYXJ5IHdoaWNoIHdlcmUgZGVm aW5lZC4gKi8KIAogCXN3aXRjaCAoZXJyb3IpIHsKLQkJY29uc3QgY2hhcioJb2xkX25hbWU7Ci0J CWNoYXIqCQl0bXBfbmFtZTsKIAljYXNlIERCX1NVQ0NFU1M6CiAJCXV0X2EoIWRpY3RfbG9ja2Vk KTsKLQkJcm93X215c3FsX2xvY2tfZGF0YV9kaWN0aW9uYXJ5KHRyeCk7Ci0JCWRpY3RfbG9ja2Vk ID0gVFJVRTsKIAorCQl1dF9kKG11dGV4X2VudGVyKCZkaWN0X3N5cy0+bXV0ZXgpKTsKIAkJdXRf ZChkaWN0X3RhYmxlX2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhwcmVidWlsdC0+dGFibGUsIFRSVUUp KTsKLQotCQlpZiAoIW5ld19wcmltYXJ5KSB7Ci0JCQllcnJvciA9IHJvd19tZXJnZV9yZW5hbWVf aW5kZXhlcyh0cngsIGluZGV4ZWRfdGFibGUpOwotCi0JCQlpZiAoZXJyb3IgIT0gREJfU1VDQ0VT UykgewotCQkJCXJvd19tZXJnZV9kcm9wX2luZGV4ZXModHJ4LCBpbmRleGVkX3RhYmxlLAotCQkJ CQkJICAgICAgIGluZGV4LCBudW1fY3JlYXRlZCk7Ci0JCQl9Ci0KLQkJCWdvdG8gY29udmVydF9l cnJvcjsKLQkJfQotCi0JCS8qIElmIGEgbmV3IHByaW1hcnkga2V5IHdhcyBkZWZpbmVkIGZvciB0 aGUgdGFibGUgYW5kCi0JCXRoZXJlIHdhcyBubyBlcnJvciBhdCB0aGlzIHBvaW50LCB3ZSBjYW4g bm93IHJlbmFtZQotCQl0aGUgb2xkIHRhYmxlIGFzIGEgdGVtcG9yYXJ5IHRhYmxlLCByZW5hbWUg dGhlIG5ldwotCQl0ZW1wb3JhcnkgdGFibGUgYXMgdGhlIG9sZCB0YWJsZSBhbmQgZHJvcCB0aGUg b2xkIHRhYmxlLiAqLwotCQlvbGRfbmFtZSA9IGlubm9kYl90YWJsZS0+bmFtZTsKLQkJdG1wX25h bWUgPSBpbm5vYmFzZV9jcmVhdGVfdGVtcG9yYXJ5X3RhYmxlbmFtZShoZWFwLCAnMicsCi0JCQkJ CQkJICAgICAgIG9sZF9uYW1lKTsKLQotCQllcnJvciA9IHJvd19tZXJnZV9yZW5hbWVfdGFibGVz KGlubm9kYl90YWJsZSwgaW5kZXhlZF90YWJsZSwKLQkJCQkJCXRtcF9uYW1lLCB0cngpOwotCi0J CWlmIChlcnJvciAhPSBEQl9TVUNDRVNTKSB7Ci0KLQkJCXJvd19tZXJnZV9kcm9wX3RhYmxlKHRy eCwgaW5kZXhlZF90YWJsZSk7Ci0KLQkJCXN3aXRjaCAoZXJyb3IpIHsKLQkJCWNhc2UgREJfVEFC TEVTUEFDRV9BTFJFQURZX0VYSVNUUzoKLQkJCWNhc2UgREJfRFVQTElDQVRFX0tFWToKLQkJCQlp bm5vYmFzZV9jb252ZXJ0X3RhYmxlbmFtZSh0bXBfbmFtZSk7Ci0JCQkJbXlfZXJyb3IoSEFfRVJS X1RBQkxFX0VYSVNULCBNWUYoMCksIHRtcF9uYW1lKTsKLQkJCQllcnJvciA9IEhBX0VSUl9UQUJM RV9FWElTVDsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJZ290byBjb252ZXJ0X2Vycm9y OwotCQkJfQotCQkJYnJlYWs7Ci0JCX0KLQotCQl0cnhfY29tbWl0X2Zvcl9teXNxbChwcmVidWls dC0+dHJ4KTsKLQkJcm93X3ByZWJ1aWx0X2ZyZWUocHJlYnVpbHQsIFRSVUUpOwotCQlwcmVidWls dCA9IHJvd19jcmVhdGVfcHJlYnVpbHQoaW5kZXhlZF90YWJsZSk7Ci0KLQkJaW5kZXhlZF90YWJs ZS0+bl9teXNxbF9oYW5kbGVzX29wZW5lZCsrOwotCi0JCWVycm9yID0gcm93X21lcmdlX2Ryb3Bf dGFibGUodHJ4LCBpbm5vZGJfdGFibGUpOwotCQlpbm5vZGJfdGFibGUgPSBpbmRleGVkX3RhYmxl OwotCQlnb3RvIGNvbnZlcnRfZXJyb3I7CisJCXV0X2QobXV0ZXhfZXhpdCgmZGljdF9zeXMtPm11 dGV4KSk7CisgICAgICAgICAgICAgICAgKmFkZCA9IG5ldyBoYV9pbm5vYmFzZV9hZGRfaW5kZXgo dGFibGUsIGtleV9pbmZvLCBudW1fb2Zfa2V5cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVkX3RhYmxlKTsKKwkJYnJlYWs7CiAKIAljYXNl IERCX1RPT19CSUdfUkVDT1JEOgogCQlteV9lcnJvcihIQV9FUlJfVE9fQklHX1JPVywgTVlGKDAp KTsKQEAgLTg5NCw3ICs4NjMsNyBAQCBlcnJvcjoKIAkJdHJ4LT5lcnJvcl9zdGF0ZSA9IERCX1NV Q0NFU1M7CiAKIAkJaWYgKG5ld19wcmltYXJ5KSB7Ci0JCQlpZiAoaW5kZXhlZF90YWJsZSAhPSBp bm5vZGJfdGFibGUpIHsKKwkJCWlmIChpbmRleGVkX3RhYmxlICE9IHByZWJ1aWx0LT50YWJsZSkg ewogCQkJCXJvd19tZXJnZV9kcm9wX3RhYmxlKHRyeCwgaW5kZXhlZF90YWJsZSk7CiAJCQl9CiAJ CX0gZWxzZSB7CkBAIC05MDYsMzggKzg3NSwxNTcgQEAgZXJyb3I6CiAJCQlyb3dfbWVyZ2VfZHJv cF9pbmRleGVzKHRyeCwgaW5kZXhlZF90YWJsZSwKIAkJCQkJICAgICAgIGluZGV4LCBudW1fY3Jl YXRlZCk7CiAJCX0KLQotY29udmVydF9lcnJvcjoKLQkJaWYgKGVycm9yID09IERCX1NVQ0NFU1Mp IHsKLQkJCS8qIEJ1aWxkIGluZGV4IGlzIHN1Y2Nlc3NmdWwuIFdlIHdpbGwgbmVlZCB0bwotCQkJ cmVidWlsZCBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZS4gIFJlc2V0IHRoZQotCQkJaW5kZXggZW50 cnkgY291bnQgaW4gdGhlIHRyYW5zbGF0aW9uIHRhYmxlCi0JCQl0byB6ZXJvLCBzbyB0aGF0IHRy YW5zbGF0aW9uIHRhYmxlIHdpbGwgYmUgcmVidWlsdCAqLwotCQkJc2hhcmUtPmlkeF90cmFuc190 YmwuaW5kZXhfY291bnQgPSAwOwotCQl9Ci0KLQkJZXJyb3IgPSBjb252ZXJ0X2Vycm9yX2NvZGVf dG9fbXlzcWwoZXJyb3IsCi0JCQkJCQkgICAgaW5ub2RiX3RhYmxlLT5mbGFncywKLQkJCQkJCSAg ICB1c2VyX3RoZCk7CiAJfQogCi0JbWVtX2hlYXBfZnJlZShoZWFwKTsKIAl0cnhfY29tbWl0X2Zv cl9teXNxbCh0cngpOwogCWlmIChwcmVidWlsdC0+dHJ4KSB7CiAJCXRyeF9jb21taXRfZm9yX215 c3FsKHByZWJ1aWx0LT50cngpOwogCX0KIAogCWlmIChkaWN0X2xvY2tlZCkgewotCQl1dF9kKGRp Y3RfdGFibGVfY2hlY2tfZm9yX2R1cF9pbmRleGVzKGlubm9kYl90YWJsZSwgRkFMU0UpKTsKIAkJ cm93X215c3FsX3VubG9ja19kYXRhX2RpY3Rpb25hcnkodHJ4KTsKIAl9CiAKIAl0cnhfZnJlZV9m b3JfbXlzcWwodHJ4KTsKKwltZW1faGVhcF9mcmVlKGhlYXApOworCisJLyogVGhlcmUgbWlnaHQg YmUgd29yayBmb3IgdXRpbGl0eSB0aHJlYWRzLiovCisJc3J2X2FjdGl2ZV93YWtlX21hc3Rlcl90 aHJlYWQoKTsKKworCURCVUdfUkVUVVJOKGNvbnZlcnRfZXJyb3JfY29kZV90b19teXNxbChlcnJv ciwgcHJlYnVpbHQtPnRhYmxlLT5mbGFncywKKwkJCQkJCXVzZXJfdGhkKSk7Cit9CisKKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqLy8qKgorRmluYWxpemUgb3IgdW5kbyBhZGRfaW5kZXgoKS4KK0ByZXR1cm4JMCBvciBl cnJvciBudW1iZXIgKi8KK1VOSVZfSU5URVJOCitpbnQKK2hhX2lubm9iYXNlOjpmaW5hbF9hZGRf aW5kZXgoCisvKj09PT09PT09PT09PT09PT09PT09PT09PT0qLworCWhhbmRsZXJfYWRkX2luZGV4 KglhZGRfYXJnLC8qITwgaW46IGNvbnRleHQgZnJvbSBhZGRfaW5kZXgoKSAqLworCWJvb2wJCQlj b21taXQpCS8qITwgaW46IHRydWU9Y29tbWl0LCBmYWxzZT1yb2xsYmFjayAqLworeworCWhhX2lu bm9iYXNlX2FkZF9pbmRleCoJYWRkOworCXRyeF90KgkJCXRyeDsKKwlpbnQJCQllcnIJPSAwOwor CisJREJVR19FTlRFUigiaGFfaW5ub2Jhc2U6OmZpbmFsX2FkZF9pbmRleCIpOworCisJYWRkID0g c3RhdGljX2Nhc3Q8Y2xhc3MgaGFfaW5ub2Jhc2VfYWRkX2luZGV4Kj4oYWRkX2FyZyk7CisKKwkv KiBDcmVhdGUgYSBiYWNrZ3JvdW5kIHRyYW5zYWN0aW9uIGZvciB0aGUgb3BlcmF0aW9ucyBvbgor CXRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGVzLiAqLworCXRyeCA9IGlubm9iYXNlX3RyeF9hbGxv Y2F0ZSh1c2VyX3RoZCk7CisJdHJ4X3N0YXJ0X2lmX25vdF9zdGFydGVkKHRyeCk7CisKKwkvKiBG bGFnIHRoaXMgdHJhbnNhY3Rpb24gYXMgYSBkaWN0aW9uYXJ5IG9wZXJhdGlvbiwgc28gdGhhdAor CXRoZSBkYXRhIGRpY3Rpb25hcnkgd2lsbCBiZSBsb2NrZWQgaW4gY3Jhc2ggcmVjb3ZlcnkuICov CisJdHJ4X3NldF9kaWN0X29wZXJhdGlvbih0cngsIFRSWF9ESUNUX09QX0lOREVYKTsKKworCS8q IExhdGNoIHRoZSBJbm5vREIgZGF0YSBkaWN0aW9uYXJ5IGV4Y2x1c2l2ZWx5IHNvIHRoYXQgbm8g ZGVhZGxvY2tzCisJb3IgbG9jayB3YWl0cyBjYW4gaGFwcGVuIGluIGl0IGR1cmluZyBhbiBpbmRl eCBjcmVhdGUgb3BlcmF0aW9uLiAqLworCXJvd19teXNxbF9sb2NrX2RhdGFfZGljdGlvbmFyeSh0 cngpOworCisJaWYgKGFkZC0+aW5kZXhlZF90YWJsZSAhPSBwcmVidWlsdC0+dGFibGUpIHsKKwkJ dWxpbnQJZXJyb3I7CisKKwkJLyogV2UgY29waWVkIHRoZSB0YWJsZSAobmV3X3ByaW1hcnkpLiAq LworCQlpZiAoY29tbWl0KSB7CisJCQltZW1faGVhcF90KgloZWFwOworCQkJY2hhcioJCXRtcF9u YW1lOworCisJCQloZWFwID0gbWVtX2hlYXBfY3JlYXRlKDEwMjQpOworCisJCQkvKiBBIG5ldyBw cmltYXJ5IGtleSB3YXMgZGVmaW5lZCBmb3IgdGhlIHRhYmxlCisJCQlhbmQgdGhlcmUgd2FzIG5v IGVycm9yIGF0IHRoaXMgcG9pbnQuIFdlIGNhbgorCQkJbm93IHJlbmFtZSB0aGUgb2xkIHRhYmxl IGFzIGEgdGVtcG9yYXJ5IHRhYmxlLAorCQkJcmVuYW1lIHRoZSBuZXcgdGVtcG9yYXJ5IHRhYmxl IGFzIHRoZSBvbGQKKwkJCXRhYmxlIGFuZCBkcm9wIHRoZSBvbGQgdGFibGUuICovCisJCQl0bXBf bmFtZSA9IGlubm9iYXNlX2NyZWF0ZV90ZW1wb3JhcnlfdGFibGVuYW1lKAorCQkJCWhlYXAsICcy JywgcHJlYnVpbHQtPnRhYmxlLT5uYW1lKTsKKworCQkJZXJyb3IgPSByb3dfbWVyZ2VfcmVuYW1l X3RhYmxlcygKKwkJCQlwcmVidWlsdC0+dGFibGUsIGFkZC0+aW5kZXhlZF90YWJsZSwKKwkJCQl0 bXBfbmFtZSwgdHJ4KTsKKworCQkJc3dpdGNoIChlcnJvcikgeworCQkJY2FzZSBEQl9UQUJMRVNQ QUNFX0FMUkVBRFlfRVhJU1RTOgorCQkJY2FzZSBEQl9EVVBMSUNBVEVfS0VZOgorCQkJCWlubm9i YXNlX2NvbnZlcnRfdGFibGVuYW1lKHRtcF9uYW1lKTsKKwkJCQlteV9lcnJvcihIQV9FUlJfVEFC TEVfRVhJU1QsIE1ZRigwKSwgdG1wX25hbWUpOworCQkJCWVyciA9IEhBX0VSUl9UQUJMRV9FWElT VDsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZXJyID0gY29udmVydF9lcnJvcl9jb2Rl X3RvX215c3FsKAorCQkJCQllcnJvciwgcHJlYnVpbHQtPnRhYmxlLT5mbGFncywKKwkJCQkJdXNl cl90aGQpOworCQkJCWJyZWFrOworCQkJfQorCisJCQltZW1faGVhcF9mcmVlKGhlYXApOworCQl9 CisKKwkJaWYgKCFjb21taXQgfHwgZXJyKSB7CisJCQlyb3dfbWVyZ2VfZHJvcF90YWJsZSh0cngs IGFkZC0+aW5kZXhlZF90YWJsZSk7CisJCX0KKworCQl0cnhfY29tbWl0X2Zvcl9teXNxbChwcmVi dWlsdC0+dHJ4KTsKKwkJeworCQkJZGljdF90YWJsZV90KglvbGRfdGFibGUgPSBwcmVidWlsdC0+ dGFibGU7CisJCQlyb3dfcHJlYnVpbHRfZnJlZShwcmVidWlsdCwgVFJVRSk7CisJCQllcnJvciA9 IHJvd19tZXJnZV9kcm9wX3RhYmxlKHRyeCwgb2xkX3RhYmxlKTsKKwkJfQorCQlhZGQtPmluZGV4 ZWRfdGFibGUtPm5fbXlzcWxfaGFuZGxlc19vcGVuZWQrKzsKKwkJcHJlYnVpbHQgPSByb3dfY3Jl YXRlX3ByZWJ1aWx0KGFkZC0+aW5kZXhlZF90YWJsZSk7CisJCWVyciA9IGNvbnZlcnRfZXJyb3Jf Y29kZV90b19teXNxbCgKKwkJCWVycm9yLCBwcmVidWlsdC0+dGFibGUtPmZsYWdzLCB1c2VyX3Ro ZCk7CisJfSBlbHNlIHsKKwkJLyogV2UgY3JlYXRlZCBzZWNvbmRhcnkgaW5kZXhlcyAoIW5ld19w cmltYXJ5KS4gKi8KKworCQlpZiAoY29tbWl0KSB7CisJCQllcnIgPSBjb252ZXJ0X2Vycm9yX2Nv ZGVfdG9fbXlzcWwoCisJCQkJcm93X21lcmdlX3JlbmFtZV9pbmRleGVzKHRyeCwgcHJlYnVpbHQt PnRhYmxlKSwKKwkJCQlwcmVidWlsdC0+dGFibGUtPmZsYWdzLCB1c2VyX3RoZCk7CisJCX0KKwor CQlpZiAoIWNvbW1pdCB8fCBlcnIpIHsKKwkJCWRpY3RfaW5kZXhfdCoJaW5kZXg7CisJCQlkaWN0 X2luZGV4X3QqCW5leHRfaW5kZXg7CisKKwkJCWZvciAoaW5kZXggPSBkaWN0X3RhYmxlX2dldF9m aXJzdF9pbmRleCgKKwkJCQkgICAgIHByZWJ1aWx0LT50YWJsZSk7CisJCQkgICAgIGluZGV4OyBp bmRleCA9IG5leHRfaW5kZXgpIHsKKworCQkJCW5leHRfaW5kZXggPSBkaWN0X3RhYmxlX2dldF9u ZXh0X2luZGV4KGluZGV4KTsKKworCQkJCWlmICgqaW5kZXgtPm5hbWUgPT0gVEVNUF9JTkRFWF9Q UkVGSVgpIHsKKwkJCQkJcm93X21lcmdlX2Ryb3BfaW5kZXgoCisJCQkJCQlpbmRleCwgcHJlYnVp bHQtPnRhYmxlLCB0cngpOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCS8qIFdlIHdpbGwgbmVl ZCB0byByZWJ1aWxkIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlLiBTZXQKKwl2YWxpZCBpbmRleCBl bnRyeSBjb3VudCBpbiB0aGUgdHJhbnNsYXRpb24gdGFibGUgdG8gemVybyAqLworCXNoYXJlLT5p ZHhfdHJhbnNfdGJsLmluZGV4X2NvdW50ID0gMDsKKworCXRyeF9jb21taXRfZm9yX215c3FsKHRy eCk7CisJaWYgKHByZWJ1aWx0LT50cngpIHsKKwkJdHJ4X2NvbW1pdF9mb3JfbXlzcWwocHJlYnVp bHQtPnRyeCk7CisJfQorCisJdXRfZChkaWN0X3RhYmxlX2NoZWNrX2Zvcl9kdXBfaW5kZXhlcyhw cmVidWlsdC0+dGFibGUsIEZBTFNFKSk7CisJcm93X215c3FsX3VubG9ja19kYXRhX2RpY3Rpb25h cnkodHJ4KTsKKworCXRyeF9mcmVlX2Zvcl9teXNxbCh0cngpOwogCiAJLyogVGhlcmUgbWlnaHQg YmUgd29yayBmb3IgdXRpbGl0eSB0aHJlYWRzLiovCiAJc3J2X2FjdGl2ZV93YWtlX21hc3Rlcl90 aHJlYWQoKTsKIAotCURCVUdfUkVUVVJOKGVycm9yKTsKKwlkZWxldGUgYWRkOworCURCVUdfUkVU VVJOKGVycik7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoK --===============5358625014967584858== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/jon.hauglid@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jon.hauglid@stripped # target_branch: file:///export/home/x/mysql-5.5-bug11853126/ # testament_sha1: 16d562513c0c2fe4b5711d1cb594d7226c125a12 # timestamp: 2011-05-13 11:16:30 +0200 # base_revision_id: build@stripped # # Begin bundle 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 SSkK/9jH0f3F3JFOFCQk7LmmAA== --===============5358625014967584858==--