ZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9wZXAzMTIwLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X3BlcDMxMjAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE0YjRjOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2JhZHN5bnRheF9wZXAzMTIwLnB5CkBAIC0wLDAgKzEgQEAKK3ByaW50KCJi9nNlIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjU2N2JmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5CkBAIC0wLDAgKzEsMzAgQEAKKyMgVGhpcyBmaWxlIGlzIG1hcmtlZCBhcyBiaW5hcnkgaW4gdGhlIENWUywgdG8gcHJldmVudCBNYWNDVlMgZnJvbSByZWNvZGluZyBpdC4KKworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydAorCitjbGFzcyBQRVAzMTIwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9wZXAzMTIwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgItCf0LjRgtC+0L0iLmVuY29kZSgidXRmLTgiKSwKKyAgICAgICAgICAgIGInXHhkMFx4OWZceGQwXHhiOFx4ZDFceDgyXHhkMFx4YmVceGQwXHhiZCcKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIlzQnyIuZW5jb2RlKCJ1dGYtOCIpLAorICAgICAgICAgICAgYidcXFx4ZDBceDlmJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXgoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9wZXAzMTIwCisgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBtc2c6CisgICAgICAgICAgICBzZWxmLmFzc2VydF8oc3RyKG1zZykuZmluZCgiTm9uLVVURi04IGNvZGUgc3RhcnRpbmcgd2l0aCIpID49IDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoImV4cGVjdGVkIGV4Y2VwdGlvbiBkaWRuJ3Qgb2NjdXIiKQorCitkZWYgdGVzdF9tYWluKCk6CisgICAgdGVzdF9zdXBwb3J0LnJ1bl91bml0dGVzdChQRVAzMTIwVGVzdCkKKworaWYgX19uYW1lX189PSJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL01pc2MvTkVXUyBiL01pc2MvTkVXUwppbmRleCA4NzUwYjIxLi45OGI0ZmUxIDEwMDY0NAotLS0gYS9NaXNjL05FV1MKKysrIGIvTWlzYy9ORVdTCkBAIC0yNiw2ICsyNiw4IEBACiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAorLSBQRVAgMzEyMDogQ2hhbmdlIGRlZmF1bHQgZW5jb2RpbmcgdG8gVVRGLTguCisKIC0gUEVQIDMxMjM6IFVzZSBwcm9wZXIgQyBpbmhlcml0YW5jZSBmb3IgUHlPYmplY3QuCiAKIC0gUmVtb3ZlZCB0aGUgX19vY3RfXyBhbmQgX19oZXhfXyBzcGVjaWFsIG1ldGhvZHMgYW5kIGFkZGVkIGEgYmluKCkKZGlmZiAtLWdpdCBhL1BhcnNlci90b2tlbml6ZXIuYyBiL1BhcnNlci90b2tlbml6ZXIuYwppbmRleCA5Y2JjOGZlLi4wMGJiMzhhIDEwMDY0NAotLS0gYS9QYXJzZXIvdG9rZW5pemVyLmMKKysrIGIvUGFyc2VyL3Rva2VuaXplci5jCkBAIC00NDQsNiArNDQ0LDM0IEBACiAJdW5nZXRjKGMsIHRvay0+ZnApOwogfQogCisvKiBDaGVjayB3aGV0aGVyIHRoZSBjaGFyYWN0ZXJzIGF0IHMgc3RhcnQgYSB2YWxpZAorICAgVVRGLTggc2VxdWVuY2UuIFJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZm9ybWluZworICAgdGhlIHNlcXVlbmNlIGlmIHllcywgMCBpZiBub3QuICAqLworc3RhdGljIGludCB2YWxpZF91dGY4KGNvbnN0IHVuc2lnbmVkIGNoYXIqIHMpCit7CisJaW50IGV4cGVjdGVkID0gMDsKKwlpbnQgbGVuZ3RoOworCWlmICgqcyA8IDB4ODApCisJCS8qIHNpbmdsZS1ieXRlIGNvZGUgKi8KKwkJcmV0dXJuIDE7CisJaWYgKCpzIDwgMHhjMCkKKwkJLyogZm9sbG93aW5nIGJ5dGUgKi8KKwkJcmV0dXJuIDA7CisJaWYgKCpzIDwgMHhFMCkKKwkJZXhwZWN0ZWQgPSAxOworCWVsc2UgaWYgKCpzIDwgMHhGMCkKKwkJZXhwZWN0ZWQgPSAyOworCWVsc2UgaWYgKCpzIDwgMHhGOCkKKwkJZXhwZWN0ZWQgPSAzOworCWVsc2UKKwkJcmV0dXJuIDA7CisJbGVuZ3RoID0gZXhwZWN0ZWQgKyAxOworCWZvciAoOyBleHBlY3RlZDsgZXhwZWN0ZWQtLSkKKwkJaWYgKHNbZXhwZWN0ZWRdIDwgMHg4MCB8fCBzW2V4cGVjdGVkXSA+PSAweEMwKQorCQkJcmV0dXJuIDA7CisJcmV0dXJuIGxlbmd0aDsKK30KKwogLyogUmVhZCBhIGxpbmUgb2YgaW5wdXQgZnJvbSBUT0suIERldGVybWluZSBlbmNvZGluZwogICAgaWYgbmVjZXNzYXJ5LiAgKi8KIApAQCAtNDc4LDEyICs1MDYsMTMgQEAKIAkJfQogCX0KICNpZm5kZWYgUEdFTgotCS8qIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIEFTQ0lJLCBzbyBtYWtlIHN1cmUgd2UgZG9uJ3QgaGF2ZSBhbnkKLSAgICAgICAgICAgbm9uLUFTQ0lJIGJ5dGVzIGluIGl0LiAqLworCS8qIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIFVURi04LCBzbyBtYWtlIHN1cmUgd2UgZG9uJ3QgaGF2ZSBhbnkKKyAgICAgICAgICAgbm9uLVVURi04IHNlcXVlbmNlcyBpbiBpdC4gKi8KIAlpZiAobGluZSAmJiAhdG9rLT5lbmNvZGluZykgewogCQl1bnNpZ25lZCBjaGFyICpjOwotCQlmb3IgKGMgPSAodW5zaWduZWQgY2hhciAqKWxpbmU7ICpjOyBjKyspCi0JCQlpZiAoKmMgPiAxMjcpIHsKKwkJaW50IGxlbmd0aDsKKwkJZm9yIChjID0gKHVuc2lnbmVkIGNoYXIgKilsaW5lOyAqYzsgYyArPSBsZW5ndGgpCisJCQlpZiAoIShsZW5ndGggPSB2YWxpZF91dGY4KGMpKSkgewogCQkJCWJhZGNoYXIgPSAqYzsKIAkJCQlicmVhazsKIAkJCX0KQEAgLTQ5Myw3ICs1MjIsNyBAQAogCQkvKiBOZWVkIHRvIGFkZCAxIHRvIHRoZSBsaW5lIG51bWJlciwgc2luY2UgdGhpcyBsaW5lCiAJCSAgIGhhcyBub3QgYmVlbiBjb3VudGVkLCB5ZXQuICAqLwogCQlzcHJpbnRmKGJ1ZiwKLQkJCSJOb24tQVNDSUkgY2hhcmFjdGVyICdcXHglLjJ4JyAiCisJCQkiTm9uLVVURi04IGNvZGUgc3RhcnRpbmcgd2l0aCAnXFx4JS4yeCcgIgogCQkJImluIGZpbGUgJS4yMDBzIG9uIGxpbmUgJWksICIKIAkJCSJidXQgbm8gZW5jb2RpbmcgZGVjbGFyZWQ7ICIKIAkJCSJzZWUgaHR0cDovL3d3dy5weXRob24ub3JnL3BlcHMvcGVwLTAyNjMuaHRtbCBmb3IgZGV0YWlscyIsCmRpZmYgLS1naXQgYS9QeXRob24vYXN0LmMgYi9QeXRob24vYXN0LmMKaW5kZXggMTQ2Y2QwNS4uNTQyNmMwMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzdC5jCisrKyBiL1B5dGhvbi9hc3QuYwpAQCAtMjAzLDcgKzIwMyw4IEBACiAgICAgICAgIGMuY19lbmNvZGluZyA9IFNUUihuKTsKICAgICAgICAgbiA9IENISUxEKG4sIDApOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGMuY19lbmNvZGluZyA9IE5VTEw7CisJLyogUEVQIDMxMjAgKi8KKyAgICAgICAgYy5jX2VuY29kaW5nID0gInV0Zi04IjsKICAgICB9CiAgICAgYy5jX2FyZW5hID0gYXJlbmE7CiAK