ZGlmZiAtLWdpdCBhL2Zpcm13YXJlLzJsaWIvMnJzYS5jIGIvZmlybXdhcmUvMmxpYi8ycnNhLmMKaW5kZXggNzg2MmIxMy4uNDhlMWVjMyAxMDA2NDQKLS0tIGEvZmlybXdhcmUvMmxpYi8ycnNhLmMKKysrIGIvZmlybXdhcmUvMmxpYi8ycnNhLmMKQEAgLTczLDYgKzczLDI1IEBACiB9CiAKIC8qKgorICogTW9udGdvbWVyeSBjW10gKz0gMCAqIGJbXSAvIFIgJSBtb2QKKyAqLworc3RhdGljIHZvaWQgbW9udE11bEFkZDAoY29uc3Qgc3RydWN0IHZiMl9wdWJsaWNfa2V5ICprZXksCisJCQl1aW50MzJfdCAqYywKKwkJCWNvbnN0IHVpbnQzMl90ICpiKQoreworCXVpbnQzMl90IGQwID0gY1swXSAqIGtleS0+bjBpbnY7CisJdWludDY0X3QgQiA9ICh1aW50NjRfdClkMCAqIGtleS0+blswXSArIGNbMF07CisJdWludDMyX3QgaTsKKworCWZvciAoaSA9IDE7IGkgPCBrZXktPmFycnNpemU7ICsraSkgeworCQlCID0gKEIgPj4gMzIpICsgKHVpbnQ2NF90KWQwICoga2V5LT5uW2ldICsgY1tpXTsKKwkJY1tpIC0gMV0gPSAodWludDMyX3QpQjsKKwl9CisKKwljW2kgLSAxXSA9IEIgPj4gMzI7Cit9CisKKy8qKgogICogTW9udGdvbWVyeSBjW10gPSBhW10gKiBiW10gLyBSICUgbW9kCiAgKi8KIHN0YXRpYyB2b2lkIG1vbnRNdWwoY29uc3Qgc3RydWN0IHZiMl9wdWJsaWNfa2V5ICprZXksCkBAIC04OSwxNiArMTA4LDMyIEBACiAJfQogfQogCisvKiBNb250Z29tZXJ5IGNbXSA9IGFbXSAqIDEgLyBSICUga2V5LiAqLworc3RhdGljIHZvaWQgbW9udE11bDEoY29uc3Qgc3RydWN0IHZiMl9wdWJsaWNfa2V5ICprZXksCisJCSAgICAgdWludDMyX3QgKmMsCisJCSAgICAgY29uc3QgdWludDMyX3QgKmEpCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwga2V5LT5hcnJzaXplOyArK2kpCisJCWNbaV0gPSAwOworCisJbW9udE11bEFkZChrZXksIGMsIDEsIGEpOworCWZvciAoaSA9IDE7IGkgPCBrZXktPmFycnNpemU7ICsraSkKKwkJbW9udE11bEFkZDAoa2V5LCBjLCBhKTsKK30KKwogLyoqCi0gKiBJbi1wbGFjZSBwdWJsaWMgZXhwb25lbnRpYXRpb24uICg2NTUzN30KKyAqIEluLXBsYWNlIHB1YmxpYyBleHBvbmVudGlhdGlvbi4KICAqCiAgKiBAcGFyYW0ga2V5CQlLZXkgdG8gdXNlIGluIHNpZ25pbmcKICAqIEBwYXJhbSBpbm91dAkJSW5wdXQgYW5kIG91dHB1dCBiaWctZW5kaWFuIGJ5dGUgYXJyYXkKICAqIEBwYXJhbSB3b3JrYnVmMzIJV29yayBidWZmZXI7IGNhbGxlciBtdXN0IHZlcmlmeSB0aGlzIGlzCiAgKgkJCSgzICoga2V5LT5hcnJzaXplKSBlbGVtZW50cyBsb25nLgorICogQHBhcmFtIGV4cAkJUlNBIHB1YmxpYyBleHBvbmVudDogZWl0aGVyIDY1NTM3IChGNCkgb3IgMwogICovCi1zdGF0aWMgdm9pZCBtb2Rwb3dGNChjb25zdCBzdHJ1Y3QgdmIyX3B1YmxpY19rZXkgKmtleSwgdWludDhfdCAqaW5vdXQsCi0JCSAgICB1aW50MzJfdCAqd29ya2J1ZjMyKQorc3RhdGljIHZvaWQgbW9kcG93KGNvbnN0IHN0cnVjdCB2YjJfcHVibGljX2tleSAqa2V5LCB1aW50OF90ICppbm91dCwKKwkJdWludDMyX3QgKndvcmtidWYzMiwgaW50IGV4cCkKIHsKIAl1aW50MzJfdCAqYSA9IHdvcmtidWYzMjsKIAl1aW50MzJfdCAqYVIgPSBhICsga2V5LT5hcnJzaXplOwpAQCAtMTE3LDEyICsxNTIsMTggQEAKIAl9CiAKIAltb250TXVsKGtleSwgYVIsIGEsIGtleS0+cnIpOyAgLyogYVIgPSBhICogUlIgLyBSIG1vZCBNICAgKi8KLQlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrPTIpIHsKLQkJbW9udE11bChrZXksIGFhUiwgYVIsIGFSKTsgIC8qIGFhUiA9IGFSICogYVIgLyBSIG1vZCBNICovCi0JCW1vbnRNdWwoa2V5LCBhUiwgYWFSLCBhYVIpOyAgLyogYVIgPSBhYVIgKiBhYVIgLyBSIG1vZCBNICovCisJaWYgKGV4cCA9PSAzKSB7CisJCW1vbnRNdWwoa2V5LCBhYVIsIGFSLCBhUik7IC8qIGFhUiA9IGFSICogYVIgLyBSIG1vZCBNICovCisJCW1vbnRNdWwoa2V5LCBhLCBhYVIsIGFSKTsgLyogYSA9IGFhUiAqIGFSIC8gUiBtb2QgTSAqLworCQltb250TXVsMShrZXksIGFhYSwgYSk7IC8qIGFhYSA9IGEgKiAxIC8gUiBtb2QgTSAqLworCX0gZWxzZSB7CisJCS8qIEV4cG9uZW50IDY1NTM3ICovCisJCWZvciAoaSA9IDA7IGkgPCAxNjsgaSs9MikgeworCQkJbW9udE11bChrZXksIGFhUiwgYVIsIGFSKTsgIC8qIGFhUiA9IGFSICogYVIgLyBSIG1vZCBNICovCisJCQltb250TXVsKGtleSwgYVIsIGFhUiwgYWFSKTsgIC8qIGFSID0gYWFSICogYWFSIC8gUiBtb2QgTSAqLworCQl9CisJCW1vbnRNdWwoa2V5LCBhYWEsIGFSLCBhKTsgIC8qIGFhYSA9IGFSICogYSAvIFIgbW9kIE0gKi8KIAl9Ci0JbW9udE11bChrZXksIGFhYSwgYVIsIGEpOyAgLyogYWFhID0gYVIgKiBhIC8gUiBtb2QgTSAqLwotCiAKIAkvKiBNYWtlIHN1cmUgYWFhIDwgbW9kOyBhYWEgaXMgYXQgbW9zdCAxeCBtb2QgdG9vIGxhcmdlLiAqLwogCWlmICh2YjJfbW9udF9nZShrZXksIGFhYSkpIHsKQEAgLTE1Myw2ICsxOTQsOSBAQAogCVZCMl9TSUdfUlNBODE5MiwKIAlWQjJfU0lHX1JTQTgxOTIsCiAJVkIyX1NJR19SU0E4MTkyLAorCVZCMl9TSUdfUlNBMjA0OF9FWFAzLAorCVZCMl9TSUdfUlNBMjA0OF9FWFAzLAorCVZCMl9TSUdfUlNBMjA0OF9FWFAzLAogfTsKIAogLyoqCkBAIC0xNzgsNiArMjIyLDcgQEAKIAljYXNlIFZCMl9TSUdfUlNBMTAyNDoKIAkJcmV0dXJuIDEwMjQgLyA4OwogCWNhc2UgVkIyX1NJR19SU0EyMDQ4OgorCWNhc2UgVkIyX1NJR19SU0EyMDQ4X0VYUDM6CiAJCXJldHVybiAyMDQ4IC8gODsKIAljYXNlIFZCMl9TSUdfUlNBNDA5NjoKIAkJcmV0dXJuIDQwOTYgLyA4OwpAQCAtMTg4LDYgKzIzMywyNyBAQAogCX0KIH0KIAorLyoqCisgKiBSZXR1cm4gdGhlIGV4cG9uZW50IHVzZWQgYnkgYW4gUlNBIGFsZ29yaXRobQorICoKKyAqIEBwYXJhbSBzaWdfYWxnCVNpZ25hdHVyZSBhbGdvcml0aG0KKyAqIEByZXR1cm4gVGhlIGV4cG9uZW50IHRvIHVzZSAoMyBvciA2NTUzNyhGNCkpLCBvciAwIGlmIGVycm9yLgorICovCitzdGF0aWMgdWludDMyX3QgdmIyX3JzYV9leHBvbmVudChlbnVtIHZiMl9zaWduYXR1cmVfYWxnb3JpdGhtIHNpZ19hbGcpCit7CisJc3dpdGNoIChzaWdfYWxnKSB7CisJY2FzZSBWQjJfU0lHX1JTQTEwMjQ6CisJY2FzZSBWQjJfU0lHX1JTQTIwNDg6CisJY2FzZSBWQjJfU0lHX1JTQTQwOTY6CisJY2FzZSBWQjJfU0lHX1JTQTgxOTI6CisJCXJldHVybiA2NTUzNzsKKwljYXNlIFZCMl9TSUdfUlNBMjA0OF9FWFAzOgorCQlyZXR1cm4gMzsKKwlkZWZhdWx0OgorCQlyZXR1cm4gMDsKKwl9Cit9CisKIHVpbnQzMl90IHZiMl9wYWNrZWRfa2V5X3NpemUoZW51bSB2YjJfc2lnbmF0dXJlX2FsZ29yaXRobSBzaWdfYWxnKQogewogCXVpbnQzMl90IHNpZ19zaXplID0gdmIyX3JzYV9zaWdfc2l6ZShzaWdfYWxnKTsKQEAgLTI5OCwxMyArMzY0LDE1IEBACiAJdWludDMyX3Qga2V5X2J5dGVzOwogCWludCBzaWdfc2l6ZTsKIAlpbnQgcGFkX3NpemU7CisJaW50IGV4cDsKIAlpbnQgcnY7CiAKIAlpZiAoIWtleSB8fCAhc2lnIHx8ICFkaWdlc3QpCiAJCXJldHVybiBWQjJfRVJST1JfUlNBX1ZFUklGWV9QQVJBTTsKIAogCXNpZ19zaXplID0gdmIyX3JzYV9zaWdfc2l6ZShrZXktPnNpZ19hbGcpOwotCWlmICghc2lnX3NpemUpIHsKKwlleHAgPSB2YjJfcnNhX2V4cG9uZW50KGtleS0+c2lnX2FsZyk7CisJaWYgKCFzaWdfc2l6ZSB8fCAhZXhwKSB7CiAJCVZCMl9ERUJVRygiSW52YWxpZCBzaWduYXR1cmUgdHlwZSFcbiIpOwogCQlyZXR1cm4gVkIyX0VSUk9SX1JTQV9WRVJJRllfQUxHT1JJVEhNOwogCX0KQEAgLTMyMiw3ICszOTAsNyBAQAogCQlyZXR1cm4gVkIyX0VSUk9SX1JTQV9WRVJJRllfV09SS0JVRjsKIAl9CiAKLQltb2Rwb3dGNChrZXksIHNpZywgd29ya2J1ZjMyKTsKKwltb2Rwb3coa2V5LCBzaWcsIHdvcmtidWYzMiwgZXhwKTsKIAogCXZiMl93b3JrYnVmX2ZyZWUoJndibG9jYWwsIDMgKiBrZXlfYnl0ZXMpOwogCmRpZmYgLS1naXQgYS9maXJtd2FyZS8ybGliLzJzaGFfdXRpbGl0eS5jIGIvZmlybXdhcmUvMmxpYi8yc2hhX3V0aWxpdHkuYwppbmRleCBkZDc0ZjI5Li43MTkzMDkxIDEwMDY0NAotLS0gYS9maXJtd2FyZS8ybGliLzJzaGFfdXRpbGl0eS5jCisrKyBiL2Zpcm13YXJlLzJsaWIvMnNoYV91dGlsaXR5LmMKQEAgLTQwLDYgKzQwLDkgQEAKIAlDVEhfU0hBMSwKIAlDVEhfU0hBMjU2LAogCUNUSF9TSEE1MTIsCisJQ1RIX1NIQTEsCisJQ1RIX1NIQTI1NiwKKwlDVEhfU0hBNTEyLAogfTsKIAogZW51bSB2YjJfaGFzaF9hbGdvcml0aG0gdmIyX2NyeXB0b190b19oYXNoKHVpbnQzMl90IGFsZ29yaXRobSkKZGlmZiAtLWdpdCBhL2Zpcm13YXJlLzJsaWIvaW5jbHVkZS8yY3J5cHRvLmggYi9maXJtd2FyZS8ybGliL2luY2x1ZGUvMmNyeXB0by5oCmluZGV4IGRhMWMyZGQuLmEzM2I1MzYgMTAwNjQ0Ci0tLSBhL2Zpcm13YXJlLzJsaWIvaW5jbHVkZS8yY3J5cHRvLmgKKysrIGIvZmlybXdhcmUvMmxpYi9pbmNsdWRlLzJjcnlwdG8uaApAQCAtMjMsNyArMjMsOSBAQAogCVZCMl9BTEdfUlNBODE5Ml9TSEExICAgPSA5LAogCVZCMl9BTEdfUlNBODE5Ml9TSEEyNTYgPSAxMCwKIAlWQjJfQUxHX1JTQTgxOTJfU0hBNTEyID0gMTEsCi0KKwlWQjJfQUxHX1JTQTIwNDhfRVhQM19TSEExICAgPSAxMiwKKwlWQjJfQUxHX1JTQTIwNDhfRVhQM19TSEEyNTYgPSAxMywKKwlWQjJfQUxHX1JTQTIwNDhfRVhQM19TSEE1MTIgPSAxNCwKIAkvKiBOdW1iZXIgb2YgYWxnb3JpdGhtcyAqLwogCVZCMl9BTEdfQ09VTlQKIH07CkBAIC00NCw2ICs0Niw3IEBACiAJVkIyX1NJR19SU0EyMDQ4ID0gMywKIAlWQjJfU0lHX1JTQTQwOTYgPSA0LAogCVZCMl9TSUdfUlNBODE5MiA9IDUsCisJVkIyX1NJR19SU0EyMDQ4X0VYUDMgPSA2LAogCiAJLyogTGFzdCBpbmRleC4gRG9uJ3QgYWRkIGFueXRoaW5nIGJlbG93LiAqLwogCVZCMl9TSUdfQUxHX0NPVU5ULApkaWZmIC0tZ2l0IGEvZnV0aWxpdHkvZmlsZV90eXBlX3VzYnBkMS5jIGIvZnV0aWxpdHkvZmlsZV90eXBlX3VzYnBkMS5jCmluZGV4IDgxNDMwODUuLjEzMWUwMDMgMTAwNjQ0Ci0tLSBhL2Z1dGlsaXR5L2ZpbGVfdHlwZV91c2JwZDEuYworKysgYi9mdXRpbGl0eS9maWxlX3R5cGVfdXNicGQxLmMKQEAgLTI1Niw2ICsyNTYsNyBAQAogICovCiBzdGF0aWMgZW51bSB2YjJfc2lnbmF0dXJlX2FsZ29yaXRobSBzaWdzW10gPSB7CiAJVkIyX1NJR19SU0EyMDQ4LAorCVZCMl9TSUdfUlNBMjA0OF9FWFAzLAogCVZCMl9TSUdfUlNBMTAyNCwKIAlWQjJfU0lHX1JTQTQwOTYsCiAJVkIyX1NJR19SU0E4MTkyLApAQCAtMjc3LDYgKzI3OCw3IEBACiAJY2FzZSBWQjJfU0lHX1JTQTEwMjQ6CiAJCXJldHVybiAyNzI7CiAJY2FzZSBWQjJfU0lHX1JTQTIwNDg6CisJY2FzZSBWQjJfU0lHX1JTQTIwNDhfRVhQMzoKIAkJcmV0dXJuIDUyODsKIAljYXNlIFZCMl9TSUdfUlNBNDA5NjoKIAkJcmV0dXJuIDEwNDA7CmRpZmYgLS1naXQgYS9ob3N0L2xpYjIxL2hvc3Rfa2V5LmMgYi9ob3N0L2xpYjIxL2hvc3Rfa2V5LmMKaW5kZXggZWNiNzMyOC4uYmUzNmRmNyAxMDA2NDQKLS0tIGEvaG9zdC9saWIyMS9ob3N0X2tleS5jCisrKyBiL2hvc3QvbGliMjEvaG9zdF9rZXkuYwpAQCAtMjMsNiArMjMsNyBAQAogCXsiUlNBMjA0OCIsIFZCMl9TSUdfUlNBMjA0OH0sCiAJeyJSU0E0MDk2IiwgVkIyX1NJR19SU0E0MDk2fSwKIAl7IlJTQTgxOTIiLCBWQjJfU0lHX1JTQTgxOTJ9LAorCXsiUlNBMjA0OEVYUDMiLCBWQjJfU0lHX1JTQTIwNDhfRVhQM30sCiAJezAsIDB9CiB9OwogCkBAIC00MDMsNyArNDA0LDEwIEBACiAJaWYgKHZiMl9yZWFkX2ZpbGUoZmlsZW5hbWUsICZrZXlfZGF0YSwgJmtleV9zaXplKSkKIAkJcmV0dXJuIFZCMl9FUlJPUl9SRUFEX0tFWUJfREFUQTsKIAotCS8qIEd1ZXNzIHRoZSBzaWduYXR1cmUgYWxnb3JpdGhtIGZyb20gdGhlIGtleSBzaXplICovCisJLyogR3Vlc3MgdGhlIHNpZ25hdHVyZSBhbGdvcml0aG0gZnJvbSB0aGUga2V5IHNpemUKKwkgKiBOb3RlOiBUaGlzIG9ubHkgY29uc2lkZXJzIGV4cG9uZW50IEY0IGtleXMsIGFzIHRoZXJlIGlzIG5vIHdheSB0bworCSAqIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXhwIDMgYW5kIEY0IGJhc2VkIG9uIHNpemUuIFZib290IEFQSSAyLjEgaXMKKwkgKiByZXF1aXJlZCB0byBtYWtlIHByb3BlciB1c2Ugb2YgZXhwIDMga2V5cy4gKi8KIAlmb3IgKHNpZ19hbGcgPSBWQjJfU0lHX1JTQTEwMjQ7IHNpZ19hbGcgPD0gVkIyX1NJR19SU0E4MTkyOyBzaWdfYWxnKyspIHsKIAkJaWYgKGtleV9zaXplID09IHZiMl9wYWNrZWRfa2V5X3NpemUoc2lnX2FsZykpCiAJCQlicmVhazsKQEAgLTU2MCwxNyArNTY0LDI3IEBACiAKIGVudW0gdmIyX3NpZ25hdHVyZV9hbGdvcml0aG0gdmIyX3JzYV9zaWdfYWxnKHN0cnVjdCByc2Ffc3QgKnJzYSkKIHsKKwlpbnQgZXhwID0gQk5fZ2V0X3dvcmQocnNhLT5lKTsKIAlpbnQgYml0cyA9IEJOX251bV9iaXRzKHJzYS0+bik7CiAKLQlzd2l0Y2ggKGJpdHMpIHsKLQljYXNlIDEwMjQ6Ci0JCXJldHVybiBWQjJfU0lHX1JTQTEwMjQ7Ci0JY2FzZSAyMDQ4OgotCQlyZXR1cm4gVkIyX1NJR19SU0EyMDQ4OwotCWNhc2UgNDA5NjoKLQkJcmV0dXJuIFZCMl9TSUdfUlNBNDA5NjsKLQljYXNlIDgxOTI6Ci0JCXJldHVybiBWQjJfU0lHX1JTQTgxOTI7CisJc3dpdGNoIChleHApIHsKKwljYXNlIFJTQV8zOgorCQlzd2l0Y2ggKGJpdHMpIHsKKwkJY2FzZSAyMDQ4OgorCQkJcmV0dXJuIFZCMl9TSUdfUlNBMjA0OF9FWFAzOworCQl9CisJCWJyZWFrOworCWNhc2UgUlNBX0Y0OgorCQlzd2l0Y2ggKGJpdHMpIHsKKwkJY2FzZSAxMDI0OgorCQkJcmV0dXJuIFZCMl9TSUdfUlNBMTAyNDsKKwkJY2FzZSAyMDQ4OgorCQkJcmV0dXJuIFZCMl9TSUdfUlNBMjA0ODsKKwkJY2FzZSA0MDk2OgorCQkJcmV0dXJuIFZCMl9TSUdfUlNBNDA5NjsKKwkJY2FzZSA4MTkyOgorCQkJcmV0dXJuIFZCMl9TSUdfUlNBODE5MjsKKwkJfQogCX0KIAogCS8qIG5vIGNsdWUgKi8KZGlmZiAtLWdpdCBhL3Rlc3RzL2NvbW1vbi5zaCBiL3Rlc3RzL2NvbW1vbi5zaAppbmRleCAyYjAxN2NjLi43OGE0N2ZhIDEwMDY0NAotLS0gYS90ZXN0cy9jb21tb24uc2gKKysrIGIvdGVzdHMvY29tbW9uLnNoCkBAIC0yOCw3ICsyOCw3IEBACiBDT0xfU1RPUD0nXEVbMDttJwogCiBoYXNoX2FsZ29zPSggc2hhMSBzaGEyNTYgc2hhNTEyICkKLWtleV9sZW5ndGhzPSggMTAyNCAyMDQ4IDQwOTYgODE5MiApCitrZXlfbGVuZ3Rocz0oIDEwMjQgMjA0OCA0MDk2IDgxOTIgMjA0OF9leHAzICkKIAogZnVuY3Rpb24gaGFwcHkgewogICBlY2hvIC1lICIke0NPTF9HUkVFTn0kKiR7Q09MX1NUT1B9IiAxPiYyCmRpZmYgLS1naXQgYS90ZXN0cy9mdXRpbGl0eS90ZXN0X3Nob3dfcndzaWcuc2ggYi90ZXN0cy9mdXRpbGl0eS90ZXN0X3Nob3dfcndzaWcuc2gKaW5kZXggN2ZmMjU1Ny4uOTE1ODQyZCAxMDA3NTUKLS0tIGEvdGVzdHMvZnV0aWxpdHkvdGVzdF9zaG93X3J3c2lnLnNoCisrKyBiL3Rlc3RzL2Z1dGlsaXR5L3Rlc3Rfc2hvd19yd3NpZy5zaApAQCAtMTMsNyArMTMsNyBAQAogVEVTVEtFWVM9JHtTUkNESVJ9L3Rlc3RzL3Rlc3RrZXlzCiAKICMgRG8gbm90IHRlc3QgODE5MiBhcyB0aGUgc2lnbmF0dXJlIGxlbmd0aCBpcyA+IDEwMjQgYnl0ZXMKLVNJR1M9IjEwMjQgMjA0OCA0MDk2IgorU0lHUz0iMTAyNCAyMDQ4IDQwOTYgMjA0OF9leHAzIgogSEFTSEVTPSJTSEExIFNIQTI1NiBTSEE1MTIiCiAKIHNldCAtbyBwaXBlZmFpbApkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VuX3Rlc3Rfa2V5cy5zaCBiL3Rlc3RzL2dlbl90ZXN0X2tleXMuc2gKaW5kZXggZGJiMTc0MS4uMDQzMTVhYyAxMDA3NTUKLS0tIGEvdGVzdHMvZ2VuX3Rlc3Rfa2V5cy5zaAorKysgYi90ZXN0cy9nZW5fdGVzdF9rZXlzLnNoCkBAIC0yNSw3ICsyNSwxNSBAQAogICAgICAgY29udGludWUKICAgICBmaQogCi0gICAgb3BlbnNzbCBnZW5yc2EgLUY0IC1vdXQgJHtrZXlfYmFzZX0ucGVtICRpCisgICAgIyBFeHRyYWN0IGV4cG9uZW50IGZyb20ga2V5X2xlbmd0aCBuYW1lLCBpZiBuZWNlc3NhcnkKKyAgICBleHA9IkY0IgorICAgIGJpdHM9JGkKKyAgICBpZiBbICIke2kjIypfZXhwfSIgIT0gIiR7aX0iIF07IHRoZW4KKyAgICAgICAgZXhwPSIke2kjIypfZXhwfSIKKyAgICAgICAgYml0cz0iJHtpJSVfZXhwJHtleHB9fSIKKyAgICBmaQorCisgICAgb3BlbnNzbCBnZW5yc2EgLSR7ZXhwfSAtb3V0ICR7a2V5X2Jhc2V9LnBlbSAke2JpdHN9CiAgICAgIyBHZW5lcmF0ZSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSBmcm9tIGtleS4KICAgICBvcGVuc3NsIHJlcSAtYmF0Y2ggLW5ldyAteDUwOSAta2V5ICR7a2V5X2Jhc2V9LnBlbSBcCiAgICAgICAtb3V0ICR7a2V5X2Jhc2V9LmNydApkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdGNhc2VzL3Rlc3RfZmlsZS5yc2EyMDQ4X2V4cDNfc2hhMS5zaWcgYi90ZXN0cy90ZXN0Y2FzZXMvdGVzdF9maWxlLnJzYTIwNDhfZXhwM19zaGExLnNpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWNkM2JhCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGVzdGNhc2VzL3Rlc3RfZmlsZS5yc2EyMDQ4X2V4cDNfc2hhMS5zaWcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdGNhc2VzL3Rlc3RfZmlsZS5yc2EyMDQ4X2V4cDNfc2hhMjU2LnNpZyBiL3Rlc3RzL3Rlc3RjYXNlcy90ZXN0X2ZpbGUucnNhMjA0OF9leHAzX3NoYTI1Ni5zaWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE5MmM4ZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Rlc3RjYXNlcy90ZXN0X2ZpbGUucnNhMjA0OF9leHAzX3NoYTI1Ni5zaWcKQEAgLTAsMCArMSwyIEBACivbILtf8SPZjCU66qVhqAtvbBGBwmxuTE6ohEGkVcqpdTR5DNG3X+kIgTAy+hXbbdSpyiph/7Yu0KqCD9LJ+Of1p2HO3S24ws1mQBY5wQcrieki1/35K3wru1kOeKFINLjw6n4F0sabVlfEPHZPNTqQlvP550A4gOlicCfkWHrpEh1M88hM8alR3/fo/dk0CitKoanVAsl+BTa6INlpy1GDokM5XVPs1mEgcU9uiNwfs2wU2u5feC1pyetug3V5pHoE0Qe2S2kyfHjkvfnUgsnP/RK5SRlWZ7qWtz3C3ay7fsnYR86wjl7cIHWkgzePCFQTlciYID1LayzgJbmlKoXQywpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3RjYXNlcy90ZXN0X2ZpbGUucnNhMjA0OF9leHAzX3NoYTUxMi5zaWcgYi90ZXN0cy90ZXN0Y2FzZXMvdGVzdF9maWxlLnJzYTIwNDhfZXhwM19zaGE1MTIuc2lnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NTQ3NGEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy90ZXN0Y2FzZXMvdGVzdF9maWxlLnJzYTIwNDhfZXhwM19zaGE1MTIuc2lnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3RrZXlzL2tleV9yc2EyMDQ4X2V4cDMuY3J0IGIvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5jcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM4OGFlYQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Rlc3RrZXlzL2tleV9yc2EyMDQ4X2V4cDMuY3J0CkBAIC0wLDAgKzEsMjAgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRFd6Q0NBa09nQXdJQkFnSUpBTytwdnhmLys4RFZNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1FVXhDekFKQmdOVgorQkFZVEFrRlZNUk13RVFZRFZRUUlEQXBUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAorYVdSbmFYUnpJRkIwZVNCTWRHUXdIaGNOTVRjd01qQTNNRGd6TlRRNVdoY05NVGN3TXpBNU1EZ3pOVFE1V2pCRgorTVFzd0NRWURWUVFHRXdKQlZURVRNQkVHQTFVRUNBd0tVMjl0WlMxVGRHRjBaVEVoTUI4R0ExVUVDZ3dZU1c1MAorWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JSUJJREFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUTBBTUlJQgorQ0FLQ0FRRUEzVXZLU21Zczg3enpDam1wd2xTSmxPZHNveis3SkZla1lUYlVpelV3ZitrMjBtejlkMDQyekwzWAorUEZlbndLc053cnFTMCtpSit6d0xNWG1ERzUrSm5oLzRrMXhDcGp6OWdBb0l1VEhZU1IrbkZmdkpCb2NkWmhpWAorTEFaVzFSU2JxWWFaSm42N0pSNEdnYWpybWhKa2sxbk9oWTF5NGtQcUV3dVZiV0ZYNVY1MFppRHRhMGlxVXlwaAorQURiM1oweEJSUzZTalJKQXR5VjJLaVI2b2kxNXFuS0NEOXJ4SU90V0FVTVVqbWhaZVNweFVTNCtpUHNFaDdqNAorb0tsTXlzN1R5Mk5YeHhvMTJmNm9yejB2Sm4zemNhajJYRmdRWk5aRjU2VzVONVZqWElpRFBOWW9OQXJESUNYbQorQmhodEFZUmgrdEdHc1VvdE5LaUM0azRodWZFdlZRSUJBNk5RTUU0d0hRWURWUjBPQkJZRUZIZnhHLys3Ryt6aAorakg0ZDhWcEMvZG5DWFROME1COEdBMVVkSXdRWU1CYUFGSGZ4Ry8rN0cremhqSDRkOFZwQy9kbkNYVE4wTUF3RworQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFNSmUyQ2xEVitEZVF1ZFd6Kyt5VExVegorcWduNlhIU2dQdi9qZ3lXWHhFY2d1aDZHNEdYdUNnRXlra0oybDRaeWI5KzBRdXJPYTQvY0R2MVZ1NTRwNjBaRgorT2hReVgwWUZOVFhJWEprdUZ5MktFQ2xTcFEweWdsckZhUHpCbXBtSlk0TE1SMkRieHplL2YraTk0SGFlUURGZAorU3plOFZ5SnhucWFnQk5YNlFneFdFaFV2SXMvT1Z3a2tKMlpvSzdKa2hYOWdEenhVWjAxRXZGa29zelFOeERneQorRVRGeEJmL3BiWnNwS2l5T1ZvV0NtNE96S1hJQXFScVdYMUdnMkJGVWR4TG9mNlhiRC9GOTZ4Y3NVZ1prVEJ1dQordGhCTVFyQ3hHd21iWmh3bmZvWjBQZ2NhZ0NkcWxMa1VVc09KdWo0QUdESys0WDhSZHpsYzV3YmpQQkFndDlVPQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5rZXliIGIvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5rZXliCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOGM1NjQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLmtleWIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5wZW0gYi90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTMxMjdjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5wZW0KQEAgLTAsMCArMSwyNyBAQAorLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQorTUlJRXBBSUJBQUtDQVFFQTNVdktTbVlzODd6ekNqbXB3bFNKbE9kc296KzdKRmVrWVRiVWl6VXdmK2syMG16OQorZDA0MnpMM1hQRmVud0tzTndycVMwK2lKK3p3TE1YbURHNStKbmgvNGsxeENwano5Z0FvSXVUSFlTUituRmZ2SgorQm9jZFpoaVhMQVpXMVJTYnFZYVpKbjY3SlI0R2dhanJtaEprazFuT2hZMXk0a1BxRXd1VmJXRlg1VjUwWmlEdAorYTBpcVV5cGhBRGIzWjB4QlJTNlNqUkpBdHlWMktpUjZvaTE1cW5LQ0Q5cnhJT3RXQVVNVWptaFplU3B4VVM0KworaVBzRWg3ajRvS2xNeXM3VHkyTlh4eG8xMmY2b3J6MHZKbjN6Y2FqMlhGZ1FaTlpGNTZXNU41VmpYSWlEUE5ZbworTkFyRElDWG1CaGh0QVlSaCt0R0dzVW90TktpQzRrNGh1ZkV2VlFJQkF3S0NBUUVBazRmY01abHpUU2lpQnRFYgorMXVNR1kwVHpGMy9TR0RwdGxpU05zaU4xcXB0NTRaMytUNGw1M2RQazB1VWFnSElKTEh4aDRwc0dwMzFjeTZaWAorWjcreEZCVlFZajJCeENpcEFBYXdlM2FRTUwvRXVWS0dCRm9UbVdXNkhWbVBPTGhueGxtN2J2OG5iaFFFVm5DZAorRVdHWVlqdmZBN09oN0MxR3QxME9TT3VQN2oyNk5SdXIyZ05pdGEvTVQyRkNLeFE2RG51MmxrVGM5STVYa1AyKwordjdCaExHL3prd3ZPY0dlWHRTYm1BWFhoNU9OL2lnU2UwV1p2TUtqMHFsK2Y4Uzd2bmV2b0RPRkllSG03ZGlDTworRWowZldhdkZNQVBPWm9rQnpReWNTdVEwYXdyVjhnTTR4TXBhaEJqd1JjQzNVTW9OTG1sdm84a2Nia3hKMFNidgorQWNMTU13S0JnUUQrWmpTSnlmNk9yNDhmeU9sV0cwL2RvMW1wSm9nb2F3eU9LNW1GM1o3TzZ3Vm0rRE1wWFFzRQorQXBJWnpibE1ham1aUWN2Wi9BUisvbURWMnMzNHg2V0dGa1I3R01JSEhvYUl1QTNRazZqbS9xRmRnY0FtdW1IVQordnRyR0RYK3ZvdERmQmVvSWIrYldDUmpqRDNTZUVwb05qeS8xRFlOUW1Za1JRMHpJSlo5UVV3S0JnUURlc0VMaAorMmtVSGt4T093RHUrQzE0TWpCdFhoU0xNM1VOa3BRNVdwUVlZL01VdHV4WVNHMFR1YnZhaHZuNDZONXVZd0Z0MgorVXR6ZXdGcXp4a3ZrR1dMbVNEMEFtd1pDQnNHR3hmNkpkM2xkYklYeEVwSTBFS2J1ZFRnSXViOWxHU2RqUytkSworblBSbFVPZWFqZ0s3OWJ0QXBnTnFMaGt4OWEwQzVVYnpFYTJzdHdLQmdRQ3BtWGhiMi84SnlsOXFoZkRrRWpVKworYk9ad3hGckZuTE1KY21aWlBtbmZSMWp2VUNJYmsxeXRWd3dSTTlEZG5DWm1LOTA3L1ZoVXFaWGo1elA3TDhPdQordVlMOHV5d0V2d1JiSlY2TERSdEVxY0RwQVNyRWZFRTRmenlFQ1AvS2JJcy9XVWF3U3Bua0JoQ1hYNk1VREdhegordE1xalhsZUxFUVlMZ2pNd0dSVGdOd0tCZ1FDVWRZSHI1dGl2dDJKZkt0SitzajZ6Q0JJNldNSGQ2TmVZYmdtUAorR0s2N1V5NGVmTGxoWjROSm4wOFdmdjdSZW1lN0t1ZWtOejNwMVpITkx0MUN1NWRFTUNpckVnUXNCSUVFZy84RworVDZZK1NGbExZYmJOWUc5Sm8zcXdlOVR1RU1UczNVVGNhS0x1TmUrOFhxeDlUbnpWeEFKR3lXWWhUbk5YUTRTaQorQzhrZHp3S0JnUUNtZmJLSHl6WGEwRTFkRlFLVTU5aFhCaFNLQnA2WnZEL3BGNUVkNHRaVzB1YmRDVnM3NjY1cAorY2RpNWxqcEpzanFIeldUbjhUTGRiWFoyallQUE5UQzg5d1o4RjFsclBIQ1l6L0lmbm9haGxjYnA3T0lpSWNXeAorUzZZVHp1RmRweEFBZHdzdFk5MUxNeHp6TVptNDdoWlV3L0t6RVZmeklwZHlMYmVDb3VvaHpnPT0KKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLnNoYTEudmJwcml2ayBiL3Rlc3RzL3Rlc3RrZXlzL2tleV9yc2EyMDQ4X2V4cDMuc2hhMS52YnByaXZrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1N2E1M2EKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLnNoYTEudmJwcml2awpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLnNoYTEudmJwdWJrIGIvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5zaGExLnZicHViawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjE3Y2U5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5zaGExLnZicHViawpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLnNoYTI1Ni52YnByaXZrIGIvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5zaGEyNTYudmJwcml2awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjEwYzczCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5zaGEyNTYudmJwcml2awpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLnNoYTI1Ni52YnB1YmsgYi90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLnNoYTI1Ni52YnB1YmsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBiZmNmNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Rlc3RrZXlzL2tleV9yc2EyMDQ4X2V4cDMuc2hhMjU2LnZicHViawpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLnNoYTUxMi52YnByaXZrIGIvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5zaGE1MTIudmJwcml2awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTFmODYyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvdGVzdGtleXMva2V5X3JzYTIwNDhfZXhwMy5zaGE1MTIudmJwcml2awpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLnNoYTUxMi52YnB1YmsgYi90ZXN0cy90ZXN0a2V5cy9rZXlfcnNhMjA0OF9leHAzLnNoYTUxMi52YnB1YmsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI5ZDJjMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3Rlc3RrZXlzL2tleV9yc2EyMDQ4X2V4cDMuc2hhNTEyLnZicHViawpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS91dGlsaXR5L2R1bXBSU0FQdWJsaWNLZXkuYyBiL3V0aWxpdHkvZHVtcFJTQVB1YmxpY0tleS5jCmluZGV4IGIzYjdiOTYuLmZjMjM4ZDcgMTAwNjQ0Ci0tLSBhL3V0aWxpdHkvZHVtcFJTQVB1YmxpY0tleS5jCisrKyBiL3V0aWxpdHkvZHVtcFJTQVB1YmxpY0tleS5jCkBAIC0yMyw4ICsyMyw5IEBACiAgIGludCBwdWJsaWNfZXhwb25lbnQgPSBCTl9nZXRfd29yZChrZXktPmUpOwogICBpbnQgbW9kdWx1cyA9IEJOX251bV9iaXRzKGtleS0+bik7CiAKLSAgaWYgKHB1YmxpY19leHBvbmVudCAhPSA2NTUzNykgewotICAgIGZwcmludGYoc3RkZXJyLCAiV0FSTklORzogUHVibGljIGV4cG9uZW50IHNob3VsZCBiZSA2NTUzNyAoYnV0IGlzICVkKS5cbiIsCisgIGlmIChwdWJsaWNfZXhwb25lbnQgIT0gMyAmJiBwdWJsaWNfZXhwb25lbnQgIT0gNjU1MzcpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICJXQVJOSU5HOiBQdWJsaWMgZXhwb25lbnQgc2hvdWxkIGJlIDMgb3IgNjU1MzcgKGJ1dCBpcyAlZCkuXG4iLAogICAgICAgICAgICAgcHVibGljX2V4cG9uZW50KTsKICAgfQogCg==