ZGlmZiAtLWdpdCBhL0xpYi90ZXN0L291dHB1dC90ZXN0X3NheCBiL0xpYi90ZXN0L291dHB1dC90ZXN0X3NheAppbmRleCA4YWE1YTc3Li5jZmI1NmNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9vdXRwdXQvdGVzdF9zYXgKKysrIGIvTGliL3Rlc3Qvb3V0cHV0L3Rlc3Rfc2F4CkBAIC0yOSw2ICsyOSw5IEBACiBQYXNzZWQgdGVzdF9xdW90ZWF0dHJfYmFzaWMKIFBhc3NlZCB0ZXN0X3NpbmdsZV9kb3VibGVfcXVvdGVhdHRyCiBQYXNzZWQgdGVzdF9zaW5nbGVfcXVvdGVhdHRyCitQYXNzZWQgdGVzdF91bmVzY2FwZV9hbGwKK1Bhc3NlZCB0ZXN0X3VuZXNjYXBlX2Jhc2ljCitQYXNzZWQgdGVzdF91bmVzY2FwZV9leHRyYQogUGFzc2VkIHRlc3RfeG1sZ2VuX2F0dHJfZXNjYXBlCiBQYXNzZWQgdGVzdF94bWxnZW5fYmFzaWMKIFBhc3NlZCB0ZXN0X3htbGdlbl9jb250ZW50CkBAIC0zNiw0ICszOSw0IEBACiBQYXNzZWQgdGVzdF94bWxnZW5faWdub3JhYmxlCiBQYXNzZWQgdGVzdF94bWxnZW5fbnMKIFBhc3NlZCB0ZXN0X3htbGdlbl9waQotMzcgdGVzdHMsIDAgZmFpbHVyZXMKKzQwIHRlc3RzLCAwIGZhaWx1cmVzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NheC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5CmluZGV4IDEyMDAzMjkuLjNjNWIxMWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5CkBAIC04LDcgKzgsOCBAQAogZXhjZXB0IFNBWFJlYWRlck5vdEF2YWlsYWJsZToKICAgICAjIGRvbid0IHRyeSB0byB0ZXN0IHRoaXMgbW9kdWxlIGlmIHdlIGNhbm5vdCBjcmVhdGUgYSBwYXJzZXIKICAgICByYWlzZSBJbXBvcnRFcnJvcigibm8gWE1MIHBhcnNlcnMgYXZhaWxhYmxlIikKLWZyb20geG1sLnNheC5zYXh1dGlscyBpbXBvcnQgWE1MR2VuZXJhdG9yLCBlc2NhcGUsIHF1b3RlYXR0ciwgWE1MRmlsdGVyQmFzZQorZnJvbSB4bWwuc2F4LnNheHV0aWxzIGltcG9ydCBYTUxHZW5lcmF0b3IsIGVzY2FwZSwgdW5lc2NhcGUsIHF1b3RlYXR0ciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxGaWx0ZXJCYXNlCiBmcm9tIHhtbC5zYXguZXhwYXRyZWFkZXIgaW1wb3J0IGNyZWF0ZV9wYXJzZXIKIGZyb20geG1sLnNheC54bWxyZWFkZXIgaW1wb3J0IElucHV0U291cmNlLCBBdHRyaWJ1dGVzSW1wbCwgQXR0cmlidXRlc05TSW1wbAogZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCkBAIC03MCw2ICs3MSwxNyBAQAogZGVmIHRlc3RfZXNjYXBlX2V4dHJhKCk6CiAgICAgcmV0dXJuIGVzY2FwZSgiSGVpIHDlIGRlZyIsIHsi5SIgOiAiJmFyaW5nOyJ9KSA9PSAiSGVpIHAmYXJpbmc7IGRlZyIKIAorIyA9PT09PSB1bmVzY2FwZQorCitkZWYgdGVzdF91bmVzY2FwZV9iYXNpYygpOgorICAgIHJldHVybiB1bmVzY2FwZSgiRG9uYWxkIER1Y2sgJmFtcDsgQ28iKSA9PSAiRG9uYWxkIER1Y2sgJiBDbyIKKworZGVmIHRlc3RfdW5lc2NhcGVfYWxsKCk6CisgICAgcmV0dXJuIHVuZXNjYXBlKCImbHQ7RG9uYWxkIER1Y2sgJmFtcDsgQ28mZ3Q7IikgPT0gIjxEb25hbGQgRHVjayAmIENvPiIKKworZGVmIHRlc3RfdW5lc2NhcGVfZXh0cmEoKToKKyAgICByZXR1cm4gdW5lc2NhcGUoIkhlaSBw5SBkZWciLCB7IuUiIDogIiZhcmluZzsifSkgPT0gIkhlaSBwJmFyaW5nOyBkZWciCisKICMgPT09PT0gcXVvdGVhdHRyCiAKIGRlZiB0ZXN0X3F1b3RlYXR0cl9iYXNpYygpOgpkaWZmIC0tZ2l0IGEvTGliL3htbC9zYXgvc2F4dXRpbHMucHkgYi9MaWIveG1sL3NheC9zYXh1dGlscy5weQppbmRleCA4YTk2YmU2Li5jMzY5Zjk4IDEwMDY0NAotLS0gYS9MaWIveG1sL3NheC9zYXh1dGlscy5weQorKysgYi9MaWIveG1sL3NheC9zYXh1dGlscy5weQpAQCAtMTIsMjAgKzEyLDQwIEBACiBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgX1N0cmluZ1R5cGVzID0gW3R5cGVzLlN0cmluZ1R5cGVdCiAKK2RlZiBfX2RpY3RfcmVwbGFjZShzLCBkKToKKyAgICAiIiJSZXBsYWNlIHN1YnN0cmluZ3Mgb2YgYSBzdHJpbmcgdXNpbmcgYSBkaWN0aW9uYXJ5LiIiIgorICAgIGZvciBrZXksIHZhbHVlIGluIGQuaXRlbXMoKToKKyAgICAgICAgcyA9IHMucmVwbGFjZShrZXksIHZhbHVlKQorICAgIHJldHVybiBzCiAKIGRlZiBlc2NhcGUoZGF0YSwgZW50aXRpZXM9e30pOgogICAgICIiIkVzY2FwZSAmLCA8LCBhbmQgPiBpbiBhIHN0cmluZyBvZiBkYXRhLgotCisgICAgCiAgICAgWW91IGNhbiBlc2NhcGUgb3RoZXIgc3RyaW5ncyBvZiBkYXRhIGJ5IHBhc3NpbmcgYSBkaWN0aW9uYXJ5IGFzCiAgICAgdGhlIG9wdGlvbmFsIGVudGl0aWVzIHBhcmFtZXRlci4gIFRoZSBrZXlzIGFuZCB2YWx1ZXMgbXVzdCBhbGwgYmUKICAgICBzdHJpbmdzOyBlYWNoIGtleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggaXRzIGNvcnJlc3BvbmRpbmcgdmFsdWUuCiAgICAgIiIiCisKKyAgICAjIG11c3QgZG8gYW1wZXJzYW5kIGZpcnN0CiAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgiJiIsICImYW1wOyIpCi0gICAgZGF0YSA9IGRhdGEucmVwbGFjZSgiPCIsICImbHQ7IikKLSAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCI+IiwgIiZndDsiKQotICAgIGZvciBjaGFycywgZW50aXR5IGluIGVudGl0aWVzLml0ZW1zKCk6Ci0gICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoY2hhcnMsIGVudGl0eSkKLSAgICByZXR1cm4gZGF0YQorICAgIGRhdGEgPSBfX2RpY3RfcmVwbGFjZShkYXRhLCB7IjwiIDogIiZsdDsiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj4iIDogIiZndDsiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKKyAgICByZXR1cm4gX19kaWN0X3JlcGxhY2UoZGF0YSwgZW50aXRpZXMpCisKK2RlZiB1bmVzY2FwZShkYXRhLCBlbnRpdGllcz17fSk6CisgICAgIiIiVW5lc2NhcGUgJmFtcDssICZsdDssIGFuZCAmZ3Q7IGluIGEgc3RyaW5nIG9mIGRhdGEuCisKKyAgICBZb3UgY2FuIHVuZXNjYXBlIG90aGVyIHN0cmluZ3Mgb2YgZGF0YSBieSBwYXNzaW5nIGEgZGljdGlvbmFyeSBhcworICAgIHRoZSBvcHRpb25hbCBlbnRpdGllcyBwYXJhbWV0ZXIuICBUaGUga2V5cyBhbmQgdmFsdWVzIG11c3QgYWxsIGJlCisgICAgc3RyaW5nczsgZWFjaCBrZXkgd2lsbCBiZSByZXBsYWNlZCB3aXRoIGl0cyBjb3JyZXNwb25kaW5nIHZhbHVlLgorICAgICIiIgorICAgIGRhdGEgPSBfX2RpY3RfcmVwbGFjZShkYXRhLCB7IiZsdDsiICA6ICI8IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICImZ3Q7IiAgOiAiPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQorICAgICMgbXVzdCBkbyBhbXBlcnNhbmQgbGFzdAorICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoIiZhbXA7IiwgIiYiKQorICAgIHJldHVybiBfX2RpY3RfcmVwbGFjZShkYXRhLCBlbnRpdGllcykKIAogZGVmIHF1b3RlYXR0cihkYXRhLCBlbnRpdGllcz17fSk6CiAgICAgIiIiRXNjYXBlIGFuZCBxdW90ZSBhbiBhdHRyaWJ1dGUgdmFsdWUuCg==