From: marko.makela Date: June 4 2012 9:51pm Subject: bzr push into mysql-trunk-wl6255 branch (marko.makela:3934 to 3937) WL#6255 List-Archive: http://lists.mysql.com/commits/144082 Message-Id: <201206042151.q54LpIWK007076@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM5MzcgTWFya28gTcOka2Vsw6QJMjAxMi0wNi0wNQogICAgICBXTCM2MjU1IEFMVEVSX0NPTFVN Tl9PUkRFUiBhbmQgRFJPUF9DT0xVTU4gKERST1AgQ09MVU1OIGFuZCBjb2x1bW4gcmVvcmRlcikK ICAgICAgCiAgICAgIGhhX2lubm9iYXNlX2lucGxhY2VfY3R4KCk6IEFkZCBjb2xfbWFwIGZvciBt YXBwaW5nIG9sZCBjb2x1bW4gbnVtYmVycwogICAgICB0byBuZXcgb25lcyB3aGVuIHJlYnVpbGRp bmcgYSB0YWJsZS4KICAgICAgCiAgICAgIGlubm9iYXNlX2J1aWxkX2NvbF9tYXAoKTogTWFwIG9s ZCBjb2x1bW4gbnVtYmVycyB0byBuZXcgb25lcy4gRHJvcHBlZAogICAgICBjb2x1bW5zIGFyZSBp bmRpY2F0ZWQgYnkgVUxJTlRfVU5ERUZJTkVELgogICAgICAKICAgICAgcHJlcGFyZV9pbnBsYWNl X2FsdGVyX3RhYmxlX2RpY3QoKTogSW52b2tlIGlubm9iYXNlX2J1aWxkX2NvbF9tYXAoKQogICAg ICB3aGVuZXZlciByZWJ1aWxkaW5nIHRoZSB0YWJsZS4KICAgICAgCiAgICAgIHJvd19sb2dfdGFi bGVfYXBwbHkoKSwgcm93X21lcmdlX2J1aWxkX2luZGV4ZXMoKSwgcm93X2J1aWxkKCksCiAgICAg IHJvd19sb2dfdGFibGVfYXBwbHlfY29udmVydF9tcmVjKCksIHJvd19sb2dfdGFibGVfYXBwbHlf aW5zZXJ0KCksCiAgICAgIHJvd19sb2dfdGFibGVfYXBwbHlfdXBkYXRlKCksIHJvd19sb2dfdGFi bGVfYXBwbHlfb3AoKSwKICAgICAgcm93X2xvZ190YWJsZV9hcHBseV9vcHMoKSwgcm93X21lcmdl X2J1aWxkX2luZGV4ZXMoKTogQWRkIHRoZQogICAgICBwYXJhbWV0ZXIgY29sX21hcC4KICAgICAg CiAgICAgIHJvd19tZXJnZV9idWZfYWRkKCk6IFJlbW92ZSB0aGUgdHdlYWtzIGZvciBGVFNfRE9D X0lELiBUaGV5IHdpbGwgbm93CiAgICAgIGJlIGhhbmRsZWQgYnkgdGhlIGNvbF9tYXAuCiAgICAg IAogICAgICByb3dfbWVyZ2VfcmVhZF9jbHVzdGVyZWRfaW5kZXgoKTogQWRkIHRoZSBwYXJhbWV0 ZXIgY29sX21hcC4gIFJlbW92ZQogICAgICB0aGUgYXJyYXkgbnVsbGFibGVbXS4gTm8gbG9uZ2Vy IHR3ZWFrIHRoZSBEQVRBX05PVF9OVUxMIGZpZWxkIG9mIHRoZQogICAgICByb3cgdHVwbGUsIGJl Y2F1c2UgaXQgd2lsbCBoYXZlIGJlZW4gc2V0IHVwIGluIHJvd19idWlsZCgpLgoKICAgIG1vZGlm aWVkOgogICAgICBteXNxbC10ZXN0L3IvYWx0ZXJfdGFibGUucmVzdWx0CiAgICAgIG15c3FsLXRl c3Qvc3VpdGUvaW5ub2RiL3IvaW5ub2RiLXRhYmxlLW9ubGluZS5yZXN1bHQKICAgICAgbXlzcWwt dGVzdC9zdWl0ZS9pbm5vZGIvdC9pbm5vZGItdGFibGUtb25saW5lLnRlc3QKICAgICAgc3RvcmFn ZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFz ZS9pbmNsdWRlL3JvdzBsb2cuaAogICAgICBzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MG1l cmdlLmgKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzByb3cuaAogICAgICBzdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwbG9nLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93L3Jv dzBtZXJnZS5jYwogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwcm93LmNjCiAgICAgIHN0 b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1bmRvLmNjCiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2Uvcm93 L3JvdzB1cGQuY2MKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHZlcnMuY2MKIDM5MzYg TWFya28gTcOka2Vsw6QJMjAxMi0wNi0wNAogICAgICBmdHNfZ2V0X2RvY19pZF9mcm9tX3JlYygp OiBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgY2FzdCBhbmQgYWRkIGFzc2VydGlvbnMuCgogICAgbW9k aWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2Jhc2UvZnRzL2Z0czBmdHMuY2MKIDM5MzUgTWFya28g TcOka2Vsw6QJMjAxMi0wNi0wNAogICAgICBDcmFuayB1cCBWYWxncmluZCBpbnN0cnVtZW50YXRp b24uCiAgICAgIAogICAgICBkdHVwbGVfY3JlYXRlX2Zyb21fbWVtKCk6IEFkZCBWYWxncmluZCBp bnN0cnVtZW50YXRpb24gZm9yIHR1cGxlLT5maWVsZHMuCiAgICAgIGR0dXBsZV9jcmVhdGUoKTog UmVtb3ZlIHRoZSBWYWxncmluZCBpbnN0cnVtZW50YXRpb24uCgogICAgbW9kaWZpZWQ6CiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9kYXRhMGRhdGEuaWMKIDM5MzQgTWFya28gTcOka2Vs w6QJMjAxMi0wNi0wNAogICAgICBXTCM2MjU1IGJ1ZyBmaXg6IERpc2FsbG93IG9ubGluZSBhZGRp dGlvbiBvZiBhIGhpZGRlbiBGVFNfRE9DX0lELgogICAgICAKICAgICAgSWYgRlRTX0RPQ19JRCBp cyBiZWluZyBleHBsaWNpdGx5IGFkZGVkIG9yIHJlbmFtZWQgYnkgdGhlIHVzZXIsCiAgICAgIHRo YXQgaXMgT0ssIGJlY2F1c2UgdGhlIGNvbHVtbiBpcyBzdXBwb3NlZCB0byBiZSB1bmlxdWUgYWxy ZWFkeS4KCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5v ZGItYWx0ZXIucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiLWFs dGVyLnRlc3QKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhX2lubm9kYi5oCiAgICAg IHN0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCj09PSBtb2RpZmllZCBm aWxlICdteXNxbC10ZXN0L3IvYWx0ZXJfdGFibGUucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3Iv YWx0ZXJfdGFibGUucmVzdWx0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjA0 MTA1MzQzLW45NXVnNHFxZ243ODduZWEKKysrIGIvbXlzcWwtdGVzdC9yL2FsdGVyX3RhYmxlLnJl c3VsdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDYwNDIxNDc0NC0yOXRwYWtw NzVrMmdwMmtwCkBAIC0xNzA0LDggKzE3MDQsOCBAQCBBTFRFUiBUQUJMRSB0bTEgQUREIFBSSU1B UlkgS0VZKGEpOwogYWZmZWN0ZWQgcm93czogMgogaW5mbzogUmVjb3JkczogMiAgRHVwbGljYXRl czogMCAgV2FybmluZ3M6IDAKIEFMVEVSIFRBQkxFIHRpMSBEUk9QIENPTFVNTiBkMjsKLWFmZmVj dGVkIHJvd3M6IDIKLWluZm86IFJlY29yZHM6IDIgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdzOiAw CithZmZlY3RlZCByb3dzOiAwCitpbmZvOiBSZWNvcmRzOiAwICBEdXBsaWNhdGVzOiAwICBXYXJu aW5nczogMAogQUxURVIgVEFCTEUgdG0xIERST1AgQ09MVU1OIGQyOwogYWZmZWN0ZWQgcm93czog MgogaW5mbzogUmVjb3JkczogMiAgRHVwbGljYXRlczogMCAgV2FybmluZ3M6IDAKQEAgLTE3NTIs MTQgKzE3NTIsMTQgQEAgQUxURVIgVEFCTEUgdG0xIE1PRElGWSBDT0xVTU4gZSBJTlQ7CiBhZmZl Y3RlZCByb3dzOiAyCiBpbmZvOiBSZWNvcmRzOiAyICBEdXBsaWNhdGVzOiAwICBXYXJuaW5nczog MAogQUxURVIgVEFCTEUgdGkxIE1PRElGWSBDT0xVTU4gZSBJTlQgQUZURVIgaDsKLWFmZmVjdGVk IHJvd3M6IDIKLWluZm86IFJlY29yZHM6IDIgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdzOiAwCith ZmZlY3RlZCByb3dzOiAwCitpbmZvOiBSZWNvcmRzOiAwICBEdXBsaWNhdGVzOiAwICBXYXJuaW5n czogMAogQUxURVIgVEFCTEUgdG0xIE1PRElGWSBDT0xVTU4gZSBJTlQgQUZURVIgaDsKIGFmZmVj dGVkIHJvd3M6IDIKIGluZm86IFJlY29yZHM6IDIgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdzOiAw CiBBTFRFUiBUQUJMRSB0aTEgTU9ESUZZIENPTFVNTiBlIElOVCBGSVJTVDsKLWFmZmVjdGVkIHJv d3M6IDIKLWluZm86IFJlY29yZHM6IDIgIER1cGxpY2F0ZXM6IDAgIFdhcm5pbmdzOiAwCithZmZl Y3RlZCByb3dzOiAwCitpbmZvOiBSZWNvcmRzOiAwICBEdXBsaWNhdGVzOiAwICBXYXJuaW5nczog MAogQUxURVIgVEFCTEUgdG0xIE1PRElGWSBDT0xVTU4gZSBJTlQgRklSU1Q7CiBhZmZlY3RlZCBy b3dzOiAyCiBpbmZvOiBSZWNvcmRzOiAyICBEdXBsaWNhdGVzOiAwICBXYXJuaW5nczogMApAQCAt MTc4MiwxNCArMTc4MiwxNCBAQCBBTFRFUiBUQUJMRSB0bTEgTU9ESUZZIENPTFVNTiBoIFZBUkNI QVIoCiBhZmZlY3RlZCByb3dzOiAyCiBpbmZvOiBSZWNvcmRzOiAyICBEdXBsaWNhdGVzOiAwICBX YXJuaW5nczogMAogQUxURVIgVEFCTEUgdGkxIE1PRElGWSBDT0xVTU4gaCBWQVJDSEFSKDMwKSBB RlRFUiBkOwotYWZmZWN0ZWQgcm93czogMgotaW5mbzogUmVjb3JkczogMiAgRHVwbGljYXRlczog MCAgV2FybmluZ3M6IDAKK2FmZmVjdGVkIHJvd3M6IDAKK2luZm86IFJlY29yZHM6IDAgIER1cGxp Y2F0ZXM6IDAgIFdhcm5pbmdzOiAwCiBBTFRFUiBUQUJMRSB0bTEgTU9ESUZZIENPTFVNTiBoIFZB UkNIQVIoMzApIEFGVEVSIGQ7CiBhZmZlY3RlZCByb3dzOiAyCiBpbmZvOiBSZWNvcmRzOiAyICBE dXBsaWNhdGVzOiAwICBXYXJuaW5nczogMAogQUxURVIgVEFCTEUgdGkxIERST1AgQ09MVU1OIGg7 Ci1hZmZlY3RlZCByb3dzOiAyCi1pbmZvOiBSZWNvcmRzOiAyICBEdXBsaWNhdGVzOiAwICBXYXJu aW5nczogMAorYWZmZWN0ZWQgcm93czogMAoraW5mbzogUmVjb3JkczogMCAgRHVwbGljYXRlczog MCAgV2FybmluZ3M6IDAKIEFMVEVSIFRBQkxFIHRtMSBEUk9QIENPTFVNTiBoOwogYWZmZWN0ZWQg cm93czogMgogaW5mbzogUmVjb3JkczogMiAgRHVwbGljYXRlczogMCAgV2FybmluZ3M6IDAKCj09 PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi10YWJsZS1v bmxpbmUucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi9yL2lubm9kYi10YWJs ZS1vbmxpbmUucmVzdWx0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjA0MTA1 MzQzLW45NXVnNHFxZ243ODduZWEKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9pbm5vZGIvci9pbm5v ZGItdGFibGUtb25saW5lLnJlc3VsdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEy MDYwNDIxNDc0NC0yOXRwYWtwNzVrMmdwMmtwCkBAIC0yMTUsNyArMjE1LDcgQEAgRVJST1IgNDIw MDA6IE11bHRpcGxlIHByaW1hcnkga2V5IGRlZmluZQogQUxURVIgVEFCTEUgdDEgRFJPUCBQUklN QVJZIEtFWSwgQUREIFBSSU1BUlkgS0VZKGMyMmYpLCBDSEFOR0UgYzIgYzIyZiBJTlQ7CiBFUlJP UiAyMzAwMDogRHVwbGljYXRlIGVudHJ5ICc1JyBmb3Iga2V5ICdQUklNQVJZJwogQUxURVIgVEFC TEUgdDEgRFJPUCBQUklNQVJZIEtFWSwgQUREIFBSSU1BUlkgS0VZKGMxLGMyMmYpLCBDSEFOR0Ug YzIgYzIyZiBJTlQsCi1DSEFOR0UgYzMgYzMgVEVYVCBOVUxMOworQ0hBTkdFIGMzIGMzIFRFWFQg TlVMTCwgQ0hBTkdFIGMxIGMxIElOVCBBRlRFUiBjMjJmOwogU0VUIERFQlVHX1NZTkMgPSAnbm93 IFdBSVRfRk9SIHJlYnVpbHQzJzsKIFNFTEVDVCBuYW1lLCBjb3VudCBGUk9NIElORk9STUFUSU9O X1NDSEVNQS5JTk5PREJfTUVUUklDUyBXSEVSRSBzdWJzeXN0ZW0gPSAnZGRsJzsKIG5hbWUJY291 bnQKQEAgLTI1NCwxNiArMjU0LDE2IEBAIEFMVEVSIFRBQkxFIHQxIERST1AgUFJJTUFSWSBLRVks IEFERCBQUkkKIEVSUk9SIDIzMDAwOiBEdXBsaWNhdGUgZW50cnkgJycgZm9yIGtleSAnUFJJTUFS WScKIFVQREFURSB0MSBTRVQgYzMgPSBOVUxMIFdIRVJFIGMzID0gJyc7CiBTRVQgbG9ja193YWl0 X3RpbWVvdXQgPSAxOwotQUxURVIgVEFCTEUgdDEgQUREIFBSSU1BUlkgS0VZIGMzcDUoYzMoNSkp OworQUxURVIgVEFCTEUgdDEgRFJPUCBDT0xVTU4gYzIyZiwgQUREIFBSSU1BUlkgS0VZIGMzcDUo YzMoNSkpOwogRVJST1IgNDIwMDA6IE11bHRpcGxlIHByaW1hcnkga2V5IGRlZmluZWQKLUFMVEVS IFRBQkxFIHQxIERST1AgUFJJTUFSWSBLRVksIEFERCBQUklNQVJZIEtFWSBjM3A1KGMzKDUpKSwK K0FMVEVSIFRBQkxFIHQxIERST1AgQ09MVU1OIGMyMmYsIERST1AgUFJJTUFSWSBLRVksIEFERCBQ UklNQVJZIEtFWSBjM3A1KGMzKDUpKSwKIEFMR09SSVRITSA9IElOUExBQ0U7CiBFUlJPUiAyMjAw NDogSW52YWxpZCB1c2Ugb2YgTlVMTCB2YWx1ZQogQUxURVIgVEFCTEUgdDEgTU9ESUZZIGMzIFRF WFQgTk9UIE5VTEw7CiBFUlJPUiAyMjAwNDogSW52YWxpZCB1c2Ugb2YgTlVMTCB2YWx1ZQogVVBE QVRFIHQxIFNFVCBjMz1DT05DQVQoYzEsUkVQRUFUKCdmb28nLGMxKSkgV0hFUkUgYzMgSVMgTlVM TDsKIFNFVCBERUJVR19TWU5DID0gJ3Jvd19sb2dfdGFibGVfYXBwbHkxX2JlZm9yZSBTSUdOQUwg YzNwNV9jcmVhdGVkMCBXQUlUX0ZPUiBpbnNfZG9uZTAnOwotQUxURVIgVEFCTEUgdDEgTU9ESUZZ IGMzIFRFWFQgTk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0MSBNT0RJRlkgYzMgVEVYVCBOT1QgTlVM TCwgRFJPUCBDT0xVTU4gYzIyZjsKIFNFVCBERUJVR19TWU5DID0gJ25vdyBXQUlUX0ZPUiBjM3A1 X2NyZWF0ZWQwJzsKIEJFR0lOOwogSU5TRVJUIElOVE8gdDEgVkFMVUVTKDM0NywzMzEwMSwnUGlr a3Uga2Fra29zZW4gcG9zdGknKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCBFUlJPUiAyMjAwNDogSW52 YWxpZCB1c2Ugb2YgTlVMTCB2YWx1ZQogUk9MTEJBQ0s7CiBBTFRFUiBUQUJMRSB0MSBNT0RJRlkg YzMgVEVYVCBOT1QgTlVMTDsKIFNFVCBERUJVR19TWU5DID0gJ3Jvd19sb2dfdGFibGVfYXBwbHkx X2JlZm9yZSBTSUdOQUwgYzNwNV9jcmVhdGVkIFdBSVRfRk9SIGluc19kb25lJzsKLUFMVEVSIFRB QkxFIHQxIERST1AgUFJJTUFSWSBLRVksIEFERCBQUklNQVJZIEtFWSBjM3A1KGMzKDUpKTsKK0FM VEVSIFRBQkxFIHQxIERST1AgUFJJTUFSWSBLRVksIERST1AgQ09MVU1OIGMyMmYsIEFERCBQUklN QVJZIEtFWSBjM3A1KGMzKDUpKTsKIFNFVCBERUJVR19TWU5DID0gJ25vdyBXQUlUX0ZPUiBjM3A1 X2NyZWF0ZWQnOwogU0VUIERFQlVHX1NZTkMgPSAnaWJfYWZ0ZXJfcm93X2luc2VydCBTSUdOQUwg aW5zX2RvbmUgV0FJVF9GT1IgZGRsX3RpbWVkX291dCc7CiBJTlNFUlQgSU5UTyB0MSBWQUxVRVMo MzQ3LDMzMTAxLE5VTEwpOwpAQCAtMzAxLDE0ICszMDEsMTQgQEAgRVJST1IgSFkwMDA6IExvY2sg d2FpdCB0aW1lb3V0IGV4Y2VlZGVkOwogU0hPVyBDUkVBVEUgVEFCTEUgdDE7CiBUYWJsZQlDcmVh dGUgVGFibGUKIHQxCUNSRUFURSBUQUJMRSBgdDFgICgKLSAgYGMxYCBpbnQoMTEpIE5PVCBOVUxM LAogICBgYzIyZmAgaW50KDExKSBOT1QgTlVMTCBERUZBVUxUICcwJywKKyAgYGMxYCBpbnQoMTEp IE5PVCBOVUxMIERFRkFVTFQgJzAnLAogICBgYzNgIHRleHQgTk9UIE5VTEwsCiAgIFBSSU1BUlkg S0VZIChgYzFgLGBjMjJmYCkKICkgRU5HSU5FPUlubm9EQiBERUZBVUxUIENIQVJTRVQ9bGF0aW4x IFJPV19GT1JNQVQ9Q09NUEFDVAotQUxURVIgVEFCTEUgdDEgUk9XX0ZPUk1BVD1SRURVTkRBTlQs IEFMR09SSVRITSA9IElOUExBQ0U7CitBTFRFUiBUQUJMRSB0MSBEUk9QIENPTFVNTiBjMywgUk9X X0ZPUk1BVD1SRURVTkRBTlQsIEFMR09SSVRITSA9IElOUExBQ0U7CiBTRUxFQ1QgKiBGUk9NIHQx OwotYzEJYzIyZgljMworYzIyZgljMQogU0VUIERFQlVHX1NZTkMgPSAnUkVTRVQnOwogU0VUIERF QlVHID0gJyc7CiBTRVQgR0xPQkFMIGlubm9kYl9tb25pdG9yX2Rpc2FibGUgPSBtb2R1bGVfZGRs OwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5ub2RiLXRh YmxlLW9ubGluZS50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRlL2lubm9kYi90L2lubm9kYi10 YWJsZS1vbmxpbmUudGVzdAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDYwNDEw NTM0My1uOTV1ZzRxcWduNzg3bmVhCisrKyBiL215c3FsLXRlc3Qvc3VpdGUvaW5ub2RiL3QvaW5u b2RiLXRhYmxlLW9ubGluZS50ZXN0CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIw NjA0MjE0NzQ0LTI5dHBha3A3NWsyZ3Aya3AKQEAgLTIyMSw3ICsyMjEsNyBAQCBBTFRFUiBUQUJM RSB0MSBBREQgUFJJTUFSWSBLRVkoYzIyZiksIENICiBBTFRFUiBUQUJMRSB0MSBEUk9QIFBSSU1B UlkgS0VZLCBBREQgUFJJTUFSWSBLRVkoYzIyZiksIENIQU5HRSBjMiBjMjJmIElOVDsKIC0tc2Vu ZAogQUxURVIgVEFCTEUgdDEgRFJPUCBQUklNQVJZIEtFWSwgQUREIFBSSU1BUlkgS0VZKGMxLGMy MmYpLCBDSEFOR0UgYzIgYzIyZiBJTlQsCi1DSEFOR0UgYzMgYzMgVEVYVCBOVUxMOworQ0hBTkdF IGMzIGMzIFRFWFQgTlVMTCwgQ0hBTkdFIGMxIGMxIElOVCBBRlRFUiBjMjJmOwogCiBjb25uZWN0 aW9uIGRlZmF1bHQ7CiBTRVQgREVCVUdfU1lOQyA9ICdub3cgV0FJVF9GT1IgcmVidWlsdDMnOwpA QCAtMjUxLDkgKzI1MSw5IEBAIEFMVEVSIFRBQkxFIHQxIERST1AgUFJJTUFSWSBLRVksIEFERCBQ UkkKIFVQREFURSB0MSBTRVQgYzMgPSBOVUxMIFdIRVJFIGMzID0gJyc7CiBTRVQgbG9ja193YWl0 X3RpbWVvdXQgPSAxOwogLS1lcnJvciBFUl9NVUxUSVBMRV9QUklfS0VZCi1BTFRFUiBUQUJMRSB0 MSBBREQgUFJJTUFSWSBLRVkgYzNwNShjMyg1KSk7CitBTFRFUiBUQUJMRSB0MSBEUk9QIENPTFVN TiBjMjJmLCBBREQgUFJJTUFSWSBLRVkgYzNwNShjMyg1KSk7CiAtLWVycm9yIEVSX0lOVkFMSURf VVNFX09GX05VTEwKLUFMVEVSIFRBQkxFIHQxIERST1AgUFJJTUFSWSBLRVksIEFERCBQUklNQVJZ IEtFWSBjM3A1KGMzKDUpKSwKK0FMVEVSIFRBQkxFIHQxIERST1AgQ09MVU1OIGMyMmYsIERST1Ag UFJJTUFSWSBLRVksIEFERCBQUklNQVJZIEtFWSBjM3A1KGMzKDUpKSwKIEFMR09SSVRITSA9IElO UExBQ0U7CiAKIC0tZXJyb3IgRVJfSU5WQUxJRF9VU0VfT0ZfTlVMTApAQCAtMjYyLDcgKzI2Miw3 IEBAIFVQREFURSB0MSBTRVQgYzM9Q09OQ0FUKGMxLFJFUEVBVCgnZm9vJywKIAogU0VUIERFQlVH X1NZTkMgPSAncm93X2xvZ190YWJsZV9hcHBseTFfYmVmb3JlIFNJR05BTCBjM3A1X2NyZWF0ZWQw IFdBSVRfRk9SIGluc19kb25lMCc7CiAtLXNlbmQKLUFMVEVSIFRBQkxFIHQxIE1PRElGWSBjMyBU RVhUIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdDEgTU9ESUZZIGMzIFRFWFQgTk9UIE5VTEwsIERS T1AgQ09MVU1OIGMyMmY7CiAKIGNvbm5lY3Rpb24gZGVmYXVsdDsKIApAQCAtMjg0LDcgKzI4NCw3 IEBAIEFMVEVSIFRBQkxFIHQxIE1PRElGWSBjMyBURVhUIE5PVCBOVUxMOwogCiBTRVQgREVCVUdf U1lOQyA9ICdyb3dfbG9nX3RhYmxlX2FwcGx5MV9iZWZvcmUgU0lHTkFMIGMzcDVfY3JlYXRlZCBX QUlUX0ZPUiBpbnNfZG9uZSc7CiAtLXNlbmQKLUFMVEVSIFRBQkxFIHQxIERST1AgUFJJTUFSWSBL RVksIEFERCBQUklNQVJZIEtFWSBjM3A1KGMzKDUpKTsKK0FMVEVSIFRBQkxFIHQxIERST1AgUFJJ TUFSWSBLRVksIERST1AgQ09MVU1OIGMyMmYsIEFERCBQUklNQVJZIEtFWSBjM3A1KGMzKDUpKTsK IAogY29ubmVjdGlvbiBkZWZhdWx0OwogU0VUIERFQlVHX1NZTkMgPSAnbm93IFdBSVRfRk9SIGMz cDVfY3JlYXRlZCc7CkBAIC0zNDIsNyArMzQyLDcgQEAgcmVhcDsKIFNIT1cgQ1JFQVRFIFRBQkxF IHQxOwogIyBUaGUgc291cmNlIHRhYmxlc3BhY2Ugd2FzIGRpc2NhcmRlZCBkdXJpbmcgdGhlIHBy ZXZpb3VzIG9ubGluZSByZWJ1aWxkLgogIyBUaGUgcmVidWlsZCB3aWxsIHJlLWNyZWF0ZSB0MSBh cyBhbiBlbXB0eSB0YWJsZS4KLUFMVEVSIFRBQkxFIHQxIFJPV19GT1JNQVQ9UkVEVU5EQU5ULCBB TEdPUklUSE0gPSBJTlBMQUNFOworQUxURVIgVEFCTEUgdDEgRFJPUCBDT0xVTU4gYzMsIFJPV19G T1JNQVQ9UkVEVU5EQU5ULCBBTEdPUklUSE0gPSBJTlBMQUNFOwogU0VMRUNUICogRlJPTSB0MTsK IAogU0VUIERFQlVHX1NZTkMgPSAnUkVTRVQnOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2Uv aW5ub2Jhc2UvZnRzL2Z0czBmdHMuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2UvZnRzL2Z0czBm dHMuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA2MDQxMDUzNDMtbjk1dWc0 cXFnbjc4N25lYQorKysgYi9zdG9yYWdlL2lubm9iYXNlL2Z0cy9mdHMwZnRzLmNjCXJldmlkOm1h cmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjA0MjE0NzQ0LTI5dHBha3A3NWsyZ3Aya3AKQEAg LTQ4NTMsMTMgKzQ4NTMsMTMgQEAgZnRzX2dldF9kb2NfaWRfZnJvbV9yZWMoCiAKIAljb2xfbm8g PSBkaWN0X2NvbF9nZXRfY2x1c3RfcG9zKAogCQkmdGFibGUtPmNvbHNbdGFibGUtPmZ0cy0+ZG9j X2NvbF0sIGNsdXN0X2luZGV4KTsKKwl1dF9hZChjb2xfbm8gIT0gVUxJTlRfVU5ERUZJTkVEKTsK IAotCS8qIFdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBjYXN0IHJlYyBoZXJlIDotKCAqLwotCWRh dGEgPSByZWNfZ2V0X250aF9maWVsZCgocmVjX3QqKSByZWMsIG9mZnNldHMsIGNvbF9ubywgJmxl bik7CisJZGF0YSA9IHJlY19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgY29sX25vLCAmbGVu KTsKIAogCXV0X2EobGVuID09IDgpOwotCXV0X2EobGVuID09IHNpemVvZihkb2NfaWQpKTsKLQlk b2NfaWQgPSAoZG9jX2lkX3QpIG1hY2hfcmVhZF9mcm9tXzgoZGF0YSk7CisJdXRfYWQoOCA9PSBz aXplb2YoZG9jX2lkKSk7CisJZG9jX2lkID0gc3RhdGljX2Nhc3Q8ZG9jX2lkX3Q+KG1hY2hfcmVh ZF9mcm9tXzgoZGF0YSkpOwogCiAJcmV0dXJuKGRvY19pZCk7CiB9Cgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MnCi0tLSBhL3N0b3Jh Z2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBv cmFjbGUuY29tLTIwMTIwNjA0MTA1MzQzLW45NXVnNHFxZ243ODduZWEKKysrIGIvc3RvcmFnZS9p bm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMjA2MDQyMTQ3NDQtMjl0cGFrcDc1azJncDJrcApAQCAtNTksMTIgKzU5LDEyIEBA IHN0YXRpYyBjb25zdCBBbHRlcl9pbnBsYWNlX2luZm86OkhBX0FMVEUKIAl8IEFsdGVyX2lucGxh Y2VfaW5mbzo6Q0hBTkdFX0NSRUFURV9PUFRJT04KIAl8IEFsdGVyX2lucGxhY2VfaW5mbzo6QUxU RVJfQ09MVU1OX05VTExBQkxFCiAJfCBBbHRlcl9pbnBsYWNlX2luZm86OkFMVEVSX0NPTFVNTl9O T1RfTlVMTEFCTEUKKwl8IEFsdGVyX2lucGxhY2VfaW5mbzo6QUxURVJfQ09MVU1OX09SREVSCisJ fCBBbHRlcl9pbnBsYWNlX2luZm86OkRST1BfQ09MVU1OCiAJLyoKIAl8IEFsdGVyX2lucGxhY2Vf aW5mbzo6QUxURVJfQ09MVU1OX1RZUEUKLQl8IEFsdGVyX2lucGxhY2VfaW5mbzo6QUxURVJfQ09M VU1OX0VRVUFMX1BBQ0tfTEVOR1RILAotCXwgQWx0ZXJfaW5wbGFjZV9pbmZvOjpBTFRFUl9DT0xV TU5fT1JERVIKKwl8IEFsdGVyX2lucGxhY2VfaW5mbzo6QUxURVJfQ09MVU1OX0VRVUFMX1BBQ0tf TEVOR1RICiAJfCBBbHRlcl9pbnBsYWNlX2luZm86OkFERF9DT0xVTU4KLQl8IEFsdGVyX2lucGxh Y2VfaW5mbzo6RFJPUF9DT0xVTU4KIAkqLwogCTsKIApAQCAtMTc1OSw2ICsxNzU5LDggQEAgcHVi bGljOgogCXRyeF90KgkJdHJ4OwogCS8qKiB0YWJsZSB3aGVyZSB0aGUgaW5kZXhlcyBhcmUgYmVp bmcgY3JlYXRlZCBvciBkcm9wcGVkICovCiAJZGljdF90YWJsZV90KglpbmRleGVkX3RhYmxlOwor CS8qKiBtYXBwaW5nIG9mIG9sZCBjb2x1bW4gbnVtYmVycyB0byBuZXcgb25lcywgb3IgTlVMTCAq LworCWNvbnN0IHVsaW50Kgljb2xfbWFwOwogCWhhX2lubm9iYXNlX2lucGxhY2VfY3R4KHRyeF90 KiB1c2VyX3RyeCwKIAkJCQlkaWN0X2luZGV4X3QqKiBhZGRfYXJnLAogCQkJCWNvbnN0IHVsaW50 KiBhZGRfa2V5X251bWJlcnNfYXJnLApAQCAtMTc3Miw3ICsxNzc0LDggQEAgcHVibGljOgogCQkJ CWJvb2wgb25saW5lX2FyZywKIAkJCQltZW1faGVhcF90KiBoZWFwX2FyZywKIAkJCQl0cnhfdCog dHJ4X2FyZywKLQkJCQlkaWN0X3RhYmxlX3QqIGluZGV4ZWRfdGFibGVfYXJnKSA6CisJCQkJZGlj dF90YWJsZV90KiBpbmRleGVkX3RhYmxlX2FyZywKKwkJCQljb25zdCB1bGludCogY29sX21hcF9h cmcpIDoKIAkJaW5wbGFjZV9hbHRlcl9oYW5kbGVyX2N0eCgpLAogCQlhZGQgKGFkZF9hcmcpLCBh ZGRfa2V5X251bWJlcnMgKGFkZF9rZXlfbnVtYmVyc19hcmcpLAogCQludW1fdG9fYWRkIChudW1f dG9fYWRkX2FyZyksCkBAIC0xNzgwLDcgKzE3ODMsOCBAQCBwdWJsaWM6CiAJCWRyb3BfZmsgKGRy b3BfZmtfYXJnKSwgbnVtX3RvX2Ryb3BfZmsgKG51bV90b19kcm9wX2ZrX2FyZyksCiAJCWFkZF9m ayAoYWRkX2ZrX2FyZyksIG51bV90b19hZGRfZmsgKG51bV90b19hZGRfZmtfYXJnKSwKIAkJb25s aW5lIChvbmxpbmVfYXJnKSwgaGVhcCAoaGVhcF9hcmcpLCB0cnggKHRyeF9hcmcpLAotCQlpbmRl eGVkX3RhYmxlIChpbmRleGVkX3RhYmxlX2FyZykgeworCQlpbmRleGVkX3RhYmxlIChpbmRleGVk X3RhYmxlX2FyZyksCisJCWNvbF9tYXAgKGNvbF9tYXBfYXJnKSB7CiAjaWZkZWYgVU5JVl9ERUJV RwogCQlmb3IgKHVsaW50IGkgPSAwOyBpIDwgbnVtX3RvX2FkZDsgaSsrKSB7CiAJCQl1dF9hZCgh YWRkW2ldLT50b19iZV9kcm9wcGVkKTsKQEAgLTIwNDEsNiArMjA0NSwxMDYgQEAgaW5ub2Jhc2Vf Y2hlY2tfZm9yZWlnbnMoCiAJcmV0dXJuKGZhbHNlKTsKIH0KIAorLyoqIENvbnN0cnVjdCB0aGUg dHJhbnNsYXRpb24gdGFibGUgZm9yIHJlb3JkZXJpbmcsIGRyb3BwaW5nIG9yCithZGRpbmcgY29s dW1ucy4KKworQHBhcmFtIGhhX2FsdGVyX2luZm8JRGF0YSB1c2VkIGR1cmluZyBpbi1wbGFjZSBh bHRlcgorQHBhcmFtIGFsdGVyZWRfdGFibGUJTXlTUUwgdGFibGUgdGhhdCBpcyBiZWluZyBhbHRl cmVkCitAcGFyYW0gdGFibGUJCU15U1FMIHRhYmxlIGFzIGl0IGlzIGJlZm9yZSB0aGUgQUxURVIg b3BlcmF0aW9uCitAcGFyYW0gbmV3X3RhYmxlCUlubm9EQiB0YWJsZSBjb3JyZXNwb25kaW5nIHRv IE15U1FMIGFsdGVyZWRfdGFibGUKK0BwYXJhbSBvbGRfdGFibGUJSW5ub0RCIHRhYmxlIGNvcnJl c3BvbmRpbmcgdG8gTVlTUUwgdGFibGUKK0BwYXJhbSBoZWFwCU1lbW9yeSBoZWFwIHdoZXJlIGFs bG9jYXRlZAorQHJldHVybglhcnJheSBvZiBpbnRlZ2VycywgbWFwcGluZyBjb2x1bW4gbnVtYmVy cyBpbiB0aGUgdGFibGUKK3RvIGNvbHVtbiBudW1iZXJzIGluIGFsdGVyZWRfdGFibGUgKi8KK3N0 YXRpYyBfX2F0dHJpYnV0ZV9fKChub25udWxsLCB3YXJuX3VudXNlZF9yZXN1bHQpKQorY29uc3Qg dWxpbnQqCitpbm5vYmFzZV9idWlsZF9jb2xfbWFwKAorLyo9PT09PT09PT09PT09PT09PT09Ki8K KwlBbHRlcl9pbnBsYWNlX2luZm8qCWhhX2FsdGVyX2luZm8sCisJY29uc3QgVEFCTEUqCQlhbHRl cmVkX3RhYmxlLAorCWNvbnN0IFRBQkxFKgkJdGFibGUsCisJY29uc3QgZGljdF90YWJsZV90Kglu ZXdfdGFibGUsCisJY29uc3QgZGljdF90YWJsZV90KglvbGRfdGFibGUsCisJbWVtX2hlYXBfdCoJ CWhlYXApCit7CisJREJVR19FTlRFUigiaW5ub2Jhc2VfYnVpbGRfY29sX21hcCIpOworCURCVUdf QVNTRVJUKGFsdGVyZWRfdGFibGUgIT0gdGFibGUpOworCURCVUdfQVNTRVJUKG5ld190YWJsZSAh PSBvbGRfdGFibGUpOworCURCVUdfQVNTRVJUKGRpY3RfdGFibGVfZ2V0X25fY29scyhuZXdfdGFi bGUpCisJCSAgICA+PSBhbHRlcmVkX3RhYmxlLT5zLT5maWVsZHMgKyBEQVRBX05fU1lTX0NPTFMp OworCURCVUdfQVNTRVJUKGRpY3RfdGFibGVfZ2V0X25fY29scyhvbGRfdGFibGUpCisJCSAgICA+ PSB0YWJsZS0+cy0+ZmllbGRzICsgREFUQV9OX1NZU19DT0xTKTsKKworCXVsaW50Kgljb2xfbWFw ID0gc3RhdGljX2Nhc3Q8dWxpbnQqPigKKwkJbWVtX2hlYXBfYWxsb2MoaGVhcCwgb2xkX3RhYmxl LT5uX2NvbHMgKiBzaXplb2YgKmNvbF9tYXApKTsKKworCUxpc3RfaXRlcmF0b3JfZmFzdDxDcmVh dGVfZmllbGQ+IGNmX2l0OworCWNmX2l0LmluaXQoaGFfYWx0ZXJfaW5mby0+YWx0ZXJfaW5mby0+ Y3JlYXRlX2xpc3QpOworCXVpbnQgaSA9IDA7CisKKwkvKiBBbnkgZHJvcHBlZCBjb2x1bW5zIHdp bGwgbWFwIHRvIFVMSU5UX1VOREVGSU5FRC4gKi8KKwlmb3IgKHVpbnQgb2xkX2kgPSAwOyBvbGRf aSArIERBVEFfTl9TWVNfQ09MUyA8IG9sZF90YWJsZS0+bl9jb2xzOworCSAgICAgb2xkX2krKykg eworCQljb2xfbWFwW29sZF9pXSA9IFVMSU5UX1VOREVGSU5FRDsKKwl9CisKKwl3aGlsZSAoY29u c3QgQ3JlYXRlX2ZpZWxkKiBuZXdfZmllbGQgPSBjZl9pdCsrKSB7CisJCWZvciAodWludCBvbGRf aSA9IDA7IHRhYmxlLT5maWVsZFtvbGRfaV07IG9sZF9pKyspIHsKKwkJCWNvbnN0IEZpZWxkKiBm aWVsZCA9IHRhYmxlLT5maWVsZFtvbGRfaV07CisJCQlpZiAobmV3X2ZpZWxkLT5maWVsZCA9PSBm aWVsZCkgeworCQkJCWNvbF9tYXBbb2xkX2ldID0gaTsKKwkJCQlnb3RvIGZvdW5kX2NvbDsKKwkJ CX0KKwkJfQorCQkvKiBBTFRFUl9BRERfQ09MVU1OICovCisJCXV0X2FkKDApOy8vVE9ETworZm91 bmRfY29sOgorCQlpKys7CisJCWNvbnRpbnVlOworCX0KKworCURCVUdfQVNTRVJUKGkgPT0gYWx0 ZXJlZF90YWJsZS0+cy0+ZmllbGRzKTsKKworCWkgPSB0YWJsZS0+cy0+ZmllbGRzOworCisJLyog QWRkIHRoZSBJbm5vREIgaGlkZGVuIEZUU19ET0NfSUQgY29sdW1uLCBpZiBhbnkuICovCisJaWYg KGkgKyBEQVRBX05fU1lTX0NPTFMgPCBvbGRfdGFibGUtPm5fY29scykgeworCQkvKiBUaGVyZSBz aG91bGQgYmUgZXhhY3RseSBvbmUgZXh0cmEgZmllbGQsCisJCXRoZSBGVFNfRE9DX0lELiAqLwor CQlEQlVHX0FTU0VSVChESUNUX1RGMl9GTEFHX0lTX1NFVChvbGRfdGFibGUsCisJCQkJCQkgRElD VF9URjJfRlRTX0hBU19ET0NfSUQpKTsKKwkJREJVR19BU1NFUlQoaSArIERBVEFfTl9TWVNfQ09M UyArIDEgPT0gb2xkX3RhYmxlLT5uX2NvbHMpOworCQlEQlVHX0FTU0VSVCghc3RyY21wKGRpY3Rf dGFibGVfZ2V0X2NvbF9uYW1lKAorCQkJCQkgICAgb2xkX3RhYmxlLCB0YWJsZS0+cy0+ZmllbGRz KSwKKwkJCQkgICAgRlRTX0RPQ19JRF9DT0xfTkFNRSkpOworCQlpZiAoYWx0ZXJlZF90YWJsZS0+ cy0+ZmllbGRzICsgREFUQV9OX1NZU19DT0xTCisJCSAgICA8IG5ld190YWJsZS0+bl9jb2xzKSB7 CisJCQlEQlVHX0FTU0VSVChESUNUX1RGMl9GTEFHX0lTX1NFVCgKKwkJCQkJICAgIG5ld190YWJs ZSwKKwkJCQkJICAgIERJQ1RfVEYyX0ZUU19IQVNfRE9DX0lEKSk7CisJCQlEQlVHX0FTU0VSVChh bHRlcmVkX3RhYmxlLT5zLT5maWVsZHMKKwkJCQkgICAgKyBEQVRBX05fU1lTX0NPTFMgKyAxCisJ CQkJICAgID09IG5ld190YWJsZS0+bl9jb2xzKTsKKwkJCWNvbF9tYXBbaV0gPSBhbHRlcmVkX3Rh YmxlLT5zLT5maWVsZHM7CisJCX0gZWxzZSB7CisJCQlEQlVHX0FTU0VSVCghRElDVF9URjJfRkxB R19JU19TRVQoCisJCQkJCSAgICBuZXdfdGFibGUsCisJCQkJCSAgICBESUNUX1RGMl9GVFNfSEFT X0RPQ19JRCkpOworCQkJY29sX21hcFtpXSA9IFVMSU5UX1VOREVGSU5FRDsKKwkJfQorCX0gZWxz ZSB7CisJCURCVUdfQVNTRVJUKCFESUNUX1RGMl9GTEFHX0lTX1NFVCgKKwkJCQkgICAgb2xkX3Rh YmxlLAorCQkJCSAgICBESUNUX1RGMl9GVFNfSEFTX0RPQ19JRCkpOworCX0KKworCWZvciAoOyBp IDwgb2xkX3RhYmxlLT5uX2NvbHM7IGkrKykgeworCQljb2xfbWFwW2ldID0gaSArIG5ld190YWJs ZS0+bl9jb2xzIC0gb2xkX3RhYmxlLT5uX2NvbHM7CisJfQorCisJREJVR19SRVRVUk4oY29sX21h cCk7Cit9CisKIC8qKiBVcGRhdGUgaW50ZXJuYWwgc3RydWN0dXJlcyB3aXRoIGNvbmN1cnJlbnQg d3JpdGVzIGJsb2NrZWQsCiB3aGlsZSBwcmVwYXJpbmcgQUxURVIgVEFCTEUuCiAKQEAgLTIwOTYs NiArMjIwMCw3IEBAIHByZXBhcmVfaW5wbGFjZV9hbHRlcl90YWJsZV9kaWN0KAogCXVsaW50CQkJ bmV3X2NsdXN0ZXJlZAk9IDA7CiAJZGJlcnJfdAkJCWVycm9yOwogCVRIRCoJCQl1c2VyX3RoZAk9 IHVzZXJfdHJ4LT5teXNxbF90aGQ7CisJY29uc3QgdWxpbnQqCQljb2xfbWFwOwogCiAJY29uc3Qg Ym9vbCBsb2NrZWQgPQogCQlhZGRfZnRzX2RvY19pZApAQCAtMjE1NywxMCArMjI2Miw5IEBAIHBy ZXBhcmVfaW5wbGFjZV9hbHRlcl90YWJsZV9kaWN0KAogCWNvbHVtbiBpcyB0byBiZSBhZGRlZCwg YW5kIHRoZSBwcmltYXJ5IGluZGV4IGRlZmluaXRpb24KIAlpcyBqdXN0IGNvcGllZCBmcm9tIG9s ZCB0YWJsZSBhbmQgc3RvcmVkIGluIGluZGV4ZGVmc1swXSAqLwogCURCVUdfQVNTRVJUKCFhZGRf ZnRzX2RvY19pZCB8fCBuZXdfY2x1c3RlcmVkKTsKLQlEQlVHX0FTU0VSVCghIW5ld19jbHVzdGVy ZWQKLQkJICAgID09ICgoaGFfYWx0ZXJfaW5mby0+aGFuZGxlcl9mbGFncwotCQkJICYgSU5OT0JB U0VfSU5QTEFDRV9SRUJVSUxEKQotCQkJfHwgYWRkX2Z0c19kb2NfaWQpKTsKKwlEQlVHX0FTU0VS VCghIW5ld19jbHVzdGVyZWQgPT0KKwkJICAgIChpbm5vYmFzZV9uZWVkX3JlYnVpbGQoaGFfYWx0 ZXJfaW5mbykKKwkJICAgICB8fCBhZGRfZnRzX2RvY19pZCkpOwogCiAJLyogQWxsb2NhdGUgbWVt b3J5IGZvciBkaWN0aW9uYXJ5IGluZGV4IGRlZmluaXRpb25zICovCiAKQEAgLTIyNDIsOSArMjM0 Niw3IEBAIHByZXBhcmVfaW5wbGFjZV9hbHRlcl90YWJsZV9kaWN0KAogCQkJCXwgRElDVF9URjJf RlRTOwogCQl9CiAKLQkJaWYgKGFkZF9mdHNfZG9jX2lkX2lkeCkgewotCQkJREJVR19BU1NFUlQo ZmxhZ3MyICYgRElDVF9URjJfRlRTKTsKLQkJfQorCQlEQlVHX0FTU0VSVCghYWRkX2Z0c19kb2Nf aWRfaWR4IHx8IChmbGFnczIgJiBESUNUX1RGMl9GVFMpKTsKIAogCQkvKiBDcmVhdGUgdGhlIHRh YmxlLiAqLwogCQl0cnhfc2V0X2RpY3Rfb3BlcmF0aW9uKHRyeCwgVFJYX0RJQ1RfT1BfVEFCTEUp OwpAQCAtMjMzNSw2ICsyNDM3LDggQEAgY29sX2ZhaWw6CiAJCQlmdHNfYWRkX2RvY19pZF9jb2x1 bW4oaW5kZXhlZF90YWJsZSwgaGVhcCk7CiAJCQlpbmRleGVkX3RhYmxlLT5mdHMtPmRvY19jb2wg PSBmdHNfZG9jX2lkX2NvbDsKIAkJCXV0X2FkKGZ0c19kb2NfaWRfY29sID09IGFsdGVyZWRfdGFi bGUtPnMtPmZpZWxkcyk7CisJCX0gZWxzZSBpZiAoaW5kZXhlZF90YWJsZS0+ZnRzKSB7CisJCQlp bmRleGVkX3RhYmxlLT5mdHMtPmRvY19jb2wgPSBmdHNfZG9jX2lkX2NvbDsKIAkJfQogCiAJCWVy cm9yID0gcm93X2NyZWF0ZV90YWJsZV9mb3JfbXlzcWwoaW5kZXhlZF90YWJsZSwgdHJ4KTsKQEAg LTIzNzksNiArMjQ4MywxMyBAQCBjb2xfZmFpbDoKIAkJCXRyeF9jb21taXRfZm9yX215c3FsKHVz ZXJfdHJ4KTsKIAkJCURCVUdfUkVUVVJOKHRydWUpOwogCQl9CisKKwkJY29sX21hcCA9IGlubm9i YXNlX2J1aWxkX2NvbF9tYXAoCisJCQloYV9hbHRlcl9pbmZvLCBhbHRlcmVkX3RhYmxlLCBvbGRf dGFibGUsCisJCQlpbmRleGVkX3RhYmxlLCB1c2VyX3RhYmxlLCBoZWFwKTsKKwl9IGVsc2Ugewor CQlEQlVHX0FTU0VSVCghaW5ub2Jhc2VfbmVlZF9yZWJ1aWxkKGhhX2FsdGVyX2luZm8pKTsKKwkJ Y29sX21hcCA9IE5VTEw7CiAJfQogCiAJLyogQXNzaWduIHRhYmxlX2lkLCBzbyB0aGF0IG5vIHRh YmxlIGlkIG9mCkBAIC0yNTE2LDExICsyNjI3LDYgQEAgb3Bfb2s6CiAJCQl9CiAJCX0KIAotCQlp ZiAoaW5kZXhlZF90YWJsZSAhPSB1c2VyX3RhYmxlICYmIHVzZXJfdGFibGUtPmZ0cykgewotCQkJ aW5kZXhlZF90YWJsZS0+ZnRzLT5kb2NfY29sCi0JCQkJPSB1c2VyX3RhYmxlLT5mdHMtPmRvY19j b2w7Ci0JCX0KLQogCQl1dF9hZCh0cnhfZ2V0X2RpY3Rfb3BlcmF0aW9uKHRyeCkgPT0gb3ApOwog CX0KIApAQCAtMjU1Niw3ICsyNjYyLDcgQEAgZXJyb3JfaGFuZGxpbmc6CiAJCQlkcm9wX2luZGV4 LCBuX2Ryb3BfaW5kZXgsCiAJCQlkcm9wX2ZvcmVpZ24sIG5fZHJvcF9mb3JlaWduLAogCQkJYWRk X2ZvcmVpZ24sIG5fYWRkX2ZvcmVpZ24sCi0JCQkhbG9ja2VkLCBoZWFwLCB0cngsIGluZGV4ZWRf dGFibGUpOworCQkJIWxvY2tlZCwgaGVhcCwgdHJ4LCBpbmRleGVkX3RhYmxlLCBjb2xfbWFwKTsK IAkJREJVR19SRVRVUk4oZmFsc2UpOwogCWNhc2UgREJfVEFCTEVTUEFDRV9BTFJFQURZX0VYSVNU UzoKIAkJbXlfZXJyb3IoRVJfVEFCTEVfRVhJU1RTX0VSUk9SLCBNWUYoMCksICIodW5rbm93biki KTsKQEAgLTMwNzYsNyArMzE4Miw3IEBAIGluZGV4X25lZWRlZDoKIAkJCQkJZHJvcF9pbmRleCwg bl9kcm9wX2luZGV4LAogCQkJCQlkcm9wX2ZrLCBuX2Ryb3BfZmssCiAJCQkJCWFkZF9maywgbl9h ZGRfZmssICFsb2NrZWQsCi0JCQkJCWhlYXAsIE5VTEwsIGluZGV4ZWRfdGFibGUpOworCQkJCQlo ZWFwLCBOVUxMLCBpbmRleGVkX3RhYmxlLCBOVUxMKTsKIAkJfQogCiBmdW5jX2V4aXQ6CkBAIC0z MjI0LDcgKzMzMzAsOCBAQCBva19leGl0OgogCQlwcmVidWlsdC0+dHJ4LAogCQlwcmVidWlsdC0+ dGFibGUsIGN0eC0+aW5kZXhlZF90YWJsZSwKIAkJY3R4LT5vbmxpbmUsCi0JCWN0eC0+YWRkLCBj dHgtPmFkZF9rZXlfbnVtYmVycywgY3R4LT5udW1fdG9fYWRkLCB0YWJsZSk7CisJCWN0eC0+YWRk LCBjdHgtPmFkZF9rZXlfbnVtYmVycywgY3R4LT5udW1fdG9fYWRkLCB0YWJsZSwKKwkJY3R4LT5j b2xfbWFwKTsKICNpZm5kZWYgREJVR19PRkYKIG9vbToKICNlbmRpZiAvKiAhREJVR19PRkYgKi8K QEAgLTMyMzIsNyArMzMzOSw3IEBAIG9vbToKIAkgICAgJiYgY3R4LT5pbmRleGVkX3RhYmxlICE9 IHByZWJ1aWx0LT50YWJsZSkgewogCQlERUJVR19TWU5DX0MoInJvd19sb2dfdGFibGVfYXBwbHkx X2JlZm9yZSIpOwogCQllcnJvciA9IHJvd19sb2dfdGFibGVfYXBwbHkoCi0JCQljdHgtPnRociwg cHJlYnVpbHQtPnRhYmxlLCB0YWJsZSk7CisJCQljdHgtPnRociwgcHJlYnVpbHQtPnRhYmxlLCB0 YWJsZSwgY3R4LT5jb2xfbWFwKTsKIAl9CiAKIAkvKiBBZnRlciBhbiBlcnJvciwgcmVtb3ZlIGFs bCB0aG9zZSBpbmRleCBkZWZpbml0aW9ucwpAQCAtMzgxMSw4ICszOTE4LDggQEAgaGFfaW5ub2Jh c2U6OmNvbW1pdF9pbnBsYWNlX2FsdGVyX3RhYmxlKAogCQlpZiAoY3R4LT5vbmxpbmUpIHsKIAkJ CURFQlVHX1NZTkNfQygicm93X2xvZ190YWJsZV9hcHBseTJfYmVmb3JlIik7CiAJCQllcnJvciA9 IHJvd19sb2dfdGFibGVfYXBwbHkoCi0JCQkJY3R4LT50aHIsIHByZWJ1aWx0LT50YWJsZSwKLQkJ CQl0YWJsZSk7CisJCQkJY3R4LT50aHIsIHByZWJ1aWx0LT50YWJsZSwgdGFibGUsCisJCQkJY3R4 LT5jb2xfbWFwKTsKIAogCQkJc3dpdGNoIChlcnJvcikgewogCQkJCUtFWSoJZHVwX2tleTsKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmljJwot LS0gYS9zdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvZGF0YTBkYXRhLmljCXJldmlkOm1hcmtvLm1h a2VsYUBvcmFjbGUuY29tLTIwMTIwNjA0MTA1MzQzLW45NXVnNHFxZ243ODduZWEKKysrIGIvc3Rv cmFnZS9pbm5vYmFzZS9pbmNsdWRlL2RhdGEwZGF0YS5pYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEyMDYwNDIxNDc0NC0yOXRwYWtwNzVrMmdwMmtwCkBAIC00MDcsNiArNDA3LDgg QEAgZHR1cGxlX2NyZWF0ZV9mcm9tX21lbSgKIAkJfQogCX0KICNlbmRpZgorCVVOSVZfTUVNX0FT U0VSVF9XKHR1cGxlLT5maWVsZHMsIG5fZmllbGRzICogc2l6ZW9mICp0dXBsZS0+ZmllbGRzKTsK KwlVTklWX01FTV9JTlZBTElEKHR1cGxlLT5maWVsZHMsIG5fZmllbGRzICogc2l6ZW9mICp0dXBs ZS0+ZmllbGRzKTsKIAlyZXR1cm4odHVwbGUpOwogfQogCkBAIC00MzQsMTAgKzQzNiw2IEBAIGR0 dXBsZV9jcmVhdGUoCiAKIAl0dXBsZSA9IGR0dXBsZV9jcmVhdGVfZnJvbV9tZW0oYnVmLCBidWZf c2l6ZSwgbl9maWVsZHMpOwogCi0jaWZkZWYgVU5JVl9ERUJVRwotCVVOSVZfTUVNX0lOVkFMSUQo dHVwbGUtPmZpZWxkcywgbl9maWVsZHMgKiBzaXplb2YgKnR1cGxlLT5maWVsZHMpOwotI2VuZGlm Ci0KIAlyZXR1cm4odHVwbGUpOwogfQogCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3JvdzBsb2cuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3Jv dzBsb2cuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDYwNDEwNTM0My1uOTV1 ZzRxcWduNzg3bmVhCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2UvaW5jbHVkZS9yb3cwbG9nLmgJcmV2 aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA2MDQyMTQ3NDQtMjl0cGFrcDc1azJncDJr cApAQCAtMTc2LDggKzE3NiwxMCBAQCByb3dfbG9nX3RhYmxlX2FwcGx5KAogCXF1ZV90aHJfdCoJ dGhyLAkvKiE8IGluOiBxdWVyeSBncmFwaCAqLwogCWRpY3RfdGFibGVfdCoJb2xkX3RhYmxlLAog CQkJCS8qITwgaW46IG9sZCB0YWJsZSAqLwotCXN0cnVjdCBUQUJMRSoJdGFibGUpCS8qITwgaW4v b3V0OiBNeVNRTCB0YWJsZQorCXN0cnVjdCBUQUJMRSoJdGFibGUsCS8qITwgaW4vb3V0OiBNeVNR TCB0YWJsZQogCQkJCShmb3IgcmVwb3J0aW5nIGR1cGxpY2F0ZXMpICovCisJY29uc3QgdWxpbnQq CWNvbF9tYXApLyohPCBpbjogbWFwcGluZyBvZiBvbGQgY29sdW1uCisJCQkJbnVtYmVycyB0byBu ZXcgb25lcywgb3IgTlVMTCAqLwogCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2Vk X3Jlc3VsdCkpOwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLy8qKgoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2UvaW5j bHVkZS9yb3cwbWVyZ2UuaCcKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBtZXJn ZS5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjA0MTA1MzQzLW45NXVnNHFx Z243ODduZWEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9pbmNsdWRlL3JvdzBtZXJnZS5oCXJldmlk Om1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjA0MjE0NzQ0LTI5dHBha3A3NWsyZ3Aya3AK QEAgLTI5MCwxMCArMjkwLDEzIEBAIHJvd19tZXJnZV9idWlsZF9pbmRleGVzKAogCWRpY3RfaW5k ZXhfdCoqCWluZGV4ZXMsCS8qITwgaW46IGluZGV4ZXMgdG8gYmUgY3JlYXRlZCAqLwogCWNvbnN0 IHVsaW50KglrZXlfbnVtYmVycywJLyohPCBpbjogTXlTUUwga2V5IG51bWJlcnMgKi8KIAl1bGlu dAkJbl9pbmRleGVzLAkvKiE8IGluOiBzaXplIG9mIGluZGV4ZXNbXSAqLwotCXN0cnVjdCBUQUJM RSoJdGFibGUpCQkvKiE8IGluL291dDogTXlTUUwgdGFibGUsIGZvcgorCXN0cnVjdCBUQUJMRSoJ dGFibGUsCQkvKiE8IGluL291dDogTXlTUUwgdGFibGUsIGZvcgogCQkJCQlyZXBvcnRpbmcgZXJy b25lb3VzIGtleSB2YWx1ZQogCQkJCQlpZiBhcHBsaWNhYmxlICovCi0JX19hdHRyaWJ1dGVfXygo bm9ubnVsbCwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CisJY29uc3QgdWxpbnQqCWNvbF9tYXApCS8q ITwgaW46IG1hcHBpbmcgb2Ygb2xkIGNvbHVtbgorCQkJCQludW1iZXJzIHRvIG5ldyBvbmVzLCBv ciBOVUxMCisJCQkJCWlmIG9sZF90YWJsZSA9PSBuZXdfdGFibGUgKi8KKwlfX2F0dHJpYnV0ZV9f KChub25udWxsKDEsMiwzLDUsNiw4KSwgd2Fybl91bnVzZWRfcmVzdWx0KSk7CiAvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovLyoqCiBXcml0ZSBhIGJ1ZmZlciB0byBhIGJsb2NrLiAqLwogVU5JVl9JTlRFUk4KCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHJvdy5oJwotLS0gYS9z dG9yYWdlL2lubm9iYXNlL2luY2x1ZGUvcm93MHJvdy5oCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFj bGUuY29tLTIwMTIwNjA0MTA1MzQzLW45NXVnNHFxZ243ODduZWEKKysrIGIvc3RvcmFnZS9pbm5v YmFzZS9pbmNsdWRlL3JvdzByb3cuaAlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEy MDYwNDIxNDc0NC0yOXRwYWtwNzVrMmdwMmtwCkBAIC0xNDMsMTIgKzE0MywxNCBAQCByb3dfYnVp bGQoCiAJCQkJCWNvbnN1bHRlZCBpbnN0ZWFkOyB0aGUgdXNlcgogCQkJCQljb2x1bW5zIGluIHRo aXMgdGFibGUgc2hvdWxkIGJlCiAJCQkJCXRoZSBzYW1lIGNvbHVtbnMgYXMgaW4gaW5kZXgtPnRh YmxlICovCisJY29uc3QgdWxpbnQqCQljb2xfbWFwLC8qITwgaW46IG1hcHBpbmcgb2Ygb2xkIGNv bHVtbgorCQkJCQludW1iZXJzIHRvIG5ldyBvbmVzLCBvciBOVUxMICovCiAJcm93X2V4dF90KioJ CWV4dCwJLyohPCBvdXQsIG93bjogY2FjaGUgb2YKIAkJCQkJZXh0ZXJuYWxseSBzdG9yZWQgY29s dW1uCiAJCQkJCXByZWZpeGVzLCBvciBOVUxMICovCiAJbWVtX2hlYXBfdCoJCWhlYXApCS8qITwg aW46IG1lbW9yeSBoZWFwIGZyb20gd2hpY2gKIAkJCQkJdGhlIG1lbW9yeSBuZWVkZWQgaXMgYWxs b2NhdGVkICovCi0JX19hdHRyaWJ1dGVfXygobm9ubnVsbCgyLDMsNyksIHdhcm5fdW51c2VkX3Jl c3VsdCkpOworCV9fYXR0cmlidXRlX18oKG5vbm51bGwoMiwzLDgpLCB3YXJuX3VudXNlZF9yZXN1 bHQpKTsKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLy8qKgogQ29udmVydHMgYW4gaW5kZXggcmVjb3JkIHRvIGEgdHlw ZWQgZGF0YSB0dXBsZS4KIEByZXR1cm4gaW5kZXggZW50cnkgYnVpbHQ7IGRvZXMgbm90IHNldCBp bmZvX2JpdHMsIGFuZCB0aGUgZGF0YSBmaWVsZHMKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdl L2lubm9iYXNlL3Jvdy9yb3cwbG9nLmNjJwotLS0gYS9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cw bG9nLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNjA0MTA1MzQzLW45NXVn NHFxZ243ODduZWEKKysrIGIvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MGxvZy5jYwlyZXZpZDpt YXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDYwNDIxNDc0NC0yOXRwYWtwNzVrMmdwMmtwCkBA IC0xMDA5LDYgKzEwMDksOCBAQCByb3dfbG9nX3RhYmxlX2FwcGx5X2NvbnZlcnRfbXJlYygKIAlj b25zdCBtcmVjX3QqCQltcmVjLAkJLyohPCBpbjogbWVyZ2UgcmVjb3JkICovCiAJY29uc3QgZGlj dF9pbmRleF90KglpbmRleCwJCS8qITwgaW46IGluZGV4IG9mIG1yZWMgKi8KIAljb25zdCB1bGlu dCoJCW9mZnNldHMsCS8qITwgaW46IG9mZnNldHMgb2YgbXJlYyAqLworCWNvbnN0IHVsaW50KgkJ Y29sX21hcCwJLyohPCBpbjogbWFwcGluZyBvZiBvbGQgY29sdW1uCisJCQkJCQludW1iZXJzIHRv IG5ldyBvbmVzLCBvciBOVUxMICovCiAJbWVtX2hlYXBfdCoJCWhlYXAsCQkvKiE8IGluL291dDog bWVtb3J5IGhlYXAgKi8KIAlkaWN0X3RhYmxlX3QqCQluZXdfdGFibGUsCS8qITwgaW4vb3V0OiB0 YWJsZQogCQkJCQkJYmVpbmcgcmVidWlsdCAqLwpAQCAtMTAxOCwxNiArMTAyMCwzMyBAQCByb3df bG9nX3RhYmxlX2FwcGx5X2NvbnZlcnRfbXJlYygKIAlkdHVwbGVfdCoJcm93OwogCiAJLyogVGhp cyBpcyBiYXNlZCBvbiByb3dfYnVpbGQoKS4gKi8KLQlyb3cgPSBkdHVwbGVfY3JlYXRlKGhlYXAs IGRpY3RfdGFibGVfZ2V0X25fY29scyhpbmRleC0+dGFibGUpKTsKLQlkaWN0X3RhYmxlX2NvcHlf dHlwZXMocm93LCBpbmRleC0+dGFibGUpOworCXJvdyA9IGR0dXBsZV9jcmVhdGUoaGVhcCwgZGlj dF90YWJsZV9nZXRfbl9jb2xzKG5ld190YWJsZSkpOworCWRpY3RfdGFibGVfY29weV90eXBlcyhy b3csIG5ld190YWJsZSk7CiAKIAlmb3IgKHVsaW50IGkgPSAwOyBpIDwgcmVjX29mZnNfbl9maWVs ZHMob2Zmc2V0cyk7IGkrKykgewogCQljb25zdCBkaWN0X2ZpZWxkX3QqCWluZF9maWVsZAogCQkJ PSBkaWN0X2luZGV4X2dldF9udGhfZmllbGQoaW5kZXgsIGkpOworCisJCWlmIChpbmRfZmllbGQt PnByZWZpeF9sZW4pIHsKKwkJCS8qIENvbHVtbiBwcmVmaXhlcyBjYW4gb25seSBvY2N1ciBpbiBr ZXkKKwkJCWZpZWxkcywgd2hpY2ggY2Fubm90IGJlIHN0b3JlZCBleHRlcm5hbGx5LiBGb3IKKwkJ CWEgY29sdW1uIHByZWZpeCwgdGhlcmUgc2hvdWxkIGFsc28gYmUgdGhlIGZ1bGwKKwkJCWZpZWxk IGluIHRoZSBjbHVzdGVyZWQgaW5kZXggdHVwbGUuIFRoZSByb3cKKwkJCXR1cGxlIGNvbXByaXNl cyBmdWxsIGZpZWxkcywgbm90IHByZWZpeGVzLiAqLworCQkJdXRfYWQoIXJlY19vZmZzX250aF9l eHRlcm4ob2Zmc2V0cywgaSkpOworCQkJY29udGludWU7CisJCX0KKwogCQljb25zdCBkaWN0X2Nv bF90Kgljb2wKIAkJCT0gZGljdF9maWVsZF9nZXRfY29sKGluZF9maWVsZCk7CiAJCXVsaW50CQkJ Y29sX25vCi0JCQk9IGRpY3RfY29sX2dldF9ubyhjb2wpOworCQkJPSBjb2xfbWFwW2RpY3RfY29s X2dldF9ubyhjb2wpXTsKKworCQlpZiAoY29sX25vID09IFVMSU5UX1VOREVGSU5FRCkgeworCQkJ LyogZHJvcHBlZCBjb2x1bW4gKi8KKwkJCWNvbnRpbnVlOworCQl9CisKIAkJZGZpZWxkX3QqCQlk ZmllbGQKIAkJCT0gZHR1cGxlX2dldF9udGhfZmllbGQocm93LCBjb2xfbm8pOwogCQl1bGludAkJ CWxlbjsKQEAgLTEwMzksMjQgKzEwNTgsMTcgQEAgcm93X2xvZ190YWJsZV9hcHBseV9jb252ZXJ0 X21yZWMoCiAJCQkJZGljdF90YWJsZV96aXBfc2l6ZShpbmRleC0+dGFibGUpLAogCQkJCWksICZs ZW4sIGhlYXApOwogCQkJdXRfYShkYXRhKTsKLQkJCWRmaWVsZF9zZXRfZGF0YShkZmllbGQsIGRh dGEsIGxlbik7Ci0JCX0gZWxzZSBpZiAoaW5kX2ZpZWxkLT5wcmVmaXhfbGVuID09IDApIHsKKwkJ fSBlbHNlIHsKIAkJCWRhdGEgPSByZWNfZ2V0X250aF9maWVsZChtcmVjLCBvZmZzZXRzLCBpLCAm bGVuKTsKLQkJCWRmaWVsZF9zZXRfZGF0YShkZmllbGQsIGRhdGEsIGxlbik7CiAJCX0KIAotCQl1 dF9hZChkaWN0X2NvbF90eXBlX2Fzc2VydF9lcXVhbChjb2wsCi0JCQkJCQkgZGZpZWxkX2dldF90 eXBlKGRmaWVsZCkpKTsKKwkJZGZpZWxkX3NldF9kYXRhKGRmaWVsZCwgZGF0YSwgbGVuKTsKIAog CQkvKiBTZWUgaWYgYW55IGNvbHVtbnMgd2VyZSBjaGFuZ2VkIHRvIE5VTEwgb3IgTk9UIE5VTEwu ICovCi0JCS8qIFRPRE86IGFkanVzdCBmb3IgQUREIENPTFVNTiwgRFJPUCBDT0xVTU4gKi8KLQkJ aWYgKGNvbF9ubyA+PSBkaWN0X3RhYmxlX2dldF9uX2NvbHMobmV3X3RhYmxlKSkgewotCQkJY29u dGludWU7Ci0JCX0KLQogCQljb25zdCBkaWN0X2NvbF90KgluZXdfY29sCiAJCQk9IGRpY3RfdGFi bGVfZ2V0X250aF9jb2wobmV3X3RhYmxlLCBjb2xfbm8pOwogCQl1dF9hZChuZXdfY29sLT5tdHlw ZSA9PSBjb2wtPm10eXBlKTsKKwogCQkvKiBBc3NlcnQgdGhhdCBwcnR5cGUgbWF0Y2hlcyBleGNl cHQgZm9yIG51bGxhYmlsaXR5LiAqLwogCQl1dF9hZCghKChuZXdfY29sLT5wcnR5cGUgXiBjb2wt PnBydHlwZSkgJiB+REFUQV9OT1RfTlVMTCkpOwogCQl1dF9hZCghKChuZXdfY29sLT5wcnR5cGUg XiBkZmllbGRfZ2V0X3R5cGUoZGZpZWxkKS0+cHJ0eXBlKQpAQCAtMTA4MCw5ICsxMDkyLDYgQEAg cm93X2xvZ190YWJsZV9hcHBseV9jb252ZXJ0X21yZWMoCiAJCQkJCQkgZGZpZWxkX2dldF90eXBl KGRmaWVsZCkpKTsKIAl9CiAKLQkvKiBUT0RPOiBjb252ZXJ0IHJvdyB0byBuZXdfdGFibGUtPmNv bHMsIGluIGNhc2UgY29sdW1ucyBhcmUKLQlhZGRlZCBvciBkcm9wcGVkIG9yIHJlb3JkZXJlZCAq LwotCiAJKmVycm9yID0gREJfU1VDQ0VTUzsKIAlyZXR1cm4ocm93KTsKIH0KQEAgLTExNjYsNiAr MTE3NSw4IEBAIHJvd19sb2dfdGFibGVfYXBwbHlfaW5zZXJ0KAogCWNvbnN0IHVsaW50KgkJb2Zm c2V0cywJLyohPCBpbjogb2Zmc2V0cyBvZiBtcmVjICovCiAJbWVtX2hlYXBfdCoJCW9mZnNldHNf aGVhcCwJLyohPCBpbi9vdXQ6IG1lbW9yeSBoZWFwCiAJCQkJCQl0aGF0IGNhbiBiZSBlbXB0aWVk ICovCisJY29uc3QgdWxpbnQqCQljb2xfbWFwLAkvKiE8IGluOiBtYXBwaW5nIG9mIG9sZCBjb2x1 bW4KKwkJCQkJCW51bWJlcnMgdG8gbmV3IG9uZXMsIG9yIE5VTEwgKi8KIAltZW1faGVhcF90KgkJ aGVhcCwJCS8qITwgaW4vb3V0OiBtZW1vcnkgaGVhcCAqLwogCWRpY3RfdGFibGVfdCoJCW5ld190 YWJsZSwJLyohPCBpbi9vdXQ6IHRhYmxlCiAJCQkJCQliZWluZyByZWJ1aWx0ICovCkBAIC0xMTc0 LDcgKzExODUsNyBAQCByb3dfbG9nX3RhYmxlX2FwcGx5X2luc2VydCgKIHsKIAlkYmVycl90CQll cnJvcjsKIAljb25zdCBkdHVwbGVfdCoJcm93CT0gcm93X2xvZ190YWJsZV9hcHBseV9jb252ZXJ0 X21yZWMoCi0JCW1yZWMsIGR1cC0+aW5kZXgsIG9mZnNldHMsIGhlYXAsIG5ld190YWJsZSwKKwkJ bXJlYywgZHVwLT5pbmRleCwgb2Zmc2V0cywgY29sX21hcCwgaGVhcCwgbmV3X3RhYmxlLAogCQkm ZXJyb3IpOwogCiAJdXRfYWQoIXJvdyA9PSAoZXJyb3IgIT0gREJfU1VDQ0VTUykpOwpAQCAtMTIx Nyw3ICsxMjI4LDcgQEAgcm93X2xvZ190YWJsZV9hcHBseV9kZWxldGVfbG93KAogCQkvKiBCdWls ZCBhIHJvdyB0ZW1wbGF0ZSBmb3IgcHVyZ2luZyBzZWNvbmRhcnkgaW5kZXggZW50cmllcy4gKi8K IAkJcm93ID0gcm93X2J1aWxkKAogCQkJUk9XX0NPUFlfREFUQSwgaW5kZXgsIGJ0cl9wY3VyX2dl dF9yZWMocGN1ciksCi0JCQlvZmZzZXRzLCBOVUxMLCAmZXh0LCBoZWFwKTsKKwkJCW9mZnNldHMs IE5VTEwsIE5VTEwsICZleHQsIGhlYXApOwogCX0gZWxzZSB7CiAJCXJvdyA9IE5VTEw7CiAJfQpA QCAtMTM5Myw2ICsxNDA0LDggQEAgcm93X2xvZ190YWJsZV9hcHBseV91cGRhdGUoCiAJY29uc3Qg dWxpbnQqCQlvZmZzZXRzLAkvKiE8IGluOiBvZmZzZXRzIG9mIG1yZWMgKi8KIAltZW1faGVhcF90 KgkJb2Zmc2V0c19oZWFwLAkvKiE8IGluL291dDogbWVtb3J5IGhlYXAKIAkJCQkJCXRoYXQgY2Fu IGJlIGVtcHRpZWQgKi8KKwljb25zdCB1bGludCoJCWNvbF9tYXAsCS8qITwgaW46IG1hcHBpbmcg b2Ygb2xkIGNvbHVtbgorCQkJCQkJbnVtYmVycyB0byBuZXcgb25lcywgb3IgTlVMTCAqLwogCW1l bV9oZWFwX3QqCQloZWFwLAkJLyohPCBpbi9vdXQ6IG1lbW9yeSBoZWFwICovCiAJZGljdF90YWJs ZV90KgkJbmV3X3RhYmxlLAkvKiE8IGluL291dDogdGFibGUKIAkJCQkJCWJlaW5nIHJlYnVpbHQg Ki8KQEAgLTE0MTYsNyArMTQyOSw3IEBAIHJvd19sb2dfdGFibGVfYXBwbHlfdXBkYXRlKAogCSAg ICAgICsgKGR1cC0+aW5kZXgtPm9ubGluZV9sb2ctPnNhbWVfcGsgPyAwIDogMikpOwogCiAJcm93 ID0gcm93X2xvZ190YWJsZV9hcHBseV9jb252ZXJ0X21yZWMoCi0JCW1yZWMsIGR1cC0+aW5kZXgs IG9mZnNldHMsIGhlYXAsIG5ld190YWJsZSwgJmVycm9yKTsKKwkJbXJlYywgZHVwLT5pbmRleCwg b2Zmc2V0cywgY29sX21hcCwgaGVhcCwgbmV3X3RhYmxlLCAmZXJyb3IpOwogCiAJdXRfYWQoIXJv dyA9PSAoZXJyb3IgIT0gREJfU1VDQ0VTUykpOwogCkBAIC0xNTQ2LDcgKzE1NTksOCBAQCBkZWxl dGVfaW5zZXJ0OgogCQl0aGUgcmVjb3JkLiAqLwogCQlvbGRfcm93ID0gcm93X2J1aWxkKFJPV19D T1BZX0RBVEEsIGluZGV4LAogCQkJCSAgICBidHJfcGN1cl9nZXRfcmVjKCZwY3VyKSwKLQkJCQkg ICAgY3VyX29mZnNldHMsIE5VTEwsICZvbGRfZXh0LCBoZWFwKTsKKwkJCQkgICAgY3VyX29mZnNl dHMsIG5ld190YWJsZSwKKwkJCQkgICAgY29sX21hcCwgJm9sZF9leHQsIGhlYXApOwogCQl1dF9h ZChvbGRfcm93KTsKIAl9IGVsc2UgewogCQlvbGRfcm93ID0gTlVMTDsKQEAgLTE2NDcsNiArMTY2 MSw4IEBAIHJvd19sb2dfdGFibGVfYXBwbHlfb3AoCiAJCQkJCQlEQl9UUlhfSUQgaW4gbmV3IGlu ZGV4ICovCiAJZGljdF90YWJsZV90KgkJbmV3X3RhYmxlLAkvKiE8IGluL291dDogdGFibGUKIAkJ CQkJCWJlaW5nIHJlYnVpbHQgKi8KKwljb25zdCB1bGludCoJCWNvbF9tYXAsCS8qITwgaW46IG1h cHBpbmcgb2Ygb2xkIGNvbHVtbgorCQkJCQkJbnVtYmVycyB0byBuZXcgb25lcywgb3IgTlVMTCAq LwogCXJvd19tZXJnZV9kdXBfdCoJZHVwLAkJLyohPCBpbi9vdXQ6IGZvciByZXBvcnRpbmcKIAkJ CQkJCWR1cGxpY2F0ZSBrZXkgZXJyb3JzICovCiAJZGJlcnJfdCoJCWVycm9yLAkJLyohPCBvdXQ6 IERCX1NVQ0NFU1MKQEAgLTE3MTIsNyArMTcyOCw3IEBAIHJvd19sb2dfdGFibGVfYXBwbHlfb3Ao CiAJCQkJICAgIHRyeF9yZWFkX3RyeF9pZChkYl90cnhfaWQpKSkgewogCQkJCSplcnJvciA9IHJv d19sb2dfdGFibGVfYXBwbHlfaW5zZXJ0KAogCQkJCQl0aHIsIG1yZWMsIG9mZnNldHMsIG9mZnNl dHNfaGVhcCwKLQkJCQkJaGVhcCwgbmV3X3RhYmxlLCBkdXApOworCQkJCQljb2xfbWFwLCBoZWFw LCBuZXdfdGFibGUsIGR1cCk7CiAJCQl9CiAJCX0KIAkJYnJlYWs7CkBAIC0xODgxLDggKzE4OTcs OSBAQCByb3dfbG9nX3RhYmxlX2FwcGx5X29wKAogCQkJCSAgICB0cnhfcmVhZF90cnhfaWQoZGJf dHJ4X2lkKSkpIHsKIAkJCQkqZXJyb3IgPSByb3dfbG9nX3RhYmxlX2FwcGx5X3VwZGF0ZSgKIAkJ CQkJdGhyLCB0cnhfaWRfY29sLCBuZXdfdHJ4X2lkX2NvbCwKLQkJCQkJbXJlYywgb2Zmc2V0cywg b2Zmc2V0c19oZWFwLCBoZWFwLAotCQkJCQluZXdfdGFibGUsIGR1cCwgb2xkX3BrKTsKKwkJCQkJ bXJlYywgb2Zmc2V0cywgb2Zmc2V0c19oZWFwLAorCQkJCQljb2xfbWFwLAorCQkJCQloZWFwLCBu ZXdfdGFibGUsIGR1cCwgb2xkX3BrKTsKIAkJCX0KIAkJfQogCkBAIC0xOTAyLDYgKzE5MTksOCBA QCBkYmVycl90CiByb3dfbG9nX3RhYmxlX2FwcGx5X29wcygKIC8qPT09PT09PT09PT09PT09PT09 PT0qLwogCXF1ZV90aHJfdCoJdGhyLAkvKiE8IGluOiBxdWVyeSBncmFwaCAqLworCWNvbnN0IHVs aW50Kgljb2xfbWFwLC8qITwgaW46IG1hcHBpbmcgb2Ygb2xkIGNvbHVtbgorCQkJCW51bWJlcnMg dG8gbmV3IG9uZXMsIG9yIE5VTEwgKi8KIAlyb3dfbWVyZ2VfZHVwX3QqZHVwKQkvKiE8IGluL291 dDogZm9yIHJlcG9ydGluZyBkdXBsaWNhdGUga2V5CiAJCQkJZXJyb3JzICovCiB7CkBAIC0yMDc2 LDcgKzIwOTUsNyBAQCBhbGxfZG9uZToKIAkJICAgICAgICgmaW5kZXgtPm9ubGluZV9sb2ctPmhl YWQuYnVmKVsxXSAtIG1yZWNfZW5kKTsKIAkJbXJlYyA9IHJvd19sb2dfdGFibGVfYXBwbHlfb3Ao CiAJCQl0aHIsIHRyeF9pZF9jb2wsIG5ld190cnhfaWRfY29sLAotCQkJaW5kZXgtPm9ubGluZV9s b2ctPnRhYmxlLAorCQkJaW5kZXgtPm9ubGluZV9sb2ctPnRhYmxlLCBjb2xfbWFwLAogCQkJZHVw LCAmZXJyb3IsIG9mZnNldHNfaGVhcCwgaGVhcCwKIAkJCWluZGV4LT5vbmxpbmVfbG9nLT5oZWFk LmJ1ZiwKIAkJCSgmaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYnVmKVsxXSwgb2Zmc2V0cyk7CkBA IC0yMTc1LDcgKzIxOTQsNyBAQCBhbGxfZG9uZToKIAogCQluZXh0X21yZWMgPSByb3dfbG9nX3Rh YmxlX2FwcGx5X29wKAogCQkJdGhyLCB0cnhfaWRfY29sLCBuZXdfdHJ4X2lkX2NvbCwKLQkJCWlu ZGV4LT5vbmxpbmVfbG9nLT50YWJsZSwKKwkJCWluZGV4LT5vbmxpbmVfbG9nLT50YWJsZSwgY29s X21hcCwKIAkJCWR1cCwgJmVycm9yLCBvZmZzZXRzX2hlYXAsIGhlYXAsCiAJCQltcmVjLCBtcmVj X2VuZCwgb2Zmc2V0cyk7CiAKQEAgLTIyNDIsOCArMjI2MSwxMCBAQCByb3dfbG9nX3RhYmxlX2Fw cGx5KAogCXF1ZV90aHJfdCoJdGhyLAkvKiE8IGluOiBxdWVyeSBncmFwaCAqLwogCWRpY3RfdGFi bGVfdCoJb2xkX3RhYmxlLAogCQkJCS8qITwgaW46IG9sZCB0YWJsZSAqLwotCXN0cnVjdCBUQUJM RSoJdGFibGUpCS8qITwgaW4vb3V0OiBNeVNRTCB0YWJsZQorCXN0cnVjdCBUQUJMRSoJdGFibGUs CS8qITwgaW4vb3V0OiBNeVNRTCB0YWJsZQogCQkJCShmb3IgcmVwb3J0aW5nIGR1cGxpY2F0ZXMp ICovCisJY29uc3QgdWxpbnQqCWNvbF9tYXApLyohPCBpbjogbWFwcGluZyBvZiBvbGQgY29sdW1u CisJCQkJbnVtYmVycyB0byBuZXcgb25lcywgb3IgTlVMTCAqLwogewogCWRiZXJyX3QJCWVycm9y OwogCWRpY3RfaW5kZXhfdCoJY2x1c3RfaW5kZXg7CkBAIC0yMjcwLDcgKzIyOTEsNyBAQCByb3df bG9nX3RhYmxlX2FwcGx5KAogCQl1dF9hZCgwKTsKIAkJZXJyb3IgPSBEQl9FUlJPUjsKIAl9IGVs c2UgewotCQllcnJvciA9IHJvd19sb2dfdGFibGVfYXBwbHlfb3BzKHRociwgJmR1cCk7CisJCWVy cm9yID0gcm93X2xvZ190YWJsZV9hcHBseV9vcHModGhyLCBjb2xfbWFwLCAmZHVwKTsKIAl9CiAK IAlyd19sb2NrX3hfdW5sb2NrKGRpY3RfaW5kZXhfZ2V0X2xvY2soY2x1c3RfaW5kZXgpKTsKCj09 PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbWVyZ2UuY2MnCi0tLSBh L3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBtZXJnZS5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEyMDYwNDEwNTM0My1uOTV1ZzRxcWduNzg3bmVhCisrKyBiL3N0b3JhZ2UvaW5u b2Jhc2Uvcm93L3JvdzBtZXJnZS5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEy MDYwNDIxNDc0NC0yOXRwYWtwNzVrMmdwMmtwCkBAIC0yODQsNyArMjg0LDcgQEAgcm93X21lcmdl X2J1Zl9hZGQoCiAJZGljdF9pbmRleF90KgkJZnRzX2luZGV4LC8qITwgaW46IGZ0cyBpbmRleCB0 byBiZSBjcmVhdGVkICovCiAJY29uc3QgZGljdF90YWJsZV90KglvbGRfdGFibGUsLyohPCBpbjog b3JpZ2luYWwgdGFibGUgKi8KIAlmdHNfcHNvcnRfdCoJCXBzb3J0X2luZm8sIC8qITwgaW46IHBh cmFsbGVsIHNvcnQgaW5mbyAqLwotCWNvbnN0IGR0dXBsZV90KgkJcm93LAkvKiE8IGluOiByb3cg aW4gY2x1c3RlcmVkIGluZGV4ICovCisJY29uc3QgZHR1cGxlX3QqCQlyb3csCS8qITwgaW46IHRh YmxlIHJvdyAqLwogCWNvbnN0IHJvd19leHRfdCoJZXh0LAkvKiE8IGluOiBjYWNoZSBvZiBleHRl cm5hbGx5IHN0b3JlZAogCQkJCQljb2x1bW4gcHJlZml4ZXMsIG9yIE5VTEwgKi8KIAlkb2NfaWRf dCoJCWRvY19pZCkJLyohPCBpbi9vdXQ6IERvYyBJRCBpZiB3ZSBhcmUKQEAgLTMzOCwzNSArMzM4 LDEzIEBAIHJvd19tZXJnZV9idWZfYWRkKAogCQljb25zdCBkaWN0X2NvbF90Kgljb2w7CiAJCXVs aW50CQkJY29sX25vOwogCQljb25zdCBkZmllbGRfdCoJCXJvd19maWVsZDsKLQkJaWJvb2wJCQlj b2xfYWRqdXN0ZWQ7CiAKIAkJY29sID0gaWZpZWxkLT5jb2w7CiAJCWNvbF9ubyA9IGRpY3RfY29s X2dldF9ubyhjb2wpOwotCQljb2xfYWRqdXN0ZWQgPSBGQUxTRTsKLQotCQkvKiBJZiB3ZSBhcmUg Y3JlYXRpbmcgYSBGVFMgaW5kZXgsIGEgbmV3IERvYwotCQlJRCBjb2x1bW4gaXMgYmVpbmcgYWRk ZWQsIHNvIHdlIG5lZWQgdG8gYWRqdXN0Ci0JCWFueSBjb2x1bW4gbnVtYmVyIHBvc2l0aW9uZWQg YWZ0ZXIgdGhpcyBEb2MgSUQuCi0JCUhvd2V2ZXIsIGlmIHdlIGFyZSByZWJ1aWxkaW5nIHRoZSB0 YWJsZSBmb3IgYWRkaW5nCi0JCW5ldyBwcmltYXJ5LCBhbmQgaWYgdGhlIG9sZCB0YWJsZSBhbHJl YWR5IGhhcwotCQlGVFNfRE9DX0lELCBzdWNoIGFkanVzdG1lbnQgaXMgbm90IG5lZWRlZCAqLwot CQlpZiAoKmRvY19pZCA+IDAKLQkJICAgICYmIERJQ1RfVEYyX0ZMQUdfSVNfU0VUKGluZGV4LT50 YWJsZSwKLQkJCQkJICAgIERJQ1RfVEYyX0ZUU19BRERfRE9DX0lEKQotCQkgICAgJiYgIURJQ1Rf VEYyX0ZMQUdfSVNfU0VUKG9sZF90YWJsZSwKLQkJCQkJICAgICBESUNUX1RGMl9GVFNfSEFTX0RP Q19JRCkKLQkJICAgICYmIGNvbF9ubyA+IGluZGV4LT50YWJsZS0+ZnRzLT5kb2NfY29sKSB7Ci0K LQkJCXV0X2FkKGluZGV4LT50YWJsZS0+ZnRzKTsKLQotCQkJY29sX25vLS07Ci0JCQljb2xfYWRq dXN0ZWQgPSBUUlVFOwotCQl9CiAKIAkJLyogUHJvY2VzcyB0aGUgRG9jIElEIGNvbHVtbiAqLwog CQlpZiAoKmRvY19pZCA+IDAKLQkJICAgICYmIGNvbF9ubyA9PSBpbmRleC0+dGFibGUtPmZ0cy0+ ZG9jX2NvbAotCQkgICAgJiYgIWNvbF9hZGp1c3RlZCkgeworCQkgICAgJiYgY29sX25vID09IGlu ZGV4LT50YWJsZS0+ZnRzLT5kb2NfY29sKSB7CiAJCQlmdHNfd3JpdGVfZG9jX2lkKChieXRlKikg JndyaXRlX2RvY19pZCwgKmRvY19pZCk7CiAKIAkJCS8qIE5vdGU6IGZpZWxkLT5kYXRhIG5vdyBw b2ludHMgdG8gYSB2YWx1ZSBvbiB0aGUKQEAgLTEyMzUsNyArMTIxMyw3IEBAIHJvd19tZXJnZV9z a2lwX3JlYygKIFJlYWRzIGNsdXN0ZXJlZCBpbmRleCBvZiB0aGUgdGFibGUgYW5kIGNyZWF0ZSB0 ZW1wb3JhcnkgZmlsZXMKIGNvbnRhaW5pbmcgdGhlIGluZGV4IGVudHJpZXMgZm9yIHRoZSBpbmRl eGVzIHRvIGJlIGJ1aWx0LgogQHJldHVybglEQl9TVUNDRVNTIG9yIGVycm9yICovCi1zdGF0aWMg X19hdHRyaWJ1dGVfXygobm9ubnVsbCkpCitzdGF0aWMgX19hdHRyaWJ1dGVfXygobm9ubnVsbCgx LDIsMyw0LDYsOSwxMCwxMyksd2Fybl91bnVzZWRfcmVzdWx0KSkKIGRiZXJyX3QKIHJvd19tZXJn ZV9yZWFkX2NsdXN0ZXJlZF9pbmRleCgKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8K QEAgLTEyNTEsMTIgKzEyMjksMTggQEAgcm93X21lcmdlX3JlYWRfY2x1c3RlcmVkX2luZGV4KAog CQkJCQlvbmxpbmUgKi8KIAlkaWN0X2luZGV4X3QqKgkJaW5kZXgsCS8qITwgaW46IGluZGV4ZXMg dG8gYmUgY3JlYXRlZCAqLwogCWRpY3RfaW5kZXhfdCoJCWZ0c19zb3J0X2lkeCwKLQkJCQkJLyoh PCBpbjogaW5kZXhlcyB0byBiZSBjcmVhdGVkICovCi0JZnRzX3Bzb3J0X3QqCQlwc29ydF9pbmZv LCAvKiE8IGluOiBwYXJhbGxlbCBzb3J0IGluZm8gKi8KKwkJCQkJLyohPCBpbjogZnVsbC10ZXh0 IGluZGV4IHRvIGJlIGNyZWF0ZWQsCisJCQkJCW9yIE5VTEwgKi8KKwlmdHNfcHNvcnRfdCoJCXBz b3J0X2luZm8sCisJCQkJCS8qITwgaW46IHBhcmFsbGVsIHNvcnQgaW5mbyBmb3IKKwkJCQkJZnRz X3NvcnRfaWR4IGNyZWF0aW9uLCBvciBOVUxMICovCiAJbWVyZ2VfZmlsZV90KgkJZmlsZXMsCS8q ITwgaW46IHRlbXBvcmFyeSBmaWxlcyAqLwogCWNvbnN0IHVsaW50KgkJa2V5X251bWJlcnMsCiAJ CQkJCS8qITwgaW46IE15U1FMIGtleSBudW1iZXJzIHRvIGNyZWF0ZSAqLwogCXVsaW50CQkJbl9p bmRleCwvKiE8IGluOiBudW1iZXIgb2YgaW5kZXhlcyB0byBjcmVhdGUgKi8KKwljb25zdCB1bGlu dCoJCWNvbF9tYXAsLyohPCBpbjogbWFwcGluZyBvZiBvbGQgY29sdW1uCisJCQkJCW51bWJlcnMg dG8gbmV3IG9uZXMsIG9yIE5VTEwKKwkJCQkJaWYgb2xkX3RhYmxlID09IG5ld190YWJsZSAqLwog CXJvd19tZXJnZV9ibG9ja190KglibG9jaykJLyohPCBpbi9vdXQ6IGZpbGUgYnVmZmVyICovCiB7 CiAJZGljdF9pbmRleF90KgkJY2x1c3RfaW5kZXg7CS8qIENsdXN0ZXJlZCBpbmRleCAqLwpAQCAt MTI3MCw5ICsxMjU0LDYgQEAgcm93X21lcmdlX3JlYWRfY2x1c3RlcmVkX2luZGV4KAogCXVsaW50 CQkJbl9ub25udWxsID0gMDsJLyogbnVtYmVyIG9mIGNvbHVtbnMKIAkJCQkJCWNoYW5nZWQgdG8g Tk9UIE5VTEwgKi8KIAl1bGludCoJCQlub25udWxsID0gTlVMTDsJLyogTk9UIE5VTEwgY29sdW1u cyAqLwotCXVsaW50CQkJbl9udWxsYWJsZSA9IDA7CS8qIG51bWJlciBvZiBjb2x1bW5zCi0JCQkJ CQljaGFuZ2VkIHRvIE5VTEwgKi8KLQl1bGludCoJCQludWxsYWJsZSA9IE5VTEw7LyogTlVMTGFi bGUgY29sdW1ucyAqLwogCWRpY3RfaW5kZXhfdCoJCWZ0c19pbmRleCA9IE5VTEw7LyogRlRTIGlu ZGV4ICovCiAJZG9jX2lkX3QJCWRvY19pZCA9IDA7CiAJZG9jX2lkX3QJCW1heF9kb2NfaWQgPSAw OwpAQCAtMTI4MSw2ICsxMjYyLDggQEAgcm93X21lcmdlX3JlYWRfY2x1c3RlcmVkX2luZGV4KAog CWlib29sCQkJZnRzX3BsbF9zb3J0ID0gRkFMU0U7CiAJaWJfaW50NjRfdAkJc2lnX2NvdW50ID0g MDsKIAorCXV0X2FkKG9sZF90YWJsZSA9PSBuZXdfdGFibGUgfHwgY29sX21hcCk7CisKIAl0cngt Pm9wX2luZm8gPSAicmVhZGluZyBjbHVzdGVyZWQgaW5kZXgiOwogCiAjaWZkZWYgRlRTX0lOVEVS TkFMX0RJQUdfUFJJTlQKQEAgLTEyOTIsNyArMTI3NSw2IEBAIHJvd19tZXJnZV9yZWFkX2NsdXN0 ZXJlZF9pbmRleCgKIAltZXJnZV9idWYgPSBzdGF0aWNfY2FzdDxyb3dfbWVyZ2VfYnVmX3QqKj4o CiAJCW1lbV9hbGxvYyhuX2luZGV4ICogc2l6ZW9mICptZXJnZV9idWYpKTsKIAotCiAJZm9yICh1 bGludCBpID0gMDsgaSA8IG5faW5kZXg7IGkrKykgewogCQlpZiAoaW5kZXhbaV0tPnR5cGUgJiBE SUNUX0ZUUykgewogCkBAIC0xMzM1LDQ0ICsxMzE3LDM4IEBAIHJvd19tZXJnZV9yZWFkX2NsdXN0 ZXJlZF9pbmRleCgKIAlidHJfcGN1cl9vcGVuX2F0X2luZGV4X3NpZGUoCiAJCVRSVUUsIGNsdXN0 X2luZGV4LCBCVFJfU0VBUkNIX0xFQUYsICZwY3VyLCBUUlVFLCAmbXRyKTsKIAotCWlmIChVTklW X1VOTElLRUxZKG9sZF90YWJsZSAhPSBuZXdfdGFibGUpKSB7Ci0JCXVsaW50CW5fY29scyA9IGRp Y3RfdGFibGVfZ2V0X25fY29scyhvbGRfdGFibGUpOwotCi0JCS8qIEEgcHJpbWFyeSBrZXkgd2ls bCBiZSBjcmVhdGVkLiAgSWRlbnRpZnkgdGhlCi0JCWNvbHVtbnMgdGhhdCB3ZXJlIGZsYWdnZWQg Tk9UIE5VTEwgaW4gdGhlIG5ldyB0YWJsZSwKLQkJc28gdGhhdCB3ZSBjYW4gcXVpY2tseSBjaGVj ayB0aGF0IHRoZSByZWNvcmRzIGluIHRoZQotCQkob2xkKSBjbHVzdGVyZWQgaW5kZXggZG8gbm90 IHZpb2xhdGUgdGhlIGFkZGVkIE5PVAotCQlOVUxMIGNvbnN0cmFpbnRzLiAqLwotCi0JCWlmICgh ZnRzX3NvcnRfaWR4KSB7Ci0JCQl1dF9hKG5fY29scyA9PSBkaWN0X3RhYmxlX2dldF9uX2NvbHMo bmV3X3RhYmxlKSk7Ci0JCX0KKwlpZiAob2xkX3RhYmxlICE9IG5ld190YWJsZSkgeworCQkvKiBU aGUgdGFibGUgaXMgYmVpbmcgcmVidWlsdC4gIElkZW50aWZ5IHRoZSBjb2x1bW5zCisJCXRoYXQg d2VyZSBmbGFnZ2VkIE5PVCBOVUxMIGluIHRoZSBuZXcgdGFibGUsIHNvIHRoYXQKKwkJd2UgY2Fu IHF1aWNrbHkgY2hlY2sgdGhhdCB0aGUgcmVjb3JkcyBpbiB0aGUgb2xkIHRhYmxlCisJCWRvIG5v dCB2aW9sYXRlIHRoZSBhZGRlZCBOT1QgTlVMTCBjb25zdHJhaW50cy4gKi8KIAogCQlub25udWxs ID0gc3RhdGljX2Nhc3Q8dWxpbnQqPigKLQkJCW1lbV9hbGxvYygyICogbl9jb2xzICogc2l6ZW9m ICpub25udWxsKSk7Ci0JCW51bGxhYmxlID0gbm9ubnVsbCArIG5fY29sczsKKwkJCW1lbV9hbGxv YyhkaWN0X3RhYmxlX2dldF9uX2NvbHMobmV3X3RhYmxlKQorCQkJCSAgKiBzaXplb2YgKm5vbm51 bGwpKTsKKworCQlmb3IgKHVsaW50IGkgPSAwOyBpIDwgZGljdF90YWJsZV9nZXRfbl9jb2xzKG9s ZF90YWJsZSk7IGkrKykgeworCQkJaWYgKGRpY3RfdGFibGVfZ2V0X250aF9jb2wob2xkX3RhYmxl LCBpKS0+cHJ0eXBlCisJCQkgICAgJiBEQVRBX05PVF9OVUxMKSB7CisJCQkJY29udGludWU7CisJ CQl9CiAKLQkJZm9yICh1bGludCBpID0gMDsgaSA8IG5fY29sczsgaSsrKSB7Ci0JCQkvKiBUT0RP OiBhZGp1c3QgZm9yIEFERCBDT0xVTU4sIERST1AgQ09MVU1OICovCi0JCQl1bGludAlvbGRfbm9u bnVsbAk9IERBVEFfTk9UX05VTEwKLQkJCQkmIGRpY3RfdGFibGVfZ2V0X250aF9jb2wob2xkX3Rh YmxlLCBpKS0+cHJ0eXBlOwotCQkJdWxpbnQJbmV3X25vbm51bGwJPSBEQVRBX05PVF9OVUxMCi0J CQkJJiBkaWN0X3RhYmxlX2dldF9udGhfY29sKG5ld190YWJsZSwgaSktPnBydHlwZTsKKwkJCWNv bnN0IHVsaW50IGogPSBjb2xfbWFwW2ldOwogCi0JCQlpZiAob2xkX25vbm51bGwgPT0gbmV3X25v bm51bGwpIHsKKwkJCWlmIChqID09IFVMSU5UX1VOREVGSU5FRCkgeworCQkJCS8qIFRoZSBjb2x1 bW4gd2FzIGRyb3BwZWQuICovCiAJCQkJY29udGludWU7CiAJCQl9CiAKLQkJCWlmIChvbGRfbm9u bnVsbCkgewotCQkJCW51bGxhYmxlW25fbnVsbGFibGUrK10gPSBpOwotCQkJfSBlbHNlIHsKLQkJ CQlub25udWxsW25fbm9ubnVsbCsrXSA9IGk7CisJCQlpZiAoZGljdF90YWJsZV9nZXRfbnRoX2Nv bChuZXdfdGFibGUsIGopLT5wcnR5cGUKKwkJCSAgICAmIERBVEFfTk9UX05VTEwpIHsKKwkJCQlu b25udWxsW25fbm9ubnVsbCsrXSA9IGo7CiAJCQl9CiAJCX0KIAotCQlpZiAoIW5fbm9ubnVsbCAm JiAhbl9udWxsYWJsZSkgeworCQlpZiAoIW5fbm9ubnVsbCkgewogCQkJbWVtX2ZyZWUobm9ubnVs bCk7Ci0JCQlub25udWxsID0gbnVsbGFibGUgPSBOVUxMOworCQkJbm9ubnVsbCA9IE5VTEw7CiAJ CX0KIAl9CiAKQEAgLTE1MzUsMzEgKzE1MTEsMjAgQEAgcm93X21lcmdlX3JlYWRfY2x1c3RlcmVk X2luZGV4KAogCQkvKiBCdWlsZCBhIHJvdyBiYXNlZCBvbiB0aGUgY2x1c3RlcmVkIGluZGV4LiAq LwogCiAJCXJvdyA9IHJvd19idWlsZChST1dfQ09QWV9QT0lOVEVSUywgY2x1c3RfaW5kZXgsCi0J CQkJcmVjLCBvZmZzZXRzLCBuZXdfdGFibGUsICZleHQsIHJvd19oZWFwKTsKKwkJCQlyZWMsIG9m ZnNldHMsIG5ld190YWJsZSwKKwkJCQljb2xfbWFwLCAmZXh0LCByb3dfaGVhcCk7CiAJCXV0X2Fk KHJvdyk7CiAKIAkJZm9yICh1bGludCBpID0gMDsgaSA8IG5fbm9ubnVsbDsgaSsrKSB7Ci0JCQlk ZmllbGRfdCoJZmllbGQKLQkJCQk9ICZyb3ctPmZpZWxkc1tub25udWxsW2ldXTsKLQkJCWR0eXBl X3QqCWZpZWxkX3R5cGUKLQkJCQk9IGRmaWVsZF9nZXRfdHlwZShmaWVsZCk7CisJCQljb25zdCBk ZmllbGRfdCoJZmllbGQJPSAmcm93LT5maWVsZHNbbm9ubnVsbFtpXV07CiAKLQkJCXV0X2FkKCEo ZmllbGRfdHlwZS0+cHJ0eXBlICYgREFUQV9OT1RfTlVMTCkpOworCQkJdXRfYWQoZGZpZWxkX2dl dF90eXBlKGZpZWxkKS0+cHJ0eXBlICYgREFUQV9OT1RfTlVMTCk7CiAKIAkJCWlmIChkZmllbGRf aXNfbnVsbChmaWVsZCkpIHsKIAkJCQllcnIgPSBEQl9JTlZBTElEX05VTEw7CiAJCQkJdHJ4LT5l cnJvcl9rZXlfbnVtID0gMDsKIAkJCQlnb3RvIGZ1bmNfZXhpdDsKIAkJCX0KLQotCQkJZmllbGRf dHlwZS0+cHJ0eXBlIHw9IERBVEFfTk9UX05VTEw7Ci0JCX0KLQotCQlmb3IgKHVsaW50IGkgPSAw OyBpIDwgbl9udWxsYWJsZTsgaSsrKSB7Ci0JCQlkdHlwZV90KglmaWVsZF90eXBlCi0JCQkJPSBk ZmllbGRfZ2V0X3R5cGUoJnJvdy0+ZmllbGRzW251bGxhYmxlW2ldXSk7Ci0JCQl1dF9hZCgoZmll bGRfdHlwZS0+cHJ0eXBlICYgREFUQV9OT1RfTlVMTCkpOwotCQkJZmllbGRfdHlwZS0+cHJ0eXBl ICY9IH5EQVRBX05PVF9OVUxMOwogCQl9CiAKIAkJLyogR2V0IHRoZSBuZXh0IERvYyBJRCAqLwpA QCAtMzIzMSw5ICszMTk2LDEyIEBAIHJvd19tZXJnZV9idWlsZF9pbmRleGVzKAogCWRpY3RfaW5k ZXhfdCoqCWluZGV4ZXMsCS8qITwgaW46IGluZGV4ZXMgdG8gYmUgY3JlYXRlZCAqLwogCWNvbnN0 IHVsaW50KglrZXlfbnVtYmVycywJLyohPCBpbjogTXlTUUwga2V5IG51bWJlcnMgKi8KIAl1bGlu dAkJbl9pbmRleGVzLAkvKiE8IGluOiBzaXplIG9mIGluZGV4ZXNbXSAqLwotCXN0cnVjdCBUQUJM RSoJdGFibGUpCQkvKiE8IGluL291dDogTXlTUUwgdGFibGUsIGZvcgorCXN0cnVjdCBUQUJMRSoJ dGFibGUsCQkvKiE8IGluL291dDogTXlTUUwgdGFibGUsIGZvcgogCQkJCQlyZXBvcnRpbmcgZXJy b25lb3VzIGtleSB2YWx1ZQogCQkJCQlpZiBhcHBsaWNhYmxlICovCisJY29uc3QgdWxpbnQqCWNv bF9tYXApCS8qITwgaW46IG1hcHBpbmcgb2Ygb2xkIGNvbHVtbgorCQkJCQludW1iZXJzIHRvIG5l dyBvbmVzLCBvciBOVUxMCisJCQkJCWlmIG9sZF90YWJsZSA9PSBuZXdfdGFibGUgKi8KIHsKIAlt ZXJnZV9maWxlX3QqCQltZXJnZV9maWxlczsKIAlyb3dfbWVyZ2VfYmxvY2tfdCoJYmxvY2s7CkBA IC0zMjQ3LDYgKzMyMTUsOCBAQCByb3dfbWVyZ2VfYnVpbGRfaW5kZXhlcygKIAlmdHNfcHNvcnRf dCoJCW1lcmdlX2luZm8gPSBOVUxMOwogCWliX2ludDY0X3QJCXNpZ19jb3VudCA9IDA7CiAKKwl1 dF9hZChvbGRfdGFibGUgPT0gbmV3X3RhYmxlIHx8IGNvbF9tYXApOworCiAJLyogQWxsb2NhdGUg bWVtb3J5IGZvciBtZXJnZSBmaWxlIGRhdGEgc3RydWN0dXJlIGFuZCBpbml0aWFsaXplCiAJZmll bGRzICovCiAKQEAgLTMyOTQsNyArMzI2NCw3IEBAIHJvd19tZXJnZV9idWlsZF9pbmRleGVzKAog CWVycm9yID0gcm93X21lcmdlX3JlYWRfY2x1c3RlcmVkX2luZGV4KAogCQl0cngsIHRhYmxlLCBv bGRfdGFibGUsIG5ld190YWJsZSwgb25saW5lLCBpbmRleGVzLAogCQlmdHNfc29ydF9pZHgsIHBz b3J0X2luZm8sIG1lcmdlX2ZpbGVzLCBrZXlfbnVtYmVycywKLQkJbl9pbmRleGVzLCBibG9jayk7 CisJCW5faW5kZXhlcywgY29sX21hcCwgYmxvY2spOwogCiAJaWYgKGVycm9yICE9IERCX1NVQ0NF U1MpIHsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzByb3cu Y2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzByb3cuY2MJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMjA2MDQxMDUzNDMtbjk1dWc0cXFnbjc4N25lYQorKysgYi9zdG9y YWdlL2lubm9iYXNlL3Jvdy9yb3cwcm93LmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTIwNjA0MjE0NzQ0LTI5dHBha3A3NWsyZ3Aya3AKQEAgLTIxNyw2ICsyMTcsOCBAQCByb3df YnVpbGQoCiAJCQkJCW9mIGFuIGluZGV4LCBvciBOVUxMIGlmCiAJCQkJCWluZGV4LT50YWJsZSBz aG91bGQgYmUKIAkJCQkJY29uc3VsdGVkIGluc3RlYWQgKi8KKwljb25zdCB1bGludCoJCWNvbF9t YXAsLyohPCBpbjogbWFwcGluZyBvZiBvbGQgY29sdW1uCisJCQkJCW51bWJlcnMgdG8gbmV3IG9u ZXMsIG9yIE5VTEwgKi8KIAlyb3dfZXh0X3QqKgkJZXh0LAkvKiE8IG91dCwgb3duOiBjYWNoZSBv ZgogCQkJCQlleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW4KIAkJCQkJcHJlZml4ZXMsIG9yIE5VTEwg Ki8KQEAgLTIyNSwxNCArMjI3LDEwIEBAIHJvd19idWlsZCgKIHsKIAljb25zdCBieXRlKgkJY29w eTsKIAlkdHVwbGVfdCoJCXJvdzsKLQljb25zdCBkaWN0X3RhYmxlX3QqCXRhYmxlOwotCXVsaW50 CQkJbl9maWVsZHM7CiAJdWxpbnQJCQluX2V4dF9jb2xzOwogCXVsaW50KgkJCWV4dF9jb2xzCT0g TlVMTDsgLyogcmVtb3ZlIHdhcm5pbmcgKi8KIAl1bGludAkJCWxlbjsKLQl1bGludAkJCXJvd19s ZW47CiAJYnl0ZSoJCQlidWY7Ci0JdWxpbnQJCQlpOwogCXVsaW50CQkJajsKIAltZW1faGVhcF90 KgkJdG1wX2hlYXAJPSBOVUxMOwogCXVsaW50CQkJb2Zmc2V0c19bUkVDX09GRlNfTk9STUFMX1NJ WkVdOwpAQCAtMjQxLDYgKzIzOSw3IEBAIHJvd19idWlsZCgKIAl1dF9hZChpbmRleCAmJiByZWMg JiYgaGVhcCk7CiAJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOwogCXV0X2FkKCFt dXRleF9vd24oJnRyeF9zeXMtPm11dGV4KSk7CisJdXRfYWQoIWNvbF9tYXAgfHwgY29sX3RhYmxl KTsKIAogCWlmICghb2Zmc2V0cykgewogCQlvZmZzZXRzID0gcmVjX2dldF9vZmZzZXRzKHJlYywg aW5kZXgsIG9mZnNldHNfLApAQCAtMjcyLDE3ICsyNzEsNiBAQCByb3dfYnVpbGQoCiAJCWNvcHkg PSByZWM7CiAJfQogCi0JdGFibGUgPSBpbmRleC0+dGFibGU7Ci0Jcm93X2xlbiA9IGRpY3RfdGFi bGVfZ2V0X25fY29scyh0YWJsZSk7Ci0KLQlyb3cgPSBkdHVwbGVfY3JlYXRlKGhlYXAsIHJvd19s ZW4pOwotCi0JZGljdF90YWJsZV9jb3B5X3R5cGVzKHJvdywgdGFibGUpOwotCi0JZHR1cGxlX3Nl dF9pbmZvX2JpdHMocm93LCByZWNfZ2V0X2luZm9fYml0cygKLQkJCQkgICAgIHJlYywgZGljdF90 YWJsZV9pc19jb21wKHRhYmxlKSkpOwotCi0Jbl9maWVsZHMgPSByZWNfb2Zmc19uX2ZpZWxkcyhv ZmZzZXRzKTsKIAluX2V4dF9jb2xzID0gcmVjX29mZnNfbl9leHRlcm4ob2Zmc2V0cyk7CiAJaWYg KG5fZXh0X2NvbHMpIHsKIAkJZXh0X2NvbHMgPSBzdGF0aWNfY2FzdDx1bGludCo+KApAQCAtMjky LDMzICsyODAsNjIgQEAgcm93X2J1aWxkKAogCS8qIEF2b2lkIGEgZGVidWcgYXNzZXJ0aW9uIGlu IHJlY19vZmZzX3ZhbGlkYXRlKCkuICovCiAJcmVjX29mZnNfbWFrZV92YWxpZChjb3B5LCBpbmRl eCwgY29uc3RfY2FzdDx1bGludCo+KG9mZnNldHMpKTsKIAotCWZvciAoaSA9IGogPSAwOyBpIDwg bl9maWVsZHM7IGkrKykgewotCQlkaWN0X2ZpZWxkX3QqCQlpbmRfZmllbGQKKwlpZiAoIWNvbF90 YWJsZSkgeworCQl1dF9hZCghY29sX21hcCk7CisJCWNvbF90YWJsZSA9IGluZGV4LT50YWJsZTsK Kwl9CisKKwkvL3JvdyA9IGR0dXBsZV9jb3B5KGhlYXAsIGRlZmF1bHRfcm93KTsvLyB0b2RvOiBB RERfQ09MVU1OCisJcm93ID0gZHR1cGxlX2NyZWF0ZShoZWFwLCBkaWN0X3RhYmxlX2dldF9uX2Nv bHMoY29sX3RhYmxlKSk7CisKKwlkaWN0X3RhYmxlX2NvcHlfdHlwZXMocm93LCBjb2xfdGFibGUp OworCWR0dXBsZV9zZXRfaW5mb19iaXRzKHJvdywgcmVjX2dldF9pbmZvX2JpdHMoCisJCQkJICAg ICBjb3B5LCByZWNfb2Zmc19jb21wKG9mZnNldHMpKSk7CisKKwlqID0gMDsKKworCWZvciAodWxp bnQgaSA9IDA7IGkgPCByZWNfb2Zmc19uX2ZpZWxkcyhvZmZzZXRzKTsgaSsrKSB7CisJCWNvbnN0 IGRpY3RfZmllbGRfdCoJaW5kX2ZpZWxkCiAJCQk9IGRpY3RfaW5kZXhfZ2V0X250aF9maWVsZChp bmRleCwgaSk7CisKKwkJaWYgKGluZF9maWVsZC0+cHJlZml4X2xlbikgeworCQkJLyogQ29sdW1u IHByZWZpeGVzIGNhbiBvbmx5IG9jY3VyIGluIGtleQorCQkJZmllbGRzLCB3aGljaCBjYW5ub3Qg YmUgc3RvcmVkIGV4dGVybmFsbHkuIEZvcgorCQkJYSBjb2x1bW4gcHJlZml4LCB0aGVyZSBzaG91 bGQgYWxzbyBiZSB0aGUgZnVsbAorCQkJZmllbGQgaW4gdGhlIGNsdXN0ZXJlZCBpbmRleCB0dXBs ZS4gVGhlIHJvdworCQkJdHVwbGUgY29tcHJpc2VzIGZ1bGwgZmllbGRzLCBub3QgcHJlZml4ZXMu ICovCisJCQl1dF9hZCghcmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSk7CisJCQljb250 aW51ZTsKKwkJfQorCiAJCWNvbnN0IGRpY3RfY29sX3QqCWNvbAogCQkJPSBkaWN0X2ZpZWxkX2dl dF9jb2woaW5kX2ZpZWxkKTsKIAkJdWxpbnQJCQljb2xfbm8KIAkJCT0gZGljdF9jb2xfZ2V0X25v KGNvbCk7Ci0JCWRmaWVsZF90KgkJZGZpZWxkCi0JCQk9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKHJv dywgY29sX25vKTsKLQotCQlpZiAoaW5kX2ZpZWxkLT5wcmVmaXhfbGVuID09IDApIHsKIAotCQkJ Y29uc3QgYnl0ZSoJZmllbGQgPSByZWNfZ2V0X250aF9maWVsZCgKLQkJCQljb3B5LCBvZmZzZXRz LCBpLCAmbGVuKTsKKwkJaWYgKGNvbF9tYXApIHsKKwkJCWNvbF9ubyA9IGNvbF9tYXBbY29sX25v XTsKIAotCQkJZGZpZWxkX3NldF9kYXRhKGRmaWVsZCwgZmllbGQsIGxlbik7CisJCQlpZiAoY29s X25vID09IFVMSU5UX1VOREVGSU5FRCkgeworCQkJCS8qIGRyb3BwZWQgY29sdW1uICovCisJCQkJ Y29udGludWU7CisJCQl9CisJCX0gZWxzZSBpZiAoY29sX25vID49IGRpY3RfdGFibGVfZ2V0X25f Y29scyhjb2xfdGFibGUpKSB7CisJCQkvKiBkcm9wcGVkIGxhc3QgY29sdW1ucyAqLworCQkJY29u dGludWU7CiAJCX0KIAorCQlkZmllbGRfdCoJZGZpZWxkID0gZHR1cGxlX2dldF9udGhfZmllbGQo cm93LCBjb2xfbm8pOworCisJCWNvbnN0IGJ5dGUqCWZpZWxkID0gcmVjX2dldF9udGhfZmllbGQo CisJCQljb3B5LCBvZmZzZXRzLCBpLCAmbGVuKTsKKworCQlkZmllbGRfc2V0X2RhdGEoZGZpZWxk LCBmaWVsZCwgbGVuKTsKKwogCQlpZiAocmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkg ewogCQkJZGZpZWxkX3NldF9leHQoZGZpZWxkKTsKIAotCQkJaWYgKFVOSVZfTElLRUxZX05VTEwo Y29sX3RhYmxlKSkgewotCQkJCXV0X2EoY29sX25vCi0JCQkJICAgICA8IGRpY3RfdGFibGVfZ2V0 X25fY29scyhjb2xfdGFibGUpKTsKLQkJCQljb2wgPSBkaWN0X3RhYmxlX2dldF9udGhfY29sKAot CQkJCQljb2xfdGFibGUsIGNvbF9ubyk7Ci0JCQl9CisJCQljb2wgPSBkaWN0X3RhYmxlX2dldF9u dGhfY29sKGNvbF90YWJsZSwgY29sX25vKTsKIAogCQkJaWYgKGNvbC0+b3JkX3BhcnQpIHsKIAkJ CQkvKiBXZSB3aWxsIGhhdmUgdG8gZmV0Y2ggcHJlZml4ZXMgb2YKCj09PSBtb2RpZmllZCBmaWxl ICdzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdW5kby5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MHVuZG8uY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA2MDQx MDUzNDMtbjk1dWc0cXFnbjc4N25lYQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdW5k by5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDYwNDIxNDc0NC0yOXRwYWtw NzVrMmdwMmtwCkBAIC0yMTYsNyArMjE2LDggQEAgcm93X3VuZG9fc2VhcmNoX2NsdXN0X3RvX3Bj dXIoCiAJCX0KIAogCQlub2RlLT5yb3cgPSByb3dfYnVpbGQoUk9XX0NPUFlfREFUQSwgY2x1c3Rf aW5kZXgsIHJlYywKLQkJCQkgICAgICBvZmZzZXRzLCBOVUxMLCBleHQsIG5vZGUtPmhlYXApOwor CQkJCSAgICAgIG9mZnNldHMsIE5VTEwsCisJCQkJICAgICAgTlVMTCwgZXh0LCBub2RlLT5oZWFw KTsKIAkJaWYgKG5vZGUtPnVwZGF0ZSkgewogCQkJbm9kZS0+dW5kb19yb3cgPSBkdHVwbGVfY29w eShub2RlLT5yb3csIG5vZGUtPmhlYXApOwogCQkJcm93X3VwZF9yZXBsYWNlKG5vZGUtPnVuZG9f cm93LCAmbm9kZS0+dW5kb19leHQsCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vYmFz ZS9yb3cvcm93MHVwZC5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHVwZC5jYwly ZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDYwNDEwNTM0My1uOTV1ZzRxcWduNzg3 bmVhCisrKyBiL3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzB1cGQuY2MJcmV2aWQ6bWFya28ubWFr ZWxhQG9yYWNsZS5jb20tMjAxMjA2MDQyMTQ3NDQtMjl0cGFrcDc1azJncDJrcApAQCAtMTU4NCw3 ICsxNTg0LDcgQEAgcm93X3VwZF9zdG9yZV9yb3coCiAJfQogCiAJbm9kZS0+cm93ID0gcm93X2J1 aWxkKFJPV19DT1BZX0RBVEEsIGNsdXN0X2luZGV4LCByZWMsIG9mZnNldHMsCi0JCQkgICAgICBO VUxMLCBleHQsIG5vZGUtPmhlYXApOworCQkJICAgICAgTlVMTCwgTlVMTCwgZXh0LCBub2RlLT5o ZWFwKTsKIAlpZiAobm9kZS0+aXNfZGVsZXRlKSB7CiAJCW5vZGUtPnVwZF9yb3cgPSBOVUxMOwog CQlub2RlLT51cGRfZXh0ID0gTlVMTDsKCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9i YXNlL3Jvdy9yb3cwdmVycy5jYycKLS0tIGEvc3RvcmFnZS9pbm5vYmFzZS9yb3cvcm93MHZlcnMu Y2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA2MDQxMDUzNDMtbjk1dWc0cXFn bjc4N25lYQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwdmVycy5jYwlyZXZpZDptYXJr by5tYWtlbGFAb3JhY2xlLmNvbS0yMDEyMDYwNDIxNDc0NC0yOXRwYWtwNzVrMmdwMmtwCkBAIC0x NjMsNyArMTYzLDggQEAgcm93X3ZlcnNfaW1wbF94X2xvY2tlZF9sb3coCiAJCWNvbHVtbnMuICov CiAKIAkJcm93ID0gcm93X2J1aWxkKFJPV19DT1BZX1BPSU5URVJTLCBjbHVzdF9pbmRleCwgcHJl dl92ZXJzaW9uLAotCQkJCWNsdXN0X29mZnNldHMsIE5VTEwsICZleHQsIGhlYXApOworCQkJCWNs dXN0X29mZnNldHMsCisJCQkJTlVMTCwgTlVMTCwgJmV4dCwgaGVhcCk7CiAKIAkJZW50cnkgPSBy b3dfYnVpbGRfaW5kZXhfZW50cnkocm93LCBleHQsIGluZGV4LCBoZWFwKTsKIApAQCAtMzgzLDcg KzM4NCw4IEBAIHJvd192ZXJzX29sZF9oYXNfaW5kZXhfZW50cnkoCiAJCVRodXMsIGl0IGlzIHNh ZmUgdG8gZmV0Y2ggdGhlIHByZWZpeGVzIGZvcgogCQlleHRlcm5hbGx5IHN0b3JlZCBjb2x1bW5z LiAqLwogCQlyb3cgPSByb3dfYnVpbGQoUk9XX0NPUFlfUE9JTlRFUlMsIGNsdXN0X2luZGV4LAot CQkJCXJlYywgY2x1c3Rfb2Zmc2V0cywgTlVMTCwgJmV4dCwgaGVhcCk7CisJCQkJcmVjLCBjbHVz dF9vZmZzZXRzLAorCQkJCU5VTEwsIE5VTEwsICZleHQsIGhlYXApOwogCQllbnRyeSA9IHJvd19i dWlsZF9pbmRleF9lbnRyeShyb3csIGV4dCwgaW5kZXgsIGhlYXApOwogCiAJCS8qIElmIGVudHJ5 ID09IE5VTEwsIHRoZSByZWNvcmQgY29udGFpbnMgdW5zZXQgQkxPQgpAQCAtNDQ0LDcgKzQ0Niw3 IEBAIHJvd192ZXJzX29sZF9oYXNfaW5kZXhfZW50cnkoCiAJCQlleHRlcm5hbGx5IHN0b3JlZCBj b2x1bW5zLiAqLwogCQkJcm93ID0gcm93X2J1aWxkKFJPV19DT1BZX1BPSU5URVJTLCBjbHVzdF9p bmRleCwKIAkJCQkJcHJldl92ZXJzaW9uLCBjbHVzdF9vZmZzZXRzLAotCQkJCQlOVUxMLCAmZXh0 LCBoZWFwKTsKKwkJCQkJTlVMTCwgTlVMTCwgJmV4dCwgaGVhcCk7CiAJCQllbnRyeSA9IHJvd19i dWlsZF9pbmRleF9lbnRyeShyb3csIGV4dCwgaW5kZXgsIGhlYXApOwogCiAJCQkvKiBJZiBlbnRy eSA9PSBOVUxMLCB0aGUgcmVjb3JkIGNvbnRhaW5zIHVuc2V0CgpObyBidW5kbGUgKHJlYXNvbjog dXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==