From: marko.makela Date: February 8 2011 12:22pm Subject: bzr push into mysql-5.1-innodb branch (marko.makela:3703 to 3704) Bug#55284 List-Archive: http://lists.mysql.com/commits/130714 X-Bug: 55284 Message-Id: <201102081222.p18CMv5Y002004@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1574683703==" --===============1574683703== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline IDM3MDQgTWFya28gTcOka2Vsw6QJMjAxMS0wMi0wOAogICAgICBJbXBsZW1lbnQgVU5JVl9CTE9C X0RFQlVHLiBBbiBlYXJseSB2ZXJzaW9uIG9mIHRoaXMgY2F1Z2h0IEJ1ZyAjNTUyODQuCiAgICAg IAogICAgICBUaGlzIG9wdGlvbiBpcyBrbm93biB0byBiZSBicm9rZW4gd2hlbiB0YWJsZXNwYWNl cyBjb250YWluIG9mZi1wYWdlCiAgICAgIGNvbHVtbnMgYWZ0ZXIgY3Jhc2ggcmVjb3ZlcnkuIEl0 IGhhcyBvbmx5IGJlZW4gdGVzdGVkIHdoZW4gY3JlYXRpbmcKICAgICAgdGhlIGRhdGEgZmlsZXMg ZnJvbSB0aGUgc2NyYXRjaC4KICAgICAgCiAgICAgIGJ0cl9ibG9iX2RiZ190OiBBIG1hcCBmcm9t IHBhZ2Vfbm86aGVhcF9ubzpmaWVsZF9ubyB0byBmaXJzdF9ibG9iX3BhZ2Vfbm8uCiAgICAgIFRo aXMgbWFwIGlzIGluc3RhbnRpYXRlZCBmb3IgZXZlcnkgY2x1c3RlcmVkIGluZGV4IGluIGluZGV4 LT5ibG9icy4KICAgICAgSXQgaXMgcHJvdGVjdGVkIGJ5IGluZGV4LT5ibG9ic19tdXRleC4KICAg ICAgCiAgICAgIGJ0cl9ibG9iX2RiZ19tc2dfaXNzdWUoKTogSXNzdWUgYSBkaWFnbm9zdGljIG1l c3NhZ2UuCiAgICAgIEludm9rZWQgd2hlbiBidHJfYmxvYl9kYmdfbXNnIGlzIHNldC4KICAgICAg CiAgICAgIGJ0cl9ibG9iX2RiZ19yYnRfaW5zZXJ0KCk6IEluc2VydCBhIGJ0cl9ibG9iX2RiZ190 IGludG8gaW5kZXgtPmJsb2JzLgogICAgICAKICAgICAgYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUo KTogUmVtb3ZlIGEgYnRyX2Jsb2JfZGJnX3QgZnJvbSBpbmRleC0+YmxvYnMuCiAgICAgIAogICAg ICBidHJfYmxvYl9kYmdfY21wKCk6IENvbXBhcmF0b3IgZm9yIGJ0cl9ibG9iX2RiZ190LgogICAg ICAKICAgICAgYnRyX2Jsb2JfZGJnX2FkZF9ibG9iKCk6IEFkZCBhIEJMT0IgcmVmZXJlbmNlIHRv IHRoZSBtYXAuCiAgICAgIAogICAgICBidHJfYmxvYl9kYmdfYWRkX3JlYygpOiBBZGQgYWxsIEJM T0IgcmVmZXJlbmNlcyBmcm9tIGEgcmVjb3JkIHRvIHRoZSBtYXAuCiAgICAgIAogICAgICBidHJf YmxvYl9kYmdfcHJpbnQoKTogRGlzcGxheSB0aGUgbWFwIG9mIEJMT0IgcmVmZXJlbmNlcyBpbiBh biBpbmRleC4KICAgICAgCiAgICAgIGJ0cl9ibG9iX2RiZ19yZW1vdmVfcmVjKCk6IFJlbW92ZSBh bGwgQkxPQiByZWZlcmVuY2VzIG9mIGEgcmVjb3JkIGZyb20KICAgICAgdGhlIG1hcC4KICAgICAg CiAgICAgIGJ0cl9ibG9iX2RiZ19pc19lbXB0eSgpOiBDaGVjayB0aGF0IG5vIEJMT0IgcmVmZXJl bmNlcyBleGlzdCB0byBvcgogICAgICBmcm9tIGEgcGFnZS4gRGlzb3duZWQgcmVmZXJlbmNlcyBm cm9tIGRlbGV0ZS1tYXJrZWQgcmVjb3JkcyBhcmUKICAgICAgdG9sZXJhdGVkLgogICAgICAKICAg ICAgYnRyX2Jsb2JfZGJnX29wKCk6IFBlcmZvcm0gYW4gb3BlcmF0aW9uIG9uIGFsbCBCTE9CIHJl ZmVyZW5jZXMgb24gYQogICAgICBCLXRyZWUgcGFnZS4KICAgICAgCiAgICAgIGJ0cl9ibG9iX2Ri Z19hZGQoKTogQWRkIGFsbCBCTE9CIHJlZmVyZW5jZXMgZnJvbSBhIEItdHJlZSBwYWdlIHRvIHRo ZQogICAgICBtYXAuCiAgICAgIAogICAgICBidHJfYmxvYl9kYmdfcmVtb3ZlKCk6IFJlbW92ZSBh bGwgQkxPQiByZWZlcmVuY2VzIGZyb20gYSBCLXRyZWUgcGFnZQogICAgICBmcm9tIHRoZSBtYXAu CiAgICAgIAogICAgICBidHJfYmxvYl9kYmdfcmVzdG9yZSgpOiBSZXN0b3JlIHRoZSBCTE9CIHJl ZmVyZW5jZXMgYWZ0ZXIgYSBmYWlsZWQKICAgICAgcGFnZSByZW9yZ2FuaXplLgogICAgICAKICAg ICAgYnRyX2Jsb2JfZGJnX3NldF9kZWxldGVkX2ZsYWcoKTogTW9kaWZ5IHRoZSAnZGVsZXRlZCcg ZmxhZyBpbiB0aGUgQkxPQgogICAgICByZWZlcmVuY2VzIG9mIGEgcmVjb3JkLgogICAgICAKICAg ICAgYnRyX2Jsb2JfZGJnX293bmVyKCk6IE93biBvciBkaXNvd24gYSBCTE9CIHJlZmVyZW5jZS4K ICAgICAgCiAgICAgIGJ0cl9wYWdlX2NyZWF0ZSgpLCBidHJfcGFnZV9mcmVlX2xvdygpOiBBc3Nl cnQgdGhhdCBubyBCTE9CIHJlZmVyZW5jZXMgZXhpc3QuCiAgICAgIAogICAgICBidHJfY3JlYXRl KCk6IENyZWF0ZSBpbmRleC0+YmxvYnMgZm9yIGNsdXN0ZXJlZCBpbmRleGVzLgogICAgICAKICAg ICAgYnRyX3BhZ2VfcmVvcmdhbml6ZV9sb3coKTogSW52b2tlIGJ0cl9ibG9iX2RiZ19yZW1vdmUo KSBiZWZvcmUgY29weWluZwogICAgICB0aGUgcmVjb3Jkcy4gSW52b2tlIGJ0cl9ibG9iX2RiZ19y ZXN0b3JlKCkgaWYgdGhlIG9wZXJhdGlvbiBmYWlscy4KICAgICAgCiAgICAgIGJ0cl9wYWdlX2Vt cHR5KCksIGJ0cl9saWZ0X3BhZ2VfdXAoKSwgYnRyX2NvbXByZXNzKCksIGJ0cl9kaXNjYXJkX3Bh Z2UoKToKICAgICAgSW52b2tlIGJ0cl9ibG9iX2RiZ19yZW1vdmUoKS4KICAgICAgCiAgICAgIGJ0 cl9jdXJfZGVsX21hcmtfc2V0X2NsdXN0X3JlYygpOiBJbnZva2UgYnRyX2Jsb2JfZGJnX3NldF9k ZWxldGVkX2ZsYWcoKS4KICAgICAgCiAgICAgIE90aGVyIGNhc2VzIG9mIG1vZGlmeWluZyB0aGUg ZGVsZXRlIG1hcmsgYXJlIGVpdGhlciBpbiB0aGUgc2Vjb25kYXJ5CiAgICAgIGluZGV4IG9yIGR1 cmluZyBjcmFzaCByZWNvdmVyeSwgd2hpY2ggd2UgZG8gbm90IHByb21pc2UgdG8gc3VwcG9ydC4K ICAgICAgCiAgICAgIGJ0cl9jdXJfc2V0X293bmVyc2hpcF9vZl9leHRlcm5fZmllbGQoKTogSW52 b2tlIGJ0cl9ibG9iX2RiZ19vd25lcigpLgogICAgICAKICAgICAgYnRyX3N0b3JlX2JpZ19yZWNf ZXh0ZXJuX2ZpZWxkcygpOiBJbnZva2UgYnRyX2Jsb2JfZGJnX2FkZF9ibG9iKCkuCiAgICAgIAog ICAgICBidHJfZnJlZV9leHRlcm5hbGx5X3N0b3JlZF9maWVsZCgpOiBJbnZva2UgYnRyX2Jsb2Jf ZGJnX2Fzc2VydF9lbXB0eSgpCiAgICAgIG9uIHRoZSBmaXJzdCBCTE9CIHBhZ2UuCiAgICAgIAog ICAgICBwYWdlX2N1cl9pbnNlcnRfcmVjX2xvdygpLCBwYWdlX2N1cl9pbnNlcnRfcmVjX3ppcCgp LAogICAgICBwYWdlX2NvcHlfcmVjX2xpc3RfZW5kX3RvX2NyZWF0ZWRfcGFnZSgpOiBJbnZva2Ug YnRyX2Jsb2JfZGJnX2FkZF9yZWMoKS4KICAgICAgCiAgICAgIHBhZ2VfY3VyX2luc2VydF9yZWNf emlwX3Jlb3JnKCksIHBhZ2VfY29weV9yZWNfbGlzdF9lbmQoKSwKICAgICAgcGFnZV9jb3B5X3Jl Y19saXN0X3N0YXJ0KCk6IEFmdGVyIGZhaWx1cmUsIGludm9rZQogICAgICBidHJfYmxvYl9kYmdf cmVtb3ZlKCkgYW5kIGJ0cl9ibG9iX2RiZ19hZGQoKS4KICAgICAgCiAgICAgIHBhZ2VfY3VyX2Rl bGV0ZV9yZWMoKTogSW52b2tlIGJ0cl9ibG9iX2RiZ19yZW1vdmVfcmVjKCkuCiAgICAgIAogICAg ICBwYWdlX2RlbGV0ZV9yZWNfbGlzdF9lbmQoKTogSW52b2tlIGJ0cl9ibG9iX2RiZ19vcChidHJf YmxvYl9kYmdfcmVtb3ZlX3JlYykuCiAgICAgIAogICAgICBwYWdlX3ppcF9yZW9yZ2FuaXplKCk6 IEludm9rZSBidHJfYmxvYl9kYmdfcmVtb3ZlKCkgYmVmb3JlIGNvcHlpbmcgdGhlIHJlY29yZHMu CiAgICAgIAogICAgICBwYWdlX3ppcF9jb3B5X3JlY3MoKTogSW52b2tlIGJ0cl9ibG9iX2RiZ19h ZGQoKS4KICAgICAgCiAgICAgIHJvd191cGRfcmVjX2luX3BsYWNlKCk6IEludm9rZSBidHJfYmxv Yl9kYmdfcmJ0X2RlbGV0ZSgpIGFuZAogICAgICBidHJfYmxvYl9kYmdfcmJ0X2luc2VydCgpLgog ICAgICAKICAgICAgaW5ub2Jhc2Vfc3RhcnRfb3JfY3JlYXRlX2Zvcl9teXNxbCgpOiBXYXJuIHdo ZW4gVU5JVl9CTE9CX0RFQlVHIGlzIGVuYWJsZWQuCiAgICAgIAogICAgICByYjovLzU1MCBhcHBy b3ZlZCBieSBKaW1teSBZYW5nCgogICAgbW9kaWZpZWQ6CiAgICAgIHN0b3JhZ2UvaW5ub2RiX3Bs dWdpbi9idHIvYnRyMGJ0ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idHIvYnRyMGN1 ci5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9kaWN0L2RpY3QwbWVtLmMKICAgICAgc3Rv cmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMGJ0ci5oCiAgICAgIHN0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9pbmNsdWRlL2J0cjB0eXBlcy5oCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9p bmNsdWRlL2RpY3QwbWVtLmgKICAgICAgc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvcGFn ZTB6aXAuaAogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91bml2LmkKICAgICAg c3RvcmFnZS9pbm5vZGJfcGx1Z2luL3BhZ2UvcGFnZTBjdXIuYwogICAgICBzdG9yYWdlL2lubm9k Yl9wbHVnaW4vcGFnZS9wYWdlMHBhZ2UuYwogICAgICBzdG9yYWdlL2lubm9kYl9wbHVnaW4vcGFn ZS9wYWdlMHppcC5jCiAgICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9yb3cvcm93MHVwZC5jCiAg ICAgIHN0b3JhZ2UvaW5ub2RiX3BsdWdpbi9zcnYvc3J2MHN0YXJ0LmMKIDM3MDMgVmFzaWwgRGlt b3YJMjAxMS0wMi0wNwogICAgICBCYWNrcG9ydCB0aGUgZml4IGZvciBCdWcjNTk4NzUgVmFsZ3Jp bmQgd2FybmluZyBpbiBidWYwYnVkZHkuYyBmcm9tIDUuNQogICAgICAKICAgICAgVGhpcyB3YXJu aW5nIGFsc28gaGFwcGVucyBpbiA1LjEgd2l0aCBhIHNsaWdodGx5IGRpZmZlcmVudCBjb2RlcGF0 aC4KCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC92YWxncmluZC5zdXBwCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0cjBidHIuYycKLS0tIGEvc3Rv cmFnZS9pbm5vZGJfcGx1Z2luL2J0ci9idHIwYnRyLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xl LmNvbS0yMDExMDIwNzE0NDUzNy1iN2Z4enpodjh1Y2V2MnFxCisrKyBiL3N0b3JhZ2UvaW5ub2Ri X3BsdWdpbi9idHIvYnRyMGJ0ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEw MjA4MTA1NjIzLXFzOG9sNnd6Y2psbGQzcm0KQEAgLTQyLDYgKzQyLDU2MCBAQCBDcmVhdGVkIDYv Mi8xOTk0IEhlaWtraSBUdXVyaQogI2luY2x1ZGUgImlidWYwaWJ1Zi5oIgogI2luY2x1ZGUgInRy eDB0cnguaCIKIAorI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworIyBpbmNsdWRlICJzcnYwc3J2Lmgi CisjIGluY2x1ZGUgInV0MHJidC5oIgorCisvKiogVFJVRSB3aGVuIG1lc3NhZ2VzIGFib3V0IGlu ZGV4LT5ibG9icyBtb2RpZmljYXRpb24gYXJlIGVuYWJsZWQuICovCitzdGF0aWMgaWJvb2wgYnRy X2Jsb2JfZGJnX21zZzsKKworLyoqIElzc3VlIGEgbWVzc2FnZSBhYm91dCBhbiBvcGVyYXRpb24g b24gaW5kZXgtPmJsb2JzLgorQHBhcmFtIG9wCW9wZXJhdGlvbgorQHBhcmFtIGIJdGhlIGVudHJ5 IGJlaW5nIHN1YmplY3RlZCB0byB0aGUgb3BlcmF0aW9uCitAcGFyYW0gY3R4CXRoZSBjb250ZXh0 IG9mIHRoZSBvcGVyYXRpb24gKi8KKyNkZWZpbmUgYnRyX2Jsb2JfZGJnX21zZ19pc3N1ZShvcCwg YiwgY3R4KQkJCVwKKwlmcHJpbnRmKHN0ZGVyciwgb3AgIiAldToldToldS0+JXUgJXMoJXUsJXUs JXUpXG4iLAlcCisJCShiKS0+cmVmX3BhZ2Vfbm8sIChiKS0+cmVmX2hlYXBfbm8sCQlcCisJCShi KS0+cmVmX2ZpZWxkX25vLCAoYiktPmJsb2JfcGFnZV9ubywgY3R4LAlcCisJCShiKS0+b3duZXIs IChiKS0+YWx3YXlzX293bmVyLCAoYiktPmRlbCkKKworLyoqIEluc2VydCB0byBpbmRleC0+Ymxv YnMgYSByZWZlcmVuY2UgdG8gYW4gb2ZmLXBhZ2UgY29sdW1uLgorQHBhcmFtIGluZGV4CXRoZSBp bmRleCB0cmVlCitAcGFyYW0gYgl0aGUgcmVmZXJlbmNlCitAcGFyYW0gY3R4CWNvbnRleHQgKGZv ciBsb2dnaW5nKSAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19yYnRfaW5zZXJ0 KAorLyo9PT09PT09PT09PT09PT09PT09PSovCisJZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwg aW4vb3V0OiBpbmRleCB0cmVlICovCisJY29uc3QgYnRyX2Jsb2JfZGJnX3QqCWIsCS8qITwgaW46 IHRoZSByZWZlcmVuY2UgKi8KKwljb25zdCBjaGFyKgkJY3R4KQkvKiE8IGluOiBjb250ZXh0IChm b3IgbG9nZ2luZykgKi8KK3sKKwlpZiAoYnRyX2Jsb2JfZGJnX21zZykgeworCQlidHJfYmxvYl9k YmdfbXNnX2lzc3VlKCJpbnNlcnQiLCBiLCBjdHgpOworCX0KKwltdXRleF9lbnRlcigmaW5kZXgt PmJsb2JzX211dGV4KTsKKwlyYnRfaW5zZXJ0KGluZGV4LT5ibG9icywgYiwgYik7CisJbXV0ZXhf ZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKK30KKworLyoqIFJlbW92ZSBmcm9tIGluZGV4LT5i bG9icyBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4uCitAcGFyYW0gaW5kZXgJdGhl IGluZGV4IHRyZWUKK0BwYXJhbSBiCXRoZSByZWZlcmVuY2UKK0BwYXJhbSBjdHgJY29udGV4dCAo Zm9yIGxvZ2dpbmcpICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3JidF9kZWxl dGUoCisvKj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRleCwJLyoh PCBpbi9vdXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYiwJLyohPCBp bjogdGhlIHJlZmVyZW5jZSAqLworCWNvbnN0IGNoYXIqCQljdHgpCS8qITwgaW46IGNvbnRleHQg KGZvciBsb2dnaW5nKSAqLworeworCWlmIChidHJfYmxvYl9kYmdfbXNnKSB7CisJCWJ0cl9ibG9i X2RiZ19tc2dfaXNzdWUoImRlbGV0ZSIsIGIsIGN0eCk7CisJfQorCW11dGV4X2VudGVyKCZpbmRl eC0+YmxvYnNfbXV0ZXgpOworCXV0X2EocmJ0X2RlbGV0ZShpbmRleC0+YmxvYnMsIGIpKTsKKwlt dXRleF9leGl0KCZpbmRleC0+YmxvYnNfbXV0ZXgpOworfQorCisvKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDb21wYXJh dG9yIGZvciBpdGVtcyAoYnRyX2Jsb2JfZGJnX3QpIGluIGluZGV4LT5ibG9icy4KK1RoZSBrZXkg aW4gaW5kZXgtPmJsb2JzIGlzIChyZWZfcGFnZV9ubywgcmVmX2hlYXBfbm8sIHJlZl9maWVsZF9u bykuCitAcmV0dXJuIG5lZ2F0aXZlLCAwIG9yIHBvc2l0aXZlIGlmICphPCpiLCAqYT0qYiwgKmE+ KmIgKi8KK3N0YXRpYworaW50CitidHJfYmxvYl9kYmdfY21wKAorLyo9PT09PT09PT09PT09Ki8K Kwljb25zdCB2b2lkKglhLAkvKiE8IGluOiBmaXJzdCBidHJfYmxvYl9kYmdfdCB0byBjb21wYXJl ICovCisJY29uc3Qgdm9pZCoJYikJLyohPCBpbjogc2Vjb25kIGJ0cl9ibG9iX2RiZ190IHRvIGNv bXBhcmUgKi8KK3sKKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYWEJPSBhOworCWNvbnN0IGJ0cl9i bG9iX2RiZ190KgliYgk9IGI7CisKKwl1dF9hZChhYSAhPSBOVUxMKTsKKwl1dF9hZChiYiAhPSBO VUxMKTsKKworCWlmIChhYS0+cmVmX3BhZ2Vfbm8gIT0gYmItPnJlZl9wYWdlX25vKSB7CisJCXJl dHVybihhYS0+cmVmX3BhZ2Vfbm8gPCBiYi0+cmVmX3BhZ2Vfbm8gPyAtMSA6IDEpOworCX0KKwlp ZiAoYWEtPnJlZl9oZWFwX25vICE9IGJiLT5yZWZfaGVhcF9ubykgeworCQlyZXR1cm4oYWEtPnJl Zl9oZWFwX25vIDwgYmItPnJlZl9oZWFwX25vID8gLTEgOiAxKTsKKwl9CisJaWYgKGFhLT5yZWZf ZmllbGRfbm8gIT0gYmItPnJlZl9maWVsZF9ubykgeworCQlyZXR1cm4oYWEtPnJlZl9maWVsZF9u byA8IGJiLT5yZWZfZmllbGRfbm8gPyAtMSA6IDEpOworCX0KKwlyZXR1cm4oMCk7Cit9CisKKy8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8vKioKK0FkZCBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4gdG8gdGhlIGlu ZGV4LT5ibG9icyBtYXAuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX2FkZF9i bG9iKAorLyo9PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGlu OiBjbHVzdGVyZWQgaW5kZXggcmVjb3JkICovCisJdWxpbnQJCWZpZWxkX25vLAkvKiE8IGluOiBv ZmYtcGFnZSBjb2x1bW4gbnVtYmVyICovCisJdWxpbnQJCXBhZ2Vfbm8sCS8qITwgaW46IHN0YXJ0 IHBhZ2Ugb2YgdGhlIGNvbHVtbiAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluL291 dDogaW5kZXggdHJlZSAqLworCWNvbnN0IGNoYXIqCWN0eCkJCS8qITwgaW46IGNvbnRleHQgKGZv ciBsb2dnaW5nKSAqLworeworCWJ0cl9ibG9iX2RiZ190CWI7CisJY29uc3QgcGFnZV90KglwYWdl CT0gcGFnZV9hbGlnbihyZWMpOworCisJdXRfYShpbmRleC0+YmxvYnMpOworCisJYi5ibG9iX3Bh Z2Vfbm8gPSBwYWdlX25vOworCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2Up OworCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCWIucmVmX2Zp ZWxkX25vID0gZmllbGRfbm87CisJdXRfYShiLnJlZl9maWVsZF9ubyA+PSBpbmRleC0+bl91bmlx KTsKKwliLmFsd2F5c19vd25lciA9IGIub3duZXIgPSBUUlVFOworCWIuZGVsID0gRkFMU0U7CisJ dXRfYSghcmVjX2dldF9kZWxldGVkX2ZsYWcocmVjLCBwYWdlX2lzX2NvbXAocGFnZSkpKTsKKwli dHJfYmxvYl9kYmdfcmJ0X2luc2VydChpbmRleCwgJmIsIGN0eCk7Cit9CisKKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK K0FkZCB0byBpbmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBm cm9tIGEgcmVjb3JkLgorQHJldHVybiBudW1iZXIgb2YgcmVmZXJlbmNlcyBhZGRlZCAqLworVU5J Vl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfYWRkX3JlYygKKy8qPT09PT09PT09PT09PT09 PT0qLworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5kZXhf dCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8q ITwgaW46IG9mZnNldHMgKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZv ciBsb2dnaW5nKSAqLworeworCXVsaW50CQljb3VudAk9IDA7CisJdWxpbnQJCWk7CisJYnRyX2Js b2JfZGJnX3QJYjsKKwlpYm9vbAkJZGVsOworCisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVj LCBpbmRleCwgb2Zmc2V0cykpOworCisJaWYgKCFyZWNfb2Zmc19hbnlfZXh0ZXJuKG9mZnNldHMp KSB7CisJCXJldHVybigwKTsKKwl9CisKKwliLnJlZl9wYWdlX25vID0gcGFnZV9nZXRfcGFnZV9u byhwYWdlX2FsaWduKHJlYykpOworCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9u byhyZWMpOworCWRlbCA9IChyZWNfZ2V0X2RlbGV0ZWRfZmxhZyhyZWMsIHJlY19vZmZzX2NvbXAo b2Zmc2V0cykpICE9IDApOworCisJZm9yIChpID0gMDsgaSA8IHJlY19vZmZzX25fZmllbGRzKG9m ZnNldHMpOyBpKyspIHsKKwkJaWYgKHJlY19vZmZzX250aF9leHRlcm4ob2Zmc2V0cywgaSkpIHsK KwkJCXVsaW50CQlsZW47CisJCQljb25zdCBieXRlKglmaWVsZF9yZWYgPSByZWNfZ2V0X250aF9m aWVsZCgKKwkJCQlyZWMsIG9mZnNldHMsIGksICZsZW4pOworCisJCQl1dF9hKGxlbiAhPSBVTklW X1NRTF9OVUxMKTsKKwkJCXV0X2EobGVuID49IEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkUpOwor CQkJZmllbGRfcmVmICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwkJCWlm ICghbWVtY21wKGZpZWxkX3JlZiwgZmllbGRfcmVmX3plcm8sCisJCQkJICAgIEJUUl9FWFRFUk5f RklFTERfUkVGX1NJWkUpKSB7CisJCQkJLyogdGhlIGNvbHVtbiBoYXMgbm90IGJlZW4gc3RvcmVk IHlldCAqLworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQliLnJlZl9maWVsZF9ubyA9IGk7CisJ CQliLmJsb2JfcGFnZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoCisJCQkJZmllbGRfcmVmICsgQlRS X0VYVEVSTl9QQUdFX05PKTsKKwkJCXV0X2EoYi5yZWZfZmllbGRfbm8gPj0gaW5kZXgtPm5fdW5p cSk7CisJCQliLmFsd2F5c19vd25lciA9IGIub3duZXIKKwkJCQk9ICEoZmllbGRfcmVmW0JUUl9F WFRFUk5fTEVOXQorCQkJCSAgICAmIEJUUl9FWFRFUk5fT1dORVJfRkxBRyk7CisJCQliLmRlbCA9 IGRlbDsKKworCQkJYnRyX2Jsb2JfZGJnX3JidF9pbnNlcnQoaW5kZXgsICZiLCBjdHgpOworCQkJ Y291bnQrKzsKKwkJfQorCX0KKworCXJldHVybihjb3VudCk7Cit9CisKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0Rp c3BsYXkgdGhlIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucy4KK1RoaXMgZnVuY3Rpb24g aXMgdG8gYmUgY2FsbGVkIGZyb20gYSBkZWJ1Z2dlciwKK2ZvciBleGFtcGxlIHdoZW4gYSBicmVh a3BvaW50IG9uIHV0X2RiZ19hc3NlcnRpb25fZmFpbGVkIGlzIGhpdC4gKi8KK1VOSVZfSU5URVJO Cit2b2lkCitidHJfYmxvYl9kYmdfcHJpbnQoCisvKj09PT09PT09PT09PT09PSovCisJY29uc3Qg ZGljdF9pbmRleF90KglpbmRleCkJLyohPCBpbjogaW5kZXggdHJlZSAqLworeworCWNvbnN0IGli X3JidF9ub2RlX3QqCW5vZGU7CisKKwlpZiAoIWluZGV4LT5ibG9icykgeworCQlyZXR1cm47CisJ fQorCisJLyogV2UgaW50ZW50aW9uYWxseSBkbyBub3QgYWNxdWlyZSBpbmRleC0+YmxvYnNfbXV0 ZXggaGVyZS4KKwlUaGlzIGZ1bmN0aW9uIGlzIHRvIGJlIGNhbGxlZCBmcm9tIGEgZGVidWdnZXIs IGFuZCB0aGUgY2FsbGVyCisJc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleC0+YmxvYnNf bXV0ZXggaXMgaGVsZC4gKi8KKworCWZvciAobm9kZSA9IHJidF9maXJzdChpbmRleC0+YmxvYnMp OworCSAgICAgbm9kZSAhPSBOVUxMOyBub2RlID0gcmJ0X25leHQoaW5kZXgtPmJsb2JzLCBub2Rl KSkgeworCQljb25zdCBidHJfYmxvYl9kYmdfdCoJYgorCQkJPSByYnRfdmFsdWUoYnRyX2Jsb2Jf ZGJnX3QsIG5vZGUpOworCQlmcHJpbnRmKHN0ZGVyciwgIiV1OiV1OiV1LT4ldSVzJXMlc1xuIiwK KwkJCWItPnJlZl9wYWdlX25vLCBiLT5yZWZfaGVhcF9ubywgYi0+cmVmX2ZpZWxkX25vLAorCQkJ Yi0+YmxvYl9wYWdlX25vLAorCQkJYi0+b3duZXIgPyAiIiA6ICIoZGlzb3duZWQpIiwKKwkJCWIt PmFsd2F5c19vd25lciA/ICIiIDogIihoYXMgZGlzb3duZWQpIiwKKwkJCWItPmRlbCA/ICIoZGVs ZXRlZCkiIDogIiIpOworCX0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmVtb3ZlIGZyb20gaW5kZXgtPmJs b2JzIGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMgZnJvbSBhIHJlY29yZC4KK0By ZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50 CitidHJfYmxvYl9kYmdfcmVtb3ZlX3JlYygKKy8qPT09PT09PT09PT09PT09PT09PT0qLworCWNv bnN0IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgs CS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KglvZmZzZXRzLC8qITwgaW46IG9m ZnNldHMgKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5n KSAqLworeworCXVsaW50CQlpOworCXVsaW50CQljb3VudAk9IDA7CisJYnRyX2Jsb2JfZGJnX3QJ YjsKKworCXV0X2FkKHJlY19vZmZzX3ZhbGlkYXRlKHJlYywgaW5kZXgsIG9mZnNldHMpKTsKKwor CWlmICghcmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSkgeworCQlyZXR1cm4oMCk7CisJfQor CisJYi5yZWZfcGFnZV9ubyA9IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGlnbihyZWMpKTsKKwli LnJlZl9oZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8ocmVjKTsKKworCWZvciAoaSA9IDA7 IGkgPCByZWNfb2Zmc19uX2ZpZWxkcyhvZmZzZXRzKTsgaSsrKSB7CisJCWlmIChyZWNfb2Zmc19u dGhfZXh0ZXJuKG9mZnNldHMsIGkpKSB7CisJCQl1bGludAkJbGVuOworCQkJY29uc3QgYnl0ZSoJ ZmllbGRfcmVmID0gcmVjX2dldF9udGhfZmllbGQoCisJCQkJcmVjLCBvZmZzZXRzLCBpLCAmbGVu KTsKKworCQkJdXRfYShsZW4gIT0gVU5JVl9TUUxfTlVMTCk7CisJCQl1dF9hKGxlbiA+PSBCVFJf RVhURVJOX0ZJRUxEX1JFRl9TSVpFKTsKKwkJCWZpZWxkX3JlZiArPSBsZW4gLSBCVFJfRVhURVJO X0ZJRUxEX1JFRl9TSVpFOworCisJCQliLnJlZl9maWVsZF9ubyA9IGk7CisJCQliLmJsb2JfcGFn ZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoCisJCQkJZmllbGRfcmVmICsgQlRSX0VYVEVSTl9QQUdF X05PKTsKKworCQkJc3dpdGNoIChiLmJsb2JfcGFnZV9ubykgeworCQkJY2FzZSAwOgorCQkJCS8q IFRoZSBjb2x1bW4gaGFzIG5vdCBiZWVuIHN0b3JlZCB5ZXQuCisJCQkJVGhlIEJMT0IgcG9pbnRl ciBtdXN0IGJlIGFsbCB6ZXJvLgorCQkJCVRoZXJlIGNhbm5vdCBiZSBhIEJMT0Igc3RhcnRpbmcg YXQKKwkJCQlwYWdlIDAsIGJlY2F1c2UgcGFnZSAwIGlzIHJlc2VydmVkIGZvcgorCQkJCXRoZSB0 YWJsZXNwYWNlIGhlYWRlci4gKi8KKwkJCQl1dF9hKCFtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9y ZWZfemVybywKKwkJCQkJICAgICBCVFJfRVhURVJOX0ZJRUxEX1JFRl9TSVpFKSk7CisJCQkJLyog ZmFsbCB0aHJvdWdoICovCisJCQljYXNlIEZJTF9OVUxMOgorCQkJCS8qIHRoZSBjb2x1bW4gaGFz IGJlZW4gZnJlZWQgYWxyZWFkeSAqLworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlidHJfYmxv Yl9kYmdfcmJ0X2RlbGV0ZShpbmRleCwgJmIsIGN0eCk7CisJCQljb3VudCsrOworCQl9CisJfQor CisJcmV0dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ2hlY2sgdGhhdCB0aGVyZSBhcmUg bm8gcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIGZyb20gb3IgdG8KK3RoZSBnaXZlbiBw YWdlLiBJbnZva2VkIHdoZW4gZnJlZWluZyBvciBjbGVhcmluZyBhIHBhZ2UuCitAcmV0dXJuIFRS VUUgd2hlbiBubyBvcnBoYW4gcmVmZXJlbmNlcyBleGlzdCAqLworVU5JVl9JTlRFUk4KK2lib29s CitidHJfYmxvYl9kYmdfaXNfZW1wdHkoCisvKj09PT09PT09PT09PT09PT09PSovCisJZGljdF9p bmRleF90KglpbmRleCwJCS8qITwgaW46IGluZGV4ICovCisJdWxpbnQJCXBhZ2Vfbm8pCS8qITwg aW46IHBhZ2UgbnVtYmVyICovCit7CisJY29uc3QgaWJfcmJ0X25vZGVfdCoJbm9kZTsKKwlpYm9v bAkJCXN1Y2Nlc3MJPSBUUlVFOworCisJaWYgKCFpbmRleC0+YmxvYnMpIHsKKwkJcmV0dXJuKHN1 Y2Nlc3MpOworCX0KKworCW11dGV4X2VudGVyKCZpbmRleC0+YmxvYnNfbXV0ZXgpOworCisJZm9y IChub2RlID0gcmJ0X2ZpcnN0KGluZGV4LT5ibG9icyk7CisJICAgICBub2RlICE9IE5VTEw7IG5v ZGUgPSByYnRfbmV4dChpbmRleC0+YmxvYnMsIG5vZGUpKSB7CisJCWNvbnN0IGJ0cl9ibG9iX2Ri Z190KgliCisJCQk9IHJidF92YWx1ZShidHJfYmxvYl9kYmdfdCwgbm9kZSk7CisKKwkJaWYgKGIt PnJlZl9wYWdlX25vICE9IHBhZ2Vfbm8gJiYgYi0+YmxvYl9wYWdlX25vICE9IHBhZ2Vfbm8pIHsK KwkJCWNvbnRpbnVlOworCQl9CisKKwkJZnByaW50ZihzdGRlcnIsCisJCQkiSW5ub0RCOiBvcnBo YW4gQkxPQiByZWYlcyVzJXMgJXU6JXU6JXUtPiV1XG4iLAorCQkJYi0+b3duZXIgPyAiIiA6ICIo ZGlzb3duZWQpIiwKKwkJCWItPmFsd2F5c19vd25lciA/ICIiIDogIihoYXMgZGlzb3duZWQpIiwK KwkJCWItPmRlbCA/ICIoZGVsZXRlZCkiIDogIiIsCisJCQliLT5yZWZfcGFnZV9ubywgYi0+cmVm X2hlYXBfbm8sIGItPnJlZl9maWVsZF9ubywKKwkJCWItPmJsb2JfcGFnZV9ubyk7CisKKwkJaWYg KGItPmJsb2JfcGFnZV9ubyAhPSBwYWdlX25vIHx8IGItPm93bmVyIHx8ICFiLT5kZWwpIHsKKwkJ CXN1Y2Nlc3MgPSBGQUxTRTsKKwkJfQorCX0KKworCW11dGV4X2V4aXQoJmluZGV4LT5ibG9ic19t dXRleCk7CisJcmV0dXJuKHN1Y2Nlc3MpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCitDb3VudCBhbmQgcHJv Y2VzcyBhbGwgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIG9uIGEgcGFnZS4KK0ByZXR1 cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcHJvY2Vzc2VkICovCitVTklWX0lOVEVSTgordWxpbnQK K2J0cl9ibG9iX2RiZ19vcCgKKy8qPT09PT09PT09PT09Ki8KKwljb25zdCBwYWdlX3QqCQlwYWdl LAkvKiE8IGluOiBCLXRyZWUgbGVhZiBwYWdlICovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwg aW46IHJlY29yZCB0byBzdGFydCBmcm9tCisJCQkJCShOVUxMIHRvIHByb2Nlc3MgdGhlIHdob2xl IHBhZ2UpICovCisJZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLwor CWNvbnN0IGNoYXIqCQljdHgsCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCWNv bnN0IGJ0cl9ibG9iX2RiZ19vcF9mCW9wKQkvKiE8IGluOiBvcGVyYXRpb24gb24gcmVjb3JkcyAq LworeworCXVsaW50CQljb3VudAk9IDA7CisJbWVtX2hlYXBfdCoJaGVhcAk9IE5VTEw7CisJdWxp bnQJCW9mZnNldHNfW1JFQ19PRkZTX05PUk1BTF9TSVpFXTsKKwl1bGludCoJCW9mZnNldHMJPSBv ZmZzZXRzXzsKKwlyZWNfb2Zmc19pbml0KG9mZnNldHNfKTsKKworCXV0X2EoZmlsX3BhZ2VfZ2V0 X3R5cGUocGFnZSkgPT0gRklMX1BBR0VfSU5ERVgpOworCXV0X2EoIXJlYyB8fCBwYWdlX2FsaWdu KHJlYykgPT0gcGFnZSk7CisKKwlpZiAoIWluZGV4LT5ibG9icyB8fCAhcGFnZV9pc19sZWFmKHBh Z2UpCisJICAgIHx8ICFkaWN0X2luZGV4X2lzX2NsdXN0KGluZGV4KSkgeworCQlyZXR1cm4oMCk7 CisJfQorCisJaWYgKHJlYyA9PSBOVUxMKSB7CisJCXJlYyA9IHBhZ2VfZ2V0X2luZmltdW1fcmVj KHBhZ2UpOworCX0KKworCWRvIHsKKwkJb2Zmc2V0cyA9IHJlY19nZXRfb2Zmc2V0cyhyZWMsIGlu ZGV4LCBvZmZzZXRzLAorCQkJCQkgIFVMSU5UX1VOREVGSU5FRCwgJmhlYXApOworCQljb3VudCAr PSBvcChyZWMsIGluZGV4LCBvZmZzZXRzLCBjdHgpOworCQlyZWMgPSBwYWdlX3JlY19nZXRfbmV4 dF9jb25zdChyZWMpOworCX0gd2hpbGUgKCFwYWdlX3JlY19pc19zdXByZW11bShyZWMpKTsKKwor CWlmIChVTklWX0xJS0VMWV9OVUxMKGhlYXApKSB7CisJCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CisJ fQorCisJcmV0dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ291bnQgYW5kIGFkZCB0byBp bmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworZnJvbSByZWNv cmRzIG9uIGEgcGFnZS4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgYWRkZWQgKi8KK1VO SVZfSU5URVJOCit1bGludAorYnRyX2Jsb2JfZGJnX2FkZCgKKy8qPT09PT09PT09PT09PSovCisJ Y29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiByZXdyaXR0ZW4gcGFnZSAqLworCWRpY3RfaW5k ZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IGNoYXIqCWN0eCkJLyoh PCBpbjogY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCit7CisJYnRyX2Jsb2JfZGJnX2Fzc2VydF9l bXB0eShpbmRleCwgcGFnZV9nZXRfcGFnZV9ubyhwYWdlKSk7CisKKwlyZXR1cm4oYnRyX2Jsb2Jf ZGJnX29wKHBhZ2UsIE5VTEwsIGluZGV4LCBjdHgsIGJ0cl9ibG9iX2RiZ19hZGRfcmVjKSk7Cit9 CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8vKioKK0NvdW50IGFuZCByZW1vdmUgZnJvbSBpbmRleC0+YmxvYnMgYW55IHJl ZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworZnJvbSByZWNvcmRzIG9uIGEgcGFnZS4KK1Vz ZWQgd2hlbiByZW9yZ2FuaXppbmcgYSBwYWdlLCBiZWZvcmUgY29weWluZyB0aGUgcmVjb3Jkcy4K K0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5JVl9JTlRFUk4KK3Vs aW50CitidHJfYmxvYl9kYmdfcmVtb3ZlKAorLyo9PT09PT09PT09PT09PT09Ki8KKwljb25zdCBw YWdlX3QqCXBhZ2UsCS8qITwgaW46IGItdHJlZSBwYWdlICovCisJZGljdF9pbmRleF90KglpbmRl eCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgY2hhcioJY3R4KQkvKiE8IGluOiBjb250 ZXh0IChmb3IgbG9nZ2luZykgKi8KK3sKKwl1bGludAljb3VudDsKKworCWNvdW50ID0gYnRyX2Js b2JfZGJnX29wKHBhZ2UsIE5VTEwsIGluZGV4LCBjdHgsCisJCQkJYnRyX2Jsb2JfZGJnX3JlbW92 ZV9yZWMpOworCisJLyogQ2hlY2sgdGhhdCBubyByZWZlcmVuY2VzIGV4aXN0LiAqLworCWJ0cl9i bG9iX2RiZ19hc3NlcnRfZW1wdHkoaW5kZXgsIHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZSkpOworCisJ cmV0dXJuKGNvdW50KTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmVzdG9yZSBpbiBpbmRleC0+YmxvYnMg YW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworVXNlZCB3aGVuIHBhZ2UgcmVvcmdh bml6ZSBmYWlscyBkdWUgdG8gY29tcHJlc3NlZCBwYWdlIG92ZXJmbG93LiAqLworVU5JVl9JTlRF Uk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19yZXN0b3JlKAorLyo9PT09PT09PT09PT09PT09PSovCisJ Y29uc3QgcGFnZV90KglucGFnZSwJLyohPCBpbjogcGFnZSB0aGF0IGZhaWxlZCB0byBjb21wcmVz cyAgKi8KKwljb25zdCBwYWdlX3QqCXBhZ2UsCS8qITwgaW46IGNvcHkgb2Ygb3JpZ2luYWwgcGFn ZSAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0 IGNoYXIqCWN0eCkJLyohPCBpbjogY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCit7CisJdWxpbnQJ cmVtb3ZlZDsKKwl1bGludAlhZGRlZDsKKworCXV0X2EocGFnZV9nZXRfcGFnZV9ubyhucGFnZSkg PT0gcGFnZV9nZXRfcGFnZV9ubyhwYWdlKSk7CisJdXRfYShwYWdlX2dldF9zcGFjZV9pZChucGFn ZSkgPT0gcGFnZV9nZXRfc3BhY2VfaWQocGFnZSkpOworCisJcmVtb3ZlZCA9IGJ0cl9ibG9iX2Ri Z19yZW1vdmUobnBhZ2UsIGluZGV4LCBjdHgpOworCWFkZGVkID0gYnRyX2Jsb2JfZGJnX2FkZChw YWdlLCBpbmRleCwgY3R4KTsKKwl1dF9hKGFkZGVkID09IHJlbW92ZWQpOworfQorCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov LyoqCitNb2RpZnkgdGhlICdkZWxldGVkJyBmbGFnIG9mIGEgcmVjb3JkLiAqLworVU5JVl9JTlRF Uk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKAorLyo9PT09PT09PT09PT09 PT09PT09PT09PT09PSovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46IHJlY29yZCAqLwor CWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCB1bGlu dCoJCW9mZnNldHMsLyohPCBpbjogcmVjX2dldF9vZmZzKHJlYywgaW5kZXgpICovCisJaWJvb2wJ CQlkZWwpCS8qITwgaW46IFRSVUU9ZGVsZXRlZCwgRkFMU0U9ZXhpc3RzICovCit7CisJY29uc3Qg aWJfcmJ0X25vZGVfdCoJbm9kZTsKKwlidHJfYmxvYl9kYmdfdAkJYjsKKwlidHJfYmxvYl9kYmdf dCoJCWM7CisJdWxpbnQJCQlpOworCisJdXRfYWQocmVjX29mZnNfdmFsaWRhdGUocmVjLCBpbmRl eCwgb2Zmc2V0cykpOworCXV0X2EoZGljdF9pbmRleF9pc19jbHVzdChpbmRleCkpOworCXV0X2Eo ZGVsID09ICEhZGVsKTsvKiBtdXN0IGJlIEZBTFNFPT0wIG9yIFRSVUU9PTEgKi8KKworCWlmICgh cmVjX29mZnNfYW55X2V4dGVybihvZmZzZXRzKSB8fCAhaW5kZXgtPmJsb2JzKSB7CisKKwkJcmV0 dXJuOworCX0KKworCWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2VfYWxpZ24o cmVjKSk7CisJYi5yZWZfaGVhcF9ubyA9IHBhZ2VfcmVjX2dldF9oZWFwX25vKHJlYyk7CisKKwlm b3IgKGkgPSAwOyBpIDwgcmVjX29mZnNfbl9maWVsZHMob2Zmc2V0cyk7IGkrKykgeworCQlpZiAo cmVjX29mZnNfbnRoX2V4dGVybihvZmZzZXRzLCBpKSkgeworCQkJdWxpbnQJCWxlbjsKKwkJCWNv bnN0IGJ5dGUqCWZpZWxkX3JlZiA9IHJlY19nZXRfbnRoX2ZpZWxkKAorCQkJCXJlYywgb2Zmc2V0 cywgaSwgJmxlbik7CisKKwkJCXV0X2EobGVuICE9IFVOSVZfU1FMX05VTEwpOworCQkJdXRfYShs ZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJCQlmaWVsZF9yZWYgKz0gbGVuIC0g QlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRTsKKworCQkJYi5yZWZfZmllbGRfbm8gPSBpOworCQkJ Yi5ibG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80KAorCQkJCWZpZWxkX3JlZiArIEJUUl9F WFRFUk5fUEFHRV9OTyk7CisKKwkJCXN3aXRjaCAoYi5ibG9iX3BhZ2Vfbm8pIHsKKwkJCWNhc2Ug MDoKKwkJCQl1dF9hKG1lbWNtcChmaWVsZF9yZWYsIGZpZWxkX3JlZl96ZXJvLAorCQkJCQkgICAg QlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkpOworCQkJCS8qIHBhZ2UgbnVtYmVyIDAgaXMgZm9y IHRoZQorCQkJCXBhZ2UgYWxsb2NhdGlvbiBiaXRtYXAgKi8KKwkJCWNhc2UgRklMX05VTEw6CisJ CQkJLyogdGhlIGNvbHVtbiBoYXMgYmVlbiBmcmVlZCBhbHJlYWR5ICovCisJCQkJdXRfZXJyb3I7 CisJCQl9CisKKwkJCW11dGV4X2VudGVyKCZpbmRleC0+YmxvYnNfbXV0ZXgpOworCQkJbm9kZSA9 IHJidF9sb29rdXAoaW5kZXgtPmJsb2JzLCAmYik7CisJCQl1dF9hKG5vZGUpOworCisJCQljID0g cmJ0X3ZhbHVlKGJ0cl9ibG9iX2RiZ190LCBub2RlKTsKKwkJCS8qIFRoZSBmbGFnIHNob3VsZCBi ZSBtb2RpZmllZC4gKi8KKwkJCWMtPmRlbCA9IGRlbDsKKwkJCWlmIChidHJfYmxvYl9kYmdfbXNn KSB7CisJCQkJYiA9ICpjOworCQkJCW11dGV4X2V4aXQoJmluZGV4LT5ibG9ic19tdXRleCk7CisJ CQkJYnRyX2Jsb2JfZGJnX21zZ19pc3N1ZSgiZGVsX21rIiwgJmIsICIiKTsKKwkJCX0gZWxzZSB7 CisJCQkJbXV0ZXhfZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKKwkJCX0KKwkJfQorCX0KK30K KworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLy8qKgorQ2hhbmdlIHRoZSBvd25lcnNoaXAgb2YgYW4gb2ZmLXBhZ2UgY29sdW1u LiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19vd25lcigKKy8qPT09PT09PT09 PT09PT09Ki8KKwljb25zdCByZWNfdCoJCXJlYywJLyohPCBpbjogcmVjb3JkICovCisJZGljdF9p bmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KgkJb2Zm c2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnMocmVjLCBpbmRleCkgKi8KKwl1bGludAkJCWksCS8q ITwgaW46IGl0aCBmaWVsZCBpbiByZWMgKi8KKwlpYm9vbAkJCW93bikJLyohPCBpbjogVFJVRT1v d25lZCwgRkFMU0U9ZGlzb3duZWQgKi8KK3sKKwljb25zdCBpYl9yYnRfbm9kZV90Kglub2RlOwor CWJ0cl9ibG9iX2RiZ190CQliOworCWNvbnN0IGJ5dGUqCQlmaWVsZF9yZWY7CisJdWxpbnQJCQls ZW47CisKKwl1dF9hZChyZWNfb2Zmc192YWxpZGF0ZShyZWMsIGluZGV4LCBvZmZzZXRzKSk7CisJ dXRfYShyZWNfb2Zmc19udGhfZXh0ZXJuKG9mZnNldHMsIGkpKTsKKworCWZpZWxkX3JlZiA9IHJl Y19nZXRfbnRoX2ZpZWxkKHJlYywgb2Zmc2V0cywgaSwgJmxlbik7CisJdXRfYShsZW4gIT0gVU5J Vl9TUUxfTlVMTCk7CisJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSk7CisJ ZmllbGRfcmVmICs9IGxlbiAtIEJUUl9FWFRFUk5fRklFTERfUkVGX1NJWkU7CisKKwliLnJlZl9w YWdlX25vID0gcGFnZV9nZXRfcGFnZV9ubyhwYWdlX2FsaWduKHJlYykpOworCWIucmVmX2hlYXBf bm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCWIucmVmX2ZpZWxkX25vID0gaTsKKwli Lm93bmVyID0gIShmaWVsZF9yZWZbQlRSX0VYVEVSTl9MRU5dICYgQlRSX0VYVEVSTl9PV05FUl9G TEFHKTsKKwliLmJsb2JfcGFnZV9ubyA9IG1hY2hfcmVhZF9mcm9tXzQoZmllbGRfcmVmICsgQlRS X0VYVEVSTl9QQUdFX05PKTsKKworCXV0X2EoYi5vd25lciA9PSBvd24pOworCisJbXV0ZXhfZW50 ZXIoJmluZGV4LT5ibG9ic19tdXRleCk7CisJbm9kZSA9IHJidF9sb29rdXAoaW5kZXgtPmJsb2Jz LCAmYik7CisJLyogcm93X2luc19jbHVzdF9pbmRleF9lbnRyeV9ieV9tb2RpZnkoKSBpbnZva2Vz CisJYnRyX2N1cl91bm1hcmtfZXh0ZXJuX2ZpZWxkcygpIGFsc28gZm9yIHRoZSBuZXdseSBpbnNl cnRlZAorCXJlZmVyZW5jZXMsIHdoaWNoIGFyZSBhbGwgemVybyBieXRlcyB1bnRpbCB0aGUgY29s dW1ucyBhcmUgc3RvcmVkLgorCVRoZSBub2RlIGxvb2t1cCBtdXN0IGZhaWwgaWYgYW5kIG9ubHkg aWYgdGhhdCBpcyB0aGUgY2FzZS4gKi8KKwl1dF9hKCFtZW1jbXAoZmllbGRfcmVmLCBmaWVsZF9y ZWZfemVybywgQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRSkKKwkgICAgID09ICFub2RlKTsKKwor CWlmIChub2RlKSB7CisJCWJ0cl9ibG9iX2RiZ190KgljID0gcmJ0X3ZhbHVlKGJ0cl9ibG9iX2Ri Z190LCBub2RlKTsKKwkJLyogU29tZSBjb2RlIHNldHMgb3duZXJzaGlwIGZyb20gVFJVRSB0byBU UlVFLgorCQlXZSBkbyBub3QgYWxsb3cgY2hhbmdpbmcgb3duZXJzaGlwIGZyb20gRkFMU0UgdG8g RkFMU0UuICovCisJCXV0X2Eob3duIHx8IGMtPm93bmVyKTsKKworCQljLT5vd25lciA9IG93bjsK KwkJaWYgKCFvd24pIHsKKwkJCWMtPmFsd2F5c19vd25lciA9IEZBTFNFOworCQl9CisJfQorCisJ bXV0ZXhfZXhpdCgmaW5kZXgtPmJsb2JzX211dGV4KTsKK30KKyNlbmRpZiAvKiBVTklWX0JMT0Jf REVCVUcgKi8KKwogLyoKIExhdGNoaW5nIHN0cmF0ZWd5IG9mIHRoZSBJbm5vREIgQi10cmVlCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjk2LDYgKzg1MCw3IEBA IGJ0cl9wYWdlX2NyZWF0ZSgKIAlwYWdlX3QqCQlwYWdlID0gYnVmX2Jsb2NrX2dldF9mcmFtZShi bG9jayk7CiAKIAl1dF9hZChtdHJfbWVtb19jb250YWlucyhtdHIsIGJsb2NrLCBNVFJfTUVNT19Q QUdFX1hfRklYKSk7CisJYnRyX2Jsb2JfZGJnX2Fzc2VydF9lbXB0eShpbmRleCwgYnVmX2Jsb2Nr X2dldF9wYWdlX25vKGJsb2NrKSk7CiAKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkp IHsKIAkJcGFnZV9jcmVhdGVfemlwKGJsb2NrLCBpbmRleCwgbGV2ZWwsIG10cik7CkBAIC00ODks NiArMTA0NCw3IEBAIGJ0cl9wYWdlX2ZyZWVfbG93KAogCW1vZGlmeSBjbG9jayAqLwogCiAJYnVm X2Jsb2NrX21vZGlmeV9jbG9ja19pbmMoYmxvY2spOworCWJ0cl9ibG9iX2RiZ19hc3NlcnRfZW1w dHkoaW5kZXgsIGJ1Zl9ibG9ja19nZXRfcGFnZV9ubyhibG9jaykpOwogCiAJaWYgKGRpY3RfaW5k ZXhfaXNfaWJ1ZihpbmRleCkpIHsKIApAQCAtNzczLDYgKzEzMjksMTMgQEAgYnRyX2NyZWF0ZSgK IAkJYmxvY2sgPSBidWZfcGFnZV9nZXQoc3BhY2UsIHppcF9zaXplLCBwYWdlX25vLAogCQkJCSAg ICAgUldfWF9MQVRDSCwgbXRyKTsKIAl9IGVsc2UgeworI2lmZGVmIFVOSVZfQkxPQl9ERUJVRwor CQlpZiAoKHR5cGUgJiBESUNUX0NMVVNURVJFRCkgJiYgIWluZGV4LT5ibG9icykgeworCQkJbXV0 ZXhfY3JlYXRlKCZpbmRleC0+YmxvYnNfbXV0ZXgsIFNZTkNfQU5ZX0xBVENIKTsKKwkJCWluZGV4 LT5ibG9icyA9IHJidF9jcmVhdGUoc2l6ZW9mKGJ0cl9ibG9iX2RiZ190KSwKKwkJCQkJCSAgYnRy X2Jsb2JfZGJnX2NtcCk7CisJCX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KIAkJYmxv Y2sgPSBmc2VnX2NyZWF0ZShzcGFjZSwgMCwKIAkJCQkgICAgUEFHRV9IRUFERVIgKyBQQUdFX0JU Ul9TRUdfVE9QLCBtdHIpOwogCX0KQEAgLTk5Niw2ICsxNTU5LDcgQEAgYnRyX3BhZ2VfcmVvcmdh bml6ZV9sb3coCiAKIAlibG9jay0+Y2hlY2tfaW5kZXhfcGFnZV9hdF9mbHVzaCA9IFRSVUU7CiAj ZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCisJYnRyX2Jsb2JfZGJnX3JlbW92ZShwYWdlLCBp bmRleCwgImJ0cl9wYWdlX3Jlb3JnYW5pemUiKTsKIAogCS8qIFJlY3JlYXRlIHRoZSBwYWdlOiBu b3RlIHRoYXQgZ2xvYmFsIGRhdGEgb24gcGFnZSAocG9zc2libGUKIAlzZWdtZW50IGhlYWRlcnMs IG5leHQgcGFnZS1maWVsZCwgZXRjLikgaXMgcHJlc2VydmVkIGludGFjdCAqLwpAQCAtMTAyNCw2 ICsxNTg4LDggQEAgYnRyX3BhZ2VfcmVvcmdhbml6ZV9sb3coCiAJICAgICghcGFnZV96aXBfY29t cHJlc3MocGFnZV96aXAsIHBhZ2UsIGluZGV4LCBOVUxMKSkpIHsKIAogCQkvKiBSZXN0b3JlIHRo ZSBvbGQgcGFnZSBhbmQgZXhpdC4gKi8KKwkJYnRyX2Jsb2JfZGJnX3Jlc3RvcmUocGFnZSwgdGVt cF9wYWdlLCBpbmRleCwKKwkJCQkgICAgICJidHJfcGFnZV9yZW9yZ2FuaXplX2NvbXByZXNzX2Zh aWwiKTsKIAogI2lmIGRlZmluZWQgVU5JVl9ERUJVRyB8fCBkZWZpbmVkIFVOSVZfWklQX0RFQlVH CiAJCS8qIENoZWNrIHRoYXQgdGhlIGJ5dGVzIHRoYXQgd2Ugc2tpcCBhcmUgaWRlbnRpY2FsLiAq LwpAQCAtMTE1Nyw2ICsxNzIzLDcgQEAgYnRyX3BhZ2VfZW1wdHkoCiAjZW5kaWYgLyogVU5JVl9a SVBfREVCVUcgKi8KIAogCWJ0cl9zZWFyY2hfZHJvcF9wYWdlX2hhc2hfaW5kZXgoYmxvY2spOwor CWJ0cl9ibG9iX2RiZ19yZW1vdmUocGFnZSwgaW5kZXgsICJidHJfcGFnZV9lbXB0eSIpOwogCiAJ LyogUmVjcmVhdGUgdGhlIHBhZ2U6IG5vdGUgdGhhdCBnbG9iYWwgZGF0YSBvbiBwYWdlIChwb3Nz aWJsZQogCXNlZ21lbnQgaGVhZGVycywgbmV4dCBwYWdlLWZpZWxkLCBldGMuKSBpcyBwcmVzZXJ2 ZWQgaW50YWN0ICovCkBAIC0yNDk3LDYgKzMwNjQsNyBAQCBidHJfbGlmdF9wYWdlX3VwKAogCQkJ CQkJICAgICAgIGluZGV4KTsKIAl9CiAKKwlidHJfYmxvYl9kYmdfcmVtb3ZlKHBhZ2UsIGluZGV4 LCAiYnRyX2xpZnRfcGFnZV91cCIpOwogCWxvY2tfdXBkYXRlX2NvcHlfYW5kX2Rpc2NhcmQoZmF0 aGVyX2Jsb2NrLCBibG9jayk7CiAKIAkvKiBHbyB1cHdhcmQgdG8gcm9vdCBwYWdlLCBkZWNyZW1l bnRpbmcgbGV2ZWxzIGJ5IG9uZS4gKi8KQEAgLTI3NTgsNiArMzMyNiw3IEBAIGVycl9leGl0Ogog CQlsb2NrX3VwZGF0ZV9tZXJnZV9yaWdodChtZXJnZV9ibG9jaywgb3JpZ19zdWNjLCBibG9jayk7 CiAJfQogCisJYnRyX2Jsb2JfZGJnX3JlbW92ZShwYWdlLCBpbmRleCwgImJ0cl9jb21wcmVzcyIp OwogCW1lbV9oZWFwX2ZyZWUoaGVhcCk7CiAKIAlpZiAoIWRpY3RfaW5kZXhfaXNfY2x1c3QoaW5k ZXgpICYmIHBhZ2VfaXNfbGVhZihtZXJnZV9wYWdlKSkgewpAQCAtMjk4OCw2ICszNTU3LDggQEAg YnRyX2Rpc2NhcmRfcGFnZSgKIAkJCQkgICAgYmxvY2spOwogCX0KIAorCWJ0cl9ibG9iX2RiZ19y ZW1vdmUocGFnZSwgaW5kZXgsICJidHJfZGlzY2FyZF9wYWdlIik7CisKIAkvKiBGcmVlIHRoZSBm aWxlIHBhZ2UgKi8KIAlidHJfcGFnZV9mcmVlKGluZGV4LCBibG9jaywgbXRyKTsKIAoKPT09IG1v ZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9idHIvYnRyMGN1ci5jJwotLS0gYS9z dG9yYWdlL2lubm9kYl9wbHVnaW4vYnRyL2J0cjBjdXIuYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwMjA3MTQ0NTM3LWI3Znh6emh2OHVjZXYycXEKKysrIGIvc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL2J0ci9idHIwY3VyLmMJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAx MTAyMDgxMDU2MjMtcXM4b2w2d3pjamxsZDNybQpAQCAtMjU3Miw2ICsyNTcyLDcgQEAgYnRyX2N1 cl9kZWxfbWFya19zZXRfY2x1c3RfcmVjKAogCiAJcGFnZV96aXAgPSBidWZfYmxvY2tfZ2V0X3Bh Z2VfemlwKGJsb2NrKTsKIAorCWJ0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKHJlYywgaW5k ZXgsIG9mZnNldHMsIHZhbCk7CiAJYnRyX3JlY19zZXRfZGVsZXRlZF9mbGFnKHJlYywgcGFnZV96 aXAsIHZhbCk7CiAKIAl0cnggPSB0aHJfZ2V0X3RyeCh0aHIpOwpAQCAtMzU5NSw2ICszNTk2LDgg QEAgYnRyX2N1cl9zZXRfb3duZXJzaGlwX29mX2V4dGVybl9maWVsZCgKIAl9IGVsc2UgewogCQlt YWNoX3dyaXRlX3RvXzEoZGF0YSArIGxvY2FsX2xlbiArIEJUUl9FWFRFUk5fTEVOLCBieXRlX3Zh bCk7CiAJfQorCisJYnRyX2Jsb2JfZGJnX293bmVyKHJlYywgaW5kZXgsIG9mZnNldHMsIGksIHZh bCk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLy8qKgpAQCAtNDA5NCw2ICs0MDk3LDExIEBAIGJ0cl9zdG9y ZV9iaWdfcmVjX2V4dGVybl9maWVsZHNfZnVuYygKIAkJCQl9CiAKIAkJCQlpZiAocHJldl9wYWdl X25vID09IEZJTF9OVUxMKSB7CisJCQkJCWJ0cl9ibG9iX2RiZ19hZGRfYmxvYigKKwkJCQkJCXJl YywgYmlnX3JlY192ZWMtPmZpZWxkc1tpXQorCQkJCQkJLmZpZWxkX25vLCBwYWdlX25vLCBpbmRl eCwKKwkJCQkJCSJzdG9yZSIpOworCiAJCQkJCW1hY2hfd3JpdGVfdG9fNChmaWVsZF9yZWYKIAkJ CQkJCQkrIEJUUl9FWFRFUk5fU1BBQ0VfSUQsCiAJCQkJCQkJc3BhY2VfaWQpOwpAQCAtNDE2OSw2 ICs0MTc3LDExIEBAIG5leHRfemlwX3BhZ2U6CiAJCQkJCQkgTUxPR180QllURVMsICZtdHIpOwog CiAJCQkJaWYgKHByZXZfcGFnZV9ubyA9PSBGSUxfTlVMTCkgeworCQkJCQlidHJfYmxvYl9kYmdf YWRkX2Jsb2IoCisJCQkJCQlyZWMsIGJpZ19yZWNfdmVjLT5maWVsZHNbaV0KKwkJCQkJCS5maWVs ZF9ubywgcGFnZV9ubywgaW5kZXgsCisJCQkJCQkic3RvcmUiKTsKKwogCQkJCQltbG9nX3dyaXRl X3VsaW50KGZpZWxkX3JlZgogCQkJCQkJCSArIEJUUl9FWFRFUk5fU1BBQ0VfSUQsCiAJCQkJCQkJ IHNwYWNlX2lkLApAQCAtNDMzNyw2ICs0MzUwLDM3IEBAIGJ0cl9mcmVlX2V4dGVybmFsbHlfc3Rv cmVkX2ZpZWxkKAogCQlyZWNfemlwX3NpemUgPSAwOwogCX0KIAorI2lmZGVmIFVOSVZfQkxPQl9E RUJVRworCWlmICghKGZpZWxkX3JlZltCVFJfRVhURVJOX0xFTl0gJiBCVFJfRVhURVJOX09XTkVS X0ZMQUcpCisJICAgICYmICEoKGZpZWxkX3JlZltCVFJfRVhURVJOX0xFTl0gJiBCVFJfRVhURVJO X0lOSEVSSVRFRF9GTEFHKQorCQkgJiYgKHJiX2N0eCA9PSBSQl9OT1JNQUwgfHwgcmJfY3R4ID09 IFJCX1JFQ09WRVJZKSkpIHsKKwkJLyogVGhpcyBvZmYtcGFnZSBjb2x1bW4gd2lsbCBiZSBmcmVl ZC4KKwkJQ2hlY2sgdGhhdCBubyByZWZlcmVuY2VzIHJlbWFpbi4gKi8KKworCQlidHJfYmxvYl9k YmdfdAliOworCisJCWIuYmxvYl9wYWdlX25vID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJCWZpZWxk X3JlZiArIEJUUl9FWFRFUk5fUEFHRV9OTyk7CisKKwkJaWYgKHJlYykgeworCQkJLyogUmVtb3Zl IHRoZSByZWZlcmVuY2UgZnJvbSB0aGUgcmVjb3JkIHRvIHRoZQorCQkJQkxPQi4gSWYgdGhlIEJM T0Igd2VyZSBub3QgZnJlZWQsIHRoZQorCQkJcmVmZXJlbmNlIHdvdWxkIGJlIHJlbW92ZWQgd2hl biB0aGUgcmVjb3JkIGlzCisJCQlyZW1vdmVkLiBGcmVlaW5nIHRoZSBCTE9CIHdpbGwgb3Zlcndy aXRlIHRoZQorCQkJQlRSX0VYVEVSTl9QQUdFX05PIGluIHRoZSBmaWVsZF9yZWYgb2YgdGhlCisJ CQlyZWNvcmQgd2l0aCBGSUxfTlVMTCwgd2hpY2ggd291bGQgbWFrZSB0aGUKKwkJCWJ0cl9ibG9i X2RiZyBpbmZvcm1hdGlvbiBpbmNvbnNpc3RlbnQgd2l0aCB0aGUKKwkJCXJlY29yZC4gKi8KKwkJ CWIucmVmX3BhZ2Vfbm8gPSBwYWdlX2dldF9wYWdlX25vKHBhZ2VfYWxpZ24ocmVjKSk7CisJCQli LnJlZl9oZWFwX25vID0gcGFnZV9yZWNfZ2V0X2hlYXBfbm8ocmVjKTsKKwkJCWIucmVmX2ZpZWxk X25vID0gaTsKKwkJCWJ0cl9ibG9iX2RiZ19yYnRfZGVsZXRlKGluZGV4LCAmYiwgImZyZWUiKTsK KwkJfQorCisJCWJ0cl9ibG9iX2RiZ19hc3NlcnRfZW1wdHkoaW5kZXgsIGIuYmxvYl9wYWdlX25v KTsKKwl9CisjZW5kaWYgLyogVU5JVl9CTE9CX0RFQlVHICovCisKIAlmb3IgKDs7KSB7CiAjaWZk ZWYgVU5JVl9TWU5DX0RFQlVHCiAJCWJ1Zl9ibG9ja190KglyZWNfYmxvY2s7Cgo9PT0gbW9kaWZp ZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2RpY3QvZGljdDBtZW0uYycKLS0tIGEvc3Rv cmFnZS9pbm5vZGJfcGx1Z2luL2RpY3QvZGljdDBtZW0uYwlyZXZpZDp2YXNpbC5kaW1vdkBvcmFj bGUuY29tLTIwMTEwMjA3MTQ0NTM3LWI3Znh6emh2OHVjZXYycXEKKysrIGIvc3RvcmFnZS9pbm5v ZGJfcGx1Z2luL2RpY3QvZGljdDBtZW0uYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0y MDExMDIwODEwNTYyMy1xczhvbDZ3emNqbGxkM3JtCkBAIC0zNiw2ICszNiw5IEBAIENyZWF0ZWQg MS84LzE5OTYgSGVpa2tpIFR1dXJpCiAjaWZuZGVmIFVOSVZfSE9UQkFDS1VQCiAjIGluY2x1ZGUg ImxvY2swbG9jay5oIgogI2VuZGlmIC8qICFVTklWX0hPVEJBQ0tVUCAqLworI2lmZGVmIFVOSVZf QkxPQl9ERUJVRworIyBpbmNsdWRlICJ1dDByYnQuaCIKKyNlbmRpZiAvKiBVTklWX0JMT0JfREVC VUcgKi8KIAogI2RlZmluZQlESUNUX0hFQVBfU0laRQkJMTAwCS8qITwgaW5pdGlhbCBtZW1vcnkg aGVhcCBzaXplIHdoZW4KIAkJCQkJY3JlYXRpbmcgYSB0YWJsZSBvciBpbmRleCBvYmplY3QgKi8K QEAgLTMxNiw2ICszMTksMTIgQEAgZGljdF9tZW1faW5kZXhfZnJlZSgKIHsKIAl1dF9hZChpbmRl eCk7CiAJdXRfYWQoaW5kZXgtPm1hZ2ljX24gPT0gRElDVF9JTkRFWF9NQUdJQ19OKTsKKyNpZmRl ZiBVTklWX0JMT0JfREVCVUcKKwlpZiAoaW5kZXgtPmJsb2JzKSB7CisJCW11dGV4X2ZyZWUoJmlu ZGV4LT5ibG9ic19tdXRleCk7CisJCXJidF9mcmVlKGluZGV4LT5ibG9icyk7CisJfQorI2VuZGlm IC8qIFVOSVZfQkxPQl9ERUJVRyAqLwogCiAJbWVtX2hlYXBfZnJlZShpbmRleC0+aGVhcCk7CiB9 Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRyMGJ0 ci5oJwotLS0gYS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idHIwYnRyLmgJcmV2aWQ6 dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwNzE0NDUzNy1iN2Z4enpodjh1Y2V2MnFxCisr KyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjBidHIuaAlyZXZpZDptYXJrby5t YWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEwNTYyMy1xczhvbDZ3emNqbGxkM3JtCkBAIC04MSw2 ICs4MSw5MSBAQCBVTklRVUUgZGVmaW5pdGlvbiBvbiBzZWNvbmRhcnkgaW5kZXhlcyB3CiB0aGUg aW5zZXJ0IGJ1ZmZlciB0byBzcGVlZCB1cCBpbnNlcnRzICovCiAjZGVmaW5lIEJUUl9JR05PUkVf U0VDX1VOSVFVRQkyMDQ4CiAKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKyMgaW5jbHVkZSAidXQw cmJ0LmgiCisvKiogQW4gaW5kZXgtPmJsb2JzIGVudHJ5IGZvciBrZWVwaW5nIHRyYWNrIG9mIG9m Zi1wYWdlIGNvbHVtbiByZWZlcmVuY2VzICovCitzdHJ1Y3QgYnRyX2Jsb2JfZGJnX3N0cnVjdAor eworCXVuc2lnbmVkCWJsb2JfcGFnZV9ubzozMjsJLyohPCBmaXJzdCBCTE9CIHBhZ2UgbnVtYmVy ICovCisJdW5zaWduZWQJcmVmX3BhZ2Vfbm86MzI7CQkvKiE8IHJlZmVycmluZyBwYWdlIG51bWJl ciAqLworCXVuc2lnbmVkCXJlZl9oZWFwX25vOjE2OwkJLyohPCByZWZlcnJpbmcgaGVhcCBudW1i ZXIgKi8KKwl1bnNpZ25lZAlyZWZfZmllbGRfbm86MTA7CS8qITwgcmVmZXJyaW5nIGZpZWxkIG51 bWJlciAqLworCXVuc2lnbmVkCW93bmVyOjE7CQkvKiE8IFRSVUUgaWYgQkxPQiBvd25lciAqLwor CXVuc2lnbmVkCWFsd2F5c19vd25lcjoxOwkJLyohPCBUUlVFIGlmIGFsd2F5cworCQkJCQkJaGFz IGJlZW4gdGhlIEJMT0Igb3duZXI7CisJCQkJCQlyZXNldCB0byBUUlVFIG9uIEItdHJlZQorCQkJ CQkJcGFnZSBzcGxpdHMgYW5kIG1lcmdlcyAqLworCXVuc2lnbmVkCWRlbDoxOwkJCS8qITwgVFJV RSBpZiBjdXJyZW50bHkKKwkJCQkJCWRlbGV0ZS1tYXJrZWQgKi8KK307CisKKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioK K0FkZCBhIHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4gdG8gdGhlIGluZGV4LT5ibG9i cyBtYXAuICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX2FkZF9ibG9iKAorLyo9 PT09PT09PT09PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMsCQkvKiE8IGluOiBjbHVzdGVy ZWQgaW5kZXggcmVjb3JkICovCisJdWxpbnQJCWZpZWxkX25vLAkvKiE8IGluOiBudW1iZXIgb2Yg b2ZmLXBhZ2UgY29sdW1uICovCisJdWxpbnQJCXBhZ2Vfbm8sCS8qITwgaW46IHN0YXJ0IHBhZ2Ug b2YgdGhlIGNvbHVtbiAqLworCWRpY3RfaW5kZXhfdCoJaW5kZXgsCQkvKiE8IGluL291dDogaW5k ZXggdHJlZSAqLworCWNvbnN0IGNoYXIqCWN0eCkJCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dn aW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0Rpc3BsYXkg dGhlIHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucy4KK1RoaXMgZnVuY3Rpb24gaXMgdG8g YmUgY2FsbGVkIGZyb20gYSBkZWJ1Z2dlciwKK2ZvciBleGFtcGxlIHdoZW4gYSBicmVha3BvaW50 IG9uIHV0X2RiZ19hc3NlcnRpb25fZmFpbGVkIGlzIGhpdC4gKi8KK1VOSVZfSU5URVJOCit2b2lk CitidHJfYmxvYl9kYmdfcHJpbnQoCisvKj09PT09PT09PT09PT09PSovCisJY29uc3QgZGljdF9p bmRleF90KglpbmRleCkJLyohPCBpbjogaW5kZXggdHJlZSAqLworCV9fYXR0cmlidXRlX18oKG5v bm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8vKioKK0NoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIHJlZmVyZW5jZXMg dG8gb2ZmLXBhZ2UgY29sdW1ucyBmcm9tIG9yIHRvCit0aGUgZ2l2ZW4gcGFnZS4gSW52b2tlZCB3 aGVuIGZyZWVpbmcgb3IgY2xlYXJpbmcgYSBwYWdlLgorQHJldHVybiBUUlVFIHdoZW4gbm8gb3Jw aGFuIHJlZmVyZW5jZXMgZXhpc3QgKi8KK1VOSVZfSU5URVJOCitpYm9vbAorYnRyX2Jsb2JfZGJn X2lzX2VtcHR5KAorLyo9PT09PT09PT09PT09PT09PT0qLworCWRpY3RfaW5kZXhfdCoJaW5kZXgs CQkvKiE8IGluOiBpbmRleCAqLworCXVsaW50CQlwYWdlX25vKQkvKiE8IGluOiBwYWdlIG51bWJl ciAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwsIHdhcm5fdW51c2VkX3Jlc3VsdCkpOworCisv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovLyoqCitNb2RpZnkgdGhlICdkZWxldGVkJyBmbGFnIG9mIGEgcmVjb3JkLiAqLworVU5J Vl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKAorLyo9PT09PT09 PT09PT09PT09PT09PT09PT09PSovCisJY29uc3QgcmVjX3QqCQlyZWMsCS8qITwgaW46IHJlY29y ZCAqLworCWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25z dCB1bGludCoJCW9mZnNldHMsLyohPCBpbjogcmVjX2dldF9vZmZzKHJlYywgaW5kZXgpICovCisJ aWJvb2wJCQlkZWwpCS8qITwgaW46IFRSVUU9ZGVsZXRlZCwgRkFMU0U9ZXhpc3RzICovCisJX19h dHRyaWJ1dGVfXygobm9ubnVsbCkpOworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ2hhbmdlIHRoZSBvd25lcnNoaXAg b2YgYW4gb2ZmLXBhZ2UgY29sdW1uLiAqLworVU5JVl9JTlRFUk4KK3ZvaWQKK2J0cl9ibG9iX2Ri Z19vd25lcigKKy8qPT09PT09PT09PT09PT09Ki8KKwljb25zdCByZWNfdCoJCXJlYywJLyohPCBp bjogcmVjb3JkICovCisJZGljdF9pbmRleF90KgkJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAq LworCWNvbnN0IHVsaW50KgkJb2Zmc2V0cywvKiE8IGluOiByZWNfZ2V0X29mZnMocmVjLCBpbmRl eCkgKi8KKwl1bGludAkJCWksCS8qITwgaW46IGl0aCBmaWVsZCBpbiByZWMgKi8KKwlpYm9vbAkJ CW93bikJLyohPCBpbjogVFJVRT1vd25lZCwgRkFMU0U9ZGlzb3duZWQgKi8KKwlfX2F0dHJpYnV0 ZV9fKChub25udWxsKSk7CisvKiogQXNzZXJ0IHRoYXQgdGhlcmUgYXJlIG5vIEJMT0IgcmVmZXJl bmNlcyB0byBvciBmcm9tIHRoZSBnaXZlbiBwYWdlLiAqLworIyBkZWZpbmUgYnRyX2Jsb2JfZGJn X2Fzc2VydF9lbXB0eShpbmRleCwgcGFnZV9ubykJXAorCXV0X2EoYnRyX2Jsb2JfZGJnX2lzX2Vt cHR5KGluZGV4LCBwYWdlX25vKSkKKyNlbHNlIC8qIFVOSVZfQkxPQl9ERUJVRyAqLworIyBkZWZp bmUgYnRyX2Jsb2JfZGJnX2FkZF9ibG9iKHJlYywgZmllbGRfbm8sIHBhZ2UsIGluZGV4LCBjdHgp CSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19zZXRfZGVsZXRlZF9mbGFnKHJlYywg aW5kZXgsIG9mZnNldHMsIGRlbCkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfb3du ZXIocmVjLCBpbmRleCwgb2Zmc2V0cywgaSwgdmFsKQkoKHZvaWQpIDApCisjIGRlZmluZSBidHJf YmxvYl9kYmdfYXNzZXJ0X2VtcHR5KGluZGV4LCBwYWdlX25vKQkJKCh2b2lkKSAwKQorI2VuZGlm IC8qIFVOSVZfQkxPQl9ERUJVRyAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqCiBHZXRzIHRoZSByb290IG5vZGUg b2YgYSB0cmVlIGFuZCB4LWxhdGNoZXMgaXQuCiBAcmV0dXJuCXJvb3QgcGFnZSwgeC1sYXRjaGVk ICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvYnRy MHR5cGVzLmgnCi0tLSBhL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL2J0cjB0eXBlcy5o CXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNl djJxcQorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS9idHIwdHlwZXMuaAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEwNTYyMy1xczhvbDZ3emNqbGxkM3Jt CkBAIC0zOCw2ICszOCwxMzEgQEAgdHlwZWRlZiBzdHJ1Y3QgYnRyX2N1cl9zdHJ1Y3QJCWJ0cl9j dXJfdAogLyoqIEItdHJlZSBzZWFyY2ggaW5mb3JtYXRpb24gZm9yIHRoZSBhZGFwdGl2ZSBoYXNo IGluZGV4ICovCiB0eXBlZGVmIHN0cnVjdCBidHJfc2VhcmNoX3N0cnVjdAlidHJfc2VhcmNoX3Q7 CiAKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKyMgaW5jbHVkZSAiYnVmMHR5cGVzLmgiCisvKiog QW4gaW5kZXgtPmJsb2JzIGVudHJ5IGZvciBrZWVwaW5nIHRyYWNrIG9mIG9mZi1wYWdlIGNvbHVt biByZWZlcmVuY2VzICovCit0eXBlZGVmIHN0cnVjdCBidHJfYmxvYl9kYmdfc3RydWN0IGJ0cl9i bG9iX2RiZ190OworCisvKiogSW5zZXJ0IHRvIGluZGV4LT5ibG9icyBhIHJlZmVyZW5jZSB0byBh biBvZmYtcGFnZSBjb2x1bW4uCitAcGFyYW0gaW5kZXgJdGhlIGluZGV4IHRyZWUKK0BwYXJhbSBi CXRoZSByZWZlcmVuY2UKK0BwYXJhbSBjdHgJY29udGV4dCAoZm9yIGxvZ2dpbmcpICovCitVTklW X0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3JidF9pbnNlcnQoCisvKj09PT09PT09PT09PT09 PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4IHRyZWUg Ki8KKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYiwJLyohPCBpbjogdGhlIHJlZmVyZW5jZSAqLwor CWNvbnN0IGNoYXIqCQljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9f YXR0cmlidXRlX18oKG5vbm51bGwpKTsKKworLyoqIFJlbW92ZSBmcm9tIGluZGV4LT5ibG9icyBh IHJlZmVyZW5jZSB0byBhbiBvZmYtcGFnZSBjb2x1bW4uCitAcGFyYW0gaW5kZXgJdGhlIGluZGV4 IHRyZWUKK0BwYXJhbSBiCXRoZSByZWZlcmVuY2UKK0BwYXJhbSBjdHgJY29udGV4dCAoZm9yIGxv Z2dpbmcpICovCitVTklWX0lOVEVSTgordm9pZAorYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUoCisv Kj09PT09PT09PT09PT09PT09PT09Ki8KKwlkaWN0X2luZGV4X3QqCQlpbmRleCwJLyohPCBpbi9v dXQ6IGluZGV4IHRyZWUgKi8KKwljb25zdCBidHJfYmxvYl9kYmdfdCoJYiwJLyohPCBpbjogdGhl IHJlZmVyZW5jZSAqLworCWNvbnN0IGNoYXIqCQljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBs b2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKworLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQWRk IHRvIGluZGV4LT5ibG9icyBhbnkgcmVmZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zIGZyb20g YSByZWNvcmQuCitAcmV0dXJuIG51bWJlciBvZiByZWZlcmVuY2VzIGFkZGVkICovCitVTklWX0lO VEVSTgordWxpbnQKK2J0cl9ibG9iX2RiZ19hZGRfcmVjKAorLyo9PT09PT09PT09PT09PT09PSov CisJY29uc3QgcmVjX3QqCXJlYywJLyohPCBpbjogcmVjb3JkICovCisJZGljdF9pbmRleF90Kglp bmRleCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgdWxpbnQqCW9mZnNldHMsLyohPCBp bjogb2Zmc2V0cyAqLworCWNvbnN0IGNoYXIqCWN0eCkJLyohPCBpbjogY29udGV4dCAoZm9yIGxv Z2dpbmcpICovCisJX19hdHRyaWJ1dGVfXygobm9ubnVsbCkpOworLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorUmVtb3Zl IGZyb20gaW5kZXgtPmJsb2JzIGFueSByZWZlcmVuY2VzIHRvIG9mZi1wYWdlIGNvbHVtbnMgZnJv bSBhIHJlY29yZC4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3ZlZCAqLworVU5J Vl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfcmVtb3ZlX3JlYygKKy8qPT09PT09PT09PT09 PT09PT09PT0qLworCWNvbnN0IHJlY190KglyZWMsCS8qITwgaW46IHJlY29yZCAqLworCWRpY3Rf aW5kZXhfdCoJaW5kZXgsCS8qITwgaW4vb3V0OiBpbmRleCAqLworCWNvbnN0IHVsaW50KglvZmZz ZXRzLC8qITwgaW46IG9mZnNldHMgKi8KKwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRl eHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8v KioKK0NvdW50IGFuZCBhZGQgdG8gaW5kZXgtPmJsb2JzIGFueSByZWZlcmVuY2VzIHRvIG9mZi1w YWdlIGNvbHVtbnMKK2Zyb20gcmVjb3JkcyBvbiBhIHBhZ2UuCitAcmV0dXJuIG51bWJlciBvZiBy ZWZlcmVuY2VzIGFkZGVkICovCitVTklWX0lOVEVSTgordWxpbnQKK2J0cl9ibG9iX2RiZ19hZGQo CisvKj09PT09PT09PT09PT0qLworCWNvbnN0IHBhZ2VfdCoJcGFnZSwJLyohPCBpbjogcmV3cml0 dGVuIHBhZ2UgKi8KKwlkaWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8K Kwljb25zdCBjaGFyKgljdHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9f YXR0cmlidXRlX18oKG5vbm51bGwpKTsKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioKK0NvdW50IGFuZCByZW1vdmUgZnJv bSBpbmRleC0+YmxvYnMgYW55IHJlZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucworZnJvbSBy ZWNvcmRzIG9uIGEgcGFnZS4KK1VzZWQgd2hlbiByZW9yZ2FuaXppbmcgYSBwYWdlLCBiZWZvcmUg Y29weWluZyB0aGUgcmVjb3Jkcy4KK0ByZXR1cm4gbnVtYmVyIG9mIHJlZmVyZW5jZXMgcmVtb3Zl ZCAqLworVU5JVl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9kYmdfcmVtb3ZlKAorLyo9PT09PT09 PT09PT09PT09Ki8KKwljb25zdCBwYWdlX3QqCXBhZ2UsCS8qITwgaW46IGItdHJlZSBwYWdlICov CisJZGljdF9pbmRleF90KglpbmRleCwJLyohPCBpbi9vdXQ6IGluZGV4ICovCisJY29uc3QgY2hh cioJY3R4KQkvKiE8IGluOiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8KKwlfX2F0dHJpYnV0ZV9f KChub25udWxsKSk7CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovLyoqCitSZXN0b3JlIGluIGluZGV4LT5ibG9icyBhbnkgcmVm ZXJlbmNlcyB0byBvZmYtcGFnZSBjb2x1bW5zCitVc2VkIHdoZW4gcGFnZSByZW9yZ2FuaXplIGZh aWxzIGR1ZSB0byBjb21wcmVzc2VkIHBhZ2Ugb3ZlcmZsb3cuICovCitVTklWX0lOVEVSTgordm9p ZAorYnRyX2Jsb2JfZGJnX3Jlc3RvcmUoCisvKj09PT09PT09PT09PT09PT09Ki8KKwljb25zdCBw YWdlX3QqCW5wYWdlLAkvKiE8IGluOiBwYWdlIHRoYXQgZmFpbGVkIHRvIGNvbXByZXNzICovCisJ Y29uc3QgcGFnZV90KglwYWdlLAkvKiE8IGluOiBjb3B5IG9mIG9yaWdpbmFsIHBhZ2UgKi8KKwlk aWN0X2luZGV4X3QqCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCBjaGFyKglj dHgpCS8qITwgaW46IGNvbnRleHQgKGZvciBsb2dnaW5nKSAqLworCV9fYXR0cmlidXRlX18oKG5v bm51bGwpKTsKKworLyoqIE9wZXJhdGlvbiB0aGF0IHByb2Nlc3NlcyB0aGUgQkxPQiByZWZlcmVu Y2VzIG9mIGFuIGluZGV4IHJlY29yZAorQHBhcmFtW2luXQlyZWMJcmVjb3JkIG9uIGluZGV4IHBh Z2UKK0BwYXJhbVtpbi9vdXRdCWluZGV4CXRoZSBpbmRleCB0cmVlIG9mIHRoZSByZWNvcmQKK0Bw YXJhbVtpbl0Jb2Zmc2V0cwlyZWNfZ2V0X29mZnNldHMocmVjLGluZGV4KQorQHBhcmFtW2luXQlj dHgJY29udGV4dCAoZm9yIGxvZ2dpbmcpCitAcmV0dXJuCQkJbnVtYmVyIG9mIEJMT0IgcmVmZXJl bmNlcyBwcm9jZXNzZWQgKi8KK3R5cGVkZWYgdWxpbnQgKCpidHJfYmxvYl9kYmdfb3BfZikKKyhj b25zdCByZWNfdCogcmVjLGRpY3RfaW5kZXhfdCogaW5kZXgsY29uc3QgdWxpbnQqIG9mZnNldHMs Y29uc3QgY2hhciogY3R4KTsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgorQ291bnQgYW5kIHByb2Nlc3MgYWxsIHJl ZmVyZW5jZXMgdG8gb2ZmLXBhZ2UgY29sdW1ucyBvbiBhIHBhZ2UuCitAcmV0dXJuIG51bWJlciBv ZiByZWZlcmVuY2VzIHByb2Nlc3NlZCAqLworVU5JVl9JTlRFUk4KK3VsaW50CitidHJfYmxvYl9k Ymdfb3AoCisvKj09PT09PT09PT09PSovCisJY29uc3QgcGFnZV90KgkJcGFnZSwJLyohPCBpbjog Qi10cmVlIGxlYWYgcGFnZSAqLworCWNvbnN0IHJlY190KgkJcmVjLAkvKiE8IGluOiByZWNvcmQg dG8gc3RhcnQgZnJvbQorCQkJCQkoTlVMTCB0byBwcm9jZXNzIHRoZSB3aG9sZSBwYWdlKSAqLwor CWRpY3RfaW5kZXhfdCoJCWluZGV4LAkvKiE8IGluL291dDogaW5kZXggKi8KKwljb25zdCBjaGFy KgkJY3R4LAkvKiE8IGluOiBjb250ZXh0IChmb3IgbG9nZ2luZykgKi8KKwljb25zdCBidHJfYmxv Yl9kYmdfb3BfZglvcCkJLyohPCBpbjogb3BlcmF0aW9uIG9uIHJlY29yZHMgKi8KKwlfX2F0dHJp YnV0ZV9fKChub25udWxsKDEsMyw0LDUpKSk7CisjZWxzZSAvKiBVTklWX0JMT0JfREVCVUcgKi8K KyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19hZGRfcmVjKHJlYywgaW5kZXgsIG9mZnNldHMsIGN0eCkJ CSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19hZGQocGFnZSwgaW5kZXgsIGN0eCkJ CQkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfcmVtb3ZlX3JlYyhyZWMsIGluZGV4 LCBvZmZzZXRzLCBjdHgpCSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9ibG9iX2RiZ19yZW1vdmUo cGFnZSwgaW5kZXgsIGN0eCkJCQkoKHZvaWQpIDApCisjIGRlZmluZSBidHJfYmxvYl9kYmdfcmVz dG9yZShucGFnZSwgcGFnZSwgaW5kZXgsIGN0eCkJCSgodm9pZCkgMCkKKyMgZGVmaW5lIGJ0cl9i bG9iX2RiZ19vcChwYWdlLCByZWMsIGluZGV4LCBjdHgsIG9wKQkJKCh2b2lkKSAwKQorI2VuZGlm IC8qIFVOSVZfQkxPQl9ERUJVRyAqLworCiAvKiogVGhlIHNpemUgb2YgYSByZWZlcmVuY2UgdG8g ZGF0YSBzdG9yZWQgb24gYSBkaWZmZXJlbnQgcGFnZS4KIFRoZSByZWZlcmVuY2UgaXMgc3RvcmVk IGF0IHRoZSBlbmQgb2YgdGhlIHByZWZpeCBvZiB0aGUgZmllbGQKIGluIHRoZSBpbmRleCByZWNv cmQuICovCgo9PT0gbW9kaWZpZWQgZmlsZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUv ZGljdDBtZW0uaCcKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvZGljdDBtZW0u aAlyZXZpZDp2YXNpbC5kaW1vdkBvcmFjbGUuY29tLTIwMTEwMjA3MTQ0NTM3LWI3Znh6emh2OHVj ZXYycXEKKysrIGIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvZGljdDBtZW0uaAlyZXZp ZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEwNTYyMy1xczhvbDZ3emNqbGxkM3Jt CkBAIC0zNDAsNiArMzQwLDEzIEBAIHN0cnVjdCBkaWN0X2luZGV4X3N0cnVjdHsKIAkJCQlpbmRl eCwgb3IgMCBpZiB0aGUgaW5kZXggZXhpc3RlZAogCQkJCXdoZW4gSW5ub0RCIHdhcyBzdGFydGVk IHVwICovCiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCisjaWZkZWYgVU5JVl9CTE9CX0RF QlVHCisJbXV0ZXhfdAkJYmxvYnNfbXV0ZXg7CisJCQkJLyohPCBtdXRleCBwcm90ZWN0aW5nIGJs b2JzICovCisJdm9pZCoJCWJsb2JzOwkvKiE8IG1hcCBvZiAocGFnZV9ubyxoZWFwX25vLGZpZWxk X25vKQorCQkJCXRvIGZpcnN0X2Jsb2JfcGFnZV9ubzsgcHJvdGVjdGVkIGJ5CisJCQkJYmxvYnNf bXV0ZXg7IEBzZWUgYnRyX2Jsb2JfZGJnX3QgKi8KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcg Ki8KICNpZmRlZiBVTklWX0RFQlVHCiAJdWxpbnQJCW1hZ2ljX247LyohPCBtYWdpYyBudW1iZXIg Ki8KIC8qKiBWYWx1ZSBvZiBkaWN0X2luZGV4X3N0cnVjdDo6bWFnaWNfbiAqLwoKPT09IG1vZGlm aWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3BhZ2UwemlwLmgnCi0tLSBh L3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3BhZ2UwemlwLmgJcmV2aWQ6dmFzaWwuZGlt b3ZAb3JhY2xlLmNvbS0yMDExMDIwNzE0NDUzNy1iN2Z4enpodjh1Y2V2MnFxCisrKyBiL3N0b3Jh Z2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3BhZ2UwemlwLmgJcmV2aWQ6bWFya28ubWFrZWxhQG9y YWNsZS5jb20tMjAxMTAyMDgxMDU2MjMtcXM4b2w2d3pjamxsZDNybQpAQCAtNDIwLDcgKzQyMCw3 IEBAIHBhZ2VfemlwX2NvcHlfcmVjcygKIAljb25zdCBwYWdlX3QqCQlzcmMsCQkvKiE8IGluOiBw YWdlICovCiAJZGljdF9pbmRleF90KgkJaW5kZXgsCQkvKiE8IGluOiBpbmRleCBvZiB0aGUgQi10 cmVlICovCiAJbXRyX3QqCQkJbXRyKQkJLyohPCBpbjogbWluaS10cmFuc2FjdGlvbiAqLwotCV9f YXR0cmlidXRlX18oKG5vbm51bGwoMSwyLDMsNCkpKTsKKwlfX2F0dHJpYnV0ZV9fKChub25udWxs KSk7CiAjZW5kaWYgLyogIVVOSVZfSE9UQkFDS1VQICovCiAKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKgoK PT09IG1vZGlmaWVkIGZpbGUgJ3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9pbmNsdWRlL3VuaXYuaScK LS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL2luY2x1ZGUvdW5pdi5pCXJldmlkOnZhc2lsLmRp bW92QG9yYWNsZS5jb20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNldjJxcQorKysgYi9zdG9y YWdlL2lubm9kYl9wbHVnaW4vaW5jbHVkZS91bml2LmkJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNs ZS5jb20tMjAxMTAyMDgxMDU2MjMtcXM4b2w2d3pjamxsZDNybQpAQCAtMTk0LDYgKzE5NCw4IEBA IHRoaXMgd2lsbCBicmVhayByZWRvIGxvZyBmaWxlIGNvbXBhdGliaWwKIGRlYnVnZ2luZyByZWRv IGxvZyBhcHBsaWNhdGlvbiBwcm9ibGVtcy4gKi8KICNkZWZpbmUgVU5JVl9NRU1fREVCVUcJCQkJ LyogZGV0ZWN0IG1lbW9yeSBsZWFrcyBldGMgKi8KICNkZWZpbmUgVU5JVl9JQlVGX0RFQlVHCQkJ CS8qIGRlYnVnIHRoZSBpbnNlcnQgYnVmZmVyICovCisjZGVmaW5lIFVOSVZfQkxPQl9ERUJVRwkJ CQkvKiB0cmFjayBCTE9CIG93bmVyc2hpcDsKK2Fzc3VtZXMgdGhhdCBubyBCTE9CcyBzdXJ2aXZl IHNlcnZlciByZXN0YXJ0ICovCiAjZGVmaW5lIFVOSVZfSUJVRl9DT1VOVF9ERUJVRwkJCS8qIGRl YnVnIHRoZSBpbnNlcnQgYnVmZmVyOwogdGhpcyBsaW1pdHMgdGhlIGRhdGFiYXNlIHRvIElCVUZf Q09VTlRfTl9TUEFDRVMgYW5kIElCVUZfQ09VTlRfTl9QQUdFUywKIGFuZCB0aGUgaW5zZXJ0IGJ1 ZmZlciBtdXN0IGJlIGVtcHR5IHdoZW4gdGhlIGRhdGFiYXNlIGlzIHN0YXJ0ZWQgKi8KCj09PSBt b2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMGN1ci5jJwotLS0g YS9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMGN1ci5jCXJldmlkOnZhc2lsLmRpbW92 QG9yYWNsZS5jb20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNldjJxcQorKysgYi9zdG9yYWdl L2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMGN1ci5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTEwMjA4MTA1NjIzLXFzOG9sNnd6Y2psbGQzcm0KQEAgLTExNDksNiArMTE0OSw4IEBA IHVzZV9oZWFwOgogCQkJCQkgICAgICBjdXJyZW50X3JlYywgaW5kZXgsIG10cik7CiAJfQogCisJ YnRyX2Jsb2JfZGJnX2FkZF9yZWMoaW5zZXJ0X3JlYywgaW5kZXgsIG9mZnNldHMsICJpbnNlcnQi KTsKKwogCXJldHVybihpbnNlcnRfcmVjKTsKIH0KIApAQCAtMTE5NSwxMCArMTE5NywxMiBAQCBw YWdlX2N1cl9pbnNlcnRfcmVjX3ppcF9yZW9yZygKIAl9CiAKIAkvKiBPdXQgb2Ygc3BhY2U6IHJl c3RvcmUgdGhlIHBhZ2UgKi8KKwlidHJfYmxvYl9kYmdfcmVtb3ZlKHBhZ2UsIGluZGV4LCAiaW5z ZXJ0X3ppcF9mYWlsIik7CiAJaWYgKCFwYWdlX3ppcF9kZWNvbXByZXNzKHBhZ2VfemlwLCBwYWdl LCBGQUxTRSkpIHsKIAkJdXRfZXJyb3I7IC8qIE1lbW9yeSBjb3JydXB0ZWQ/ICovCiAJfQogCXV0 X2FkKHBhZ2VfdmFsaWRhdGUocGFnZSwgaW5kZXgpKTsKKwlidHJfYmxvYl9kYmdfYWRkKHBhZ2Us IGluZGV4LCAiaW5zZXJ0X3ppcF9mYWlsIik7CiAJcmV0dXJuKE5VTEwpOwogfQogCkBAIC0xNDkw LDYgKzE0OTQsOCBAQCB1c2VfaGVhcDoKIAogCXBhZ2VfemlwX3dyaXRlX3JlYyhwYWdlX3ppcCwg aW5zZXJ0X3JlYywgaW5kZXgsIG9mZnNldHMsIDEpOwogCisJYnRyX2Jsb2JfZGJnX2FkZF9yZWMo aW5zZXJ0X3JlYywgaW5kZXgsIG9mZnNldHMsICJpbnNlcnRfemlwX29rIik7CisKIAkvKiA5LiBX cml0ZSBsb2cgcmVjb3JkIG9mIHRoZSBpbnNlcnQgKi8KIAlpZiAoVU5JVl9MSUtFTFkobXRyICE9 IE5VTEwpKSB7CiAJCXBhZ2VfY3VyX2luc2VydF9yZWNfd3JpdGVfbG9nKGluc2VydF9yZWMsIHJl Y19zaXplLApAQCAtMTY5Nyw2ICsxNzAzLDkgQEAgcGFnZV9jb3B5X3JlY19saXN0X2VuZF90b19j cmVhdGVkX3BhZ2UoCiAKIAkJaGVhcF90b3AgKz0gcmVjX3NpemU7CiAKKwkJcmVjX29mZnNfbWFr ZV92YWxpZChpbnNlcnRfcmVjLCBpbmRleCwgb2Zmc2V0cyk7CisJCWJ0cl9ibG9iX2RiZ19hZGRf cmVjKGluc2VydF9yZWMsIGluZGV4LCBvZmZzZXRzLCAiY29weV9lbmQiKTsKKwogCQlwYWdlX2N1 cl9pbnNlcnRfcmVjX3dyaXRlX2xvZyhpbnNlcnRfcmVjLCByZWNfc2l6ZSwgcHJldl9yZWMsCiAJ CQkJCSAgICAgIGluZGV4LCBtdHIpOwogCQlwcmV2X3JlYyA9IGluc2VydF9yZWM7CkBAIC0xOTQ0 LDYgKzE5NTMsNyBAQCBwYWdlX2N1cl9kZWxldGVfcmVjKAogCXBhZ2VfZGlyX3Nsb3Rfc2V0X25f b3duZWQoY3VyX2Rpcl9zbG90LCBwYWdlX3ppcCwgY3VyX25fb3duZWQgLSAxKTsKIAogCS8qIDYu IEZyZWUgdGhlIG1lbW9yeSBvY2N1cGllZCBieSB0aGUgcmVjb3JkICovCisJYnRyX2Jsb2JfZGJn X3JlbW92ZV9yZWMoY3VycmVudF9yZWMsIGluZGV4LCBvZmZzZXRzLCAiZGVsZXRlIik7CiAJcGFn ZV9tZW1fZnJlZShwYWdlLCBwYWdlX3ppcCwgY3VycmVudF9yZWMsIGluZGV4LCBvZmZzZXRzKTsK IAogCS8qIDcuIE5vdyB3ZSBoYXZlIGRlY3JlbWVudGVkIHRoZSBudW1iZXIgb2Ygb3duZWQgcmVj b3JkcyBvZiB0aGUgc2xvdC4KCj09PSBtb2RpZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVn aW4vcGFnZS9wYWdlMHBhZ2UuYycKLS0tIGEvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3BhZ2UvcGFn ZTBwYWdlLmMJcmV2aWQ6dmFzaWwuZGltb3ZAb3JhY2xlLmNvbS0yMDExMDIwNzE0NDUzNy1iN2Z4 enpodjh1Y2V2MnFxCisrKyBiL3N0b3JhZ2UvaW5ub2RiX3BsdWdpbi9wYWdlL3BhZ2UwcGFnZS5j CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTEwMjA4MTA1NjIzLXFzOG9sNnd6Y2ps bGQzcm0KQEAgLTY4NSwxMiArNjg1LDE2IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9lbmQoCiAJCQlp ZiAoVU5JVl9VTkxJS0VMWQogCQkJICAgICghcGFnZV96aXBfcmVvcmdhbml6ZShuZXdfYmxvY2ss IGluZGV4LCBtdHIpKSkgewogCisJCQkJYnRyX2Jsb2JfZGJnX3JlbW92ZShuZXdfcGFnZSwgaW5k ZXgsCisJCQkJCQkgICAgImNvcHlfZW5kX3Jlb3JnX2ZhaWwiKTsKIAkJCQlpZiAoVU5JVl9VTkxJ S0VMWQogCQkJCSAgICAoIXBhZ2VfemlwX2RlY29tcHJlc3MobmV3X3BhZ2VfemlwLAogCQkJCQkJ CSAgbmV3X3BhZ2UsIEZBTFNFKSkpIHsKIAkJCQkJdXRfZXJyb3I7CiAJCQkJfQogCQkJCXV0X2Fk KHBhZ2VfdmFsaWRhdGUobmV3X3BhZ2UsIGluZGV4KSk7CisJCQkJYnRyX2Jsb2JfZGJnX2FkZChu ZXdfcGFnZSwgaW5kZXgsCisJCQkJCQkgImNvcHlfZW5kX3Jlb3JnX2ZhaWwiKTsKIAkJCQlyZXR1 cm4oTlVMTCk7CiAJCQl9IGVsc2UgewogCQkJCS8qIFRoZSBwYWdlIHdhcyByZW9yZ2FuaXplZDoK QEAgLTgwMywxMiArODA3LDE2IEBAIHBhZ2VfY29weV9yZWNfbGlzdF9zdGFydCgKIAkJCWlmIChV TklWX1VOTElLRUxZCiAJCQkgICAgKCFwYWdlX3ppcF9yZW9yZ2FuaXplKG5ld19ibG9jaywgaW5k ZXgsIG10cikpKSB7CiAKKwkJCQlidHJfYmxvYl9kYmdfcmVtb3ZlKG5ld19wYWdlLCBpbmRleCwK KwkJCQkJCSAgICAiY29weV9zdGFydF9yZW9yZ19mYWlsIik7CiAJCQkJaWYgKFVOSVZfVU5MSUtF TFkKIAkJCQkgICAgKCFwYWdlX3ppcF9kZWNvbXByZXNzKG5ld19wYWdlX3ppcCwKIAkJCQkJCQkg IG5ld19wYWdlLCBGQUxTRSkpKSB7CiAJCQkJCXV0X2Vycm9yOwogCQkJCX0KIAkJCQl1dF9hZChw YWdlX3ZhbGlkYXRlKG5ld19wYWdlLCBpbmRleCkpOworCQkJCWJ0cl9ibG9iX2RiZ19hZGQobmV3 X3BhZ2UsIGluZGV4LAorCQkJCQkJICJjb3B5X3N0YXJ0X3Jlb3JnX2ZhaWwiKTsKIAkJCQlyZXR1 cm4oTlVMTCk7CiAJCQl9IGVsc2UgewogCQkJCS8qIFRoZSBwYWdlIHdhcyByZW9yZ2FuaXplZDoK QEAgLTEwODAsNiArMTA4OCw5IEBAIHBhZ2VfZGVsZXRlX3JlY19saXN0X2VuZCgKIAkvKiBSZW1v dmUgdGhlIHJlY29yZCBjaGFpbiBzZWdtZW50IGZyb20gdGhlIHJlY29yZCBjaGFpbiAqLwogCXBh Z2VfcmVjX3NldF9uZXh0KHByZXZfcmVjLCBwYWdlX2dldF9zdXByZW11bV9yZWMocGFnZSkpOwog CisJYnRyX2Jsb2JfZGJnX29wKHBhZ2UsIHJlYywgaW5kZXgsICJkZWxldGVfZW5kIiwKKwkJCWJ0 cl9ibG9iX2RiZ19yZW1vdmVfcmVjKTsKKwogCS8qIENhdGVuYXRlIHRoZSBkZWxldGVkIGNoYWlu IHNlZ21lbnQgdG8gdGhlIHBhZ2UgZnJlZSBsaXN0ICovCiAKIAlwYWdlX3JlY19zZXRfbmV4dChs YXN0X3JlYywgcGFnZV9oZWFkZXJfZ2V0X3B0cihwYWdlLCBQQUdFX0ZSRUUpKTsKCj09PSBtb2Rp ZmllZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMHppcC5jJwotLS0gYS9z dG9yYWdlL2lubm9kYl9wbHVnaW4vcGFnZS9wYWdlMHppcC5jCXJldmlkOnZhc2lsLmRpbW92QG9y YWNsZS5jb20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNldjJxcQorKysgYi9zdG9yYWdlL2lu bm9kYl9wbHVnaW4vcGFnZS9wYWdlMHppcC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29t LTIwMTEwMjA4MTA1NjIzLXFzOG9sNnd6Y2psbGQzcm0KQEAgLTQ0NTEsNiArNDQ1MSw4IEBAIHBh Z2VfemlwX3Jlb3JnYW5pemUoCiAJLyogQ29weSB0aGUgb2xkIHBhZ2UgdG8gdGVtcG9yYXJ5IHNw YWNlICovCiAJYnVmX2ZyYW1lX2NvcHkodGVtcF9wYWdlLCBwYWdlKTsKIAorCWJ0cl9ibG9iX2Ri Z19yZW1vdmUocGFnZSwgaW5kZXgsICJ6aXBfcmVvcmciKTsKKwogCS8qIFJlY3JlYXRlIHRoZSBw YWdlOiBub3RlIHRoYXQgZ2xvYmFsIGRhdGEgb24gcGFnZSAocG9zc2libGUKIAlzZWdtZW50IGhl YWRlcnMsIG5leHQgcGFnZS1maWVsZCwgZXRjLikgaXMgcHJlc2VydmVkIGludGFjdCAqLwogCkBA IC00NTA5LDcgKzQ1MTEsNyBAQCBwYWdlX3ppcF9jb3B5X3JlY3MoCiAJbXRyX3QqCQkJbXRyKQkJ LyohPCBpbjogbWluaS10cmFuc2FjdGlvbiAqLwogewogCXV0X2FkKG10cl9tZW1vX2NvbnRhaW5z X3BhZ2UobXRyLCBwYWdlLCBNVFJfTUVNT19QQUdFX1hfRklYKSk7Ci0JdXRfYWQobXRyX21lbW9f Y29udGFpbnNfcGFnZShtdHIsIChwYWdlX3QqKSBzcmMsIE1UUl9NRU1PX1BBR0VfWF9GSVgpKTsK Kwl1dF9hZChtdHJfbWVtb19jb250YWluc19wYWdlKG10ciwgc3JjLCBNVFJfTUVNT19QQUdFX1hf RklYKSk7CiAJdXRfYWQoIWRpY3RfaW5kZXhfaXNfaWJ1ZihpbmRleCkpOwogI2lmZGVmIFVOSVZf WklQX0RFQlVHCiAJLyogVGhlIEItdHJlZSBvcGVyYXRpb25zIHRoYXQgY2FsbCB0aGlzIGZ1bmN0 aW9uIG1heSBzZXQKQEAgLTQ1NzksNiArNDU4MSw3IEBAIHBhZ2VfemlwX2NvcHlfcmVjcygKICNp ZmRlZiBVTklWX1pJUF9ERUJVRwogCXV0X2EocGFnZV96aXBfdmFsaWRhdGUocGFnZV96aXAsIHBh Z2UpKTsKICNlbmRpZiAvKiBVTklWX1pJUF9ERUJVRyAqLworCWJ0cl9ibG9iX2RiZ19hZGQocGFn ZSwgaW5kZXgsICJwYWdlX3ppcF9jb3B5X3JlY3MiKTsKIAogCXBhZ2VfemlwX2NvbXByZXNzX3dy aXRlX2xvZyhwYWdlX3ppcCwgcGFnZSwgaW5kZXgsIG10cik7CiB9Cgo9PT0gbW9kaWZpZWQgZmls ZSAnc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3Jvdy9yb3cwdXBkLmMnCi0tLSBhL3N0b3JhZ2UvaW5u b2RiX3BsdWdpbi9yb3cvcm93MHVwZC5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNsZS5jb20tMjAx MTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNldjJxcQorKysgYi9zdG9yYWdlL2lubm9kYl9wbHVnaW4v cm93L3JvdzB1cGQuYwlyZXZpZDptYXJrby5tYWtlbGFAb3JhY2xlLmNvbS0yMDExMDIwODEwNTYy My1xczhvbDZ3emNqbGxkM3JtCkBAIC00OTgsMTQgKzQ5OCw0OSBAQCByb3dfdXBkX3JlY19pbl9w bGFjZSgKIAluX2ZpZWxkcyA9IHVwZF9nZXRfbl9maWVsZHModXBkYXRlKTsKIAogCWZvciAoaSA9 IDA7IGkgPCBuX2ZpZWxkczsgaSsrKSB7CisjaWZkZWYgVU5JVl9CTE9CX0RFQlVHCisJCWJ0cl9i bG9iX2RiZ190CWI7CisJCWNvbnN0IGJ5dGUqCWZpZWxkX3JlZgk9IE5VTEw7CisjZW5kaWYgLyog VU5JVl9CTE9CX0RFQlVHICovCisKIAkJdXBkX2ZpZWxkID0gdXBkX2dldF9udGhfZmllbGQodXBk YXRlLCBpKTsKIAkJbmV3X3ZhbCA9ICYodXBkX2ZpZWxkLT5uZXdfdmFsKTsKIAkJdXRfYWQoIWRm aWVsZF9pc19leHQobmV3X3ZhbCkgPT0KIAkJICAgICAgIXJlY19vZmZzX250aF9leHRlcm4ob2Zm c2V0cywgdXBkX2ZpZWxkLT5maWVsZF9ubykpOworI2lmZGVmIFVOSVZfQkxPQl9ERUJVRworCQlp ZiAoZGZpZWxkX2lzX2V4dChuZXdfdmFsKSkgeworCQkJdWxpbnQJbGVuOworCQkJZmllbGRfcmVm ID0gcmVjX2dldF9udGhfZmllbGQocmVjLCBvZmZzZXRzLCBpLCAmbGVuKTsKKwkJCXV0X2EobGVu ICE9IFVOSVZfU1FMX05VTEwpOworCQkJdXRfYShsZW4gPj0gQlRSX0VYVEVSTl9GSUVMRF9SRUZf U0laRSk7CisJCQlmaWVsZF9yZWYgKz0gbGVuIC0gQlRSX0VYVEVSTl9GSUVMRF9SRUZfU0laRTsK KworCQkJYi5yZWZfcGFnZV9ubyA9IHBhZ2VfZ2V0X3BhZ2Vfbm8ocGFnZV9hbGlnbihyZWMpKTsK KwkJCWIucmVmX2hlYXBfbm8gPSBwYWdlX3JlY19nZXRfaGVhcF9ubyhyZWMpOworCQkJYi5yZWZf ZmllbGRfbm8gPSBpOworCQkJYi5ibG9iX3BhZ2Vfbm8gPSBtYWNoX3JlYWRfZnJvbV80KAorCQkJ CWZpZWxkX3JlZiArIEJUUl9FWFRFUk5fUEFHRV9OTyk7CisJCQl1dF9hKGIucmVmX2ZpZWxkX25v ID49IGluZGV4LT5uX3VuaXEpOworCQkJYnRyX2Jsb2JfZGJnX3JidF9kZWxldGUoaW5kZXgsICZi LCAidXBkX2luX3BsYWNlIik7CisJCX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcgKi8KIAog CQlyZWNfc2V0X250aF9maWVsZChyZWMsIG9mZnNldHMsIHVwZF9maWVsZC0+ZmllbGRfbm8sCiAJ CQkJICBkZmllbGRfZ2V0X2RhdGEobmV3X3ZhbCksCiAJCQkJICBkZmllbGRfZ2V0X2xlbihuZXdf dmFsKSk7CisKKyNpZmRlZiBVTklWX0JMT0JfREVCVUcKKwkJaWYgKGRmaWVsZF9pc19leHQobmV3 X3ZhbCkpIHsKKwkJCWIuYmxvYl9wYWdlX25vID0gbWFjaF9yZWFkX2Zyb21fNCgKKwkJCQlmaWVs ZF9yZWYgKyBCVFJfRVhURVJOX1BBR0VfTk8pOworCQkJYi5hbHdheXNfb3duZXIgPSBiLm93bmVy ID0gIShmaWVsZF9yZWZbQlRSX0VYVEVSTl9MRU5dCisJCQkJCQkgICAgICYgQlRSX0VYVEVSTl9P V05FUl9GTEFHKTsKKwkJCWIuZGVsID0gcmVjX2dldF9kZWxldGVkX2ZsYWcoCisJCQkJcmVjLCBy ZWNfb2Zmc19jb21wKG9mZnNldHMpKTsKKworCQkJYnRyX2Jsb2JfZGJnX3JidF9pbnNlcnQoaW5k ZXgsICZiLCAidXBkX2luX3BsYWNlIik7CisJCX0KKyNlbmRpZiAvKiBVTklWX0JMT0JfREVCVUcg Ki8KIAl9CiAKIAlpZiAoVU5JVl9MSUtFTFlfTlVMTChwYWdlX3ppcCkpIHsKCj09PSBtb2RpZmll ZCBmaWxlICdzdG9yYWdlL2lubm9kYl9wbHVnaW4vc3J2L3NydjBzdGFydC5jJwotLS0gYS9zdG9y YWdlL2lubm9kYl9wbHVnaW4vc3J2L3NydjBzdGFydC5jCXJldmlkOnZhc2lsLmRpbW92QG9yYWNs ZS5jb20tMjAxMTAyMDcxNDQ1MzctYjdmeHp6aHY4dWNldjJxcQorKysgYi9zdG9yYWdlL2lubm9k Yl9wbHVnaW4vc3J2L3NydjBzdGFydC5jCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIw MTEwMjA4MTA1NjIzLXFzOG9sNnd6Y2psbGQzcm0KQEAgLTEwNjEsNiArMTA2MSwxMiBAQCBpbm5v YmFzZV9zdGFydF9vcl9jcmVhdGVfZm9yX215c3FsKHZvaWQpCiAJCSk7CiAjZW5kaWYKIAorI2lm ZGVmIFVOSVZfQkxPQl9ERUJVRworCWZwcmludGYoc3RkZXJyLAorCQkiSW5ub0RCOiAhISEhISEh ISBVTklWX0JMT0JfREVCVUcgc3dpdGNoZWQgb24gISEhISEhISEhXG4iCisJCSJJbm5vREI6IFNl cnZlciByZXN0YXJ0IG1heSBmYWlsIHdpdGggVU5JVl9CTE9CX0RFQlVHXG4iKTsKKyNlbmRpZiAv KiBVTklWX0JMT0JfREVCVUcgKi8KKwogI2lmZGVmIFVOSVZfU1lOQ19ERUJVRwogCWZwcmludGYo c3RkZXJyLAogCQkiSW5ub0RCOiAhISEhISEhISBVTklWX1NZTkNfREVCVUcgc3dpdGNoZWQgb24g ISEhISEhISEhXG4iKTsKCg== --===============1574683703== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/marko.makela@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marko.makela@stripped # target_branch: file:///home/marko/innobase/dev/mysql2a/5.1-innodb/ # testament_sha1: c2e18acf671c021cc09623535ae61bcd8794b1bc # timestamp: 2011-02-08 14:22:49 +0200 # base_revision_id: vasil.dimov@stripped\ # b7fxzzhv8ucev2qq # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWVYa8hwAG/B/lHZ/QQB7//// /////r////4EAAgAYCtfeAA3YA5NzvvZffHz2Nvu4qpVDfd7bPbNlTnve89r1u55p3dumPbAF2al oeblvbNGidbTte9qj3kbO2c47i6OO11q7ec093dRQ9m3sSdZFs6Duzvb0uzSaSmbYoa3WaBQDnpj 13BJEI0AEAIGiMUyn6NBqamTEyDEGEaAA0GjIEoEaE0Q01T0JqZRmiB+qBpoAANAAAAAAAqaMppo AAAAAA00AAAAAAAAABJpJJqNDSJmqepsUbRNoIaaaeUMRoaAGgBiNBkAARKIIGjUaZT0KemUHlMm p+IU9GUbQJ7SmjT0T1NGmho0D1PSaBEkQCCaGgk9DKZGjNSaT1G01ME9IaGhpoAAANAxeAQD1SiC sjCEIQgB0HvKUAdkPKgSeaJ89CoBPhEnxxiz4sKCkJvsIllV4F8QaEwwNGUgVkNzzm4CRBjlCxDJ aYRN9FJmimCUFJhC5HEUyoZhShkpHAYDICsGMFgw3VFhxmUEZzcwQomwJSwUo1JZSlBBJFJhhvP5 e/8f7P234N4dA8VejCTqHo+DJNgmkjERgokRDVEM1k0KKCIwYCMUUVxAsRIgwJP7wsKm3v7TBgiC aTg2BExhbLVgq2wpBGKDERiGsJRIgggbJpEBVwlNNBh1HKm+qJGHDhTBBBOnV+FOEcHnZWMFRQ48 mCGSGRkUkRIgoKIRYJBJGItVx7Mhj/j/485D7PUSYp9J3ojRhsiFeym1ql9Z7BzBkKbdtNDauzdS hAg5CibqoqLmjjpRaUUUhGU3YaTLeE5taENFFSHLm+l8U1w7pvjh3fFmKaKmURwmL9egZy0H/GHT E0PObB42Bk0kEMOInNtz7cNuCClODOW5iGCEKCFQk4WgS1J0dOg0ZqTpHgZTToSjlngzTDPl7lm5 S1oNG1JZp5koixeNDWBN4qKLFBSNtZwajOi1DSCwqxGJCsFEU6byZrrtWCxZ1kJ7nt7+57mlvfuH 2+frjEepC0rZWMaUyBWmP9vQ+N84tD5KU5+v3UDudIqTvndTs1rqHsLVWxp6deibdsq/Z2VrobaK SSEjJIyE9Sjrz4Sk0qnz9YE6Urb0ksj7g9+munhUtJ+W9zOskfS5ynaQoXvEJ6Bh5npm3WNFfWEo 4KKLGnbtHBRIQMQDz+1OtvK0b4zx9Qc2/f5ltbqx63rU7QrjlJ1ZySl5uVuVasUVb+tS9ma7/lO2 y3jQ9+/RoIpfJe+5fX2HY9cTABMJbuC8TJMxDvEj0pIPA9fe3g7weDHQ8PH2T+Jlt7fRmUI1C+0m 028PkDw3EooKTSbyAVCM7v+vu9P1uPT19Git37BkDjgVCHiI5YWKnU06aFDZDZG67ud+Qy7aW6no pyyHTtTAPZEdlREfOwwB0bh4DCUMPnIUYGGhnA0qHL7w8YBbGzmJYdAgeqZl7m61tbXLwL8us6qB 12T0tgdDvR5I/cRhILIosFFWKKoLFkinVrj0kOjOIQEgIlAIIAiMUNSDYIhBBFDEEcUAYQEhJMAM ZoyizhCOESWgHMLFVFoCSVVVhVJm1IbEYmhYIvZ4oqWUqqVlkaitZTC3Uoo62WjsXRUIfFaXiHLW ixirPUaKQ91S6zDVWi1wxCqphYUvel44EqnsJK+7UevliuSMWDk0tAmJR3ukmo2CclwRF98ecnBV cEVqIUjrz8Ec/gO1LncYYN9mQ9Eh6yxUtBnhGJXl5J+dPnT867b+EL8a+vXR22D30WyMtCCVISq8 pi1UcUKwMKjIrq33kph9x5PNIUTyz1BHES31OnPCF68p1O9tFFvCNqvthQSNVVQUk9AZlrwMI7Cy 4yRB4yV6CMXrRRbQ4dXEPUvTxxlI2sRMWz1OGkbINjMzNesg5NBRaSNT6SJBjHDkMtIboGMe/LdY wm4g1FomZWcA7ZoNmk4cshu1f9uUKmrfKXIhkG+wQrCBjbq4EwF4YnhPNPuohG5E05GNTlUYfL/O hhSEVCtZYoTXXzmF11LgyFVtfLM/Qoa7cXfEhRwhiZTccn6iY6YUhRcjVGAMqAk+MepjqWQMmSzF SHin9Jythz42UEbZSLv4Y6xJI5EZ8gbRBOAxaEAG0JJHCg7yRRhRRiiqcPEJBz8yPjlG9b6dJp8r 1cQeGb0y8FpzGLrGMEQSQ7pVn0S1SQ41UuXfZRR0bLcbO5CWnIqsKMegXsJ3mR2WvLDhvAg5mTqK 4r+k3DiMqi9qiFbDk2FaARC4SMtWHLNKcGVg7+NpXKSYJ079ynhEYORaC56cn1TTNB98vgtq6qy6 Xs2/Q6FiCU185uPdwKqp7NaiiigKoorLN0FaRuQp5Wmg0Kg3PptrSLi4ygLIGgb1Wgm96gKbu4rA XNtwgPYN9B0CRHJOwMwxmyqYIjQcNwhzYTJYLRMYI5MqyGo1iWRxVlKL3L02KGuCnOavb0tW66CC OW8e6zFaQ5tiCfNiOEuVxOu7udE4pJ2wctGH2a5kWaWTqFLEUyYS2mh4wtxJlINiDVxwgAZf1jlF WorHLkeCCa3QL2Oic4G37UyZDkig61T2aEVpvel4IPZLIqb8E1zTXNzcH6R90eydpUGIFZWQkYqT hyhnk8vte0mXM9q+z2jzw6+KqxTysoWw7q8+p2Y+1tzeXqQr+HGv22+/plKEZ6xLKxNb2VRXX0eN iHm6SwW9J3hNpprtj71U5/iaHin2w/LJLfHUlJCmUgKvujSffAFCToJ8w6BEs6SlkO4MgYcB1zDL mIGoXD8T2N+U7jHvFLa0vdTmnU5C1I5IxO5j9qU+r2FusuTmdh1B5GR4lGFyaGqfeIQjd68NJaio Rrz/ULj6344O7TJK4cZe0a+hW57bX5i0ozxNsTBgaUWqyLjFnIX1beoG7h62izM2h1iMzA4R7x4K Vb81YcZBbTyFI7m2oO474YYqmJ93az2FEkO0C1FsdCrPRuccVMLwhgXb7C9GGJw0hO1oNL58qxzz jtYuNySShoEqaCrdVE9qEMKP4ZCwLoY7+8XUUpkNYB53hYYJHrRZe5uYYkOARImDHgVeE/aA5mLa 8u++j9kRFZQDgshENTFItbTok+eK1YRRQVOfCi087JKOGRLO+7/HRa3O1Tn/iPcucxLd82lTRSrp YtHc/+3rgBRLUBYkwEGxZJKgtr+34eQmUEaDEP2tJ4dwax6s9e5oIR4KRptsW2QbaXlOFY11Z1b5 I4vvDC67dW57YnoZT2LRFbSxjNYTVsOlvKxlEhLLSd5tSrBUDOL3l6dXwutTf2Ntu0TlZIYxSYEw KBD2yE/KkRSBpxVQgQwVOdVPSek+s+ssO+fYXFT+B9l5KgXRaBCwiAOipqo0/Z+b8fuuB5vveRRY e48CHlATWDDHomRIEhDDnWFHPBxjlc5mDhIkMMwMkFWohUV2YVWFYownxsIVsqyXb0Bo5auJX2tC 4V9excfUFC92VWGYZJZHp7YMiDBKFBhUh6RSBdHcDck1BnU7b8TDZmGjCkoX4VN1P6rfEQA7fw+3 C++8bajNIQy8BCPA1JCH7shDqm+jsQeMhJmGNMjY54DAtKVKSQpDzPDjmUTq4tdXhPNvit4r2vN2 BgQzhn2+HyPT2+/eHi8D3ty5q6du3rmXOBZUru9AZoxNCQHHcLHOeJbOM4vWQInwEl4UPhZAz9zb q0iVnNjhljCkK0RSClKPSkIghVPXD3S063t7qjwtKDu9rwIhlRdR0gAPffmhziynzykCIAecIMCA lI+BU/QCvnAcEa5EfYz7EaKnQHkd0k7/bmiFop+mHwjhBZGQKhIL6YfVPm7aE+pklph82lX+e5pB EsVPNRKKdPZvNDlQECyeTHMXQuSTCMQZexSztkkyaE20U9FzQVhdROs6eBgbpoGg75ZsKy80xN50 Fi8FgUMDTEwPEeyxW6STHM6DAzv/IomnsFNMukK9LHapCnehWMge7Qxfnq0vTtaMM6aJ1U1U32/Z a7vq8Oa5yPLAQvZwmFcBWOlh5u6cmXmwkx9zW+hsAg6utPJnQxpqQiCDniWjtKVMsxGzTzNbuslK z0M8dPC1y01GUcRi5Y5W3GhVukqiLAUa2k0PhpyyMT4jkWyJLuBN+l3YnP+wIEUDHmRzZnHwxaRC L78C4nMpOfdDVFFeWUJwKwwWKFBCRaxZQObjQbimraXkTM62JG7EzN2YLCvGUKMWIoXHhk68nMr6 RBDqnUfV0AGwsume65nN+OBS0+DXWx0LiIl6eJ0NSShtjA5YhMj1FTE02tmuAXRX0GtyOQ8LItXJ fUwiCGxmEud7gG52jwqikVVUFUUX4YQDDzfMOQmg0mshQMag8QxI6l3bjMxqda7UtsYW3u97Segl JRXWIauvHlSgiJOGMEPOhoKPfFYI7PcenpPOYLGPGXMC4uNB51U1KkJEr2Fk5FPMXG0TfZEEM8zG F2ctHIsBcVEAg7+jkGpc1JTfY2NB9S5qePMURE+3anRc2VzWw+j6tH10Ts1tb2XgwOciNED0KJ0H YUkZi8m0YVaJc0NiaiLKu/ZpKCmqWGYyMSi5uZcYTQo6cWKpowuuuqcFDeKmAmhh+BXHxyI84L3i JqHf378GxsDDngiCHBipqScjYg3H5mFm8cLVZOSt3couClC5JGqrqimbc1a8GnUswulKFdlbJl09 RJ3FqzdjQXzCrmYh89MhYaM8i3ASW24iXqJqNhhdFIQ/O2Ntsy2u1pfHI1OlZvJCGBkonNvrKO8P kawaqU7pIfV8u+NO4OZudS96inAXTR8st3ERIsSaUNVHp0FYntgjI/GC/JEEKGCJOnGqajwQqYfP LFJQtGSEMWGkfUOQuMy726xJRqvYuVevRo58zTiZiqPRUyl+FlVum5kriyYsVPVceUQQ2grKS29t Y8hguHHCBzvKUyBMgOXYpCLcIph3SuurOS/WTtPHp0JKSqMy407dhkMYF+YdC/sHh2Mmc5NCyL2O Ie1tIoMvClHiIIdmSlUQTBrpOzsUTqxxFbtFbFja+hoyq0LG4xPnYK77KoxzOd+BdNZ5XODSe1xy yjFipzOoxwQw4wx2LHU1+GIieunvyenBruGe2zLStOsTk2icIghWRTc3MRLHdU1vV8k11vdEENSn pW5BccstlxTt3LDzYrDQ1jBF1pzOxzuc47jsQd1xyRzKacCs8hPg14IdNU6yANlApEGoBGDFKxR8 g+JUw0d7VIG97xUwemEYm2O72AOCoY4d8rXE7V7sBcqVmkxF3gGlw1rRQMAup0HRPUdjc+LrsBhM 2tMJtDpHAk61MSY9h7o9DIITdLW0SFs+liRJ4wDzNdxnLo4/VTc1zIWDDMBZnKVE3wa8qGuNA6Yb s87YAZ/Cj9EAd8A5oDtxaNhqp+x52IAxjt8YtfgBfHQpC3yNn24M0aNCUzMg2NlCanhhZNXbHLWM waELEW3LsO1YA+TSQkCBIR7UbVXC5Fv9EQ4iqj3VGgHT8CPhcl4FEEO/EAohuDoUDwXdsiUYq7kA uONPvE+/+JB9TW3AREnvQIwt7CgsFBCJ96agPHeq0OXdKKfgkC2L2lXMq/5KUr/vLZ/f7qYFxloU iyp0N6rcWWYi0Lj1B6oH4ISjJRKUjAhvquvFzarKi6hfVswS77YIvryhl3gA4foE5Cc7i0HVQ99C +pEbwA6kX/FJBJ6tGjILjAzSKNOC1VbNqufs6GgPDGRJN2U0wQyJnxFg6kTsEW4TG31plCzEyW59 MwJaI/10ZT8AlFVyiUUfSUviQIwNtk0ADqA5CLjRxoPDPhLCTrSFeWtCzuIIvgASABAmCZEhNhMQ Tot2Q48t3EQv6ABIA2ABjlLqkX9UHHaDaQCaSUKATjSrgI86TlYOviqsC+st1oBnt0ba5ZK/Gl/z HSGdPX7P5vou9/xw0nykd/QLdoWbu4q8vCq6wAqEuTrgFkaRC6nQ8YgU7qNwFkwdgN9GYXmFtzph n094XhF2Ch4FGoFjQTgFr418yqhcch6MjXI0bS+zv0fkPkpbbLfmKWBCgIaGQkloDlgUu5ltkefM KO5FJoxftCz6PjnaqWLg4k1g7lSQOi0ignbON0ZJWCKhOkpJ4uJDeRJcDBFYIMRV47kwiImv4mAw mS2wWGs6DAFqkBIsEfaovORLiF45OfHNKqqWK0tMqiC0sCoy0qWlEVowstUtopXA0DDSGghCslKu NDCsWr7BmGvA5EixZM0aVjFVNTDlOMA0Hbk6DqFXglnaasxMaAtOMhe5Ci6AWUd5RcwtC434Z8rj uzRctC0uZQ5RGCYHIbIbXALo3GpddtODrMjkzUMAzOgJcs1X4ffILeKPNV22D9OBrVoRH6uwznoL T0HoLVE1BaWlxUvNU2IHvHzH5FAckOfOWZ/KuhCDR7Ervus3m0qIGgvOaxMuKXK7ISKeCW81pdJE ikLQOGebUBacm3eFjibjAzG8jiLyRUWREkRDeAICpTw3iGzgkATObT5xNgF+hckOQIXEbgn0+ljt 1KFyOHuHtZAYWoUU5yp4Z0IYZLhOh5dLIRixRt6M1DmiZl6IsRcDFPxxCB/i7bBLfWBWji2RsDAR 7+F00JqqbgcGN8HjaPBWDRZGbFglEjyLBB6cb0bh+z4OruSlR40vkLgUNzCiPVIQ0baofoS8RETV MMIpYqmElUsYL8h84YHuN3ymB+9+b6DMO7z4npPvECROcDzEi4tKv0q8cYkcuQtDObBAkdAYDx1U C0mfezWJCMDUOXl5NIpZI5gRo7WiFRcUQBOa9+S8KignUdakab0uqolYATm3y06zahlONDK7VV3K B5B7Qw5ISEhMPVNx5GGHvGiqi5LGCUWddY7aNYxNZZ6OirlhWxBjLHYuSOC27azRpbSrUZGGi0Bo XHds1mZba2lGnqPEX0vru9XChx5gZUaAAQ1JYlwDx9hZQWbAgoGGnzJCNZScpweokdB0SKCs52KA 9aQjpInVMtKidUSJoKCRruSEb8ooAMTpM0eokDmvnemlIRWTgZGSQhi0gdQZudKDNgIyFGuF1vAE 7DeEIF3I7vgdDlWa26AStgHiFbQ0JmL4VUS8uBOQKBDoCVKiPqinqUT5MGwRhqY9qAf0RF9kAqGO MqhIEQ9pVHtbpCgzVC6ZBGjfc8Mhq5zDkKFBuc8ExIlEILEIQPWNl1zgB2HMQ5kMMIIB4JoSnrGF hpDBCpTG5lERiaDApBS+LRk2mjGWvI3dFEMMDCG0jEDdYOqU+pOns7XfOPT6B4jo1bcSRzYiS6So z4hpSUDQZJLExIEplZxH6TA2UcloTgvM4IvYXwQvdANi8ubixbZUGwsOjYZm9ACOvEoHSEfGiAxr dIbAcQWkXKdtIBFYhmIBMG5dgOJ++xJB5+nyscXIDEe6DjZ9EGHA/fCED/KmfrIIMzyBwSAX6FE7 TI1+lNoThfgJgQX36A+QvcvUGBTiVDm8ZV9KXShgY45qyhaTv9fBhMHWEPwMR29a9VnfmmYQyMoM rzLEMxyX0WOyvr9hlRpe1l6uCqsVUFVXjk59n103QSApBgDHs9kCHpGxQmJ2ixgmeggjiw7VNaZO iU3oRVyiVdGFGTougriBWiMYu9udHHxDOVyJ0Mw+S40YSiqq5ga5pstRIEUNChBolmISGbGpnnlf DGwZXZMsHDDpsBbBMB0YkYQkpKEvAG8CxVZ6UJrF3AL9JQP+3M2LfQfSb/O1OHp8H0Qzg1EikLbj uHU6leGaFwQqDWyVrIqheQHPGlLXlAHM60aEL4UABycYNIVHnDYIp3RrpNl7iGzCgAo9NgMGCqZj qNLkLEAOPWcRDYaE1FyiYn4zlWY05BU5Ar7xC8EuqrKc8AxpgviCXVSAtJCFAQYcqIvTxajyevEh fOYizSdBFCgwLl2ug1c7dq9RcQ2BkImRBACkbh1HUVO+4vhb1Nh3uSFYhBsEbWQgIAB6CuVYFzBu b5EWIwEOzzFlYK7JuIlyHcwsSE0wE1MkAM12B21urdKrVxb2V8YrsdWvUVBiOm+ElgdS7ZInaQnQ a3u596Gge6YB8aAFZ9WXJJIsFaFKyuFVSIC1g+WAaseIzJLKBjEOFUgcOgK+3YLB39hoY0RIQmgU 0SqM+9pft2kN0GCkgBmjpFCwC4Cuj30Aclh1qm0kJEGAxVJEAZIBIsJFG5In3TrG4DiUSlGlOnj6 LHVJD1kmBEIwaUIhWI1h6YkLl+Zk7EPa5nhRWE4hekI4CSpyO48vk8krl3lB5SovKDsIDFxQqRxW GLgJTO0rLCwY8xuM0mYZcjpPuYEh5qJrodgMOkXeCBwFevr8zIZqEgJynXJyGE4eSnsDNvIW59iD 5UhlCqUCxPAV+5Hyo2i+3vI0byDEOcsrlSNxHNUhjkGVjfnmHTkmABpACBJCl6kUOR3n4dcXwcE2 PTEMu73UWCQDjTINKln4/fVjEBMQgWSApmwBCyHTfMFcSCCs95triqGd41SGYvvVNLVW/ucQai7o KQwJQsRhRCAVBel+gqCZjy8ZRvEfPFJFkUkGQFrt8Kw/LOtU8pjNk2y++Aapta4Fw4DhgOB54GBh y+t6fFQc3i2KXkRad6bhAUV9J10USCQqh4iUV0+tQ5ZiQc4l6tg6H7aUbBWYAmn394Lu0Bg/gBoA zIntcCoG1fazQCgZ8YqFUm4oFp+PxGcLsFuiSCmyAIR33iKp8qs5wCBrihuiBQ+Og8CwDSBSEEYk qIn2lowSl9qMTUVm9Gs7cvn8TuLEfWdFUYB7i6ppp6q6/MoDiEad54KOUXxN7Ql7WCsuD9HzZ4F1 PXEisJOUNasgSB7b3tq3lsIxIxcVOY9zxgDr87Ayij30aQvcC2s8a02uMNyU9dVBfo9PGfE2TNGE yoz5nwFcOZW0A792agWfBwomAvg0U8iyIfqsW6uYBWIoYm7nkp1gdsl9e8BKqMnu3NoJQiW6Cz23 mANbkWwmERDyfBGPpLEIhiKxEDAXEwOSiWEeBxsWyYHaY+KZJE9ifImWueZsAHQm4gG8FKDdYcSJ cXy94rYbQzAVdYHAB0LR6DA0dn1W0y5Alg4IhlYCyH2ZfFlPLvttqWILMxKgRZFKF2oRLjVHrxLL gi2l2K0hj1ohhVdcDTb2z2R+07gpkJ+3IJ3Ai4L8EKWkW88nKxhOuti1txb4qXgsUQyxMJcLCp6B xZwtYNBbH5LLdXMTcVno3JADeP2EH9ng35auiXapNIlbsC1vTRZNkp7NobhTfY2HEyhtunCkM22A oJNUSCCpQgR4ZWZqUIK0eP+oQiB5AKOlEJj5hkGcLUqpgGGJV0bsLOzVn8DfAsXrijwFqAGCFwJ1 k2tQyRbQsAI1ooC0DEeC7kNMKEDrG29xQHMfDVtGyEUDMnY3L3FxRTISKgelP3zU7TBqJJxVC4LB dNpfA/LYXENghoMGImlcEYFCFiAJ20lKygkEqkmGFhQGg3IccLuBhGRQjuF3AbRTG4aAEzR+o93s NEBnGA9sA+EXtYIYEIEElRBLGJILJaiHTQHfu7qCpWAAXAQKE9EQMD87DDkAHVzoVgp1lBKOwLEj GIQIBYCVK1VPSo+bjSBnO4HqFe+Y4ohcoEUSL2SgfCRDiNMiECEQhPyUKKFTxVNgtREcXrQy2mIE N87mS5Jp3APBWCoozrLSEUTXDP5yELQC5UKhQA2q3lUjtLGYAZXZODnkzJwDFxOpU4RUvgaG012M SJ29HBwHuZC1ew9jE7yz1alFIju6I+j3R8AnpMpUMO3cuCFGUDRWsmiZ47JqJohE0y9Ic3O92CdJ RFopzfHR/O6YMddScBFplGpCpUshZCmqspJ7E4HkRRRzRE5zdKllxILX5VCsAWEecaKpRhR0yigX ppSGOJ7FDkH1YoxXmNheYcwP0yg9D8huexyZ5m3tJsd8xXJ+UMEOEct+IulAH0+D0uHd7HzPKK89 zrzSDBSSSMiSMgjEe5aIP0CITJA7CixyvYKKMkpNqQBJGxGMai1JGlFwUPmQzcRLHo9PPxZ3raj1 2WUFBA6uzcC6EUgahQUQ502nG6EtWa+44nz9C795Dh5ZoFIQgyMsE9EyGwhpQYHjiOXLwzAMIcLJ qYYRuBEbhBbQJEkVo3BuDrRPWD7cFDGCfKe4SFo6QssS1qbLE1tgGABUUO6KNQbKMCoQ8tyAHMX0 EVxHEhIR5YrRZfkFzAPZrgAavJWfcZ0i6XNBw6XBe82Ap5y6KMCXC1gOVYEaRbgNPR2CJbabR+id qe/o5cXcHAinqXjUSISQ1ZQFkRgpeuSB4gMnB21U2qt2T4M08hKfx8qfIshSfMo8RDqECWgiBCka JMseyPU1BtmwKNIuIzYwMeBsJrW+0rBPzUVoRoQzt7bBuTS96DuDQySCQwhKAoIrCZRCjdbG0Ibi rAfMK3sa5OjsZ0UiYZlkQFROQFK0gKgx10ycg3o7lCqH6gr4+vdgQGARSGuWdrW8ANy1AB5ibsjR ffFyR9I5+W5cgv0AFu/JH2efPmndBOOgHTmSnhlPU/D10TEU+w5CV9ZolodJ6DqKggVAW0UosVYo jYmN5sSG/cxryOoMMsw6+wAu8SDpow0qsyuw1PQuUvplR2NgyLcAwYoRI9EU8Z+RU16cdjDKUe2s OR02HC0hDUiEVEEkepbigWd60VDS45KIRZkEccNLDkA462IUUchhUuRhNAvbHumIRSJAEgQWSECZ 1L5TEp8XQd7lBTOtrKhmabZ3IBZDQDBvduuaN9EW1wZAimMF9RhYxi5iOBeYhd06DIxENxeUFZWg VIRInoSj4prvFrCHQ7cC81wW0Qm7bUw3cGDawblN+W9AMQGhHooNEiFhQ6u2qjRSUlQWUFIecPqx pOHTnRv6bdpe3Vdsvy2aS5fS3ja2opug2gr28cjcAGD2j5QFUkAvc0BhIm0W24NSgUDcVgSYRAdN ivxWOgW0VxFTeF5N7eOUOdXBOXxuoOIERIjA4NXitS7WW7LtcORJGAjc7IJiXRZwKglMEQsdbznu b6gVzLoEM9fBCG1vK53cjNGzkFbCzXjvN4GBmYqcupUkR1FNgt6Acg8GB4PrD5HUNOohEPELIZkU JyaQuQdIF3obFjKaw/goAvmHoF8ROWZoIeD8NgelmwSGPNCCOzG1/ZBBsb7n5BXvkskESQZIJBGI xUVUhGKgMgLIKB2QVdYoBr621ZeBbG9yfFS9Mn4mQipUqNYQYRNVDdnkOshWq1Y6VfoMSMbY9DgB pQrpuGvUK+wKZeQJ77U90LOgfIFE6Ib52vBuc4Ie0rPWBO5B9sFsRkgE/8cXl/+LuSKcKEgrDXkO AA== --===============1574683703==--