ZGlmZiAtLWdpdCBhL0JVSUxELmduIGIvQlVJTEQuZ24KaW5kZXggNGY5N2UzNC4uMDgyMmE1ZiAxMDA2NDQKLS0tIGEvQlVJTEQuZ24KKysrIGIvQlVJTEQuZ24KQEAgLTgxMyw2ICs4MTMsNyBAQAogCiB0ZXN0KCJwZGZpdW1fZW1iZWRkZXJ0ZXN0cyIpIHsKICAgc291cmNlcyA9IFsKKyAgICAiZnBkZnNkay9zcmMvZnBkZl9kYXRhYXZhaWxfdW5pdHRlc3QuY3BwIiwKICAgICAiZnBkZnNkay9zcmMvZnBkZmRvY19lbWJlZGRlcnRlc3QuY3BwIiwKICAgICAiZnBkZnNkay9zcmMvZnBkZnZpZXdfZW1iZWRkZXJ0ZXN0LmNwcCIsCiAgICAgInRlc3RpbmcvZW1iZWRkZXJfdGVzdC5jcHAiLApkaWZmIC0tZ2l0IGEvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhcnNlci9mcGRmX3BhcnNlcl9wYXJzZXIuY3BwIGIvY29yZS9zcmMvZnBkZmFwaS9mcGRmX3BhcnNlci9mcGRmX3BhcnNlcl9wYXJzZXIuY3BwCmluZGV4IGY2MjUzNzUuLjVkZmNjODIgMTAwNjQ0Ci0tLSBhL2NvcmUvc3JjL2ZwZGZhcGkvZnBkZl9wYXJzZXIvZnBkZl9wYXJzZXJfcGFyc2VyLmNwcAorKysgYi9jb3JlL3NyYy9mcGRmYXBpL2ZwZGZfcGFyc2VyL2ZwZGZfcGFyc2VyX3BhcnNlci5jcHAKQEAgLTQwMjYsMTQgKzQwMjYsMTQgQEAKICAgICAgICAgQ0ZYX1NtYXJ0UG9pbnRlcjxJRlhfRmlsZVN0cmVhbT4gZmlsZShGWF9DcmVhdGVNZW1vcnlTdHJlYW0ocEJ1ZiwgKHNpemVfdClpU2l6ZSwgRkFMU0UpKTsKICAgICAgICAgbV9zeW50YXhQYXJzZXIuSW5pdFBhcnNlcigoSUZYX0ZpbGVTdHJlYW0qKWZpbGUsIDApOwogICAgICAgICBDUERGX09iamVjdCAqcFRyYWlsZXIgPSBtX3N5bnRheFBhcnNlci5HZXRPYmplY3QoTlVMTCwgMCwgMCwgMCk7Ci0gICAgICAgIGlmIChwVHJhaWxlci0+R2V0VHlwZSgpICE9IFBERk9CSl9ESUNUSU9OQVJZKSB7Ci0gICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIH0KICAgICAgICAgaWYgKCFwVHJhaWxlcikgewogICAgICAgICAgICAgbV9Qb3MgKz0gbV9zeW50YXhQYXJzZXIuU2F2ZVBvcygpOwogICAgICAgICAgICAgcEhpbnRzLT5BZGRTZWdtZW50KG1fUG9zLCBpVHJhaWxlclNpemUpOwogICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICB9CisgICAgICAgIGlmIChwVHJhaWxlci0+R2V0VHlwZSgpICE9IFBERk9CSl9ESUNUSU9OQVJZKSB7CisgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KICAgICAgICAgQ1BERl9EaWN0aW9uYXJ5ICpwVHJhaWxlckRpY3QgPSBwVHJhaWxlci0+R2V0RGljdCgpOwogICAgICAgICBpZiAocFRyYWlsZXJEaWN0KSB7CiAgICAgICAgICAgICBDUERGX09iamVjdCAqcEVuY3J5cHQgPSBwVHJhaWxlckRpY3QtPkdldEVsZW1lbnQoIkVuY3J5cHQiKTsKZGlmZiAtLWdpdCBhL2ZwZGZzZGsvc3JjL2ZwZGZfZGF0YWF2YWlsX3VuaXR0ZXN0LmNwcCBiL2ZwZGZzZGsvc3JjL2ZwZGZfZGF0YWF2YWlsX3VuaXR0ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDgxZmE1Ci0tLSAvZGV2L251bGwKKysrIGIvZnBkZnNkay9zcmMvZnBkZl9kYXRhYXZhaWxfdW5pdHRlc3QuY3BwCkBAIC0wLDAgKzEsMjMgQEAKKy8vIENvcHlyaWdodCAyMDE1IFBERml1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1ZGUgIi4uLy4uL3Rlc3RpbmcvZW1iZWRkZXJfdGVzdC5oIgorI2luY2x1ZGUgIi4uLy4uL2ZwZGZzZGsvaW5jbHVkZS9mcGRmdmlldy5oIgorI2luY2x1ZGUgIi4uLy4uL2ZwZGZzZGsvaW5jbHVkZS9mcGRmZG9jLmgiCisjaW5jbHVkZSAidGVzdGluZy9ndGVzdC9pbmNsdWRlL2d0ZXN0L2d0ZXN0LmgiCisKK2NsYXNzIEZQREZEYXRhQXZhaWxFbWJlZGRlcnRlc3QgOiBwdWJsaWMgRW1iZWRkZXJUZXN0IHsKK307CisKK1RFU1RfRihGUERGRGF0YUF2YWlsRW1iZWRkZXJ0ZXN0LCBUcmFpbGVyVW50ZXJtaW5hdGVkKSB7CisgIC8vIERvY3VtZW50IG11c3Qgb3BlbiB3aXRob3V0IGNyYXNoaW5nIGJ1dCBpcyB0b28gbWFsZm9ybWVkIHRvIGJlIGF2YWlsYWJsZS4KKyAgRVhQRUNUX1RSVUUoT3BlbkRvY3VtZW50KCJ0ZXN0aW5nL3Jlc291cmNlcy90cmFpbGVyX3VudGVybWluYXRlZC5wZGYiKSk7CisgIEVYUEVDVF9GQUxTRShGUERGQXZhaWxfSXNEb2NBdmFpbChhdmFpbF8sICZoaW50c18pKTsKK30KKworVEVTVF9GKEZQREZEYXRhQXZhaWxFbWJlZGRlcnRlc3QsIFRyYWlsZXJBc0hleHN0cmluZykgeworICAvLyBEb2N1bWVudCBtdXN0IG9wZW4gd2l0aG91dCBjcmFzaGluZyBidXQgaXMgdG9vIG1hbGZvcm1lZCB0byBiZSBhdmFpbGFibGUuCisgIEVYUEVDVF9UUlVFKE9wZW5Eb2N1bWVudCgidGVzdGluZy9yZXNvdXJjZXMvdHJhaWxlcl9hc19oZXhzdHJpbmcucGRmIikpOworICBFWFBFQ1RfRkFMU0UoRlBERkF2YWlsX0lzRG9jQXZhaWwoYXZhaWxfLCAmaGludHNfKSk7Cit9CmRpZmYgLS1naXQgYS9wZGZpdW0uZ3lwIGIvcGRmaXVtLmd5cAppbmRleCBkMjg3MTgxLi5lOWM5NThjIDEwMDY0NAotLS0gYS9wZGZpdW0uZ3lwCisrKyBiL3BkZml1bS5neXAKQEAgLTgzOCw2ICs4MzgsNyBAQAogICAgICAgICAnPChERVBUSCknCiAgICAgICBdLAogICAgICAgJ3NvdXJjZXMnOiBbCisgICAgICAgICdmcGRmc2RrL3NyYy9mcGRmX2RhdGFhdmFpbF91bml0dGVzdC5jcHAnLAogICAgICAgICAnZnBkZnNkay9zcmMvZnBkZmRvY19lbWJlZGRlcnRlc3QuY3BwJywKICAgICAgICAgJ2ZwZGZzZGsvc3JjL2ZwZGZ2aWV3X2VtYmVkZGVydGVzdC5jcHAnLAogICAgICAgICAndGVzdGluZy9lbWJlZGRlcl90ZXN0LmNwcCcsCmRpZmYgLS1naXQgYS90ZXN0aW5nL2VtYmVkZGVyX3Rlc3QuaCBiL3Rlc3RpbmcvZW1iZWRkZXJfdGVzdC5oCmluZGV4IDQ4ZWE0MTUuLjNlYjNiZTYgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZW1iZWRkZXJfdGVzdC5oCisrKyBiL3Rlc3RpbmcvZW1iZWRkZXJfdGVzdC5oCkBAIC02NSw3ICs2NSw3IEBACiAgIC8vIGlzIHByb2hpYml0ZWQgYWZ0ZXIgdGhpcyBjYWxsIGlzIG1hZGUuCiAgIHZpcnR1YWwgdm9pZCBVbmxvYWRQYWdlKEZQREZfUEFHRSBwYWdlLCBGUERGX0ZPUk1IQU5ETEUgZm9ybSk7CiAKLSBwcml2YXRlOgorIHByb3RlY3RlZDoKICAgRlBERl9ET0NVTUVOVCBkb2N1bWVudF87CiAgIEZQREZfQVZBSUwgYXZhaWxfOwogICBGWF9ET1dOTE9BREhJTlRTIGhpbnRzXzsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvcmVzb3VyY2VzL3RyYWlsZXJfYXNfaGV4c3RyaW5nLmluIGIvdGVzdGluZy9yZXNvdXJjZXMvdHJhaWxlcl9hc19oZXhzdHJpbmcuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMyMzY4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvcmVzb3VyY2VzL3RyYWlsZXJfYXNfaGV4c3RyaW5nLmluCkBAIC0wLDAgKzEsMjkgQEAKK3t7aGVhZGVyfX0KK3t7b2JqZWN0IDEgMH19IDw8CisgIC9UeXBlIC9DYXRhbG9nCisgIC9QYWdlcyAyIDAgUgorICAvTmFtZXMgPDwKKyAgICAvRGVzdHMgMTAgMCBSCisgID4+CisgIC9EZXN0cyAxNCAwIFIKKz4+CitlbmRvYmoKK3t7b2JqZWN0IDIgMH19IDw8CisgIC9UeXBlIC9QYWdlcworICAvQ291bnQgMQorICAvS2lkcyBbCisgICAgMyAwIFIKKyAgXQorPj4KK2VuZG9iagore3tvYmplY3QgMyAwfX0gPDwKKyAgL1R5cGUgL1BhZ2UKKyAgL1BhcmVudCAyIDAgUgorICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQorPj4KK2VuZG9iagore3t4cmVmfX0KKyUgdHJhaWxlciBlcnJvbmVvdXNseSBjb250YWlucyBhIGhleCBzdHJpbmcsIG5vdCBhIGRpY3Rpb25hcnkuCit0cmFpbGVyIDwwMDAwZGVhZGJhYmUwMDAwPgore3tzdGFydHhyZWZ9fQorJSVFT0YKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvcmVzb3VyY2VzL3RyYWlsZXJfYXNfaGV4c3RyaW5nLnBkZiBiL3Rlc3RpbmcvcmVzb3VyY2VzL3RyYWlsZXJfYXNfaGV4c3RyaW5nLnBkZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yjc1YTUzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9yZXNvdXJjZXMvdHJhaWxlcl9hc19oZXhzdHJpbmcucGRmCkBAIC0wLDAgKzEsMzUgQEAKKyVQREYtMS43CisloPKk9AorMSAwIG9iaiA8PAorICAvVHlwZSAvQ2F0YWxvZworICAvUGFnZXMgMiAwIFIKKyAgL05hbWVzIDw8CisgICAgL0Rlc3RzIDEwIDAgUgorICA+PgorICAvRGVzdHMgMTQgMCBSCis+PgorZW5kb2JqCisyIDAgb2JqIDw8CisgIC9UeXBlIC9QYWdlcworICAvQ291bnQgMQorICAvS2lkcyBbCisgICAgMyAwIFIKKyAgXQorPj4KK2VuZG9iagorMyAwIG9iaiA8PAorICAvVHlwZSAvUGFnZQorICAvUGFyZW50IDIgMCBSCisgIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCis+PgorZW5kb2JqCit4cmVmCiswIDQKKzAwMDAwMDAwMDAgNjU1MzYgZgorMDAwMDAwMDAxNSAwMDAwMCBuCiswMDAwMDAwMTE5IDAwMDAwIG4KKzAwMDAwMDAxOTAgMDAwMDAgbgordHJhaWxlciA8MDAwMGRlYWRiYWJlMDAwMD4KK3N0YXJ0eHJlZgorMjY3CislJUVPRgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9yZXNvdXJjZXMvdHJhaWxlcl91bnRlcm1pbmF0ZWQuaW4gYi90ZXN0aW5nL3Jlc291cmNlcy90cmFpbGVyX3VudGVybWluYXRlZC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGM3NGI3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9yZXNvdXJjZXMvdHJhaWxlcl91bnRlcm1pbmF0ZWQuaW4KQEAgLTAsMCArMSwzMSBAQAore3toZWFkZXJ9fQore3tvYmplY3QgMSAwfX0gPDwKKyAgL1R5cGUgL0NhdGFsb2cKKyAgL1BhZ2VzIDIgMCBSCisgIC9OYW1lcyA8PAorICAgIC9EZXN0cyAxMCAwIFIKKyAgPj4KKyAgL0Rlc3RzIDE0IDAgUgorPj4KK2VuZG9iagore3tvYmplY3QgMiAwfX0gPDwKKyAgL1R5cGUgL1BhZ2VzCisgIC9Db3VudCAxCisgIC9LaWRzIFsKKyAgICAzIDAgUgorICBdCis+PgorZW5kb2JqCit7e29iamVjdCAzIDB9fSA8PAorICAvVHlwZSAvUGFnZQorICAvUGFyZW50IDIgMCBSCisgIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCis+PgorZW5kb2JqCit7e3hyZWZ9fQorJSBjbG9zaW5nIGFuZ2xlLWJyYWNrZXRzIG5vdCBwcmVzZW50IGZvciB0cmFpbGVyIGRpY3Rpb25hcnkuCit0cmFpbGVyIDw8CisgIC9TaXplIDYKKyAgL1Jvb3QgMSAwIFIKK3t7c3RhcnR4cmVmfX0KKyUlRU9GCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Jlc291cmNlcy90cmFpbGVyX3VudGVybWluYXRlZC5wZGYgYi90ZXN0aW5nL3Jlc291cmNlcy90cmFpbGVyX3VudGVybWluYXRlZC5wZGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAxZWM0YgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvcmVzb3VyY2VzL3RyYWlsZXJfdW50ZXJtaW5hdGVkLnBkZgpAQCAtMCwwICsxLDM4IEBACislUERGLTEuNworJaDypPQKKzEgMCBvYmogPDwKKyAgL1R5cGUgL0NhdGFsb2cKKyAgL1BhZ2VzIDIgMCBSCisgIC9OYW1lcyA8PAorICAgIC9EZXN0cyAxMCAwIFIKKyAgPj4KKyAgL0Rlc3RzIDE0IDAgUgorPj4KK2VuZG9iagorMiAwIG9iaiA8PAorICAvVHlwZSAvUGFnZXMKKyAgL0NvdW50IDEKKyAgL0tpZHMgWworICAgIDMgMCBSCisgIF0KKz4+CitlbmRvYmoKKzMgMCBvYmogPDwKKyAgL1R5cGUgL1BhZ2UKKyAgL1BhcmVudCAyIDAgUgorICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQorPj4KK2VuZG9iagoreHJlZgorMCA0CiswMDAwMDAwMDAwIDY1NTM2IGYKKzAwMDAwMDAwMTUgMDAwMDAgbgorMDAwMDAwMDExOSAwMDAwMCBuCiswMDAwMDAwMTkwIDAwMDAwIG4KKyUgY2xvc2luZyBhbmdsZS1icmFja2V0cyBub3QgcHJlc2VudCBmb3IgdHJhaWxlciBkaWN0aW9uYXJ5LgordHJhaWxlciA8PAorICAvU2l6ZSA2CisgIC9Sb290IDEgMCBSCitzdGFydHhyZWYKKzI2NworJSVFT0YK