From: Date: January 15 2009 7:24am Subject: bzr commit into mysql-5.1-bugteam branch (zhenxing.he:2733) Bug#33094 Bug#36428 Bug#38364 Bug#41986 List-Archive: http://lists.mysql.com/commits/63317 X-Bug: 33094,36428,38364,41986 Message-Id: <200901150624.n0F6OjTS027660@hezx-dev.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 I0F0IGZpbGU6Ly8vbWVkaWEvc2RiMi9oZXp4L3dvcmsvbXlzcWwvYnpyd29yay9iMzU1ODMvNS4x LWJ1Z3RlYW0vCgogMjczMyBIZSBaaGVueGluZwkyMDA5LTAxLTE1IFttZXJnZV0KICAgICAgYXV0 byBtZXJnZQptb2RpZmllZDoKICBjbGllbnQvbXlzcWxjaGVjay5jCiAgbXlzcWwtdGVzdC9leHRy YS9ycGxfdGVzdHMvcnBsX2F1dG9faW5jcmVtZW50LnRlc3QKICBteXNxbC10ZXN0L3IvbXlzcWxj aGVjay5yZXN1bHQKICBteXNxbC10ZXN0L3N1aXRlL3JwbC9yL3JwbF9hdXRvX2luY3JlbWVudC5y ZXN1bHQKICBteXNxbC10ZXN0L3QvbXlzcWxjaGVjay50ZXN0CiAgbXlzeXMvbXlfaW5pdC5jCiAg c3FsL2xvZ19ldmVudC5jYwogIHNxbC9teXNxbF9wcml2LmgKICBzcWwvc3FsX3RhYmxlLmNjCiAg c3FsL3NxbF90cmlnZ2VyLmNjCiAgc3FsL3NxbF90cmlnZ2VyLmgKCj09PSBtb2RpZmllZCBmaWxl ICdjbGllbnQvbXlzcWxjaGVjay5jJwotLS0gYS9jbGllbnQvbXlzcWxjaGVjay5jCTIwMDgtMTEt MTQgMDk6NDg6MDEgKzAwMDAKKysrIGIvY2xpZW50L215c3FsY2hlY2suYwkyMDA5LTAxLTE0IDE0 OjUwOjUxICswMDAwCkBAIC00MCwxNSArNDAsMTMgQEAgc3RhdGljIHVpbnQgdmVyYm9zZSA9IDAs IG9wdF9teXNxbF9wb3J0PQogc3RhdGljIGludCBteV9lbmRfYXJnOwogc3RhdGljIGNoYXIgKiBv cHRfbXlzcWxfdW5peF9wb3J0ID0gMDsKIHN0YXRpYyBjaGFyICpvcHRfcGFzc3dvcmQgPSAwLCAq Y3VycmVudF91c2VyID0gMCwgCi0JICAgICpkZWZhdWx0X2NoYXJzZXQgPSAoY2hhciAqKU1ZU1FM X0RFRkFVTFRfQ0hBUlNFVF9OQU1FLAotCSAgICAqY3VycmVudF9ob3N0ID0gMDsKKwkgICAgKmRl ZmF1bHRfY2hhcnNldD0gMCwgKmN1cnJlbnRfaG9zdD0gMDsKIHN0YXRpYyBpbnQgZmlyc3RfZXJy b3IgPSAwOwogRFlOQU1JQ19BUlJBWSB0YWJsZXM0cmVwYWlyOwogI2lmZGVmIEhBVkVfU01FTQog c3RhdGljIGNoYXIgKnNoYXJlZF9tZW1vcnlfYmFzZV9uYW1lPTA7CiAjZW5kaWYKIHN0YXRpYyB1 aW50IG9wdF9wcm90b2NvbD0wOwotc3RhdGljIENIQVJTRVRfSU5GTyAqY2hhcnNldF9pbmZvPSAm bXlfY2hhcnNldF9sYXRpbjE7CiAKIGVudW0gb3BlcmF0aW9ucyB7IERPX0NIRUNLLCBET19SRVBB SVIsIERPX0FOQUxZWkUsIERPX09QVElNSVpFLCBET19VUEdSQURFIH07CiAKQEAgLTI4MiwxMiAr MjgwLDEwIEBAIGdldF9vbmVfb3B0aW9uKGludCBvcHRpZCwgY29uc3Qgc3RydWN0IG0KICAgICBi cmVhazsKICAgY2FzZSBPUFRfRklYX0RCX05BTUVTOgogICAgIHdoYXRfdG9fZG89IERPX1VQR1JB REU7Ci0gICAgZGVmYXVsdF9jaGFyc2V0PSAoY2hhciopICJ1dGY4IjsKICAgICBvcHRfZGF0YWJh c2VzPSAxOwogICAgIGJyZWFrOwogICBjYXNlIE9QVF9GSVhfVEFCTEVfTkFNRVM6CiAgICAgd2hh dF90b19kbz0gRE9fVVBHUkFERTsKLSAgICBkZWZhdWx0X2NoYXJzZXQ9IChjaGFyKikgInV0Zjgi OwogICAgIGJyZWFrOwogICBjYXNlICdwJzoKICAgICBpZiAoYXJndW1lbnQpCkBAIC0zNjcsMTEg KzM2MywyMCBAQCBzdGF0aWMgaW50IGdldF9vcHRpb25zKGludCAqYXJnYywgY2hhciAqCiAgICAg ICB3aGF0X3RvX2RvID0gRE9fQ0hFQ0s7CiAgIH0KIAotICAvKiBUT0RPOiBUaGlzIHZhcmlhYmxl IGlzIG5vdCB5ZXQgdXNlZCAqLwotICBpZiAoc3RyY21wKGRlZmF1bHRfY2hhcnNldCwgY2hhcnNl dF9pbmZvLT5jc25hbWUpICYmCi0gICAgICAhKGNoYXJzZXRfaW5mbz0gZ2V0X2NoYXJzZXRfYnlf Y3NuYW1lKGRlZmF1bHRfY2hhcnNldCwgCi0gIAkJCQkJICAgIE1ZX0NTX1BSSU1BUlksIE1ZRihN WV9XTUUpKSkpCi0gICAgICBleGl0KDEpOworICAvKgorICAgIElmIHRoZXJlJ3Mgbm8gLS1kZWZh dWx0LWNoYXJhY3Rlci1zZXQgb3B0aW9uIGdpdmVuIHdpdGgKKyAgICAtLWZpeC10YWJsZS1uYW1l IG9yIC0tZml4LWRiLW5hbWUgc2V0IHRoZSBkZWZhdWx0IGNoYXJhY3RlciBzZXQgdG8gInV0Zjgi LgorICAqLworICBpZiAoIWRlZmF1bHRfY2hhcnNldCAmJiAob3B0X2ZpeF9kYl9uYW1lcyB8fCBv cHRfZml4X3RhYmxlX25hbWVzKSkKKyAgeworICAgIGRlZmF1bHRfY2hhcnNldD0gKGNoYXIqKSAi dXRmOCI7CisgIH0KKyAgaWYgKGRlZmF1bHRfY2hhcnNldCAmJiAhZ2V0X2NoYXJzZXRfYnlfY3Nu YW1lKGRlZmF1bHRfY2hhcnNldCwgTVlfQ1NfUFJJTUFSWSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ZRihNWV9XTUUpKSkKKyAgeworICAgIHByaW50 ZigiVW5zdXBwb3J0ZWQgY2hhcmFjdGVyIHNldDogJXNcbiIsIGRlZmF1bHRfY2hhcnNldCk7Cisg ICAgcmV0dXJuIDE7CisgIH0KICAgaWYgKCphcmdjID4gMCAmJiBvcHRfYWxsZGJzKQogICB7CiAg ICAgcHJpbnRmKCJZb3Ugc2hvdWxkIGdpdmUgb25seSBvcHRpb25zLCBubyBhcmd1bWVudHMgYXQg YWxsLCB3aXRoIG9wdGlvblxuIik7CkBAIC03NzksNiArNzg0LDggQEAgc3RhdGljIGludCBkYkNv bm5lY3QoY2hhciAqaG9zdCwgY2hhciAqdQogICBpZiAoc2hhcmVkX21lbW9yeV9iYXNlX25hbWUp CiAgICAgbXlzcWxfb3B0aW9ucygmbXlzcWxfY29ubmVjdGlvbixNWVNRTF9TSEFSRURfTUVNT1JZ X0JBU0VfTkFNRSxzaGFyZWRfbWVtb3J5X2Jhc2VfbmFtZSk7CiAjZW5kaWYKKyAgaWYgKGRlZmF1 bHRfY2hhcnNldCkKKyAgICBteXNxbF9vcHRpb25zKCZteXNxbF9jb25uZWN0aW9uLCBNWVNRTF9T RVRfQ0hBUlNFVF9OQU1FLCBkZWZhdWx0X2NoYXJzZXQpOwogICBpZiAoIShzb2NrID0gbXlzcWxf cmVhbF9jb25uZWN0KCZteXNxbF9jb25uZWN0aW9uLCBob3N0LCB1c2VyLCBwYXNzd2QsCiAgICAg ICAgICBOVUxMLCBvcHRfbXlzcWxfcG9ydCwgb3B0X215c3FsX3VuaXhfcG9ydCwgMCkpKQogICB7 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9leHRyYS9ycGxfdGVzdHMvcnBsX2F1dG9f aW5jcmVtZW50LnRlc3QnCi0tLSBhL215c3FsLXRlc3QvZXh0cmEvcnBsX3Rlc3RzL3JwbF9hdXRv X2luY3JlbWVudC50ZXN0CTIwMDctMDYtMDYgMTc6NTc6MDcgKzAwMDAKKysrIGIvbXlzcWwtdGVz dC9leHRyYS9ycGxfdGVzdHMvcnBsX2F1dG9faW5jcmVtZW50LnRlc3QJMjAwOS0wMS0xNCAwODoy NzozMiArMDAwMApAQCAtMTQ1LDYgKzE0NSwyMyBAQCBzZWxlY3QgKiBmcm9tIHQzIG9yZGVyIGJ5 IGE7CiBjb25uZWN0aW9uIG1hc3RlcjsKIAogZHJvcCB0YWJsZSB0MSx0Mix0MzsKK3N5bmNfc2xh dmVfd2l0aF9tYXN0ZXI7CisKKyMKKyMgQlVHIzQxOTg2IFJlcGxpY2F0aW9uIHNsYXZlIGRvZXMg bm90IHBpY2sgdXAgcHJvcGVyIEFVVE9fSU5DUkVNRU5UIHZhbHVlIGZvciBJbm5vZGIgdGFibGVz CisjCitjb25uZWN0aW9uIG1hc3RlcjsKK3NldCBhdXRvX2luY3JlbWVudF9pbmNyZW1lbnQ9MTsK K3NldCBhdXRvX2luY3JlbWVudF9vZmZzZXQ9MTsKK0NSRUFURSBUQUJMRSB0MSAoaWQgTUVESVVN SU5UIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZKSBFTkdJTkU9aW5ub2RiOwor SU5TRVJUIElOVE8gdDEgVkFMVUVTIChOVUxMKSwgKE5VTEwpLCAoTlVMTCk7CitzaG93IGNyZWF0 ZSB0YWJsZSB0MTsKKworc3luY19zbGF2ZV93aXRoX21hc3RlcjsKK3Nob3cgY3JlYXRlIHRhYmxl IHQxOworCitjb25uZWN0aW9uIG1hc3RlcjsKK2Ryb3AgdGFibGUgdDE7CiAKICMgRW5kIGNsZWFu dXAKIHN5bmNfc2xhdmVfd2l0aF9tYXN0ZXI7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVz dC9yL215c3FsY2hlY2sucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvbXlzcWxjaGVjay5yZXN1 bHQJMjAwOC0xMS0xNCAwOTo0ODowMSArMDAwMAorKysgYi9teXNxbC10ZXN0L3IvbXlzcWxjaGVj ay5yZXN1bHQJMjAwOS0wMS0xNCAyMDo1NDoyNSArMDAwMApAQCAtMTMwLDMgKzEzMCw1OCBAQCB2 MQogdi0xCiBkcm9wIHZpZXcgdjEsIGB2LTFgOwogZHJvcCB0YWJsZSB0MTsKK1NFVCBOQU1FUyB1 dGY4OworQ1JFQVRFIFRBQkxFIGAjbXlzcWw1MCNAYCAoYSBJTlQpOworU0hPVyBUQUJMRVM7CitU YWJsZXNfaW5fdGVzdAorI215c3FsNTAjQAorU0VUIE5BTUVTIERFRkFVTFQ7CitteXNxbGNoZWNr IC0tZml4LXRhYmxlLW5hbWVzIC0tZGF0YWJhc2VzIHRlc3QKK1NFVCBOQU1FUyB1dGY4OworU0hP VyBUQUJMRVM7CitUYWJsZXNfaW5fdGVzdAorQAorRFJPUCBUQUJMRSBgQGA7CitDUkVBVEUgVEFC TEUgYNGPYCAoYSBJTlQpOworU0VUIE5BTUVTIERFRkFVTFQ7CitteXNxbGNoZWNrIC0tZGVmYXVs dC1jaGFyYWN0ZXItc2V0PSJsYXRpbjEiIC0tZGF0YWJhc2VzIHRlc3QKK3Rlc3QuPworRXJyb3Ig ICAgOiBUYWJsZSBkb2Vzbid0IGV4aXN0CitlcnJvciAgICA6IENvcnJ1cHQKK215c3FsY2hlY2sg LS1kZWZhdWx0LWNoYXJhY3Rlci1zZXQ9InV0ZjgiIC0tZGF0YWJhc2VzIHRlc3QKK3Rlc3Qu0Y8g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9LCitTRVQgTkFNRVMg dXRmODsKK0RST1AgVEFCTEUgYNGPYDsKK1NFVCBOQU1FUyBERUZBVUxUOworQ1JFQVRFIERBVEFC QVNFIGAjbXlzcWw1MCNhQGJgOworVVNFIGAjbXlzcWw1MCNhQGJgOworQ1JFQVRFIFRBQkxFIGAj bXlzcWw1MCNjQGRgIChhIElOVCk7CitDUkVBVEUgVEFCTEUgdDEgKGEgSU5UKTsKK1NFTEVDVCAq IEZST00gSU5GT1JNQVRJT05fU0NIRU1BLlRSSUdHRVJTCitXSEVSRSBUUklHR0VSX1NDSEVNQT0i I215c3FsNTAjYUBiIiBPUkRFUiBCWSB0cmlnZ2VyX25hbWU7CitUUklHR0VSX0NBVEFMT0cJVFJJ R0dFUl9TQ0hFTUEJVFJJR0dFUl9OQU1FCUVWRU5UX01BTklQVUxBVElPTglFVkVOVF9PQkpFQ1Rf Q0FUQUxPRwlFVkVOVF9PQkpFQ1RfU0NIRU1BCUVWRU5UX09CSkVDVF9UQUJMRQlBQ1RJT05fT1JE RVIJQUNUSU9OX0NPTkRJVElPTglBQ1RJT05fU1RBVEVNRU5UCUFDVElPTl9PUklFTlRBVElPTglB Q1RJT05fVElNSU5HCUFDVElPTl9SRUZFUkVOQ0VfT0xEX1RBQkxFCUFDVElPTl9SRUZFUkVOQ0Vf TkVXX1RBQkxFCUFDVElPTl9SRUZFUkVOQ0VfT0xEX1JPVwlBQ1RJT05fUkVGRVJFTkNFX05FV19S T1cJQ1JFQVRFRAlTUUxfTU9ERQlERUZJTkVSCUNIQVJBQ1RFUl9TRVRfQ0xJRU5UCUNPTExBVElP Tl9DT05ORUNUSU9OCURBVEFCQVNFX0NPTExBVElPTgorTlVMTAkjbXlzcWw1MCNhQGIJdHIxCUlO U0VSVAlOVUxMCSNteXNxbDUwI2FAYgkjbXlzcWw1MCNjQGQJMAlOVUxMCVNFVCBORVcuYSA9IDEw ICogTkVXLmEJUk9XCUJFRk9SRQlOVUxMCU5VTEwJT0xECU5FVwlOVUxMCQlyb290QGxvY2FsaG9z dAlsYXRpbjEJbGF0aW4xX3N3ZWRpc2hfY2kJbGF0aW4xX3N3ZWRpc2hfY2kKK05VTEwJI215c3Fs NTAjYUBiCXRyMglJTlNFUlQJTlVMTAkjbXlzcWw1MCNhQGIJdDEJMAlOVUxMCVNFVCBORVcuYSA9 IDEwMCAqIE5FVy5hCVJPVwlCRUZPUkUJTlVMTAlOVUxMCU9MRAlORVcJTlVMTAkJcm9vdEBsb2Nh bGhvc3QJbGF0aW4xCWxhdGluMV9zd2VkaXNoX2NpCWxhdGluMV9zd2VkaXNoX2NpCitXYXJuaW5n czoKK1dhcm5pbmcJMTYwMwlUcmlnZ2VycyBmb3IgdGFibGUgYCNteXNxbDUwI2FAYmAuYCNteXNx bDUwI2NAZGAgaGF2ZSBubyBjcmVhdGlvbiBjb250ZXh0CitXYXJuaW5nCTE2MDMJVHJpZ2dlcnMg Zm9yIHRhYmxlIGAjbXlzcWw1MCNhQGJgLmB0MWAgaGF2ZSBubyBjcmVhdGlvbiBjb250ZXh0Citt eXNxbGNoZWNrIC0tZml4LWRiLW5hbWVzIC0tZml4LXRhYmxlLW5hbWVzIC0tYWxsLWRhdGFiYXNl cworVVNFIGBhQGJgOworU0VMRUNUICogRlJPTSBJTkZPUk1BVElPTl9TQ0hFTUEuVFJJR0dFUlMK K1dIRVJFIFRSSUdHRVJfU0NIRU1BPSJhQGIiIE9SREVSIEJZIHRyaWdnZXJfbmFtZTsKK1RSSUdH RVJfQ0FUQUxPRwlUUklHR0VSX1NDSEVNQQlUUklHR0VSX05BTUUJRVZFTlRfTUFOSVBVTEFUSU9O CUVWRU5UX09CSkVDVF9DQVRBTE9HCUVWRU5UX09CSkVDVF9TQ0hFTUEJRVZFTlRfT0JKRUNUX1RB QkxFCUFDVElPTl9PUkRFUglBQ1RJT05fQ09ORElUSU9OCUFDVElPTl9TVEFURU1FTlQJQUNUSU9O X09SSUVOVEFUSU9OCUFDVElPTl9USU1JTkcJQUNUSU9OX1JFRkVSRU5DRV9PTERfVEFCTEUJQUNU SU9OX1JFRkVSRU5DRV9ORVdfVEFCTEUJQUNUSU9OX1JFRkVSRU5DRV9PTERfUk9XCUFDVElPTl9S RUZFUkVOQ0VfTkVXX1JPVwlDUkVBVEVECVNRTF9NT0RFCURFRklORVIJQ0hBUkFDVEVSX1NFVF9D TElFTlQJQ09MTEFUSU9OX0NPTk5FQ1RJT04JREFUQUJBU0VfQ09MTEFUSU9OCitOVUxMCWFAYgl0 cjEJSU5TRVJUCU5VTEwJYUBiCWNAZAkwCU5VTEwJU0VUIE5FVy5hID0gMTAgKiBORVcuYQlST1cJ QkVGT1JFCU5VTEwJTlVMTAlPTEQJTkVXCU5VTEwJCXJvb3RAbG9jYWxob3N0CXV0ZjgJdXRmOF9n ZW5lcmFsX2NpCWxhdGluMV9zd2VkaXNoX2NpCitOVUxMCWFAYgl0cjIJSU5TRVJUCU5VTEwJYUBi CXQxCTAJTlVMTAlTRVQgTkVXLmEgPSAxMDAgKiBORVcuYQlST1cJQkVGT1JFCU5VTEwJTlVMTAlP TEQJTkVXCU5VTEwJCXJvb3RAbG9jYWxob3N0CXV0ZjgJdXRmOF9nZW5lcmFsX2NpCWxhdGluMV9z d2VkaXNoX2NpCitJTlNFUlQgSU5UTyBgY0BkYCBWQUxVRVMgKDIpLCAoMSk7CitTRUxFQ1QgKiBG Uk9NIGBjQGRgOworYQorMjAKKzEwCitJTlNFUlQgSU5UTyB0MSBWQUxVRVMgKDMpLCAoNSk7CitT RUxFQ1QgKiBGUk9NIHQxOworYQorMzAwCis1MDAKK0RST1AgREFUQUJBU0UgYGFAYmA7CitVU0Ug dGVzdDsKK0VuZCBvZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1 aXRlL3JwbC9yL3JwbF9hdXRvX2luY3JlbWVudC5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3Vp dGUvcnBsL3IvcnBsX2F1dG9faW5jcmVtZW50LnJlc3VsdAkyMDA3LTA2LTI3IDEyOjI4OjAyICsw MDAwCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvcnBsL3IvcnBsX2F1dG9faW5jcmVtZW50LnJlc3Vs dAkyMDA5LTAxLTE0IDA4OjI3OjMyICswMDAwCkBAIC0yMjcsMyArMjI3LDIwIEBAIHNlbGVjdCAq IGZyb20gdDMgb3JkZXIgYnkgYTsKIGEKIDEyNwogZHJvcCB0YWJsZSB0MSx0Mix0MzsKK3NldCBh dXRvX2luY3JlbWVudF9pbmNyZW1lbnQ9MTsKK3NldCBhdXRvX2luY3JlbWVudF9vZmZzZXQ9MTsK K0NSRUFURSBUQUJMRSB0MSAoaWQgTUVESVVNSU5UIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5UIFBS SU1BUlkgS0VZKSBFTkdJTkU9aW5ub2RiOworSU5TRVJUIElOVE8gdDEgVkFMVUVTIChOVUxMKSwg KE5VTEwpLCAoTlVMTCk7CitzaG93IGNyZWF0ZSB0YWJsZSB0MTsKK1RhYmxlCUNyZWF0ZSBUYWJs ZQordDEJQ1JFQVRFIFRBQkxFIGB0MWAgKAorICBgaWRgIG1lZGl1bWludCg5KSBOT1QgTlVMTCBB VVRPX0lOQ1JFTUVOVCwKKyAgUFJJTUFSWSBLRVkgKGBpZGApCispIEVOR0lORT1Jbm5vREIgQVVU T19JTkNSRU1FTlQ9NCBERUZBVUxUIENIQVJTRVQ9bGF0aW4xCitzaG93IGNyZWF0ZSB0YWJsZSB0 MTsKK1RhYmxlCUNyZWF0ZSBUYWJsZQordDEJQ1JFQVRFIFRBQkxFIGB0MWAgKAorICBgaWRgIG1l ZGl1bWludCg5KSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwKKyAgUFJJTUFSWSBLRVkgKGBpZGAp CispIEVOR0lORT1Jbm5vREIgQVVUT19JTkNSRU1FTlQ9NCBERUZBVUxUIENIQVJTRVQ9bGF0aW4x Citkcm9wIHRhYmxlIHQxOwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3QvdC9teXNxbGNo ZWNrLnRlc3QnCi0tLSBhL215c3FsLXRlc3QvdC9teXNxbGNoZWNrLnRlc3QJMjAwOC0xMS0xNCAw OTo0ODowMSArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvbXlzcWxjaGVjay50ZXN0CTIwMDktMDEt MTQgMjA6NTQ6MjUgKzAwMDAKQEAgLTExMiwzICsxMTIsNzggQEAgc2hvdyB0YWJsZXM7CiBzaG93 IHRhYmxlczsKIGRyb3AgdmlldyB2MSwgYHYtMWA7CiBkcm9wIHRhYmxlIHQxOworCisjCisjIEJ1 ZyAjMzMwOTQ6IEVycm9yIGluIHVwZ3JhZGluZyBmcm9tIDUuMCB0byA1LjEgd2hlbiB0YWJsZSBj b250YWlucyB0cmlnZ2VycworIyBCdWcgIzQxMzg1OiBDcmFzaCB3aGVuIGF0dGVtcHRpbmcgdG8g cmVwYWlyIGEgI215c3FsNTAjIHVwZ3JhZGVkIHRhYmxlIHdpdGgKKyMgICAgICAgICAgICAgdHJp Z2dlcnMKKyMKK1NFVCBOQU1FUyB1dGY4OworQ1JFQVRFIFRBQkxFIGAjbXlzcWw1MCNAYCAoYSBJ TlQpOworU0hPVyBUQUJMRVM7CitTRVQgTkFNRVMgREVGQVVMVDsKKy0tZWNobyBteXNxbGNoZWNr IC0tZml4LXRhYmxlLW5hbWVzIC0tZGF0YWJhc2VzIHRlc3QKKy0tZXhlYyAkTVlTUUxfQ0hFQ0sg LS1maXgtdGFibGUtbmFtZXMgLS1kYXRhYmFzZXMgdGVzdAorU0VUIE5BTUVTIHV0Zjg7CitTSE9X IFRBQkxFUzsKK0RST1AgVEFCTEUgYEBgOworCitDUkVBVEUgVEFCTEUgYNGPYCAoYSBJTlQpOwor U0VUIE5BTUVTIERFRkFVTFQ7CistLWVjaG8gbXlzcWxjaGVjayAtLWRlZmF1bHQtY2hhcmFjdGVy LXNldD0ibGF0aW4xIiAtLWRhdGFiYXNlcyB0ZXN0CisjIEVycm9yIHJldHVybmVkIGRlcGVuZHMg b24gcGxhdGZvcm0sIHJlcGxhY2UgaXQgd2l0aCAiVGFibGUgZG9lc24ndCBleGlzdCIKKy0tcmVw bGFjZV9yZXN1bHQgIkNhbid0IGZpbmQgZmlsZTogJy4vdGVzdC9AMDAzZi5mcm0nIChlcnJubzog MjIpIiAiVGFibGUgZG9lc24ndCBleGlzdCIgIlRhYmxlICd0ZXN0Lj8nIGRvZXNuJ3QgZXhpc3Qi ICJUYWJsZSBkb2Vzbid0IGV4aXN0IgorLS1leGVjICRNWVNRTF9DSEVDSyAtLWRlZmF1bHQtY2hh cmFjdGVyLXNldD0ibGF0aW4xIiAtLWRhdGFiYXNlcyB0ZXN0CistLWVjaG8gbXlzcWxjaGVjayAt LWRlZmF1bHQtY2hhcmFjdGVyLXNldD0idXRmOCIgLS1kYXRhYmFzZXMgdGVzdAorLS1leGVjICRN WVNRTF9DSEVDSyAtLWRlZmF1bHQtY2hhcmFjdGVyLXNldD0idXRmOCIgLS1kYXRhYmFzZXMgdGVz dAorU0VUIE5BTUVTIHV0Zjg7CitEUk9QIFRBQkxFIGDRj2A7CitTRVQgTkFNRVMgREVGQVVMVDsK KworQ1JFQVRFIERBVEFCQVNFIGAjbXlzcWw1MCNhQGJgOworVVNFIGAjbXlzcWw1MCNhQGJgOwor Q1JFQVRFIFRBQkxFIGAjbXlzcWw1MCNjQGRgIChhIElOVCk7CitDUkVBVEUgVEFCTEUgdDEgKGEg SU5UKTsKKworIyBDcmVhdGUgNS4wIGxpa2UgdHJpZ2dlcnMKKy0td3JpdGVfZmlsZSAkTVlTUUxU RVNUX1ZBUkRJUi9tYXN0ZXItZGF0YS9hQGIvY0BkLlRSRworVFlQRT1UUklHR0VSUwordHJpZ2dl cnM9J0NSRUFURSBERUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBUUklHR0VSIHRyMSBCRUZPUkUg SU5TRVJUIE9OIGBjQGRgIEZPUiBFQUNIIFJPVyBTRVQgTkVXLmEgPSAxMCAqIE5FVy5hJworc3Fs X21vZGVzPTAKK2RlZmluZXJzPSdyb290QGxvY2FsaG9zdCcKK0VPRgorLS13cml0ZV9maWxlICRN WVNRTFRFU1RfVkFSRElSL21hc3Rlci1kYXRhL2FAYi90cjEuVFJOCitUWVBFPVRSSUdHRVJOQU1F Cit0cmlnZ2VyX3RhYmxlPWNAZAorRU9GCistLXdyaXRlX2ZpbGUgJE1ZU1FMVEVTVF9WQVJESVIv bWFzdGVyLWRhdGEvYUBiL3QxLlRSRworVFlQRT1UUklHR0VSUwordHJpZ2dlcnM9J0NSRUFURSBE RUZJTkVSPWByb290YEBgbG9jYWxob3N0YCBUUklHR0VSIHRyMiBCRUZPUkUgSU5TRVJUIE9OIGBh QGJgLnQxIEZPUiBFQUNIIFJPVyBTRVQgTkVXLmEgPSAxMDAgKiBORVcuYScKK3NxbF9tb2Rlcz0w CitkZWZpbmVycz0ncm9vdEBsb2NhbGhvc3QnCitFT0YKKy0td3JpdGVfZmlsZSAkTVlTUUxURVNU X1ZBUkRJUi9tYXN0ZXItZGF0YS9hQGIvdHIyLlRSTgorVFlQRT1UUklHR0VSTkFNRQordHJpZ2dl cl90YWJsZT10MQorRU9GCisKK1NFTEVDVCAqIEZST00gSU5GT1JNQVRJT05fU0NIRU1BLlRSSUdH RVJTCisgIFdIRVJFIFRSSUdHRVJfU0NIRU1BPSIjbXlzcWw1MCNhQGIiIE9SREVSIEJZIHRyaWdn ZXJfbmFtZTsKKworLS1lY2hvIG15c3FsY2hlY2sgLS1maXgtZGItbmFtZXMgLS1maXgtdGFibGUt bmFtZXMgLS1hbGwtZGF0YWJhc2VzCistLWV4ZWMgJE1ZU1FMX0NIRUNLIC0tZml4LWRiLW5hbWVz IC0tZml4LXRhYmxlLW5hbWVzIC0tYWxsLWRhdGFiYXNlcworCitVU0UgYGFAYmA7CitTRUxFQ1Qg KiBGUk9NIElORk9STUFUSU9OX1NDSEVNQS5UUklHR0VSUworICBXSEVSRSBUUklHR0VSX1NDSEVN QT0iYUBiIiBPUkRFUiBCWSB0cmlnZ2VyX25hbWU7CisKK0lOU0VSVCBJTlRPIGBjQGRgIFZBTFVF UyAoMiksICgxKTsKK1NFTEVDVCAqIEZST00gYGNAZGA7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMg KDMpLCAoNSk7CitTRUxFQ1QgKiBGUk9NIHQxOworCitEUk9QIERBVEFCQVNFIGBhQGJgOworCitV U0UgdGVzdDsKKworLS1lY2hvIEVuZCBvZiA1LjEgdGVzdHMKCj09PSBtb2RpZmllZCBmaWxlICdt eXN5cy9teV9pbml0LmMnCi0tLSBhL215c3lzL215X2luaXQuYwkyMDA4LTExLTEwIDIwOjM4OjQ1 ICswMDAwCisrKyBiL215c3lzL215X2luaXQuYwkyMDA5LTAxLTEyIDE5OjQ4OjAyICswMDAwCkBA IC03OCw4ICs3OCwxMiBAQCBteV9ib29sIG15X2luaXQodm9pZCkKICAgbXlfdW1hc2s9IDA2NjA7 ICAgICAgICAgICAgICAgICAgICAgICAvKiBEZWZhdWx0IHVtYXNrIGZvciBuZXcgZmlsZXMgKi8K ICAgbXlfdW1hc2tfZGlyPSAwNzAwOyAgICAgICAgICAgICAgICAgICAvKiBEZWZhdWx0IHVtYXNr IGZvciBuZXcgZGlyZWN0b3JpZXMgKi8KICAgaW5pdF9nbG9iX2VycnMoKTsKLSNpZiBkZWZpbmVk KFRIUkVBRCkgJiYgZGVmaW5lZChTQUZFX01VVEVYKQorI2lmIGRlZmluZWQoVEhSRUFEKQorICBp ZiAobXlfdGhyZWFkX2dsb2JhbF9pbml0KCkpCisgICAgcmV0dXJuIDE7CisjICBpZiBkZWZpbmVk KFNBRkVfTVVURVgpCiAgIHNhZmVfbXV0ZXhfZ2xvYmFsX2luaXQoKTsJCS8qIE11c3QgYmUgY2Fs bGVkIGVhcmx5ICovCisjICBlbmRpZgogI2VuZGlmCiAjaWYgZGVmaW5lZChUSFJFQUQpICYmIGRl ZmluZWQoTVlfUFRIUkVBRF9GQVNUTVVURVgpICYmICFkZWZpbmVkKFNBRkVfTVVURVgpCiAgIGZh c3RtdXRleF9nbG9iYWxfaW5pdCgpOyAgICAgICAgICAgICAgLyogTXVzdCBiZSBjYWxsZWQgZWFy bHkgKi8KQEAgLTg5LDggKzkzLDYgQEAgbXlfYm9vbCBteV9pbml0KHZvaWQpCiAjaWYgZGVmaW5l ZChIQVZFX1BUSFJFQURfSU5JVCkKICAgcHRocmVhZF9pbml0KCk7CQkJLyogTXVzdCBiZSBjYWxs ZWQgYmVmb3JlIERCVUdfRU5URVIgKi8KICNlbmRpZgotICBpZiAobXlfdGhyZWFkX2dsb2JhbF9p bml0KCkpCi0gICAgcmV0dXJuIDE7CiAjaWYgIWRlZmluZWQoIF9fV0lOX18pICYmICFkZWZpbmVk KF9fTkVUV0FSRV9fKQogICBzaWdmaWxsc2V0KCZteV9zaWduYWxzKTsJCS8qIHNpZ25hbHMgYmxv Y2tlZCBieSBtZl9icmtoYW50ICovCiAjZW5kaWYKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvbG9n X2V2ZW50LmNjJwotLS0gYS9zcWwvbG9nX2V2ZW50LmNjCTIwMDktMDEtMDkgMTA6MzU6MjYgKzAw MDAKKysrIGIvc3FsL2xvZ19ldmVudC5jYwkyMDA5LTAxLTE0IDA5OjMyOjI1ICswMDAwCkBAIC04 MTI5LDYgKzgxMjksOSBAQCBXcml0ZV9yb3dzX2xvZ19ldmVudDo6ZG9fYmVmb3JlX3Jvd19vcGVy CiAgICAgYW5hbHl6ZSBpZiBleHBsaWNpdCBkYXRhIGlzIHByb3ZpZGVkIGZvciBzbGF2ZSdzIFRJ TUVTVEFNUCBjb2x1bW5zKS4KICAgKi8KICAgbV90YWJsZS0+dGltZXN0YW1wX2ZpZWxkX3R5cGU9 IFRJTUVTVEFNUF9OT19BVVRPX1NFVDsKKyAgCisgIC8qIEhvbm9yIG5leHQgbnVtYmVyIGNvbHVt biBpZiBwcmVzZW50ICovCisgIG1fdGFibGUtPm5leHRfbnVtYmVyX2ZpZWxkPSBtX3RhYmxlLT5m b3VuZF9uZXh0X251bWJlcl9maWVsZDsKICAgcmV0dXJuIGVycm9yOwogfQogCkBAIC04MTM3LDYg KzgxNDAsNyBAQCBXcml0ZV9yb3dzX2xvZ19ldmVudDo6ZG9fYWZ0ZXJfcm93X29wZXJhCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVycm9yKQogewog ICBpbnQgbG9jYWxfZXJyb3I9IDA7CisgIG1fdGFibGUtPm5leHRfbnVtYmVyX2ZpZWxkPTA7CiAg IGlmIChiaXRfaXNfc2V0KHNsYXZlX2V4ZWNfbW9kZSwgU0xBVkVfRVhFQ19NT0RFX0lERU1QT1RF TlQpID09IDEgfHwKICAgICAgIG1fdGFibGUtPnMtPmRiX3R5cGUoKS0+ZGJfdHlwZSA9PSBEQl9U WVBFX05EQkNMVVNURVIpCiAgIHsKCj09PSBtb2RpZmllZCBmaWxlICdzcWwvbXlzcWxfcHJpdi5o JwotLS0gYS9zcWwvbXlzcWxfcHJpdi5oCTIwMDktMDEtMDUgMTY6MTA6MjAgKzAwMDAKKysrIGIv c3FsL215c3FsX3ByaXYuaAkyMDA5LTAxLTE0IDE0OjUwOjUxICswMDAwCkBAIC0yMjMwLDYgKzIy MzAsNyBAQCB1aW50IHN0cmNvbnZlcnQoQ0hBUlNFVF9JTkZPICpmcm9tX2NzLCBjCiAgICAgICAg ICAgICAgICAgQ0hBUlNFVF9JTkZPICp0b19jcywgY2hhciAqdG8sIHVpbnQgdG9fbGVuZ3RoLCB1 aW50ICplcnJvcnMpOwogdWludCBmaWxlbmFtZV90b190YWJsZW5hbWUoY29uc3QgY2hhciAqZnJv bSwgY2hhciAqdG8sIHVpbnQgdG9fbGVuZ3RoKTsKIHVpbnQgdGFibGVuYW1lX3RvX2ZpbGVuYW1l KGNvbnN0IGNoYXIgKmZyb20sIGNoYXIgKnRvLCB1aW50IHRvX2xlbmd0aCk7Cit1aW50IGNoZWNr X25fY3V0X215c3FsNTBfcHJlZml4KGNvbnN0IGNoYXIgKmZyb20sIGNoYXIgKnRvLCB1aW50IHRv X2xlbmd0aCk7CiAjZW5kaWYgLyogTVlTUUxfU0VSVkVSIHx8IElOTk9EQl9DT01QQVRJQklMSVRZ X0hPT0tTICovCiAjaWZkZWYgTVlTUUxfU0VSVkVSCiB1aW50IGJ1aWxkX3RhYmxlX2ZpbGVuYW1l KGNoYXIgKmJ1ZmYsIHNpemVfdCBidWZmbGVuLCBjb25zdCBjaGFyICpkYiwKCj09PSBtb2RpZmll ZCBmaWxlICdzcWwvc3FsX3RhYmxlLmNjJwotLS0gYS9zcWwvc3FsX3RhYmxlLmNjCTIwMDktMDEt MTUgMDU6NDI6MDIgKzAwMDAKKysrIGIvc3FsL3NxbF90YWJsZS5jYwkyMDA5LTAxLTE1IDA2OjI0 OjM3ICswMDAwCkBAIC0xMTQsNiArMTE0LDMwIEBAIHVpbnQgZmlsZW5hbWVfdG9fdGFibGVuYW1l KGNvbnN0IGNoYXIgKmYKIH0KIAogCisvKioKKyAgQ2hlY2sgaWYgZ2l2ZW4gc3RyaW5nIGJlZ2lu cyB3aXRoICIjbXlzcWw1MCMiIHByZWZpeCwgY3V0IGl0IGlmIHNvLgorICAKKyAgQHBhcmFtICAg ZnJvbSAgICAgICAgICBzdHJpbmcgdG8gY2hlY2sgYW5kIGN1dCAKKyAgQHBhcmFtICAgdG9bb3V0 XSAgICAgICBidWZmZXIgZm9yIHJlc3VsdCBzdHJpbmcKKyAgQHBhcmFtICAgdG9fbGVuZ3RoICAg ICBpdHMgc2l6ZQorICAKKyAgQHJldHZhbAorICAgIDAgICAgICBubyBwcmVmaXggZm91bmQKKyAg QHJldHZhbAorICAgIG5vbi0wICByZXN1bHQgc3RyaW5nIGxlbmd0aAorKi8KKwordWludCBjaGVj a19uX2N1dF9teXNxbDUwX3ByZWZpeChjb25zdCBjaGFyICpmcm9tLCBjaGFyICp0bywgdWludCB0 b19sZW5ndGgpCit7CisgIGlmIChmcm9tWzBdID09ICcjJyAmJiAKKyAgICAgICFzdHJuY21wKGZy b20sIE1ZU1FMNTBfVEFCTEVfTkFNRV9QUkVGSVgsCisgICAgICAgICAgICAgICBNWVNRTDUwX1RB QkxFX05BTUVfUFJFRklYX0xFTkdUSCkpCisgICAgcmV0dXJuICh1aW50KSAoc3RybWFrZSh0bywg ZnJvbSArIE1ZU1FMNTBfVEFCTEVfTkFNRV9QUkVGSVhfTEVOR1RILAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgdG9fbGVuZ3RoIC0gMSkgLSB0byk7CisgIHJldHVybiAwOworfQorCisKIC8q CiAgIFRyYW5zbGF0ZSBhIHRhYmxlIG5hbWUgdG8gYSBmaWxlIG5hbWUgKFdMICMxMzI0KS4KIApA QCAtMTMzLDExICsxNTcsOCBAQCB1aW50IHRhYmxlbmFtZV90b19maWxlbmFtZShjb25zdCBjaGFy ICpmCiAgIERCVUdfRU5URVIoInRhYmxlbmFtZV90b19maWxlbmFtZSIpOwogICBEQlVHX1BSSU5U KCJlbnRlciIsICgiZnJvbSAnJXMnIiwgZnJvbSkpOwogCi0gIGlmIChmcm9tWzBdID09ICcjJyAm JiAhc3RybmNtcChmcm9tLCBNWVNRTDUwX1RBQkxFX05BTUVfUFJFRklYLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTVlTUUw1MF9UQUJMRV9OQU1FX1BSRUZJWF9MRU5HVEgpKQot ICAgIERCVUdfUkVUVVJOKCh1aW50KSAoc3RybWFrZSh0bywgZnJvbStNWVNRTDUwX1RBQkxFX05B TUVfUFJFRklYX0xFTkdUSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fbGVu Z3RoLTEpIC0KLSAgICAgICAgICAgICAgICAgICAgICAgIChmcm9tICsgTVlTUUw1MF9UQUJMRV9O QU1FX1BSRUZJWF9MRU5HVEgpKSk7CisgIGlmICgobGVuZ3RoPSBjaGVja19uX2N1dF9teXNxbDUw X3ByZWZpeChmcm9tLCB0bywgdG9fbGVuZ3RoKSkpCisgICAgREJVR19SRVRVUk4obGVuZ3RoKTsK ICAgbGVuZ3RoPSBzdHJjb252ZXJ0KHN5c3RlbV9jaGFyc2V0X2luZm8sIGZyb20sCiAgICAgICAg ICAgICAgICAgICAgICAmbXlfY2hhcnNldF9maWxlbmFtZSwgdG8sIHRvX2xlbmd0aCwgJmVycm9y cyk7CiAgIGlmIChjaGVja19pZl9sZWdhbF90YWJsZW5hbWUodG8pICYmCgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL3NxbF90cmlnZ2VyLmNjJwotLS0gYS9zcWwvc3FsX3RyaWdnZXIuY2MJMjAwOC0x MS0xNCAxNzozNzoyNyArMDAwMAorKysgYi9zcWwvc3FsX3RyaWdnZXIuY2MJMjAwOS0wMS0xNCAx NDo1MDo1MSArMDAwMApAQCAtMTM2OCwxNSArMTM2OCwyNyBAQCBib29sIFRhYmxlX3RyaWdnZXJz X2xpc3Q6OmNoZWNrX25fbG9hZChUCiAKICAgICAgICAgaWYgKHRyaWdnZXJzLT5vbl90YWJsZV9u YW1lc19saXN0LnB1c2hfYmFjayhvbl90YWJsZV9uYW1lLCAmdGFibGUtPm1lbV9yb290KSkKICAg ICAgICAgICBnb3RvIGVycl93aXRoX2xleF9jbGVhbnVwOwotCisjaWZuZGVmIERCVUdfT0ZGCiAg ICAgICAgIC8qCiAgICAgICAgICAgTGV0IHVzIGNoZWNrIHRoYXQgd2UgY29ycmVjdGx5IHVwZGF0 ZSB0cmlnZ2VyIGRlZmluaXRpb25zIHdoZW4gd2UKICAgICAgICAgICByZW5hbWUgdGFibGVzIHdp dGggdHJpZ2dlcnMuCisgICAgICAgICAgCisgICAgICAgICAgSW4gc3BlY2lhbCBjYXNlcyBsaWtl ICJSRU5BTUUgVEFCTEUgYCNteXNxbDUwI3NvbWVuYW1lYCBUTyBgc29tZW5hbWVgIgorICAgICAg ICAgIG9yICJBTFRFUiBEQVRBQkFTRSBgI215c3FsNTAjc29tZW5hbWVgIFVQR1JBREUgREFUQSBE SVJFQ1RPUlkgTkFNRSIKKyAgICAgICAgICB3ZSBtaWdodCBiZSBnaXZlbiB0YWJsZSBvciBkYXRh YmFzZSBuYW1lIHdpdGggIiNteXNxbDUwIyIgcHJlZml4IChhbmQKKyAgICAgICAgICB0cmlnZ2Vy J3MgZGVmaW5pdG9uIGNvbnRhaW5zIHVuLXByZWZpeGVkIHZlcnNpb24gb2YgdGhlIHNhbWUgbmFt ZSkuCisgICAgICAgICAgVG8gcmVtb3ZlIHRoaXMgcHJlZml4IHdlIHVzZSBjaGVja19uX2N1dF9t eXNxbDUwX3ByZWZpeCgpLgogICAgICAgICAqLwotICAgICAgICBEQlVHX0FTU0VSVCghbXlfc3Ry Y2FzZWNtcCh0YWJsZV9hbGlhc19jaGFyc2V0LCBsZXgucXVlcnlfdGFibGVzLT5kYiwgZGIpICYm Ci0gICAgICAgICAgICAgICAgICAgICFteV9zdHJjYXNlY21wKHRhYmxlX2FsaWFzX2NoYXJzZXQs IGxleC5xdWVyeV90YWJsZXMtPnRhYmxlX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRhYmxlX25hbWUpKTsKIAorICAgICAgICBjaGFyIGZuYW1lW05BTUVfTEVOICsg MV07CisgICAgICAgIERCVUdfQVNTRVJUKCghbXlfc3RyY2FzZWNtcCh0YWJsZV9hbGlhc19jaGFy c2V0LCBsZXgucXVlcnlfdGFibGVzLT5kYiwgZGIpIHx8CisgICAgICAgICAgICAgICAgICAgICAo Y2hlY2tfbl9jdXRfbXlzcWw1MF9wcmVmaXgoZGIsIGZuYW1lLCBzaXplb2YoZm5hbWUpKSAmJgor ICAgICAgICAgICAgICAgICAgICAgICFteV9zdHJjYXNlY21wKHRhYmxlX2FsaWFzX2NoYXJzZXQs IGxleC5xdWVyeV90YWJsZXMtPmRiLCBmbmFtZSkpKSAmJgorICAgICAgICAgICAgICAgICAgICAo IW15X3N0cmNhc2VjbXAodGFibGVfYWxpYXNfY2hhcnNldCwgbGV4LnF1ZXJ5X3RhYmxlcy0+dGFi bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX25hbWUp IHx8CisgICAgICAgICAgICAgICAgICAgICAoY2hlY2tfbl9jdXRfbXlzcWw1MF9wcmVmaXgodGFi bGVfbmFtZSwgZm5hbWUsIHNpemVvZihmbmFtZSkpICYmCisgICAgICAgICAgICAgICAgICAgICAg IW15X3N0cmNhc2VjbXAodGFibGVfYWxpYXNfY2hhcnNldCwgbGV4LnF1ZXJ5X3RhYmxlcy0+dGFi bGVfbmFtZSwgZm5hbWUpKSkpOworI2VuZGlmCiAgICAgICAgIGlmIChuYW1lc19vbmx5KQogICAg ICAgICB7CiAgICAgICAgICAgbGV4X2VuZCgmbGV4KTsKQEAgLTE2OTIsNyArMTcwNCw4IEBAIGVu ZDoKICAgKGNoYW5nZSBuYW1lIG9mIHRhYmxlIGluIHRyaWdnZXJzJyBkZWZpbml0aW9ucykuCiAK ICAgQHBhcmFtIHRoZCAgICAgICAgICAgICAgICAgVGhyZWFkIGNvbnRleHQKLSAgQHBhcmFtIGRi X25hbWUgICAgICAgICAgICAgRGF0YWJhc2Ugb2Ygc3ViamVjdCB0YWJsZQorICBAcGFyYW0gb2xk X2RiX25hbWUgICAgICAgICBPbGQgZGF0YWJhc2Ugb2Ygc3ViamVjdCB0YWJsZQorICBAcGFyYW0g bmV3X2RiX25hbWUgICAgICAgICBOZXcgZGF0YWJhc2Ugb2Ygc3ViamVjdCB0YWJsZQogICBAcGFy YW0gb2xkX3RhYmxlX25hbWUgICAgICBPbGQgc3ViamVjdCB0YWJsZSdzIG5hbWUKICAgQHBhcmFt IG5ld190YWJsZV9uYW1lICAgICAgTmV3IHN1YmplY3QgdGFibGUncyBuYW1lCiAKQEAgLTE3MDQs NyArMTcxNyw4IEBAIGVuZDoKIAogYm9vbAogVGFibGVfdHJpZ2dlcnNfbGlzdDo6Y2hhbmdlX3Rh YmxlX25hbWVfaW5fdHJpZ2dlcnMoVEhEICp0aGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkYl9uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqb2xk X2RiX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpuZXdfZGJfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExFWF9TVFJJTkcgKm9sZF90YWJsZV9uYW1lLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVYX1NUUklO RyAqbmV3X3RhYmxlX25hbWUpCiB7CkBAIC0xNzU3LDExICsxNzcxLDExIEBAIFRhYmxlX3RyaWdn ZXJzX2xpc3Q6OmNoYW5nZV90YWJsZV9uYW1lX2kKICAgaWYgKHRoZC0+aXNfZmF0YWxfZXJyb3Ip CiAgICAgcmV0dXJuIFRSVUU7IC8qIE9PTSAqLwogCi0gIGlmIChzYXZlX3RyaWdnZXJfZmlsZSh0 aGlzLCBkYl9uYW1lLCBuZXdfdGFibGVfbmFtZS0+c3RyKSkKKyAgaWYgKHNhdmVfdHJpZ2dlcl9m aWxlKHRoaXMsIG5ld19kYl9uYW1lLCBuZXdfdGFibGVfbmFtZS0+c3RyKSkKICAgICByZXR1cm4g VFJVRTsKLSAgaWYgKHJtX3RyaWdnZXJfZmlsZShwYXRoX2J1ZmYsIGRiX25hbWUsIG9sZF90YWJs ZV9uYW1lLT5zdHIpKQorICBpZiAocm1fdHJpZ2dlcl9maWxlKHBhdGhfYnVmZiwgb2xkX2RiX25h bWUsIG9sZF90YWJsZV9uYW1lLT5zdHIpKQogICB7Ci0gICAgKHZvaWQpIHJtX3RyaWdnZXJfZmls ZShwYXRoX2J1ZmYsIGRiX25hbWUsIG5ld190YWJsZV9uYW1lLT5zdHIpOworICAgICh2b2lkKSBy bV90cmlnZ2VyX2ZpbGUocGF0aF9idWZmLCBuZXdfZGJfbmFtZSwgbmV3X3RhYmxlX25hbWUtPnN0 cik7CiAgICAgcmV0dXJuIFRSVUU7CiAgIH0KICAgcmV0dXJuIEZBTFNFOwpAQCAtMTc3Miw3ICsx Nzg2LDggQEAgVGFibGVfdHJpZ2dlcnNfbGlzdDo6Y2hhbmdlX3RhYmxlX25hbWVfaQogICBJdGVy YXRlIHRob3VnaCBUYWJsZV90cmlnZ2Vyc19saXN0OjpuYW1lc19saXN0IGxpc3QgYW5kIHVwZGF0 ZQogICAuVFJOIGZpbGVzIGFmdGVyIHJlbmFtaW5nIHRyaWdnZXJzJyBzdWJqZWN0IHRhYmxlLgog Ci0gIEBwYXJhbSBkYl9uYW1lICAgICAgICAgICAgIERhdGFiYXNlIG9mIHN1YmplY3QgdGFibGUK KyAgQHBhcmFtIG9sZF9kYl9uYW1lICAgICAgICAgT2xkIGRhdGFiYXNlIG9mIHN1YmplY3QgdGFi bGUKKyAgQHBhcmFtIG5ld19kYl9uYW1lICAgICAgICAgTmV3IGRhdGFiYXNlIG9mIHN1YmplY3Qg dGFibGUKICAgQHBhcmFtIG5ld190YWJsZV9uYW1lICAgICAgTmV3IHN1YmplY3QgdGFibGUncyBu YW1lCiAgIEBwYXJhbSBzdG9wcGVyICAgICAgICAgICAgIFBvaW50ZXIgdG8gVGFibGVfdHJpZ2dl cnNfbGlzdDo6bmFtZXNfbGlzdCBhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlj aCB3ZSBzaG91bGQgc3RvcCB1cGRhdGluZy4KQEAgLTE3ODUsNyArMTgwMCw4IEBAIFRhYmxlX3Ry aWdnZXJzX2xpc3Q6OmNoYW5nZV90YWJsZV9uYW1lX2kKICovCiAKIExFWF9TVFJJTkcqCi1UYWJs ZV90cmlnZ2Vyc19saXN0OjpjaGFuZ2VfdGFibGVfbmFtZV9pbl90cmlnbmFtZXMoY29uc3QgY2hh ciAqZGJfbmFtZSwKK1RhYmxlX3RyaWdnZXJzX2xpc3Q6OmNoYW5nZV90YWJsZV9uYW1lX2luX3Ry aWduYW1lcyhjb25zdCBjaGFyICpvbGRfZGJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuZXdfZGJfbmFtZSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMRVhfU1RS SU5HICpuZXdfdGFibGVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMRVhfU1RSSU5HICpzdG9wcGVyKQogewpAQCAtMTc5OCw3ICsxODE0 LDcgQEAgVGFibGVfdHJpZ2dlcnNfbGlzdDo6Y2hhbmdlX3RhYmxlX25hbWVfaQogICB3aGlsZSAo KHRyaWdnZXI9IGl0X25hbWUrKykgIT0gc3RvcHBlcikKICAgewogICAgIHRyaWduYW1lX2ZpbGUu bGVuZ3RoPSBidWlsZF90YWJsZV9maWxlbmFtZSh0cmlnbmFtZV9idWZmLCBGTl9SRUZMRU4tMSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJfbmFtZSwg dHJpZ2dlci0+c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBuZXdfZGJfbmFtZSwgdHJpZ2dlci0+c3RyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBUUk5fRVhULCAwKTsKICAgICB0cmlnbmFtZV9maWxlLnN0 cj0gdHJpZ25hbWVfYnVmZjsKIApAQCAtMTgwNyw2ICsxODIzLDE2IEBAIFRhYmxlX3RyaWdnZXJz X2xpc3Q6OmNoYW5nZV90YWJsZV9uYW1lX2kKICAgICBpZiAoc3FsX2NyZWF0ZV9kZWZpbml0aW9u X2ZpbGUoTlVMTCwgJnRyaWduYW1lX2ZpbGUsICZ0cmlnbmFtZV9maWxlX3R5cGUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1Y2hhciopJnRyaWduYW1lLCB0cmlnbmFtZV9m aWxlX3BhcmFtZXRlcnMpKQogICAgICAgcmV0dXJuIHRyaWdnZXI7CisgICAgICAKKyAgICAvKiBS ZW1vdmUgc3RhbGUgLlRSTiBmaWxlIGluIGNhc2Ugb2YgZGF0YWJhc2UgdXBncmFkZSAqLworICAg IGlmIChvbGRfZGJfbmFtZSkKKyAgICB7CisgICAgICBpZiAocm1fdHJpZ25hbWVfZmlsZSh0cmln bmFtZV9idWZmLCBvbGRfZGJfbmFtZSwgdHJpZ2dlci0+c3RyKSkKKyAgICAgIHsKKyAgICAgICAg KHZvaWQpIHJtX3RyaWduYW1lX2ZpbGUodHJpZ25hbWVfYnVmZiwgbmV3X2RiX25hbWUsIHRyaWdn ZXItPnN0cik7CisgICAgICAgIHJldHVybiB0cmlnZ2VyOworICAgICAgfQorICAgIH0KICAgfQog CiAgIHJldHVybiAwOwpAQCAtMTg0MCw2ICsxODY2LDcgQEAgYm9vbCBUYWJsZV90cmlnZ2Vyc19s aXN0OjpjaGFuZ2VfdGFibGVfbgogewogICBUQUJMRSB0YWJsZTsKICAgYm9vbCByZXN1bHQ9IDA7 CisgIGJvb2wgdXBncmFkaW5nNTB0bzUxPSBGQUxTRTsgCiAgIExFWF9TVFJJTkcgKmVycl90cmln bmFtZTsKICAgREJVR19FTlRFUigiY2hhbmdlX3RhYmxlX25hbWUiKTsKIApAQCAtMTg3NywxNCAr MTkwNCwyNyBAQCBib29sIFRhYmxlX3RyaWdnZXJzX2xpc3Q6OmNoYW5nZV90YWJsZV9uCiAgICAg ICBtb3ZpbmcgdGFibGUgd2l0aCB0aGVtIGJldHdlZW4gdHdvIHNjaGVtYXMgcmFpc2VzIHRvbyBt YW55IHF1ZXN0aW9ucy4KICAgICAgIChFLmcuIHdoYXQgc2hvdWxkIGhhcHBlbiBpZiBpbiBuZXcg c2NoZW1hIHdlIGFscmVhZHkgaGF2ZSB0cmlnZ2VyCiAgICAgICAgd2l0aCBzYW1lIG5hbWUgPyku CisgICAgICAgCisgICAgICBJbiBjYXNlIG9mICJBTFRFUiBEQVRBQkFTRSBgI215c3FsNTAjZGIx YCBVUEdSQURFIERBVEEgRElSRUNUT1JZIE5BTUUiCisgICAgICB3ZSB3aWxsIGJlIGdpdmVuIHRh YmxlIG5hbWUgd2l0aCAiI215c3FsNTAjIiBwcmVmaXgKKyAgICAgIFRvIHJlbW92ZSB0aGlzIHBy ZWZpeCB3ZSB1c2UgY2hlY2tfbl9jdXRfbXlzcWw1MF9wcmVmaXgoKS4KICAgICAqLwogICAgIGlm IChteV9zdHJjYXNlY21wKHRhYmxlX2FsaWFzX2NoYXJzZXQsIGRiLCBuZXdfZGIpKQogICAgIHsK LSAgICAgIG15X2Vycm9yKEVSX1RSR19JTl9XUk9OR19TQ0hFTUEsIE1ZRigwKSk7Ci0gICAgICBy ZXN1bHQ9IDE7Ci0gICAgICBnb3RvIGVuZDsKKyAgICAgIGNoYXIgZGJuYW1lW05BTUVfTEVOICsg MV07CisgICAgICBpZiAoY2hlY2tfbl9jdXRfbXlzcWw1MF9wcmVmaXgoZGIsIGRibmFtZSwgc2l6 ZW9mKGRibmFtZSkpICYmIAorICAgICAgICAgICFteV9zdHJjYXNlY21wKHRhYmxlX2FsaWFzX2No YXJzZXQsIGRibmFtZSwgbmV3X2RiKSkKKyAgICAgIHsKKyAgICAgICAgdXBncmFkaW5nNTB0bzUx PSBUUlVFOworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBteV9lcnJvcihF Ul9UUkdfSU5fV1JPTkdfU0NIRU1BLCBNWUYoMCkpOworICAgICAgICByZXN1bHQ9IDE7CisgICAg ICAgIGdvdG8gZW5kOworICAgICAgfQogICAgIH0KLSAgICBpZiAodGFibGUudHJpZ2dlcnMtPmNo YW5nZV90YWJsZV9uYW1lX2luX3RyaWdnZXJzKHRoZCwgZGIsCisgICAgaWYgKHRhYmxlLnRyaWdn ZXJzLT5jaGFuZ2VfdGFibGVfbmFtZV9pbl90cmlnZ2Vycyh0aGQsIGRiLCBuZXdfZGIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2xkX3Rh YmxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmbmV3X3RhYmxlX25hbWUpKQogICAgIHsKQEAgLTE4OTIsNyArMTkzMiw4IEBAIGJv b2wgVGFibGVfdHJpZ2dlcnNfbGlzdDo6Y2hhbmdlX3RhYmxlX24KICAgICAgIGdvdG8gZW5kOwog ICAgIH0KICAgICBpZiAoKGVycl90cmlnbmFtZT0gdGFibGUudHJpZ2dlcnMtPmNoYW5nZV90YWJs ZV9uYW1lX2luX3RyaWduYW1lcygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGIsICZuZXdfdGFibGVfbmFtZSwgMCkpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1cGdyYWRpbmc1MHRvNTEgPyBkYiA6IE5VTEwsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19kYiwgJm5ld190YWJsZV9uYW1lLCAw KSkpCiAgICAgewogICAgICAgLyoKICAgICAgICAgSWYgd2Ugd2VyZSB1bmFibGUgdG8gdXBkYXRl IG9uZSBvZiAuVFJOIGZpbGVzIHByb3Blcmx5IHdlIHdpbGwKQEAgLTE5MDAsMTYgKzE5NDEsMTcg QEAgYm9vbCBUYWJsZV90cmlnZ2Vyc19saXN0OjpjaGFuZ2VfdGFibGVfbgogICAgICAgICBXZSBh c3N1bWUgdGhhdCB3ZSB3aWxsIGJlIGFibGUgdG8gdW5kbyBvdXIgY2hhbmdlcyB3aXRob3V0IGVy cm9ycwogICAgICAgICAod2UgY2FuJ3QgZG8gbXVjaCBpZiB0aGVyZSB3aWxsIGJlIGFuIGVycm9y IGFueXdheSkuCiAgICAgICAqLwotICAgICAgKHZvaWQpIHRhYmxlLnRyaWdnZXJzLT5jaGFuZ2Vf dGFibGVfbmFtZV9pbl90cmlnbmFtZXMoZGIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2xkX3RhYmxlX25hbWUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJf dHJpZ25hbWUpOwotICAgICAgKHZvaWQpIHRhYmxlLnRyaWdnZXJzLT5jaGFuZ2VfdGFibGVfbmFt ZV9pbl90cmlnZ2Vycyh0aGQsIGRiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3RhYmxlX25hbWUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvbGRfdGFibGVf bmFtZSk7CisgICAgICAodm9pZCkgdGFibGUudHJpZ2dlcnMtPmNoYW5nZV90YWJsZV9uYW1lX2lu X3RyaWduYW1lcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRpbmc1MHRv NTEgPyBuZXdfZGIgOiBOVUxMLCBkYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm b2xkX3RhYmxlX25hbWUsIGVycl90cmlnbmFtZSk7CisgICAgICAodm9pZCkgdGFibGUudHJpZ2dl cnMtPmNoYW5nZV90YWJsZV9uYW1lX2luX3RyaWdnZXJzKAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRoZCwgZGIsIG5ld19kYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmbmV3X3RhYmxlX25hbWUsICZvbGRfdGFibGVfbmFtZSk7CiAgICAgICByZXN1bHQ9IDE7CiAg ICAgICBnb3RvIGVuZDsKICAgICB9CiAgIH0KKyAgCiBlbmQ6CiAgIGRlbGV0ZSB0YWJsZS50cmln Z2VyczsKICAgZnJlZV9yb290KCZ0YWJsZS5tZW1fcm9vdCwgTVlGKDApKTsKCj09PSBtb2RpZmll ZCBmaWxlICdzcWwvc3FsX3RyaWdnZXIuaCcKLS0tIGEvc3FsL3NxbF90cmlnZ2VyLmgJMjAwNy0x MC0xNiAyMDoxMTo1MCArMDAwMAorKysgYi9zcWwvc3FsX3RyaWdnZXIuaAkyMDA5LTAxLTE0IDE0 OjUwOjUxICswMDAwCkBAIC0xNDYsMTEgKzE0NiwxMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg IGJvb2wgcHJlcGFyZV9yZWNvcmQxX2FjY2Vzc29ycyhUQUJMRSAqdGFibGUpOwotICBMRVhfU1RS SU5HKiBjaGFuZ2VfdGFibGVfbmFtZV9pbl90cmlnbmFtZXMoY29uc3QgY2hhciAqZGJfbmFtZSwK KyAgTEVYX1NUUklORyogY2hhbmdlX3RhYmxlX25hbWVfaW5fdHJpZ25hbWVzKGNvbnN0IGNoYXIg Km9sZF9kYl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbmV3X2RiX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMRVhfU1RSSU5HICpuZXdfdGFibGVfbmFtZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExFWF9TVFJJTkcgKnN0b3BwZXIpOwog ICBib29sIGNoYW5nZV90YWJsZV9uYW1lX2luX3RyaWdnZXJzKFRIRCAqdGhkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRiX25hbWUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqb2xkX2RiX25hbWUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmV3X2RiX25h bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVYX1NUUklORyAqb2xk X3RhYmxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVYX1NU UklORyAqbmV3X3RhYmxlX25hbWUpOwogfTsKCg==