ZGlmZiAtLWdpdCBhL3NyYy9maWxlaW8uYyBiL3NyYy9maWxlaW8uYwppbmRleCBhZDVmZGRkLi44Y2Y3OTlkIDEwMDY0NAotLS0gYS9zcmMvZmlsZWlvLmMKKysrIGIvc3JjL2ZpbGVpby5jCkBAIC0zMywxMyArMzMsMTEgQEAKICNkZWZpbmUgU01CVUZTSVpFCTI1NgkvKiBzaXplIG9mIGVtZXJnZW5jeSB3cml0ZSBidWZmZXIgKi8KIAogI2lmZGVmIEZFQVRfQ1JZUFQKLWNoYXIgY3J5cHRfbWFnaWNfMDFbXSA9ICJWaW1DcnlwdH4wMSEiOwotY2hhciBjcnlwdF9tYWdpY18wMltdID0gIlZpbUNyeXB0fjAyISI7Ci0jIGRlZmluZSBDUllQVF9NQUdJQ19MRU4JMTIJCS8qIG11c3QgYmUgbXVsdGlwbGUgb2YgNCEgKi8KLQogLyogY3J5cHRfbWFnaWNbMF0gaXMgcGt6aXAgY3J5cHQsIGNyeXB0X21hZ2ljWzFdIGlzIHNoYTIrYmxvd2Zpc2ggKi8KLXN0YXRpYyBjaGFyICAgKmNyeXB0X21hZ2ljW10gPSB7Y3J5cHRfbWFnaWNfMDEsIGNyeXB0X21hZ2ljXzAyfTsKLXN0YXRpYyBpbnQgICAgY3J5cHRfc2VlZF9sZW5bXSA9IHswLCA4fTsKK3N0YXRpYyBjaGFyCSpjcnlwdF9tYWdpY1tdID0geyJWaW1DcnlwdH4wMSEiLCAiVmltQ3J5cHR+MDIhIn07CitzdGF0aWMgY2hhcgljcnlwdF9tYWdpY19oZWFkW10gPSAiVmltQ3J5cHR+IjsKKyMgZGVmaW5lIENSWVBUX01BR0lDX0xFTgkxMgkJLyogbXVzdCBiZSBtdWx0aXBsZSBvZiA0ISAqLworc3RhdGljIGludAljcnlwdF9zZWVkX2xlbltdID0gezAsIDh9OwogI2RlZmluZSBDUllQVF9TRUVEX0xFTl9NQVggOAogI2VuZGlmCiAKQEAgLTYxLDcgKzU5LDcgQEAKICNlbmRpZgogI2lmZGVmIEZFQVRfQ1JZUFQKIHN0YXRpYyBpbnQgZ2V0X2NyeXB0X21ldGhvZCBfX0FSR1MoKGNoYXIgKnB0ciwgaW50IGxlbikpOwotc3RhdGljIGNoYXJfdSAqY2hlY2tfZm9yX2NyeXB0a2V5IF9fQVJHUygoY2hhcl91ICpjcnlwdGtleSwgY2hhcl91ICpwdHIsIGxvbmcgKnNpemVwLCBsb25nICpmaWxlc2l6ZXAsIGludCBuZXdmaWxlKSk7CitzdGF0aWMgY2hhcl91ICpjaGVja19mb3JfY3J5cHRrZXkgX19BUkdTKChjaGFyX3UgKmNyeXB0a2V5LCBjaGFyX3UgKnB0ciwgbG9uZyAqc2l6ZXAsIGxvbmcgKmZpbGVzaXplcCwgaW50IG5ld2ZpbGUsIGludCAqZGlkX2FzaykpOwogI2VuZGlmCiAjaWZkZWYgVU5JWAogc3RhdGljIHZvaWQgc2V0X2ZpbGVfdGltZSBfX0FSR1MoKGNoYXJfdSAqZm5hbWUsIHRpbWVfdCBhdGltZSwgdGltZV90IG10aW1lKSk7CkBAIC0yNTMsNiArMjUxLDcgQEAKICAgICBpbnQJCXNraXBfcmVhZCA9IEZBTFNFOwogI2lmZGVmIEZFQVRfQ1JZUFQKICAgICBjaGFyX3UJKmNyeXB0a2V5ID0gTlVMTDsKKyAgICBpbnQJCWRpZF9hc2tfZm9yX2tleSA9IEZBTFNFOwogI2VuZGlmCiAgICAgaW50CQlzcGxpdCA9IDA7CQkvKiBudW1iZXIgb2Ygc3BsaXQgbGluZXMgKi8KICNkZWZpbmUgVU5LTk9XTgkgMHgwZmZmZmZmZgkJLyogZmlsZSBzaXplIGlzIHVua25vd24gKi8KQEAgLTE0MTIsNyArMTQxMSw3IEBACiAJCSAqLwogCQlpZiAoZmlsZXNpemUgPT0gMCkKIAkJICAgIGNyeXB0a2V5ID0gY2hlY2tfZm9yX2NyeXB0a2V5KGNyeXB0a2V5LCBwdHIsICZzaXplLAotCQkJCQkJCSAgJmZpbGVzaXplLCBuZXdmaWxlKTsKKwkJCQkJJmZpbGVzaXplLCBuZXdmaWxlLCAmZGlkX2Fza19mb3Jfa2V5KTsKIAkJLyoKIAkJICogRGVjcnlwdCB0aGUgcmVhZCBieXRlcy4KIAkJICovCkBAIC0yODExLDYgKzI4MTAsMTEgQEAKIAlpZiAobWVtY21wKHB0ciwgY3J5cHRfbWFnaWNbaV0sIENSWVBUX01BR0lDX0xFTikgPT0gMCkKIAkgICAgcmV0dXJuIGk7CiAgICAgfQorCisgICAgaSA9IFNUUkxFTihjcnlwdF9tYWdpY19oZWFkKTsKKyAgICBpZiAobGVuID49IGkgJiYgbWVtY21wKHB0ciwgY3J5cHRfbWFnaWNfaGVhZCwgaSkgPT0gMCkKKwlFTVNHKF8oIkU4MjE6IEZpbGUgaXMgZW5jcnlwdGVkIHdpdGggdW5rbm93biBtZXRob2QiKSk7CisKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTI4MjEsMTIgKzI4MjUsMTMgQEAKICAqIFJldHVybiB0aGUgKG5ldykgZW5jcnlwdGlvbiBrZXksIE5VTEwgZm9yIG5vIGVuY3J5cHRpb24uCiAgKi8KICAgICBzdGF0aWMgY2hhcl91ICoKLWNoZWNrX2Zvcl9jcnlwdGtleShjcnlwdGtleSwgcHRyLCBzaXplcCwgZmlsZXNpemVwLCBuZXdmaWxlKQorY2hlY2tfZm9yX2NyeXB0a2V5KGNyeXB0a2V5LCBwdHIsIHNpemVwLCBmaWxlc2l6ZXAsIG5ld2ZpbGUsIGRpZF9hc2spCiAgICAgY2hhcl91CSpjcnlwdGtleTsJLyogcHJldmlvdXMgZW5jcnlwdGlvbiBrZXkgb3IgTlVMTCAqLwogICAgIGNoYXJfdQkqcHRyOwkJLyogcG9pbnRlciB0byByZWFkIGJ5dGVzICovCiAgICAgbG9uZwkqc2l6ZXA7CQkvKiBsZW5ndGggb2YgcmVhZCBieXRlcyAqLwogICAgIGxvbmcJKmZpbGVzaXplcDsJLyogbnIgb2YgYnl0ZXMgdXNlZCBmcm9tIGZpbGUgKi8KICAgICBpbnQJCW5ld2ZpbGU7CS8qIGVkaXRpbmcgYSBuZXcgYnVmZmVyICovCisgICAgaW50CQkqZGlkX2FzazsJLyogZmxhZzogd2hldGhlciBhbHJlYWR5IGFza2VkIGZvciBrZXkgKi8KIHsKICAgICBpbnQgbWV0aG9kID0gZ2V0X2NyeXB0X21ldGhvZCgoY2hhciAqKXB0ciwgKnNpemVwKTsKIApAQCAtMjgzNiw3ICsyODQxLDcgQEAKIAl1c2VfY3J5cHRfbWV0aG9kID0gbWV0aG9kOwogCWlmIChtZXRob2QgPiAwKQogCSAgICAodm9pZClibG93ZmlzaF9zZWxmX3Rlc3QoKTsKLQlpZiAoY3J5cHRrZXkgPT0gTlVMTCkKKwlpZiAoY3J5cHRrZXkgPT0gTlVMTCAmJiAhKmRpZF9hc2spCiAJewogCSAgICBpZiAoKmN1cmJ1Zi0+Yl9wX2tleSkKIAkJY3J5cHRrZXkgPSBjdXJidWYtPmJfcF9rZXk7CkBAIC0yODQ0LDggKzI4NDksMTEgQEAKIAkgICAgewogCQkvKiBXaGVuIG5ld2ZpbGUgaXMgVFJVRSwgc3RvcmUgdGhlIHR5cGVkIGtleSBpbiB0aGUgJ2tleScKIAkJICogb3B0aW9uIGFuZCBkb24ndCBmcmVlIGl0LiAgYmYgbmVlZHMgaGFzaCBvZiB0aGUga2V5IHNhdmVkLgotCQkgKi8KKwkJICogRG9uJ3QgYXNrIGZvciB0aGUga2V5IGFnYWluIHdoZW4gZmlyc3QgdGltZSBFbnRlciB3YXMgaGl0LgorCQkgKiBIYXBwZW5zIHdoZW4gcmV0cnlpbmcgdG8gZGV0ZWN0IGVuY29kaW5nLiAqLwogCQljcnlwdGtleSA9IGdldF9jcnlwdF9rZXkobmV3ZmlsZSwgRkFMU0UpOworCQkqZGlkX2FzayA9IFRSVUU7CisKIAkJLyogY2hlY2sgaWYgZW1wdHkga2V5IGVudGVyZWQgKi8KIAkJaWYgKGNyeXB0a2V5ICE9IE5VTEwgJiYgKmNyeXB0a2V5ID09IE5VTCkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RkaXIvdGVzdDcxLmluIGIvc3JjL3Rlc3RkaXIvdGVzdDcxLmluCmluZGV4IGEyZWFkZDMuLjcxN2I2NjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3Q3MS5pbgorKysgYi9zcmMvdGVzdGRpci90ZXN0NzEuaW4KQEAgLTIsMTAgKzIsMTQgQEAKIAogU1RBUlRURVNUCiA6c28gc21hbGwudmltCi06L15zdGFydCBvZiB0ZXN0ZmlsZS8rMQotOmxldCBsaW5lcyA9IGdldGxpbmUoJy4nLCAnJCcpCi06bmV3Ci06Y2FsbCBhcHBlbmQoMCwgbGluZXMpCis6L15zdGFydCBvZiB0ZXh0LysxCis6bGV0IHRleHRfbGluZXMgPSBnZXRsaW5lKCcuJywgbGluZSgnLicpICsgMikKKzovXnN0YXJ0IG9mIGNtPTAgYnl0ZXMvKzEKKzpsZXQgY20wX2J5dGVzID0gZ2V0bGluZSgnLicsICcuJykKKzovXnN0YXJ0IG9mIGNtPTEgYnl0ZXMvKzEKKzpsZXQgY20xX2J5dGVzID0gZ2V0bGluZSgnLicsICcuJykKKzpid2lwZQorOmNhbGwgYXBwZW5kKDAsIHRleHRfbGluZXMpCiA6JGQKIDpYCiBmb29iYXIKQEAgLTE0LDEwICsxOCwxMSBAQAogOmJ3aXBlIQogOmUgWHRlc3RmaWxlCiBmb29iYXIKLTpsZXQgZGVjMV9saW5lcyA9IGdldGxpbmUoJy4nLCAnJCcpCi06JXMvXi8yLworOmxldCBjbTBfcmVhZF9iYWNrID0gZ2V0bGluZSgnLicsICckJykKIDpzZXQga2V5PQogOnNldCBjcnlwdG1ldGhvZD0xCis6IiBJZiB0aGUgYmxvd2Zpc2ggdGVzdCBmYWlscyAnY3J5cHRtZXRob2QnIHdpbGwgYmUgMCBub3cuCis6JXMvXi9cPSZjcnlwdG1ldGhvZCA9PSAxID8gIk9LICIgOiAiYmxvd2Zpc2ggdGVzdCBmYWlsZWQgIi8KIDpYCiBiYXJmb28KIGJhcmZvbwpAQCAtMjUsMTMgKzMwLDQ2IEBACiA6YndpcGUhCiA6ZSBYdGVzdGZpbGUKIGJhcmZvbwotOmNhbGwgYXBwZW5kKDAsIGRlYzFfbGluZXMpCi06c2V0IGtleT0KKzpsZXQgY20xX3JlYWRfYmFjayA9IGdldGxpbmUoJy4nLCAnJCcpCis6YndpcGUhCis6c2V0IGJpbiBub2VvbCBrZXk9Cis6Y2FsbCBhcHBlbmQoMCwgY20wX2J5dGVzKQorOiRkCis6c2V0IGZlbmM9bGF0aW4xCis6dyEgWHRlc3RmaWxlCis6YndpcGUhCis6c2V0IG5vYmluCis6ZSBYdGVzdGZpbGUKK2Zvb2ZvbworOmxldCBjbTBfcmVhZF9iaW4gPSBnZXRsaW5lKCcuJywgJyQnKQorOmJ3aXBlIQorOnNldCBiaW4gbm9lb2wga2V5PQorOmNhbGwgYXBwZW5kKDAsIGNtMV9ieXRlcykKKzokZAorOnNldCBmZW5jPWxhdGluMQorOnchIFh0ZXN0ZmlsZQorOmJ3aXBlIQorOnNldCBub2JpbgorOmUgWHRlc3RmaWxlCitiYXJiYXIKKzpjYWxsIGFwcGVuZCgwLCBjbTBfcmVhZF9iaW4pCis6Y2FsbCBhcHBlbmQoMCwgY20xX3JlYWRfYmFjaykKKzpjYWxsIGFwcGVuZCgwLCBjbTBfcmVhZF9iYWNrKQorOnNldCBrZXk9IGZlbmM9bGF0aW4xCiA6dyEgdGVzdC5vdXQKIDpxYSEKIEVORFRFU1QKIAotc3RhcnQgb2YgdGVzdGZpbGUKK3N0YXJ0IG9mIHRleHQKIDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3CiBsaW5lIDIgIGZvbyBiYXIgYmxhaAogbGluZSAzIHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eAorZW5kIG9mIHRleHQKKworc3RhcnQgb2YgY209MCBieXRlcworVmltQ3J5cHR+MDEhBhxsVifefU1noOqjVqnnB0UjM44yVemXCitlbmQgb2YgY209MCBieXRlcworCitzdGFydCBvZiBjbT0xIGJ5dGVzCitWaW1DcnlwdH4wMiGo0jlamtmi6OyURrzow1ss7JRGvIOAD3q81hPou4IMeb7UKAorZW5kIG9mIGNtPTEgYnl0ZXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3Q3MS5vayBiL3NyYy90ZXN0ZGlyL3Rlc3Q3MS5vawppbmRleCA1ODIwODkyLi4yNDY1MmM0IDEwMDY0NAotLS0gYS9zcmMvdGVzdGRpci90ZXN0NzEub2sKKysrIGIvc3JjL3Rlc3RkaXIvdGVzdDcxLm9rCkBAIC0xLDYgKzEsMTAgQEAKIDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3CiBsaW5lIDIgIGZvbyBiYXIgYmxhaAogbGluZSAzIHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eAotMjAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3Ci0ybGluZSAyICBmb28gYmFyIGJsYWgKLTJsaW5lIDMgeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4CitPSyAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2NworT0sgbGluZSAyICBmb28gYmFyIGJsYWgKK09LIGxpbmUgMyB4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgKKzEyMzQ1Njc4OTAKK2HhYmJjY2RkZetmZgorYXNkZmFzZGZhc2RmCiswMDAxMTEyMjIzMzMzCg==