ZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQppbmRleCA0NmE0MGFkLi5kNTlmMzJhIDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUKKysrIGIvc3JjL01ha2VmaWxlCkBAIC00MzIsNyArNDMyLDcgQEAKICNDT05GX09QVF9GRUFUID0gLS13aXRoLWZlYXR1cmVzPXNtYWxsCiAjQ09ORl9PUFRfRkVBVCA9IC0td2l0aC1mZWF0dXJlcz1ub3JtYWwKICNDT05GX09QVF9GRUFUID0gLS13aXRoLWZlYXR1cmVzPWJpZwotQ09ORl9PUFRfRkVBVCA9IC0td2l0aC1mZWF0dXJlcz1odWdlCisjQ09ORl9PUFRfRkVBVCA9IC0td2l0aC1mZWF0dXJlcz1odWdlCiAKICMgQ09NUElMRUQgQlkgLSBGb3IgaW5jbHVkaW5nIGEgc3BlY2lmaWMgZS1tYWlsIGFkZHJlc3MgZm9yICI6dmVyc2lvbiIuCiAjQ09ORl9PUFRfQ09NUEJZID0gIi0td2l0aC1jb21waWxlZGJ5PUpvaG4gRG9lIDxKb2huRG9lQHlhaG9vLmNvbT4iCkBAIC00OTMsNyArNDkzLDcgQEAKIAogIyBPZnRlbiB1c2VkIGZvciBHQ0M6IG1peGVkIG9wdGltaXppbmcsIGxvdCBvZiBvcHRpbWl6aW5nLCBkZWJ1Z2dpbmcKICNDRkxBR1MgPSAtZyAtTzIgLWZuby1zdHJlbmd0aC1yZWR1Y2UgLVdhbGwgLVdzaGFkb3cgLVdtaXNzaW5nLXByb3RvdHlwZXMKLUNGTEFHUyA9IC1nIC1PMiAtZm5vLXN0cmVuZ3RoLXJlZHVjZSAtV2FsbCAtV21pc3NpbmctcHJvdG90eXBlcworI0NGTEFHUyA9IC1nIC1PMiAtZm5vLXN0cmVuZ3RoLXJlZHVjZSAtV2FsbCAtV21pc3NpbmctcHJvdG90eXBlcwogI0NGTEFHUyA9IC1PNiAtZm5vLXN0cmVuZ3RoLXJlZHVjZSAtV2FsbCAtV3NoYWRvdyAtV21pc3NpbmctcHJvdG90eXBlcwogI0NGTEFHUyA9IC1nIC1EREVCVUcgLVdhbGwgLVdzaGFkb3cgLVdtaXNzaW5nLXByb3RvdHlwZXMKICNDRkxBR1MgPSAtZyAtTzIgLURTVEFSVFVQVElNRT1cInZpbXN0YXJ0dXBcIiAtZm5vLXN0cmVuZ3RoLXJlZHVjZSAtV2FsbCAtV21pc3NpbmctcHJvdG90eXBlcwpkaWZmIC0tZ2l0IGEvc3JjL2J1ZmZlci5jIGIvc3JjL2J1ZmZlci5jCmluZGV4IDgzYjU3MGYuLjI3ZjY0YmQgMTAwNjQ0Ci0tLSBhL3NyYy9idWZmZXIuYworKysgYi9zcmMvYnVmZmVyLmMKQEAgLTQ1NzksNyArNDU3OSw3IEBACiAgICAgfQogI2VuZGlmCiAgICAgaWYgKGJ1Zi0+Yl9mbmFtZSA9PSBOVUxMKQotCXJldHVybiBfKCJbTm8gRmlsZV0iKTsKKwlyZXR1cm4gXygiW05vIE5hbWVdIik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9ldmFsLmMgYi9zcmMvZXZhbC5jCmluZGV4IDJlMzM5ZTYuLjU2MTg1N2EgMTAwNjQ0Ci0tLSBhL3NyYy9ldmFsLmMKKysrIGIvc3JjL2V2YWwuYwpAQCAtNTk5LDYgKzU5OSwyMCBAQAogfQogCiAvKgorICogU2tpcCBvdmVyIGFuIGV4cHJlc3Npb24gYXQgIipwcCIuCisgKiBSZXR1cm4gRkFJTCBmb3IgYW4gZXJyb3IsIE9LIG90aGVyd2lzZS4KKyAqLworICAgIGludAorc2tpcF9leHByKHBwKQorICAgIGNoYXJfdQkqKnBwOworeworICAgIHZhcgkJcmV0dmFyOworCisgICAgKnBwID0gc2tpcHdoaXRlKCpwcCk7CisgICAgcmV0dXJuIGV2YWwxKHBwLCAmcmV0dmFyLCBGQUxTRSk7Cit9CisKKy8qCiAgKiBUb3AgbGV2ZWwgZXZhbHVhdGlvbiBmdW5jdGlvbiwgcmV0dXJuaW5nIGEgc3RyaW5nLgogICogUmV0dXJuIHBvaW50ZXIgdG8gYWxsb2NhdGVkIG1lbW9yeSwgb3IgTlVMTCBmb3IgZmFpbHVyZS4KICAqLwpAQCAtMzM3NSw2ICszMzg5LDIwIEBACiAJICAgIGJ1ZiA9IGJ1Zmxpc3RfZmluZG5hbWUobmFtZSk7CiAJICAgIHZpbV9mcmVlKG5hbWUpOwogCX0KKwlpZiAoYnVmID09IE5VTEwpCisJeworCSAgICAvKiBObyBmdWxsIHBhdGggbmFtZSBtYXRjaCwgdHJ5IGEgbWF0Y2ggd2l0aCBhIFVSTCBvciBhICJub2ZpbGUiCisJICAgICAqIGJ1ZmZlciwgdGhlc2UgZG9uJ3QgdXNlIHRoZSBmdWxsIHBhdGguICovCisJICAgIGZvciAoYnVmID0gZmlyc3RidWY7IGJ1ZiAhPSBOVUxMOyBidWYgPSBidWYtPmJfbmV4dCkKKwkJaWYgKGJ1Zi0+Yl9mbmFtZSAhPSBOVUxMCisJCQkmJiAocGF0aF93aXRoX3VybChidWYtPmJfZm5hbWUpCisjaWZkZWYgRkVBVF9RVUlDS0ZJWAorCQkJICAgIHx8IGJ0X25vZmlsZShidWYpCisjZW5kaWYKKwkJCSAgICkKKwkJCSYmIFNUUkNNUChidWYtPmJfZm5hbWUsIGF2YXItPnZhcl92YWwudmFyX3N0cmluZykgPT0gMCkKKwkJICAgIGJyZWFrOworCX0KICAgICB9CiAgICAgcmV0dXJuIGJ1ZjsKIH0KZGlmZiAtLWdpdCBhL3NyYy9leF9jbWRzLmMgYi9zcmMvZXhfY21kcy5jCmluZGV4IGU2MDM2Y2EuLmFkNjEyY2QgMTAwNjQ0Ci0tLSBhL3NyYy9leF9jbWRzLmMKKysrIGIvc3JjL2V4X2NtZHMuYwpAQCAtNDU3Myw3ICs0NTczLDcgQEAKICAgICBidWZfVAkqYnVmOwogI2lmZGVmIEZFQVRfTVVMVElfTEFORwogICAgIGludAkJbGVuOwotICAgIGNoYXJfdQkqbGFuZyA9IE5VTEw7CisgICAgY2hhcl91CSpsYW5nOwogI2VuZGlmCiAKICAgICBpZiAoZWFwICE9IE5VTEwpCkBAIC00NjEzLDEzICs0NjEzLDcgQEAKIAogI2lmZGVmIEZFQVRfTVVMVElfTEFORwogICAgIC8qIENoZWNrIGZvciBhIHNwZWNpZmllZCBsYW5ndWFnZSAqLwotICAgIGxlbiA9IFNUUkxFTihhcmcpOwotICAgIGlmIChsZW4gPj0gMyAmJiBhcmdbbGVuIC0gM10gPT0gJ0AnICYmIEFTQ0lJX0lTQUxQSEEoYXJnW2xlbiAtIDJdKQotCQkJCQkgICAgICAgJiYgQVNDSUlfSVNBTFBIQShhcmdbbGVuIC0gMV0pKQotICAgIHsKLQlsYW5nID0gYXJnICsgbGVuIC0gMjsKLQlsYW5nWy0xXSA9IE5VTDsJCS8qIHJlbW92ZSB0aGUgJ0AnICovCi0gICAgfQorICAgIGxhbmcgPSBjaGVja19oZWxwX2xhbmcoYXJnKTsKICNlbmRpZgogCiAgICAgLyogV2hlbiBubyBhcmd1bWVudCBnaXZlbiBnbyB0byB0aGUgaW5kZXguICovCkBAIC00NzQ4LDYgKzQ3NDIsMjggQEAKIH0KIAogCisjaWYgZGVmaW5lZChGRUFUX01VTFRJX0xBTkcpIHx8IGRlZmluZWQoUFJPVE8pCisvKgorICogSW4gYW4gYXJndW1lbnQgc2VhcmNoIGZvciBhIGxhbmd1YWdlIHNwZWNpZmllcnMgaW4gdGhlIGZvcm0gIkB4eCIuCisgKiBDaGFuZ2VzIHRoZSAiQCIgdG8gTlVMIGlmIGZvdW5kLCBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gInh4Ii4KKyAqIFJldHVybnMgTlVMTCBpZiBub3QgZm91bmQuCisgKi8KKyAgICBjaGFyX3UgKgorY2hlY2tfaGVscF9sYW5nKGFyZykKKyAgICBjaGFyX3UgKmFyZzsKK3sKKyAgICBpbnQgbGVuID0gU1RSTEVOKGFyZyk7CisKKyAgICBpZiAobGVuID49IDMgJiYgYXJnW2xlbiAtIDNdID09ICdAJyAmJiBBU0NJSV9JU0FMUEhBKGFyZ1tsZW4gLSAyXSkKKwkJCQkJICAgICAgICYmIEFTQ0lJX0lTQUxQSEEoYXJnW2xlbiAtIDFdKSkKKyAgICB7CisJYXJnW2xlbiAtIDNdID0gTlVMOwkJLyogcmVtb3ZlIHRoZSAnQCcgKi8KKwlyZXR1cm4gYXJnICsgbGVuIC0gMjsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKwogLyoKICAqIFJldHVybiBhIGhldXJpc3RpYyBpbmRpY2F0aW5nIGhvdyB3ZWxsIHRoZSBnaXZlbiBzdHJpbmcgbWF0Y2hlcy4gIFRoZQogICogc21hbGxlciB0aGUgbnVtYmVyLCB0aGUgYmV0dGVyIHRoZSBtYXRjaC4gIFRoaXMgaXMgdGhlIG9yZGVyIG9mIHByaW9yaXRpZXMsCkBAIC01MTgwLDcgKzUxOTYsOSBAQAogICAgIGdhcnJheV9UCWdhOwogICAgIGludAkJaSwgajsKICAgICBpbnQJCWxlbjsKKyNpZmRlZiBGRUFUX01VTFRJX0xBTkcKICAgICBjaGFyX3UJbGFuZ1syXTsKKyNlbmRpZgogICAgIGNoYXJfdQlleHRbNV07CiAgICAgY2hhcl91CWZuYW1lWzhdOwogICAgIGludAkJZmlsZWNvdW50OwpkaWZmIC0tZ2l0IGEvc3JjL2V4X2RvY21kLmMgYi9zcmMvZXhfZG9jbWQuYwppbmRleCBjNGI5MDEyLi5hZjhkM2ZjIDEwMDY0NAotLS0gYS9zcmMvZXhfZG9jbWQuYworKysgYi9zcmMvZXhfZG9jbWQuYwpAQCAtMjMxOSw4ICsyMzE5LDggQEAKIAl9CiAgICAgfQogCQkJCQkJLyogbm8gYXJndW1lbnRzIGFsbG93ZWQgKi8KLSAgICBpZiAoIW5pICYmICEoZWEuYXJndCAmIEVYVFJBKSAmJiAqZWEuYXJnICE9IE5VTCAmJgotCQkJCSB2aW1fc3RyY2hyKChjaGFyX3UgKikifFwiIiwgKmVhLmFyZykgPT0gTlVMTCkKKyAgICBpZiAoIW5pICYmICEoZWEuYXJndCAmIEVYVFJBKSAmJiAqZWEuYXJnICE9IE5VTAorCQkJICAgICAgJiYgdmltX3N0cmNocigoY2hhcl91ICopInxcIiIsICplYS5hcmcpID09IE5VTEwpCiAgICAgewogCWVycm9ybXNnID0gKGNoYXJfdSAqKV8oZV90cmFpbGluZyk7CiAJZ290byBkb2VuZDsKQEAgLTM4ODUsNiArMzg4NSwxNyBAQAogICAgIGhhc193aWxkY2FyZHMgPSBtY2hfaGFzX3dpbGRjYXJkKGVhcC0+YXJnKTsKICAgICBmb3IgKHAgPSBlYXAtPmFyZzsgKnA7ICkKICAgICB7CisjaWZkZWYgRkVBVF9FVkFMCisJLyogU2tpcCBvdmVyIGA9ZXhwcmAsIHdpbGRjYXJkcyBpbiBpdCBhcmUgbm90IGV4cGFuZGVkLiAqLworCWlmIChwWzBdID09ICdgJyAmJiBwWzFdID09ICc9JykKKwl7CisJICAgIHAgKz0gMjsKKwkgICAgKHZvaWQpc2tpcF9leHByKCZwKTsKKwkgICAgaWYgKCpwID09ICdgJykKKwkJKytwOworCSAgICBjb250aW51ZTsKKwl9CisjZW5kaWYKIAkvKgogCSAqIFF1aWNrIGNoZWNrIGlmIHRoaXMgY2Fubm90IGJlIHRoZSBzdGFydCBvZiBhIHNwZWNpYWwgc3RyaW5nLgogCSAqIEFsc28gcmVtb3ZlcyBiYWNrc2xhc2ggYmVmb3JlICclJywgJyMnIGFuZCAnPCcuCkBAIC00MTU3LDYgKzQxNjgsMTggQEAKIAkgICAgaWYgKCpwID09IE5VTCkJCS8qIHN0b3AgYXQgTlVMIGFmdGVyIENUUkwtViAqLwogCQlicmVhazsKIAl9CisKKyNpZmRlZiBGRUFUX0VWQUwKKwkvKiBTa2lwIG92ZXIgYD1leHByYCB3aGVuIHdpbGRjYXJkcyBhcmUgZXhwYW5kZWQuICovCisJZWxzZSBpZiAocFswXSA9PSAnYCcgJiYgcFsxXSA9PSAnPScpCisJeworCSAgICBwICs9IDI7CisJICAgICh2b2lkKXNraXBfZXhwcigmcCk7CisJICAgIGlmICgqcCA9PSAnYCcpCisJCSsrcDsKKwl9CisjZW5kaWYKKwogCS8qIENoZWNrIGZvciAnIic6IHN0YXJ0IG9mIGNvbW1lbnQgb3IgJ3wnOiBuZXh0IGNvbW1hbmQgKi8KIAkvKiA6QCIgYW5kIDoqIiBkbyBub3Qgc3RhcnQgYSBjb21tZW50IQogCSAqIDpyZWRpciBAIiBkb2Vzbid0IGVpdGhlci4gKi8KZGlmZiAtLWdpdCBhL3NyYy9maWxlaW8uYyBiL3NyYy9maWxlaW8uYwppbmRleCBlOGQ0ZTI3Li5hMDk0N2FhIDEwMDY0NAotLS0gYS9zcmMvZmlsZWlvLmMKKysrIGIvc3JjL2ZpbGVpby5jCkBAIC01MjkwLDggKzUyOTAsMTEgQEAKIAkgICAgfQogCSAgICBpZiAocCA9PSBOVUxMIHx8IGJ1Zi0+Yl9mbmFtZSA9PSBOVUxMKQogCQlidWYtPmJfZm5hbWUgPSBidWYtPmJfZmZuYW1lOwotCSAgICBtZl9mdWxsbmFtZShidWYtPmJfbWwubWxfbWZwKTsKIAl9CisKKwkvKiBBbHdheXMgbWFrZSB0aGUgc3dhcCBmaWxlIG5hbWUgYSBmdWxsIHBhdGgsIGEgIm5vZmlsZSIgYnVmZmVyIG1heQorCSAqIGFsc28gaGF2ZSBhIHN3YXAgZmlsZS4gKi8KKwltZl9mdWxsbmFtZShidWYtPmJfbWwubWxfbWZwKTsKICAgICB9CiAjaWZkZWYgRkVBVF9XSU5ET1dTCiAgICAgc3RhdHVzX3JlZHJhd19hbGwoKTsKZGlmZiAtLWdpdCBhL3NyYy9ndWlfbWFjLmMgYi9zcmMvZ3VpX21hYy5jCmluZGV4IDJiNzRjNjMuLmU2YTg0MzMgMTAwNjQ0Ci0tLSBhL3NyYy9ndWlfbWFjLmMKKysrIGIvc3JjL2d1aV9tYWMuYwpAQCAtNzQsNiArNzQsOSBAQAogIyBlbmRpZgogI2VuZGlmCiAKKy8qIFZpbSdzIFNjcmFwIGZsYXZvci4gKi8KKyNkZWZpbmUgVklNU0NSQVBGTEFWT1IgJ1ZJTSEnCisKIC8qIENBUkJPTiB2ZXJzaW9uIG9ubHkgdGVzdGVkIHdpdGggUHJvamVjdCBCdWlsZGVyIHVuZGVyIE1hY09TIFggKi8KICN1bmRlZiBVU0VfQ0FSQk9OSVpFRAogI2lmIChkZWZpbmVkKF9fQVBQTEVfQ0NfXykgfHwgZGVmaW5lZChfX01SQ19fKSkgJiYgZGVmaW5lZChUQVJHRVRfQVBJX01BQ19DQVJCT04pCkBAIC0zMjYsNyArMzI5LDcgQEAKICAqLwogCiAjaWZkZWYgVVNFX0FFVkVOVAotT1NFcnIgSGFuZGxlVW51c2VkUGFybXMgKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCk7CitPU0VyciBIYW5kbGVVbnVzZWRQYXJtcyhjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQpOwogI2VuZGlmCiAKIC8qCkBAIC01MTEsNyArNTE0LDcgQEAKICAgICBpZiAoKmVycm9yKQogICAgIHsKICNpZmRlZiBVU0VfU0lPVVgKLQlwcmludGYgKCJmbmFtZV9mcm9tX0FFRGVzYzogQUVDb3VudEl0ZW1zIGVycm9yOiAlZFxuIiwgZXJyb3IpOworCXByaW50ZigiZm5hbWVfZnJvbV9BRURlc2M6IEFFQ291bnRJdGVtcyBlcnJvcjogJWRcbiIsIGVycm9yKTsKICNlbmRpZgogCXJldHVybihmbmFtZXMpOwogICAgIH0KQEAgLTUzNSwxMyArNTM4LDEzIEBACiAJICAgIC8qIENhbGxlciBpcyBhYmxlIHRvIGNsZWFuIHVwICovCiAJICAgIC8qIFRPRE86IFNob3VsZCBiZSBjbGVhbiB1cCBvciBub3Q/IEZvciBzYWZldHkuICovCiAjaWZkZWYgVVNFX1NJT1VYCi0JICAgIHByaW50ZiAoImFldnRfb2RvYzogQUVHZXROdGhQdHIgZXJyb3I6ICVkXG4iLCBuZXdFcnJvcik7CisJICAgIHByaW50ZigiYWV2dF9vZG9jOiBBRUdldE50aFB0ciBlcnJvcjogJWRcbiIsIG5ld0Vycm9yKTsKICNlbmRpZgogCSAgICByZXR1cm4oZm5hbWVzKTsKIAl9CiAKIAkvKiBDb252ZXJ0IHRoZSBGU1NwZWMgdG8gYSBwYXRobmFtZSAqLwotCWZuYW1lc1tmaWxlQ291bnQgLSAxXSA9IEZ1bGxQYXRoRnJvbUZTU3BlY19zYXZlIChmaWxlVG9PcGVuKTsKKwlmbmFtZXNbZmlsZUNvdW50IC0gMV0gPSBGdWxsUGF0aEZyb21GU1NwZWNfc2F2ZShmaWxlVG9PcGVuKTsKICAgICB9CiAKICAgICByZXR1cm4gKGZuYW1lcyk7CkBAIC01NzQsNyArNTc3LDcgQEAKICAqIFdoZW4gdGhlIGVkaXRvciByZWNlaXZlcyB0aGlzIGV2ZW50LCBkZXRlcm1pbmUgd2hldGhlciB0aGUgc3BlY2lmaWVkCiAgKiBmaWxlIGlzIG9wZW4uIElmIGl0IGlzLCByZXR1cm4gdGhlIG1vZGlmaWNhdGlvbiBkYXRlL3RpbWUgZm9yIHRoYXQgZmlsZQogICogaW4gdGhlIGFwcHJvcHJpYXRlIGxvY2F0aW9uIHNwZWNpZmllZCBpbiB0aGUgc3RydWN0dXJlLiBJZiB0aGUgZmlsZSBpcwotICogbm90IG9wZW5lZCwgcHV0IHRoZSB2YWx1ZSBmbmZFcnIgKGZpbGUgbm90IGZvdW5kKSBpbiB0aGF0IGxvY2F0aW9uLgorICogbm90IG9wZW5lZCwgcHV0IHRoZSB2YWx1ZSBmbmZFcnIoZmlsZSBub3QgZm91bmQpIGluIHRoYXQgbG9jYXRpb24uCiAgKgogICovCiAKQEAgLTU5MSw3ICs1OTQsOCBAQAogIyBwcmFnbWEgb3B0aW9ucyBhbGlnbj1yZXNldAogI2VuZGlmCiAKLXBhc2NhbCBPU0VyciBIYW5kbGVfS0FITF9TUkNIX0FFIChjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKKyAgICBwYXNjYWwgT1NFcnIKK0hhbmRsZV9LQUhMX1NSQ0hfQUUoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCiB7CiAgICAgT1NFcnIJZXJyb3IgPSBub0VycjsKICAgICBidWZfVAkqYnVmOwpAQCAtNjA0LDE2ICs2MDgsMTYgQEAKICAgICBpZiAoZXJyb3IpCiAgICAgewogI2lmZGVmIFVTRV9TSU9VWAotCXByaW50ZiAoIktBSExfU1JDSDogQUVHZXRQYXJhbVB0ciBlcnJvcjogJWRcbiIsIGVycm9yKTsKKwlwcmludGYoIktBSExfU1JDSDogQUVHZXRQYXJhbVB0ciBlcnJvcjogJWRcbiIsIGVycm9yKTsKICNlbmRpZgogCXJldHVybihlcnJvcik7CiAgICAgfQogCi0gICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyAodGhlQUV2ZW50KTsKKyAgICBlcnJvciA9IEhhbmRsZVVudXNlZFBhcm1zKHRoZUFFdmVudCk7CiAgICAgaWYgKGVycm9yKQogICAgIHsKICNpZmRlZiBVU0VfU0lPVVgKLQlwcmludGYgKCJLQUhMX1NSQ0g6IEhhbmRsZVVudXNlZFBhcm1zIGVycm9yOiAlZFxuIiwgZXJyb3IpOworCXByaW50ZigiS0FITF9TUkNIOiBIYW5kbGVVbnVzZWRQYXJtcyBlcnJvcjogJWRcbiIsIGVycm9yKTsKICNlbmRpZgogCXJldHVybihlcnJvcik7CiAgICAgfQpAQCAtNjM0LDEwICs2MzgsMTAgQEAKIAkqU2VhcmNoRGF0YS50aGVEYXRlID0gYnVmLT5iX210aW1lOwogCiAjaWZkZWYgVVNFX1NJT1VYCi0gICAgcHJpbnRmICgiS0FITF9TUkNIOiBmaWxlIFwiJSNzXCIgeyVkfSIsIFNlYXJjaERhdGEudGhlRmlsZS5uYW1lLFNlYXJjaERhdGEudGhlRmlsZS5wYXJJRCk7CisgICAgcHJpbnRmKCJLQUhMX1NSQ0g6IGZpbGUgXCIlI3NcIiB7JWR9IiwgU2VhcmNoRGF0YS50aGVGaWxlLm5hbWUsU2VhcmNoRGF0YS50aGVGaWxlLnBhcklEKTsKICAgICBpZiAoZm91bmRGaWxlID09IGZhbHNlKQotCXByaW50ZiAoIiBOT1QiKTsKLSAgICBwcmludGYgKCIgZm91bmQuIFtkYXRlICVseCwgJWx4XVxuIiwgKlNlYXJjaERhdGEudGhlRGF0ZSwgYnVmLT5iX210aW1lX3JlYWQpOworCXByaW50ZigiIE5PVCIpOworICAgIHByaW50ZigiIGZvdW5kLiBbZGF0ZSAlbHgsICVseF1cbiIsICpTZWFyY2hEYXRhLnRoZURhdGUsIGJ1Zi0+Yl9tdGltZV9yZWFkKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGVycm9yOwpAQCAtNjg0LDcgKzY4OCw4IEBACiAjIHByYWdtYSBvcHRpb25zIGFsaWduPXJlc2V0CiAjZW5kaWYKIAotcGFzY2FsIE9TRXJyIEhhbmRsZV9LQUhMX01PRF9BRSAoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCisgICAgcGFzY2FsIE9TRXJyCitIYW5kbGVfS0FITF9NT0RfQUUoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCiB7CiAgICAgT1NFcnIJZXJyb3IgPSBub0VycjsKICAgICBBRURlc2NMaXN0CXJlcGx5TGlzdDsKQEAgLTY5NCwxMSArNjk5LDExIEBACiAKICAgICB0aGVGaWxlLnNhdmVkID0gMDsKIAotICAgIGVycm9yID0gSGFuZGxlVW51c2VkUGFybXMgKHRoZUFFdmVudCk7CisgICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyh0aGVBRXZlbnQpOwogICAgIGlmIChlcnJvcikKICAgICB7CiAjaWZkZWYgVVNFX1NJT1VYCi0JcHJpbnRmICgiS0FITF9NT0Q6IEhhbmRsZVVudXNlZFBhcm1zIGVycm9yOiAlZFxuIiwgZXJyb3IpOworCXByaW50ZigiS0FITF9NT0Q6IEhhbmRsZVVudXNlZFBhcm1zIGVycm9yOiAlZFxuIiwgZXJyb3IpOwogI2VuZGlmCiAJcmV0dXJuKGVycm9yKTsKICAgICB9CkBAIC03MTIsNyArNzE3LDcgQEAKICAgICBpZiAoZXJyb3IpCiAgICAgewogI2lmZGVmIFVTRV9TSU9VWAotCXByaW50ZiAoIktBSExfTU9EOiBBRUNyZWF0ZUxpc3QgZXJyb3I6ICVkXG4iLCBlcnJvcik7CisJcHJpbnRmKCJLQUhMX01PRDogQUVDcmVhdGVMaXN0IGVycm9yOiAlZFxuIiwgZXJyb3IpOwogI2VuZGlmCiAJcmV0dXJuKGVycm9yKTsKICAgICB9CkBAIC03MjAsMTIgKzcyNSwxMiBAQAogI2lmIDAKICAgICBlcnJvciA9IEFFQ291bnRJdGVtcygmcmVwbHlMaXN0LCAmbnVtRmlsZXMpOwogI2lmZGVmIFVTRV9TSU9VWAotICAgIHByaW50ZiAoIktBSExfTU9EIFJlcGx5TGlzdDogJXggJXhcbiIsIHJlcGx5TGlzdC5kZXNjcmlwdG9yVHlwZSwgcmVwbHlMaXN0LmRhdGFIYW5kbGUpOwotICAgIHByaW50ZiAoIktBSExfTU9EIEl0ZW1Jbkxpc3Q6ICVkXG4iLCBudW1GaWxlcyk7CisgICAgcHJpbnRmKCJLQUhMX01PRCBSZXBseUxpc3Q6ICV4ICV4XG4iLCByZXBseUxpc3QuZGVzY3JpcHRvclR5cGUsIHJlcGx5TGlzdC5kYXRhSGFuZGxlKTsKKyAgICBwcmludGYoIktBSExfTU9EIEl0ZW1Jbkxpc3Q6ICVkXG4iLCBudW1GaWxlcyk7CiAjZW5kaWYKIAotICAgIC8qIEFFUHV0S2V5RGVzYyAoJnJlcGx5TGlzdCwga2V5QUVQbmplY3QsICZhRGVzYykKLSAgICAgKiBBRVB1dEtleVB0ciAgKCZyZXBseUxpc3QsIGtleUFFUG9zaXRpb24sIHR5cGVDaGFyLCAoUHRyKSZ0aGVUeXBlLAorICAgIC8qIEFFUHV0S2V5RGVzYygmcmVwbHlMaXN0LCBrZXlBRVBuamVjdCwgJmFEZXNjKQorICAgICAqIEFFUHV0S2V5UHRyKCZyZXBseUxpc3QsIGtleUFFUG9zaXRpb24sIHR5cGVDaGFyLCAoUHRyKSZ0aGVUeXBlLAogICAgICAqIHNpemVvZihEZXNjVHlwZSkpCiAgICAgICovCiAKQEAgLTczOSwzNyArNzQ0LDM3IEBACiAJICAgIC8qIEFkZCB0aGlzIGZpbGUgdG8gdGhlIGxpc3QgKi8KIAkgICAgdGhlRmlsZS50aGVGaWxlID0gYnVmLT5iX0ZTU3BlYzsKIAkgICAgdGhlRmlsZS50aGVEYXRlID0gYnVmLT5iX210aW1lOwotLyoJICAgIHRoZUZpbGUudGhlRGF0ZSA9IHRpbWUgKE5VTEwpICYgKHRpbWVfdCkgMHhGRkZGRkZGMDsgKi8KLQkgICAgZXJyb3IgPSBBRVB1dFB0ciAoJnJlcGx5TGlzdCwgbnVtRmlsZXMsIHR5cGVDaGFyLCAoUHRyKSAmdGhlRmlsZSwgc2l6ZW9mKHRoZUZpbGUpKTsKKy8qCSAgICB0aGVGaWxlLnRoZURhdGUgPSB0aW1lKE5VTEwpICYgKHRpbWVfdCkgMHhGRkZGRkZGMDsgKi8KKwkgICAgZXJyb3IgPSBBRVB1dFB0cigmcmVwbHlMaXN0LCBudW1GaWxlcywgdHlwZUNoYXIsIChQdHIpICZ0aGVGaWxlLCBzaXplb2YodGhlRmlsZSkpOwogI2lmZGVmIFVTRV9TSU9VWAogCSAgICBpZiAobnVtRmlsZXMgPT0gMCkKLQkJcHJpbnRmICgiS0FITF9NT0Q6ICIpOworCQlwcmludGYoIktBSExfTU9EOiAiKTsKIAkgICAgZWxzZQotCQlwcmludGYgKCIsICIpOwotCSAgICBwcmludGYgKCJcIiUjc1wiIHslZH0gW2RhdGUgJWx4LCAlbHhdIiwgdGhlRmlsZS50aGVGaWxlLm5hbWUsIHRoZUZpbGUudGhlRmlsZS5wYXJJRCwgdGhlRmlsZS50aGVEYXRlLCBidWYtPmJfbXRpbWVfcmVhZCk7CisJCXByaW50ZigiLCAiKTsKKwkgICAgcHJpbnRmKCJcIiUjc1wiIHslZH0gW2RhdGUgJWx4LCAlbHhdIiwgdGhlRmlsZS50aGVGaWxlLm5hbWUsIHRoZUZpbGUudGhlRmlsZS5wYXJJRCwgdGhlRmlsZS50aGVEYXRlLCBidWYtPmJfbXRpbWVfcmVhZCk7CiAJICAgIGlmIChlcnJvcikKLQkJcHJpbnRmICgiICglZCkiLCBlcnJvcik7CisJCXByaW50ZigiICglZCkiLCBlcnJvcik7CiAJICAgIG51bUZpbGVzKys7CiAjZW5kaWYKIAl9OwogCiAjaWZkZWYgVVNFX1NJT1VYCi0gICAgcHJpbnRmICgiXG4iKTsKKyAgICBwcmludGYoIlxuIik7CiAjZW5kaWYKIAogI2lmIDAKICAgICBlcnJvciA9IEFFQ291bnRJdGVtcygmcmVwbHlMaXN0LCAmbnVtRmlsZXMpOwogI2lmZGVmIFVTRV9TSU9VWAotICAgIHByaW50ZiAoIktBSExfTU9EIEl0ZW1Jbkxpc3Q6ICVkXG4iLCBudW1GaWxlcyk7CisgICAgcHJpbnRmKCJLQUhMX01PRCBJdGVtSW5MaXN0OiAlZFxuIiwgbnVtRmlsZXMpOwogI2VuZGlmCiAjZW5kaWYKIAogICAgIC8qIFdlIGNhbiBhZGQgZGF0YSBvbmx5IGlmIHNvbWV0aGluZyB0byByZXBseSAqLwotICAgIGVycm9yID0gQUVQdXRQYXJhbURlc2MgKHRoZVJlcGx5LCBrZXlEaXJlY3RPYmplY3QsICZyZXBseUxpc3QpOworICAgIGVycm9yID0gQUVQdXRQYXJhbURlc2ModGhlUmVwbHksIGtleURpcmVjdE9iamVjdCwgJnJlcGx5TGlzdCk7CiAKICNpZmRlZiBVU0VfU0lPVVgKICAgICBpZiAoZXJyb3IpCi0JcHJpbnRmICgiS0FITF9NT0Q6IEFFUHV0UGFyYW1EZXNjIGVycm9yOiAlZFxuIiwgZXJyb3IpOworCXByaW50ZigiS0FITF9NT0Q6IEFFUHV0UGFyYW1EZXNjIGVycm9yOiAlZFxuIiwgZXJyb3IpOwogI2VuZGlmCiAKICAgICBpZiAocmVwbHlMaXN0LmRhdGFIYW5kbGUpCkBAIC04MTksNyArODI0LDggQEAKICMgcHJhZ21hIG9wdGlvbnMgYWxpZ249cmVzZXQKICNlbmRpZgogCi1wYXNjYWwgT1NFcnIgSGFuZGxlX0tBSExfR1RUWF9BRSAoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCisgICAgcGFzY2FsIE9TRXJyCitIYW5kbGVfS0FITF9HVFRYX0FFKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCwgQXBwbGVFdmVudCAqdGhlUmVwbHksIGxvbmcgcmVmQ29uKQogewogICAgIE9TRXJyCWVycm9yID0gbm9FcnI7CiAgICAgYnVmX1QJKmJ1ZjsKQEAgLTgzOSw3ICs4NDUsNyBAQAogICAgIGlmIChlcnJvcikKICAgICB7CiAjaWZkZWYgVVNFX1NJT1VYCi0JcHJpbnRmICgiS0FITF9HVFRYOiBBRUdldFBhcmFtUHRyIGVycm9yOiAlZFxuIiwgZXJyb3IpOworCXByaW50ZigiS0FITF9HVFRYOiBBRUdldFBhcmFtUHRyIGVycm9yOiAlZFxuIiwgZXJyb3IpOwogI2VuZGlmCiAJcmV0dXJuKGVycm9yKTsKICAgICB9CkBAIC04NTQsNyArODYwLDcgQEAKIAogICAgIGlmIChmb3VuZEZpbGUpCiAgICAgewotCUJ1ZmZlclNpemUgPSAwOyAvKiBHZXRIYW5kbGVTaXplIChHZXRUZXh0RGF0YS50aGVUZXh0KTsgKi8KKwlCdWZmZXJTaXplID0gMDsgLyogR2V0SGFuZGxlU2l6ZShHZXRUZXh0RGF0YS50aGVUZXh0KTsgKi8KIAlmb3IgKGxpbmVubyA9IDA7IGxpbmVubyA8PSBidWYtPmJfbWwubWxfbGluZV9jb3VudDsgbGluZW5vKyspCiAJewogCSAgICAvKiBNdXN0IHVzZSB0aGUgcmlnaHQgYnVmZmVyICovCkBAIC04NjMsNDggKzg2OSw0OCBAQAogCSAgICBsaW5lU3RhcnQgPSBCdWZmZXJTaXplOwogCSAgICBCdWZmZXJTaXplICs9IGxpbmVzaXplOwogCSAgICAvKiBSZXNpemUgaGFuZGxlIHRvIGxpbmVzaXplKzEgdG8gaW5jbHVkZSB0aGUgbGluZWZlZWQgKi8KLQkgICAgU2V0SGFuZGxlU2l6ZSAoR2V0VGV4dERhdGEudGhlVGV4dCwgQnVmZmVyU2l6ZSk7Ci0JICAgIGlmIChHZXRIYW5kbGVTaXplIChHZXRUZXh0RGF0YS50aGVUZXh0KSAhPSBCdWZmZXJTaXplKQorCSAgICBTZXRIYW5kbGVTaXplKEdldFRleHREYXRhLnRoZVRleHQsIEJ1ZmZlclNpemUpOworCSAgICBpZiAoR2V0SGFuZGxlU2l6ZShHZXRUZXh0RGF0YS50aGVUZXh0KSAhPSBCdWZmZXJTaXplKQogCSAgICB7CiAJI2lmZGVmIFVTRV9TSU9VWAotCQlwcmludGYgKCJLQUhMX0dUVFg6IFNldEhhbmRsZVNpemUgaW5jcmVhc2U6ICVkLCBzaXplICVkXG4iLAorCQlwcmludGYoIktBSExfR1RUWDogU2V0SGFuZGxlU2l6ZSBpbmNyZWFzZTogJWQsIHNpemUgJWRcbiIsCiAJCQlsaW5lc2l6ZSwgQnVmZmVyU2l6ZSk7CiAJI2VuZGlmCiAJCWJyZWFrOyAvKiBTaW1wbGUgaGFuZGxpbmcgZm9yIG5vdyAqLwogCSAgICB9CiAJICAgIGVsc2UKIAkgICAgewotCQlITG9jayAoR2V0VGV4dERhdGEudGhlVGV4dCk7CisJCUhMb2NrKEdldFRleHREYXRhLnRoZVRleHQpOwogCQlmdWxsYnVmZmVyID0gKGNoYXJfdSAqKSAqR2V0VGV4dERhdGEudGhlVGV4dDsKLQkJU1RSQ1BZICgoY2hhcl91ICopIChmdWxsYnVmZmVyICsgbGluZVN0YXJ0KSwgbGluZSk7CisJCVNUUkNQWSgoY2hhcl91ICopKGZ1bGxidWZmZXIgKyBsaW5lU3RhcnQpLCBsaW5lKTsKIAkJZnVsbGJ1ZmZlcltCdWZmZXJTaXplLTFdID0gJ1xyJzsKLQkJSFVubG9jayAoR2V0VGV4dERhdGEudGhlVGV4dCk7CisJCUhVbmxvY2soR2V0VGV4dERhdGEudGhlVGV4dCk7CiAJICAgIH0KIAl9CiAJaWYgKGZ1bGxidWZmZXIgIT0gTlVMTCkKIAl7Ci0JICAgIEhMb2NrIChHZXRUZXh0RGF0YS50aGVUZXh0KTsKKwkgICAgSExvY2soR2V0VGV4dERhdGEudGhlVGV4dCk7CiAJICAgIGZ1bGxidWZmZXJbQnVmZmVyU2l6ZS0xXSA9IDA7Ci0JICAgIEhVbmxvY2sgKEdldFRleHREYXRhLnRoZVRleHQpOworCSAgICBIVW5sb2NrKEdldFRleHREYXRhLnRoZVRleHQpOwogCX0KIAlpZiAoZm91bmRGaWxlID09IGZhbHNlKQogCSAgICAqR2V0VGV4dERhdGEudGhlRGF0ZSA9IGZuZkVycjsKIAllbHNlCi0vKgkgICAgKkdldFRleHREYXRhLnRoZURhdGUgPSB0aW1lIChOVUxMKSAmICh0aW1lX3QpIDB4RkZGRkZGRjA7Ki8KKy8qCSAgICAqR2V0VGV4dERhdGEudGhlRGF0ZSA9IHRpbWUoTlVMTCkgJiAodGltZV90KSAweEZGRkZGRkYwOyovCiAJICAgICpHZXRUZXh0RGF0YS50aGVEYXRlID0gYnVmLT5iX210aW1lOwogICAgIH0KICNpZmRlZiBVU0VfU0lPVVgKLSAgICBwcmludGYgKCJLQUhMX0dUVFg6IGZpbGUgXCIlI3NcIiB7JWR9IFtkYXRlICVseCwgJWx4XSIsIEdldFRleHREYXRhLnRoZUZpbGUubmFtZSwgR2V0VGV4dERhdGEudGhlRmlsZS5wYXJJRCwgKkdldFRleHREYXRhLnRoZURhdGUsIGJ1Zi0+Yl9tdGltZV9yZWFkKTsKKyAgICBwcmludGYoIktBSExfR1RUWDogZmlsZSBcIiUjc1wiIHslZH0gW2RhdGUgJWx4LCAlbHhdIiwgR2V0VGV4dERhdGEudGhlRmlsZS5uYW1lLCBHZXRUZXh0RGF0YS50aGVGaWxlLnBhcklELCAqR2V0VGV4dERhdGEudGhlRGF0ZSwgYnVmLT5iX210aW1lX3JlYWQpOwogICAgIGlmIChmb3VuZEZpbGUgPT0gZmFsc2UpCi0JcHJpbnRmICgiIE5PVCIpOwotICAgIHByaW50ZiAoIiBmb3VuZC4gKEJ1ZmZlclNpemUgPSAlZClcbiIsIEJ1ZmZlclNpemUpOworCXByaW50ZigiIE5PVCIpOworICAgIHByaW50ZigiIGZvdW5kLiAoQnVmZmVyU2l6ZSA9ICVkKVxuIiwgQnVmZmVyU2l6ZSk7CiAjZW5kaWYKIAotICAgIGVycm9yID0gSGFuZGxlVW51c2VkUGFybXMgKHRoZUFFdmVudCk7CisgICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyh0aGVBRXZlbnQpOwogICAgIGlmIChlcnJvcikKICAgICB7CiAjaWZkZWYgVVNFX1NJT1VYCi0JcHJpbnRmICgiS0FITF9HVFRYOiBIYW5kbGVVbnVzZWRQYXJtcyBlcnJvcjogJWRcbiIsIGVycm9yKTsKKwlwcmludGYoIktBSExfR1RUWDogSGFuZGxlVW51c2VkUGFybXMgZXJyb3I6ICVkXG4iLCBlcnJvcik7CiAjZW5kaWYKIAlyZXR1cm4oZXJyb3IpOwogICAgIH0KQEAgLTkxNyw0OCArOTIzLDQ1IEBACiAgKi8KIAogLyogVGFrZW4gZnJvbSBNb3JlQXBwbGVFdmVudHM6UHJvY2Vzc0hlbHBlcnMqLwotcGFzY2FsCU9TRXJyCUZpbmRQcm9jZXNzQnlTaWduYXR1cmUoIGNvbnN0IE9TVHlwZSB0YXJnZXRUeXBlLAorcGFzY2FsCU9TRXJyCUZpbmRQcm9jZXNzQnlTaWduYXR1cmUoY29uc3QgT1NUeXBlIHRhcmdldFR5cGUsCiAJCQkJCWNvbnN0IE9TVHlwZSB0YXJnZXRDcmVhdG9yLAotCQkJCQkgICAgICBQcm9jZXNzU2VyaWFsTnVtYmVyUHRyIHBzblB0ciApCisJCQkJCSAgICAgIFByb2Nlc3NTZXJpYWxOdW1iZXJQdHIgcHNuUHRyKQogewogICAgIE9TRXJyCWFuRXJyID0gbm9FcnI7CiAgICAgQm9vbGVhbglsb29raW5nRm9yUHJvY2VzcyA9IHRydWU7CiAKICAgICBQcm9jZXNzSW5mb1JlYyAgaW5mb1JlYzsKIAotICAgIGluZm9SZWMucHJvY2Vzc0luZm9MZW5ndGggPSBzaXplb2YoIFByb2Nlc3NJbmZvUmVjICk7CisgICAgaW5mb1JlYy5wcm9jZXNzSW5mb0xlbmd0aCA9IHNpemVvZihQcm9jZXNzSW5mb1JlYyk7CiAgICAgaW5mb1JlYy5wcm9jZXNzTmFtZSA9IG5pbDsKICAgICBpbmZvUmVjLnByb2Nlc3NBcHBTcGVjID0gbmlsOwogCiAgICAgcHNuUHRyLT5sb3dMb25nT2ZQU04gPSBrTm9Qcm9jZXNzOwogICAgIHBzblB0ci0+aGlnaExvbmdPZlBTTiA9IGtOb1Byb2Nlc3M7CiAKLSAgICB3aGlsZSAoIGxvb2tpbmdGb3JQcm9jZXNzICkKKyAgICB3aGlsZSAobG9va2luZ0ZvclByb2Nlc3MpCiAgICAgewotCWFuRXJyID0gR2V0TmV4dFByb2Nlc3MoIHBzblB0ciApOwotCWlmICggYW5FcnIgIT0gbm9FcnIgKQotCXsKKwlhbkVyciA9IEdldE5leHRQcm9jZXNzKHBzblB0cik7CisJaWYgKGFuRXJyICE9IG5vRXJyKQogCSAgICBsb29raW5nRm9yUHJvY2VzcyA9IGZhbHNlOwotCX0KIAllbHNlCiAJewotCSAgICBhbkVyciA9IEdldFByb2Nlc3NJbmZvcm1hdGlvbiggcHNuUHRyLCAmaW5mb1JlYyApOwotCSAgICBpZiAoICggYW5FcnIgPT0gbm9FcnIgKQotCQkgJiYgKCBpbmZvUmVjLnByb2Nlc3NUeXBlID09IHRhcmdldFR5cGUgKQotCQkgJiYgKCBpbmZvUmVjLnByb2Nlc3NTaWduYXR1cmUgPT0gdGFyZ2V0Q3JlYXRvciApICkKLQkgICAgeworCSAgICBhbkVyciA9IEdldFByb2Nlc3NJbmZvcm1hdGlvbihwc25QdHIsICZpbmZvUmVjKTsKKwkgICAgaWYgKChhbkVyciA9PSBub0VycikKKwkJICAgICYmIChpbmZvUmVjLnByb2Nlc3NUeXBlID09IHRhcmdldFR5cGUpCisJCSAgICAmJiAoaW5mb1JlYy5wcm9jZXNzU2lnbmF0dXJlID09IHRhcmdldENyZWF0b3IpKQogCQlsb29raW5nRm9yUHJvY2VzcyA9IGZhbHNlOwotCSAgICB9CiAJfQogICAgIH0KIAogICAgIHJldHVybiBhbkVycjsKIH0vL2VuZCBGaW5kUHJvY2Vzc0J5U2lnbmF0dXJlCiAKLXZvaWQgU2VuZF9LQUhMX01PRF9BRSAoYnVmX1QgKmJ1ZikKKyAgICB2b2lkCitTZW5kX0tBSExfTU9EX0FFKGJ1Zl9UICpidWYpCiB7Ci0gICAgT1NFcnIgICBhbkVyciA9IG5vRXJyOwotICAgIEFFRGVzYyAgdGFyZ2V0QXBwRGVzYyA9IHsgdHlwZU51bGwsIG5pbCB9OworICAgIE9TRXJyCWFuRXJyID0gbm9FcnI7CisgICAgQUVEZXNjCXRhcmdldEFwcERlc2MgPSB7IHR5cGVOdWxsLCBuaWwgfTsKICAgICBQcm9jZXNzU2VyaWFsTnVtYmVyCSAgICBwc24gPSB7IGtOb1Byb2Nlc3MsIGtOb1Byb2Nlc3MgfTsKICAgICBBcHBsZUV2ZW50CXRoZVJlcGx5ID0geyB0eXBlTnVsbCwgbmlsIH07CiAgICAgQUVTZW5kTW9kZQlzZW5kTW9kZTsKQEAgLTk2Nyw0OCArOTcwLDQ4IEBACiAgICAgTW9kaWZpY2F0aW9uSW5mbyBNb2REYXRhOwogCiAKLSAgICBhbkVyciA9IEZpbmRQcm9jZXNzQnlTaWduYXR1cmUoICdBUFBMJywgJ0NXSUUnLCAmcHNuICk7CisgICAgYW5FcnIgPSBGaW5kUHJvY2Vzc0J5U2lnbmF0dXJlKCdBUFBMJywgJ0NXSUUnLCAmcHNuKTsKICNpZmRlZiBVU0VfU0lPVVgKLSAgICBwcmludGYgKCJDb2RlV2FycmlvciBpcyIpOworICAgIHByaW50ZigiQ29kZVdhcnJpb3IgaXMiKTsKICAgICBpZiAoYW5FcnIgIT0gbm9FcnIpCi0JcHJpbnRmICgiIE5PVCIpOwotICAgIHByaW50ZiAoIiBydW5uaW5nXG4iKTsKKwlwcmludGYoIiBOT1QiKTsKKyAgICBwcmludGYoIiBydW5uaW5nXG4iKTsKICNlbmRpZgotICAgIGlmICggYW5FcnIgPT0gbm9FcnIgKQorICAgIGlmIChhbkVyciA9PSBub0VycikKICAgICB7Ci0JYW5FcnIgPSBBRUNyZWF0ZURlc2MgKHR5cGVQcm9jZXNzU2VyaWFsTnVtYmVyLCAmcHNuLAotCQkJICAgICAgc2l6ZW9mKCBQcm9jZXNzU2VyaWFsTnVtYmVyICksICZ0YXJnZXRBcHBEZXNjKTsKKwlhbkVyciA9IEFFQ3JlYXRlRGVzYyh0eXBlUHJvY2Vzc1NlcmlhbE51bWJlciwgJnBzbiwKKwkJCSAgICAgIHNpemVvZihQcm9jZXNzU2VyaWFsTnVtYmVyKSwgJnRhcmdldEFwcERlc2MpOwogCi0JaWYgKCBhbkVyciA9PSBub0VyciApCisJaWYgKGFuRXJyID09IG5vRXJyKQogCXsKIAkgICAgYW5FcnIgPSBBRUNyZWF0ZUFwcGxlRXZlbnQoICdLQUhMJywgJ01PRCAnLCAmdGFyZ2V0QXBwRGVzYywKIAkJCQkJa0F1dG9HZW5lcmF0ZVJldHVybklELCBrQW55VHJhbnNhY3Rpb25JRCwgJnRoZUV2ZW50KTsKIAl9CiAKLQlBRURpc3Bvc2VEZXNjKCAmdGFyZ2V0QXBwRGVzYyApOworCUFFRGlzcG9zZURlc2MoJnRhcmdldEFwcERlc2MpOwogCiAJLyogQWRkIHRoZSBwYXJtcyAqLwogCU1vZERhdGEudGhlRmlsZSA9IGJ1Zi0+Yl9GU1NwZWM7CiAJTW9kRGF0YS50aGVEYXRlID0gYnVmLT5iX210aW1lOwogCiAJaWYgKGFuRXJyID09IG5vRXJyKQotCSAgICBhbkVyciA9QUVQdXRQYXJhbVB0ciAoJnRoZUV2ZW50LCBrZXlEaXJlY3RPYmplY3QsIHR5cGVDaGFyLCAmTW9kRGF0YSwgc2l6ZW9mKE1vZERhdGEpKTsKKwkgICAgYW5FcnIgPSBBRVB1dFBhcmFtUHRyKCZ0aGVFdmVudCwga2V5RGlyZWN0T2JqZWN0LCB0eXBlQ2hhciwgJk1vZERhdGEsIHNpemVvZihNb2REYXRhKSk7CiAKLQlpZiAoIGlkbGVQcm9jVVBQID09IG5pbCApCisJaWYgKGlkbGVQcm9jVVBQID09IG5pbCkKIAkgICAgc2VuZE1vZGUgPSBrQUVOb1JlcGx5OwogCWVsc2UKIAkgICAgc2VuZE1vZGUgPSBrQUVXYWl0UmVwbHk7CiAKLQlpZiAoIGFuRXJyID09IG5vRXJyICkKLQkgICAgYW5FcnIgPSBBRVNlbmQoICZ0aGVFdmVudCwgJnRoZVJlcGx5LCBzZW5kTW9kZSwga0FFTm9ybWFsUHJpb3JpdHksIGtOb1RpbWVPdXQsIGlkbGVQcm9jVVBQLCBuaWwgKTsKLQlpZiAoIGFuRXJyID09IG5vRXJyICAmJiAgc2VuZE1vZGUgPT0ga0FFV2FpdFJlcGx5ICkKKwlpZiAoYW5FcnIgPT0gbm9FcnIpCisJICAgIGFuRXJyID0gQUVTZW5kKCZ0aGVFdmVudCwgJnRoZVJlcGx5LCBzZW5kTW9kZSwga0FFTm9ybWFsUHJpb3JpdHksIGtOb1RpbWVPdXQsIGlkbGVQcm9jVVBQLCBuaWwpOworCWlmIChhbkVyciA9PSBub0VyciAgJiYgIHNlbmRNb2RlID09IGtBRVdhaXRSZXBseSkKIAl7CiAjaWZkZWYgVVNFX1NJT1VYCi0JICAgIHByaW50ZiAoIktBSExfTU9EOiBTZW5kIGVycm9yOiAlZFxuIiwgYW5FcnIpOworCSAgICBwcmludGYoIktBSExfTU9EOiBTZW5kIGVycm9yOiAlZFxuIiwgYW5FcnIpOwogI2VuZGlmCi0vKgkgICAgYW5FcnIgPSAgQUVIR2V0SGFuZGxlckVycm9yKCAmdGhlUmVwbHkgKTsqLworLyoJICAgIGFuRXJyID0gIEFFSEdldEhhbmRsZXJFcnJvcigmdGhlUmVwbHkpOyovCiAJfQotCSh2b2lkKSBBRURpc3Bvc2VEZXNjKCAmdGhlUmVwbHkgKTsKKwkodm9pZCkgQUVEaXNwb3NlRGVzYygmdGhlUmVwbHkpOwogICAgIH0KIH0KICNlbmRpZiAvKiBGRUFUX0NXX0VESVRPUiAqLwpAQCAtMTAyNCw3ICsxMDI3LDggQEAKICAqIEhhbmRsZSB0aGUgVW51c2VkIHBhcm1zIG9mIGFuIEFwcGxlRXZlbnQKICAqLwogCi1PU0VyciBIYW5kbGVVbnVzZWRQYXJtcyAoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50KQorICAgIE9TRXJyCitIYW5kbGVVbnVzZWRQYXJtcyhjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQpCiB7CiAgICAgT1NFcnIJZXJyb3I7CiAgICAgbG9uZwlhY3R1YWxTaXplOwpAQCAtMTA4Niw3ICsxMDkwLDggQEAKICAgIGVuZFJhbmdlIGFyZSBhbGwgbmVnYXRpdmUsIHRoZXJlIGlzIG5vIHNlbGVjdGlvbiByYW5nZSBzcGVjaWZpZWQuCiAgKi8KIAotcGFzY2FsIE9TRXJyIEhhbmRsZU9Eb2NBRSAoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCisgICAgcGFzY2FsIE9TRXJyCitIYW5kbGVPRG9jQUUoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCiB7CiAgICAgLyoKICAgICAgKiBUT0RPOiBDbGVhbiB1cCB0aGUgY29kZSB3aXRoIGNvbnZlcnQgdGhlIEFwcGxlRXZlbnQgaW50bwpAQCAtMTEwNyw3ICsxMTEyLDcgQEAKICAgICBsb25nCWxudW07CiAKICNpZmRlZiBVU0VfU0lPVVgKLSAgICBwcmludGYgKCJhZXZ0X29kb2M6XG4iKTsKKyAgICBwcmludGYoImFldnRfb2RvYzpcbiIpOwogI2VuZGlmCiAKICAgICAvKiB0aGUgZGlyZWN0IG9iamVjdCBwYXJhbWV0ZXIgaXMgdGhlIGxpc3Qgb2YgYWxpYXNlcyB0byBmaWxlcyAob25lIG9yIG1vcmUpICovCkBAIC0xMTE1LDcgKzExMjAsNyBAQAogICAgIGlmIChlcnJvcikKICAgICB7CiAjaWZkZWYgVVNFX1NJT1VYCi0JcHJpbnRmICgiYWV2dF9vZG9jOiBBRUdldFBhcmFtRGVzYyBlcnJvcjogJWRcbiIsIGVycm9yKTsKKwlwcmludGYoImFldnRfb2RvYzogQUVHZXRQYXJhbURlc2MgZXJyb3I6ICVkXG4iLCBlcnJvcik7CiAjZW5kaWYKIAlyZXR1cm4oZXJyb3IpOwogICAgIH0KQEAgLTExMjksMTMgKzExMzQsMTMgQEAKICAgICBpZiAoZXJyb3IpCiAgICAgewogI2lmZGVmIFVTRV9TSU9VWAotCXByaW50ZiAoImFldnRfb2RvYzogQUVHZXRQYXJhbVB0ciBlcnJvcjogJWRcbiIsIGVycm9yKTsKKwlwcmludGYoImFldnRfb2RvYzogQUVHZXRQYXJhbVB0ciBlcnJvcjogJWRcbiIsIGVycm9yKTsKICNlbmRpZgogCXJldHVybihlcnJvcik7CiAgICAgfQogCiAjaWZkZWYgVVNFX1NJT1VYCi0gICAgcHJpbnRmICgiYWV2dF9vZG9jOiBsaW5lTnVtOiAlZCwgc3RhcnRSYW5nZSAlZCwgZW5kUmFuZ2UgJWQsIFtkYXRlICVseF1cbiIsCisgICAgcHJpbnRmKCJhZXZ0X29kb2M6IGxpbmVOdW06ICVkLCBzdGFydFJhbmdlICVkLCBlbmRSYW5nZSAlZCwgW2RhdGUgJWx4XVxuIiwKIAkgICAgdGhlUG9zaXRpb24ubGluZU51bSwgdGhlUG9zaXRpb24uc3RhcnRSYW5nZSwgdGhlUG9zaXRpb24uZW5kUmFuZ2UsCiAJICAgIHRoZVBvc2l0aW9uLnRoZURhdGUpOwogI2VuZGlmCkBAIC0xMjE2LDExICsxMjIxLDExIEBACiAgIGZpbmlzaGVkOgogICAgIEFFRGlzcG9zZURlc2MoJnRoZUxpc3QpOyAvKiBkaXNwb3NlIHdoYXQgd2UgYWxsb2NhdGVkICovCiAKLSAgICBlcnJvciA9IEhhbmRsZVVudXNlZFBhcm1zICh0aGVBRXZlbnQpOworICAgIGVycm9yID0gSGFuZGxlVW51c2VkUGFybXModGhlQUV2ZW50KTsKICAgICBpZiAoZXJyb3IpCiAgICAgewogI2lmZGVmIFVTRV9TSU9VWAotCXByaW50ZiAoImFldnRfb2RvYzogSGFuZGxlVW51c2VkUGFybXMgZXJyb3I6ICVkXG4iLCBlcnJvcik7CisJcHJpbnRmKCJhZXZ0X29kb2M6IEhhbmRsZVVudXNlZFBhcm1zIGVycm9yOiAlZFxuIiwgZXJyb3IpOwogI2VuZGlmCiAJcmV0dXJuKGVycm9yKTsKICAgICB9CkBAIC0xMjMxLDE1ICsxMjM2LDE2IEBACiAgKgogICovCiAKLXBhc2NhbCBPU0VyciBIYW5kbGVfYWV2dF9vYXBwX0FFIChjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKKyAgICBwYXNjYWwgT1NFcnIKK0hhbmRsZV9hZXZ0X29hcHBfQUUoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCiB7CiAgICAgT1NFcnIJZXJyb3IgPSBub0VycjsKIAogI2lmZGVmIFVTRV9TSU9VWAotICAgIHByaW50ZiAoImFldnRfb2FwcDpcbiIpOworICAgIHByaW50ZigiYWV2dF9vYXBwOlxuIik7CiAjZW5kaWYKIAotICAgIGVycm9yID0gSGFuZGxlVW51c2VkUGFybXMgKHRoZUFFdmVudCk7CisgICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyh0aGVBRXZlbnQpOwogICAgIGlmIChlcnJvcikKICAgICB7CiAJcmV0dXJuKGVycm9yKTsKQEAgLTEyNTIsMTUgKzEyNTgsMTYgQEAKICAqCiAgKi8KIAotcGFzY2FsIE9TRXJyIEhhbmRsZV9hZXZ0X3F1aXRfQUUgKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCwgQXBwbGVFdmVudCAqdGhlUmVwbHksIGxvbmcgcmVmQ29uKQorICAgIHBhc2NhbCBPU0VycgorSGFuZGxlX2FldnRfcXVpdF9BRShjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKIHsKICAgICBPU0VycgllcnJvciA9IG5vRXJyOwogCiAjaWZkZWYgVVNFX1NJT1VYCi0gICAgcHJpbnRmICgiYWV2dF9xdWl0XG4iKTsKKyAgICBwcmludGYoImFldnRfcXVpdFxuIik7CiAjZW5kaWYKIAotICAgIGVycm9yID0gSGFuZGxlVW51c2VkUGFybXMgKHRoZUFFdmVudCk7CisgICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyh0aGVBRXZlbnQpOwogICAgIGlmIChlcnJvcikKICAgICB7CiAJcmV0dXJuKGVycm9yKTsKQEAgLTEyNzYsMTUgKzEyODMsMTYgQEAKICAqCiAgKi8KIAotcGFzY2FsIE9TRXJyIEhhbmRsZV9hZXZ0X3Bkb2NfQUUgKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCwgQXBwbGVFdmVudCAqdGhlUmVwbHksIGxvbmcgcmVmQ29uKQorICAgIHBhc2NhbCBPU0VycgorSGFuZGxlX2FldnRfcGRvY19BRShjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKIHsKICAgICBPU0VycgllcnJvciA9IG5vRXJyOwogCiAjaWZkZWYgVVNFX1NJT1VYCi0gICAgcHJpbnRmICgiYWV2dF9wZG9jOlxuIik7CisgICAgcHJpbnRmKCJhZXZ0X3Bkb2M6XG4iKTsKICNlbmRpZgogCi0gICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyAodGhlQUV2ZW50KTsKKyAgICBlcnJvciA9IEhhbmRsZVVudXNlZFBhcm1zKHRoZUFFdmVudCk7CiAgICAgaWYgKGVycm9yKQogICAgIHsKIAlyZXR1cm4oZXJyb3IpOwpAQCAtMTI5OCwxNSArMTMwNiwxNiBAQAogICoKICAqIChKdXN0IGdldCByaWQgb2YgYWxsIHRoZSBwYXJtcykKICAqLwotcGFzY2FsIE9TRXJyIEhhbmRsZV91bmtub3duX0FFIChjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKKyAgICBwYXNjYWwgT1NFcnIKK0hhbmRsZV91bmtub3duX0FFKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCwgQXBwbGVFdmVudCAqdGhlUmVwbHksIGxvbmcgcmVmQ29uKQogewogICAgIE9TRXJyCWVycm9yID0gbm9FcnI7CiAKICNpZmRlZiBVU0VfU0lPVVgKLSAgICBwcmludGYgKCJVbmtub3duIEV2ZW50OiAleFxuIiwgdGhlQUV2ZW50LT5kZXNjcmlwdG9yVHlwZSk7CisgICAgcHJpbnRmKCJVbmtub3duIEV2ZW50OiAleFxuIiwgdGhlQUV2ZW50LT5kZXNjcmlwdG9yVHlwZSk7CiAjZW5kaWYKIAotICAgIGVycm9yID0gSGFuZGxlVW51c2VkUGFybXMgKHRoZUFFdmVudCk7CisgICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyh0aGVBRXZlbnQpOwogICAgIGlmIChlcnJvcikKICAgICB7CiAJcmV0dXJuKGVycm9yKTsKQEAgLTEzMjQsNyArMTMzMyw4IEBACiAvKgogICogSW5zdGFsbCB0aGUgdmFyaW91cyBBcHBsZUV2ZW50IEhhbmRsZXJzCiAgKi8KLU9TRXJyICAgSW5zdGFsbEFFSGFuZGxlcnMgKHZvaWQpCisgICAgT1NFcnIKK0luc3RhbGxBRUhhbmRsZXJzKHZvaWQpCiB7CiAgICAgT1NFcnIgICBlcnJvcjsKIApAQCAtMTQzOCw3ICsxNDQ4LDcgQEAKICAqICBSZXR1cm5zIHRoZSBpbmRleCBpbnNpZGUgdGhlIG1lbnUgd2hlcgogICovCiAgICAgc2hvcnQgLyogU2hvdWxkZSB3ZSByZXR1cm4gTWVudUl0ZW1JbmRleD8gKi8KLWd1aV9tYWNfZ2V0X21lbnVfaXRlbV9pbmRleCAocE1lbnUpCitndWlfbWFjX2dldF9tZW51X2l0ZW1faW5kZXgocE1lbnUpCiAgICAgdmltbWVudV9UICpwTWVudTsKIHsKICAgICBzaG9ydAlpbmRleDsKQEAgLTE0NzUsNyArMTQ4NSw3IEBACiB9CiAKICAgICBzdGF0aWMgdmltbWVudV9UICoKLWd1aV9tYWNfZ2V0X3ZpbV9tZW51IChtZW51SUQsIGl0ZW1JbmRleCwgcE1lbnUpCitndWlfbWFjX2dldF92aW1fbWVudShtZW51SUQsIGl0ZW1JbmRleCwgcE1lbnUpCiAgICAgc2hvcnQJbWVudUlEOwogICAgIHNob3J0CWl0ZW1JbmRleDsKICAgICB2aW1tZW51X1QJKnBNZW51OwpAQCAtMTUyOSw3ICsxNTM5LDcgQEAKICAqLwogICAgIHBhc2NhbAogICAgIHZvaWQKLWd1aV9tYWNfZHJhZ190aHVtYiAoQ29udHJvbEhhbmRsZSB0aGVDb250cm9sLCBzaG9ydCBwYXJ0Q29kZSkKK2d1aV9tYWNfZHJhZ190aHVtYihDb250cm9sSGFuZGxlIHRoZUNvbnRyb2wsIHNob3J0IHBhcnRDb2RlKQogewogICAgIHNjcm9sbGJhcl9UCQkqc2I7CiAgICAgaW50CQkJdmFsdWUsIGRyYWdnaW5nOwpAQCAtMTUzOCwxMyArMTU0OCwxMyBAQAogCiAgICAgdGhlQ29udHJvbFRvVXNlID0gZHJhZ2dlZF9zYjsKIAotICAgIHNiID0gZ3VpX2ZpbmRfc2Nyb2xsYmFyKChsb25nKSBHZXRDb250cm9sUmVmZXJlbmNlICh0aGVDb250cm9sVG9Vc2UpKTsKKyAgICBzYiA9IGd1aV9maW5kX3Njcm9sbGJhcigobG9uZykgR2V0Q29udHJvbFJlZmVyZW5jZSh0aGVDb250cm9sVG9Vc2UpKTsKIAogICAgIGlmIChzYiA9PSBOVUxMKQogCXJldHVybjsKIAogICAgIC8qIE5lZWQgdG8gZmluZCB2YWx1ZSBieSBkaWZmIGJldHdlZW4gT2xkIFBvc3MgTmV3IFBvcyAqLwotICAgIHZhbHVlID0gR2V0Q29udHJvbDMyQml0VmFsdWUgKHRoZUNvbnRyb2xUb1VzZSk7CisgICAgdmFsdWUgPSBHZXRDb250cm9sMzJCaXRWYWx1ZSh0aGVDb250cm9sVG9Vc2UpOwogICAgIGRyYWdnaW5nID0gKHBhcnRDb2RlICE9IDApOwogCiAgICAgLyogV2hlbiAiYWxsb3dfc2Nyb2xsYmFyIiBpcyBGQUxTRSBzdGlsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBuZXcKQEAgLTE1NTYsNyArMTU2Niw3IEBACiAKICAgICBwYXNjYWwKICAgICB2b2lkCi1ndWlfbWFjX3Njcm9sbF9hY3Rpb24gKENvbnRyb2xIYW5kbGUgdGhlQ29udHJvbCwgc2hvcnQgcGFydENvZGUpCitndWlfbWFjX3Njcm9sbF9hY3Rpb24oQ29udHJvbEhhbmRsZSB0aGVDb250cm9sLCBzaG9ydCBwYXJ0Q29kZSkKIHsKICAgICAvKiBUT0RPOiBoYXZlIGxpdmUgc3VwcG9ydCAqLwogICAgIHNjcm9sbGJhcl9UICpzYiwgKnNiX2luZm87CkBAIC0xNTY2LDcgKzE1NzYsNyBAQAogICAgIGludAkJZHJhZ2dpbmcgPSBGQUxTRTsKICAgICBpbnQJCWRvbnRfc2Nyb2xsX3NhdmUgPSBkb250X3Njcm9sbDsKIAotICAgIHNiID0gZ3VpX2ZpbmRfc2Nyb2xsYmFyKChsb25nKSBHZXRDb250cm9sUmVmZXJlbmNlICh0aGVDb250cm9sKSk7CisgICAgc2IgPSBndWlfZmluZF9zY3JvbGxiYXIoKGxvbmcpR2V0Q29udHJvbFJlZmVyZW5jZSh0aGVDb250cm9sKSk7CiAKICAgICBpZiAoc2IgPT0gTlVMTCkKIAlyZXR1cm47CkBAIC0xNjQ4LDcgKzE2NTgsNyBAQAogICogVE9ETzogQWRkIHN1cHBvcnQgZm9yIHBvdGVudGlhbCBUT09MQkFSCiAgKi8KICAgICB2b2lkCi1ndWlfbWFjX2RvSW5Db250ZW50Q2xpY2sgKHRoZUV2ZW50LCB3aGljaFdpbmRvdykKK2d1aV9tYWNfZG9JbkNvbnRlbnRDbGljayh0aGVFdmVudCwgd2hpY2hXaW5kb3cpCiAgICAgRXZlbnRSZWNvcmQgKnRoZUV2ZW50OwogICAgIFdpbmRvd1B0cgkgd2hpY2hXaW5kb3c7CiB7CkBAIC0xNjYwLDEwICsxNjcwLDEwIEBACiAgICAgc2hvcnQJCWRibENsaWNrOwogCiAgICAgdGhlUG9pbnQgPSB0aGVFdmVudC0+d2hlcmU7Ci0gICAgR2xvYmFsVG9Mb2NhbCAoJnRoZVBvaW50KTsKLSAgICBTZWxlY3RXaW5kb3cgKHdoaWNoV2luZG93KTsKKyAgICBHbG9iYWxUb0xvY2FsKCZ0aGVQb2ludCk7CisgICAgU2VsZWN0V2luZG93KHdoaWNoV2luZG93KTsKIAotICAgIHRoZVBvcnRpb24gPSBGaW5kQ29udHJvbCAodGhlUG9pbnQsIHdoaWNoV2luZG93LCAmdGhlQ29udHJvbCk7CisgICAgdGhlUG9ydGlvbiA9IEZpbmRDb250cm9sKHRoZVBvaW50LCB3aGljaFdpbmRvdywgJnRoZUNvbnRyb2wpOwogCiAgICAgaWYgKHRoZUNvbnRyb2wgIT0gTlVMKQogICAgIHsKQEAgLTE2ODUsNyArMTY5NSw3IEBACiAjZW5kaWYKIAkgICAgLyogcGFzcyAwIGFzIHRoZSBwYXJ0IHRvIHRlbGwgZ3VpX21hY19kcmFnX3RodW1iLCB0aGF0IHRoZSBtb3VzZQogCSAgICAgKiBidXR0b24gaGFzIGJlZW4gcmVsZWFzZWQgKi8KLQkgICAgZ3VpX21hY19kcmFnX3RodW1iICh0aGVDb250cm9sLCAwKTsgLyogU2hvdWxkIGl0IGJlIHRoZVBvcnRpb24gPyAoRGFueSkgKi8KKwkgICAgZ3VpX21hY19kcmFnX3RodW1iKHRoZUNvbnRyb2wsIDApOyAvKiBTaG91bGQgaXQgYmUgdGhlUG9ydGlvbiA/IChEYW55KSAqLwogCSAgICBkcmFnZ2VkX3NiID0gTlVMTDsKIAl9CiAgICAgfQpAQCAtMTczMSw3ICsxNzQxLDcgQEAKICNlbmRpZgogI2VuZGlmCiAJewotCSAgICBTZXRSZWN0ICgmZHJhZ1JlY3QsIEZJTExfWChYXzJfQ09MKHRoZVBvaW50LmgpKSwKKwkgICAgU2V0UmVjdCgmZHJhZ1JlY3QsIEZJTExfWChYXzJfQ09MKHRoZVBvaW50LmgpKSwKIAkJCQlGSUxMX1koWV8yX1JPVyh0aGVQb2ludC52KSksCiAJCQkJRklMTF9YKFhfMl9DT0wodGhlUG9pbnQuaCkrMSksCiAJCQkJRklMTF9ZKFlfMl9ST1codGhlUG9pbnQudikrMSkpOwpAQCAtMTc0Niw3ICsxNzU2LDcgQEAKICAqIEhhbmRsZSB0aGUgY2xpY2sgaW4gdGhlIHRpdGxlYmFyICh0byBtb3ZlIHRoZSB3aW5kb3cpCiAgKi8KICAgICB2b2lkCi1ndWlfbWFjX2RvSW5EcmFnQ2xpY2sgKHdoZXJlLCB3aGljaFdpbmRvdykKK2d1aV9tYWNfZG9JbkRyYWdDbGljayh3aGVyZSwgd2hpY2hXaW5kb3cpCiAgICAgUG9pbnQJd2hlcmU7CiAgICAgV2luZG93UHRyCXdoaWNoV2luZG93OwogewpAQCAtMTc1NSwxMSArMTc2NSwxMSBAQAogCiAgICAgLyogVE9ETzogbWF5IHRyeSB0byBwcmV2ZW50IG1vdmUgb3V0c2lkZSBzY3JlZW4/ICovCiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKLSAgICBtb3ZpbmdMaW1pdHNQdHIgPSBHZXRSZWdpb25Cb3VuZHMgKCBHZXRHcmF5UmduKCksICZtb3ZpbmdMaW1pdHMgKTsKKyAgICBtb3ZpbmdMaW1pdHNQdHIgPSBHZXRSZWdpb25Cb3VuZHMoR2V0R3JheVJnbigpLCAmbW92aW5nTGltaXRzKTsKICNlbHNlCiAgICAgbW92aW5nTGltaXRzUHRyID0gJigqR2V0R3JheVJnbigpKS0+cmduQkJveDsKICNlbmRpZgotICAgIERyYWdXaW5kb3cgKHdoaWNoV2luZG93LCB3aGVyZSwgbW92aW5nTGltaXRzUHRyKTsKKyAgICBEcmFnV2luZG93KHdoaWNoV2luZG93LCB3aGVyZSwgbW92aW5nTGltaXRzUHRyKTsKIH0KIAogLyoKQEAgLTE3NzksNyArMTc4OSw3IEBACiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKICAgICBSZWN0CSAgICBOZXdDb250ZW50UmVjdDsKIAotICAgIHJlc2l6ZUxpbWl0c1B0ciA9IEdldFJlZ2lvbkJvdW5kcyAoIEdldEdyYXlSZ24oKSwgJnJlc2l6ZUxpbWl0cyApOworICAgIHJlc2l6ZUxpbWl0c1B0ciA9IEdldFJlZ2lvbkJvdW5kcyhHZXRHcmF5UmduKCksICZyZXNpemVMaW1pdHMpOwogI2Vsc2UKICAgICByZXNpemVMaW1pdHMgPSBxZC5zY3JlZW5CaXRzLmJvdW5kczsKICNlbmRpZgpAQCAtMTkxOSwxNyArMTkyOSwxNyBAQAogICAgIHdoaWNoV2luZG93ID0gKFdpbmRvd1B0cikgZXZlbnQtPm1lc3NhZ2U7CiAKICAgICAvKiBTYXZlIEN1cnJlbnQgUG9ydCAqLwotICAgIEdldFBvcnQgKCZzYXZlUG9ydCk7CisgICAgR2V0UG9ydCgmc2F2ZVBvcnQpOwogCiAgICAgLyogU2VsZWN0IHRoZSBXaW5kb3cncyBQb3J0ICovCiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKLSAgICBTZXRQb3J0V2luZG93UG9ydCAod2hpY2hXaW5kb3cpOworICAgIFNldFBvcnRXaW5kb3dQb3J0KHdoaWNoV2luZG93KTsKICNlbHNlCi0gICAgU2V0UG9ydCAod2hpY2hXaW5kb3cpOworICAgIFNldFBvcnQod2hpY2hXaW5kb3cpOwogI2VuZGlmCiAKICAgICAvKiBMZXQncyB1cGRhdGUgdGhlIHdpbmRvdyAqLwotICAgICAgQmVnaW5VcGRhdGUgKHdoaWNoV2luZG93KTsKKyAgICAgIEJlZ2luVXBkYXRlKHdoaWNoV2luZG93KTsKIAkvKiBSZWRyYXcgdGhlIGJpZ2dlc3QgcmVjdGFuZ2xlIGNvdmVyaW5nIHRoZSBhcmVhCiAJICogdG8gYmUgdXBkYXRlZC4KIAkgKi8KQEAgLTE5NDUsOSArMTk1NSw5IEBACiAJdXBkYXRlUmduID0gd2hpY2hXaW5kb3ctPnZpc1JnbjsKICNlbmRpZgogCS8qIFVzZSB0aGUgSExvY2sgdXNlbGVzcyBpbiBDYXJib24/IElzIGl0IGhhcm1mdWw/Ki8KLQlITG9jayAoKEhhbmRsZSkgdXBkYXRlUmduKTsKKwlITG9jaygoSGFuZGxlKSB1cGRhdGVSZ24pOwogI2lmZGVmIFVTRV9DQVJCT05JWkVECi0JICB1cGRhdGVSZWN0UHRyID0gR2V0UmVnaW9uQm91bmRzICggdXBkYXRlUmduLCAmdXBkYXRlUmVjdCApOworCSAgdXBkYXRlUmVjdFB0ciA9IEdldFJlZ2lvbkJvdW5kcyh1cGRhdGVSZ24sICZ1cGRhdGVSZWN0KTsKICMgaWYgMAogCSAgLyogQ29kZSBmcm9tIG9yaWdpbmFsIENhcmJvbiBQb3J0ICh1c2luZyBHZXRXaW5kb3dSZWdpb24uCiAJICAgKiBJIGJlbGlldmUgdGhlIFVwZGF0ZVJnbiBpcyBhbHJlYWR5IGluIGxvY2FsIChEYW55KQpAQCAtMTk2NiwzMyArMTk3NiwzMyBAQAogCSAgZ3VpX21jaF9zZXRfYmdfY29sb3IoZ3VpLmJhY2tfcGl4ZWwpOwogCSAgaWYgKHVwZGF0ZVJlY3RQdHItPmxlZnQgPCBGSUxMX1goMCkpCiAJICB7Ci0JICAgIFNldFJlY3QgKCZyYywgMCwgMCwgRklMTF9YKDApLCBGSUxMX1koUm93cykpOwotCSAgICBFcmFzZVJlY3QgKCZyYyk7CisJICAgIFNldFJlY3QoJnJjLCAwLCAwLCBGSUxMX1goMCksIEZJTExfWShSb3dzKSk7CisJICAgIEVyYXNlUmVjdCgmcmMpOwogCSAgfQogCSAgaWYgKHVwZGF0ZVJlY3RQdHItPnRvcCA8IEZJTExfWSgwKSkKIAkgIHsKLQkgICAgU2V0UmVjdCAoJnJjLCAwLCAwLCBGSUxMX1goQ29sdW1ucyksIEZJTExfWSgwKSk7Ci0JICAgIEVyYXNlUmVjdCAoJnJjKTsKKwkgICAgU2V0UmVjdCgmcmMsIDAsIDAsIEZJTExfWChDb2x1bW5zKSwgRklMTF9ZKDApKTsKKwkgICAgRXJhc2VSZWN0KCZyYyk7CiAJICB9CiAJICBpZiAodXBkYXRlUmVjdFB0ci0+cmlnaHQgPiBGSUxMX1goQ29sdW1ucykpCiAJICB7Ci0JICAgIFNldFJlY3QgKCZyYywgRklMTF9YKENvbHVtbnMpLCAwLAorCSAgICBTZXRSZWN0KCZyYywgRklMTF9YKENvbHVtbnMpLCAwLAogCQkJICAgRklMTF9YKENvbHVtbnMpICsgZ3VpLmJvcmRlcl9vZmZzZXQsIEZJTExfWShSb3dzKSk7Ci0JICAgIEVyYXNlUmVjdCAoJnJjKTsKKwkgICAgRXJhc2VSZWN0KCZyYyk7CiAJICB9CiAJICBpZiAodXBkYXRlUmVjdFB0ci0+Ym90dG9tID4gRklMTF9ZKFJvd3MpKQogCSAgewotCSAgICBTZXRSZWN0ICgmcmMsIDAsIEZJTExfWShSb3dzKSwgRklMTF9YKENvbHVtbnMpICsgZ3VpLmJvcmRlcl9vZmZzZXQsCisJICAgIFNldFJlY3QoJnJjLCAwLCBGSUxMX1koUm93cyksIEZJTExfWChDb2x1bW5zKSArIGd1aS5ib3JkZXJfb2Zmc2V0LAogCQkJCQkgICAgRklMTF9ZKFJvd3MpICsgZ3VpLmJvcmRlcl9vZmZzZXQpOwotCSAgICBFcmFzZVJlY3QgKCZyYyk7CisJICAgIEVyYXNlUmVjdCgmcmMpOwogCSAgfQotCUhVbmxvY2sgKChIYW5kbGUpIHVwZGF0ZVJnbik7CisJSFVubG9jaygoSGFuZGxlKSB1cGRhdGVSZ24pOwogI2lmZGVmIFVTRV9DQVJCT05JWkVECi0JRGlzcG9zZVJnbiAodXBkYXRlUmduKTsKKwlEaXNwb3NlUmduKHVwZGF0ZVJnbik7CiAjZW5kaWYKIAogCS8qIFVwZGF0ZSBzY3JvbGxiYXJzICovCi0JRHJhd0NvbnRyb2xzICh3aGljaFdpbmRvdyk7CisJRHJhd0NvbnRyb2xzKHdoaWNoV2luZG93KTsKIAogCS8qIFVwZGF0ZSB0aGUgR3Jvd0JveCAqLwogCS8qIFRha2VuIGZyb20gRkFRIDMzLTI3ICovCkBAIC0yMDA0LDE1ICsyMDE0LDE1IEBACiAJZ3Jvd1JlY3QudG9wICA9IGdyb3dSZWN0LmJvdHRvbSAtIDE1OwogCWdyb3dSZWN0LmxlZnQgPSBncm93UmVjdC5yaWdodCAgLSAxNTsKICNlbmRpZgotCUdldENsaXAgKHNhdmVSZ24pOwotCUNsaXBSZWN0ICgmZ3Jvd1JlY3QpOwotCURyYXdHcm93SWNvbiAod2hpY2hXaW5kb3cpOwotCVNldENsaXAgKHNhdmVSZ24pOwotCURpc3Bvc2VSZ24gKHNhdmVSZ24pOwotICAgICAgRW5kVXBkYXRlICh3aGljaFdpbmRvdyk7CisJR2V0Q2xpcChzYXZlUmduKTsKKwlDbGlwUmVjdCgmZ3Jvd1JlY3QpOworCURyYXdHcm93SWNvbih3aGljaFdpbmRvdyk7CisJU2V0Q2xpcChzYXZlUmduKTsKKwlEaXNwb3NlUmduKHNhdmVSZ24pOworICAgICAgRW5kVXBkYXRlKHdoaWNoV2luZG93KTsKIAogICAgIC8qIFJlc3RvcmUgb3JpZ2luYWwgUG9ydCAqLwotICAgIFNldFBvcnQgKHNhdmVQb3J0KTsKKyAgICBTZXRQb3J0KHNhdmVQb3J0KTsKIH0KIAogLyoKQEAgLTIwNDAsOCArMjA1MCw4IEBACiAKICNpZiAwCS8qIFJlbW92ZWQgYnkgRGFueSBhcyBwZXIgYWJvdmUgSnVuZSAyMDAxICovCiAJYV9ib29sID0gZmFsc2U7Ci0JU2V0UHJlc2VydmVHbHlwaCAoYV9ib29sKTsKLQlTZXRPdXRsaW5lUHJlZmVycmVkIChhX2Jvb2wpOworCVNldFByZXNlcnZlR2x5cGgoYV9ib29sKTsKKwlTZXRPdXRsaW5lUHJlZmVycmVkKGFfYm9vbCk7CiAjZW5kaWYKICAgICB9CiB9CkBAIC0yMDk5LDggKzIxMDksMjAgQEAKIAogICAgIC8qIEludGVyY2VwdCBDVFJMLUMgKi8KICAgICBpZiAodGhlRXZlbnQtPm1vZGlmaWVycyAmIGNvbnRyb2xLZXkpCisgICAgewogCWlmIChrZXlfY2hhciA9PSBDdHJsX0MgJiYgY3RybF9jX2ludGVycnVwdHMpCiAJICAgIGdvdF9pbnQgPSBUUlVFOworCWVsc2UgaWYgKCh0aGVFdmVudC0+bW9kaWZpZXJzICYgfihjb250cm9sS2V5fHNoaWZ0S2V5KSkgPT0gMAorCQkmJiAoa2V5X2NoYXIgPT0gJzInIHx8IGtleV9jaGFyID09ICc2JykpCisJeworCSAgICAvKiBDVFJMLV4gYW5kIENUUkwtQCBkb24ndCB3b3JrIGluIHRoZSBub3JtYWwgd2F5LiAqLworCSAgICBpZiAoa2V5X2NoYXIgPT0gJzInKQorCQlrZXlfY2hhciA9IEN0cmxfQVQ7CisJICAgIGVsc2UKKwkJa2V5X2NoYXIgPSBDdHJsX0hBVDsKKwkgICAgdGhlRXZlbnQtPm1vZGlmaWVycyA9IDA7CisJfQorICAgIH0KIAogICAgIC8qIEludGVyY2VwdCBDTUQtLiAqLwogICAgIGlmICh0aGVFdmVudC0+bW9kaWZpZXJzICYgY21kS2V5KQpAQCAtMjE0Myw4ICsyMTY1LDggQEAKIAkJCWtleV9jaGFyID0gc3BlY2lhbF9rZXlzW2ldLnZpbV9jb2RlMDsKIAkJICAgIGVsc2UKICMgZW5kaWYKLQkJCWtleV9jaGFyID0gVE9fU1BFQ0lBTCggc3BlY2lhbF9rZXlzW2ldLnZpbV9jb2RlMCwKLQkJCQkJCXNwZWNpYWxfa2V5c1tpXS52aW1fY29kZTEgKTsKKwkJCWtleV9jaGFyID0gVE9fU1BFQ0lBTChzcGVjaWFsX2tleXNbaV0udmltX2NvZGUwLAorCQkJCQkJc3BlY2lhbF9rZXlzW2ldLnZpbV9jb2RlMSk7CiAJCSAgICBrZXlfY2hhciA9IHNpbXBsaWZ5X2tleShrZXlfY2hhciwmbW9kaWZpZXJzKTsKIAkJICAgIGJyZWFrOwogCQl9CkBAIC0yMTYyLDM2ICsyMTg0LDM4IEBACiAgICAgewogI2lmIDEKICAgICAvKiBDbGVhciBtb2RpZmllcnMgd2hlbiBvbmx5IG9uZSBtb2RpZmllciBpcyBzZXQgKi8KLQlpZiggKG1vZGlmaWVycyA9PSBNT0RfTUFTS19TSElGVCkgfHwKLQkgICAgKG1vZGlmaWVycyA9PSBNT0RfTUFTS19DVFJMKSAgfHwKLQkgICAgKG1vZGlmaWVycyA9PSBNT0RfTUFTS19BTFQpKQorCWlmICgobW9kaWZpZXJzID09IE1PRF9NQVNLX1NISUZUKQorCQl8fCAobW9kaWZpZXJzID09IE1PRF9NQVNLX0NUUkwpCisJCXx8IChtb2RpZmllcnMgPT0gTU9EX01BU0tfQUxUKSkKIAkgICAgbW9kaWZpZXJzID0gMDsKICNlbHNlCi0JaWYoIG1vZGlmaWVycyAmIE1PRF9NQVNLX0NUUkwpCisJaWYgKG1vZGlmaWVycyAmIE1PRF9NQVNLX0NUUkwpCiAJICAgIG1vZGlmaWVycyA9IG1vZGlmaWVycyAmIH5NT0RfTUFTS19DVFJMOwotCWlmKCBtb2RpZmllcnMgJiBNT0RfTUFTS19BTFQpCisJaWYgKG1vZGlmaWVycyAmIE1PRF9NQVNLX0FMVCkKIAkgICAgbW9kaWZpZXJzID0gbW9kaWZpZXJzICYgfk1PRF9NQVNLX0FMVDsKLQlpZiggbW9kaWZpZXJzICYgTU9EX01BU0tfU0hJRlQpCisJaWYgKG1vZGlmaWVycyAmIE1PRF9NQVNLX1NISUZUKQogCSAgICBtb2RpZmllcnMgPSBtb2RpZmllcnMgJiB+TU9EX01BU0tfU0hJRlQ7CiAjZW5kaWYKICAgICB9Ci0JaWYoIG1vZGlmaWVycyApCisJaWYgKG1vZGlmaWVycykKIAl7Ci0JICAgIHN0cmluZ1sgbGVuKysgXSA9IENTSTsKLQkgICAgc3RyaW5nWyBsZW4rKyBdID0gS1NfTU9ESUZJRVI7Ci0JICAgIHN0cmluZ1sgbGVuKysgXSA9IG1vZGlmaWVyczsKKwkgICAgc3RyaW5nW2xlbisrXSA9IENTSTsKKwkgICAgc3RyaW5nW2xlbisrXSA9IEtTX01PRElGSUVSOworCSAgICBzdHJpbmdbbGVuKytdID0gbW9kaWZpZXJzOwogCX0KIAotCWlmKCBJU19TUEVDSUFMKCBrZXlfY2hhciApICkKKwlpZiAoSVNfU1BFQ0lBTChrZXlfY2hhcikpCiAJewotCSAgICBzdHJpbmdbIGxlbisrIF0gPSBDU0k7Ci0JICAgIHN0cmluZ1sgbGVuKysgXSA9IEtfU0VDT05EKCBrZXlfY2hhciApOwotCSAgICBzdHJpbmdbIGxlbisrIF0gPSBLX1RISVJEKCBrZXlfY2hhciApOworCSAgICBzdHJpbmdbbGVuKytdID0gQ1NJOworCSAgICBzdHJpbmdbbGVuKytdID0gS19TRUNPTkQoa2V5X2NoYXIpOworCSAgICBzdHJpbmdbbGVuKytdID0gS19USElSRChrZXlfY2hhcik7CiAJfQogCWVsc2UKIAl7CiAjaWZkZWYgRkVBVF9NQllURQotCSAgICBpZiAoaW5wdXRfY29udi52Y190eXBlICE9IENPTlZfTk9ORSkKKwkgICAgLyogQ29udmVydCBjaGFyYWN0ZXJzIHdoZW4gbmVlZGVkIChlLmcuLCBmcm9tIE1hY1JvbWFuIHRvIGxhdGluMSkuCisJICAgICAqIFRoaXMgZG9lc24ndCB3b3JrIGZvciB0aGUgTlVMIGJ5dGUuICovCisJICAgIGlmIChpbnB1dF9jb252LnZjX3R5cGUgIT0gQ09OVl9OT05FICYmIGtleV9jaGFyID4gMCkKIAkgICAgewogCQljaGFyX3UJZnJvbVsyXSwgKnRvOwogCQlpbnQJbDsKQEAgLTIyMzYsMTMgKzIyNjAsMTMgQEAKICAqIEhhbmRsZSBNb3VzZUNsaWNrCiAgKi8KICAgICB2b2lkCi1ndWlfbWFjX2RvTW91c2VEb3duRXZlbnQgKHRoZUV2ZW50KQorZ3VpX21hY19kb01vdXNlRG93bkV2ZW50KHRoZUV2ZW50KQogICAgIEV2ZW50UmVjb3JkICp0aGVFdmVudDsKIHsKICAgICBzaG9ydAkJdGhlUGFydDsKICAgICBXaW5kb3dQdHIJCXdoaWNoV2luZG93OwogCi0gICAgdGhlUGFydCA9IEZpbmRXaW5kb3cgKHRoZUV2ZW50LT53aGVyZSwgJndoaWNoV2luZG93KTsKKyAgICB0aGVQYXJ0ID0gRmluZFdpbmRvdyh0aGVFdmVudC0+d2hlcmUsICZ3aGljaFdpbmRvdyk7CiAKICAgICBzd2l0Y2ggKHRoZVBhcnQpCiAgICAgewpAQCAtMjI1MSwxOSArMjI3NSwxOSBAQAogCSAgICBicmVhazsKIAogCWNhc2UgKGluTWVudUJhcik6Ci0JICAgIGd1aV9tYWNfaGFuZGxlX21lbnUoTWVudVNlbGVjdCAodGhlRXZlbnQtPndoZXJlKSk7CisJICAgIGd1aV9tYWNfaGFuZGxlX21lbnUoTWVudVNlbGVjdCh0aGVFdmVudC0+d2hlcmUpKTsKIAkgICAgYnJlYWs7CiAKIAljYXNlIChpbkNvbnRlbnQpOgotCSAgICBndWlfbWFjX2RvSW5Db250ZW50Q2xpY2sgKHRoZUV2ZW50LCB3aGljaFdpbmRvdyk7CisJICAgIGd1aV9tYWNfZG9JbkNvbnRlbnRDbGljayh0aGVFdmVudCwgd2hpY2hXaW5kb3cpOwogCSAgICBicmVhazsKIAogCWNhc2UgKGluRHJhZyk6Ci0JICAgIGd1aV9tYWNfZG9JbkRyYWdDbGljayAodGhlRXZlbnQtPndoZXJlLCB3aGljaFdpbmRvdyk7CisJICAgIGd1aV9tYWNfZG9JbkRyYWdDbGljayh0aGVFdmVudC0+d2hlcmUsIHdoaWNoV2luZG93KTsKIAkgICAgYnJlYWs7CiAKIAljYXNlIChpbkdyb3cpOgotCSAgICBndWlfbWFjX2RvSW5Hcm93Q2xpY2sgKHRoZUV2ZW50LT53aGVyZSwgd2hpY2hXaW5kb3cpOworCSAgICBndWlfbWFjX2RvSW5Hcm93Q2xpY2sodGhlRXZlbnQtPndoZXJlLCB3aGljaFdpbmRvdyk7CiAJICAgIGJyZWFrOwogCiAJY2FzZSAoaW5Hb0F3YXkpOgpAQCAtMjI4NSwxOCArMjMwOSwxOCBAQAogICogW3RoaXMgZXZlbnQgaXMgYSBtb3ZpbmcgaW4gYW5kIG91dCBvZiBhIHJlZ2lvbl0KICAqLwogICAgIHZvaWQKLWd1aV9tYWNfZG9Nb3VzZU1vdmVkRXZlbnQgKGV2ZW50KQorZ3VpX21hY19kb01vdXNlTW92ZWRFdmVudChldmVudCkKICAgICBFdmVudFJlY29yZCAqZXZlbnQ7CiB7CiAgICAgUG9pbnQgICB0aGVQb2ludDsKICAgICBpbnRfdSAgIHZpbU1vZGlmaWVyczsKIAogICAgIHRoZVBvaW50ID0gZXZlbnQtPndoZXJlOwotICAgIEdsb2JhbFRvTG9jYWwgKCZ0aGVQb2ludCk7CisgICAgR2xvYmFsVG9Mb2NhbCgmdGhlUG9pbnQpOwogICAgIHZpbU1vZGlmaWVycyA9IEV2ZW50TW9kaWZpZXJzMlZpbU1vdXNlTW9kaWZpZXJzKGV2ZW50LT5tb2RpZmllcnMpOwogCiAgICAgaWYgKCFCdXR0b24oKSkKLQlndWlfbW91c2VfbW92ZWQgKHRoZVBvaW50LmgsIHRoZVBvaW50LnYpOworCWd1aV9tb3VzZV9tb3ZlZCh0aGVQb2ludC5oLCB0aGVQb2ludC52KTsKICAgICBlbHNlCiAjaWZkZWYgVVNFX0NUUkxDTElDS01FTlUKIAlpZiAoIWNsaWNrSXNQb3B1cCkKQEAgLTIzMDUsNyArMjMyOSw3IEBACiAJCQkJCSAgICAgdGhlUG9pbnQudiwgRkFMU0UsIHZpbU1vZGlmaWVycyk7CiAKICAgICAvKiBSZXNldCB0aGUgcmVnaW9uIGZyb20gd2hpY2ggd2UgbW92ZSBpbiBhbmQgb3V0ICovCi0gICAgU2V0UmVjdCAoJmRyYWdSZWN0LCBGSUxMX1goWF8yX0NPTCh0aGVQb2ludC5oKSksCisgICAgU2V0UmVjdCgmZHJhZ1JlY3QsIEZJTExfWChYXzJfQ09MKHRoZVBvaW50LmgpKSwKIAkJCUZJTExfWShZXzJfUk9XKHRoZVBvaW50LnYpKSwKIAkJCUZJTExfWChYXzJfQ09MKHRoZVBvaW50LmgpKzEpLAogCQkJRklMTF9ZKFlfMl9ST1codGhlUG9pbnQudikrMSkpOwpAQCAtMjMxOSw3ICsyMzQzLDcgQEAKICAqIEhhbmRsZSB0aGUgbW91c2UgcmVsZWFzZQogICovCiAgICAgdm9pZAotZ3VpX21hY19kb01vdXNlVXBFdmVudCAodGhlRXZlbnQpCitndWlfbWFjX2RvTW91c2VVcEV2ZW50KHRoZUV2ZW50KQogICAgIEV2ZW50UmVjb3JkICp0aGVFdmVudDsKIHsKICAgICBQb2ludCAgIHRoZVBvaW50OwpAQCAtMjMzMSw3ICsyMzU1LDcgQEAKICAgICBkcmFnUmVjdEVuYmwgPSBGQUxTRTsKICAgICBkcmFnUmVjdENvbnRyb2wgPSBrQ3JlYXRlRW1wdHk7CiAgICAgdGhlUG9pbnQgPSB0aGVFdmVudC0+d2hlcmU7Ci0gICAgR2xvYmFsVG9Mb2NhbCAoJnRoZVBvaW50KTsKKyAgICBHbG9iYWxUb0xvY2FsKCZ0aGVQb2ludCk7CiAKICAgICB2aW1Nb2RpZmllcnMgPSBFdmVudE1vZGlmaWVyczJWaW1Nb3VzZU1vZGlmaWVycyh0aGVFdmVudC0+bW9kaWZpZXJzKTsKICNpZmRlZiBVU0VfQ1RSTENMSUNLTUVOVQpAQCAtMjM0MSw4ICsyMzY1LDcgQEAKIAljbGlja0lzUG9wdXAgPSBGQUxTRTsKICAgICB9CiAjZW5kaWYKLSAgICBndWlfc2VuZF9tb3VzZV9ldmVudAotICAgICAgKE1PVVNFX1JFTEVBU0UsIHRoZVBvaW50LmgsIHRoZVBvaW50LnYsIEZBTFNFLCB2aW1Nb2RpZmllcnMpOworICAgIGd1aV9zZW5kX21vdXNlX2V2ZW50KE1PVVNFX1JFTEVBU0UsIHRoZVBvaW50LmgsIHRoZVBvaW50LnYsIEZBTFNFLCB2aW1Nb2RpZmllcnMpOwogfQogCiAjaWZkZWYgVVNFX01PVVNFV0hFRUwKQEAgLTI0MzEsNyArMjQ1NCw3IEBACiAJLyogSGFuZGxlIHRoZSBtZW51IENudHhNZW51SUQsIENudHhNZW51SXRlbSAqLwogCS8qIFRoZSBzdWJtZW51IGNhbiBiZSBoYW5kbGUgZGlyZWN0bHkgYnkgZ3VpX21hY19oYW5kbGVfbWVudSAqLwogCS8qIEJ1dCB3aGF0IGFib3V0IHRoZSBjdXJyZW50IG1lbnUsIGlzIHRoZSBtZW55IGNoYW5nZWQgYnkgQ29udGV4dHVhbE1lbnVTZWxlY3QgKi8KLQlndWlfbWFjX2hhbmRsZV9tZW51ICgoQ250eE1lbnVJRCA8PCAxNikgKyBDbnR4TWVudUl0ZW0pOworCWd1aV9tYWNfaGFuZGxlX21lbnUoKENudHhNZW51SUQgPDwgMTYpICsgQ250eE1lbnVJdGVtKTsKICAgICB9CiAgICAgZWxzZSBpZiAoQ250eE1lbnVJRCA9PSBrQ01TaG93SGVscFNlbGVjdGVkKQogICAgIHsKQEAgLTI0NjQsOSArMjQ4Nyw5IEBACiAJewogI2lmbmRlZiBVU0VfQ0FSQk9OSVpFRAogCSAgICAvKiBEZXNrIEFjY2Vzc29yeSBkb2Vzbid0IGV4aXN0IGluIENhcmJvbiAqLwotCSAgICBhcHBsZU1lbnUgPSBHZXRNZW51SGFuZGxlIChtZW51KTsKLQkgICAgR2V0TWVudUl0ZW1UZXh0IChhcHBsZU1lbnUsIGl0ZW0sIGl0ZW1OYW1lKTsKLQkgICAgKHZvaWQpIE9wZW5EZXNrQWNjIChpdGVtTmFtZSk7CisJICAgIGFwcGxlTWVudSA9IEdldE1lbnVIYW5kbGUobWVudSk7CisJICAgIEdldE1lbnVJdGVtVGV4dChhcHBsZU1lbnUsIGl0ZW0sIGl0ZW1OYW1lKTsKKwkgICAgKHZvaWQpIE9wZW5EZXNrQWNjKGl0ZW1OYW1lKTsKICNlbmRpZgogCX0KICAgICB9CkBAIC0yNDc3LDcgKzI1MDAsNyBAQAogCWlmICh0aGVWaW1NZW51KQogCSAgICBndWlfbWVudV9jYih0aGVWaW1NZW51KTsKICAgICB9Ci0gICAgSGlsaXRlTWVudSAoMCk7CisgICAgSGlsaXRlTWVudSgwKTsKIH0KIAogLyoKQEAgLTI0ODUsNyArMjUwOCw3IEBACiAgKi8KIAogICAgIHZvaWQKLWd1aV9tYWNfaGFuZGxlX2V2ZW50IChldmVudCkKK2d1aV9tYWNfaGFuZGxlX2V2ZW50KGV2ZW50KQogICAgIEV2ZW50UmVjb3JkICpldmVudDsKIHsKICAgICBPU0VycgllcnJvcjsKQEAgLTI1MDksNyArMjUzMiw3IEBACiAgICAgewogCWNhc2UgKGtleURvd24pOgogCWNhc2UgKGF1dG9LZXkpOgotCSAgICBndWlfbWFjX2RvS2V5RXZlbnQgKGV2ZW50KTsKKwkgICAgZ3VpX21hY19kb0tleUV2ZW50KGV2ZW50KTsKIAkgICAgYnJlYWs7CiAKIAljYXNlIChrZXlVcCk6CkBAIC0yNTI1LDcgKzI1NDgsNyBAQAogCSAgICBicmVhazsKIAogCWNhc2UgKHVwZGF0ZUV2dCk6Ci0JICAgIGd1aV9tYWNfZG9VcGRhdGVFdmVudCAoZXZlbnQpOworCSAgICBndWlfbWFjX2RvVXBkYXRlRXZlbnQoZXZlbnQpOwogCSAgICBicmVhazsKIAogCWNhc2UgKGRpc2tFdnQpOgpAQCAtMjUzMywxNyArMjU1NiwxNyBAQAogCSAgICBicmVhazsKIAogCWNhc2UgKGFjdGl2YXRlRXZ0KToKLQkgICAgZ3VpX21hY19kb0FjdGl2YXRlRXZlbnQgKGV2ZW50KTsKKwkgICAgZ3VpX21hY19kb0FjdGl2YXRlRXZlbnQoZXZlbnQpOwogCSAgICBicmVhazsKIAogCWNhc2UgKG9zRXZ0KToKIAkgICAgc3dpdGNoICgoZXZlbnQtPm1lc3NhZ2UgPj4gMjQpICYgMHhGRikKIAkgICAgewogCQljYXNlICgweEZBKTogLyogbW91c2VNb3ZlZE1lc3NhZ2UgKi8KLQkJICAgIGd1aV9tYWNfZG9Nb3VzZU1vdmVkRXZlbnQgKGV2ZW50KTsKKwkJICAgIGd1aV9tYWNfZG9Nb3VzZU1vdmVkRXZlbnQoZXZlbnQpOwogCQkgICAgYnJlYWs7CiAJCWNhc2UgKDB4MDEpOiAvKiBzdXNwZW5kUmVzdW1lTWVzc2FnZSAqLwotCQkgICAgZ3VpX21hY19kb1N1c3BlbmRFdmVudCAoZXZlbnQpOworCQkgICAgZ3VpX21hY19kb1N1c3BlbmRFdmVudChldmVudCk7CiAJCSAgICBicmVhazsKIAkgICAgfQogCSAgICBicmVhazsKQEAgLTI1NjUsNyArMjU4OCw3IEBACiAKIAogICAgIEd1aUZvbnQKLWd1aV9tYWNfZmluZF9mb250IChmb250X25hbWUpCitndWlfbWFjX2ZpbmRfZm9udChmb250X25hbWUpCiAgICAgY2hhcl91ICpmb250X25hbWU7CiB7CiAgICAgY2hhcl91CWM7CkBAIC0yNTkwLDEyICsyNjEzLDEyIEBACiAgICAgcEZvbnROYW1lWzBdID0gU1RSTEVOKGZvbnRfbmFtZSk7CiAgICAgKnAgPSBjOwogCi0gICAgR2V0Rk51bSAocEZvbnROYW1lLCAmZm9udF9pZCk7CisgICAgR2V0Rk51bShwRm9udE5hbWUsICZmb250X2lkKTsKICNlbHNlCiAgICAgLyogbmFtZSA9IEMyUGFzY2FsX3NhdmUobWVudS0+ZG5hbWUpOyAqLwogICAgIGZvbnROYW1lUHRyID0gQzJQYXNjYWxfc2F2ZV9hbmRfcmVtb3ZlX2JhY2tzbGFzaChmb250X25hbWUpOwogCi0gICAgR2V0Rk51bSAoZm9udE5hbWVQdHIsICZmb250X2lkKTsKKyAgICBHZXRGTnVtKGZvbnROYW1lUHRyLCAmZm9udF9pZCk7CiAjZW5kaWYKIAogCkBAIC0yNjAzLDcgKzI2MjYsNyBAQAogICAgIHsKIAkvKiBPdXBzLCB0aGUgc3lzdGVtIGZvbnQgd2FzIGl0IHRoZSBvbmUgdGhlIHVzZXIgd2FudCAqLwogCi0JR2V0Rm9udE5hbWUgKDAsIHN5c3RlbUZvbnRuYW1lKTsKKwlHZXRGb250TmFtZSgwLCBzeXN0ZW1Gb250bmFtZSk7CiAJaWYgKCFFcXVhbFN0cmluZyhwRm9udE5hbWUsIHN5c3RlbUZvbnRuYW1lLCBmYWxzZSwgZmFsc2UpKQogCSAgICByZXR1cm4gTk9GT05UOwogICAgIH0KQEAgLTI3MDksMzYgKzI3MzIsMzYgQEAKICAgICBTSU9VWFNldHRpbmdzLnNob3dzdGF0dXNsaW5lID0gdHJ1ZTsKICAgICBTSU9VWFNldHRpbmdzLnRvcHBpeGVsID0gMzAwOwogICAgIFNJT1VYU2V0dGluZ3MubGVmdHBpeGVsID0gMTA7Ci0gICAgSW5zdGFsbENvbnNvbGUgKDEpOyAvKiBmaWxlbm8oc3Rkb3V0KSA9IDEsIG9uIHBhZ2UgNDMwIG9mIE1TTCBDICovCi0gICAgcHJpbnRmICgiRGVidWdnaW5nIGNvbnNvbGUgZW5hYmxlZFxuIik7Ci0gICAgLyoJU0lPVVhTZXRUaXRsZSAoKGNoYXJfdSAqKSAiVmltIFN0ZG91dCIpOyAqLworICAgIEluc3RhbGxDb25zb2xlKDEpOyAvKiBmaWxlbm8oc3Rkb3V0KSA9IDEsIG9uIHBhZ2UgNDMwIG9mIE1TTCBDICovCisgICAgcHJpbnRmKCJEZWJ1Z2dpbmcgY29uc29sZSBlbmFibGVkXG4iKTsKKyAgICAvKglTSU9VWFNldFRpdGxlKChjaGFyX3UgKikgIlZpbSBTdGRvdXQiKTsgKi8KICNlbmRpZgogCi0gICAgcG9tbWUgPSBOZXdNZW51ICgyNTYsICJccFwwMjQiKTsgLyogMHgxND0gPSBBcHBsZSBNZW51ICovCisgICAgcG9tbWUgPSBOZXdNZW51KDI1NiwgIlxwXDAyNCIpOyAvKiAweDE0PSA9IEFwcGxlIE1lbnUgKi8KIAotICAgIEFwcGVuZE1lbnUgKHBvbW1lLCAiXHBBYm91dCBWSU0iKTsKKyAgICBBcHBlbmRNZW51KHBvbW1lLCAiXHBBYm91dCBWSU0iKTsKICNpZm5kZWYgVVNFX0NBUkJPTklaRUQKLSAgICBBcHBlbmRNZW51IChwb21tZSwgIlxwLSIpOwotICAgIEFwcGVuZFJlc01lbnUgKHBvbW1lLCAnRFJWUicpOworICAgIEFwcGVuZE1lbnUocG9tbWUsICJccC0iKTsKKyAgICBBcHBlbmRSZXNNZW51KHBvbW1lLCAnRFJWUicpOwogI2VuZGlmCiAKLSAgICBJbnNlcnRNZW51IChwb21tZSwgMCk7CisgICAgSW5zZXJ0TWVudShwb21tZSwgMCk7CiAKICAgICBEcmF3TWVudUJhcigpOwogCiAKICNpZm5kZWYgVVNFX09GRlNFVEVEX1dJTkRPVwotICAgIFNldFJlY3QgKCZ3aW5kUmVjdCwgMTAsIDQ4LCAxMCs4MCo3ICsgMTYsIDQ4KzI0KjExKTsKKyAgICBTZXRSZWN0KCZ3aW5kUmVjdCwgMTAsIDQ4LCAxMCs4MCo3ICsgMTYsIDQ4KzI0KjExKTsKICNlbHNlCi0gICAgU2V0UmVjdCAoJndpbmRSZWN0LCAzMDAsIDQwLCAzMDArODAqNyArIDE2LCA0MCsyNCoxMSk7CisgICAgU2V0UmVjdCgmd2luZFJlY3QsIDMwMCwgNDAsIDMwMCs4MCo3ICsgMTYsIDQwKzI0KjExKTsKICNlbmRpZgogCiAKICNpZmRlZiBVU0VfQ0FSQk9OSVpFRAogICAgIENyZWF0ZU5ld1dpbmRvdyhrRG9jdW1lbnRXaW5kb3dDbGFzcywKIAkJa1dpbmRvd1Jlc2l6YWJsZUF0dHJpYnV0ZSB8IGtXaW5kb3dDb2xsYXBzZUJveEF0dHJpYnV0ZSwKLQkJJndpbmRSZWN0LCAmZ3VpLlZpbVdpbmRvdyApOwotICAgIFNldFBvcnRXaW5kb3dQb3J0ICggZ3VpLlZpbVdpbmRvdyApOworCQkmd2luZFJlY3QsICZndWkuVmltV2luZG93KTsKKyAgICBTZXRQb3J0V2luZG93UG9ydChndWkuVmltV2luZG93KTsKICNlbHNlCiAgICAgZ3VpLlZpbVdpbmRvdyA9IE5ld0NXaW5kb3cobmlsLCAmd2luZFJlY3QsICJccGdWaW0gb24gTWFjaW50b3NoIiwgdHJ1ZSwgZG9jdW1lbnRQcm9jLAogCQkJKFdpbmRvd1B0cikgLTFMLCBmYWxzZSwgMCk7CkBAIC0yNzUzLDExICsyNzc2LDExIEBACiAgICAgZ3VpLmluX2ZvY3VzID0gVFJVRTsgLyogRm9yIHRoZSBtb21lbnQgLT4gc3luLiBvZiBmcm9udCBhcHBsaWNhdGlvbiAqLwogCiAjaWYgVEFSR0VUX0FQSV9NQUNfQ0FSQk9OCi0gICAgZ1Njcm9sbEFjdGlvbiA9IE5ld0NvbnRyb2xBY3Rpb25VUFAgKGd1aV9tYWNfc2Nyb2xsX2FjdGlvbik7Ci0gICAgZ1Njcm9sbERyYWcgICA9IE5ld0NvbnRyb2xBY3Rpb25VUFAgKGd1aV9tYWNfZHJhZ190aHVtYik7CisgICAgZ1Njcm9sbEFjdGlvbiA9IE5ld0NvbnRyb2xBY3Rpb25VUFAoZ3VpX21hY19zY3JvbGxfYWN0aW9uKTsKKyAgICBnU2Nyb2xsRHJhZyAgID0gTmV3Q29udHJvbEFjdGlvblVQUChndWlfbWFjX2RyYWdfdGh1bWIpOwogI2Vsc2UKLSAgICBnU2Nyb2xsQWN0aW9uID0gTmV3Q29udHJvbEFjdGlvblByb2MgKGd1aV9tYWNfc2Nyb2xsX2FjdGlvbik7Ci0gICAgZ1Njcm9sbERyYWcgICA9IE5ld0NvbnRyb2xBY3Rpb25Qcm9jIChndWlfbWFjX2RyYWdfdGh1bWIpOworICAgIGdTY3JvbGxBY3Rpb24gPSBOZXdDb250cm9sQWN0aW9uUHJvYyhndWlfbWFjX3Njcm9sbF9hY3Rpb24pOworICAgIGdTY3JvbGxEcmFnICAgPSBOZXdDb250cm9sQWN0aW9uUHJvYyhndWlfbWFjX2RyYWdfdGh1bWIpOwogI2VuZGlmCiAKICAgICAvKiBHZXR0aW5nIGEgaGFuZGxlIHRvIHRoZSBIZWxwIG1lbnUgKi8KQEAgLTI3NjksNyArMjc5Miw3IEBACiAjIGVuZGlmCiAKICAgICBpZiAoZ3VpLk1hY09TSGVscE1lbnUgIT0gbmlsKQotCWd1aS5NYWNPU0hlbHBJdGVtcyA9IENvdW50TWVudUl0ZW1zIChndWkuTWFjT1NIZWxwTWVudSk7CisJZ3VpLk1hY09TSGVscEl0ZW1zID0gQ291bnRNZW51SXRlbXMoZ3VpLk1hY09TSGVscE1lbnUpOwogICAgIGVsc2UKIAlndWkuTWFjT1NIZWxwSXRlbXMgPSAwOwogI2VuZGlmCkBAIC0yNzgxLDI1ICsyODA0LDI1IEBACiAjZW5kaWYKICNpZmRlZiBVU0VfRVhFX05BTUUKICMgaWZuZGVmIFVTRV9GSU5EX0JVTkRMRV9QQVRICi0gICAgSEdldFZvbCAodm9sTmFtZSwgJmFwcGxWUmVmTnVtLCAmYXBwbERpcklEKTsKKyAgICBIR2V0Vm9sKHZvbE5hbWUsICZhcHBsVlJlZk51bSwgJmFwcGxEaXJJRCk7CiAgICAgLyogVE4yMDE1OiBtZW50aW9uIGEgcG9zc2libGUgYmFkIFZSZWZOdW0gKi8KLSAgICBGU01ha2VGU1NwZWMgKGFwcGxWUmVmTnVtLCBhcHBsRGlySUQsICJccCIsICZhcHBsRGlyKTsKKyAgICBGU01ha2VGU1NwZWMoYXBwbFZSZWZOdW0sIGFwcGxEaXJJRCwgIlxwIiwgJmFwcGxEaXIpOwogIyBlbHNlCiAgICAgLyogT1NFcnIgR2V0QXBwbGljYXRpb25CdW5kbGVGU1NwZWMoRlNTcGVjUHRyIHRoZUZTU3BlY1B0cikKICAgICAgKiBvZiBUTjIwMTUKICAgICAgKiBUaGlzIHRlY2huaWMgcmVtb3ZlIHRoZSAuLi9Db250ZW50cy9NYWNPUy9ldGMgcGFydAogICAgICAqLwotICAgICh2b2lkKSBHZXRDdXJyZW50UHJvY2VzcygmcHNuKTsKKyAgICAodm9pZClHZXRDdXJyZW50UHJvY2VzcygmcHNuKTsKICAgICAvKiBpZiAoZXJyICE9IG5vRXJyKSByZXR1cm4gZXJyOyAqLwogCi0gICAgKHZvaWQpIEdldFByb2Nlc3NCdW5kbGVMb2NhdGlvbigmcHNuLCAmYXBwbEZTUmVmKTsKKyAgICAodm9pZClHZXRQcm9jZXNzQnVuZGxlTG9jYXRpb24oJnBzbiwgJmFwcGxGU1JlZik7CiAgICAgLyogaWYgKGVyciAhPSBub0VycikgcmV0dXJuIGVycjsgKi8KIAotICAgICh2b2lkKSBGU0dldENhdGFsb2dJbmZvKCZhcHBsRlNSZWYsIGtGU0NhdEluZm9Ob25lLCBOVUxMLCBOVUxMLCAmYXBwbERpciwgTlVMTCk7CisgICAgKHZvaWQpRlNHZXRDYXRhbG9nSW5mbygmYXBwbEZTUmVmLCBrRlNDYXRJbmZvTm9uZSwgTlVMTCwgTlVMTCwgJmFwcGxEaXIsIE5VTEwpOwogCiAgICAgLyogVGhpcyB0ZWNobmljIHJldHVybiBOSUwgd2hlbiB3ZSBkaXNhbGxvd19ndWkgKi8KICMgZW5kaWYKLSAgICBleGVfbmFtZSA9IEZ1bGxQYXRoRnJvbUZTU3BlY19zYXZlIChhcHBsRGlyKTsKKyAgICBleGVfbmFtZSA9IEZ1bGxQYXRoRnJvbUZTU3BlY19zYXZlKGFwcGxEaXIpOwogI2VuZGlmCiAKICNpZmRlZiBVU0VfVklNX0NSRUFUT1JfSUQKQEAgLTI5MjUsMjggKzI5NDgsMjggQEAKICAgICBTSU9VWFNldHRpbmdzLnNob3dzdGF0dXNsaW5lID0gdHJ1ZTsKICAgICBTSU9VWFNldHRpbmdzLnRvcHBpeGVsID0gMzAwOwogICAgIFNJT1VYU2V0dGluZ3MubGVmdHBpeGVsID0gMTA7Ci0gICAgSW5zdGFsbENvbnNvbGUgKDEpOyAvKiBmaWxlbm8oc3Rkb3V0KSA9IDEsIG9uIHBhZ2UgNDMwIG9mIE1TTCBDICovCi0gICAgcHJpbnRmICgiRGVidWdnaW5nIGNvbnNvbGUgZW5hYmxlZFxuIik7Ci0gICAgLyoJU0lPVVhTZXRUaXRsZSAoKGNoYXJfdSAqKSAiVmltIFN0ZG91dCIpOyAqLworICAgIEluc3RhbGxDb25zb2xlKDEpOyAvKiBmaWxlbm8oc3Rkb3V0KSA9IDEsIG9uIHBhZ2UgNDMwIG9mIE1TTCBDICovCisgICAgcHJpbnRmKCJEZWJ1Z2dpbmcgY29uc29sZSBlbmFibGVkXG4iKTsKKyAgICAvKglTSU9VWFNldFRpdGxlKChjaGFyX3UgKikgIlZpbSBTdGRvdXQiKTsgKi8KICNlbmRpZgogCi0gICAgcG9tbWUgPSBOZXdNZW51ICgyNTYsICJccFwwMjQiKTsgLyogMHgxND0gPSBBcHBsZSBNZW51ICovCisgICAgcG9tbWUgPSBOZXdNZW51KDI1NiwgIlxwXDAyNCIpOyAvKiAweDE0PSA9IEFwcGxlIE1lbnUgKi8KIAotICAgIEFwcGVuZE1lbnUgKHBvbW1lLCAiXHBBYm91dCBWSU0iKTsKKyAgICBBcHBlbmRNZW51KHBvbW1lLCAiXHBBYm91dCBWSU0iKTsKICNpZm5kZWYgVVNFX0NBUkJPTklaRUQKLSAgICBBcHBlbmRNZW51IChwb21tZSwgIlxwLSIpOwotICAgIEFwcGVuZFJlc01lbnUgKHBvbW1lLCAnRFJWUicpOworICAgIEFwcGVuZE1lbnUocG9tbWUsICJccC0iKTsKKyAgICBBcHBlbmRSZXNNZW51KHBvbW1lLCAnRFJWUicpOwogI2VuZGlmCiAKLSAgICBJbnNlcnRNZW51IChwb21tZSwgMCk7CisgICAgSW5zZXJ0TWVudShwb21tZSwgMCk7CiAKICAgICBEcmF3TWVudUJhcigpOwogCiAKICNpZm5kZWYgVVNFX09GRlNFVEVEX1dJTkRPVwotICAgIFNldFJlY3QgKCZ3aW5kUmVjdCwgMTAsIDQ4LCAxMCs4MCo3ICsgMTYsIDQ4KzI0KjExKTsKKyAgICBTZXRSZWN0KCZ3aW5kUmVjdCwgMTAsIDQ4LCAxMCs4MCo3ICsgMTYsIDQ4KzI0KjExKTsKICNlbHNlCi0gICAgU2V0UmVjdCAoJndpbmRSZWN0LCAzMDAsIDQwLCAzMDArODAqNyArIDE2LCA0MCsyNCoxMSk7CisgICAgU2V0UmVjdCgmd2luZFJlY3QsIDMwMCwgNDAsIDMwMCs4MCo3ICsgMTYsIDQwKzI0KjExKTsKICNlbmRpZgogCiAgICAgZ3VpLlZpbVdpbmRvdyA9IE5ld0NXaW5kb3cobmlsLCAmd2luZFJlY3QsICJccGdWaW0gb24gTWFjaW50b3NoIiwgdHJ1ZSwKQEAgLTI5NTksNyArMjk4Miw3IEBACiAgICAgSW5zdGFsbFJlY2VpdmVIYW5kbGVyKChEcmFnUmVjZWl2ZUhhbmRsZXJVUFApcmVjZWl2ZUhhbmRsZXIsCiAJICAgIGd1aS5WaW1XaW5kb3csIE5VTEwpOwogI2lmZGVmIFVTRV9DQVJCT05JWkVECi0gICAgU2V0UG9ydFdpbmRvd1BvcnQgKCBndWkuVmltV2luZG93ICk7CisgICAgU2V0UG9ydFdpbmRvd1BvcnQoZ3VpLlZpbVdpbmRvdyk7CiAjZWxzZQogICAgIFNldFBvcnQoZ3VpLlZpbVdpbmRvdyk7CiAjZW5kaWYKQEAgLTI5NzIsMTEgKzI5OTUsMTEgQEAKICAgICBndWkuaW5fZm9jdXMgPSBUUlVFOyAvKiBGb3IgdGhlIG1vbWVudCAtPiBzeW4uIG9mIGZyb250IGFwcGxpY2F0aW9uICovCiAKICNpZiBUQVJHRVRfQVBJX01BQ19DQVJCT04KLSAgICBnU2Nyb2xsQWN0aW9uID0gTmV3Q29udHJvbEFjdGlvblVQUCAoZ3VpX21hY19zY3JvbGxfYWN0aW9uKTsKLSAgICBnU2Nyb2xsRHJhZyAgID0gTmV3Q29udHJvbEFjdGlvblVQUCAoZ3VpX21hY19kcmFnX3RodW1iKTsKKyAgICBnU2Nyb2xsQWN0aW9uID0gTmV3Q29udHJvbEFjdGlvblVQUChndWlfbWFjX3Njcm9sbF9hY3Rpb24pOworICAgIGdTY3JvbGxEcmFnICAgPSBOZXdDb250cm9sQWN0aW9uVVBQKGd1aV9tYWNfZHJhZ190aHVtYik7CiAjZWxzZQotICAgIGdTY3JvbGxBY3Rpb24gPSBOZXdDb250cm9sQWN0aW9uUHJvYyAoZ3VpX21hY19zY3JvbGxfYWN0aW9uKTsKLSAgICBnU2Nyb2xsRHJhZyAgID0gTmV3Q29udHJvbEFjdGlvblByb2MgKGd1aV9tYWNfZHJhZ190aHVtYik7CisgICAgZ1Njcm9sbEFjdGlvbiA9IE5ld0NvbnRyb2xBY3Rpb25Qcm9jKGd1aV9tYWNfc2Nyb2xsX2FjdGlvbik7CisgICAgZ1Njcm9sbERyYWcgICA9IE5ld0NvbnRyb2xBY3Rpb25Qcm9jKGd1aV9tYWNfZHJhZ190aHVtYik7CiAjZW5kaWYKIAogICAgIC8qIEdldHRpbmcgYSBoYW5kbGUgdG8gdGhlIEhlbHAgbWVudSAqLwpAQCAtMjk4OCw3ICszMDExLDcgQEAKICMgZW5kaWYKIAogICAgIGlmIChndWkuTWFjT1NIZWxwTWVudSAhPSBuaWwpCi0JZ3VpLk1hY09TSGVscEl0ZW1zID0gQ291bnRNZW51SXRlbXMgKGd1aS5NYWNPU0hlbHBNZW51KTsKKwlndWkuTWFjT1NIZWxwSXRlbXMgPSBDb3VudE1lbnVJdGVtcyhndWkuTWFjT1NIZWxwTWVudSk7CiAgICAgZWxzZQogCWd1aS5NYWNPU0hlbHBJdGVtcyA9IDA7CiAjZW5kaWYKQEAgLTMxMjMsNyArMzE0Niw3IEBACiAgICAgT1NTdGF0dXMJc3RhdHVzOwogCiAgICAgLyogQ2FyYm9uID49IDEuMC4yLCBNYWNPUyA+PSA4LjUgKi8KLSAgICBzdGF0dXMgPSBHZXRXaW5kb3dCb3VuZHMgKGd1aS5WaW1XaW5kb3csIGtXaW5kb3dTdHJ1Y3R1cmVSZ24sICZib3VuZHMpOworICAgIHN0YXR1cyA9IEdldFdpbmRvd0JvdW5kcyhndWkuVmltV2luZG93LCBrV2luZG93U3RydWN0dXJlUmduLCAmYm91bmRzKTsKIAogICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCiAJcmV0dXJuIEZBSUw7CkBAIC0zMTY0LDEwICszMTg3LDEwIEBACiAgICAgaWYgKGd1aS53aGljaF9zY3JvbGxiYXJzW1NCQVJfTEVGVF0pCiAgICAgewogI2lmZGVmIFVTRV9DQVJCT05JWkVECi0JVmltUG9ydCA9IEdldFdpbmRvd1BvcnQgKCBndWkuVmltV2luZG93ICk7Ci0JR2V0UG9ydEJvdW5kcyAoVmltUG9ydCwgJlZpbUJvdW5kKTsKKwlWaW1Qb3J0ID0gR2V0V2luZG93UG9ydChndWkuVmltV2luZG93KTsKKwlHZXRQb3J0Qm91bmRzKFZpbVBvcnQsICZWaW1Cb3VuZCk7CiAJVmltQm91bmQubGVmdCA9IC1ndWkuc2Nyb2xsYmFyX3dpZHRoOyAvKiArIDE7Ki8KLQlTZXRQb3J0Qm91bmRzIChWaW1Qb3J0LCAmVmltQm91bmQpOworCVNldFBvcnRCb3VuZHMoVmltUG9ydCwgJlZpbUJvdW5kKTsKICAgICAvKglHZXRXaW5kb3dCb3VuZHMoZ3VpLlZpbVdpbmRvdywga1dpbmRvd0dsb2JhbFBvcnRSZ24sICZ3aW5Qb3J0UmVjdCk7ID8/Ki8KICNlbHNlCiAJZ3VpLlZpbVdpbmRvdy0+cG9ydFJlY3QubGVmdCA9IC1ndWkuc2Nyb2xsYmFyX3dpZHRoOyAvKiArIDE7Ki8KQEAgLTMxNzcsMTAgKzMyMDAsMTAgQEAKICAgICBlbHNlCiAgICAgewogI2lmZGVmIFVTRV9DQVJCT05JWkVECi0JVmltUG9ydCA9IEdldFdpbmRvd1BvcnQgKCBndWkuVmltV2luZG93ICk7Ci0JR2V0UG9ydEJvdW5kcyAoVmltUG9ydCwgJlZpbUJvdW5kKTsKKwlWaW1Qb3J0ID0gR2V0V2luZG93UG9ydChndWkuVmltV2luZG93KTsKKwlHZXRQb3J0Qm91bmRzKFZpbVBvcnQsICZWaW1Cb3VuZCk7CiAJVmltQm91bmQubGVmdCA9IDA7Ci0JU2V0UG9ydEJvdW5kcyAoVmltUG9ydCwgJlZpbUJvdW5kKTsKKwlTZXRQb3J0Qm91bmRzKFZpbVBvcnQsICZWaW1Cb3VuZCk7CiAjZWxzZQogCWd1aS5WaW1XaW5kb3ctPnBvcnRSZWN0LmxlZnQgPSAwOwogI2VuZGlmOwpAQCAtMzI0MSwyMCArMzI2NCwyMCBAQAogICAgIH0KICAgICBlbHNlCiAgICAgewotCWZvbnQgPSBndWlfbWFjX2ZpbmRfZm9udCAoZm9udF9uYW1lKTsKKwlmb250ID0gZ3VpX21hY19maW5kX2ZvbnQoZm9udF9uYW1lKTsKIAogCWlmIChmb250ID09IE5PRk9OVCkKIAkgICAgcmV0dXJuIEZBSUw7CiAgICAgfQogICAgIGd1aS5ub3JtX2ZvbnQgPSBmb250OwogCi0gICAgVGV4dFNpemUgKGZvbnQgPj4gMTYpOwotICAgIFRleHRGb250IChmb250ICYgMHhGRkZGKTsKKyAgICBUZXh0U2l6ZShmb250ID4+IDE2KTsKKyAgICBUZXh0Rm9udChmb250ICYgMHhGRkZGKTsKIAotICAgIEdldEZvbnRJbmZvICgmZm9udF9pbmZvKTsKKyAgICBHZXRGb250SW5mbygmZm9udF9pbmZvKTsKIAogICAgIGd1aS5jaGFyX2FzY2VudCA9IGZvbnRfaW5mby5hc2NlbnQ7Ci0gICAgZ3VpLmNoYXJfd2lkdGggID0gQ2hhcldpZHRoICgnXycpOworICAgIGd1aS5jaGFyX3dpZHRoICA9IENoYXJXaWR0aCgnXycpOwogICAgIGd1aS5jaGFyX2hlaWdodCA9IGZvbnRfaW5mby5hc2NlbnQgKyBmb250X2luZm8uZGVzY2VudCArIHBfbGluZXNwYWNlOwogCiAgICAgcmV0dXJuIE9LOwpAQCAtMzI2Niw3ICszMjg5LDcgQEAKIHsKICAgICBGb250SW5mbyAgICBmb250X2luZm87CiAKLSAgICBHZXRGb250SW5mbyAoJmZvbnRfaW5mbyk7CisgICAgR2V0Rm9udEluZm8oJmZvbnRfaW5mbyk7CiAgICAgZ3VpLmNoYXJfaGVpZ2h0ID0gZm9udF9pbmZvLmFzY2VudCArIGZvbnRfaW5mby5kZXNjZW50ICsgcF9saW5lc3BhY2U7CiAgICAgZ3VpLmNoYXJfYXNjZW50ID0gZm9udF9pbmZvLmFzY2VudCArIHBfbGluZXNwYWNlIC8gMjsKICAgICByZXR1cm4gT0s7CkBAIC0zNDI1LDEwICszNDQ4LDEwIEBACiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0JaWYgKFNUUklDTVAgKG5hbWUsICJoaWxpdGUiKSA9PSAwKQorCWlmIChTVFJJQ01QKG5hbWUsICJoaWxpdGUiKSA9PSAwKQogCXsKLQkgICAgTE1HZXRIaWxpdGVSR0IgKCZNYWNDb2xvcik7Ci0JICAgIHJldHVybiAoUkdCIChNYWNDb2xvci5yZWQgPj4gOCwgTWFjQ29sb3IuZ3JlZW4gPj4gOCwgTWFjQ29sb3IuYmx1ZSA+PiA4KSk7CisJICAgIExNR2V0SGlsaXRlUkdCKCZNYWNDb2xvcik7CisJICAgIHJldHVybiAoUkdCKE1hY0NvbG9yLnJlZCA+PiA4LCBNYWNDb2xvci5ncmVlbiA+PiA4LCBNYWNDb2xvci5ibHVlID4+IDgpKTsKIAl9CiAJLyogQ2hlY2sgaWYgdGhlIG5hbWUgaXMgb25lIG9mIHRoZSBjb2xvcnMgd2Uga25vdyAqLwogCWZvciAoaSA9IDA7IGkgPCBzaXplb2YodGFibGUpIC8gc2l6ZW9mKHRhYmxlWzBdKTsgaSsrKQpAQCAtMzUwNCw3ICszNTI3LDcgQEAKICAgICBUaGVDb2xvci5ncmVlbiA9IEdyZWVuKGNvbG9yKSAqIDB4MDEwMTsKICAgICBUaGVDb2xvci5ibHVlID0gQmx1ZShjb2xvcikgKiAweDAxMDE7CiAKLSAgICBSR0JGb3JlQ29sb3IgKCZUaGVDb2xvcik7CisgICAgUkdCRm9yZUNvbG9yKCZUaGVDb2xvcik7CiB9CiAKIC8qCkBAIC0zNTIwLDcgKzM1NDMsNyBAQAogICAgIFRoZUNvbG9yLmdyZWVuID0gR3JlZW4oY29sb3IpICogMHgwMTAxOwogICAgIFRoZUNvbG9yLmJsdWUgPSBCbHVlKGNvbG9yKSAqIDB4MDEwMTsKIAotICAgIFJHQkJhY2tDb2xvciAoJlRoZUNvbG9yKTsKKyAgICBSR0JCYWNrQ29sb3IoJlRoZUNvbG9yKTsKIH0KIAogICAgIHZvaWQKQEAgLTM1OTcsMzEgKzM2MjAsMzEgQEAKICNlbmRpZgogICAgIHsKIAkvKiBVc2Ugb2xkLXN0eWxlLCBub24tYW50aWFsaWFzZWQgUXVpY2tEcmF3IHRleHQgcmVuZGVyaW5nLiAqLwotCVRleHRNb2RlIChzcmNDb3B5KTsKLQlUZXh0RmFjZSAobm9ybWFsKTsKKwlUZXh0TW9kZShzcmNDb3B5KTsKKwlUZXh0RmFjZShub3JtYWwpOwogCiAgICAgLyogIFNlbGVjdEZvbnQoaGRjLCBndWkuY3VyckZvbnQpOyAqLwogCiAJaWYgKGZsYWdzICYgRFJBV19UUkFOU1ApCiAJewotCSAgICBUZXh0TW9kZSAoc3JjT3IpOworCSAgICBUZXh0TW9kZShzcmNPcik7CiAJfQogCi0JTW92ZVRvIChURVhUX1goY29sKSwgVEVYVF9ZKHJvdykpOwotCURyYXdUZXh0ICgoY2hhciAqKXMsIDAsIGxlbik7CisJTW92ZVRvKFRFWFRfWChjb2wpLCBURVhUX1kocm93KSk7CisJRHJhd1RleHQoKGNoYXIgKilzLCAwLCBsZW4pOwogCiAKIAlpZiAoZmxhZ3MgJiBEUkFXX0JPTEQpCiAJewotCSAgICBUZXh0TW9kZSAoc3JjT3IpOwotCSAgICBNb3ZlVG8gKFRFWFRfWChjb2wpICsgMSwgVEVYVF9ZKHJvdykpOwotCSAgICBEcmF3VGV4dCAoKGNoYXIgKilzLCAwLCBsZW4pOworCSAgICBUZXh0TW9kZShzcmNPcik7CisJICAgIE1vdmVUbyhURVhUX1goY29sKSArIDEsIFRFWFRfWShyb3cpKTsKKwkgICAgRHJhd1RleHQoKGNoYXIgKilzLCAwLCBsZW4pOwogCX0KIAogCWlmIChmbGFncyAmIERSQVdfVU5ERVJMKQogCXsKLQkgICAgTW92ZVRvIChGSUxMX1goY29sKSwgRklMTF9ZKHJvdyArIDEpIC0gMSk7Ci0JICAgIExpbmVUbyAoRklMTF9YKGNvbCArIGxlbikgLSAxLCBGSUxMX1kocm93ICsgMSkgLSAxKTsKKwkgICAgTW92ZVRvKEZJTExfWChjb2wpLCBGSUxMX1kocm93ICsgMSkgLSAxKTsKKwkgICAgTGluZVRvKEZJTExfWChjb2wgKyBsZW4pIC0gMSwgRklMTF9ZKHJvdyArIDEpIC0gMSk7CiAJfQogICAgIH0KIApAQCAtMzY0OSw3ICszNjcyLDcgQEAKICAgICB2b2lkCiBndWlfbWNoX2JlZXAoKQogewotICAgIFN5c0JlZXAgKDEpOyAvKiBTaG91bGQgdGhpcyBiZSAwPyAoPz8/PykgKi8KKyAgICBTeXNCZWVwKDEpOyAvKiBTaG91bGQgdGhpcyBiZSAwPyAoPz8/PykgKi8KIH0KIAogICAgIHZvaWQKQEAgLTM3NDAsNyArMzc2Myw3IEBACiAKICAgICBndWlfbWNoX3NldF9mZ19jb2xvcihjb2xvcik7CiAKLSAgICBGcmFtZVJlY3QgKCZyYyk7CisgICAgRnJhbWVSZWN0KCZyYyk7CiB9CiAKIC8qCkBAIC0zNzY3LDcgKzM3OTAsNyBAQAogCiAgICAgZ3VpX21jaF9zZXRfZmdfY29sb3IoY29sb3IpOwogCi0gICAgUGFpbnRSZWN0ICgmcmMpOworICAgIFBhaW50UmVjdCgmcmMpOwogfQogCiAKQEAgLTM3OTEsNyArMzgxNCw3IEBACiAgICAgICovCiAgICAgRXZlbnRSZWNvcmQgdGhlRXZlbnQ7CiAKLSAgICBpZiAoRXZlbnRBdmFpbCAoZXZlcnlFdmVudCwgJnRoZUV2ZW50KSkKKyAgICBpZiAoRXZlbnRBdmFpbChldmVyeUV2ZW50LCAmdGhlRXZlbnQpKQogCWlmICh0aGVFdmVudC53aGF0ICE9IG51bGxFdmVudCkKIAkgICAgZ3VpX21jaF93YWl0X2Zvcl9jaGFycygwKTsKIH0KQEAgLTM4MDYsNyArMzgyOSw3IEBACiAjZW5kaWYKICAgICBwYXNjYWwKICAgICBCb29sZWFuCi1XYWl0TmV4dEV2ZW50V3JwIChFdmVudE1hc2sgZXZlbnRNYXNrLCBFdmVudFJlY29yZCAqdGhlRXZlbnQsIFVJbnQzMiBzbGVlcCwgUmduSGFuZGxlIG1vdXNlUmduKQorV2FpdE5leHRFdmVudFdycChFdmVudE1hc2sgZXZlbnRNYXNrLCBFdmVudFJlY29yZCAqdGhlRXZlbnQsIFVJbnQzMiBzbGVlcCwgUmduSGFuZGxlIG1vdXNlUmduKQogewogICAgIGlmICgoKGxvbmcpIHNsZWVwKSA8IC0xKQogCXNsZWVwID0gMzI3Njc7CkBAIC0zODU3LDcgKzM4ODAsNyBAQAogCWVsc2UqLyBpZiAoZHJhZ1JlY3RDb250cm9sID09IGtDcmVhdGVSZWN0KQogCXsKIAkgICAgZHJhZ1JnbiA9IGN1cnNvclJnbjsKLQkgICAgUmVjdFJnbiAoZHJhZ1JnbiwgJmRyYWdSZWN0KTsKKwkgICAgUmVjdFJnbihkcmFnUmduLCAmZHJhZ1JlY3QpOwogCSAgICBkcmFnUmVjdENvbnRyb2wgPSBrTm90aGluZzsKIAl9CiAJLyoKQEAgLTM4NzEsMTIgKzM4OTQsMTIgQEAKIAkgICAgc2xlZXBweVRpY2sgPSA2MCp3dGltZS8xMDAwOwogCWVsc2UKIAkgICAgc2xlZXBweVRpY2sgPSAzMjc2NzsKLQlpZiAoV2FpdE5leHRFdmVudFdycCAobWFzaywgJmV2ZW50LCBzbGVlcHB5VGljaywgZHJhZ1JnbikpCisJaWYgKFdhaXROZXh0RXZlbnRXcnAobWFzaywgJmV2ZW50LCBzbGVlcHB5VGljaywgZHJhZ1JnbikpCiAJewogI2lmZGVmIFVTRV9TSU9VWAogCSAgICBpZiAoIVNJT1VYSGFuZGxlT25lRXZlbnQoJmV2ZW50KSkKICNlbmRpZgotCQlndWlfbWFjX2hhbmRsZV9ldmVudCAoJmV2ZW50KTsKKwkJZ3VpX21hY19oYW5kbGVfZXZlbnQoJmV2ZW50KTsKIAkgICAgaWYgKGlucHV0X2F2YWlsYWJsZSgpKQogCSAgICB7CiAJCWFsbG93X3Njcm9sbGJhciA9IEZBTFNFOwpAQCAtMzkyOSw3ICszOTUyLDcgQEAKICAgICByYy5ib3R0b20gPSBGSUxMX1kocm93MiArIDEpOwogCiAgICAgZ3VpX21jaF9zZXRfYmdfY29sb3IoZ3VpLmJhY2tfcGl4ZWwpOwotICAgIEVyYXNlUmVjdCAoJnJjKTsKKyAgICBFcmFzZVJlY3QoJnJjKTsKIH0KIAogLyoKQEAgLTM5NzAsNyArMzk5Myw3IEBACiAgICAgcmMuYm90dG9tID0gRklMTF9ZKGd1aS5zY3JvbGxfcmVnaW9uX2JvdCArIDEpOwogCiAgICAgZ3VpX21jaF9zZXRfYmdfY29sb3IoZ3VpLmJhY2tfcGl4ZWwpOwotICAgIFNjcm9sbFJlY3QgKCZyYywgMCwgLW51bV9saW5lcyAqIGd1aS5jaGFyX2hlaWdodCwgKFJnbkhhbmRsZSkgbmlsKTsKKyAgICBTY3JvbGxSZWN0KCZyYywgMCwgLW51bV9saW5lcyAqIGd1aS5jaGFyX2hlaWdodCwgKFJnbkhhbmRsZSkgbmlsKTsKIAogICAgIGd1aV9jbGVhcl9ibG9jayhndWkuc2Nyb2xsX3JlZ2lvbl9ib3QgLSBudW1fbGluZXMgKyAxLAogCQkJCQkJICAgICAgIGd1aS5zY3JvbGxfcmVnaW9uX2xlZnQsCkBAIC0zOTk1LDcgKzQwMTgsNyBAQAogCiAgICAgZ3VpX21jaF9zZXRfYmdfY29sb3IoZ3VpLmJhY2tfcGl4ZWwpOwogCi0gICAgU2Nyb2xsUmVjdCAoJnJjLCAwLCBndWkuY2hhcl9oZWlnaHQgKiBudW1fbGluZXMsIChSZ25IYW5kbGUpIG5pbCk7CisgICAgU2Nyb2xsUmVjdCgmcmMsIDAsIGd1aS5jaGFyX2hlaWdodCAqIG51bV9saW5lcywgKFJnbkhhbmRsZSkgbmlsKTsKIAogICAgIC8qIFVwZGF0ZSBndWkuY3Vyc29yX3JvdyBpZiB0aGUgY3Vyc29yIHNjcm9sbGVkIG9yIGNvcGllZCBvdmVyICovCiAgICAgaWYgKGd1aS5jdXJzb3Jfcm93ID49IGd1aS5yb3cKQEAgLTQwMjgsNiArNDA1MSw3IEBACiAgICAgU2NyYXBGbGF2b3JGbGFncwlzY3JhcEZsYWdzOwogICAgIFNjcmFwUmVmICAgIHNjcmFwID0gbmlsOwogICAgIE9TU3RhdHVzCWVycm9yOworICAgIGludAkJZmxhdm9yOwogI2Vsc2UKICAgICBsb25nCXNjcmFwT2Zmc2V0OwogICAgIGxvbmcJc2NyYXBTaXplOwpAQCAtNDAzOCwxOSArNDA2MiwzMSBAQAogCiAKICNpZmRlZiBVU0VfQ0FSQk9OSVpFRAotICAgIGVycm9yID0gR2V0Q3VycmVudFNjcmFwICgmc2NyYXApOworICAgIGVycm9yID0gR2V0Q3VycmVudFNjcmFwKCZzY3JhcCk7CiAgICAgaWYgKGVycm9yICE9IG5vRXJyKQogCXJldHVybjsKIAotICAgIGVycm9yID0gR2V0U2NyYXBGbGF2b3JGbGFncyhzY3JhcCwga1NjcmFwRmxhdm9yVHlwZVRleHQsICZzY3JhcEZsYWdzKTsKLSAgICBpZiAoZXJyb3IgIT0gbm9FcnIpCi0JcmV0dXJuOworICAgIGZsYXZvciA9IDA7CisgICAgZXJyb3IgPSBHZXRTY3JhcEZsYXZvckZsYWdzKHNjcmFwLCBWSU1TQ1JBUEZMQVZPUiwgJnNjcmFwRmxhZ3MpOworICAgIGlmIChlcnJvciA9PSBub0VycikKKyAgICB7CisJZXJyb3IgPSBHZXRTY3JhcEZsYXZvclNpemUoc2NyYXAsIFZJTVNDUkFQRkxBVk9SLCAmc2NyYXBTaXplKTsKKwlpZiAoZXJyb3IgPT0gbm9FcnIgJiYgc2NyYXBTaXplID4gMSkKKwkgICAgZmxhdm9yID0gMTsKKyAgICB9CiAKLSAgICBlcnJvciA9IEdldFNjcmFwRmxhdm9yU2l6ZSAoc2NyYXAsIGtTY3JhcEZsYXZvclR5cGVUZXh0LCAmc2NyYXBTaXplKTsKLSAgICBpZiAoZXJyb3IgIT0gbm9FcnIpCi0JcmV0dXJuOworICAgIGlmIChmbGF2b3IgPT0gMCkKKyAgICB7CisJZXJyb3IgPSBHZXRTY3JhcEZsYXZvckZsYWdzKHNjcmFwLCBrU2NyYXBGbGF2b3JUeXBlVGV4dCwgJnNjcmFwRmxhZ3MpOworCWlmIChlcnJvciAhPSBub0VycikKKwkgICAgcmV0dXJuOwogCi0gICAgUmVzZXJ2ZU1lbSAoc2NyYXBTaXplKTsKKwllcnJvciA9IEdldFNjcmFwRmxhdm9yU2l6ZShzY3JhcCwga1NjcmFwRmxhdm9yVHlwZVRleHQsICZzY3JhcFNpemUpOworCWlmIChlcnJvciAhPSBub0VycikKKwkgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlc2VydmVNZW0oc2NyYXBTaXplKTsKICNlbHNlCiAgICAgLyogQ2FsbCB0byBMb2FkU2NyYXAgc2VlbSB0byBhdm9pZCBwcm9ibGVtIHdpdGggY3Jhc2ggb24gZmlyc3QgcGFzdGUgKi8KICAgICBzY3JhcFNpemUgPSBMb2FkU2NyYXAoKTsKQEAgLTQwNjEsMjMgKzQwOTcsMjggQEAKICAgICB7CiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKIAkvKiBJbiBDQVJCT04gd2UgZG9uJ3QgbmVlZCBhIEhhbmRsZSwgYSBwb2ludGVyIGlzIGdvb2QgKi8KLQl0ZXh0T2ZDbGlwID0gTmV3SGFuZGxlIChzY3JhcFNpemUpOworCXRleHRPZkNsaXAgPSBOZXdIYW5kbGUoc2NyYXBTaXplKTsKIAkvKiB0ZW1wY2xpcCA9IGxhbGxvYyhzY3JhcFNpemUrMSwgVFJVRSk7ICovCiAjZWxzZQogCXRleHRPZkNsaXAgPSBOZXdIYW5kbGUoMCk7CiAjZW5kaWYKLQlITG9jayAodGV4dE9mQ2xpcCk7CisJSExvY2sodGV4dE9mQ2xpcCk7CiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKLQllcnJvciA9IEdldFNjcmFwRmxhdm9yRGF0YSAoc2NyYXAsIGtTY3JhcEZsYXZvclR5cGVUZXh0LCAmc2NyYXBTaXplLCAqdGV4dE9mQ2xpcCk7CisJZXJyb3IgPSBHZXRTY3JhcEZsYXZvckRhdGEoc2NyYXAsCisJCWZsYXZvciA/IFZJTVNDUkFQRkxBVk9SIDoga1NjcmFwRmxhdm9yVHlwZVRleHQsCisJCSZzY3JhcFNpemUsICp0ZXh0T2ZDbGlwKTsKICNlbHNlCiAJc2NyYXBTaXplID0gR2V0U2NyYXAodGV4dE9mQ2xpcCwgJ1RFWFQnLCAmc2NyYXBPZmZzZXQpOwogI2VuZGlmCiAKLQl0eXBlID0gKHN0cmNocigqdGV4dE9mQ2xpcCwgJ1xyJykgIT0gTlVMTCkgPyBNTElORSA6IE1DSEFSOworCWlmIChmbGF2b3IpCisJICAgIHR5cGUgPSAqKnRleHRPZkNsaXA7CisJZWxzZQorCSAgICB0eXBlID0gKHN0cmNocigqdGV4dE9mQ2xpcCwgJ1xyJykgIT0gTlVMTCkgPyBNTElORSA6IE1DSEFSOwogCiAJdGVtcGNsaXAgPSBsYWxsb2Moc2NyYXBTaXplKzEsIFRSVUUpOwotCVNUUk5DUFkodGVtcGNsaXAsICp0ZXh0T2ZDbGlwLCBzY3JhcFNpemUpOwotCXRlbXBjbGlwW3NjcmFwU2l6ZV0gPSAwOworCVNUUk5DUFkodGVtcGNsaXAsICp0ZXh0T2ZDbGlwICsgZmxhdm9yLCBzY3JhcFNpemUgLSBmbGF2b3IpOworCXRlbXBjbGlwW3NjcmFwU2l6ZSAtIGZsYXZvcl0gPSAwOwogCiAJc2VhcmNoQ1IgPSAoY2hhciAqKXRlbXBjbGlwOwogCXdoaWxlIChzZWFyY2hDUiAhPSBOVUxMKQpAQCAtNDE4NCwxNSArNDIyNSwyMyBAQAogCVplcm9TY3JhcCgpOwogI2VuZGlmCiAKKyNpZmRlZiBVU0VfQ0FSQk9OSVpFRAorCXRleHRPZkNsaXAgPSBOZXdIYW5kbGUoc2NyYXBTaXplICsgMSk7CisjZWxzZQogCXRleHRPZkNsaXAgPSBOZXdIYW5kbGUoc2NyYXBTaXplKTsKKyNlbmRpZgogCUhMb2NrKHRleHRPZkNsaXApOwogCi0JU1RSTkNQWSgqdGV4dE9mQ2xpcCwgc3RyLCBzY3JhcFNpemUpOwogI2lmZGVmIFVTRV9DQVJCT05JWkVECi0JR2V0Q3VycmVudFNjcmFwICgmc2NyYXApOworCSoqdGV4dE9mQ2xpcCA9IHR5cGU7CisJU1RSTkNQWSgqdGV4dE9mQ2xpcCArIDEsIHN0ciwgc2NyYXBTaXplKTsKKwlHZXRDdXJyZW50U2NyYXAoJnNjcmFwKTsKIAlQdXRTY3JhcEZsYXZvcihzY3JhcCwga1NjcmFwRmxhdm9yVHlwZVRleHQsIGtTY3JhcEZsYXZvck1hc2tOb25lLAotCQkJc2NyYXBTaXplLCAqdGV4dE9mQ2xpcCk7CisJCXNjcmFwU2l6ZSwgKnRleHRPZkNsaXAgKyAxKTsKKwlQdXRTY3JhcEZsYXZvcihzY3JhcCwgVklNU0NSQVBGTEFWT1IsIGtTY3JhcEZsYXZvck1hc2tOb25lLAorCQlzY3JhcFNpemUgKyAxLCAqdGV4dE9mQ2xpcCk7CiAjZWxzZQorCVNUUk5DUFkoKnRleHRPZkNsaXAsIHN0ciwgc2NyYXBTaXplKTsKIAlQdXRTY3JhcChzY3JhcFNpemUsICdURVhUJywgKnRleHRPZkNsaXApOwogI2VuZGlmCiAJSFVubG9jayh0ZXh0T2ZDbGlwKTsKQEAgLTQyMTEsNyArNDI2MCw3IEBACiB7CiAgICAgUmVjdAlWaW1Cb3VuZDsKIAotLyogIEhpZGVXaW5kb3cgKGd1aS5WaW1XaW5kb3cpOyAqLworLyogIEhpZGVXaW5kb3coZ3VpLlZpbVdpbmRvdyk7ICovCiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKICAgICBHZXRXaW5kb3dCb3VuZHMoZ3VpLlZpbVdpbmRvdywga1dpbmRvd0dsb2JhbFBvcnRSZ24sICZWaW1Cb3VuZCk7CiAjZWxzZQpAQCAtNDIzMSw3ICs0MjgwLDcgQEAKICAgICBTZXRXaW5kb3dCb3VuZHMoZ3VpLlZpbVdpbmRvdywga1dpbmRvd0dsb2JhbFBvcnRSZ24sICZWaW1Cb3VuZCk7CiAjZW5kaWYKIAotICAgIFNob3dXaW5kb3cgKGd1aS5WaW1XaW5kb3cpOworICAgIFNob3dXaW5kb3coZ3VpLlZpbVdpbmRvdyk7CiB9CiAKIC8qCkBAIC00MzIxLDExICs0MzcwLDExIEBACiAjZW5kaWYKICAgICB7CiAJLyogQ2FyYm9uIHN1Z2dlc3QgdXNlIG9mCi0JICogT1NTdGF0dXMgQ3JlYXRlTmV3TWVudSAoIE1lbnVJRCwgTWVudUF0dHJpYnV0ZXMsIE1lbnVSZWYgKik7Ci0JICogT1NTdGF0dXMgU2V0TWVudVRpdGxlICggTWVudVJlZiwgQ29uc3RTdHIyNTVQYXJhbSB0aXRsZSApOworCSAqIE9TU3RhdHVzIENyZWF0ZU5ld01lbnUoTWVudUlELCBNZW51QXR0cmlidXRlcywgTWVudVJlZiAqKTsKKwkgKiBPU1N0YXR1cyBTZXRNZW51VGl0bGUoTWVudVJlZiwgQ29uc3RTdHIyNTVQYXJhbSB0aXRsZSk7CiAJICovCiAJbWVudS0+c3VibWVudV9pZCA9IG5leHRfYXZhaWxfaWQ7Ci0JbWVudS0+c3VibWVudV9oYW5kbGUgPSBOZXdNZW51IChtZW51LT5zdWJtZW51X2lkLCBuYW1lKTsKKwltZW51LT5zdWJtZW51X2hhbmRsZSA9IE5ld01lbnUobWVudS0+c3VibWVudV9pZCwgbmFtZSk7CiAJbmV4dF9hdmFpbF9pZCsrOwogICAgIH0KIApAQCAtNDM0MSw3ICs0MzkwLDcgQEAKICNpZmRlZiBVU0VfSEVMUE1FTlUKIAlpZiAobWVudS0+c3VibWVudV9pZCAhPSBrSE1IZWxwTWVudUlEKQogI2VuZGlmCi0JICAgIEluc2VydE1lbnUgKG1lbnUtPnN1Ym1lbnVfaGFuZGxlLCBtZW51X2FmdGVyX21lKTsgLyogaW5zZXJ0IGJlZm9yZSAqLworCSAgICBJbnNlcnRNZW51KG1lbnUtPnN1Ym1lbnVfaGFuZGxlLCBtZW51X2FmdGVyX21lKTsgLyogaW5zZXJ0IGJlZm9yZSAqLwogI2lmIDEKIAkvKiBWaW0gc2hvdWxkIG5vcm1hbGx5IHVwZGF0ZSBpdC4gVE9ETzogdmVyaWZ5ICovCiAJRHJhd01lbnVCYXIoKTsKQEAgLTQzNTEsNyArNDQwMCw3IEBACiAgICAgewogCS8qIEFkZGluZyBhcyBhIHN1Ym1lbnUgKi8KIAotCWluZGV4ID0gZ3VpX21hY19nZXRfbWVudV9pdGVtX2luZGV4IChtZW51KTsKKwlpbmRleCA9IGd1aV9tYWNfZ2V0X21lbnVfaXRlbV9pbmRleChtZW51KTsKIAogCS8qIENhbGwgSW5zZXJ0TWVudUl0ZW0gZm9sbG93ZWQgYnkgU2V0TWVudUl0ZW1UZXh0CiAJICogdG8gYXZvaWQgc3BlY2lhbCBjaGFyYWN0ZXIgcmVjb2duaXRpb24gYnkgSW5zZXJ0TWVudUl0ZW0KQEAgLTQzNjMsNyArNDQxMiw3IEBACiAJSW5zZXJ0TWVudShtZW51LT5zdWJtZW51X2hhbmRsZSwgaGllck1lbnUpOwogICAgIH0KIAotICAgIHZpbV9mcmVlIChuYW1lKTsKKyAgICB2aW1fZnJlZShuYW1lKTsKIAogI2lmIDAKICAgICAvKiBEb25lIGJ5IFZpbSBsYXRlciBvbiAqLwpAQCAtNDUwMiw3ICs0NTUxLDcgQEAKIGd1aV9tY2hfZGVzdHJveV9tZW51KG1lbnUpCiAgICAgdmltbWVudV9UCSptZW51OwogewotICAgIHNob3J0CWluZGV4ID0gZ3VpX21hY19nZXRfbWVudV9pdGVtX2luZGV4IChtZW51KTsKKyAgICBzaG9ydAlpbmRleCA9IGd1aV9tYWNfZ2V0X21lbnVfaXRlbV9pbmRleChtZW51KTsKIAogICAgIGlmIChpbmRleCA+IDApCiAgICAgewpAQCAtNDUxMywyMCArNDU2MiwyMCBAQAogI2VuZGlmCiAJewogCSAgICAvKiBGb3Igbm93IGp1c3QgZG9uJ3QgZGVsZXRlIGhlbHAgbWVudSBpdGVtcy4gKEh1aD8gRGFueSkgKi8KLQkgICAgRGVsZXRlTWVudUl0ZW0gKG1lbnUtPnBhcmVudC0+c3VibWVudV9oYW5kbGUsIGluZGV4KTsKKwkgICAgRGVsZXRlTWVudUl0ZW0obWVudS0+cGFyZW50LT5zdWJtZW51X2hhbmRsZSwgaW5kZXgpOwogCiAJICAgIC8qIERlbGV0ZSB0aGUgTWVudSBpZiBpdCB3YXMgYSBoaWVyYXJjaGljYWwgTWVudSAqLwogCSAgICBpZiAobWVudS0+c3VibWVudV9pZCAhPSAwKQogCSAgICB7Ci0JCURlbGV0ZU1lbnUgKG1lbnUtPnN1Ym1lbnVfaWQpOwotCQlEaXNwb3NlTWVudSAobWVudS0+c3VibWVudV9oYW5kbGUpOworCQlEZWxldGVNZW51KG1lbnUtPnN1Ym1lbnVfaWQpOworCQlEaXNwb3NlTWVudShtZW51LT5zdWJtZW51X2hhbmRsZSk7CiAJICAgIH0KIAl9CiAjaWZkZWYgVVNFX0hFTFBNRU5VCiAjIGlmZGVmIERFQlVHX01BQ19NRU5VCiAJZWxzZQogCXsKLQkgICAgcHJpbnRmICgiZ21kbSAxXG4iKTsKKwkgICAgcHJpbnRmKCJnbWRtIDFcbiIpOwogCX0KICMgZW5kaWYKICNlbmRpZgpAQCAtNDUzNCw3ICs0NTgzLDcgQEAKICNpZmRlZiBERUJVR19NQUNfTUVOVQogICAgICAgZWxzZQogICAgICAgewotCXByaW50ZiAoImdtZG0gMlxuIik7CisJcHJpbnRmKCJnbWRtIDJcbiIpOwogICAgICAgfQogI2VuZGlmCiAgICAgfQpAQCAtNDU0NSw4ICs0NTk0LDggQEAKIAlpZiAobWVudS0+c3VibWVudV9pZCAhPSBrSE1IZWxwTWVudUlEKQogI2VuZGlmCiAJewotCSAgICBEZWxldGVNZW51IChtZW51LT5zdWJtZW51X2lkKTsKLQkgICAgRGlzcG9zZU1lbnUgKG1lbnUtPnN1Ym1lbnVfaGFuZGxlKTsKKwkgICAgRGVsZXRlTWVudShtZW51LT5zdWJtZW51X2lkKTsKKwkgICAgRGlzcG9zZU1lbnUobWVudS0+c3VibWVudV9oYW5kbGUpOwogCX0KICAgICB9CiAgICAgLyogU2hvdWxkbid0IHRoaXMgYmUgYWxyZWFkeSBkb25lIGJ5IFZpbS4gVE9ETzogQ2hlY2sgKi8KQEAgLTQ1NjIsNyArNDYxMSw3IEBACiAgICAgaW50CQlncmV5OwogewogICAgIC8qIFRPRE86IENoZWNrIGlmIG1lbnUgcmVhbGx5IGV4aXN0cyAqLwotICAgIHNob3J0IGluZGV4ID0gZ3VpX21hY19nZXRfbWVudV9pdGVtX2luZGV4IChtZW51KTsKKyAgICBzaG9ydCBpbmRleCA9IGd1aV9tYWNfZ2V0X21lbnVfaXRlbV9pbmRleChtZW51KTsKIC8qCiAgICAgaW5kZXggPSBtZW51LT5pbmRleDsKICovCkBAIC00NTkzLDcgKzQ2NDIsNyBAQAogICAgIGludAkJaGlkZGVuOwogewogICAgIC8qIFRoZXJlJ3Mgbm8gaGlkZGVuIG1vZGUgb24gTWFjT1MgKi8KLSAgICBndWlfbWNoX21lbnVfZ3JleSAobWVudSwgaGlkZGVuKTsKKyAgICBndWlfbWNoX21lbnVfZ3JleShtZW51LCBoaWRkZW4pOwogfQogCiAKQEAgLTQ2MjIsNyArNDY3MSw3IEBACiAJSGlkZUNvbnRyb2woc2ItPmlkKTsKIAogI2lmZGVmIERFQlVHX01BQ19TQgotICAgIHByaW50ZiAoImVuYl9zYiAoJXgpICV4XG4iLHNiLT5pZCwgZmxhZyk7CisgICAgcHJpbnRmKCJlbmJfc2IgKCV4KSAleFxuIixzYi0+aWQsIGZsYWcpOwogI2VuZGlmCiB9CiAKQEAgLTQ2MzcsNyArNDY4Niw3IEBACiAgICAgU2V0Q29udHJvbDMyQml0TWluaW11bSAoc2ItPmlkLCAwKTsKICAgICBTZXRDb250cm9sMzJCaXRWYWx1ZSAgIChzYi0+aWQsIHZhbCk7CiAjaWZkZWYgREVCVUdfTUFDX1NCCi0gICAgcHJpbnRmICgidGh1bWJfc2IgKCV4KSAleCwgJXgsJXhcbiIsc2ItPmlkLCB2YWwsIHNpemUsIG1heCk7CisgICAgcHJpbnRmKCJ0aHVtYl9zYiAoJXgpICV4LCAleCwleFxuIixzYi0+aWQsIHZhbCwgc2l6ZSwgbWF4KTsKICNlbmRpZgogfQogCkBAIC00NjUyLDEzICs0NzAxLDEzIEBACiAgICAgZ3VpX21jaF9zZXRfYmdfY29sb3IoZ3VpLmJhY2tfcGl4ZWwpOwogLyogIGlmIChndWkud2hpY2hfc2Nyb2xsYmFyc1tTQkFSX0xFRlRdKQogICAgIHsKLQlNb3ZlQ29udHJvbCAoc2ItPmlkLCB4LTE2LCB5KTsKLQlTaXplQ29udHJvbCAoc2ItPmlkLCB3ICsgMSwgaCk7CisJTW92ZUNvbnRyb2woc2ItPmlkLCB4LTE2LCB5KTsKKwlTaXplQ29udHJvbChzYi0+aWQsIHcgKyAxLCBoKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLQlNb3ZlQ29udHJvbCAoc2ItPmlkLCB4LCB5KTsKLQlTaXplQ29udHJvbCAoc2ItPmlkLCB3ICsgMSwgaCk7CisJTW92ZUNvbnRyb2woc2ItPmlkLCB4LCB5KTsKKwlTaXplQ29udHJvbChzYi0+aWQsIHcgKyAxLCBoKTsKICAgICB9Ki8KICAgICBpZiAoc2IgPT0gJmd1aS5ib3R0b21fc2JhcikKIAloICs9IDE7CkBAIC00NjY4LDEwICs0NzE3LDEwIEBACiAgICAgaWYgKGd1aS53aGljaF9zY3JvbGxiYXJzW1NCQVJfTEVGVF0pCiAJeCAtPSAxNTsKIAotICAgIE1vdmVDb250cm9sIChzYi0+aWQsIHgsIHkpOwotICAgIFNpemVDb250cm9sIChzYi0+aWQsIHcsIGgpOworICAgIE1vdmVDb250cm9sKHNiLT5pZCwgeCwgeSk7CisgICAgU2l6ZUNvbnRyb2woc2ItPmlkLCB3LCBoKTsKICNpZmRlZiBERUJVR19NQUNfU0IKLSAgICBwcmludGYgKCJzaXplX3NiICgleCkgJXgsICV4LCAleCwgJXhcbiIsc2ItPmlkLCB4LCB5LCB3LCBoKTsKKyAgICBwcmludGYoInNpemVfc2IgKCV4KSAleCwgJXgsICV4LCAleFxuIixzYi0+aWQsIHgsIHksIHcsIGgpOwogI2VuZGlmCiB9CiAKQEAgLTQ2ODcsNyArNDczNiw3IEBACiAgICAgYm91bmRzLnJpZ2h0ID0gLTEwOwogICAgIGJvdW5kcy5sZWZ0ID0gLTE2OwogCi0gICAgc2ItPmlkID0gTmV3Q29udHJvbCAoZ3VpLlZpbVdpbmRvdywKKyAgICBzYi0+aWQgPSBOZXdDb250cm9sKGd1aS5WaW1XaW5kb3csCiAJCQkgJmJvdW5kcywKIAkJCSAiXHBTY3JvbGxCYXIiLAogCQkJIFRSVUUsCkBAIC00NzAxLDcgKzQ3NTAsNyBAQAogI2VuZGlmCiAJCQkgKGxvbmcpIHNiLT5pZGVudCk7CiAjaWZkZWYgREVCVUdfTUFDX1NCCi0gICAgcHJpbnRmICgiY3JlYXRlX3NiICgleCkgJXhcbiIsc2ItPmlkLCBvcmllbnQpOworICAgIHByaW50ZigiY3JlYXRlX3NiICgleCkgJXhcbiIsc2ItPmlkLCBvcmllbnQpOwogI2VuZGlmCiB9CiAKQEAgLTQ3MTAsOSArNDc1OSw5IEBACiAgICAgc2Nyb2xsYmFyX1QgKnNiOwogewogICAgIGd1aV9tY2hfc2V0X2JnX2NvbG9yKGd1aS5iYWNrX3BpeGVsKTsKLSAgICBEaXNwb3NlQ29udHJvbCAoc2ItPmlkKTsKKyAgICBEaXNwb3NlQ29udHJvbChzYi0+aWQpOwogI2lmZGVmIERFQlVHX01BQ19TQgotICAgIHByaW50ZiAoImRlc3Rfc2IgKCV4KSBcbiIsc2ItPmlkKTsKKyAgICBwcmludGYoImRlc3Rfc2IgKCV4KSBcbiIsc2ItPmlkKTsKICNlbmRpZgogfQogCkBAIC00ODE4LDcgKzQ4NjcsNyBAQAogICAgIE9TRXJyCQllcnJvcjsKIAogICAgIC8qIEdldCBOYXZpZ2F0aW9uIFNlcnZpY2UgRGVmYXVsdHMgdmFsdWUgKi8KLSAgICBOYXZHZXREZWZhdWx0RGlhbG9nT3B0aW9ucyAoJm5hdk9wdGlvbnMpOworICAgIE5hdkdldERlZmF1bHREaWFsb2dPcHRpb25zKCZuYXZPcHRpb25zKTsKIAogCiAgICAgLyogVE9ETzogSWYgd2UgZ2V0IGEgOmJyb3dzZSBhcmdzLCBzZXQgdGhlIE11bHRpcGxlIGJpdC4gKi8KQEAgLTQ4MjgsOCArNDg3Nyw4IEBACiAJCQkgICAgLyoJIHwgIGtOYXZBbGxvd011bHRpcGxlRmlsZXMgKi8KIAkJCQkgfCAga05hdkFsbG93U3RhdGlvbmVyeTsKIAotICAgICh2b2lkKSBDMlBhc2NhbFN0cmluZyAodGl0bGUsICAgJm5hdk9wdGlvbnMubWVzc2FnZSk7Ci0gICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nIChkZmx0LCAgICAmbmF2T3B0aW9ucy5zYXZlZEZpbGVOYW1lKTsKKyAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcodGl0bGUsICAgJm5hdk9wdGlvbnMubWVzc2FnZSk7CisgICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nKGRmbHQsICAgICZuYXZPcHRpb25zLnNhdmVkRmlsZU5hbWUpOwogICAgIC8qIENvdWxkIHNldCBjbGllbnROYW1lPwogICAgICAqCQkgd2luZG93VGl0bGU/ICh0aGVyZSdzIG5vIHRpdGxlIGJhcj8pCiAgICAgICovCkBAIC00ODM3LDcgKzQ4ODYsNyBAQAogICAgIGlmIChzYXZpbmcpCiAgICAgewogCS8qIENoYW5nZSBmaXJzdCBwYXJtIEFFRGVzYyAodHlwZUZTUykgKmRlZmF1bHRMb2NhdGlvbiB0byBtYXRjaCBkZmx0ICovCi0JTmF2UHV0RmlsZSAoTlVMTCwgJnJlcGx5LCAmbmF2T3B0aW9ucywgTlVMTCwgJ1RFWFQnLCAnVklNIScsIE5VTEwpOworCU5hdlB1dEZpbGUoTlVMTCwgJnJlcGx5LCAmbmF2T3B0aW9ucywgTlVMTCwgJ1RFWFQnLCAnVklNIScsIE5VTEwpOwogCWlmICghcmVwbHkudmFsaWRSZWNvcmQpCiAJICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQ4NTEsNyArNDkwMCw3IEBACiAKICAgICBmbmFtZXMgPSBuZXdfZm5hbWVzX2Zyb21fQUVEZXNjKCZyZXBseS5zZWxlY3Rpb24sICZudW1GaWxlcywgJmVycm9yKTsKIAotICAgIE5hdkRpc3Bvc2VSZXBseSAoJnJlcGx5KTsKKyAgICBOYXZEaXNwb3NlUmVwbHkoJnJlcGx5KTsKIAogICAgIGlmIChmbmFtZXMpCiAgICAgewpAQCAtNDg3MCwyNiArNDkxOSwyNiBAQAogCiAgICAgLyogVE9ETzogc3BsaXQgZGZsdCBpbiBwYXRoIGFuZCBmaWxlbmFtZSAqLwogCi0gICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nICh0aXRsZSwgICAmUHJvbXB0KTsKLSAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcgKGRmbHQsICAgICZEZWZhdWx0TmFtZSk7Ci0gICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nIChpbml0ZGlyLCAmRGlyZWN0b3J5KTsKKyAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcodGl0bGUsICAgJlByb21wdCk7CisgICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nKGRmbHQsICAgICZEZWZhdWx0TmFtZSk7CisgICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nKGluaXRkaXIsICZEaXJlY3RvcnkpOwogCiAgICAgaWYgKHNhdmluZykKICAgICB7CiAJLyogVXNlIGEgY3VzdG9uIGZpbHRlciBpbnN0ZWFkIG9mIG5pbCBGQVEgOS00ICovCi0JU3RhbmRhcmRQdXRGaWxlIChQcm9tcHQsIERlZmF1bHROYW1lLCAgJnJlcGx5KTsKKwlTdGFuZGFyZFB1dEZpbGUoUHJvbXB0LCBEZWZhdWx0TmFtZSwgICZyZXBseSk7CiAJaWYgKCFyZXBseS5zZkdvb2QpCiAJICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlCiAgICAgewotCVN0YW5kYXJkR2V0RmlsZSAobmlsLCAtMSwgZmlsZVR5cGVzLCAmcmVwbHkpOworCVN0YW5kYXJkR2V0RmlsZShuaWwsIC0xLCBmaWxlVHlwZXMsICZyZXBseSk7CiAJaWYgKCFyZXBseS5zZkdvb2QpCiAJICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIC8qIFdvcmsgZmluZSBidXQgYXBwZW5kIGEgOiBmb3IgbmV3IGZpbGUgKi8KLSAgICByZXR1cm4gKEZ1bGxQYXRoRnJvbUZTU3BlY19zYXZlIChyZXBseS5zZkZpbGUpKTsKKyAgICByZXR1cm4gKEZ1bGxQYXRoRnJvbUZTU3BlY19zYXZlKHJlcGx5LnNmRmlsZSkpOwogCiAgICAgLyogU2hvcnRlbiB0aGUgZmlsZSBuYW1lIGlmIHBvc3NpYmxlICovCiAvKiAgICBtY2hfZGlybmFtZShJT2J1ZmYsIElPU0laRSk7CkBAIC00OTQzLDkgKzQ5OTIsOSBAQAogewogI2lmIDAgLyogVVNFX0NBUkJPTklaRUQgKi8KICAgICAvKiBVbnRlc3RlZCAqLwotICAgIE1vdmVEaWFsb2dJdGVtICh0aGVEaWFsb2csIGl0ZW1OdW1iZXIsIFgsIFkpOworICAgIE1vdmVEaWFsb2dJdGVtKHRoZURpYWxvZywgaXRlbU51bWJlciwgWCwgWSk7CiAgICAgaWYgKGluQm94ICE9IG5pbCkKLQlHZXREaWFsb2dJdGVtICh0aGVEaWFsb2csIGl0ZW1OdW1iZXIsICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsIGluQm94KTsKKwlHZXREaWFsb2dJdGVtKHRoZURpYWxvZywgaXRlbU51bWJlciwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgaW5Cb3gpOwogI2Vsc2UKICAgICBzaG9ydAlpdGVtVHlwZTsKICAgICBIYW5kbGUJaXRlbUhhbmRsZTsKQEAgLTQ5NTUsMTQgKzUwMDQsMTQgQEAKICAgICBpZiAoaW5Cb3ggIT0gbmlsKQogCWl0ZW1Cb3ggPSBpbkJveDsKIAotICAgIEdldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaXRlbU51bWJlciwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgaXRlbUJveCk7Ci0gICAgT2Zmc2V0UmVjdCAoaXRlbUJveCwgLWl0ZW1Cb3gtPmxlZnQsIC1pdGVtQm94LT50b3ApOwotICAgIE9mZnNldFJlY3QgKGl0ZW1Cb3gsIFgsIFkpOworICAgIEdldERpYWxvZ0l0ZW0odGhlRGlhbG9nLCBpdGVtTnVtYmVyLCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCBpdGVtQm94KTsKKyAgICBPZmZzZXRSZWN0KGl0ZW1Cb3gsIC1pdGVtQm94LT5sZWZ0LCAtaXRlbUJveC0+dG9wKTsKKyAgICBPZmZzZXRSZWN0KGl0ZW1Cb3gsIFgsIFkpOwogICAgIC8qIFRvIG1vdmUgYSBjb250cm9sIChsaWtlIGEgYnV0dG9uKSB3ZSBuZWVkIHRvIGNhbGwgYm90aAogICAgICAqIE1vdmVDb250cm9sIGFuZCBTZXREaWFsb2dJdGVtLiBGQVEgNi0xOCAqLwogICAgIGlmICgxKSAvKihpdGVtVHlwZSAmIGtDb250cm9sRGlhbG9nSXRlbSkgKi8KLQlNb3ZlQ29udHJvbCAoKENvbnRyb2xSZWYpIGl0ZW1IYW5kbGUsIFgsIFkpOwotICAgIFNldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaXRlbU51bWJlciwgaXRlbVR5cGUsIGl0ZW1IYW5kbGUsIGl0ZW1Cb3gpOworCU1vdmVDb250cm9sKChDb250cm9sUmVmKSBpdGVtSGFuZGxlLCBYLCBZKTsKKyAgICBTZXREaWFsb2dJdGVtKHRoZURpYWxvZywgaXRlbU51bWJlciwgaXRlbVR5cGUsIGl0ZW1IYW5kbGUsIGl0ZW1Cb3gpOwogI2VuZGlmCiB9CiAKQEAgLTQ5NzcsNyArNTAyNiw3IEBACiAgICAgSGFuZGxlCWl0ZW1IYW5kbGU7CiAgICAgUmVjdAlpdGVtQm94OwogCi0gICAgR2V0RGlhbG9nSXRlbSAodGhlRGlhbG9nLCBpdGVtTnVtYmVyLCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmaXRlbUJveCk7CisgICAgR2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGl0ZW1OdW1iZXIsICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsICZpdGVtQm94KTsKIAogICAgIC8qIFdoZW4gd2lkdGggb3IgaGVpZ2h0IGlzIHplcm8gZG8gbm90IGNoYW5nZSBpdCAqLwogICAgIGlmICh3aWR0aCAgPT0gMCkKQEAgLTQ5ODYsNyArNTAzNSw3IEBACiAJaGVpZ2h0ID0gaXRlbUJveC5ib3R0b20gLSBpdGVtQm94LnRvcDsKIAogI2lmIDAgLyogVVNFX0NBUkJPTklaRUQgKi8KLSAgICBTaXplRGlhbG9nSXRlbSAodGhlRGlhbG9nLCBpdGVtTnVtYmVyLCB3aWR0aCwgaGVpZ2h0KTsgLyogVW50ZXN0ZWQgKi8KKyAgICBTaXplRGlhbG9nSXRlbSh0aGVEaWFsb2csIGl0ZW1OdW1iZXIsIHdpZHRoLCBoZWlnaHQpOyAvKiBVbnRlc3RlZCAqLwogI2Vsc2UKICAgICAvKiBSZXNpemUgdGhlIGJvdW5kaW5nIGJveCAqLwogICAgIGl0ZW1Cb3gucmlnaHQgID0gaXRlbUJveC5sZWZ0ICsgd2lkdGg7CkBAIC00OTk1LDEwICs1MDQ0LDEwIEBACiAgICAgLyogVG8gcmVzaXplIGEgY29udHJvbCAobGlrZSBhIGJ1dHRvbikgd2UgbmVlZCB0byBjYWxsIGJvdGgKICAgICAgKiBTaXplQ29udHJvbCBhbmQgU2V0RGlhbG9nSXRlbS4gKGRlZHVjdGVkIGZyb20gRkFRIDYtMTgpICovCiAgICAgaWYgKGl0ZW1UeXBlICYga0NvbnRyb2xEaWFsb2dJdGVtKQotCVNpemVDb250cm9sICgoQ29udHJvbFJlZikgaXRlbUhhbmRsZSwgd2lkdGgsIGhlaWdodCk7CisJU2l6ZUNvbnRyb2woKENvbnRyb2xSZWYpIGl0ZW1IYW5kbGUsIHdpZHRoLCBoZWlnaHQpOwogCiAgICAgLyogQ29uZmlndXJlIGJhY2sgdGhlIGl0ZW0gKi8KLSAgICBTZXREaWFsb2dJdGVtICh0aGVEaWFsb2csIGl0ZW1OdW1iZXIsIGl0ZW1UeXBlLCBpdGVtSGFuZGxlLCAmaXRlbUJveCk7CisgICAgU2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGl0ZW1OdW1iZXIsIGl0ZW1UeXBlLCBpdGVtSGFuZGxlLCAmaXRlbUJveCk7CiAjZW5kaWYKIH0KIApAQCAtNTAxMiwxMiArNTA2MSwxMiBAQAogICAgIEhhbmRsZQlpdGVtSGFuZGxlOwogICAgIFJlY3QJaXRlbUJveDsKIAotICAgIEdldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaXRlbU51bWJlciwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJml0ZW1Cb3gpOworICAgIEdldERpYWxvZ0l0ZW0odGhlRGlhbG9nLCBpdGVtTnVtYmVyLCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmaXRlbUJveCk7CiAKICAgICBpZiAoaXRlbVR5cGUgJiBrQ29udHJvbERpYWxvZ0l0ZW0pCi0JU2V0Q29udHJvbFRpdGxlICgoQ29udHJvbFJlZikgaXRlbUhhbmRsZSwgaXRlbU5hbWUpOworCVNldENvbnRyb2xUaXRsZSgoQ29udHJvbFJlZikgaXRlbUhhbmRsZSwgaXRlbU5hbWUpOwogICAgIGVsc2UKLQlTZXREaWFsb2dJdGVtVGV4dCAoaXRlbUhhbmRsZSwgaXRlbU5hbWUpOworCVNldERpYWxvZ0l0ZW1UZXh0KGl0ZW1IYW5kbGUsIGl0ZW1OYW1lKTsKIH0KIAogICAgIGludApAQCAtNTA3Miw3ICs1MTIxLDcgQEAKICAgICB2ZXJ0aWNhbCA9ICh2aW1fc3RyY2hyKHBfZ28sIEdPX1ZFUlRJQ0FMKSAhPSBOVUxMKTsKIAogICAgIC8qIENyZWF0ZSBhIG5ldyBEaWFsb2cgQm94IGZyb20gdGVtcGxhdGUuICovCi0gICAgdGhlRGlhbG9nID0gR2V0TmV3RGlhbG9nICgxMjksIG5pbCwgKFdpbmRvd1JlZikgLTEpOworICAgIHRoZURpYWxvZyA9IEdldE5ld0RpYWxvZygxMjksIG5pbCwgKFdpbmRvd1JlZikgLTEpOwogCiAgICAgLyogR2V0IHRoZSBXaW5kb3dSZWYgKi8KICAgICB0aGVXaW5kb3cgPSBHZXREaWFsb2dXaW5kb3codGhlRGlhbG9nKTsKQEAgLTUwODMsMTUgKzUxMzIsMTUgQEAKICAgICAgKiAgICB3aXRoaW4gYSB2aXNpYmxlIHdpbmRvdy4gKG5vbi1DYXJib24gTWFjT1MgOSkKICAgICAgKiBDb3VsZCBiZSBhdm9pZGVkIGJ5IGNoYW5naW5nIHRoZSByZXNvdXJjZS4KICAgICAgKi8KLSAgICBIaWRlV2luZG93ICh0aGVXaW5kb3cpOworICAgIEhpZGVXaW5kb3codGhlV2luZG93KTsKIAogICAgIC8qIENoYW5nZSB0aGUgZ3JhcGhpY2FsIHBvcnQgdG8gdGhlIGRpYWxvZywKICAgICAgKiBzbyB3ZSBjYW4gbWVhc3VyZSB0aGUgdGV4dCB3aXRoIHRoZSBwcm9wZXIgZm9udCAqLwotICAgIEdldFBvcnQgKCZvbGRQb3J0KTsKKyAgICBHZXRQb3J0KCZvbGRQb3J0KTsKICNpZmRlZiBVU0VfQ0FSQk9OSVpFRAotICAgIFNldFBvcnREaWFsb2dQb3J0ICh0aGVEaWFsb2cpOworICAgIFNldFBvcnREaWFsb2dQb3J0KHRoZURpYWxvZyk7CiAjZWxzZQotICAgIFNldFBvcnQgKHRoZURpYWxvZyk7CisgICAgU2V0UG9ydCh0aGVEaWFsb2cpOwogI2VuZGlmCiAKICAgICAvKiBHZXQgdGhlIGluZm8gYWJvdXQgdGhlIGRlZmF1bHQgdGV4dCwKQEAgLTUxMDIsMTIgKzUxNTEsMTIgQEAKICAgICAvKglTZXQgdGhlIGRpYWxvZyB0aXRsZSAqLwogICAgIGlmICh0aXRsZSAhPSBOVUxMKQogICAgIHsKLQkodm9pZCkgQzJQYXNjYWxTdHJpbmcgKHRpdGxlLCAmUGFzY2FsVGl0bGUpOwotCVNldFdUaXRsZSAodGhlV2luZG93LCBQYXNjYWxUaXRsZSk7CisJKHZvaWQpIEMyUGFzY2FsU3RyaW5nKHRpdGxlLCAmUGFzY2FsVGl0bGUpOworCVNldFdUaXRsZSh0aGVXaW5kb3csIFBhc2NhbFRpdGxlKTsKICAgICB9CiAKICAgICAvKiBDcmVhdGVzIHRoZSBidXR0b25zIGFuZCBhZGQgdGhlbSB0byB0aGUgRGlhbG9nIEJveC4gKi8KLSAgICBidXR0b25ESVRMID0gR2V0UmVzb3VyY2UgKCdESVRMJywgMTMwKTsKKyAgICBidXR0b25ESVRMID0gR2V0UmVzb3VyY2UoJ0RJVEwnLCAxMzApOwogICAgIGJ1dHRvbkNoYXIgPSBidXR0b25zOwogICAgIGJ1dHRvbiA9IDA7CiAKQEAgLTUxMjYsMzAgKzUxNzUsMzAgQEAKIAluYW1lWzBdID0gbGVuOwogCiAJLyogQWRkIHRoZSBidXR0b24gKi8KLQlBcHBlbmRESVRMICh0aGVEaWFsb2csIGJ1dHRvbkRJVEwsIG92ZXJsYXlESVRMKTsgLyogYXBwZW5kRElUTFJpZ2h0KTsgKi8KKwlBcHBlbmRESVRMKHRoZURpYWxvZywgYnV0dG9uRElUTCwgb3ZlcmxheURJVEwpOyAvKiBhcHBlbmRESVRMUmlnaHQpOyAqLwogCiAJLyogQ2hhbmdlIHRoZSBidXR0b24ncyBuYW1lICovCi0JbWFjU2V0RGlhbG9nSXRlbVRleHQgKHRoZURpYWxvZywgYnV0dG9uLCBuYW1lKTsKKwltYWNTZXREaWFsb2dJdGVtVGV4dCh0aGVEaWFsb2csIGJ1dHRvbiwgbmFtZSk7CiAKIAkvKiBSZXNpemUgdGhlIGJ1dHRvbiB0byBmaXQgaXRzIG5hbWUgKi8KLQl3aWR0aCA9IFN0cmluZ1dpZHRoIChuYW1lKSArIDIgKiBkZmx0QnV0dG9uRWRnZTsKKwl3aWR0aCA9IFN0cmluZ1dpZHRoKG5hbWUpICsgMiAqIGRmbHRCdXR0b25FZGdlOwogCS8qIExpbWl0ZSB0aGUgc2l6ZSBvZiBhbnkgYnV0dG9uIHRvIGFuIGFjY2VwdGFibGUgdmFsdWUuICovCiAJLyogVE9ETzogU2hvdWxkIGJlIGJhc2VkIG9uIHRoZSBtZXNzYWdlIHdpZHRoICovCiAJaWYgKHdpZHRoID4gbWF4QnV0dG9uV2lkdGgpCiAJICAgIHdpZHRoID0gbWF4QnV0dG9uV2lkdGg7Ci0JbWFjU2l6ZURpYWxvZ0l0ZW0gKHRoZURpYWxvZywgYnV0dG9uLCB3aWR0aCwgMCk7CisJbWFjU2l6ZURpYWxvZ0l0ZW0odGhlRGlhbG9nLCBidXR0b24sIHdpZHRoLCAwKTsKIAogCXRvdGFsQnV0dG9uV2lkdGggKz0gd2lkdGg7CiAKIAlpZiAod2lkdGggPiB3aWRlc3RCdXR0b24pCiAJICAgIHdpZGVzdEJ1dHRvbiA9IHdpZHRoOwogICAgIH0KLSAgICBSZWxlYXNlUmVzb3VyY2UgKGJ1dHRvbkRJVEwpOworICAgIFJlbGVhc2VSZXNvdXJjZShidXR0b25ESVRMKTsKICAgICBsYXN0QnV0dG9uID0gYnV0dG9uOwogCiAgICAgLyogQWRkIHRoZSBpY29uIHRvIHRoZSBEaWFsb2cgQm94LiAqLwogICAgIGljb25JdG0uaWR4ID0gbGFzdEJ1dHRvbiArIDE7Ci0gICAgaWNvbkRJVEwgPSBHZXRSZXNvdXJjZSAoJ0RJVEwnLCAxMzEpOworICAgIGljb25ESVRMID0gR2V0UmVzb3VyY2UoJ0RJVEwnLCAxMzEpOwogICAgIHN3aXRjaCAodHlwZSkKICAgICB7CiAJY2FzZSBWSU1fR0VORVJJQzogIHVzZUljb24gPSBrTm90ZUljb247CkBAIC01MTU5LDQxICs1MjA4LDQxIEBACiAJY2FzZSBWSU1fUVVFU1RJT046IHVzZUljb24gPSBrTm90ZUljb247CiAJZGVmYXVsdDogICAgICB1c2VJY29uID0ga1N0b3BJY29uOwogICAgIH07Ci0gICAgQXBwZW5kRElUTCAodGhlRGlhbG9nLCBpY29uRElUTCwgb3ZlcmxheURJVEwpOwotICAgIFJlbGVhc2VSZXNvdXJjZSAoaWNvbkRJVEwpOwotICAgIEdldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaWNvbkl0bS5pZHgsICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsICZib3gpOworICAgIEFwcGVuZERJVEwodGhlRGlhbG9nLCBpY29uRElUTCwgb3ZlcmxheURJVEwpOworICAgIFJlbGVhc2VSZXNvdXJjZShpY29uRElUTCk7CisgICAgR2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGljb25JdG0uaWR4LCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmYm94KTsKICAgICAvKiBUT0RPOiBTaG91bGQgdGhlIGl0ZW0gYmUgZnJlZWQ/ICovCi0gICAgaWNvbkhhbmRsZSA9IEdldEljb24gKHVzZUljb24pOwotICAgIFNldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaWNvbkl0bS5pZHgsIGl0ZW1UeXBlLCBpY29uSGFuZGxlLCAmYm94KTsKKyAgICBpY29uSGFuZGxlID0gR2V0SWNvbih1c2VJY29uKTsKKyAgICBTZXREaWFsb2dJdGVtKHRoZURpYWxvZywgaWNvbkl0bS5pZHgsIGl0ZW1UeXBlLCBpY29uSGFuZGxlLCAmYm94KTsKIAogICAgIC8qIEFkZCB0aGUgbWVzc2FnZSB0byB0aGUgRGlhbG9nIGJveC4gKi8KICAgICBtZXNzYWdlSXRtLmlkeCA9IGxhc3RCdXR0b24gKyAyOwotICAgIG1lc3NhZ2VESVRMID0gR2V0UmVzb3VyY2UgKCdESVRMJywgMTMyKTsKLSAgICBBcHBlbmRESVRMICh0aGVEaWFsb2csIG1lc3NhZ2VESVRMLCBvdmVybGF5RElUTCk7Ci0gICAgUmVsZWFzZVJlc291cmNlIChtZXNzYWdlRElUTCk7Ci0gICAgR2V0RGlhbG9nSXRlbSAodGhlRGlhbG9nLCBtZXNzYWdlSXRtLmlkeCwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJmJveCk7Ci0gICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nIChtZXNzYWdlLCAmbmFtZSk7Ci0gICAgU2V0RGlhbG9nSXRlbVRleHQgKGl0ZW1IYW5kbGUsIG5hbWUpOwotICAgIG1lc3NhZ2VJdG0ud2lkdGggPSBTdHJpbmdXaWR0aCAobmFtZSk7CisgICAgbWVzc2FnZURJVEwgPSBHZXRSZXNvdXJjZSgnRElUTCcsIDEzMik7CisgICAgQXBwZW5kRElUTCh0aGVEaWFsb2csIG1lc3NhZ2VESVRMLCBvdmVybGF5RElUTCk7CisgICAgUmVsZWFzZVJlc291cmNlKG1lc3NhZ2VESVRMKTsKKyAgICBHZXREaWFsb2dJdGVtKHRoZURpYWxvZywgbWVzc2FnZUl0bS5pZHgsICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsICZib3gpOworICAgICh2b2lkKSBDMlBhc2NhbFN0cmluZyhtZXNzYWdlLCAmbmFtZSk7CisgICAgU2V0RGlhbG9nSXRlbVRleHQoaXRlbUhhbmRsZSwgbmFtZSk7CisgICAgbWVzc2FnZUl0bS53aWR0aCA9IFN0cmluZ1dpZHRoKG5hbWUpOwogCiAgICAgLyogQWRkIHRoZSBpbnB1dCBib3ggaWYgbmVlZGVkICovCiAgICAgaWYgKHRleHRmaWVsZCAhPSBOVUxMKQogICAgIHsKIAkvKiBDaGVhdCBmb3Igbm93IHJldXNlIHRoZSBtZXNzYWdlIGFuZCBjb252ZXQgdG8gdGV4dCBlZGl0ICovCiAJaW5wdXRJdG0uaWR4ID0gbGFzdEJ1dHRvbiArIDM7Ci0JaW5wdXRESVRMID0gR2V0UmVzb3VyY2UgKCdESVRMJywgMTMyKTsKLQlBcHBlbmRESVRMICh0aGVEaWFsb2csIGlucHV0RElUTCwgb3ZlcmxheURJVEwpOwotCVJlbGVhc2VSZXNvdXJjZSAoaW5wdXRESVRMKTsKLQlHZXREaWFsb2dJdGVtICh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJmJveCk7Ci0vKgkgIFNldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCBrRWRpdFRleHREaWFsb2dJdGVtLCBpdGVtSGFuZGxlLCAmYm94KTsqLwotCSh2b2lkKSBDMlBhc2NhbFN0cmluZyAodGV4dGZpZWxkLCAmbmFtZSk7Ci0JU2V0RGlhbG9nSXRlbVRleHQgKGl0ZW1IYW5kbGUsIG5hbWUpOwotCWlucHV0SXRtLndpZHRoID0gU3RyaW5nV2lkdGggKG5hbWUpOworCWlucHV0RElUTCA9IEdldFJlc291cmNlKCdESVRMJywgMTMyKTsKKwlBcHBlbmRESVRMKHRoZURpYWxvZywgaW5wdXRESVRMLCBvdmVybGF5RElUTCk7CisJUmVsZWFzZVJlc291cmNlKGlucHV0RElUTCk7CisJR2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJmJveCk7CisvKgkgIFNldERpYWxvZ0l0ZW0odGhlRGlhbG9nLCBpbnB1dEl0bS5pZHgsIGtFZGl0VGV4dERpYWxvZ0l0ZW0sIGl0ZW1IYW5kbGUsICZib3gpOyovCisJKHZvaWQpIEMyUGFzY2FsU3RyaW5nKHRleHRmaWVsZCwgJm5hbWUpOworCVNldERpYWxvZ0l0ZW1UZXh0KGl0ZW1IYW5kbGUsIG5hbWUpOworCWlucHV0SXRtLndpZHRoID0gU3RyaW5nV2lkdGgobmFtZSk7CiAgICAgfQogCiAgICAgLyogU2V0IHRoZSA8RU5URVI+IGFuZCA8RVNDPiBidXR0b24uICovCi0gICAgU2V0RGlhbG9nRGVmYXVsdEl0ZW0gKHRoZURpYWxvZywgZGZsdGJ1dHRvbik7Ci0gICAgU2V0RGlhbG9nQ2FuY2VsSXRlbSAodGhlRGlhbG9nLCAwKTsKKyAgICBTZXREaWFsb2dEZWZhdWx0SXRlbSh0aGVEaWFsb2csIGRmbHRidXR0b24pOworICAgIFNldERpYWxvZ0NhbmNlbEl0ZW0odGhlRGlhbG9nLCAwKTsKIAogICAgIC8qIFJlcG9zaXRpb24gZWxlbWVudCAqLwogCkBAIC01MjAyLDI2ICs1MjUxLDI2IEBACiAJdmVydGljYWwgPSBUUlVFOwogCiAgICAgLyogUGxhY2UgaWNvbiAqLwotICAgIG1hY01vdmVEaWFsb2dJdGVtICh0aGVEaWFsb2csIGljb25JdG0uaWR4LCBkZmx0SWNvblNpZGVTcGFjZSwgZGZsdEVsZW1lbnRTcGFjaW5nLCAmYm94KTsKKyAgICBtYWNNb3ZlRGlhbG9nSXRlbSh0aGVEaWFsb2csIGljb25JdG0uaWR4LCBkZmx0SWNvblNpZGVTcGFjZSwgZGZsdEVsZW1lbnRTcGFjaW5nLCAmYm94KTsKICAgICBpY29uSXRtLmJveC5yaWdodCA9IGJveC5yaWdodDsKICAgICBpY29uSXRtLmJveC5ib3R0b20gPSBib3guYm90dG9tOwogCiAgICAgLyogUGxhY2UgTWVzc2FnZSAqLwogICAgIG1lc3NhZ2VJdG0uYm94LmxlZnQgPSBpY29uSXRtLmJveC5yaWdodCArIGRmbHRJY29uU2lkZVNwYWNlOwotICAgIG1hY1NpemVEaWFsb2dJdGVtICh0aGVEaWFsb2csIG1lc3NhZ2VJdG0uaWR4LCAwLCAgbWVzc2FnZUxpbmVzICogKHRleHRGb250SW5mby5hc2NlbnQgKyB0ZXh0Rm9udEluZm8uZGVzY2VudCkpOwotICAgIG1hY01vdmVEaWFsb2dJdGVtICh0aGVEaWFsb2csIG1lc3NhZ2VJdG0uaWR4LCBtZXNzYWdlSXRtLmJveC5sZWZ0LCBkZmx0RWxlbWVudFNwYWNpbmcsICZtZXNzYWdlSXRtLmJveCk7CisgICAgbWFjU2l6ZURpYWxvZ0l0ZW0odGhlRGlhbG9nLCBtZXNzYWdlSXRtLmlkeCwgMCwgIG1lc3NhZ2VMaW5lcyAqICh0ZXh0Rm9udEluZm8uYXNjZW50ICsgdGV4dEZvbnRJbmZvLmRlc2NlbnQpKTsKKyAgICBtYWNNb3ZlRGlhbG9nSXRlbSh0aGVEaWFsb2csIG1lc3NhZ2VJdG0uaWR4LCBtZXNzYWdlSXRtLmJveC5sZWZ0LCBkZmx0RWxlbWVudFNwYWNpbmcsICZtZXNzYWdlSXRtLmJveCk7CiAKICAgICAvKiBQbGFjZSBJbnB1dCAqLwogICAgIGlmICh0ZXh0ZmllbGQgIT0gTlVMTCkKICAgICB7CiAJaW5wdXRJdG0uYm94LmxlZnQgPSBtZXNzYWdlSXRtLmJveC5sZWZ0OwogCWlucHV0SXRtLmJveC50b3AgID0gbWVzc2FnZUl0bS5ib3guYm90dG9tICsgZGZsdEVsZW1lbnRTcGFjaW5nOwotCW1hY1NpemVEaWFsb2dJdGVtICh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwgMCwgdGV4dEZvbnRJbmZvLmFzY2VudCArIHRleHRGb250SW5mby5kZXNjZW50KTsKLQltYWNNb3ZlRGlhbG9nSXRlbSAodGhlRGlhbG9nLCBpbnB1dEl0bS5pZHgsIGlucHV0SXRtLmJveC5sZWZ0LCBpbnB1dEl0bS5ib3gudG9wLCAmaW5wdXRJdG0uYm94KTsKKwltYWNTaXplRGlhbG9nSXRlbSh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwgMCwgdGV4dEZvbnRJbmZvLmFzY2VudCArIHRleHRGb250SW5mby5kZXNjZW50KTsKKwltYWNNb3ZlRGlhbG9nSXRlbSh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwgaW5wdXRJdG0uYm94LmxlZnQsIGlucHV0SXRtLmJveC50b3AsICZpbnB1dEl0bS5ib3gpOwogCS8qIENvbnZlcnQgdGhlIHN0YXRpYyB0ZXh0IGludG8gYSB0ZXh0IGVkaXQuCiAJICogRm9yIHNvbWUgcmVhc29uIHRoaXMgY2hhbmdlIG5lZWQgdG8gYmUgZG9uZSBsYXN0IChEYW55KSAqLwotCUdldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmaW5wdXRJdG0uYm94KTsKLQlTZXREaWFsb2dJdGVtICh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwga0VkaXRUZXh0RGlhbG9nSXRlbSwgaXRlbUhhbmRsZSwgJmlucHV0SXRtLmJveCk7CisJR2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJmlucHV0SXRtLmJveCk7CisJU2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwga0VkaXRUZXh0RGlhbG9nSXRlbSwgaXRlbUhhbmRsZSwgJmlucHV0SXRtLmJveCk7CiAJU2VsZWN0RGlhbG9nSXRlbVRleHQodGhlRGlhbG9nLCBpbnB1dEl0bS5pZHgsIDAsIDMyNzY3KTsKICAgICB9CiAKQEAgLTUyNDAsMTIgKzUyODksMTIgQEAKICAgICBmb3IgKGJ1dHRvbj0xOyBidXR0b24gPD0gbGFzdEJ1dHRvbjsgYnV0dG9uKyspCiAgICAgewogCi0JbWFjTW92ZURpYWxvZ0l0ZW0gKHRoZURpYWxvZywgYnV0dG9uLCBidXR0b25JdG0uYm94LmxlZnQsIGJ1dHRvbkl0bS5ib3gudG9wLCAmYm94KTsKKwltYWNNb3ZlRGlhbG9nSXRlbSh0aGVEaWFsb2csIGJ1dHRvbiwgYnV0dG9uSXRtLmJveC5sZWZ0LCBidXR0b25JdG0uYm94LnRvcCwgJmJveCk7CiAJLyogV2l0aCB2ZXJ0aWNhbCwgaXQncyBiZXR0ZXIgdG8gaGF2ZSBhbGwgYnV0dG9uIHRoZSBzYW1lIGxlbmdodCAqLwogCWlmICh2ZXJ0aWNhbCkKIAl7Ci0JICAgIG1hY1NpemVEaWFsb2dJdGVtICh0aGVEaWFsb2csIGJ1dHRvbiwgd2lkZXN0QnV0dG9uLCAwKTsKLQkgICAgR2V0RGlhbG9nSXRlbSAodGhlRGlhbG9nLCBidXR0b24sICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsICZib3gpOworCSAgICBtYWNTaXplRGlhbG9nSXRlbSh0aGVEaWFsb2csIGJ1dHRvbiwgd2lkZXN0QnV0dG9uLCAwKTsKKwkgICAgR2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGJ1dHRvbiwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJmJveCk7CiAJfQogCS8qIENhbGN1bGF0ZSBwb3NpdGlvbiBvZiBuZXh0IGJ1dHRvbiAqLwogCWlmICh2ZXJ0aWNhbCkKQEAgLTUyNjAsNyArNTMwOSw3IEBACiAKICNpZmRlZiBVU0VfQ0FSQk9OSVpFRAogICAgIC8qIE1hZ2ljIHJlc2l6ZSAqLwotICAgIEF1dG9TaXplRGlhbG9nICh0aGVEaWFsb2cpOworICAgIEF1dG9TaXplRGlhbG9nKHRoZURpYWxvZyk7CiAgICAgLyogTmVlZCBhIGhvcml6b250YWwgcmVzaXplIGFueXdheSBzbyBub3QgdGhhdCB1c2VmdWwgKi8KICNlbmRpZgogCkBAIC01MjY5LDI3ICs1MzE4LDI3IEBACiAvKiAgQnJpbmdUb0Zyb250KHRoZVdpbmRvdyk7ICovCiAgICAgU2VsZWN0V2luZG93KHRoZVdpbmRvdyk7CiAKLS8qICBEcmF3RGlhbG9nICh0aGVEaWFsb2cpOyAqLworLyogIERyYXdEaWFsb2codGhlRGlhbG9nKTsgKi8KICNpZiAwCi0gICAgR2V0UG9ydCAoJm9sZFBvcnQpOworICAgIEdldFBvcnQoJm9sZFBvcnQpOwogI2lmZGVmIFVTRV9DQVJCT05JWkVECi0gICAgU2V0UG9ydERpYWxvZ1BvcnQgKHRoZURpYWxvZyk7CisgICAgU2V0UG9ydERpYWxvZ1BvcnQodGhlRGlhbG9nKTsKICNlbHNlCi0gICAgU2V0UG9ydCAodGhlRGlhbG9nKTsKKyAgICBTZXRQb3J0KHRoZURpYWxvZyk7CiAjZW5kaWYKICNlbmRpZgogCiAgICAgLyogSGFuZyB1bnRpbCBvbmUgb2YgdGhlIGJ1dHRvbiBpcyBoaXQgKi8KICAgICBkbwogICAgIHsKLQlNb2RhbERpYWxvZyAobmlsLCAmaXRlbUhpdCk7CisJTW9kYWxEaWFsb2cobmlsLCAmaXRlbUhpdCk7CiAgICAgfSB3aGlsZSAoKGl0ZW1IaXQgPCAxKSB8fCAoaXRlbUhpdCA+IGxhc3RCdXR0b24pKTsKIAogICAgIC8qIENvcHkgYmFjayB0aGUgdGV4dCBlbnRlcmVkIGJ5IHRoZSB1c2VyIGludG8gdGhlIHBhcmFtICovCiAgICAgaWYgKHRleHRmaWVsZCAhPSBOVUxMKQogICAgIHsKLQlHZXREaWFsb2dJdGVtICh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJmJveCk7Ci0JR2V0RGlhbG9nSXRlbVRleHQgKGl0ZW1IYW5kbGUsIChjaGFyX3UgKikgJm5hbWUpOworCUdldERpYWxvZ0l0ZW0odGhlRGlhbG9nLCBpbnB1dEl0bS5pZHgsICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsICZib3gpOworCUdldERpYWxvZ0l0ZW1UZXh0KGl0ZW1IYW5kbGUsIChjaGFyX3UgKikgJm5hbWUpOwogI2lmIElPU0laRSA8IDI1NgogCS8qIFRydW5jYXRlIHRoZSBuYW1lIHRvIElPU0laRSBpZiBuZWVkZWQgKi8KIAlpZiAobmFtZVswXSA+IElPU0laRSkKQEAgLTUzMDAsMTAgKzUzNDksMTAgQEAKICAgICB9CiAKICAgICAvKiBSZXN0b3JlIHRoZSBvcmlnaW5hbCBncmFwaGljYWwgcG9ydCAqLwotICAgIFNldFBvcnQgKG9sZFBvcnQpOworICAgIFNldFBvcnQob2xkUG9ydCk7CiAKICAgICAvKiBHZXQgcmlkZSBvZiB0aCBlZGlhbG9nIChmcmVlIG1lbW9yeSkgKi8KLSAgICBEaXNwb3NlRGlhbG9nICh0aGVEaWFsb2cpOworICAgIERpc3Bvc2VEaWFsb2codGhlRGlhbG9nKTsKIAogICAgIHJldHVybiBpdGVtSGl0OwogLyoKQEAgLTUzMzksOCArNTM4OCw4IEBACiAJCSAgICBwRXJyb3JbMF0gPSBTVFJMRU4ocCk7CiAKIAkJU1RSTkNQWSgmcEVycm9yWzFdLCBwLCBwRXJyb3JbMF0pOwotCQlQYXJhbVRleHQgKHBFcnJvciwgbmlsLCBuaWwsIG5pbCk7Ci0JCUFsZXJ0ICgxMjgsIG5pbCk7CisJCVBhcmFtVGV4dChwRXJyb3IsIG5pbCwgbmlsLCBuaWwpOworCQlBbGVydCgxMjgsIG5pbCk7CiAJCWJyZWFrOwogCQkvKiBUT0RPOiBoYW5kbGVkIG1lc3NhZ2UgbG9uZ2VyIHRoYW4gMjU2IGNoYXJzCiAJCSAqCSB1c2UgYXV0by1zaXplYWJsZSBhbGVydApAQCAtNTM4OCw4ICs1NDM3LDggQEAKICAgICBDdXJzb3JEZXZpY2VQdHIgbXlNb3VzZTsKICAgICBQb2ludAkgICAgd2hlcmU7CiAKLSAgICBpZiAoICAgTkdldFRyYXBBZGRyZXNzIChfQ3Vyc29yRGV2aWNlRGlzcGF0Y2gsIFRvb2xUcmFwKQotCSE9IE5HZXRUcmFwQWRkcmVzcyAoX1VuaW1wbGVtZW50ZWQsICAgVG9vbFRyYXApICkKKyAgICBpZiAoICAgTkdldFRyYXBBZGRyZXNzKF9DdXJzb3JEZXZpY2VEaXNwYXRjaCwgVG9vbFRyYXApCisJIT0gTkdldFRyYXBBZGRyZXNzKF9VbmltcGxlbWVudGVkLCAgIFRvb2xUcmFwKSkKICAgICB7CiAJLyogTmV3IHdheSAqLwogCkBAIC01NDA3LDkgKzU0NTYsOSBAQAogCSAgICAvKiBHZXQgdGhlIG5leHQgY3Vyc29yIGRldmljZSAqLwogCSAgICBDdXJzb3JEZXZpY2VOZXh0RGV2aWNlKCZteU1vdXNlKTsKIAl9Ci0Jd2hpbGUgKCAobXlNb3VzZSAhPSBuaWwpICYmIChteU1vdXNlLT5jbnRCdXR0b25zICE9IDEpICk7CisJd2hpbGUgKChteU1vdXNlICE9IG5pbCkgJiYgKG15TW91c2UtPmNudEJ1dHRvbnMgIT0gMSkpOwogCi0JQ3Vyc29yRGV2aWNlTW92ZVRvIChteU1vdXNlLCB4LCB5KTsKKwlDdXJzb3JEZXZpY2VNb3ZlVG8obXlNb3VzZSwgeCwgeSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC01NDQ1LDEwICs1NDk0LDEwIEBACiAgICAgR3JhZlB0cglzYXZlUG9ydDsKIAogICAgIC8qIFNhdmUgQ3VycmVudCBQb3J0OiBPbiBNYWNPUyBYIHdlIHNlZW0gdG8gbG9zZSB0aGUgcG9ydCAqLwotICAgIEdldFBvcnQgKCZzYXZlUG9ydCk7IC8qT1NYKi8KKyAgICBHZXRQb3J0KCZzYXZlUG9ydCk7IC8qT1NYKi8KIAotICAgIEdldE1vdXNlICgmd2hlcmUpOwotICAgIExvY2FsVG9HbG9iYWwgKCZ3aGVyZSk7IC8qT1NYKi8KKyAgICBHZXRNb3VzZSgmd2hlcmUpOworICAgIExvY2FsVG9HbG9iYWwoJndoZXJlKTsgLypPU1gqLwogICAgIENudHhNZW51ID0gbWVudS0+c3VibWVudV9oYW5kbGU7CiAKICAgICAvKiBUT0RPOiBHZXQgdGhlIHRleHQgc2VsZWN0aW9uIGZyb20gVmltICovCkBAIC01NDYzLDcgKzU1MTIsNyBAQAogCSAgICAvKiBIYW5kbGUgdGhlIG1lbnUgQ250eE1lbnVJRCwgQ250eE1lbnVJdGVtICovCiAJICAgIC8qIFRoZSBzdWJtZW51IGNhbiBiZSBoYW5kbGUgZGlyZWN0bHkgYnkgZ3VpX21hY19oYW5kbGVfbWVudSAqLwogCSAgICAvKiBCdXQgd2hhdCBhYm91dCB0aGUgY3VycmVudCBtZW51LCBpcyB0aGUgbWVudSBjaGFuZ2VkIGJ5IENvbnRleHR1YWxNZW51U2VsZWN0ICovCi0JICAgIGd1aV9tYWNfaGFuZGxlX21lbnUgKChDbnR4TWVudUlEIDw8IDE2KSArIENudHhNZW51SXRlbSk7CisJICAgIGd1aV9tYWNfaGFuZGxlX21lbnUoKENudHhNZW51SUQgPDwgMTYpICsgQ250eE1lbnVJdGVtKTsKIAl9CiAJZWxzZSBpZiAoQ250eE1lbnVJRCA9PSBrQ01TaG93SGVscFNlbGVjdGVkKQogCXsKQEAgLTU0NzIsNyArNTUyMSw3IEBACiAgICAgfQogCiAgICAgLyogUmVzdG9yZSBvcmlnaW5hbCBQb3J0ICovCi0gICAgU2V0UG9ydCAoc2F2ZVBvcnQpOyAvKk9TWCovCisgICAgU2V0UG9ydChzYXZlUG9ydCk7IC8qT1NYKi8KICNlbmRpZgogfQogCkBAIC01NDgyLDEwICs1NTMxLDEwIEBACiBtY2hfcG9zdF9idWZmZXJfd3JpdGUoYnVmX1QgKmJ1ZikKIHsKICMgaWZkZWYgVVNFX1NJT1VYCi0gICAgcHJpbnRmICgiV3JpdGluZyBCdWYuLi5cbiIpOworICAgIHByaW50ZigiV3JpdGluZyBCdWYuLi5cbiIpOwogIyBlbmRpZgotICAgIEdldEZTU3BlY0Zyb21QYXRoIChidWYtPmJfZmZuYW1lLCAmYnVmLT5iX0ZTU3BlYyk7Ci0gICAgU2VuZF9LQUhMX01PRF9BRSAoYnVmKTsKKyAgICBHZXRGU1NwZWNGcm9tUGF0aChidWYtPmJfZmZuYW1lLCAmYnVmLT5iX0ZTU3BlYyk7CisgICAgU2VuZF9LQUhMX01PRF9BRShidWYpOwogfQogI2VuZGlmCiAKQEAgLTU1MjEsNyArNTU3MCw3IEBACiAgKi8KIAogICAgIGludAotQzJQYXNjYWxTdHJpbmcgKENTdHJpbmcsIFBhc2NhbFN0cmluZykKK0MyUGFzY2FsU3RyaW5nKENTdHJpbmcsIFBhc2NhbFN0cmluZykKICAgICBjaGFyX3UgICpDU3RyaW5nOwogICAgIFN0cjI1NSAgKlBhc2NhbFN0cmluZzsKIHsKQEAgLTU1NDYsNyArNTU5NSw3IEBACiB9CiAKICAgICBpbnQKLUdldEZTU3BlY0Zyb21QYXRoIChmaWxlLCBmaWxlRlNTcGVjKQorR2V0RlNTcGVjRnJvbVBhdGgoZmlsZSwgZmlsZUZTU3BlYykKICAgICBjaGFyX3UgKmZpbGU7CiAgICAgRlNTcGVjICpmaWxlRlNTcGVjOwogewpAQCAtNTU1NSwxNyArNTYwNCwxNyBAQAogICAgIENJbmZvUEJSZWMJbXlDUEI7CiAgICAgT1NFcnIJZXJyOwogCi0gICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nIChmaWxlLCAmZmlsZVBhc2NhbCk7CisgICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nKGZpbGUsICZmaWxlUGFzY2FsKTsKIAogICAgIG15Q1BCLmRpckluZm8uaW9OYW1lUHRyICAgPSBmaWxlUGFzY2FsOwogICAgIG15Q1BCLmRpckluZm8uaW9WUmVmTnVtICAgPSAwOwogICAgIG15Q1BCLmRpckluZm8uaW9GRGlySW5kZXggPSAwOwogICAgIG15Q1BCLmRpckluZm8uaW9EckRpcklEICAgPSAwOwogCi0gICAgZXJyPSBQQkdldENhdEluZm8gKCZteUNQQiwgZmFsc2UpOworICAgIGVycj0gUEJHZXRDYXRJbmZvKCZteUNQQiwgZmFsc2UpOwogCiAgICAgLyogICAgdlJlZk51bSwgZGlySUQsIG5hbWUgKi8KLSAgICBGU01ha2VGU1NwZWMgKDAsIDAsIGZpbGVQYXNjYWwsIGZpbGVGU1NwZWMpOworICAgIEZTTWFrZUZTU3BlYygwLCAwLCBmaWxlUGFzY2FsLCBmaWxlRlNTcGVjKTsKIAogICAgIC8qIFRPRE86IFVzZSBhbiBlcnJvciBjb2RlIG1lY2hhbmlzbSAqLwogICAgIHJldHVybiAwOwpAQCAtNTU3NSw3ICs1NjI0LDcgQEAKICAqIENvbnZlcnQgYSBGU1NwZWMgdG8gYSBmdWlsbCBwYXRoCiAgKi8KIAotY2hhcl91ICpGdWxsUGF0aEZyb21GU1NwZWNfc2F2ZSAoRlNTcGVjIGZpbGUpCitjaGFyX3UgKkZ1bGxQYXRoRnJvbUZTU3BlY19zYXZlKEZTU3BlYyBmaWxlKQogewogICAgIC8qCiAgICAgICogVE9ETzogQWRkIHByb3RlY3Rpb24gZm9yIDI1NiBjaGFyIG1heC4KQEAgLTU2MDMsNyArNTY1Miw3IEBACiAjaWZkZWYgVVNFX1VOSVhGSUxFTkFNRQogICAgIC8qIEdldCB0aGUgZGVmYXVsdCB2b2x1bWUgKi8KICAgICAvKiBUT0RPOiBSZW1vdmUgYXMgdGhpcyBvbmx5IHdvcmsgaWYgVmltIGlzIG9uIHRoZSBCb290IFZvbHVtZSovCi0gICAgZXJyb3I9SEdldFZvbCAoIE5VTEwsICZkZmx0Vm9sX3ZSZWZOdW0sICZkZmx0Vm9sX2RpcklEICk7CisgICAgZXJyb3I9SEdldFZvbChOVUxMLCAmZGZsdFZvbF92UmVmTnVtLCAmZGZsdFZvbF9kaXJJRCk7CiAKICAgICBpZiAoZXJyb3IpCiAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU2MjIsNyArNTY3MSw3IEBACiAKICAgICAvKiBBcyBpb0ZEaXJJbmRleCA9IDAsIGdldCB0aGUgaW5mbyBvZiBpb05hbWVQdHIsCiAgICAgICAgd2hpY2ggaXMgcmVsYXRpdmUgdG8gaW9WcmVmTnVtLCBpb0RpcklEICovCi0gICAgZXJyb3IgPSBQQkdldENhdEluZm8gKCZ0aGVDUEIsIGZhbHNlKTsKKyAgICBlcnJvciA9IFBCR2V0Q2F0SW5mbygmdGhlQ1BCLCBmYWxzZSk7CiAKICAgICAvKiBJZiB3ZSBhcmUgY2FsbGVkIGZvciBhIG5ldyBmaWxlIHdlIGV4cGVjdCBmbmZFcnIgKi8KICAgICBpZiAoKGVycm9yKSAmJiAoZXJyb3IgIT0gZm5mRXJyKSkKQEAgLTU2NzEsMjAgKzU3MjAsMjAgQEAKICAgICB7CiAJLyogSWYgdGhlIGZpbGUgdG8gYmUgc2F2ZWQgYWxyZWFkeSBleGlzdHMsIHdlIGNhbiBnZXQgaXRzIGZ1bGwgcGF0aAogCSAgIGJ5IGNvbnZlcnRpbmcgaXRzIEZTU3BlYyBpbnRvIGFuIEZTUmVmLiAqLwotCWVycm9yPUZTcE1ha2VGU1JlZiAoJmZpbGUsICZyZWZGaWxlKTsKKwllcnJvcj1GU3BNYWtlRlNSZWYoJmZpbGUsICZyZWZGaWxlKTsKIAlpZiAoZXJyb3IpCiAJICAgIHJldHVybiBOVUxMOwogCi0Jc3RhdHVzPUZTUmVmTWFrZVBhdGggKCZyZWZGaWxlLCAoVUludDggKikgcGF0aCwgcGF0aFNpemUpOworCXN0YXR1cz1GU1JlZk1ha2VQYXRoKCZyZWZGaWxlLCAoVUludDggKikgcGF0aCwgcGF0aFNpemUpOwogCWlmIChzdGF0dXMpCiAJICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIC8qIEFkZCBhIHNsYXNoIGF0IHRoZSBlbmQgaWYgbmVlZGVkICovCiAgICAgaWYgKGZvbGRlcikKLQlTVFJDQVQgKHBhdGgsICIvIik7CisJU1RSQ0FUKHBhdGgsICIvIik7CiAKLSAgICByZXR1cm4gKHZpbV9zdHJzYXZlIChwYXRoKSk7CisgICAgcmV0dXJuICh2aW1fc3Ryc2F2ZShwYXRoKSk7CiAjZWxzZQogICAgIC8qIFRPRE86IEdldCByaWQgb2YgYWxsIFVTRV9VTklYRklMRU5BTUUgYmVsb3cgKi8KICAgICAvKiBTZXQgaW9OYW1lUHRyLCBpdCdzIHRoZSBzYW1lIGFyZWEgd2hpY2ggaXMgYWx3YXlzIHJldXNlZC4gKi8KQEAgLTU2OTUsNyArNTc0NCw3IEBACiAgICAgdGhlQ1BCLmRpckluZm8uaW9EclBhcklEID0gZmlsZS5wYXJJRDsKICAgICB0aGVDUEIuZGlySW5mby5pb0RyRGlySUQgPSBmaWxlLnBhcklEOwogCi0gICAgaWYgKChUUlVFKSAmJiAoZmlsZS5wYXJJRCAhPSBmc1J0RGlySUQgLypmc1J0UGFySUQqLyApKQorICAgIGlmICgoVFJVRSkgJiYgKGZpbGUucGFySUQgIT0gZnNSdERpcklEIC8qZnNSdFBhcklEKi8pKQogICAgIGRvCiAgICAgewogCXRoZUNQQi5kaXJJbmZvLmlvRkRpckluZGV4ID0gLTE7CkBAIC01NzA2LDcgKzU3NTUsNyBAQAogCiAJLyogQXMgaW9GRGlySW5kZXggPSAtMSwgZ2V0IHRoZSBpbmZvIG9mIGlvRHJEaXJJRCwgKi8KIAkvKiAgKmlvTmFtZVB0clswIFRPIDMxXSB3aWxsIGJlIHVwZGF0ZWQJCSAgICovCi0JZXJyb3IgPSBQQkdldENhdEluZm8gKCZ0aGVDUEIsZmFsc2UpOworCWVycm9yID0gUEJHZXRDYXRJbmZvKCZ0aGVDUEIsZmFsc2UpOwogCiAJaWYgKGVycm9yKQogCSAgcmV0dXJuIE5VTEw7CkBAIC01NzM0LDcgKzU3ODMsNyBAQAogCiAgICAgLyogQXMgaW9GRGlySW5kZXggPSAtMSwgZ2V0IHRoZSBpbmZvIG9mIGlvRHJEaXJJRCwgKi8KICAgICAvKgkqaW9OYW1lUHRyWzAgVE8gMzFdIHdpbGwgYmUgdXBkYXRlZAkgICAgICAgKi8KLSAgICBlcnJvciA9IFBCR2V0Q2F0SW5mbyAoJnRoZUNQQixmYWxzZSk7CisgICAgZXJyb3IgPSBQQkdldENhdEluZm8oJnRoZUNQQixmYWxzZSk7CiAKICAgICBpZiAoZXJyb3IpCiAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU3NjMsNyArNTgxMiw3IEBACiAKICAgICAvKiBBcHBlbmQgZmluYWwgcGF0aCBzZXBhcmF0b3IgaWYgaXQncyBhIGZvbGRlciAqLwogICAgIGlmIChmb2xkZXIpCi0JU1RSQ0FUIChmbmFtZSwgIjoiKTsKKwlTVFJDQVQoZm5hbWUsICI6Iik7CiAKICAgICAvKiBBcyB3ZSB1c2UgVW5peCBGaWxlIE5hbWUgZm9yIE1hY09TIFggY29udmVydCBpdCAqLwogI2lmZGVmIFVTRV9VTklYRklMRU5BTUUKQEAgLTU3ODAsNyArNTgyOSw3IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gKHZpbV9zdHJzYXZlIChmbmFtZSkpOworICAgIHJldHVybiAodmltX3N0cnNhdmUoZm5hbWUpKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9zcmMvZ3VpX3czMi5jIGIvc3JjL2d1aV93MzIuYwppbmRleCBkZjA3OTUzLi5hM2E3ZmZhIDEwMDY0NAotLS0gYS9zcmMvZ3VpX3czMi5jCisrKyBiL3NyYy9ndWlfdzMyLmMKQEAgLTgxOCw5ICs4MTgsMTEgQEAKICAgICB7CiAJaWYgKHN0cnN0cihidWYsIHRpdGxlKSAhPSBOVUxMKQogCXsKLQkgICAgLyogRm91bmQgaXQuICBTdG9yZSB0aGUgd2luZG93IHJlZi4gYW5kIHF1aXQgc2VhcmNoaW5nLiAqLworCSAgICAvKiBGb3VuZCBpdC4gIFN0b3JlIHRoZSB3aW5kb3cgcmVmLiBhbmQgcXVpdCBzZWFyY2hpbmcgaWYgTURJCisJICAgICAqIHdvcmtzLiAqLwogCSAgICB2aW1fcGFyZW50X2h3bmQgPSBGaW5kV2luZG93RXgoaHduZCwgTlVMTCwgIk1ESUNsaWVudCIsIE5VTEwpOwotCSAgICByZXR1cm4gRkFMU0U7CisJICAgIGlmICh2aW1fcGFyZW50X2h3bmQgIT0gTlVMTCkKKwkJcmV0dXJuIEZBTFNFOwogCX0KICAgICB9CiAgICAgcmV0dXJuIFRSVUU7CS8qIGNvbnRpbnVlIHNlYXJjaGluZyAqLwpkaWZmIC0tZ2l0IGEvc3JjL21lbWxpbmUuYyBiL3NyYy9tZW1saW5lLmMKaW5kZXggN2MxODY2My4uN2EwMjEwZiAxMDA2NDQKLS0tIGEvc3JjL21lbWxpbmUuYworKysgYi9zcmMvbWVtbGluZS5jCkBAIC0xNTE4LDcgKzE1MTgsNyBAQAogCSAgICB7CiAJCU1TR19QVVRTKF8oIiAgICAgICAgIGZpbGUgbmFtZTogIikpOwogCQlpZiAoYjAuYjBfZm5hbWVbMF0gPT0gTlVMKQotCQkgICAgTVNHX1BVVFMoXygiW05vIEZpbGVdIikpOworCQkgICAgTVNHX1BVVFMoXygiW05vIE5hbWVdIikpOwogCQllbHNlCiAJCSAgICBtc2dfb3V0dHJhbnMoYjAuYjBfZm5hbWUpOwogCkBAIC0zNzgxLDcgKzM3ODEsNyBAQAogCSAqIENoYW5nZSB0aGUgIi5zd3AiIGV4dGVuc2lvbiB0byBmaW5kIGFub3RoZXIgZmlsZSB0aGF0IGNhbiBiZSB1c2VkLgogCSAqIEZpcnN0IGRlY3JlbWVudCB0aGUgbGFzdCBjaGFyOiAiLnN3byIsICIuc3duIiwgZXRjLgogCSAqIElmIHRoYXQgc3RpbGwgaXNuJ3QgZW5vdWdoIGRlY3JlbWVudCB0aGUgbGFzdCBidXQgb25lIGNoYXI6ICIuc3Z6IgotCSAqIENhbiBoYXBwZW4gd2hlbiBlZGl0aW5nIG1hbnkgIk5vIEZpbGUiIGJ1ZmZlcnMuCisJICogQ2FuIGhhcHBlbiB3aGVuIGVkaXRpbmcgbWFueSAiTm8gTmFtZSIgYnVmZmVycy4KIAkgKi8KIAlpZiAoZm5hbWVbbiAtIDFdID09ICdhJykJLyogIi5zP2EiICovCiAJewpkaWZmIC0tZ2l0IGEvc3JjL25vcm1hbC5jIGIvc3JjL25vcm1hbC5jCmluZGV4IDg5MTk2ZGEuLjIyMmU0NzUgMTAwNjQ0Ci0tLSBhL3NyYy9ub3JtYWwuYworKysgYi9zcmMvbm9ybWFsLmMKQEAgLTUxODYsNyArNTE4NiwyMyBAQAogCWlmIChjYXAtPmNvdW50MSAtIDEgPj0gY3Vyd2luLT53X2N1cnNvci5sbnVtKQogCSAgICBjdXJ3aW4tPndfY3Vyc29yLmxudW0gPSAxOwogCWVsc2UKLQkgICAgY3Vyd2luLT53X2N1cnNvci5sbnVtIC09IGNhcC0+Y291bnQxIC0gMTsKKwl7CisjaWZkZWYgRkVBVF9GT0xESU5HCisJICAgIGlmIChoYXNBbnlGb2xkaW5nKGN1cndpbikpCisJICAgIHsKKwkJLyogQ291bnQgYSBmb2xkIGZvciBvbmUgc2NyZWVuIGxpbmUuICovCisJCWZvciAobiA9IGNhcC0+Y291bnQxIC0gMTsgbiA+IDAKKwkJCSAgICAmJiBjdXJ3aW4tPndfY3Vyc29yLmxudW0gPiBjdXJ3aW4tPndfdG9wbGluZTsgLS1uKQorCQl7CisJCSAgICAodm9pZCloYXNGb2xkaW5nKGN1cndpbi0+d19jdXJzb3IubG51bSwKKwkJCQkJCSZjdXJ3aW4tPndfY3Vyc29yLmxudW0sIE5VTEwpOworCQkgICAgLS1jdXJ3aW4tPndfY3Vyc29yLmxudW07CisJCX0KKwkgICAgfQorCSAgICBlbHNlCisjZW5kaWYKKwkJY3Vyd2luLT53X2N1cnNvci5sbnVtIC09IGNhcC0+Y291bnQxIC0gMTsKKwl9CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC01MjIyLDggKzUyMzgsMjMgQEAKIAkgICAgaWYgKG4gPiAwICYmIHVzZWQgPiBjdXJ3aW4tPndfaGVpZ2h0KQogCQktLW47CiAJfQotCWVsc2UKKwllbHNlIC8qIChjYXAtPmNtZGNoYXIgPT0gJ0gnKSAqLworCXsKIAkgICAgbiA9IGNhcC0+Y291bnQxIC0gMTsKKyNpZmRlZiBGRUFUX0ZPTERJTkcKKwkgICAgaWYgKGhhc0FueUZvbGRpbmcoY3Vyd2luKSkKKwkgICAgeworCQkvKiBDb3VudCBhIGZvbGQgZm9yIG9uZSBzY3JlZW4gbGluZS4gKi8KKwkJbG51bSA9IGN1cndpbi0+d190b3BsaW5lOworCQl3aGlsZSAobi0tID4gMCAmJiBsbnVtIDwgY3Vyd2luLT53X2JvdGxpbmUgLSAxKQorCQl7CisJCSAgICBoYXNGb2xkaW5nKGxudW0sIE5VTEwsICZsbnVtKTsKKwkJICAgICsrbG51bTsKKwkJfQorCQluID0gbG51bSAtIGN1cndpbi0+d190b3BsaW5lOworCSAgICB9CisjZW5kaWYKKwl9CiAJY3Vyd2luLT53X2N1cnNvci5sbnVtID0gY3Vyd2luLT53X3RvcGxpbmUgKyBuOwogCWlmIChjdXJ3aW4tPndfY3Vyc29yLmxudW0gPiBjdXJidWYtPmJfbWwubWxfbGluZV9jb3VudCkKIAkgICAgY3Vyd2luLT53X2N1cnNvci5sbnVtID0gY3VyYnVmLT5iX21sLm1sX2xpbmVfY291bnQ7CmRpZmYgLS1naXQgYS9zcmMvb3NfbWFjLmMgYi9zcmMvb3NfbWFjLmMKaW5kZXggMGY2YTc2Yy4uZDM4ZjEyYSAxMDA2NDQKLS0tIGEvc3JjL29zX21hYy5jCisrKyBiL3NyYy9vc19tYWMuYwpAQCAtNTI3LDcgKzUyNyw3IEBACiAgICAgICovCiAgICAgRXZlbnRSZWNvcmQgdGhlRXZlbnQ7CiAKLSAgICBpZiAoRXZlbnRBdmFpbCAoa2V5RG93bk1hc2ssICZ0aGVFdmVudCkpCisgICAgaWYgKEV2ZW50QXZhaWwoa2V5RG93bk1hc2ssICZ0aGVFdmVudCkpCiAJaWYgKCh0aGVFdmVudC5tZXNzYWdlICYgY2hhckNvZGVNYXNrKSA9PSBDdHJsX0MgJiYgY3RybF9jX2ludGVycnVwdHMpCiAJICAgIGdvdF9pbnQgPSBUUlVFOwogI2lmIDAKZGlmZiAtLWdpdCBhL3NyYy9vc19tc2Rvcy5jIGIvc3JjL29zX21zZG9zLmMKaW5kZXggMmQ4YjEyNy4uOTJiMTRlYSAxMDA2NDQKLS0tIGEvc3JjL29zX21zZG9zLmMKKysrIGIvc3JjL29zX21zZG9zLmMKQEAgLTI5ODcsNyArMjk4NywxMiBAQAogbWNoX2Nhbl9leGUobmFtZSkKICAgICBjaGFyX3UJKm5hbWU7CiB7Ci0gICAgcmV0dXJuIChzZWFyY2hwYXRoKG5hbWUpICE9IE5VTEwpOworICAgIGNoYXIJKnA7CisKKyAgICBwID0gc2VhcmNocGF0aChuYW1lKTsKKyAgICBpZiAocCA9PSBOVUxMIHx8IG1jaF9pc2RpcihwKSkKKwlyZXR1cm4gRkFMU0U7CisgICAgcmV0dXJuIFRSVUU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvc3JjL29zX3dpbjMyLmMgYi9zcmMvb3Nfd2luMzIuYwppbmRleCA3NGI4OTYwLi40MzQzNjJiIDEwMDY0NAotLS0gYS9zcmMvb3Nfd2luMzIuYworKysgYi9zcmMvb3Nfd2luMzIuYwpAQCAtMTUxOSwyOSArMTUxOSw0NSBAQAogIyBpbmNsdWRlIDxzaGVsbGFwaS5oPgkvKiByZXF1aXJlZCBmb3IgRmluZEV4ZWN1dGFibGUoKSAqLwogI2VuZGlmCiAKKy8qCisgKiBSZXR1cm4gVFJVRSBpZiAibmFtZSIgaXMgaW4gJFBBVEguCisgKiBUT0RPOiBTaG91bGQgYWxzbyBjaGVjayBpZiBpdCdzIHJlYWxseSBleGVjdXRhYmxlLgorICovCiAgICAgc3RhdGljIGludAogZXhlY3V0YWJsZV9leGlzdHMoY2hhciAqbmFtZSkKIHsKLSAgICBjaGFyIGxvY2F0aW9uWzIgKiBfTUFYX1BBVEggKyAyXTsKLSAgICBjaGFyIHdpZGVuYW1lWzIgKiBfTUFYX1BBVEhdOworICAgIGNoYXIJKmR1bTsKKyAgICBjaGFyCWZuYW1lW19NQVhfUEFUSF07CiAKLSAgICAvKiBUaGVyZSBhcHBlYXJzIHRvIGJlIGEgYnVnIGluIEZpbmRFeGVjdXRhYmxlQSgpIG9uIFdpbmRvd3MgTlQuCi0gICAgICogVXNlIEZpbmRFeGVjdXRhYmxlVygpIGluc3RlYWQuLi4gKi8KLSAgICBpZiAoZ19QbGF0Zm9ybUlkID09IFZFUl9QTEFURk9STV9XSU4zMl9OVCkKKyNpZmRlZiBGRUFUX01CWVRFCisgICAgaWYgKGVuY19jb2RlcGFnZSA+PSAwICYmIChpbnQpR2V0QUNQKCkgIT0gZW5jX2NvZGVwYWdlKQogICAgIHsKLQlNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX0FDUCwgMCwgKExQQ1RTVFIpbmFtZSwgLTEsCi0JCQkJCQkgKExQV1NUUil3aWRlbmFtZSwgX01BWF9QQVRIKTsKLQlpZiAoRmluZEV4ZWN1dGFibGVXKChMUENXU1RSKXdpZGVuYW1lLCAoTFBDV1NUUikiIiwKLQkJCQkJICAgIChMUFdTVFIpbG9jYXRpb24pID4gKEhJTlNUQU5DRSkzMikKLQkgICAgcmV0dXJuIFRSVUU7CisJV0NIQVIJKnAgPSBlbmNfdG9fdWNzMihuYW1lLCBOVUxMKTsKKwlXQ0hBUglmbmFtZXdbX01BWF9QQVRIXTsKKwlXQ0hBUgkqZHVtdzsKKwlsb25nCW47CisKKwlpZiAocCAhPSBOVUxMKQorCXsKKwkgICAgbiA9IChsb25nKVNlYXJjaFBhdGhXKE5VTEwsIHAsIE5VTEwsIF9NQVhfUEFUSCwgZm5hbWV3LCAmZHVtdyk7CisJICAgIHZpbV9mcmVlKHApOworCSAgICBpZiAobiA+IDAgfHwgR2V0TGFzdEVycm9yKCkgIT0gRVJST1JfQ0FMTF9OT1RfSU1QTEVNRU5URUQpCisJICAgIHsKKwkJaWYgKG4gPT0gMCkKKwkJICAgIHJldHVybiBGQUxTRTsKKwkJaWYgKEdldEZpbGVBdHRyaWJ1dGVzVyhmbmFtZXcpICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKQorCQkgICAgcmV0dXJuIEZBTFNFOworCQlyZXR1cm4gVFJVRTsKKwkgICAgfQorCSAgICAvKiBSZXRyeSB3aXRoIG5vbi13aWRlIGZ1bmN0aW9uIChmb3IgV2luZG93cyA5OCkuICovCisJfQogICAgIH0KLSAgICBlbHNlCi0gICAgewotCWlmIChGaW5kRXhlY3V0YWJsZUEoKExQQ1RTVFIpbmFtZSwgKExQQ1RTVFIpIiIsCi0JCQkJCSAgICAoTFBUU1RSKWxvY2F0aW9uKSA+IChISU5TVEFOQ0UpMzIpCi0JICAgIHJldHVybiBUUlVFOwotICAgIH0KLSAgICByZXR1cm4gRkFMU0U7CisjZW5kaWYKKyAgICBpZiAoU2VhcmNoUGF0aChOVUxMLCBuYW1lLCBOVUxMLCBfTUFYX1BBVEgsIGZuYW1lLCAmZHVtKSA9PSAwKQorCXJldHVybiBGQUxTRTsKKyAgICBpZiAobWNoX2lzZGlyKGZuYW1lKSkKKwlyZXR1cm4gRkFMU0U7CisgICAgcmV0dXJuIFRSVUU7CiB9CiAKICNpZmRlZiBGRUFUX0dVSV9XMzIKZGlmZiAtLWdpdCBhL3NyYy9wby9NYWtlZmlsZSBiL3NyYy9wby9NYWtlZmlsZQppbmRleCBkNTQ5MTMwLi4zNjQyMTBjIDEwMDY0NAotLS0gYS9zcmMvcG8vTWFrZWZpbGUKKysrIGIvc3JjL3BvL01ha2VmaWxlCkBAIC05Nyw4ICs5Nyw4IEBACiAjIENvbnZlcnQgcnUucG8gdG8gY3JlYXRlIHJ1LmNwMTI1MS5wby4KIHJ1LmNwMTI1MS5wbzogcnUucG8KIAlybSAtZiBydS5jcDEyNTEucG8KLQlpY29udiAtZiBrb2k4LXIgLXQgY3AxMjUxIHJ1LnBvIHwgXAotCQlzZWQgLWUgJ3MvY2hhcnNldD1rb2k4LXIvY2hhcnNldD1jcDEyNTEvJyAtZSAncy8jIE9yaWdpbmFsIHRyYW5zbGF0aW9ucy8jIEdlbmVyYXRlZCBmcm9tIHJ1LnBvLCBETyBOT1QgRURJVC8nID4gcnUuY3AxMjUxLnBvCisJaWNvbnYgLWYgdXRmLTggLXQgY3AxMjUxIHJ1LnBvIHwgXAorCQlzZWQgLWUgJ3MvY2hhcnNldD11dGYtOC9jaGFyc2V0PWNwMTI1MS8nIC1lICdzLyMgT3JpZ2luYWwgdHJhbnNsYXRpb25zLyMgR2VuZXJhdGVkIGZyb20gcnUucG8sIERPIE5PVCBFRElULycgPiBydS5jcDEyNTEucG8KIAogY2hlY2s6CiAJQGlmIHRlc3QgIngiID0gIngkKHByZWZpeCkiOyB0aGVuIFwKZGlmZiAtLWdpdCBhL3NyYy9wby9ydS5jcDEyNTEucG8gYi9zcmMvcG8vcnUuY3AxMjUxLnBvCmluZGV4IGYwYjBhYzIuLjg1YjFkNjggMTAwNjQ0Ci0tLSBhL3NyYy9wby9ydS5jcDEyNTEucG8KKysrIGIvc3JjL3BvL3J1LmNwMTI1MS5wbwpAQCAtOSwxMCArOSwxMCBAQAogIwogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogVmltIDYuM2FcbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IFZpbSA2LjNcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMDQtMDUtMTAgMjE6MzcrMDQwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMDQtMDUtMTAgMjE6MzcrMDQwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDA0LTA2LTE1IDA5OjM5KzA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDA0LTA1LTE5IDAwOjIzKzA0MDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IHZhc3NpbHkgcmFnb3NpbiA8dnJyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD5cbiIKICJMYW5ndWFnZS1UZWFtOiB2YXNzaWx5IHJhZ29zaW4gPHZyckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCiAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKQEAgLTI3LDE3MiArMjcsMTcyIEBACiBtc2dpZCAiRTgzOiBDYW5ub3QgYWxsb2NhdGUgYnVmZmVyLCB1c2luZyBvdGhlciBvbmUuLi4iCiBtc2dzdHIgIkU4MzogzeXi7ufs7ubt7iDi++Tl6+jy/CDv4Oz/8vwg5Ov/IOHz9OXw4Cwg6PHv7uv85/Pl7CDk8PPj7ukg4fP05fAuLi4iCiAKLSM6IGJ1ZmZlci5jOjgwNQorIzogYnVmZmVyLmM6ODA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU1MTU6IE5vIGJ1ZmZlcnMgd2VyZSB1bmxvYWRlZCIKIG1zZ3N0ciAiRTUxNTogzegg7uTo7SDh8/Tl8CDt5SDh++sg4vvj8PPm5e0g6Ocg7+Ds//LoIgogCi0jOiBidWZmZXIuYzo4MDcKKyM6IGJ1ZmZlci5jOjgxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNTE2OiBObyBidWZmZXJzIHdlcmUgZGVsZXRlZCIKIG1zZ3N0ciAiRTUxNjogzegg7uTo7SDh8/Tl8CDt5SDh++sg8+Tg67jtIgogCi0jOiBidWZmZXIuYzo4MDkKKyM6IGJ1ZmZlci5jOjgxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJFNTE3OiBObyBidWZmZXJzIHdlcmUgd2lwZWQgb3V0IgogbXNnc3RyICJFNTE3OiDN6CDu5OjtIOHz9OXwIO3lIOH76yDu9+j55e0iCiAKLSM6IGJ1ZmZlci5jOjgxNworIzogYnVmZmVyLmM6ODIwCiBtc2dpZCAiMSBidWZmZXIgdW5sb2FkZWQiCiBtc2dzdHIgIs7k6O0g4fP05fAg4vvj8PPm5e0g6Ocg7+Ds//LoIgogCi0jOiBidWZmZXIuYzo4MTkKKyM6IGJ1ZmZlci5jOjgyMgogIywgYy1mb3JtYXQKIG1zZ2lkICIlZCBidWZmZXJzIHVubG9hZGVkIgogbXNnc3RyICLC8eXj7iDi++Pw8+bl7e4g4fP05fDu4iDo5yDv4Oz/8ug6ICVkIgogCi0jOiBidWZmZXIuYzo4MjQKKyM6IGJ1ZmZlci5jOjgyNwogbXNnaWQgIjEgYnVmZmVyIGRlbGV0ZWQiCiBtc2dzdHIgIs7k6O0g4fP05fAg8+Tg67jtIgogCi0jOiBidWZmZXIuYzo4MjYKKyM6IGJ1ZmZlci5jOjgyOQogIywgYy1mb3JtYXQKIG1zZ2lkICIlZCBidWZmZXJzIGRlbGV0ZWQiCiBtc2dzdHIgIsLx5ePuIPPk4Ovl7e4g4fP05fDu4jogJWQiCiAKLSM6IGJ1ZmZlci5jOjgzMQorIzogYnVmZmVyLmM6ODM0CiBtc2dpZCAiMSBidWZmZXIgd2lwZWQgb3V0IgogbXNnc3RyICLO5OjtIOHz9OXwIO736Pnl7SIKIAotIzogYnVmZmVyLmM6ODMzCisjOiBidWZmZXIuYzo4MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWQgYnVmZmVycyB3aXBlZCBvdXQiCiBtc2dzdHIgIsLx5ePuIO736Pnl7e4g4fP05fDu4jogJWQiCiAKLSM6IGJ1ZmZlci5jOjg5NAorIzogYnVmZmVyLmM6ODk3CiBtc2dpZCAiRTg0OiBObyBtb2RpZmllZCBidWZmZXIgZm91bmQiCiBtc2dzdHIgIkU4NDogyOfs5e247e379SDh8/Tl8O7iIO3lIO7h7eDw8+bl7e4iCiAKICMuIGJhY2sgd2hlcmUgd2Ugc3RhcnRlZCwgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0jOiBidWZmZXIuYzo5MzMKKyM6IGJ1ZmZlci5jOjkzNgogbXNnaWQgIkU4NTogVGhlcmUgaXMgbm8gbGlzdGVkIGJ1ZmZlciIKIG1zZ3N0ciAiRTg1OiDB8/Tl8Psg4iDx7+jx6uUg7vLx8/Lx8uLz/vIiCiAKLSM6IGJ1ZmZlci5jOjk0NQorIzogYnVmZmVyLmM6OTQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU4NjogQnVmZmVyICVsZCBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAiRTg2OiDB8/Tl8CAlbGQg7eUg8fP55fHy4vPl8iIKIAotIzogYnVmZmVyLmM6OTQ4CisjOiBidWZmZXIuYzo5NTEKIG1zZ2lkICJFODc6IENhbm5vdCBnbyBiZXlvbmQgbGFzdCBidWZmZXIiCiBtc2dzdHIgIkU4Nzog3fLuIO/u8evl5O3o6SDh8/Tl8CIKIAotIzogYnVmZmVyLmM6OTUwCisjOiBidWZmZXIuYzo5NTMKIG1zZ2lkICJFODg6IENhbm5vdCBnbyBiZWZvcmUgZmlyc3QgYnVmZmVyIgogbXNnc3RyICJFODg6IN3y7iDv5fDi++kg4fP05fAiCiAKLSM6IGJ1ZmZlci5jOjk4OAorIzogYnVmZmVyLmM6OTkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU4OTogTm8gd3JpdGUgc2luY2UgbGFzdCBjaGFuZ2UgZm9yIGJ1ZmZlciAlbGQgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiRTg5OiDI5+zl7eXt6P8g4iDh8/Tl8OUgJWxkIO3lIPHu9fDg7eXt+yAoISwg9/Lu4fsg7uHu6fLoIO/w7uLl8OrzKSIKIAotIzogYnVmZmVyLmM6MTAwNQorIzogYnVmZmVyLmM6MTAwOAogbXNnaWQgIkU5MDogQ2Fubm90IHVubG9hZCBsYXN0IGJ1ZmZlciIKIG1zZ3N0ciAiRTkwOiDN5eLu5+zu5u3uIOL74/Dz5+jy/CDo5yDv4Oz/8ugg7+7x6+Xk7ejpIOHz9OXwIgogCi0jOiBidWZmZXIuYzoxNTM4CisjOiBidWZmZXIuYzoxNTQ0CiBtc2dpZCAiVzE0OiBXYXJuaW5nOiBMaXN0IG9mIGZpbGUgbmFtZXMgb3ZlcmZsb3ciCiBtc2dzdHIgIlcxNDogz/Dl5PPv8OXm5OXt6OU6IO/l8OXv7uvt5e3o5SDx7+jx6uAg6Oy47SD04Onr7uIiCiAKLSM6IGJ1ZmZlci5jOjE3MDkKKyM6IGJ1ZmZlci5jOjE3MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTkyOiBCdWZmZXIgJWxkIG5vdCBmb3VuZCIKIG1zZ3N0ciAiRTkyOiDB8/Tl8CAlbGQg7eUg7eDp5OXtIgogCi0jOiBidWZmZXIuYzoxOTQwCisjOiBidWZmZXIuYzoxOTQ3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU5MzogTW9yZSB0aGFuIG9uZSBtYXRjaCBmb3IgJXMiCiBtc2dzdHIgIkU5MzogzeXx6u7r/OruIPHu7vLi5fLx8uLo6SDk6/8gJXMiCiAKLSM6IGJ1ZmZlci5jOjE5NDIKKyM6IGJ1ZmZlci5jOjE5NDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTk0OiBObyBtYXRjaGluZyBidWZmZXIgZm9yICVzIgogbXNnc3RyICJFOTQ6IM3l8iDx7u7y4uXy8fLi8/755ePuICVzIOHz9OXw4CIKIAotIzogYnVmZmVyLmM6MjMzNworIzogYnVmZmVyLmM6MjM0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJsaW5lICVsZCIKIG1zZ3N0ciAi8fLw7urgICVsZCIKIAotIzogYnVmZmVyLmM6MjQyMAorIzogYnVmZmVyLmM6MjQyOQogbXNnaWQgIkU5NTogQnVmZmVyIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzIgogbXNnc3RyICJFOTU6IMHz9OXwIPEg8uDq6Owg6Ozl7eXsIPPm5SDx8/nl8fLi8+XyIgogCi0jOiBidWZmZXIuYzoyNzEzCisjOiBidWZmZXIuYzoyNzI0CiBtc2dpZCAiIFtNb2RpZmllZF0iCiBtc2dzdHIgIiBbyOfs5e247V0iCiAKLSM6IGJ1ZmZlci5jOjI3MTgKKyM6IGJ1ZmZlci5jOjI3MjkKIG1zZ2lkICJbTm90IGVkaXRlZF0iCiBtc2dzdHIgIlvN5SDw5eTg6vLo8O7i4Ovx/10iCiAKLSM6IGJ1ZmZlci5jOjI3MjMKKyM6IGJ1ZmZlci5jOjI3MzQKIG1zZ2lkICJbTmV3IGZpbGVdIgogbXNnc3RyICJbze7i++kg9ODp610iCiAKLSM6IGJ1ZmZlci5jOjI3MjQKKyM6IGJ1ZmZlci5jOjI3MzUKIG1zZ2lkICJbUmVhZCBlcnJvcnNdIgogbXNnc3RyICJbzvjo4eroIPfy5e3o/10iCiAKLSM6IGJ1ZmZlci5jOjI3MjYgZmlsZWlvLmM6MjExMgorIzogYnVmZmVyLmM6MjczNyBmaWxlaW8uYzoyMTI0CiBtc2dpZCAiW3JlYWRvbmx5XSIKIG1zZ3N0ciAiW/Lu6/zq7iDk6/8g9/Ll7ej/XSIKIAotIzogYnVmZmVyLmM6Mjc0NworIzogYnVmZmVyLmM6Mjc1OAogIywgYy1mb3JtYXQKIG1zZ2lkICIxIGxpbmUgLS0lZCUlLS0iCiBtc2dzdHIgIs7k7eAg8fLw7urgIC0tJWQlJS0tIgogCi0jOiBidWZmZXIuYzoyNzQ5CisjOiBidWZmZXIuYzoyNzYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVsZCBsaW5lcyAtLSVkJSUtLSIKIG1zZ3N0ciAiJWxkIPHy8C4gLS0lZCUlLS0iCiAKLSM6IGJ1ZmZlci5jOjI3NTYKKyM6IGJ1ZmZlci5jOjI3NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAibGluZSAlbGQgb2YgJWxkIC0tJWQlJS0tIGNvbCAiCiBtc2dzdHIgIvHy8C4gJWxkIOjnICVsZCAtLSVkJSUtLSDq7usuICIKIAotIzogYnVmZmVyLmM6Mjg2NAorIzogYnVmZmVyLmM6Mjg3NQogbXNnaWQgIltObyBmaWxlXSIKIG1zZ3N0ciAiW83l8iD04Onr4F0iCiAKICMuIG11c3QgYmUgYSBoZWxwIGJ1ZmZlcgotIzogYnVmZmVyLmM6MjkwNAorIzogYnVmZmVyLmM6MjkxNQogbXNnaWQgImhlbHAiCiBtc2dzdHIgIvHv8ODi6uAiCiAKLSM6IGJ1ZmZlci5jOjM0NjMgc2NyZWVuLmM6NTA3NQorIzogYnVmZmVyLmM6MzQ3NCBzY3JlZW4uYzo1MDc5CiBtc2dpZCAiW2hlbHBdIgogbXNnc3RyICJb8e/w4OLq4F0iCiAKLSM6IGJ1ZmZlci5jOjM0OTUgc2NyZWVuLmM6NTA4MQorIzogYnVmZmVyLmM6MzUwNiBzY3JlZW4uYzo1MDg1CiBtc2dpZCAiW1ByZXZpZXddIgogbXNnc3RyICJbz/Dl5O/w7vHs7vLwXSIKIAotIzogYnVmZmVyLmM6Mzc3NQorIzogYnVmZmVyLmM6Mzc4NgogbXNnaWQgIkFsbCIKIG1zZ3N0ciAiwuXx/CIKIAotIzogYnVmZmVyLmM6Mzc3NQorIzogYnVmZmVyLmM6Mzc4NgogbXNnaWQgIkJvdCIKIG1zZ3N0ciAiwu3o5/MiCiAKLSM6IGJ1ZmZlci5jOjM3NzcKKyM6IGJ1ZmZlci5jOjM3ODgKIG1zZ2lkICJUb3AiCiBtc2dzdHIgIs3g4uXw9fMiCiAKLSM6IGJ1ZmZlci5jOjQ1MjMKKyM6IGJ1ZmZlci5jOjQ1MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMjAxLDE1ICsyMDEsMTUgQEAKICJcbiIKICIjINHv6PHu6iDh8/Tl8O7iOlxuIgogCi0jOiBidWZmZXIuYzo0NTU2CisjOiBidWZmZXIuYzo0NTY5CiBtc2dpZCAiW0Vycm9yIExpc3RdIgogbXNnc3RyICJb0e/o8e7qIO746OHu6l0iCiAKLSM6IGJ1ZmZlci5jOjQ1NjkgbWVtbGluZS5jOjE1MjAKKyM6IGJ1ZmZlci5jOjQ1ODIgbWVtbGluZS5jOjE1MjEKIG1zZ2lkICJbTm8gRmlsZV0iCiBtc2dzdHIgIlvN5fIg9ODp6+BdIgogCi0jOiBidWZmZXIuYzo0ODgyCisjOiBidWZmZXIuYzo0ODk1CiBtc2dpZCAiIgogIlxuIgogIi0tLSBTaWducyAtLS0iCkBAIC0yMTcsMTIgKzIxNywxMiBAQAogIlxuIgogIi0tLSDH7eD36uggLS0tIgogCi0jOiBidWZmZXIuYzo0OTAxCisjOiBidWZmZXIuYzo0OTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlNpZ25zIGZvciAlczoiCiBtc2dzdHIgIsft4Pfq6CDk6/8gJXM6IgogCi0jOiBidWZmZXIuYzo0OTA3CisjOiBidWZmZXIuYzo0OTIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICBsaW5lPSVsZCAgaWQ9JWQgIG5hbWU9JXMiCiBtc2dzdHIgIiAgICDx8vDu6uA9JWxkICBpZD0lZCAg6Oz/PSVzIgpAQCAtNDczLDcgKzQ3Myw3IEBACiAjLiAqIHRoaXMgd2F5IGhhcyB0aGUgY29tcGVsbGluZyBhZHZhbnRhZ2UgdGhhdCB0cmFuc2xhdGlvbnMgbmVlZCBub3QgdG8KICMuICogYmUgdG91Y2hlZCBhdCBhbGwuICBTZWUgYmVsb3cgd2hhdCAnb2snIGFuZCAneW5jJyBhcmUgdXNlZCBmb3IuCiAjLgotIzogZXZhbC5jOjM2ODcgZ3VpLmM6NDM4MiBndWlfZ3RrLmM6MjA1OQorIzogZXZhbC5jOjM2ODcgZ3VpLmM6NDM4NSBndWlfZ3RrLmM6MjA1OQogbXNnaWQgIiZPayIKIG1zZ3N0ciAiJk9rIgogCkBAIC00OTgsMTIxICs0OTgsMTIxIEBACiBtc2dpZCAiRTY1NTogVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgKGN5Y2xlPykiCiBtc2dzdHIgIkU2NTY6INHr6Pjq7uwg7O3u4+4g8ejs4u7r6Pfl8ero9SDx8fvr7uogKPbo6us/KSIKIAotIzogZXZhbC5jOjY2MDkKKyM6IGV2YWwuYzo2NjI2CiBtc2dpZCAiRTI0MDogTm8gY29ubmVjdGlvbiB0byBWaW0gc2VydmVyIgogbXNnc3RyICJFMjQwOiDN5fIg8eL/5+gg8SDx5fDi5fDu7CBWaW0iCiAKLSM6IGV2YWwuYzo2NzA2CisjOiBldmFsLmM6NjcyNAogbXNnaWQgIkUyNzc6IFVuYWJsZSB0byByZWFkIGEgc2VydmVyIHJlcGx5IgogbXNnc3RyICJFMjI3OiDR5fDi5fAg7eUg7vLi5ffg5fIiCiAKLSM6IGV2YWwuYzo2NzM0CisjOiBldmFsLmM6Njc1MgogbXNnaWQgIkUyNTg6IFVuYWJsZSB0byBzZW5kIHRvIGNsaWVudCIKIG1zZ3N0ciAiRTI1ODogzeUg7O7j8yDu8uLl8ujy/CDq6+jl7fLzIgogCi0jOiBldmFsLmM6Njc4MgorIzogZXZhbC5jOjY4MDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTI0MTogVW5hYmxlIHRvIHNlbmQgdG8gJXMiCiBtc2dzdHIgIkUyNDE6IM3lIOzu4/Mg7vLv8ODi6PL8IPHu7uH55e3o5SDk6/8gJXMiCiAKLSM6IGV2YWwuYzo2ODgyCisjOiBldmFsLmM6NjkwMAogbXNnaWQgIihJbnZhbGlkKSIKIG1zZ3N0ciAiKM3l7/Dg4ujr/O3uKSIKIAotIzogZXZhbC5jOjgwNjAKKyM6IGV2YWwuYzo4MDc4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMjE6IFVuZGVmaW5lZCB2YXJpYWJsZTogJXMiCiBtc2dzdHIgIkUxMjE6IM3l7u/w5eTl6+Xt7eD/IO/l8OXs5e3t4P86ICVzIgogCi0jOiBldmFsLmM6ODQ5MgorIzogZXZhbC5jOjg1MTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTQ2MTogSWxsZWdhbCB2YXJpYWJsZSBuYW1lOiAlcyIKIG1zZ3N0ciAiRTQ2MTogzeXk7u/z8fLo7O7lIOjs/yDv5fDl7OXt7e7pOiAlcyIKIAotIzogZXZhbC5jOjg3ODQKKyM6IGV2YWwuYzo4ODAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMjI6IEZ1bmN0aW9uICVzIGFscmVhZHkgZXhpc3RzLCBhZGQgISB0byByZXBsYWNlIGl0IgogbXNnc3RyICJFMTIyOiDU8+3q9uj/ICVzIPPm5SDx8/nl8fLi8+XyLiDE7uHg4vzy5SAhLCD38u7h+yDn4Ozl7ejy/CDluC4iCiAKLSM6IGV2YWwuYzo4ODU3CisjOiBldmFsLmM6ODg3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTIzOiBVbmRlZmluZWQgZnVuY3Rpb246ICVzIgogbXNnc3RyICJFMTIzOiDN5e7v8OXk5evl7e3g/yD08+3q9uj/OiAlcyIKIAotIzogZXZhbC5jOjg4NzAKKyM6IGV2YWwuYzo4ODg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMjQ6IE1pc3NpbmcgJygnOiAlcyIKIG1zZ3N0ciAiRTEyNDogz/Du7/P55e3gICcoJzogJXMiCiAKLSM6IGV2YWwuYzo4OTAzCisjOiBldmFsLmM6ODkyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTI1OiBJbGxlZ2FsIGFyZ3VtZW50OiAlcyIKIG1zZ3N0ciAiRTEyNTogzeXk7u/z8fLo7PvpIO/g8ODs5fLwOiAlcyIKIAotIzogZXZhbC5jOjg5ODIKKyM6IGV2YWwuYzo5MDAwCiBtc2dpZCAiRTEyNjogTWlzc2luZyA6ZW5kZnVuY3Rpb24iCiBtc2dzdHIgIkUxMjY6IM/w7u/z+eXt4CDq7uzg7eTgIDplbmRmdW5jdGlvbiIKIAotIzogZXZhbC5jOjkwODkKKyM6IGV2YWwuYzo5MTA3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMjc6IENhbm5vdCByZWRlZmluZSBmdW5jdGlvbiAlczogSXQgaXMgaW4gdXNlIgogbXNnc3RyICJFMTI3OiDN5eLu5+zu5u3uIO/l8OXu7/Dl5OXr6PL8IPTz7er26P4gJXMsIO7t4CDo8e/u6/zn8+Xy8f8iCiAKLSM6IGV2YWwuYzo5MTU5CisjOiBldmFsLmM6OTE3NwogbXNnaWQgIkUxMjk6IEZ1bmN0aW9uIG5hbWUgcmVxdWlyZWQiCiBtc2dzdHIgIkUxMjk6INLw5eHz5fLx/yDo7P8g9PPt6vbo6CIKIAotIzogZXZhbC5jOjkyMTAKKyM6IGV2YWwuYzo5MjI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMjg6IEZ1bmN0aW9uIG5hbWUgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbDogJXMiCiBtc2dzdHIgIkUxMjg6IMjs/yD08+3q9ujoIOTu6+bt7iDt4Pfo7eDy/PH/IPEg7/Du7+jx7e7pIOHz6uL7OiAlcyIKIAotIzogZXZhbC5jOjk0MDIKKyM6IGV2YWwuYzo5NDIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMzA6IFVuZGVmaW5lZCBmdW5jdGlvbjogJXMiCiBtc2dzdHIgIkUxMzA6INTz7er26P8gJXMg7eUg7u/w5eTl6+Xt4CIKIAotIzogZXZhbC5jOjk0MDcKKyM6IGV2YWwuYzo5NDI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMzE6IENhbm5vdCBkZWxldGUgZnVuY3Rpb24gJXM6IEl0IGlzIGluIHVzZSIKIG1zZ3N0ciAiRTEzMTogzeXi7ufs7ubt7iDz5ODr6PL8IPTz7er26P4gJXMsIO7t4CDo8e/u6/zn8+Xy8f8iCiAKLSM6IGV2YWwuYzo5NDU1CisjOiBldmFsLmM6OTQ3MwogbXNnaWQgIkUxMzI6IEZ1bmN0aW9uIGNhbGwgZGVwdGggaXMgaGlnaGVyIHRoYW4gJ21heGZ1bmNkZXB0aCciCiBtc2dzdHIgIkUxMzI6IMPr8+Ho7eAg4vvn7uLgIPTz7er26Ogg4e7r/PjlLCD35ewg5+3g9+Xt6OUgJ21heGZ1bmNkZXB0aCciCiAKICMuIGFsd2F5cyBzY3JvbGwgdXAsIGRvbid0IG92ZXJ3cml0ZQotIzogZXZhbC5jOjk1MDgKKyM6IGV2YWwuYzo5NTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbGxpbmcgJXMiCiBtc2dzdHIgIuL75+7iICVzIgogCi0jOiBldmFsLmM6OTU3MAorIzogZXZhbC5jOjk1ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgYWJvcnRlZCIKIG1zZ3N0ciAiJXMg7/Dl8OLg7eAiCiAKLSM6IGV2YWwuYzo5NTcyCisjOiBldmFsLmM6OTU5MAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZXR1cm5pbmcgIyVsZCIKIG1zZ3N0ciAiJXMg4u7n4vDg+eDl8iAjJWxkIgogCi0jOiBldmFsLmM6OTU3OQorIzogZXZhbC5jOjk1OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgcmV0dXJuaW5nIFwiJXNcIiIKIG1zZ3N0ciAiJXMg4u7n4vDg+eDl8iBcIiVzXCIiCiAKICMuIGFsd2F5cyBzY3JvbGwgdXAsIGRvbid0IG92ZXJ3cml0ZQotIzogZXZhbC5jOjk1OTUgZXhfY21kczIuYzoyMzY1CisjOiBldmFsLmM6OTYxMyBleF9jbWRzMi5jOjIzNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29udGludWluZyBpbiAlcyIKIG1zZ3N0ciAi7/Du5O7r5uXt6OUg4iAlcyIKIAotIzogZXZhbC5jOjk2MjEKKyM6IGV2YWwuYzo5NjM5CiBtc2dpZCAiRTEzMzogOnJldHVybiBub3QgaW5zaWRlIGEgZnVuY3Rpb24iCiBtc2dzdHIgIkUxMzM6IOru7ODt5OAgOnJldHVybiDi7eUg9PPt6vbo6CIKIAotIzogZXZhbC5jOjk5NTIKKyM6IGV2YWwuYzo5OTcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTcyOCw3ICs3MjgsNyBAQAogbXNnaWQgIklsbGVnYWwgc3RhcnRpbmcgY2hhciIKIG1zZ3N0ciAizeXk7u/z8fLo7PvpIO3g9+Dr/O376SDx6Ozi7usiCiAKLSM6IGV4X2NtZHMuYzoyMDk3IGV4X2NtZHMuYzoyMzYyIGV4X2NtZHMyLmM6NzYzCisjOiBleF9jbWRzLmM6MjA5NyBleF9jbWRzMi5jOjc2MQogbXNnaWQgIlNhdmUgQXMiCiBtc2dzdHIgItHu9fDg7ejy/CDq4OoiCiAKQEAgLTc1NiwxMSArNzU2LDExIEBACiBtc2dpZCAiRTE0MTogTm8gZmlsZSBuYW1lIGZvciBidWZmZXIgJWxkIgogbXNnc3RyICJFMTQxOiDB8/Tl8CAlbGQg7eUg8eL/5+DtIPEg6Ozl7eXsIPTg6evgIgogCi0jOiBleF9jbWRzLmM6MjQwNQorIzogZXhfY21kcy5jOjI0MDYKIG1zZ2lkICJFMTQyOiBGaWxlIG5vdCB3cml0dGVuOiBXcml0aW5nIGlzIGRpc2FibGVkIGJ5ICd3cml0ZScgb3B0aW9uIgogbXNnc3RyICJFMTQyOiDU4OnrIO3lIPHu9fDg7bjtOiDn4O/o8fwg7vLq6/735e3gIO7v9ujl6SAnd3JpdGUnIgogCi0jOiBleF9jbWRzLmM6MjQyNQorIzogZXhfY21kcy5jOjI0MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIidyZWFkb25seScgb3B0aW9uIGlzIHNldCBmb3IgXCIlLipzXCIuXG4iCkBAIC03NjksNjggKzc2OSw2OCBAQAogIsTr/yBcIiUuKnNcIiDi6uv+9+Xt4CDu7/bo/yAncmVhZG9ubHknLlxuIgogIsfg7+jx4PL8PyIKIAotIzogZXhfY21kcy5jOjI1OTcKKyM6IGV4X2NtZHMuYzoyNTk5CiBtc2dpZCAiRWRpdCBGaWxlIgogbXNnc3RyICLQ5eTg6vLo8O7i4O3o5SD04Onr4CIKIAotIzogZXhfY21kcy5jOjMyMDUKKyM6IGV4X2NtZHMuYzozMjA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxNDM6IEF1dG9jb21tYW5kcyB1bmV4cGVjdGVkbHkgZGVsZXRlZCBuZXcgYnVmZmVyICVzIgogbXNnc3RyICJFMTQzOiDA4vLu6u7s4O3k+yDt5e7m6OTg7e3uIPPh6OvoIO3u4vvpIOHz9OXwICVzIgogCi0jOiBleF9jbWRzLmM6MzMzOQorIzogZXhfY21kcy5jOjMzNDAKIG1zZ2lkICJFMTQ0OiBub24tbnVtZXJpYyBhcmd1bWVudCB0byA6eiIKIG1zZ3N0ciAiRTE0NDogz+Dw4Ozl8vAg6u7s4O3k+yA6eiDk7uvm5e0g4fvy/CD36PHr7uwiCiAKLSM6IGV4X2NtZHMuYzozNDI0CisjOiBleF9jbWRzLmM6MzQyNQogbXNnaWQgIkUxNDU6IFNoZWxsIGNvbW1hbmRzIG5vdCBhbGxvd2VkIGluIHJ2aW0iCiBtc2dzdHIgIkUxNDU6IMjx7+7r/Ofu4uDt6OUg6u7s4O3kIO7h7uvu9+roIO3lIOTu7/Px6uDl8vH/IOIgcnZpbS4iCiAKLSM6IGV4X2NtZHMuYzozNTMxCisjOiBleF9jbWRzLmM6MzUzMgogbXNnaWQgIkUxNDY6IFJlZ3VsYXIgZXhwcmVzc2lvbnMgY2FuJ3QgYmUgZGVsaW1pdGVkIGJ5IGxldHRlcnMiCiBtc2dzdHIgIkUxNDY6INDl4/Pr//Dt++Ug4vvw4Obl7ej/IO3lIOzu4/PyIPDg5+Tl6//y/PH/IOHz6uLg7OgiCiAKLSM6IGV4X2NtZHMuYzozODc3CisjOiBleF9jbWRzLmM6Mzg3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZXBsYWNlIHdpdGggJXMgKHkvbi9hL3EvbC9eRS9eWSk/IgogbXNnc3RyICLn4Ozl7ejy/CDt4CAlcz8gKHkvbi9hL3EvbC9eRS9eWSkiCiAKLSM6IGV4X2NtZHMuYzo0MjcwCisjOiBleF9jbWRzLmM6NDI3MQogbXNnaWQgIihJbnRlcnJ1cHRlZCkgIgogbXNnc3RyICIoz/Dl8OLg7e4pIgogCi0jOiBleF9jbWRzLmM6NDI3NAorIzogZXhfY21kcy5jOjQyNzUKIG1zZ2lkICIxIHN1YnN0aXR1dGlvbiIKIG1zZ3N0ciAizuTt4CDn4Ozl7eAiCiAKLSM6IGV4X2NtZHMuYzo0Mjc2CisjOiBleF9jbWRzLmM6NDI3NwogIywgYy1mb3JtYXQKIG1zZ2lkICIlbGQgc3Vic3RpdHV0aW9ucyIKIG1zZ3N0ciAiJWxkIOfg7OXtIgogCi0jOiBleF9jbWRzLmM6NDI3OQorIzogZXhfY21kcy5jOjQyODAKIG1zZ2lkICIgb24gMSBsaW5lIgogbXNnc3RyICIg4iDu5O3u6SDx8vDu6uUiCiAKLSM6IGV4X2NtZHMuYzo0MjgxCisjOiBleF9jbWRzLmM6NDI4MgogIywgYy1mb3JtYXQKIG1zZ2lkICIgb24gJWxkIGxpbmVzIgogbXNnc3RyICIg4iAlbGQg8fLwLiIKIAotIzogZXhfY21kcy5jOjQzMzIKKyM6IGV4X2NtZHMuYzo0MzMzCiBtc2dpZCAiRTE0NzogQ2Fubm90IGRvIDpnbG9iYWwgcmVjdXJzaXZlIgogbXNnc3RyICJFMTQ3OiDK7uzg7eTgIDpnbG9iYWwg7eUg7O7m5fIg4fvy/CDw5erz8PHo4u3u6SIKIAotIzogZXhfY21kcy5jOjQzNjcKKyM6IGV4X2NtZHMuYzo0MzY4CiBtc2dpZCAiRTE0ODogUmVndWxhciBleHByZXNzaW9uIG1pc3NpbmcgZnJvbSBnbG9iYWwiCiBtc2dzdHIgIkUxNDg6IMIg6u7s4O3k5SA6Z2xvYmFsIO/w7u/z+eXt7iDw5ePz6//w7e7lIOL78ODm5e3o5SIKIAotIzogZXhfY21kcy5jOjQ0MTYKKyM6IGV4X2NtZHMuYzo0NDE3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlBhdHRlcm4gZm91bmQgaW4gZXZlcnkgbGluZTogJXMiCiBtc2dzdHIgItHu7vLi5fLx8uLo5SD44OHr7u3zIO3g6eTl7e4g7eAg6uDm5O7pIPHy8O7q5TogJXMiCiAKLSM6IGV4X2NtZHMuYzo0NDk3CisjOiBleF9jbWRzLmM6NDQ5OAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC04NDEsOTYgKzg0MSw5NiBAQAogIiMgz+7x6+Xk7f//IPHy8O7q4CDk6/8g5+Ds5e37OlxuIgogIiQiCiAKLSM6IGV4X2NtZHMuYzo0NTk4CisjOiBleF9jbWRzLmM6NDU5OQogbXNnaWQgIkU0Nzg6IERvbid0IHBhbmljISIKIG1zZ3N0ciAiRTQ3ODog0e/u6u7p8fLi6OUsIPLu6/zq7iDx7+7q7unx8uLo5SEiCiAKLSM6IGV4X2NtZHMuYzo0NjUwCisjOiBleF9jbWRzLmM6NDY1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJFNjYxOiBTb3JyeSwgbm8gJyVzJyBoZWxwIGZvciAlcyIKIG1zZ3N0ciAiRTY2MTog6iDx7ubg6+Xt6P4sIPHv8ODi6uAgJyVzJyDk6/8gJXMg7vLx8/Lx8uLz5fIiCiAKLSM6IGV4X2NtZHMuYzo0NjUzCisjOiBleF9jbWRzLmM6NDY1NAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTQ5OiBTb3JyeSwgbm8gaGVscCBmb3IgJXMiCiBtc2dzdHIgIkUxNDk6IMog8e7m4Ovl7ej+IPHv8ODi6uAg5Ov/ICVzIO7y8fPy8fLi8+XyIgogCi0jOiBleF9jbWRzLmM6NDY4NworIzogZXhfY21kcy5jOjQ2ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiU29ycnksIGhlbHAgZmlsZSBcIiVzXCIgbm90IGZvdW5kIgogbXNnc3RyICLI5+Lo7ejy5Swg9ODp6yDx7/Dg4uroIFwiJXNcIiDt5SDt4Onk5e0iCiAKLSM6IGV4X2NtZHMuYzo1MTcwCisjOiBleF9jbWRzLmM6NTE5MQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTUwOiBOb3QgYSBkaXJlY3Rvcnk6ICVzIgogbXNnc3RyICJFMTUwOiAlcyDt5SD/4uv/5fLx/yDq4PLg6+7j7uwiCiAKLSM6IGV4X2NtZHMuYzo1MzA5CisjOiBleF9jbWRzLmM6NTMzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTUyOiBDYW5ub3Qgb3BlbiAlcyBmb3Igd3JpdGluZyIKIG1zZ3N0ciAiRTE1MjogzeXi7ufs7ubt7iDu8urw+/L8ICVzIOTr/yDn4O/o8egiCiAKLSM6IGV4X2NtZHMuYzo1MzQ1CisjOiBleF9jbWRzLmM6NTM2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTUzOiBVbmFibGUgdG8gb3BlbiAlcyBmb3IgcmVhZGluZyIKIG1zZ3N0ciAiRTE1MzogzeXi7ufs7ubt7iDu8urw+/L8ICVzIOTr/yD38uXt6P8iCiAKLSM6IGV4X2NtZHMuYzo1MzY3CisjOiBleF9jbWRzLmM6NTM4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNjcwOiBNaXggb2YgaGVscCBmaWxlIGVuY29kaW5ncyB3aXRoaW4gYSBsYW5ndWFnZTogJXMiCiBtc2dzdHIgIkU2NzA6INTg6ev7IPHv8ODi6ugg6PHv7uv85/P+8iDw4Oft++Ug6u7k6PDu4uroIOTr/yDu5O3u4+4g/+f76uA6ICVzIgogCi0jOiBleF9jbWRzLmM6NTQ0NQorIzogZXhfY21kcy5jOjU0NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE1NDogRHVwbGljYXRlIHRhZyBcIiVzXCIgaW4gZmlsZSAlcyIKIG1zZ3N0ciAiRTE1NDogz+7i8u7w//754P/x/yDs5fLq4CBcIiVzXCIg4iD04Onr5SAlcyIKIAotIzogZXhfY21kcy5jOjU1NTcKKyM6IGV4X2NtZHMuYzo1NTc4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxNjA6IFVua25vd24gc2lnbiBjb21tYW5kOiAlcyIKIG1zZ3N0ciAiRTE2MDogzeXo5+Ll8fLt4P8g6u7s4O3k4CDn7eD36uAgJXMiCiAKLSM6IGV4X2NtZHMuYzo1NTc3CisjOiBleF9jbWRzLmM6NTU5OAogbXNnaWQgIkUxNTY6IE1pc3Npbmcgc2lnbiBuYW1lIgogbXNnc3RyICJFMTU2OiDP8O7v8/nl7e4g6Oz/IOft4Pfq4CIKIAotIzogZXhfY21kcy5jOjU2MjMKKyM6IGV4X2NtZHMuYzo1NjQ0CiBtc2dpZCAiRTYxMjogVG9vIG1hbnkgc2lnbnMgZGVmaW5lZCIKIG1zZ3N0ciAiRTYxMjogzu/w5eTl6+Xt7iDx6+j46u7sIOzt7uPuIOft4Pfq7uIiCiAKLSM6IGV4X2NtZHMuYzo1NjkxCisjOiBleF9jbWRzLmM6NTcxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjM5OiBJbnZhbGlkIHNpZ24gdGV4dDogJXMiCiBtc2dzdHIgIkUyMzk6IM3l7/Dg4ujr/O376SDy5erx8iDn7eD36uA6ICVzIgogCi0jOiBleF9jbWRzLmM6NTcyMiBleF9jbWRzLmM6NTkxMworIzogZXhfY21kcy5jOjU3NDMgZXhfY21kcy5jOjU5MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE1NTogVW5rbm93biBzaWduOiAlcyIKIG1zZ3N0ciAiRTE1NTogzeXo5+Ll8fLt++kg5+3g9+7qOiAlcyIKIAotIzogZXhfY21kcy5jOjU3NzEKKyM6IGV4X2NtZHMuYzo1NzkyCiBtc2dpZCAiRTE1OTogTWlzc2luZyBzaWduIG51bWJlciIKIG1zZ3N0ciAiRTE1OTogz/Du7/P55e0g7e7s5fAg5+3g9+rgIgogCi0jOiBleF9jbWRzLmM6NTg1MworIzogZXhfY21kcy5jOjU4NzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE1ODogSW52YWxpZCBidWZmZXIgbmFtZTogJXMiCiBtc2dzdHIgIkUxNTg6IM3l7/Dg4ujr/O3u5SDo7P8g4fP05fDgOiAlcyIKIAotIzogZXhfY21kcy5jOjU4OTIKKyM6IGV4X2NtZHMuYzo1OTEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxNTc6IEludmFsaWQgc2lnbiBJRDogJWxkIgogbXNnc3RyICJFMTU3OiDN5e/w4OLo6/zt++kgSUQg5+3g9+rgOiAlbGQiCiAKLSM6IGV4X2NtZHMuYzo1OTYyCisjOiBleF9jbWRzLmM6NTk4MwogbXNnaWQgIiAoTk9UIEZPVU5EKSIKIG1zZ3N0ciAiICjNxSDNwMnExc3OKSIKIAotIzogZXhfY21kcy5jOjU5NjQKKyM6IGV4X2NtZHMuYzo1OTg1CiBtc2dpZCAiIChub3Qgc3VwcG9ydGVkKSIKIG1zZ3N0ciAiICjt5SDv7uTk5fDm6OLg5fLx/ykiCiAKLSM6IGV4X2NtZHMuYzo2MDYzCisjOiBleF9jbWRzLmM6NjA4NAogbXNnaWQgIltEZWxldGVkXSIKIG1zZ3N0ciAiW9Pk4Ovl7e5dIgogCkBAIC05MzgsNyArOTM4LDcgQEAKIG1zZ2lkICJFbnRlcmluZyBEZWJ1ZyBtb2RlLiAgVHlwZSBcImNvbnRcIiB0byBjb250aW51ZS4iCiBtc2dzdHIgIsLq6/73uO0g8OXm6Owg7vLr4OTq6C4gxOv/IO/w7uTu6+bl7ej/IO3g4eXw6PLlIFwiY29udFwiIgogCi0jOiBleF9jbWRzMi5jOjk2IGV4X2RvY21kLmM6OTY2CisjOiBleF9jbWRzMi5jOjk2IGV4X2RvY21kLmM6OTY4CiAjLCBjLWZvcm1hdAogbXNnaWQgImxpbmUgJWxkOiAlcyIKIG1zZ3N0ciAi8fLw7urgICVsZDogJXMiCkBAIC05NzIsNyArOTcyLDcgQEAKIG1zZ2lkICJTYXZlIGNoYW5nZXMgdG8gXCIlLipzXCI/IgogbXNnc3RyICLR7vXw4O3o8vwg6Ofs5e3l7ej/IOIgXCIlLipzXCI/IgogCi0jOiBleF9jbWRzMi5jOjc4OCBleF9kb2NtZC5jOjkzNzgKKyM6IGV4X2NtZHMyLmM6Nzg4IGV4X2RvY21kLmM6OTM5OAogbXNnaWQgIlVudGl0bGVkIgogbXNnc3RyICLB5ecg6Ozl7egiCiAKQEAgLTEwMDMsMTY4ICsxMDAzLDE2OCBAQAogbXNnaWQgIkU2NjY6IGNvbXBpbGVyIG5vdCBzdXBwb3J0ZWQ6ICVzIgogbXNnc3RyICJFNjY2OiDq7uzv6Ov/8u7wIO3lIO/u5OTl8Obo4uDl8vH/OiAlcyIKIAotIzogZXhfY21kczIuYzoxODk3CisjOiBleF9jbWRzMi5jOjE5MDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiU2VhcmNoaW5nIGZvciBcIiVzXCIgaW4gXCIlc1wiIgogbXNnc3RyICLP7ujx6iBcIiVzXCIg4iBcIiVzXCIiCiAKLSM6IGV4X2NtZHMyLmM6MTkxOQorIzogZXhfY21kczIuYzoxOTIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNlYXJjaGluZyBmb3IgXCIlc1wiIgogbXNnc3RyICLP7ujx6iBcIiVzXCIiCiAKLSM6IGV4X2NtZHMyLmM6MTk0MAorIzogZXhfY21kczIuYzoxOTQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdCBmb3VuZCBpbiAncnVudGltZXBhdGgnOiBcIiVzXCIiCiBtc2dzdHIgIu3lIO3g6eTl7e4g4iAncnVudGltZXBhdGgnOiBcIiVzXCIiCiAKLSM6IGV4X2NtZHMyLmM6MTk3NAorIzogZXhfY21kczIuYzoxOTc5CiBtc2dpZCAiU291cmNlIFZpbSBzY3JpcHQiCiBtc2dzdHIgIsL77+7r7ejy/CDx9uXt4PDo6SBWaW0iCiAKLSM6IGV4X2NtZHMyLmM6MjE2NAorIzogZXhfY21kczIuYzoyMTY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBzb3VyY2UgYSBkaXJlY3Rvcnk6IFwiJXNcIiIKIG1zZ3N0ciAizeXr/Of/IPH36PLg8vwg6uDy4Ovu4zogXCIlc1wiIgogCi0jOiBleF9jbWRzMi5jOjIyMDIKKyM6IGV4X2NtZHMyLmM6MjIwNwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgc291cmNlIFwiJXNcIiIKIG1zZ3N0ciAi7eXi7ufs7ubt7iDx9+jy4PL8IFwiJXNcIiIKIAotIzogZXhfY21kczIuYzoyMjA0CisjOiBleF9jbWRzMi5jOjIyMDkKICMsIGMtZm9ybWF0CiBtc2dpZCAibGluZSAlbGQ6IGNvdWxkIG5vdCBzb3VyY2UgXCIlc1wiIgogbXNnc3RyICLx8vDu6uAgJWxkOiDt5eLu5+zu5u3uIPH36PLg8vwgXCIlc1wiIgogCi0jOiBleF9jbWRzMi5jOjIyMTgKKyM6IGV4X2NtZHMyLmM6MjIyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJzb3VyY2luZyBcIiVzXCIiCiBtc2dzdHIgIvH36PL74uDt6OUg8fbl7eDw6P8gXCIlc1wiIgogCi0jOiBleF9jbWRzMi5jOjIyMjAKKyM6IGV4X2NtZHMyLmM6MjIyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJsaW5lICVsZDogc291cmNpbmcgXCIlc1wiIgogbXNnc3RyICLx8vDu6uAgJWxkOiDx9+jy++Lg7ejlIFwiJXNcIiIKIAotIzogZXhfY21kczIuYzoyMzYzCisjOiBleF9jbWRzMi5jOjIzNjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmluaXNoZWQgc291cmNpbmcgJXMiCiBtc2dzdHIgIvH36PL74uDt6OUg8fbl7eDw6P8gJXMg5+Di5fD45e3uIgogCi0jOiBleF9jbWRzMi5jOjI3MDcKKyM6IGV4X2NtZHMyLmM6MjcxMgogbXNnaWQgIlcxNTogV2FybmluZzogV3JvbmcgbGluZSBzZXBhcmF0b3IsIF5NIG1heSBiZSBtaXNzaW5nIgogbXNnc3RyICIiCiAiVzE1OiDP8OXk8+/w5ebk5e3o5Tog7eXv8ODi6Ov87fvpIPDg5+Tl6+jy5ev8IPHy8O7q6C4gwu7n7O7m7e4g7/Du7/P55e3uIF5NIgogCi0jOiBleF9jbWRzMi5jOjI3NTYKKyM6IGV4X2NtZHMyLmM6Mjc2MQogbXNnaWQgIkUxNjc6IDpzY3JpcHRlbmNvZGluZyB1c2VkIG91dHNpZGUgb2YgYSBzb3VyY2VkIGZpbGUiCiBtc2dzdHIgIkUxNjc6IMru7ODt5OAgOnNjcmlwdGVuY29kaW5nIOjx7+7r/Ofz5fLx/yDi7eUg9ODp6+Ag8fbl7eDw6P8iCiAKLSM6IGV4X2NtZHMyLmM6Mjc4OQorIzogZXhfY21kczIuYzoyNzk0CiBtc2dpZCAiRTE2ODogOmZpbmlzaCB1c2VkIG91dHNpZGUgb2YgYSBzb3VyY2VkIGZpbGUiCiBtc2dzdHIgIkUxNjg6IMru7ODt5OAgOmZpbmlzaCDo8e/u6/zn8+Xy8f8g4u3lIPTg6evgIPH25e3g8Oj/IgogCi0jOiBleF9jbWRzMi5jOjMyMzgKKyM6IGV4X2NtZHMyLmM6MzI0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJQYWdlICVkIgogbXNnc3RyICLR8vDg7ej24CAlZCIKIAotIzogZXhfY21kczIuYzozMzk0CisjOiBleF9jbWRzMi5jOjMzOTkKIG1zZ2lkICJObyB0ZXh0IHRvIGJlIHByaW50ZWQiCiBtc2dzdHIgIs/l9+Dy4PL8IO3l9+Xj7iIKIAotIzogZXhfY21kczIuYzozNDcyCisjOiBleF9jbWRzMi5jOjM0NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiUHJpbnRpbmcgcGFnZSAlZCAoJWQlJSkiCiBtc2dzdHIgIs/l9+Dy/CDx8vAuICVkICglZCUlKSIKIAotIzogZXhfY21kczIuYzozNDg0CisjOiBleF9jbWRzMi5jOjM0ODkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIENvcHkgJWQgb2YgJWQiCiBtc2dzdHIgIiDK7u/o/yAlZCDo5yAlZCIKIAotIzogZXhfY21kczIuYzozNTQyCisjOiBleF9jbWRzMi5jOjM1NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiUHJpbnRlZDogJXMiCiBtc2dzdHIgIs3g7+X34PLg7e46ICVzIgogCi0jOiBleF9jbWRzMi5jOjM1NDkKKyM6IGV4X2NtZHMyLmM6MzU1NAogIywgYy1mb3JtYXQKIG1zZ2lkICJQcmludGluZyBhYm9ydGVkIgogbXNnc3RyICLP5ffg8vwg7/Dl6vDg+eXt4CIKIAotIzogZXhfY21kczIuYzozOTE0CisjOiBleF9jbWRzMi5jOjM5MTkKIG1zZ2lkICJFNDU1OiBFcnJvciB3cml0aW5nIHRvIFBvc3RTY3JpcHQgb3V0cHV0IGZpbGUiCiBtc2dzdHIgIkU0NTU6IM746OHq4CDn4O/o8egg4iD04OnrIFBvc3RTY3JpcHQiCiAKLSM6IGV4X2NtZHMyLmM6NDE4OQorIzogZXhfY21kczIuYzo0MTk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2MjQ6IENhbid0IG9wZW4gZmlsZSBcIiVzXCIiCiBtc2dzdHIgIkU2MjQ6IM3l4u7n7O7m7e4g7vLq8Pvy/CD04OnrIFwiJXNcIiIKIAotIzogZXhfY21kczIuYzo0MTk5IGV4X2NtZHMyLmM6NDgyNAorIzogZXhfY21kczIuYzo0MjA0IGV4X2NtZHMyLmM6NDgyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDU3OiBDYW4ndCByZWFkIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcIiVzXCIiCiBtc2dzdHIgIkU0NTc6IM3l4u7n7O7m7e4g7/Du9+jy4PL8IPTg6esg8OXx8/Dx7uIgUG9zdFNjcmlwdCBcIiVzXCIiCiAKLSM6IGV4X2NtZHMyLmM6NDIwNworIzogZXhfY21kczIuYzo0MjEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2MTg6IGZpbGUgXCIlc1wiIGlzIG5vdCBhIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSIKIG1zZ3N0ciAiRTYxODog9ODp6yBcIiVzXCIg7eUg/+Lr/+Xy8f8g9ODp6+7sIPDl8fPw8e7iIFBvc3RTY3JpcHQiCiAKLSM6IGV4X2NtZHMyLmM6NDIyMiBleF9jbWRzMi5jOjQyNDIgZXhfY21kczIuYzo0MjU3IGV4X2NtZHMyLmM6NDI3OQorIzogZXhfY21kczIuYzo0MjI3IGV4X2NtZHMyLmM6NDI0NyBleF9jbWRzMi5jOjQyNjIgZXhfY21kczIuYzo0Mjg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2MTk6IGZpbGUgXCIlc1wiIGlzIG5vdCBhIHN1cHBvcnRlZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUiCiBtc2dzdHIgIkU2MTk6IPTg6esgXCIlc1wiIO3lIP/i6//l8vH/IOTu7/Px8ujs++wg9ODp6+7sIPDl8fPw8e7iIFBvc3RTY3JpcHQiCiAKLSM6IGV4X2NtZHMyLmM6NDMwOQorIzogZXhfY21kczIuYzo0MzE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2MjE6IFwiJXNcIiByZXNvdXJjZSBmaWxlIGhhcyB3cm9uZyB2ZXJzaW9uIgogbXNnc3RyICJFNjIxOiD04OnrIPDl8fPw8e7iIFwiJXNcIiDt5ejn4uXx8u3u6SDi5fDx6OgiCiAKLSM6IGV4X2NtZHMyLmM6NDc3NgorIzogZXhfY21kczIuYzo0NzgxCiBtc2dpZCAiRTMyNDogQ2FuJ3Qgb3BlbiBQb3N0U2NyaXB0IG91dHB1dCBmaWxlIgogbXNnc3RyICJFMzI0OiDN5eLu5+zu5u3uIO7y6vD78vwg9ODp6yBQb3N0U2NyaXB0IgogCi0jOiBleF9jbWRzMi5jOjQ4MDkKKyM6IGV4X2NtZHMyLmM6NDgxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDU2OiBDYW4ndCBvcGVuIGZpbGUgXCIlc1wiIgogbXNnc3RyICJFNDU2OiDN5eLu5+zu5u3uIO7y6vD78vwg9ODp6yBcIiVzXCIiCiAKLSM6IGV4X2NtZHMyLmM6NDkyOAorIzogZXhfY21kczIuYzo0OTMzCiBtc2dpZCAiRTQ1NjogQ2FuJ3QgZmluZCBQb3N0U2NyaXB0IHJlc291cmNlIGZpbGUgXCJwcm9sb2cucHNcIiIKIG1zZ3N0ciAiRTQ1Njog1ODp6yDw5fHz8PHu4iBQb3N0U2NyaXB0IFwicHJvbG9nLnBzXCIg7eUg7eDp5OXtIgogCi0jOiBleF9jbWRzMi5jOjQ5NTkKKyM6IGV4X2NtZHMyLmM6NDk2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDU2OiBDYW4ndCBmaW5kIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcIiVzLnBzXCIiCiBtc2dzdHIgIkU0NTY6INTg6esg8OXx8/Dx7uIgUG9zdFNjcmlwdCBcIiVzLnBzXCIg7eUg7eDp5OXtIgogCi0jOiBleF9jbWRzMi5jOjQ5NzcKKyM6IGV4X2NtZHMyLmM6NDk4MgogIywgYy1mb3JtYXQKIG1zZ2lkICJFNjIwOiBVbmFibGUgdG8gY29udmVydCBmcm9tIG11bHRpLWJ5dGUgdG8gXCIlc1wiIGVuY29kaW5nIgogbXNnc3RyICIiCiAiRTYyMDogz/Dl7uHw4Ofu4uDt6OUg6Ocg7PPr/PLo4eDp8u379SDx6Ozi7uvu4iDiIOru5Ojw7uLq8yBcIiVzXCIg7eXi7ufs7ubt7iIKIAotIzogZXhfY21kczIuYzo1MTAyCisjOiBleF9jbWRzMi5jOjUxMDcKIG1zZ2lkICJTZW5kaW5nIHRvIHByaW50ZXIuLi4iCiBtc2dzdHIgIs7y7/Dg4urgIO3gIO/l9+Dy/C4uLiIKIAotIzogZXhfY21kczIuYzo1MTA2CisjOiBleF9jbWRzMi5jOjUxMTEKIG1zZ2lkICJFMzY1OiBGYWlsZWQgdG8gcHJpbnQgUG9zdFNjcmlwdCBmaWxlIgogbXNnc3RyICJFMzY1OiDN5SDz5ODr7vH8IOL77+7r7ejy/CDv5ffg8vwg9ODp6+AgUG9zdFNjcmlwdCIKIAotIzogZXhfY21kczIuYzo1MTA4CisjOiBleF9jbWRzMi5jOjUxMTMKIG1zZ2lkICJQcmludCBqb2Igc2VudC4iCiBtc2dzdHIgIsfg5ODt6OUg7eAg7+X34PL8IO7y7/Dg4uvl7e4uIgogCi0jOiBleF9jbWRzMi5jOjU2MTgKKyM6IGV4X2NtZHMyLmM6NTYyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDdXJyZW50ICVzbGFuZ3VhZ2U6IFwiJXNcIiIKIG1zZ3N0ciAiwOry6OLt++kgJXP/5/vqOiBcIiVzXCIiCiAKLSM6IGV4X2NtZHMyLmM6NTYyOQorIzogZXhfY21kczIuYzo1NjM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxOTc6IENhbm5vdCBzZXQgbGFuZ3VhZ2UgdG8gXCIlc1wiIgogbXNnc3RyICJFMTk3OiDN5eLu5+zu5u3uIPHs5e3o8vwg/+f76iDt4CBcIiVzXCIiCkBAIC0xMTc4LDc0ICsxMTc4LDc0IEBACiBtc2dpZCAiRTUwMTogQXQgZW5kLW9mLWZpbGUiCiBtc2dzdHIgIkU1MDE6IMIg6u7t9uUg9ODp6+AiCiAKLSM6IGV4X2RvY21kLmM6NjY5CisjOiBleF9kb2NtZC5jOjY3MAogbXNnaWQgIkUxNjk6IENvbW1hbmQgdG9vIHJlY3Vyc2l2ZSIKIG1zZ3N0ciAiRTE2OTogQ+vo+Oru7CDw5erz8PHo4u3g/yDq7uzg7eTgIgogCi0jOiBleF9kb2NtZC5jOjEyMjkKKyM6IGV4X2RvY21kLmM6MTIzMgogIywgYy1mb3JtYXQKIG1zZ2lkICJFNjA1OiBFeGNlcHRpb24gbm90IGNhdWdodDogJXMiCiBtc2dzdHIgIkU2MDU6IMjx6uv+9+jy5ev87eD/IPHo8vPg9uj/IO3lIO7h8ODh7vLg7eA6ICVzIgogCi0jOiBleF9kb2NtZC5jOjEzMTcKKyM6IGV4X2RvY21kLmM6MTMyMAogbXNnaWQgIkVuZCBvZiBzb3VyY2VkIGZpbGUiCiBtc2dzdHIgIsru7eX2IPH36PLg7e3u4+4g9ODp6+AiCiAKLSM6IGV4X2RvY21kLmM6MTMxOAorIzogZXhfZG9jbWQuYzoxMzIxCiBtc2dpZCAiRW5kIG9mIGZ1bmN0aW9uIgogbXNnc3RyICLK7u3l9iD08+3q9ujoIgogCi0jOiBleF9kb2NtZC5jOjE5MDcKKyM6IGV4X2RvY21kLmM6MTkxMAogbXNnaWQgIkU0NjQ6IEFtYmlndW91cyB1c2Ugb2YgdXNlci1kZWZpbmVkIGNvbW1hbmQiCiBtc2dzdHIgIkU0NjQ6IM3l7uTt7uft4Pft7uUg6PHv7uv85+7i4O3o5SDq7uzg7eT7IO/u6/zn7uLg8uXr/yIKIAotIzogZXhfZG9jbWQuYzoxOTIxCisjOiBleF9kb2NtZC5jOjE5MjQKIG1zZ2lkICJFNDkyOiBOb3QgYW4gZWRpdG9yIGNvbW1hbmQiCiBtc2dzdHIgIkU0OTI6IN3y7iDt5SDq7uzg7eTgIPDl5ODq8u7w4CIKIAotIzogZXhfZG9jbWQuYzoyMDI4CisjOiBleF9kb2NtZC5jOjIwMzEKIG1zZ2lkICJFNDkzOiBCYWNrd2FyZHMgcmFuZ2UgZ2l2ZW4iCiBtc2dzdHIgIkU0OTM6IMfg5ODtIO7h8ODy7fvpIOTo4O/g5+7tIgogCi0jOiBleF9kb2NtZC5jOjIwMzcKKyM6IGV4X2RvY21kLmM6MjA0MAogbXNnaWQgIkJhY2t3YXJkcyByYW5nZSBnaXZlbiwgT0sgdG8gc3dhcCIKIG1zZ3N0ciAix+Dk4O0g7uHw4PLt++kg5Ojg7+Dn7u0sIOzl7f/l7CDj8ODt6Pb7IOzl8fLg7OgiCiAKLSM6IGV4X2RvY21kLmM6MjE2MAorIzogZXhfZG9jbWQuYzoyMTYzCiBtc2dpZCAiRTQ5NDogVXNlIHcgb3Igdz4+IgogbXNnc3RyICJFNDk0OiDI8e/u6/zn8+ny5SB3IOjr6CB3Pj4iCiAKLSM6IGV4X2RvY21kLmM6Mzc4NgorIzogZXhfZG9jbWQuYzozNzg5CiBtc2dpZCAiRTMxOTogU29ycnksIHRoZSBjb21tYW5kIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyB2ZXJzaW9uIgogbXNnc3RyICJFMzE5OiDI5+Lo7ejy5Swg/fLgIOru7ODt5OAg7eXk7vHy8+/t4CDiIOTg7e3u6SDi5fDx6OgiCiAKLSM6IGV4X2RvY21kLmM6Mzk4OQorIzogZXhfZG9jbWQuYzozOTkyCiBtc2dpZCAiRTE3MjogT25seSBvbmUgZmlsZSBuYW1lIGFsbG93ZWQiCiBtc2dzdHIgIkUxNzI6INDg5/Dl+OXt7iDo8e/u6/zn7uLg8vwg8u7r/OruIO7k7e4g6Oz/IPTg6evgIgogCi0jOiBleF9kb2NtZC5jOjQ1NjkKKyM6IGV4X2RvY21kLmM6NDU3MgogbXNnaWQgIjEgbW9yZSBmaWxlIHRvIGVkaXQuICBRdWl0IGFueXdheT8iCiBtc2dzdHIgIjEg9ODp6yDu5ujk4OXyIPDl5ODq8ujw7uLg7ej/LiDC++ny6D8iCiAKLSM6IGV4X2RvY21kLmM6NDU3MgorIzogZXhfZG9jbWQuYzo0NTc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVkIG1vcmUgZmlsZXMgdG8gZWRpdC4gIFF1aXQgYW55d2F5PyIKIG1zZ3N0ciAixfHy/CDt5e7y8OXk4Ory6PDu4uDt7fvlIPTg6ev7ICglZCkuIML76fLoPyIKIAotIzogZXhfZG9jbWQuYzo0NTc5CisjOiBleF9kb2NtZC5jOjQ1ODIKIG1zZ2lkICJFMTczOiAxIG1vcmUgZmlsZSB0byBlZGl0IgogbXNnc3RyICJFMTczOiAxIPTg6esg7ubo5ODl8iDw5eTg6vLo8O7i4O3o/y4iCiAKLSM6IGV4X2RvY21kLmM6NDU4MQorIzogZXhfZG9jbWQuYzo0NTg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxNzM6ICVsZCBtb3JlIGZpbGVzIHRvIGVkaXQiCiBtc2dzdHIgIkUxNzM6IMXx8vwg7eXu8vDl5ODq8ujw7uLg7e375SD04Onr+yAoJWQpLiIKIAotIzogZXhfZG9jbWQuYzo0Njc2CisjOiBleF9kb2NtZC5jOjQ2NzkKIG1zZ2lkICJFMTc0OiBDb21tYW5kIGFscmVhZHkgZXhpc3RzOiBhZGQgISB0byByZXBsYWNlIGl0IgogbXNnc3RyICJFMTc0OiDK7uzg7eTgIPPm5SDx8/nl8fLi8+XyLiDE7uHg4vzy5SAhIOTr/yDn4Ozl7fsuIgogCi0jOiBleF9kb2NtZC5jOjQ3ODcKKyM6IGV4X2RvY21kLmM6NDc5MAogbXNnaWQgIiIKICJcbiIKICIgICAgTmFtZSAgICAgICAgQXJncyBSYW5nZSBDb21wbGV0ZSAgRGVmaW5pdGlvbiIKQEAgLTEyNTMsMTc3ICsxMjUzLDE3NyBAQAogIlxuIgogIiAgICDI7P8gICAgICDP4PDg7C4gxOjg7y4gxO7v7uvtLiAgICDO7/Dl5OXr5e3o5SIKIAotIzogZXhfZG9jbWQuYzo0ODc2CisjOiBleF9kb2NtZC5jOjQ4NzkKIG1zZ2lkICJObyB1c2VyLWRlZmluZWQgY29tbWFuZHMgZm91bmQiCiBtc2dzdHIgIsru7ODt5PssIO7v8OXk5eu47e375SDv7uv85+7i4PLl6+XsLCDt5SDu4e3g8PPm5e37LiIKIAotIzogZXhfZG9jbWQuYzo0OTA4CisjOiBleF9kb2NtZC5jOjQ5MTEKIG1zZ2lkICJFMTc1OiBObyBhdHRyaWJ1dGUgc3BlY2lmaWVkIgogbXNnc3RyICJFMTc1OiDv4PDg7OXy8CDt5SDn4OTg7SIKIAotIzogZXhfZG9jbWQuYzo0OTYwCisjOiBleF9kb2NtZC5jOjQ5NjMKIG1zZ2lkICJFMTc2OiBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiCiBtc2dzdHIgIkUxNzY6IM3l7/Dg4ujr/O3u5SDq7uvo9+Xx8uLuIO/g8ODs5fLw7uIiCiAKLSM6IGV4X2RvY21kLmM6NDk3NQorIzogZXhfZG9jbWQuYzo0OTc4CiBtc2dpZCAiRTE3NzogQ291bnQgY2Fubm90IGJlIHNwZWNpZmllZCB0d2ljZSIKIG1zZ3N0ciAiRTE3Nzog1+jx6+4t7/Do8fLg4urzIO3l6/zn/yDz6uDn++Lg8vwg5OLg5uT7IgogCi0jOiBleF9kb2NtZC5jOjQ5ODUKKyM6IGV4X2RvY21kLmM6NDk4OAogbXNnaWQgIkUxNzg6IEludmFsaWQgZGVmYXVsdCB2YWx1ZSBmb3IgY291bnQiCiBtc2dzdHIgIkUxNzg6IM3l7/Dg4ujr/O3u5SDn7eD35e3o5SD36PHr4C3v8Ojx8uDi6ugg7+4g8+zu6/fg7ej+IgogCi0jOiBleF9kb2NtZC5jOjUwMTYKKyM6IGV4X2RvY21kLmM6NTAxOQogbXNnaWQgIkUxNzk6IGFyZ3VtZW50IHJlcXVpcmVkIGZvciBjb21wbGV0ZSIKIG1zZ3N0ciAiRTE3OTog5Ov/IOfg4uXw+OXt6P8g8vDl4fPl8vH/IPPq4Ofg8vwg7+Dw4Ozl8vAiCiAKLSM6IGV4X2RvY21kLmM6NTA0OAorIzogZXhfZG9jbWQuYzo1MDUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxODA6IEludmFsaWQgY29tcGxldGUgdmFsdWU6ICVzIgogbXNnc3RyICJFMTgwOiDN5e/w4OLo6/zt7uUg5+3g9+Xt6OUg5O7v7uvt5e3o/zogJXMiCiAKLSM6IGV4X2RvY21kLmM6NTA1NworIzogZXhfZG9jbWQuYzo1MDYwCiBtc2dpZCAiRTQ2ODogQ29tcGxldGlvbiBhcmd1bWVudCBvbmx5IGFsbG93ZWQgZm9yIGN1c3RvbSBjb21wbGV0aW9uIgogbXNnc3RyICIiCiAiRTQ2ODogz+Dw4Ozl8vAg4OLy7uTu7+7r7eXt6P8g7O7m7e4g6PHv7uv85+7i4PL8IPLu6/zq7iDxIO7x7uH77CDk7u/u6+3l7ejl7CIKIAotIzogZXhfZG9jbWQuYzo1MDYzCisjOiBleF9kb2NtZC5jOjUwNjYKIG1zZ2lkICJFNDY3OiBDdXN0b20gY29tcGxldGlvbiByZXF1aXJlcyBhIGZ1bmN0aW9uIGFyZ3VtZW50IgogbXNnc3RyICJFNDY3OiDO8e7h7uUg5O7v7uvt5e3o5SDy8OXh8+XyIPPq4Ofg7ej/IO/g8ODs5fLw4CD08+3q9ujoIgogCi0jOiBleF9kb2NtZC5jOjUwNzQKKyM6IGV4X2RvY21kLmM6NTA3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTgxOiBJbnZhbGlkIGF0dHJpYnV0ZTogJXMiCiBtc2dzdHIgIkUxODE6IM3l7/Dg4ujr/O376SDg8vDo4fPyOiAlcyIKIAotIzogZXhfZG9jbWQuYzo1MTE3CisjOiBleF9kb2NtZC5jOjUxMjAKIG1zZ2lkICJFMTgyOiBJbnZhbGlkIGNvbW1hbmQgbmFtZSIKIG1zZ3N0ciAiRTE4MjogzeXv8ODi6Ov87e7lIOjs/yDq7uzg7eT7IgogCi0jOiBleF9kb2NtZC5jOjUxMzIKKyM6IGV4X2RvY21kLmM6NTEzNQogbXNnaWQgIkUxODM6IFVzZXIgZGVmaW5lZCBjb21tYW5kcyBtdXN0IHN0YXJ0IHdpdGggYW4gdXBwZXJjYXNlIGxldHRlciIKIG1zZ3N0ciAiRTE4Mzogyu7s4O3k4CDv7uv85+7i4PLl6/8g5O7r5u3gIO3g9+jt4PL88f8g8SDn4OPr4OLt7ukg4fPq4vsiCiAKLSM6IGV4X2RvY21kLmM6NTIwMworIzogZXhfZG9jbWQuYzo1MjA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxODQ6IE5vIHN1Y2ggdXNlci1kZWZpbmVkIGNvbW1hbmQ6ICVzIgogbXNnc3RyICJFMTg0OiDN5fIg8uDq7ukg6u7s4O3k+yDv7uv85+7i4PLl6/86ICVzIgogCi0jOiBleF9kb2NtZC5jOjU2NjQKKyM6IGV4X2RvY21kLmM6NTY2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTg1OiBDYW5ub3QgZmluZCBjb2xvciBzY2hlbWUgJXMiCiBtc2dzdHIgIkUxODU6INbi5fLu4uD/IPH15ezgICVzIO3lIO3g6eTl7eAiCiAKLSM6IGV4X2RvY21kLmM6NTY3MgorIzogZXhfZG9jbWQuYzo1Njc1CiBtc2dpZCAiR3JlZXRpbmdzLCBWaW0gdXNlciEiCiBtc2dzdHIgIs/w6OLl8iwg7+7r/Ofu4uDy5ev8IFZpbSEiCiAKLSM6IGV4X2RvY21kLmM6NjM4OQorIzogZXhfZG9jbWQuYzo2MzkzCiBtc2dpZCAiRWRpdCBGaWxlIGluIG5ldyB3aW5kb3ciCiBtc2dzdHIgItDl5ODq8ujw7uLg8vwg9ODp6yDiIO3u4u7sIO7q7eUiCiAKLSM6IGV4X2RvY21kLmM6NjY4NAorIzogZXhfZG9jbWQuYzo2Njg4CiBtc2dpZCAiTm8gc3dhcCBmaWxlIgogbXNnc3RyICLB5ecg8eLu7y304Onr4CIKIAotIzogZXhfZG9jbWQuYzo2Nzg4CisjOiBleF9kb2NtZC5jOjY3OTIKIG1zZ2lkICJBcHBlbmQgRmlsZSIKIG1zZ3N0ciAixO7h4OLo8vwg9ODp6yIKIAotIzogZXhfZG9jbWQuYzo2ODUyCisjOiBleF9kb2NtZC5jOjY4NTYKIG1zZ2lkICJFMTg2OiBObyBwcmV2aW91cyBkaXJlY3RvcnkiCiBtc2dzdHIgIkUxODY6IM3l8iDv8OXk++Tz+eXj7iDq4PLg6+7j4CIKIAotIzogZXhfZG9jbWQuYzo2OTM0CisjOiBleF9kb2NtZC5jOjY5MzgKIG1zZ2lkICJFMTg3OiBVbmtub3duIgogbXNnc3RyICJFMTg3OiDN5ejn4uXx8u3uIgogCi0jOiBleF9kb2NtZC5jOjcwMTkKKyM6IGV4X2RvY21kLmM6NzAyMwogbXNnaWQgIkU0NjU6IDp3aW5zaXplIHJlcXVpcmVzIHR3byBudW1iZXIgYXJndW1lbnRzIgogbXNnc3RyICJFNDY1OiDq7uzg7eTgIDp3aW5zaXplIPLw5eHz5fIg8+rg5+Dt6P8g5OLz9SD36PHr7uL79SDv4PDg7OXy8O7iIgogCi0jOiBleF9kb2NtZC5jOjcwNzUKKyM6IGV4X2RvY21kLmM6NzA3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJXaW5kb3cgcG9zaXRpb246IFggJWQsIFkgJWQiCiBtc2dzdHIgIs/u6+7m5e3o5SDu6u3gOiBYICVkLCBZICVkIgogCi0jOiBleF9kb2NtZC5jOjcwODAKKyM6IGV4X2RvY21kLmM6NzA4NAogbXNnaWQgIkUxODg6IE9idGFpbmluZyB3aW5kb3cgcG9zaXRpb24gbm90IGltcGxlbWVudGVkIGZvciB0aGlzIHBsYXRmb3JtIgogbXNnc3RyICJFMTg4OiDCIOTg7e3u6SDx6PHy5ezlIO7v8OXk5evl7ejlIO/u6+7m5e3o/yDu6u3gIO3lIPDg4e7y4OXyIgogCi0jOiBleF9kb2NtZC5jOjcwOTAKKyM6IGV4X2RvY21kLmM6NzA5NAogbXNnaWQgIkU0NjY6IDp3aW5wb3MgcmVxdWlyZXMgdHdvIG51bWJlciBhcmd1bWVudHMiCiBtc2dzdHIgIkU0NjY6IOru7ODt5OAgOndpbnBvcyDy8OXh8+XyIPPq4Ofg7ej/IOTi8/Ug9+jx6+7i+/Ug7+Dw4Ozl8vDu4iIKIAotIzogZXhfZG9jbWQuYzo3MzY4CisjOiBleF9kb2NtZC5jOjczNzIKIG1zZ2lkICJTYXZlIFJlZGlyZWN0aW9uIgogbXNnc3RyICLP5fDl7eDv8ODi6+Xt6OUg5+Dv6PHoIgogCi0jOiBleF9kb2NtZC5jOjc1NTgKKyM6IGV4X2RvY21kLmM6NzU2MgogbXNnaWQgIlNhdmUgVmlldyIKIG1zZ3N0ciAi0e718ODt5e3o5SDi6OTgIgogCi0jOiBleF9kb2NtZC5jOjc1NTkKKyM6IGV4X2RvY21kLmM6NzU2MwogbXNnaWQgIlNhdmUgU2Vzc2lvbiIKIG1zZ3N0ciAi0e718ODt5e3o5SDx5eDt8eAiCiAKLSM6IGV4X2RvY21kLmM6NzU2MQorIzogZXhfZG9jbWQuYzo3NTY1CiBtc2dpZCAiU2F2ZSBTZXR1cCIKIG1zZ3N0ciAi0e718ODt5e3o5SDt4PHy8O7l6iIKIAotIzogZXhfZG9jbWQuYzo3NzEzCisjOiBleF9kb2NtZC5jOjc3MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE4OTogXCIlc1wiIGV4aXN0cyAoYWRkICEgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICJFMTg5OiBcIiVzXCIg8fP55fHy4vPl8iAoISwg9/Lu4fsg7uHu6fLoIO/w7uLl8OrzKSIKIAotIzogZXhfZG9jbWQuYzo3NzE4CisjOiBleF9kb2NtZC5jOjc3MjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE5MDogQ2Fubm90IG9wZW4gXCIlc1wiIGZvciB3cml0aW5nIgogbXNnc3RyICJFMTkwOiDN5eLu5+zu5u3uIO7y6vD78vwg5Ov/IOfg7+jx6CBcIiVzXCIiCiAKICMuIHNldCBtYXJrCi0jOiBleF9kb2NtZC5jOjc3NDIKKyM6IGV4X2RvY21kLmM6Nzc0NgogbXNnaWQgIkUxOTE6IEFyZ3VtZW50IG11c3QgYmUgYSBsZXR0ZXIgb3IgZm9yd2FyZC9iYWNrd2FyZCBxdW90ZSIKIG1zZ3N0ciAiRTE5MTogz+Dw4Ozl8vAg5O7r5uXtIOH78vwg7/D/7O7pL+7h8ODy7e7pIOrg4vv36u7pIOjr6CDh8+ri7ukiCiAKLSM6IGV4X2RvY21kLmM6Nzc4NAorIzogZXhfZG9jbWQuYzo3Nzg4CiBtc2dpZCAiRTE5MjogUmVjdXJzaXZlIHVzZSBvZiA6bm9ybWFsIHRvbyBkZWVwIgogbXNnc3RyICJFMTkyOiDR6+j46u7sIOPr8+Hu6uD/IPDl6vPw8ej/IO/w6CDo8e/u6/zn7uLg7ejoIOru7ODt5PsgOm5vcm1hbCIKIAotIzogZXhfZG9jbWQuYzo4MzAyCisjOiBleF9kb2NtZC5jOjgzMDYKIG1zZ2lkICJFMTk0OiBObyBhbHRlcm5hdGUgZmlsZSBuYW1lIHRvIHN1YnN0aXR1dGUgZm9yICcjJyIKIG1zZ3N0ciAiRTE5NDogzeXyIPHu8eXk7eXj7iDo7OXt6CD04Onr4CDk6/8g5+Ds5e37ICcjJyIKIAotIzogZXhfZG9jbWQuYzo4MzMzCisjOiBleF9kb2NtZC5jOjgzMzcKIG1zZ2lkICJFNDk1OiBubyBhdXRvY29tbWFuZCBmaWxlIG5hbWUgdG8gc3Vic3RpdHV0ZSBmb3IgXCI8YWZpbGU+XCIiCiBtc2dzdHIgIkU0OTU6IM3l8iDg4vLu6u7s4O3k7e7j7iDo7OXt6CD04Onr4CDk6/8g5+Ds5e37IFwiPGFmaWxlPlwiIgogCi0jOiBleF9kb2NtZC5jOjgzNDEKKyM6IGV4X2RvY21kLmM6ODM0NQogbXNnaWQgIkU0OTY6IG5vIGF1dG9jb21tYW5kIGJ1ZmZlciBudW1iZXIgdG8gc3Vic3RpdHV0ZSBmb3IgXCI8YWJ1Zj5cIiIKIG1zZ3N0ciAiRTQ5NjogzeXyIODi8u7q7uzg7eTt7uPuIO3u7OXw4CDh8/Tl8OAg5Ov/IOfg7OXt+yBcIjxhYnVmPlwiIgogCi0jOiBleF9kb2NtZC5jOjgzNTIKKyM6IGV4X2RvY21kLmM6ODM1NgogbXNnaWQgIkU0OTc6IG5vIGF1dG9jb21tYW5kIG1hdGNoIG5hbWUgdG8gc3Vic3RpdHV0ZSBmb3IgXCI8YW1hdGNoPlwiIgogbXNnc3RyICJFNDk3OiDN5fIg4OLy7uru7ODt5O3u4+4g6Ozl7egg8e7u8uLl8vHy4uj/IOTr/yDn4Ozl7fsgXCI8YW1hdGNoPlwiIgogCi0jOiBleF9kb2NtZC5jOjgzNjIKKyM6IGV4X2RvY21kLmM6ODM2NgogbXNnaWQgIkU0OTg6IG5vIDpzb3VyY2UgZmlsZSBuYW1lIHRvIHN1YnN0aXR1dGUgZm9yIFwiPHNmaWxlPlwiIgogbXNnc3RyICJFNDk4OiDt5fIg6Ozl7egg9ODp6+AgOnNvdXJjZSDk6/8g5+Ds5e37IFwiPHNmaWxlPlwiIgogCi0jOiBleF9kb2NtZC5jOjg0MDMKKyM6IGV4X2RvY21kLmM6ODQwNwogIywgbm8tYy1mb3JtYXQKIG1zZ2lkICJFNDk5OiBFbXB0eSBmaWxlIG5hbWUgZm9yICclJyBvciAnIycsIG9ubHkgd29ya3Mgd2l0aCBcIjpwOmhcIiIKIG1zZ3N0ciAiRTQ5OTogz/Px8u7lIOjs/yD04Onr4CDk6/8gJyUnIOjr6CAnIycsIOLu5+zu5u3uIPLu6/zq7iBjIFwiOnA6aFwiIgogCi0jOiBleF9kb2NtZC5jOjg0MDUKKyM6IGV4X2RvY21kLmM6ODQwOQogbXNnaWQgIkU1MDA6IEV2YWx1YXRlcyB0byBhbiBlbXB0eSBzdHJpbmciCiBtc2dzdHIgIkU1MDA6INDl5/Pr/PLg8u7sIOL78ODm5e3o/yD/4uv/5fLx/yDv8/Hy4P8g8fLw7urgIgogCi0jOiBleF9kb2NtZC5jOjkzNjAKKyM6IGV4X2RvY21kLmM6OTM4MAogbXNnaWQgIkUxOTU6IENhbm5vdCBvcGVuIHZpbWluZm8gZmlsZSBmb3IgcmVhZGluZyIKIG1zZ3N0ciAiRTE5NTogzeXi7ufs7ubt7iDu8urw+/L8IPTg6esgdmltaW5mbyDk6/8g9/Ll7ej/IgogCi0jOiBleF9kb2NtZC5jOjk1MzMKKyM6IGV4X2RvY21kLmM6OTU1MwogbXNnaWQgIkUxOTY6IE5vIGRpZ3JhcGhzIGluIHRoaXMgdmVyc2lvbiIKIG1zZ3N0ciAiRTE5NjogwiD98u7pIOLl8PHo6CDk6OPw4PT7IO3lIPDg4e7y4P7yIgogCkBAIC0xNDgyLDcgKzE0ODIsNyBAQAogbXNnaWQgIkVycm9yIGFuZCBpbnRlcnJ1cHQiCiBtc2dzdHIgIs746OHq4CDoIO/w5fD74uDt6OUiCiAKLSM6IGV4X2V2YWwuYzo3NTQgZ3VpLmM6NDM4MQorIzogZXhfZXZhbC5jOjc1NCBndWkuYzo0Mzg0CiBtc2dpZCAiRXJyb3IiCiBtc2dzdHIgIs746OHq4CIKIApAQCAtMTU1OCwxOSArMTU1OCwxOSBAQAogbXNnaWQgIkUxOTM6IDplbmRmdW5jdGlvbiBub3QgaW5zaWRlIGEgZnVuY3Rpb24iCiBtc2dzdHIgIkUxOTM6IOru7ODt5OAgOmVuZGZ1bmN0aW9uIOzu5uXyIOjx7+7r/Ofu4uDy/PH/IPLu6/zq7iDi7fPy8Ogg9PPt6vbo6CIKIAotIzogZXhfZ2V0bG4uYzozMjk2CisjOiBleF9nZXRsbi5jOjMyOTkKIG1zZ2lkICJ0YWduYW1lIgogbXNnc3RyICLo7P8g7OXy6ugiCiAKLSM6IGV4X2dldGxuLmM6MzI5OQorIzogZXhfZ2V0bG4uYzozMzAyCiBtc2dpZCAiIGtpbmQgZmlsZVxuIgogbXNnc3RyICIg8ujvIPTg6evgXG4iCiAKLSM6IGV4X2dldGxuLmM6NDc1MgorIzogZXhfZ2V0bG4uYzo0NzY4CiBtc2dpZCAiJ2hpc3RvcnknIG9wdGlvbiBpcyB6ZXJvIgogbXNnc3RyICLn7eD35e3o5SDu7/bo6CAnaGlzdG9yeScg8ODi7e4g7fPr/iIKIAotIzogZXhfZ2V0bG4uYzo1MDIzCisjOiBleF9nZXRsbi5jOjUwMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMTU3OSwyNTkgKzE1NzksMjU5IEBACiAiXG4iCiAiIyAlcywg6PHy7vDo/yAo7eD36O3g/yDu8iDx4uXm5ePuIOog8fLg8O7s8yk6XG4iCiAKLSM6IGV4X2dldGxuLmM6NTAyNAorIzogZXhfZ2V0bG4uYzo1MDQwCiBtc2dpZCAiQ29tbWFuZCBMaW5lIgogbXNnc3RyICLK7uzg7eTt4P8g8fLw7urgIgogCi0jOiBleF9nZXRsbi5jOjUwMjUKKyM6IGV4X2dldGxuLmM6NTA0MQogbXNnaWQgIlNlYXJjaCBTdHJpbmciCiBtc2dzdHIgItHy8O7q4CDv7ujx6uAiCiAKLSM6IGV4X2dldGxuLmM6NTAyNgorIzogZXhfZ2V0bG4uYzo1MDQyCiBtc2dpZCAiRXhwcmVzc2lvbiIKIG1zZ3N0ciAiwvvw4Obl7ejlIgogCi0jOiBleF9nZXRsbi5jOjUwMjcKKyM6IGV4X2dldGxuLmM6NTA0MwogbXNnaWQgIklucHV0IExpbmUiCiBtc2dzdHIgItHy8O7q4CDi4u7k4CIKIAotIzogZXhfZ2V0bG4uYzo1MDY1CisjOiBleF9nZXRsbi5jOjUwODEKIG1zZ2lkICJFMTk4OiBjbWRfcGNoYXIgYmV5b25kIHRoZSBjb21tYW5kIGxlbmd0aCIKIG1zZ3N0ciAiRTE5ODogY21kX3BjaGFyIOHu6/z45SDk6+jt+yDq7uzg7eT7IgogCi0jOiBleF9nZXRsbi5jOjUyNDIKKyM6IGV4X2dldGxuLmM6NTI1OAogbXNnaWQgIkUxOTk6IEFjdGl2ZSB3aW5kb3cgb3IgYnVmZmVyIGRlbGV0ZWQiCiBtc2dzdHIgIkUxOTk6INPk4Ovl7e4g4Ory6OLt7uUg7urt7iDo6+gg4fP05fAiCiAKLSM6IGZpbGVpby5jOjM3NworIzogZmlsZWlvLmM6Mzc4CiBtc2dpZCAiSWxsZWdhbCBmaWxlIG5hbWUiCiBtc2dzdHIgIs3l5O7v8/Hy6Ozu5SDo7P8g9ODp6+AiCiAKLSM6IGZpbGVpby5jOjQwMSBmaWxlaW8uYzo1MzUgZmlsZWlvLmM6MjkxMyBmaWxlaW8uYzoyOTU0CisjOiBmaWxlaW8uYzo0MDIgZmlsZWlvLmM6NTQwIGZpbGVpby5jOjI5MjUgZmlsZWlvLmM6Mjk2NgogbXNnaWQgImlzIGEgZGlyZWN0b3J5IgogbXNnc3RyICL/4uv/5fLx/yDq4PLg6+7j7uwiCiAKLSM6IGZpbGVpby5jOjQwMworIzogZmlsZWlvLmM6NDA0CiBtc2dpZCAiaXMgbm90IGEgZmlsZSIKIG1zZ3N0ciAi7eUg/+Lr/+Xy8f8g9ODp6+7sIgogCi0jOiBmaWxlaW8uYzo1NTcgZmlsZWlvLmM6NDEzMQorIzogZmlsZWlvLmM6NTYyIGZpbGVpby5jOjQxNDMKIG1zZ2lkICJbTmV3IEZpbGVdIgogbXNnc3RyICJbze7i++kg9ODp610iCiAKLSM6IGZpbGVpby5jOjU5MAorIzogZmlsZWlvLmM6NTk1CiBtc2dpZCAiW1Blcm1pc3Npb24gRGVuaWVkXSIKIG1zZ3N0ciAiW8Tu8fLz7yDn4O/w5fm47V0iCiAKLSM6IGZpbGVpby5jOjY5NAorIzogZmlsZWlvLmM6NzA2CiBtc2dpZCAiRTIwMDogKlJlYWRQcmUgYXV0b2NvbW1hbmRzIG1hZGUgdGhlIGZpbGUgdW5yZWFkYWJsZSIKIG1zZ3N0ciAiRTIwMDogwiDw5efz6/zy4PLlIOL77+7r7eXt6P8g4OLy7uru7ODt5CAqUmVhZFByZSD04OnrIPHy4Osg7eX36PLg5ez77CIKIAotIzogZmlsZWlvLmM6Njk2CisjOiBmaWxlaW8uYzo3MDgKIG1zZ2lkICJFMjAxOiAqUmVhZFByZSBhdXRvY29tbWFuZHMgbXVzdCBub3QgY2hhbmdlIGN1cnJlbnQgYnVmZmVyIgogbXNnc3RyICJFMjAxOiDg4vLu6u7s4O3k+yAqUmVhZFByZSDt5SDk7uvm7fsg6Ofs5e3/8vwg4Ory6OLt++kg4fP05fAiCiAKLSM6IGZpbGVpby5jOjcxNworIzogZmlsZWlvLmM6NzI5CiBtc2dpZCAiVmltOiBSZWFkaW5nIGZyb20gc3RkaW4uLi5cbiIKIG1zZ3N0ciAiVmltOiDi++/u6+3/5fLx/yD38uXt6OUg6Ocg8fLg7eTg8PLt7uPuIO/u8u7q4CDi4u7k4CBzdGRpbi4uLlxuIgogCi0jOiBmaWxlaW8uYzo3MjMKKyM6IGZpbGVpby5jOjczNQogbXNnaWQgIlJlYWRpbmcgZnJvbSBzdGRpbi4uLiIKIG1zZ3N0ciAiwvvv7uvt/+Xy8f8g9/Ll7ejlIOjnIPHy4O3k4PDy7e7j7iDv7vLu6uAg4uLu5OAgc3RkaW4uLi4iCiAKICMuIFJlLW9wZW5pbmcgdGhlIG9yaWdpbmFsIGZpbGUgZmFpbGVkIQotIzogZmlsZWlvLmM6MTAwMAorIzogZmlsZWlvLmM6MTAxMgogbXNnaWQgIkUyMDI6IENvbnZlcnNpb24gbWFkZSBmaWxlIHVucmVhZGFibGUhIgogbXNnc3RyICJFMjAyOiDCIPDl5/Pr/PLg8uUg7/Dl7uHw4Ofu4uDt6P8g9ODp6yDx8uDrIO3l9+jy4OXs++whIgogCi0jOiBmaWxlaW8uYzoyMDkwCisjOiBmaWxlaW8uYzoyMTAyCiBtc2dpZCAiW2ZpZm8vc29ja2V0XSIKIG1zZ3N0ciAiW2ZpZm8v4+3l5+TuXSIKIAotIzogZmlsZWlvLmM6MjA5NworIzogZmlsZWlvLmM6MjEwOQogbXNnaWQgIltmaWZvXSIKIG1zZ3N0ciAiW2ZpZm9dIgogCi0jOiBmaWxlaW8uYzoyMTA0CisjOiBmaWxlaW8uYzoyMTE2CiBtc2dpZCAiW3NvY2tldF0iCiBtc2dzdHIgIlvj7eXn5O5dIgogCi0jOiBmaWxlaW8uYzoyMTEyCisjOiBmaWxlaW8uYzoyMTI0CiBtc2dpZCAiW1JPXSIKIG1zZ3N0ciAiW1JPXSIKIAotIzogZmlsZWlvLmM6MjEyMgorIzogZmlsZWlvLmM6MjEzNAogbXNnaWQgIltDUiBtaXNzaW5nXSIKIG1zZ3N0ciAiW+/w7u/z+eXt+yDx6Ozi7uv7IENSXSIKIAotIzogZmlsZWlvLmM6MjEyNworIzogZmlsZWlvLmM6MjEzOQogbXNnaWQgIltOTCBmb3VuZF0iCiBtc2dzdHIgIlvO4e3g8PPm5e37IPHo7OLu6/sgTkxdIgogCi0jOiBmaWxlaW8uYzoyMTMyCisjOiBmaWxlaW8uYzoyMTQ0CiBtc2dpZCAiW2xvbmcgbGluZXMgc3BsaXRdIgogbXNnc3RyICJb5Ovo7e375SDx8vDu6ugg8ODn4ejy+10iCiAKLSM6IGZpbGVpby5jOjIxMzggZmlsZWlvLmM6NDExNQorIzogZmlsZWlvLmM6MjE1MCBmaWxlaW8uYzo0MTI3CiBtc2dpZCAiW05PVCBjb252ZXJ0ZWRdIgogbXNnc3RyICJbwcXHIO/w5e7h8ODn7uLg7ejpXSIKIAotIzogZmlsZWlvLmM6MjE0MyBmaWxlaW8uYzo0MTIwCisjOiBmaWxlaW8uYzoyMTU1IGZpbGVpby5jOjQxMzIKIG1zZ2lkICJbY29udmVydGVkXSIKIG1zZ3N0ciAiW+/l8OXq7uTo8O7i4O3uXSIKIAotIzogZmlsZWlvLmM6MjE1MCBmaWxlaW8uYzo0MTQ1CisjOiBmaWxlaW8uYzoyMTYyIGZpbGVpby5jOjQxNTcKIG1zZ2lkICJbY3J5cHRlZF0iCiBtc2dzdHIgIlvn4Pjo9PDu4uDt7l0iCiAKLSM6IGZpbGVpby5jOjIxNTcKKyM6IGZpbGVpby5jOjIxNjkKIG1zZ2lkICJbQ09OVkVSU0lPTiBFUlJPUl0iCiBtc2dzdHIgIlvO2MjBysAgz9DFzsHQwMfOwsDNyN9dIgogCi0jOiBmaWxlaW8uYzoyMTYzCisjOiBmaWxlaW8uYzoyMTc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIltJTExFR0FMIEJZVEUgaW4gbGluZSAlbGRdIgogbXNnc3RyICJbzcXEzs/T0dLIzNvJIMHAydIg4iDx8vDu6uUgJWxkXSIKIAotIzogZmlsZWlvLmM6MjE3MAorIzogZmlsZWlvLmM6MjE4MgogbXNnaWQgIltSRUFEIEVSUk9SU10iCiBtc2dzdHIgIlvO2MjBysgg19LFzcjfXSIKIAotIzogZmlsZWlvLmM6MjM4NgorIzogZmlsZWlvLmM6MjM5OAogbXNnaWQgIkNhbid0IGZpbmQgdGVtcCBmaWxlIGZvciBjb252ZXJzaW9uIgogbXNnc3RyICLC8OXs5e3t++kg9ODp6yDk6/8g7+Xw5eru5Ojw7uLg7ej/IO3lIO3g6eTl7SIKIAotIzogZmlsZWlvLmM6MjM5MworIzogZmlsZWlvLmM6MjQwNQogbXNnaWQgIkNvbnZlcnNpb24gd2l0aCAnY2hhcmNvbnZlcnQnIGZhaWxlZCIKIG1zZ3N0ciAiz/Dl7uHw4Ofu4uDt6OUg8SDv7uzu+fz+ICdjaGFyY29udmVydCcg7eUg4vvv7uvt5e3uIgogCi0jOiBmaWxlaW8uYzoyMzk2CisjOiBmaWxlaW8uYzoyNDA4CiBtc2dpZCAiY2FuJ3QgcmVhZCBvdXRwdXQgb2YgJ2NoYXJjb252ZXJ0JyIKIG1zZ3N0ciAi7eXi7ufs7ubt7iDv8O736PLg8vwg4vvi7uQgJ2NoYXJjb252ZXJ0JyIKIAotIzogZmlsZWlvLmM6Mjc5NgorIzogZmlsZWlvLmM6MjgwOAogbXNnaWQgIkUyMDM6IEF1dG9jb21tYW5kcyBkZWxldGVkIG9yIHVubG9hZGVkIGJ1ZmZlciB0byBiZSB3cml0dGVuIgogbXNnc3RyICIiCiAiRTIwMzogwfP05fAsIOru8u7w++kg8vDl4e7i4Ovu8fwg5+Dv6PHg8vwsIPPk4Ou47SDo6+gg4vvj8PPm5e0g4OLy7uru7ODt5O7pIgogCi0jOiBmaWxlaW8uYzoyODE5CisjOiBmaWxlaW8uYzoyODMxCiBtc2dpZCAiRTIwNDogQXV0b2NvbW1hbmQgY2hhbmdlZCBudW1iZXIgb2YgbGluZXMgaW4gdW5leHBlY3RlZCB3YXkiCiBtc2dzdHIgIkUyMDQ6IMru6+j35fHy4u4g8fLw7uog6Ofs5e3l7e4g4OLy7uru7ODt5O7pIO3l7ubo5ODt7fvsIO7h8ODn7uwiCiAKLSM6IGZpbGVpby5jOjI4NTcKKyM6IGZpbGVpby5jOjI4NjkKIG1zZ2lkICJOZXRCZWFucyBkaXNzYWxsb3dzIHdyaXRlcyBvZiB1bm1vZGlmaWVkIGJ1ZmZlcnMiCiBtc2dzdHIgIk5ldEJlYW5zIO3lIO/u5+Lu6//l8iDi++/u6+3/8vwg5+Dv6PH8IO3l6Ofs5e247e379SDh8/Tl8O7iIgogCi0jOiBmaWxlaW8uYzoyODY1CisjOiBmaWxlaW8uYzoyODc3CiBtc2dpZCAiUGFydGlhbCB3cml0ZXMgZGlzYWxsb3dlZCBmb3IgTmV0QmVhbnMgYnVmZmVycyIKIG1zZ3N0ciAi1+Dx8uj37eD/IOfg7+jx/CDh8/Tl8O7iIE5ldEJlYW5zIO3lIOTu7/Px6uDl8vH/IgogCi0jOiBmaWxlaW8uYzoyOTE5IGZpbGVpby5jOjI5MzcKKyM6IGZpbGVpby5jOjI5MzEgZmlsZWlvLmM6Mjk0OQogbXNnaWQgImlzIG5vdCBhIGZpbGUgb3Igd3JpdGFibGUgZGV2aWNlIgogbXNnc3RyICLt5SD/4uv/5fLx/yD04Onr7uwg6OvoIPPx8vDu6fHy4u7sLCDk7vHy8+/t++wg5Ov/IOfg7+jx6CIKIAotIzogZmlsZWlvLmM6Mjk4OQorIzogZmlsZWlvLmM6MzAwMQogbXNnaWQgImlzIHJlYWQtb25seSAoYWRkICEgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICLu8urw+/Ig8u7r/OruIOTr/yD38uXt6P8gKCEsIPfy7uH7IO7h7uny6CDv8O7i5fDq8ykiCiAKLSM6IGZpbGVpby5jOjMzMzUKKyM6IGZpbGVpby5jOjMzNDcKIG1zZ2lkICJFNTA2OiBDYW4ndCB3cml0ZSB0byBiYWNrdXAgZmlsZSAoYWRkICEgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICJFNTA2OiDH4O/o8fwg4iDw5efl8OLt++kg9ODp6yDt5eLu5+zu5u3gICghLCD38u7h+yDu4e7p8ugg7/Du4uXw6vMpIgogCi0jOiBmaWxlaW8uYzozMzQ3CisjOiBmaWxlaW8uYzozMzU5CiBtc2dpZCAiRTUwNzogQ2xvc2UgZXJyb3IgZm9yIGJhY2t1cCBmaWxlIChhZGQgISB0byBvdmVycmlkZSkiCiBtc2dzdHIgIkU1MDc6IM746OHq4CDn4Orw+/Lo/yDw5efl8OLt7uPuIPTg6evgICghLCD38u7h+yDu4e7p8ugg7/Du4uXw6vMpIgogCi0jOiBmaWxlaW8uYzozMzQ5CisjOiBmaWxlaW8uYzozMzYxCiBtc2dpZCAiRTUwODogQ2FuJ3QgcmVhZCBmaWxlIGZvciBiYWNrdXAgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiRTUwODogzeXi7ufs7ubt7iDv8O736PLg8vwg8OXn5fDi7fvpIPTg6esgKCEsIPfy7uH7IO7h7uny6CDv8O7i5fDq8ykiCiAKLSM6IGZpbGVpby5jOjMzNjUKKyM6IGZpbGVpby5jOjMzNzcKIG1zZ2lkICJFNTA5OiBDYW5ub3QgY3JlYXRlIGJhY2t1cCBmaWxlIChhZGQgISB0byBvdmVycmlkZSkiCiBtc2dzdHIgIkU1MDk6IM3l4u7n7O7m7e4g8e7n5ODy/CDw5efl8OLt++kg9ODp6yAoISwg9/Lu4fsg7uHu6fLoIO/w7uLl8OrzKSIKIAotIzogZmlsZWlvLmM6MzQ2OAorIzogZmlsZWlvLmM6MzQ4MAogbXNnaWQgIkU1MTA6IENhbid0IG1ha2UgYmFja3VwIGZpbGUgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiRTUxMDogzeXi7ufs7ubt7iDx7ufk4PL8IPDl5+Xw4u376SD04OnrICghLCD38u7h+yDu4e7p8ugg7/Du4uXw6vMpIgogCi0jOiBmaWxlaW8uYzozNTMwCisjOiBmaWxlaW8uYzozNTQyCiBtc2dpZCAiRTQ2MDogVGhlIHJlc291cmNlIGZvcmsgd291bGQgYmUgbG9zdCAoYWRkICEgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICJFNDYwOiDC6Ovq4CDw5fHz8PHgIOHz5OXyIO/u8uXw/+3gICghLCD38u7h+yDu4e7p8ugg7/Du4uXw6vMpIgogCi0jOiBmaWxlaW8uYzozNjQwCisjOiBmaWxlaW8uYzozNjUyCiBtc2dpZCAiRTIxNDogQ2FuJ3QgZmluZCB0ZW1wIGZpbGUgZm9yIHdyaXRpbmciCiBtc2dzdHIgIkUyMTQ6IMLw5ezl7e376SD04OnrIOTr/yDn4O/o8egg7eUg7eDp5OXtIgogCi0jOiBmaWxlaW8uYzozNjU4CisjOiBmaWxlaW8uYzozNjcwCiBtc2dpZCAiRTIxMzogQ2Fubm90IGNvbnZlcnQgKGFkZCAhIHRvIHdyaXRlIHdpdGhvdXQgY29udmVyc2lvbikiCiBtc2dzdHIgIkUyMTM6IM/l8OXq7uTo8O7i6uAg7eXi7ufs7ubt4CAoISDk6/8g5+Dv6PHoIOHl5yDv5fDl6u7k6PDu4uroKSIKIAotIzogZmlsZWlvLmM6MzY5MworIzogZmlsZWlvLmM6MzcwNQogbXNnaWQgIkUxNjY6IENhbid0IG9wZW4gbGlua2VkIGZpbGUgZm9yIHdyaXRpbmciCiBtc2dzdHIgIkUxNjY6IM3l4u7n7O7m7e4g7vLq8Pvy/CDx4v/n4O3t++kg9ODp6yDk6/8g5+Dv6PHoIgogCi0jOiBmaWxlaW8uYzozNjk3CisjOiBmaWxlaW8uYzozNzA5CiBtc2dpZCAiRTIxMjogQ2FuJ3Qgb3BlbiBmaWxlIGZvciB3cml0aW5nIgogbXNnc3RyICJFMjEyOiDN5eLu5+zu5u3uIO7y6vD78vwg9ODp6yDk6/8g5+Dv6PHoIgogCi0jOiBmaWxlaW8uYzozOTU5CisjOiBmaWxlaW8uYzozOTcxCiBtc2dpZCAiRTY2NzogRnN5bmMgZmFpbGVkIgogbXNnc3RyICJFNjY3OiDN5SDz5ODr7vH8IOL77+7r7ejy/CD08+3q9uj+IGZzeW5jKCkiCiAKLSM6IGZpbGVpby5jOjM5NjYKKyM6IGZpbGVpby5jOjM5NzgKIG1zZ2lkICJFNTEyOiBDbG9zZSBmYWlsZWQiCiBtc2dzdHIgIkU1MTI6IM7v5fDg9uj/IOfg6vD78uj/IO3lIPPk4Ovg8fwiCiAKLSM6IGZpbGVpby5jOjQwMzcKKyM6IGZpbGVpby5jOjQwNDkKIG1zZ2lkICJFNTEzOiB3cml0ZSBlcnJvciwgY29udmVyc2lvbiBmYWlsZWQiCiBtc2dzdHIgIkU1MTM6IM746OHq4CDn4O/o8egsIO/w5e7h8ODn7uLg7ejlIO3lIPPk4Ovu8fwiCiAKLSM6IGZpbGVpby5jOjQwNDMKKyM6IGZpbGVpby5jOjQwNTUKIG1zZ2lkICJFNTE0OiB3cml0ZSBlcnJvciAoZmlsZSBzeXN0ZW0gZnVsbD8pIgogbXNnc3RyICJFNTE0OiDu+Ojh6uAg5+Dv6PHoICjt5fIg8eLu4e7k7e7j7iDs5fHy4D8pIgogCi0jOiBmaWxlaW8uYzo0MTEwCisjOiBmaWxlaW8uYzo0MTIyCiBtc2dpZCAiIENPTlZFUlNJT04gRVJST1IiCiBtc2dzdHIgIiDO2MjBysAgz9DFzsHQwMfOwsDNyN8iCiAKLSM6IGZpbGVpby5jOjQxMjYKKyM6IGZpbGVpby5jOjQxMzgKIG1zZ2lkICJbRGV2aWNlXSIKIG1zZ3N0ciAiW9Px8vDu6fHy4u5dIgogCi0jOiBmaWxlaW8uYzo0MTMxCisjOiBmaWxlaW8uYzo0MTQzCiBtc2dpZCAiW05ld10iCiBtc2dzdHIgIlvN7uL76V0iCiAKLSM6IGZpbGVpby5jOjQxNTMKKyM6IGZpbGVpby5jOjQxNjUKIG1zZ2lkICIgW2FdIgogbXNnc3RyICIgW2FdIgogCi0jOiBmaWxlaW8uYzo0MTUzCisjOiBmaWxlaW8uYzo0MTY1CiBtc2dpZCAiIGFwcGVuZGVkIgogbXNnc3RyICIg5O7h4OLr5e3uIgogCi0jOiBmaWxlaW8uYzo0MTU1CisjOiBmaWxlaW8uYzo0MTY3CiBtc2dpZCAiIFt3XSIKIG1zZ3N0ciAiIFt3XSIKIAotIzogZmlsZWlvLmM6NDE1NQorIzogZmlsZWlvLmM6NDE2NwogbXNnaWQgIiB3cml0dGVuIgogbXNnc3RyICIg5+Dv6PHg7e4iCiAKLSM6IGZpbGVpby5jOjQyMDUKKyM6IGZpbGVpby5jOjQyMTcKIG1zZ2lkICJFMjA1OiBQYXRjaG1vZGU6IGNhbid0IHNhdmUgb3JpZ2luYWwgZmlsZSIKIG1zZ3N0ciAiRTIwNTog0OXm6Owg5+Dv6+Dy6ug6IO3l4u7n7O7m7e4g8e718ODt5e3o5SDo8fXu5O3u4+4g9ODp6+AiCiAKLSM6IGZpbGVpby5jOjQyMjcKKyM6IGZpbGVpby5jOjQyMzkKIG1zZ2lkICJFMjA2OiBwYXRjaG1vZGU6IGNhbid0IHRvdWNoIGVtcHR5IG9yaWdpbmFsIGZpbGUiCiBtc2dzdHIgIiIKICJFMjA2OiDQ5ebo7CDn4O/r4PLq6Dog7eXi7ufs7ubt7iDx7OXt6PL8IO/g8ODs5fLw+yDv8/Hy7uPuIOjx9e7k7e7j7iD04Onr4CIKIAotIzogZmlsZWlvLmM6NDI0MgorIzogZmlsZWlvLmM6NDI1NAogbXNnaWQgIkUyMDc6IENhbid0IGRlbGV0ZSBiYWNrdXAgZmlsZSIKIG1zZ3N0ciAiRTIwNzogzeXi7ufs7ubt7iDz5ODr6PL8IPDl5+Xw4u376SD04OnrIgogCi0jOiBmaWxlaW8uYzo0MzA2CisjOiBmaWxlaW8uYzo0MzE4CiBtc2dpZCAiIgogIlxuIgogIldBUk5JTkc6IE9yaWdpbmFsIGZpbGUgbWF5IGJlIGxvc3Qgb3IgZGFtYWdlZFxuIgpAQCAtMTgzOSw5NiArMTgzOSw5NiBAQAogIlxuIgogIs/QxcTTz9DFxsTFzcjFOiDI8fXu5O376SD04OnrIOzu5uXyIOH78vwg8/Lw4Pfl7SDo6+gg7+7i8OXm5LjtXG4iCiAKLSM6IGZpbGVpby5jOjQzMDgKKyM6IGZpbGVpby5jOjQzMjAKIG1zZ2lkICJkb24ndCBxdWl0IHRoZSBlZGl0b3IgdW50aWwgdGhlIGZpbGUgaXMgc3VjY2Vzc2Z1bGx5IHdyaXR0ZW4hIgogbXNnc3RyICLt5SDi+/Xu5Ojy5SDo5yDw5eTg6vLu8OAsIO/u6uAg9ODp6yDt5SDh8+Tl8iDz8e/l+O3uIOfg7+jx4O0hIgogCi0jOiBmaWxlaW8uYzo0Mzk3CisjOiBmaWxlaW8uYzo0NDA5CiBtc2dpZCAiW2Rvc10iCiBtc2dzdHIgIltkb3NdIgogCi0jOiBmaWxlaW8uYzo0Mzk3CisjOiBmaWxlaW8uYzo0NDA5CiBtc2dpZCAiW2RvcyBmb3JtYXRdIgogbXNnc3RyICJb9O7w7ODyIGRvc10iCiAKLSM6IGZpbGVpby5jOjQ0MDQKKyM6IGZpbGVpby5jOjQ0MTYKIG1zZ2lkICJbbWFjXSIKIG1zZ3N0ciAiW21hY10iCiAKLSM6IGZpbGVpby5jOjQ0MDQKKyM6IGZpbGVpby5jOjQ0MTYKIG1zZ2lkICJbbWFjIGZvcm1hdF0iCiBtc2dzdHIgIlv07vDs4PIgbWFjXSIKIAotIzogZmlsZWlvLmM6NDQxMQorIzogZmlsZWlvLmM6NDQyMwogbXNnaWQgIlt1bml4XSIKIG1zZ3N0ciAiW3VuaXhdIgogCi0jOiBmaWxlaW8uYzo0NDExCisjOiBmaWxlaW8uYzo0NDIzCiBtc2dpZCAiW3VuaXggZm9ybWF0XSIKIG1zZ3N0ciAiW/Tu8Ozg8iB1bml4XSIKIAotIzogZmlsZWlvLmM6NDQzOAorIzogZmlsZWlvLmM6NDQ1MAogbXNnaWQgIjEgbGluZSwgIgogbXNnc3RyICIxIPHy8O7q4CwgIgogCi0jOiBmaWxlaW8uYzo0NDQwCisjOiBmaWxlaW8uYzo0NDUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVsZCBsaW5lcywgIgogbXNnc3RyICLx8vDu6jogJWxkLCAiCiAKLSM6IGZpbGVpby5jOjQ0NDMKKyM6IGZpbGVpby5jOjQ0NTUKIG1zZ2lkICIxIGNoYXJhY3RlciIKIG1zZ3N0ciAiMSDx6Ozi7usiCiAKLSM6IGZpbGVpby5jOjQ0NDUKKyM6IGZpbGVpby5jOjQ0NTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWxkIGNoYXJhY3RlcnMiCiBtc2dzdHIgIvHo7OLu6+7iOiAlbGQiCiAKLSM6IGZpbGVpby5jOjQ0NTUKKyM6IGZpbGVpby5jOjQ0NjcKIG1zZ2lkICJbbm9lb2xdIgogbXNnc3RyICJbbm9lb2xdIgogCi0jOiBmaWxlaW8uYzo0NDU1CisjOiBmaWxlaW8uYzo0NDY3CiBtc2dpZCAiW0luY29tcGxldGUgbGFzdCBsaW5lXSIKIG1zZ3N0ciAiW83l5+Di5fD4uO3t4P8g7+7x6+Xk7f//IPHy8O7q4F0iCiAKICMuIGRvbid0IG92ZXJ3cml0ZSBtZXNzYWdlcyBoZXJlCiAjLiBtdXN0IGdpdmUgdGhpcyBwcm9tcHQKICMuIGRvbid0IHVzZSBlbXNnKCkgaGVyZSwgZG9uJ3Qgd2FudCB0byBmbHVzaCB0aGUgYnVmZmVycwotIzogZmlsZWlvLmM6NDQ3NAorIzogZmlsZWlvLmM6NDQ4NgogbXNnaWQgIldBUk5JTkc6IFRoZSBmaWxlIGhhcyBiZWVuIGNoYW5nZWQgc2luY2UgcmVhZGluZyBpdCEhISIKIG1zZ3N0ciAiz9DFxNPP0MXGxMXNyMU6INTg6esg6Ofs5e247SDxIOzu7OXt8uAg9/Ll7ej/ISEhIgogCi0jOiBmaWxlaW8uYzo0NDc2CisjOiBmaWxlaW8uYzo0NDg4CiBtc2dpZCAiRG8geW91IHJlYWxseSB3YW50IHRvIHdyaXRlIHRvIGl0IgogbXNnc3RyICLR5fD8uOft7iD17vLo8uUg5+Dv6PHg8vwg4iD98u7yIPTg6esiCiAKLSM6IGZpbGVpby5jOjU3MjYKKyM6IGZpbGVpby5jOjU3MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIwODogRXJyb3Igd3JpdGluZyB0byBcIiVzXCIiCiBtc2dzdHIgIkUyMDg6IM746OHq4CDn4O/o8egg4iBcIiVzXCIiCiAKLSM6IGZpbGVpby5jOjU3MzMKKyM6IGZpbGVpby5jOjU3NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIwOTogRXJyb3IgY2xvc2luZyBcIiVzXCIiCiBtc2dzdHIgIkUyMDk6IM746OHq4CDn4Orw+/Lo/yBcIiVzXCIiCiAKLSM6IGZpbGVpby5jOjU3MzYKKyM6IGZpbGVpby5jOjU3NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIxMDogRXJyb3IgcmVhZGluZyBcIiVzXCIiCiBtc2dzdHIgIkUyMTA6IM746OHq4CD38uXt6P8gXCIlc1wiIgogCi0jOiBmaWxlaW8uYzo1OTcwCisjOiBmaWxlaW8uYzo1OTgyCiBtc2dpZCAiRTI0NjogRmlsZUNoYW5nZWRTaGVsbCBhdXRvY29tbWFuZCBkZWxldGVkIGJ1ZmZlciIKIG1zZ3N0ciAiRTI0NjogwfP05fAg8+Tg67jtIO/w6CDi++/u6+3l7ejoIODi8u7q7uzg7eT7IEZpbGVDaGFuZ2VkU2hlbGwiCiAKLSM6IGZpbGVpby5jOjU5NzcKKyM6IGZpbGVpby5jOjU5ODkKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIxMTogV2FybmluZzogRmlsZSBcIiVzXCIgbm8gbG9uZ2VyIGF2YWlsYWJsZSIKIG1zZ3N0ciAiRTIxMTogz/Dl5PPv8OXm5OXt6OU6IPTg6esgXCIlc1wiIOHu6/z45SDt5SDk7vHy8+/l7SIKIAotIzogZmlsZWlvLmM6NTk5MQorIzogZmlsZWlvLmM6NjAwMwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVzEyOiBXYXJuaW5nOiBGaWxlIFwiJXNcIiBoYXMgY2hhbmdlZCBhbmQgdGhlIGJ1ZmZlciB3YXMgY2hhbmdlZCBpbiBWaW0gYXMgIgpAQCAtMTkzNywzNCArMTkzNywzNCBAQAogIlcxMjogz/Dl5PPv8OXm5OXt6OU6IPTg6esgXCIlc1wiIOgg4fP05fAgVmltIOH76+gg6Ofs5e3l7fsg7eXn4OLo8ejs7iDk8PPjICIKICLu8iDk8PPj4CIKIAotIzogZmlsZWlvLmM6NTk5NAorIzogZmlsZWlvLmM6NjAwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJXMTE6IFdhcm5pbmc6IEZpbGUgXCIlc1wiIGhhcyBjaGFuZ2VkIHNpbmNlIGVkaXRpbmcgc3RhcnRlZCIKIG1zZ3N0ciAiIgogIlcxMTogz/Dl5PPv8OXm5OXt6OU6IPTg6esgXCIlc1wiIOH76yDo5+zl7bjtIO/u8evlIO3g9+Dr4CDw5eTg6vLo8O7i4O3o/yIKIAotIzogZmlsZWlvLmM6NTk5NgorIzogZmlsZWlvLmM6NjAwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJXMTY6IFdhcm5pbmc6IE1vZGUgb2YgZmlsZSBcIiVzXCIgaGFzIGNoYW5nZWQgc2luY2UgZWRpdGluZyBzdGFydGVkIgogbXNnc3RyICIiCiAiVzE2OiDP8OXk8+/w5ebk5e3o5Tog8OXm6Owg5O7x8vPv4CDqIPTg6evzIFwiJXNcIiDh++sg6Ofs5e247SDv7vHr5SDt4Pfg6+AgIgogIvDl5ODq8ujw7uLg7ej/IgogCi0jOiBmaWxlaW8uYzo2MDA2CisjOiBmaWxlaW8uYzo2MDE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlcxMzogV2FybmluZzogRmlsZSBcIiVzXCIgaGFzIGJlZW4gY3JlYXRlZCBhZnRlciBlZGl0aW5nIHN0YXJ0ZWQiCiBtc2dzdHIgIiIKICJXMTM6IM/w5eTz7/Dl5uTl7ejlOiD04OnrIFwiJXNcIiDh++sg8e7n5ODtIO/u8evlIO3g9+Dr4CDw5eTg6vLo8O7i4O3o/yIKIAotIzogZmlsZWlvLmM6NjAxOQorIzogZmlsZWlvLmM6NjAzMQogbXNnaWQgIlNlZSBcIjpoZWxwIFcxMVwiIGZvciBtb3JlIGluZm8uIgogbXNnc3RyICLR7C4g5O7v7uvt6PLl6/zt8/4g6O307vDs4Pbo/iDiIFwiOmhlbHAgVzExXCIuIgogCi0jOiBmaWxlaW8uYzo2MDMzCisjOiBmaWxlaW8uYzo2MDQ1CiBtc2dpZCAiV2FybmluZyIKIG1zZ3N0ciAiz/Dl5PPv8OXm5OXt6OUiCiAKLSM6IGZpbGVpby5jOjYwMzQKKyM6IGZpbGVpby5jOjYwNDYKIG1zZ2lkICIiCiAiJk9LXG4iCiAiJkxvYWQgRmlsZSIKQEAgLTE5NzIsNDMgKzE5NzIsNDMgQEAKICImT0tcbiIKICImx+Dj8PPn6PL8IPTg6esiCiAKLSM6IGZpbGVpby5jOjYxNDAKKyM6IGZpbGVpby5jOjYxNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTQ2MjogQ291bGQgbm90IHByZXBhcmUgZm9yIHJlbG9hZGluZyBcIiVzXCIiCiBtc2dzdHIgIkU0NjI6IM3l4u7n7O7m7e4g7+7k4+7y7uLo8vzx/yDqIO/l8OXn4OPw8+fq5SBcIiVzXCIiCiAKLSM6IGZpbGVpby5jOjYxNTkKKyM6IGZpbGVpby5jOjYxNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTMyMTogQ291bGQgbm90IHJlbG9hZCBcIiVzXCIiCiBtc2dzdHIgIkUzMjE6IM3l4u7n7O7m7e4g4vvv7uvt6PL8IO/l8OXn4OPw8+fq8yBcIiVzXCIiCiAKLSM6IGZpbGVpby5jOjY3NDAKKyM6IGZpbGVpby5jOjY3NTIKIG1zZ2lkICItLURlbGV0ZWQtLSIKIG1zZ3N0ciAiLS3T5ODr5e3uLS0iCiAKICMuIHRoZSBncm91cCBkb2Vzbid0IGV4aXN0Ci0jOiBmaWxlaW8uYzo2OTAwCisjOiBmaWxlaW8uYzo2OTEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzNjc6IE5vIHN1Y2ggZ3JvdXA6IFwiJXNcIiIKIG1zZ3N0ciAiRTM2Nzogw/Dz7+/gIFwiJXNcIiDt5SDx8/nl8fLi8+XyIgogCi0jOiBmaWxlaW8uYzo3MDI2CisjOiBmaWxlaW8uYzo3MDM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyMTU6IElsbGVnYWwgY2hhcmFjdGVyIGFmdGVyICo6ICVzIgogbXNnc3RyICJFMjE1OiDN5eTu7/Px8ujs++Ug8ejs4u7r+yDv7vHr5SAqOiAlcyIKIAotIzogZmlsZWlvLmM6NzAzOAorIzogZmlsZWlvLmM6NzA1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjE2OiBObyBzdWNoIGV2ZW50OiAlcyIKIG1zZ3N0ciAiRTIxNjogzeXx8/nl8fLi8/755eUg8e7h+/Lo5TogJXMiCiAKLSM6IGZpbGVpby5jOjcwNDAKKyM6IGZpbGVpby5jOjcwNTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIxNjogTm8gc3VjaCBncm91cCBvciBldmVudDogJXMiCiBtc2dzdHIgIkUyMTY6IM3l8fP55fHy4vP++eD/IOPw8+/v4CDo6+gg8e7h+/Lo5TogJXMiCiAKICMuIEhpZ2hsaWdodCB0aXRsZQotIzogZmlsZWlvLmM6NzE5OAorIzogZmlsZWlvLmM6NzIxMAogbXNnaWQgIiIKICJcbiIKICItLS0gQXV0by1Db21tYW5kcyAtLS0iCkBAIC0yMDE2LDM5ICsyMDE2LDM5IEBACiAiXG4iCiAiLS0tIMDi8u7q7uzg7eT7IC0tLSIKIAotIzogZmlsZWlvLmM6NzQ2OQorIzogZmlsZWlvLmM6NzQ4MQogbXNnaWQgIkUyMTc6IENhbid0IGV4ZWN1dGUgYXV0b2NvbW1hbmRzIGZvciBBTEwgZXZlbnRzIgogbXNnc3RyICJFMjE3OiDN5eLu5+zu5u3uIOL77+7r7ejy/CDg4vLu6u7s4O3k+yDk6/8gwtHF1SDx7uH78ujpIgogCi0jOiBmaWxlaW8uYzo3NDkyCisjOiBmaWxlaW8uYzo3NTA0CiBtc2dpZCAiTm8gbWF0Y2hpbmcgYXV0b2NvbW1hbmRzIgogbXNnc3RyICLN5fIg7+7k9e7k//no9SDg4vLu6u7s4O3kIgogCi0jOiBmaWxlaW8uYzo3ODEzCisjOiBmaWxlaW8uYzo3ODI1CiBtc2dpZCAiRTIxODogYXV0b2NvbW1hbmQgbmVzdGluZyB0b28gZGVlcCIKIG1zZ3N0ciAiRTIxODog8evo+Oru7CDj6/Ph7uruIOLr7ubl7e375SDg4vLu6u7s4O3k+yIKIAotIzogZmlsZWlvLmM6ODA4OAorIzogZmlsZWlvLmM6ODEwMAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBBdXRvIGNvbW1hbmRzIGZvciBcIiVzXCIiCiBtc2dzdHIgIiVzIMDi8u7q7uzg7eT7IOTr/yBcIiVzXCIiCiAKLSM6IGZpbGVpby5jOjgwOTYKKyM6IGZpbGVpby5jOjgxMDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXhlY3V0aW5nICVzIgogbXNnc3RyICLC++/u6+3l7ejlICVzIgogCiAjLiBhbHdheXMgc2Nyb2xsIHVwLCBkb24ndCBvdmVyd3JpdGUKLSM6IGZpbGVpby5jOjgxNjQKKyM6IGZpbGVpby5jOjgxNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYXV0b2NvbW1hbmQgJXMiCiBtc2dzdHIgIuDi8u7q7uzg7eTgICVzIgogCi0jOiBmaWxlaW8uYzo4NzMxCisjOiBmaWxlaW8uYzo4NzQzCiBtc2dpZCAiRTIxOTogTWlzc2luZyB7LiIKIG1zZ3N0ciAiRTIxOTogz/Du7/P55e3gIHsuIgogCi0jOiBmaWxlaW8uYzo4NzMzCisjOiBmaWxlaW8uYzo4NzQ1CiBtc2dpZCAiRTIyMDogTWlzc2luZyB9LiIKIG1zZ3N0ciAiRTIyMDogz/Du7/P55e3gIH0uIgogCkBAIC0yMDcwLDM5ICsyMDcwLDM5IEBACiBtc2dpZCAiRTIyMjogQWRkIHRvIHJlYWQgYnVmZmVyIgogbXNnc3RyICJFMjIyOiDE7uHg4uvl7ejlIOIg4fP05fAg9/Ll7ej/IgogCi0jOiBnZXRjaGFyLmM6MjE5OAorIzogZ2V0Y2hhci5jOjIyMDgKIG1zZ2lkICJFMjIzOiByZWN1cnNpdmUgbWFwcGluZyIKIG1zZ3N0ciAiRTIyMzog8OXq8/Dx6OLt4P8g7/Do4v/n6uAiCiAKLSM6IGdldGNoYXIuYzozMDc3CisjOiBnZXRjaGFyLmM6MzA4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjI0OiBnbG9iYWwgYWJicmV2aWF0aW9uIGFscmVhZHkgZXhpc3RzIGZvciAlcyIKIG1zZ3N0ciAiRTIyNDog8+blIOXx8vwg4+vu4eDr/O3u5SDx7urw4Pnl7ejlIOTr/yAlcyIKIAotIzogZ2V0Y2hhci5jOjMwODAKKyM6IGdldGNoYXIuYzozMDkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyMjU6IGdsb2JhbCBtYXBwaW5nIGFscmVhZHkgZXhpc3RzIGZvciAlcyIKIG1zZ3N0ciAiRTIyNTog8+blIOXx8vwg4+vu4eDr/O3g/yDv8Oji/+fq4CDk6/8gJXMiCiAKLSM6IGdldGNoYXIuYzozMjEyCisjOiBnZXRjaGFyLmM6MzIyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjI2OiBhYmJyZXZpYXRpb24gYWxyZWFkeSBleGlzdHMgZm9yICVzIgogbXNnc3RyICJFMjI2OiDz5uUg5fHy/CDx7urw4Pnl7ejlIOTr/yAlcyIKIAotIzogZ2V0Y2hhci5jOjMyMTUKKyM6IGdldGNoYXIuYzozMjI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyMjc6IG1hcHBpbmcgYWxyZWFkeSBleGlzdHMgZm9yICVzIgogbXNnc3RyICJFMjI3OiDz5uUg5fHy/CDv8Oji/+fq4CDk6/8gJXMiCiAKLSM6IGdldGNoYXIuYzozMjc5CisjOiBnZXRjaGFyLmM6MzI4OQogbXNnaWQgIk5vIGFiYnJldmlhdGlvbiBmb3VuZCIKIG1zZ3N0ciAi0e7q8OD55e3o/yDt5SDt4Onk5e37IgogCi0jOiBnZXRjaGFyLmM6MzI4MQorIzogZ2V0Y2hhci5jOjMyOTEKIG1zZ2lkICJObyBtYXBwaW5nIGZvdW5kIgogbXNnc3RyICLP8Oji/+fq6CDt5SDt4Onk5e37IgogCi0jOiBnZXRjaGFyLmM6NDE3MworIzogZ2V0Y2hhci5jOjQxODMKIG1zZ2lkICJFMjI4OiBtYWtlbWFwOiBJbGxlZ2FsIG1vZGUiCiBtc2dzdHIgIkUyMjg6IG1ha2VtYXA6IO3l5O7v8/Hy6Oz76SDw5ebo7CIKIApAQCAtMjEyOCw3ICsyMTI4LDcgQEAKIG1zZ2lkICJFNTk5OiBWYWx1ZSBvZiAnaW1hY3RpdmF0ZWtleScgaXMgaW52YWxpZCIKIG1zZ3N0ciAiRTU5OTog7eXv8ODi6Ov87e7lIOft4Pfl7ejlIO7v9ujoICdpbWFjdGl2YXRla2V5JyIKIAotIzogZ3VpLmM6NDA2MQorIzogZ3VpLmM6NDA2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjU0OiBDYW5ub3QgYWxsb2NhdGUgY29sb3IgJXMiCiBtc2dzdHIgIkUyNTQ6IM3l4u7n7O7m7e4g7eDn7eD36PL8IPbi5fIgJXMiCkBAIC0yMTcwLDcgKzIxNzAsNyBAQAogbXNnaWQgIlZpbSBkaWFsb2ciCiBtc2dzdHIgIsTo4Ovu4+7i7uUg7urt7iBWaW0iCiAKLSM6IGd1aV9iZXZhbC5jOjEwMSBndWlfdzMyLmM6MzgyOQorIzogZ3VpX2JldmFsLmM6MTAxIGd1aV93MzIuYzozOTc4CiBtc2dpZCAiRTIzMjogQ2Fubm90IGNyZWF0ZSBCYWxsb29uRXZhbCB3aXRoIGJvdGggbWVzc2FnZSBhbmQgY2FsbGJhY2siCiBtc2dzdHIgIiIKICJFMjMyOiBcIs/z5/vw/FwiIOTr/yDi+/fo8evl7ejpLCDi6uv+9+D++ejpIOgg8e7u4fnl7ejlLCDoIO7h8ODy7fvpIOL75+7iLCAiCkBAIC0yMTgwLDcgKzIxODAsNyBAQAogbXNnaWQgIlZpbSBkaWFsb2cuLi4iCiBtc2dzdHIgIsTo4Ovu4+7i7uUg7urt7iBWaW0uLi4iCiAKLSM6IGd1aV9ndGsuYzoyMDYwIG1lc3NhZ2UuYzoyOTkzCisjOiBndWlfZ3RrLmM6MjA2MCBtZXNzYWdlLmM6Mjk5OQogbXNnaWQgIiIKICImWWVzXG4iCiAiJk5vXG4iCkBAIC0yMzAzLDE2ICsyMzAzLDI0IEBACiAiXG4iCiAizvLv8ODi6uAg8e7u4fnl7ej/IOTr/yDz7ej38u7m5e3o/yDv8O725fHx4C3v7vLu7OrgLlxuIgogCi0jOiBndWlfdzMyLmM6ODI5CisjOiBndWlfdzMyLmM6ODM5Cittc2dpZCAiRTY3MTogQ2Fubm90IGZpbmQgd2luZG93IHRpdGxlIFwiJXNcIiIKK21zZ3N0ciAiRTY3MTogzurt7iDxIOfg4+7r7uLq7uwgXCIlc1wiIO3lIO7h7eDw8+bl7e4iCisKKyM6IGd1aV93MzIuYzo4NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTI0MzogQXJndW1lbnQgbm90IHN1cHBvcnRlZDogXCItJXNcIjsgVXNlIHRoZSBPTEUgdmVyc2lvbi4iCiBtc2dzdHIgIkUyNDM6IM/g8ODs5fLwIO3lIO/u5OTl8Obo4uDl8vH/OiBcIi0lc1wiOyDo8e/u6/zn8+ny5SDi5fDx6P4gT0xFLiIKIAotIzogZ3VpX3c0OC5jOjIwOTAKKyM6IGd1aV93MzIuYzoxMTAwCittc2dpZCAiRTY3MjogVW5hYmxlIHRvIG9wZW4gd2luZG93IGluc2lkZSBNREkgYXBwbGljYXRpb24iCittc2dzdHIgIkU2NzI6IM3l4u7n7O7m7e4g7vLq8Pvy/CDu6u3uIOLt8/Lw6CDv8Ojr7ubl7ej/IE1ESSIKKworIzogZ3VpX3c0OC5jOjIxNjMKIG1zZ2lkICJGaW5kIHN0cmluZyAodXNlICdcXFxcJyB0byBmaW5kICBhICdcXCcpIgogbXNnc3RyICLP7ujx6iDx8vDu6uggKOjx7+7r/Ofz6fLlICdcXFxcJyDk6/8g7+7o8ergICdcXCcpIgogCi0jOiBndWlfdzQ4LmM6MjExNQorIzogZ3VpX3c0OC5jOjIxODgKIG1zZ2lkICJGaW5kICYgUmVwbGFjZSAodXNlICdcXFxcJyB0byBmaW5kICBhICdcXCcpIgogbXNnc3RyICLP7ujx6iDoIOfg7OXt4CAo6PHv7uv85/Pp8uUgJ1xcXFwnIOTr/yDv7ujx6uAgJ1xcJykiCiAKQEAgLTIzNTMsNiArMjM2MSw3IEBACiBtc2dzdHIgIkZvbnQxOiAlc1xuIgogCiAjOiBndWlfeDExLmM6MjE4NAorIywgYy1mb3JtYXQKIG1zZ2lkICJGb250JWxkIHdpZHRoIGlzIG5vdCB0d2ljZSB0aGF0IG9mIGZvbnQwXG4iCiBtc2dzdHIgItjo8Ojt4CD48Oj08uAgZm9udCVsZCDk7uvm7eAg4fvy/CDi5OLu5SDh7uv8+OUg+Ojw6O37IPjw6PTy4CBmb250MFxuIgogCkBAIC0yOTMzLDQ3ICsyOTQyLDQ3IEBACiBtc2dpZCAiSW52YWxpZCBhcmd1bWVudCBmb3IiCiBtc2dzdHIgIs3l5O7v8/Hy6Oz75SDg8OPz7OXt8vsg5Ov/IgogCi0jOiBtYWluLmM6NDY2CisjOiBtYWluLmM6NDY5CiBtc2dpZCAiVGhpcyBWaW0gd2FzIG5vdCBjb21waWxlZCB3aXRoIHRoZSBkaWZmIGZlYXR1cmUuIgogbXNnc3RyICIiCiAixODt7fvpIFZpbSDh++sg8eru7O/o6+jw7uLg7SDxIOL76uv+9+Xt7e7pIO7x7uHl7e3u8fL8/iDv8O7x7O7y8OAg7vLr6Pfo6SIKIAotIzogbWFpbi5jOjkzMgorIzogbWFpbi5jOjkzNQogbXNnaWQgIkF0dGVtcHQgdG8gb3BlbiBzY3JpcHQgZmlsZSBhZ2FpbjogXCIiCiBtc2dzdHIgIs/u7/vy6uAg7+7i8u7w7e7j7iDu8urw+/Lo/yD04Onr4CDx9uXt4PDo/zogXCIiCiAKLSM6IG1haW4uYzo5NDEKKyM6IG1haW4uYzo5NDQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBmb3IgcmVhZGluZzogXCIiCiBtc2dzdHIgIs3l4u7n7O7m7e4g7vLq8Pvy/CDk6/8g9/Ll7ej/OiBcIiIKIAotIzogbWFpbi5jOjk4NQorIzogbWFpbi5jOjk4OAogbXNnaWQgIkNhbm5vdCBvcGVuIGZvciBzY3JpcHQgb3V0cHV0OiBcIiIKIG1zZ3N0ciAizeXi7ufs7ubt7iDu8urw+/L8IOTr/yDi++Lu5OAg8fbl7eDw6P86IFwiIgogCi0jOiBtYWluLmM6MTEzMgorIzogbWFpbi5jOjExMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWQgZmlsZXMgdG8gZWRpdFxuIgogbXNnc3RyICLU4Onr7uIg5Ov/IPDl5ODq8ujw7uLg7ej/OiAlZFxuIgogCi0jOiBtYWluLmM6MTIzMworIzogbWFpbi5jOjEyMzYKIG1zZ2lkICJWaW06IFdhcm5pbmc6IE91dHB1dCBpcyBub3QgdG8gYSB0ZXJtaW5hbFxuIgogbXNnc3RyICJWaW06IM/w5eTz7/Dl5uTl7ejlOiDC++Lu5CDu8fP55fHy4uv/5fLx/yDt5SDt4CDy5fDs6O3g61xuIgogCi0jOiBtYWluLmM6MTIzNQorIzogbWFpbi5jOjEyMzgKIG1zZ2lkICJWaW06IFdhcm5pbmc6IElucHV0IGlzIG5vdCBmcm9tIGEgdGVybWluYWxcbiIKIG1zZ3N0ciAiVmltOiDP8OXk8+/w5ebk5e3o5TogwuLu5CDv8O7o8fXu5OjyIO3lIPEg8uXw7Ojt4OvgXG4iCiAKICMuIGp1c3QgaW4gY2FzZS4uCi0jOiBtYWluLmM6MTI5NworIzogbWFpbi5jOjEzMDYKIG1zZ2lkICJwcmUtdmltcmMgY29tbWFuZCBsaW5lIgogbXNnc3RyICLq7uzg7eTt4P8g8fLw7urgIO/l8OXkIOL77+7r7eXt6OXsIHZpbXJjIgogCi0jOiBtYWluLmM6MTMzOAorIzogbWFpbi5jOjEzNDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTI4MjogQ2Fubm90IHJlYWQgZnJvbSBcIiVzXCIiCiBtc2dzdHIgIkUyODI6IM3l4u7n7O7m7e4g4vvv7uvt6PL8IPfy5e3o5SDo5yBcIiVzXCIiCiAKLSM6IG1haW4uYzoyNDExCisjOiBtYWluLmM6MjQyMAogbXNnaWQgIiIKICJcbiIKICJNb3JlIGluZm8gd2l0aDogXCJ2aW0gLWhcIlxuIgpAQCAtMjk4MSwyMyArMjk5MCwyMyBAQAogIlxuIgogIsTu7+7r7ejy5ev87eD/IOjt9O7w7OD26P86IFwidmltIC1oXCJcbiIKIAotIzogbWFpbi5jOjI0NDQKKyM6IG1haW4uYzoyNDUzCiBtc2dpZCAiW2ZpbGUgLi5dICAgICAgIGVkaXQgc3BlY2lmaWVkIGZpbGUocykiCiBtc2dzdHIgIlv04OnrIC4uXSDw5eTg6vLo8O7i4O3o5SDz6uDn4O3t+/Ug9ODp6+7iIgogCi0jOiBtYWluLmM6MjQ0NQorIzogbWFpbi5jOjI0NTQKIG1zZ2lkICItICAgICAgICAgICAgICAgcmVhZCB0ZXh0IGZyb20gc3RkaW4iCiBtc2dzdHIgIi0gICAgICAgICAgICAgICAg9/Ll7ejlIPLl6vHy4CDo5yDv7vLu6uAg4uLu5OAgc3RkaW4iCiAKLSM6IG1haW4uYzoyNDQ2CisjOiBtYWluLmM6MjQ1NQogbXNnaWQgIi10IHRhZyAgICAgICAgICBlZGl0IGZpbGUgd2hlcmUgdGFnIGlzIGRlZmluZWQiCiBtc2dzdHIgIi10IOzl8urgICAgICAgICAg8OXk4Ory6PDu4uDt6OUg9ODp6+Ag8SDz6uDn4O3t7ukg7OXy6u7pIgogCi0jOiBtYWluLmM6MjQ0OAorIzogbWFpbi5jOjI0NTcKIG1zZ2lkICItcSBbZXJyb3JmaWxlXSAgZWRpdCBmaWxlIHdpdGggZmlyc3QgZXJyb3IiCiBtc2dzdHIgIi1xIFv04OnrIO746OHu6l0g8OXk4Ory6PDu4uDt6OUg9ODp6+Ag8SDv5fDi7ukg7vjo4eru6SIKIAotIzogbWFpbi5jOjI0NTcKKyM6IG1haW4uYzoyNDY2CiBtc2dpZCAiIgogIlxuIgogIlxuIgpAQCAtMzAwNywxMSArMzAxNiwxMSBAQAogIlxuIgogIsjx7+7r/Ofu4uDt6OU6IgogCi0jOiBtYWluLmM6MjQ2MAorIzogbWFpbi5jOjI0NjkKIG1zZ2lkICIgdmltIFthcmd1bWVudHNdICIKIG1zZ3N0ciAiIHZpbSBb4PDj8+zl7fL7XSAiCiAKLSM6IG1haW4uYzoyNDY0CisjOiBtYWluLmM6MjQ3MwogbXNnaWQgIiIKICJcbiIKICIgICBvcjoiCkBAIC0zMDE5LDcgKzMwMjgsNyBAQAogIlxuIgogIiAgIOjr6DoiCiAKLSM6IG1haW4uYzoyNDY3CisjOiBtYWluLmM6MjQ3NgogbXNnaWQgIiIKICJcbiIKICJcbiIKQEAgLTMwMjksMjQ0ICszMDM4LDI0NCBAQAogIlxuIgogIsDw4/Ps5e3y+zpcbiIKIAotIzogbWFpbi5jOjI0NjgKKyM6IG1haW4uYzoyNDc3CiBtc2dpZCAiLS1cdFx0XHRPbmx5IGZpbGUgbmFtZXMgYWZ0ZXIgdGhpcyIKIG1zZ3N0ciAiLS1cdFx0XHTE4Ovl5SDz6uDn++Lg/vLx/yDy7uv86u4g6Ozl7eAg9ODp6+7iIgogCi0jOiBtYWluLmM6MjQ3MAorIzogbWFpbi5jOjI0NzkKIG1zZ2lkICItLWxpdGVyYWxcdFx0RG9uJ3QgZXhwYW5kIHdpbGRjYXJkcyIKIG1zZ3N0ciAiLS1saXRlcmFsXHRcdM3lIOL77+7r7f/y/CDv7uTx8uDt7uLq8yDv7iDs4PHq5SIKIAotIzogbWFpbi5jOjI0NzMKKyM6IG1haW4uYzoyNDgyCiBtc2dpZCAiLXJlZ2lzdGVyXHRcdFJlZ2lzdGVyIHRoaXMgZ3ZpbSBmb3IgT0xFIgogbXNnc3RyICItcmVnaXN0ZXJcdFx0x+Dw5ePo8fLw6PDu4uDy/CD98u7yIGd2aW0g5Ov/IE9MRSIKIAotIzogbWFpbi5jOjI0NzQKKyM6IG1haW4uYzoyNDgzCiBtc2dpZCAiLXVucmVnaXN0ZXJcdFx0VW5yZWdpc3RlciBndmltIGZvciBPTEUiCiBtc2dzdHIgIi11bnJlZ2lzdGVyXHRcdM7y6uv+9+jy/CDw5ePo8fLw4Pbo/iDk4O3t7uPuIGd2aW0g5Ov/IE9MRSIKIAotIzogbWFpbi5jOjI0NzcKKyM6IG1haW4uYzoyNDg2CiBtc2dpZCAiLWdcdFx0XHRSdW4gdXNpbmcgR1VJIChsaWtlIFwiZ3ZpbVwiKSIKIG1zZ3N0ciAiLWdcdFx0XHTH4O/z8fLo8vwg8SDj8OD06Pfl8ero7CDo7fLl8PTl6fHu7CAo6uDqIFwiZ3ZpbVwiKSIKIAotIzogbWFpbi5jOjI0NzgKKyM6IG1haW4uYzoyNDg3CiBtc2dpZCAiLWYgIG9yICAtLW5vZm9ya1x0Rm9yZWdyb3VuZDogRG9uJ3QgZm9yayB3aGVuIHN0YXJ0aW5nIEdVSSIKIG1zZ3N0ciAiLWYgIOjr6CAtLW5vZm9ya1x0wiDg6vLo4u3u6SDn4OTg9+U6IM3lIOL77+7r7f/y/CBmb3JrIO/w6CDn4O/z8erlIEdVSSIKIAotIzogbWFpbi5jOjI0ODAKKyM6IG1haW4uYzoyNDg5CiBtc2dpZCAiLXZcdFx0XHRWaSBtb2RlIChsaWtlIFwidmlcIikiCiBtc2dzdHIgIi12XHRcdFx00OXm6OwgVmkgKOrg6iBcInZpXCIpIgogCi0jOiBtYWluLmM6MjQ4MQorIzogbWFpbi5jOjI0OTAKIG1zZ2lkICItZVx0XHRcdEV4IG1vZGUgKGxpa2UgXCJleFwiKSIKIG1zZ3N0ciAiLWVcdFx0XHTQ5ebo7CBFeCAo6uDqIFwiZXhcIikiCiAKLSM6IG1haW4uYzoyNDgyCisjOiBtYWluLmM6MjQ5MQogbXNnaWQgIi1zXHRcdFx0U2lsZW50IChiYXRjaCkgbW9kZSAob25seSBmb3IgXCJleFwiKSIKIG1zZ3N0ciAiLXNcdFx0XHTS6PXo6SAo7+Dq5fLt++kpIPDl5ujsICjy7uv86u4g5Ov/IFwiZXhcIikiCiAKLSM6IG1haW4uYzoyNDg0CisjOiBtYWluLmM6MjQ5MwogbXNnaWQgIi1kXHRcdFx0RGlmZiBtb2RlIChsaWtlIFwidmltZGlmZlwiKSIKIG1zZ3N0ciAiLWRcdFx0XHTQ5ebo7CDu8uvo9+jpICjq4OogXCJ2aW1kaWZmXCIpIgogCi0jOiBtYWluLmM6MjQ4NgorIzogbWFpbi5jOjI0OTUKIG1zZ2lkICIteVx0XHRcdEVhc3kgbW9kZSAobGlrZSBcImV2aW1cIiwgbW9kZWxlc3MpIgogbXNnc3RyICIteVx0XHRcdM/w7vHy7ukg8OXm6OwgKOrg6iBcImV2aW1cIiwg4eXn8OXm6Ozt++kpIgogCi0jOiBtYWluLmM6MjQ4NworIzogbWFpbi5jOjI0OTYKIG1zZ2lkICItUlx0XHRcdFJlYWRvbmx5IG1vZGUgKGxpa2UgXCJ2aWV3XCIpIgogbXNnc3RyICItUlx0XHRcdNLu6/zq7iDk6/8g9/Ll7ej/ICjq4OogXCJ2aWV3XCIpIgogCi0jOiBtYWluLmM6MjQ4OAorIzogbWFpbi5jOjI0OTcKIG1zZ2lkICItWlx0XHRcdFJlc3RyaWN0ZWQgbW9kZSAobGlrZSBcInJ2aW1cIikiCiBtc2dzdHIgIi1aXHRcdFx0zuPw4O3o9+Xt7fvpIPDl5ujsICjq4OogXCJydmltXCIpIgogCi0jOiBtYWluLmM6MjQ4OQorIzogbWFpbi5jOjI0OTgKIG1zZ2lkICItbVx0XHRcdE1vZGlmaWNhdGlvbnMgKHdyaXRpbmcgZmlsZXMpIG5vdCBhbGxvd2VkIgogbXNnc3RyICItbVx0XHRcdMHl5yDi7ufs7ubt7vHy6CDx7vXw4O3l7ej/IOjn7OXt5e3o6SAo5+Dv6PHoIPTg6evu4ikiCiAKLSM6IG1haW4uYzoyNDkwCisjOiBtYWluLmM6MjQ5OQogbXNnaWQgIi1NXHRcdFx0TW9kaWZpY2F0aW9ucyBpbiB0ZXh0IG5vdCBhbGxvd2VkIgogbXNnc3RyICItTVx0XHRcdMHl5yDi7ufs7ubt7vHy6CDi7eXx5e3o/yDo5+zl7eXt6Okg4iDy5erx8iIKIAotIzogbWFpbi5jOjI0OTEKKyM6IG1haW4uYzoyNTAwCiBtc2dpZCAiLWJcdFx0XHRCaW5hcnkgbW9kZSIKIG1zZ3N0ciAiLWJcdFx0XHTB6O3g8O376SDw5ebo7CIKIAotIzogbWFpbi5jOjI0OTMKKyM6IG1haW4uYzoyNTAyCiBtc2dpZCAiLWxcdFx0XHRMaXNwIG1vZGUiCiBtc2dzdHIgIi1sXHRcdFx00OXm6OwgTGlzcCIKIAotIzogbWFpbi5jOjI0OTUKKyM6IG1haW4uYzoyNTA0CiBtc2dpZCAiLUNcdFx0XHRDb21wYXRpYmxlIHdpdGggVmk6ICdjb21wYXRpYmxlJyIKIG1zZ3N0ciAiLUNcdFx0XHTQ5ebo7CDx7uLs5fHy6Ozu8fLoIPEgVmk6ICdjb21wYXRpYmxlJyIKIAotIzogbWFpbi5jOjI0OTYKKyM6IG1haW4uYzoyNTA1CiBtc2dpZCAiLU5cdFx0XHROb3QgZnVsbHkgVmkgY29tcGF0aWJsZTogJ25vY29tcGF0aWJsZSciCiBtc2dzdHIgIi1OXHRcdFx00OXm6Owg7eXv7uvt7ukg8e7i7OXx8ujs7vHy6CDxIFZpOiAnbm9jb21wYXRpYmxlJyIKIAotIzogbWFpbi5jOjI0OTcKKyM6IG1haW4uYzoyNTA2CiBtc2dpZCAiLVZbTl1cdFx0VmVyYm9zZSBsZXZlbCIKIG1zZ3N0ciAiLVZbTl1cdFx00/Du4uXt/CDv7uTw7uHt7vHy6CDx7u7h+eXt6OkiCiAKLSM6IG1haW4uYzoyNDk4CisjOiBtYWluLmM6MjUwNwogbXNnaWQgIi1EXHRcdFx0RGVidWdnaW5nIG1vZGUiCiBtc2dzdHIgIi1EXHRcdFx00OXm6Owg7vLr4OTq6CIKIAotIzogbWFpbi5jOjI0OTkKKyM6IG1haW4uYzoyNTA4CiBtc2dpZCAiLW5cdFx0XHRObyBzd2FwIGZpbGUsIHVzZSBtZW1vcnkgb25seSIKIG1zZ3N0ciAiLW5cdFx0XHTB5ecg8eLu7y304Onr4Cwg6PHv7uv85/Pl8vH/IPLu6/zq7iDv4Oz/8vwiCiAKLSM6IG1haW4uYzoyNTAwCisjOiBtYWluLmM6MjUwOQogbXNnaWQgIi1yXHRcdFx0TGlzdCBzd2FwIGZpbGVzIGFuZCBleGl0IgogbXNnc3RyICItclx0XHRcdML74uXx8ugg8e/o8e7qIPHi7u8t9ODp6+7iIOgg5+Di5fD46PL8IPDg4e7y8yIKIAotIzogbWFpbi5jOjI1MDEKKyM6IG1haW4uYzoyNTEwCiBtc2dpZCAiLXIgKHdpdGggZmlsZSBuYW1lKVx0UmVjb3ZlciBjcmFzaGVkIHNlc3Npb24iCiBtc2dzdHIgIi1yICjxIOjs5e3l7CD04Onr4ClcdMLu8fHy4O3u4ujy/CDg4uDw6Ont7iDn4OLl8Pi47e376SDx5eDt8SIKIAotIzogbWFpbi5jOjI1MDIKKyM6IG1haW4uYzoyNTExCiBtc2dpZCAiLUxcdFx0XHRTYW1lIGFzIC1yIgogbXNnc3RyICItTFx0XHRcdNLuIOblLCD38u4g6CAtciIKIAotIzogbWFpbi5jOjI1MDQKKyM6IG1haW4uYzoyNTEzCiBtc2dpZCAiLWZcdFx0XHREb24ndCB1c2UgbmV3Y2xpIHRvIG9wZW4gd2luZG93IgogbXNnc3RyICItZlx0XHRcdM3lIOjx7+7r/Ofu4uDy/CBuZXdjbGkg5Ov/IO7y6vD78uj/IO7q7eAiCiAKLSM6IG1haW4uYzoyNTA1CisjOiBtYWluLmM6MjUxNAogbXNnaWQgIi1kZXYgPGRldmljZT5cdFx0VXNlIDxkZXZpY2U+IGZvciBJL08iCiBtc2dzdHIgIi1kZXYgPPPx8vDu6fHy4u4+XHRcdMjx7+7r/Ofu4uDy/CDk6/8gSS9PIPPq4Ofg7e3u5SA88/Hy8O7p8fLi7j4iCiAKLSM6IG1haW4uYzoyNTA4CisjOiBtYWluLmM6MjUxNwogbXNnaWQgIi1BXHRcdFx0c3RhcnQgaW4gQXJhYmljIG1vZGUiCiBtc2dzdHIgIi1BXHRcdFx0x+Dv8/HqIOIgwPDg4fHq7uwg8OXm6OzlIgogCi0jOiBtYWluLmM6MjUxMQorIzogbWFpbi5jOjI1MjAKIG1zZ2lkICItSFx0XHRcdFN0YXJ0IGluIEhlYnJldyBtb2RlIgogbXNnc3RyICItSFx0XHRcdMfg7/Px6iDiIPDl5ujs5SBcIsji8OjyXCIiCiAKLSM6IG1haW4uYzoyNTE0CisjOiBtYWluLmM6MjUyMwogbXNnaWQgIi1GXHRcdFx0U3RhcnQgaW4gRmFyc2kgbW9kZSIKIG1zZ3N0ciAiLUZcdFx0XHTH4O/z8eog4iDw5ebo7OUgXCLU4PDx6FwiIgogCi0jOiBtYWluLmM6MjUxNgorIzogbWFpbi5jOjI1MjUKIG1zZ2lkICItVCA8dGVybWluYWw+XHRTZXQgdGVybWluYWwgdHlwZSB0byA8dGVybWluYWw+IgogbXNnc3RyICItVCA88uXw7Ojt4Os+XHTN4Oft4Pfo8vwg8+rg5+Dt7fvpIPLo7yA88uXw7Ojt4OvgPiIKIAotIzogbWFpbi5jOjI1MTcKKyM6IG1haW4uYzoyNTI2CiBtc2dpZCAiLXUgPHZpbXJjPlx0XHRVc2UgPHZpbXJjPiBpbnN0ZWFkIG9mIGFueSAudmltcmMiCiBtc2dzdHIgIi11IDx2aW1yYz5cdFx0yPHv7uv85+7i4PL8IDx2aW1yYz4g4uzl8fLuIOv+4fv1IPTg6evu4iAudmltcmMiCiAKLSM6IG1haW4uYzoyNTE5CisjOiBtYWluLmM6MjUyOAogbXNnaWQgIi1VIDxndmltcmM+XHRcdFVzZSA8Z3ZpbXJjPiBpbnN0ZWFkIG9mIGFueSAuZ3ZpbXJjIgogbXNnc3RyICItVSA8Z3ZpbXJjPlx0XHTI8e/u6/zn7uLg8vwgPGd2aW1yYz4g4uzl8fLuIOv+4fv1IPTg6evu4iAuZ3ZpbXJjIgogCi0jOiBtYWluLmM6MjUyMQorIzogbWFpbi5jOjI1MzAKIG1zZ2lkICItLW5vcGx1Z2luXHRcdERvbid0IGxvYWQgcGx1Z2luIHNjcmlwdHMiCiBtc2dzdHIgIi0tbm9wbHVnaW5cdFx0zeUg5+Dj8PPm4PL8IPH25e3g8OjoIOzu5PPr5ekiCiAKLSM6IG1haW4uYzoyNTIyCisjOiBtYWluLmM6MjUzMQogbXNnaWQgIi1vW05dXHRcdE9wZW4gTiB3aW5kb3dzIChkZWZhdWx0OiBvbmUgZm9yIGVhY2ggZmlsZSkiCiBtc2dzdHIgIi1vW05dXHRcdM7y6vD78vwgTiDu6u7tICjv7iDz7O7r9+Dt6P46IO/uIO7k7e7s8yDt4CDq4Obk++kg9ODp6ykiCiAKLSM6IG1haW4uYzoyNTIzCisjOiBtYWluLmM6MjUzMgogbXNnaWQgIi1PW05dXHRcdExpa2UgLW8gYnV0IHNwbGl0IHZlcnRpY2FsbHkiCiBtc2dzdHIgIi1PW05dXHRcdNLuIOblLCD38u4g6CAtbywg7e4g8SDi5fDy6Org6/zt++wg8ODn5OXr5e3o5ewg7uru7SIKIAotIzogbWFpbi5jOjI1MjQKKyM6IG1haW4uYzoyNTMzCiBtc2dpZCAiK1x0XHRcdFN0YXJ0IGF0IGVuZCBvZiBmaWxlIgogbXNnc3RyICIrXHRcdFx0zeD34PL8IPDl5ODq8ujw7uLg7ejlIOIg6u7t9uUg9ODp6+AiCiAKLSM6IG1haW4uYzoyNTI1CisjOiBtYWluLmM6MjUzNAogbXNnaWQgIis8bG51bT5cdFx0U3RhcnQgYXQgbGluZSA8bG51bT4iCiBtc2dzdHIgIis8bG51bT5cdFx0zeD34PL8IPDl5ODq8ujw7uLg7ejlIOIg8fLw7urlIPEg7e7s5fDu7CA8bG51bT4iCiAKLSM6IG1haW4uYzoyNTI3CisjOiBtYWluLmM6MjUzNgogbXNnaWQgIi0tY21kIDxjb21tYW5kPlx0RXhlY3V0ZSA8Y29tbWFuZD4gYmVmb3JlIGxvYWRpbmcgYW55IHZpbXJjIGZpbGUiCiBtc2dzdHIgIi0tY21kIDzq7uzg7eTgPlx0wvvv7uvt6PL8IDzq7uzg7eTzPiDv5fDl5CDn4OPw8+fq7ukg9ODp6+AgdmltcmMiCiAKLSM6IG1haW4uYzoyNTI5CisjOiBtYWluLmM6MjUzOAogbXNnaWQgIi1jIDxjb21tYW5kPlx0XHRFeGVjdXRlIDxjb21tYW5kPiBhZnRlciBsb2FkaW5nIHRoZSBmaXJzdCBmaWxlIgogbXNnc3RyICItYyA86u7s4O3k4D5cdFx0wvvv7uvt6PL8IDzq7uzg7eTzPiDv7vHr5SDn4OPw8+fq6CDv5fDi7uPuIPTg6evgIgogCi0jOiBtYWluLmM6MjUzMAorIzogbWFpbi5jOjI1MzkKIG1zZ2lkICItUyA8c2Vzc2lvbj5cdFx0U291cmNlIGZpbGUgPHNlc3Npb24+IGFmdGVyIGxvYWRpbmcgdGhlIGZpcnN0IGZpbGUiCiBtc2dzdHIgIi1TIDzx5eDt8T5cdFx0z/Du9+jy4PL8IPH25e3g8OjpIDzx5eDt8eA+IO/u8evlIOfg4/Dz5+roIO/l8OLu4+4g9ODp6+AiCiAKLSM6IG1haW4uYzoyNTMxCisjOiBtYWluLmM6MjU0MAogbXNnaWQgIi1zIDxzY3JpcHRpbj5cdFJlYWQgTm9ybWFsIG1vZGUgY29tbWFuZHMgZnJvbSBmaWxlIDxzY3JpcHRpbj4iCiBtc2dzdHIgIi1zIDzx9uXt4PDo6T5cdM/w7vfo8uDy/CDq7uzg7eT7IM7h+/ft7uPuIPDl5ujs4CDo5yD04Onr4CA88fbl7eDw6P8+IgogCi0jOiBtYWluLmM6MjUzMgorIzogbWFpbi5jOjI1NDEKIG1zZ2lkICItdyA8c2NyaXB0b3V0Plx0QXBwZW5kIGFsbCB0eXBlZCBjb21tYW5kcyB0byBmaWxlIDxzY3JpcHRvdXQ+IgogbXNnc3RyICItdyA88fbl7eDw6Ok+XHTE7uHg4uv/8vwg4vHlIOLi5eS47e375SDq7uzg7eT7IOIg9ODp6yA88fbl7eDw6P8+IgogCi0jOiBtYWluLmM6MjUzMworIzogbWFpbi5jOjI1NDIKIG1zZ2lkICItVyA8c2NyaXB0b3V0Plx0V3JpdGUgYWxsIHR5cGVkIGNvbW1hbmRzIHRvIGZpbGUgPHNjcmlwdG91dD4iCiBtc2dzdHIgIi1XIDzx9uXt4PDo6T5cdMfg7+jx4PL8IOLx5SDi4uXkuO3t++Ug6u7s4O3k+yDiIPTg6esgPPH25e3g8Oj/PiIKIAotIzogbWFpbi5jOjI1MzUKKyM6IG1haW4uYzoyNTQ0CiBtc2dpZCAiLXhcdFx0XHRFZGl0IGVuY3J5cHRlZCBmaWxlcyIKIG1zZ3N0ciAiLXhcdFx0XHTQ5eTg6vLo8O7i4O3o5SDn4Pjo9PDu4uDt7fv1IPTg6evu4iIKIAotIzogbWFpbi5jOjI1MzkKKyM6IG1haW4uYzoyNTQ4CiBtc2dpZCAiLWRpc3BsYXkgPGRpc3BsYXk+XHRDb25uZWN0IHZpbSB0byB0aGlzIHBhcnRpY3VsYXIgWC1zZXJ2ZXIiCiBtc2dzdHIgIi1kaXNwbGF5IDz96vDg7T5cdM/u5PHu5eTo7ejy/CB2aW0g6iDz6uDn4O3t7uzzIPHl8OLl8PMgWCIKIAotIzogbWFpbi5jOjI1NDEKKyM6IG1haW4uYzoyNTUwCiBtc2dpZCAiLVhcdFx0XHREbyBub3QgY29ubmVjdCB0byBYIHNlcnZlciIKIG1zZ3N0ciAiLVhcdFx0XHTN5SDi++/u6+3/8vwg8e7l5Ojt5e3o5SDxIPHl8OLl8O7sIFgiCiAKLSM6IG1haW4uYzoyNTQ0CisjOiBtYWluLmM6MjU1MwogbXNnaWQgIi0tcmVtb3RlIDxmaWxlcz5cdEVkaXQgPGZpbGVzPiBpbiBhIFZpbSBzZXJ2ZXIgaWYgcG9zc2libGUiCiBtc2dzdHIgIi0tcmVtb3RlIDz04Onr+z5cdM/uIOLu5+zu5u3u8fLoIPDl5ODq8ujw7uLg8vwgPPTg6ev7PiDt4CDx5fDi5fDlIFZpbSIKIAotIzogbWFpbi5jOjI1NDUKKyM6IG1haW4uYzoyNTU0CiBtc2dpZCAiLS1yZW1vdGUtc2lsZW50IDxmaWxlcz4gIFNhbWUsIGRvbid0IGNvbXBsYWluIGlmIHRoZXJlIGlzIG5vIHNlcnZlciIKIG1zZ3N0ciAiLS1yZW1vdGUtc2lsZW50IDz04Onr+z4gINLuIOblLCDt7iDh5ecg5uDr7uEg7eAg7vLx8/Lx8uLo5SDx5fDi5fDgIgogCi0jOiBtYWluLmM6MjU0NgorIzogbWFpbi5jOjI1NTUKIG1zZ2lkICIiCiAiLS1yZW1vdGUtd2FpdCA8ZmlsZXM+ICBBcyAtLXJlbW90ZSBidXQgd2FpdCBmb3IgZmlsZXMgdG8gaGF2ZSBiZWVuIGVkaXRlZCIKIG1zZ3N0ciAiIgogIi0tcmVtb3RlLXdhaXQgPPTg6ev7PiAg0u4g5uUsIPfy7iDoIC0tcmVtb3RlLCDt7iDxIO7m6OTg7ejl7CDn4OLl8Pjl7ej/IgogCi0jOiBtYWluLmM6MjU0NworIzogbWFpbi5jOjI1NTYKIG1zZ2lkICIiCiAiLS1yZW1vdGUtd2FpdC1zaWxlbnQgPGZpbGVzPiAgU2FtZSwgZG9uJ3QgY29tcGxhaW4gaWYgdGhlcmUgaXMgbm8gc2VydmVyIgogbXNnc3RyICIiCiAiLS1yZW1vdGUtd2FpdC1zaWxlbnQgPPTg6ev7PiAg0u4g5uUsIO3uIOHl5yDm4Ovu4SDt4CDu8vHz8vHy4ujlIPHl8OLl8OAiCiAKLSM6IG1haW4uYzoyNTQ4CisjOiBtYWluLmM6MjU1NwogbXNnaWQgIi0tcmVtb3RlLXNlbmQgPGtleXM+XHRTZW5kIDxrZXlzPiB0byBhIFZpbSBzZXJ2ZXIgYW5kIGV4aXQiCiBtc2dzdHIgIi0tcmVtb3RlLXNlbmQgPOrt7u/q6D5cdM7y7/Dg4ujy/CA86u3u7+roPiDt4CDx5fDi5fAgVmltIOgg4vvp8ugiCiAKLSM6IG1haW4uYzoyNTQ5CisjOiBtYWluLmM6MjU1OAogbXNnaWQgIi0tcmVtb3RlLWV4cHIgPGV4cHI+XHRFdmFsdWF0ZSA8ZXhwcj4gaW4gYSBWaW0gc2VydmVyIGFuZCBwcmludCByZXN1bHQiCiBtc2dzdHIgIi0tcmVtb3RlLWV4cHIgPOL78ODmPlx0wvv36PHr6PL8IDzi+/Dg5j4g7eAg8eXw4uXw5SBWaW0g6CDt4O/l9+Dy4PL8IgogCi0jOiBtYWluLmM6MjU1MAorIzogbWFpbi5jOjI1NTkKIG1zZ2lkICItLXNlcnZlcmxpc3RcdFx0TGlzdCBhdmFpbGFibGUgVmltIHNlcnZlciBuYW1lcyBhbmQgZXhpdCIKIG1zZ3N0ciAiLS1zZXJ2ZXJsaXN0XHRcdM/u6uDn4PL8IPHv6PHu6iDo7LjtIPHl8OLl8O7iIFZpbSDoIOfg4uXw+Ojy/CDw4OHu8vMiCiAKLSM6IG1haW4uYzoyNTUxCisjOiBtYWluLmM6MjU2MAogbXNnaWQgIi0tc2VydmVybmFtZSA8bmFtZT5cdFNlbmQgdG8vYmVjb21lIHRoZSBWaW0gc2VydmVyIDxuYW1lPiIKIG1zZ3N0ciAiIgogIi0tc2VydmVybmFtZSA86Oz/Plx0zvLv8ODi6PL8IO3gL/Hy4PL8IPHl8OLl8O7sIFZpbSDxIPPq4Ofg7e377CA86Ozl7eXsPiIKIAotIzogbWFpbi5jOjI1NTQKKyM6IG1haW4uYzoyNTYzCiBtc2dpZCAiLWkgPHZpbWluZm8+XHRcdFVzZSA8dmltaW5mbz4gaW5zdGVhZCBvZiAudmltaW5mbyIKIG1zZ3N0ciAiLWkgPHZpbWluZm8+XHRcdMjx7+7r/Ofu4uDy/CDi7OXx8u4gLnZpbWluZm8g9ODp6yA8dmltaW5mbz4iCiAKLSM6IG1haW4uYzoyNTU2CisjOiBtYWluLmM6MjU2NQogbXNnaWQgIi1oICBvciAgLS1oZWxwXHRQcmludCBIZWxwICh0aGlzIG1lc3NhZ2UpIGFuZCBleGl0IgogbXNnc3RyICItaCDo6+ggLS1oZWxwXHTC++Ll8fLoIPHv8ODi6vMgKP3y7iDx7u7h+eXt6OUpIOgg5+Di5fD46PL8IPDg4e7y8yIKIAotIzogbWFpbi5jOjI1NTcKKyM6IG1haW4uYzoyNTY2CiBtc2dpZCAiLS12ZXJzaW9uXHRcdFByaW50IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQiCiBtc2dzdHIgIi0tdmVyc2lvblx0XHTC++Ll8fLoIOjt9O7w7OD26P4g7iDi5fDx6OggVmltIOgg5+Di5fD46PL8IPDg4e7y8yIKIAotIzogbWFpbi5jOjI1NjEKKyM6IG1haW4uYzoyNTcwCiBtc2dpZCAiIgogIlxuIgogIkFyZ3VtZW50cyByZWNvZ25pc2VkIGJ5IGd2aW0gKE1vdGlmIHZlcnNpb24pOlxuIgpAQCAtMzI3NCw3ICszMjgzLDcgQEAKICJcbiIKICLA8OPz7OXt8vsg5Ov/IGd2aW0gKOLl8PHo/yBNb3RpZik6XG4iCiAKLSM6IG1haW4uYzoyNTY1CisjOiBtYWluLmM6MjU3NAogbXNnaWQgIiIKICJcbiIKICJBcmd1bWVudHMgcmVjb2duaXNlZCBieSBndmltIChuZVh0YXcgdmVyc2lvbik6XG4iCkBAIC0zMjgyLDcgKzMyOTEsNyBAQAogIlxuIgogIsDw4/Ps5e3y+yDk6/8gZ3ZpbSAo4uXw8ej/IG5lWHRhdyk6XG4iCiAKLSM6IG1haW4uYzoyNTY3CisjOiBtYWluLmM6MjU3NgogbXNnaWQgIiIKICJcbiIKICJBcmd1bWVudHMgcmVjb2duaXNlZCBieSBndmltIChBdGhlbmEgdmVyc2lvbik6XG4iCkBAIC0zMjkwLDc1ICszMjk5LDc1IEBACiAiXG4iCiAiwPDj8+zl7fL7IOTr/yBndmltICji5fDx6P8gQXRoZW5hKTpcbiIKIAotIzogbWFpbi5jOjI1NzEKKyM6IG1haW4uYzoyNTgwCiBtc2dpZCAiLWRpc3BsYXkgPGRpc3BsYXk+XHRSdW4gdmltIG9uIDxkaXNwbGF5PiIKIG1zZ3N0ciAiLWRpc3BsYXkgPOTo8e/r5ek+XHTH4O/z8fLo8vwgdmltIO3gIPPq4Ofg7e3u7CA85Ojx7+vl5T4iCiAKLSM6IG1haW4uYzoyNTcyCisjOiBtYWluLmM6MjU4MQogbXNnaWQgIi1pY29uaWNcdFx0U3RhcnQgdmltIGljb25pZmllZCIKIG1zZ3N0ciAiLWljb25pY1x0XHTH4O/z8fLo8vwgdmltIOIg8eK48O3z8u7sIOLo5OUiCiAKLSM6IG1haW4uYzoyNTc0CisjOiBtYWluLmM6MjU4MwogbXNnaWQgIi1uYW1lIDxuYW1lPlx0XHRVc2UgcmVzb3VyY2UgYXMgaWYgdmltIHdhcyA8bmFtZT4iCiBtc2dzdHIgIi1uYW1lIDzo7P8+XHRcdMjx7+7r/Ofu4uDy/CDw5fHz8PEsIOrg6iDl8evoIOH7IHZpbSDh++sgPOjs5e3l7D4iCiAKLSM6IG1haW4uYzoyNTc1CisjOiBtYWluLmM6MjU4NAogbXNnaWQgIlx0XHRcdCAgKFVuaW1wbGVtZW50ZWQpXG4iCiBtc2dzdHIgIlx0XHRcdCAgKM3lIPDl4Ovo5+7i4O3uKVxuIgogCi0jOiBtYWluLmM6MjU3NworIzogbWFpbi5jOjI1ODYKIG1zZ2lkICItYmFja2dyb3VuZCA8Y29sb3I+XHRVc2UgPGNvbG9yPiBmb3IgdGhlIGJhY2tncm91bmQgKGFsc286IC1iZykiCiBtc2dzdHIgIiIKICItYmFja2dyb3VuZCA89uLl8j5cdMjx7+7r/Ofu4uDy/CDz6uDn4O3t++kgPPbi5fI+IOTr/yD07u3gICjy4Orm5TogLWJnKSIKIAotIzogbWFpbi5jOjI1NzgKKyM6IG1haW4uYzoyNTg3CiBtc2dpZCAiLWZvcmVncm91bmQgPGNvbG9yPlx0VXNlIDxjb2xvcj4gZm9yIG5vcm1hbCB0ZXh0IChhbHNvOiAtZmcpIgogbXNnc3RyICIiCiAiLWZvcmVncm91bmQgPPbi5fI+XHTI8e/u6/zn7uLg8vwgPPbi5fI+IOTr/yDu4fv37e7j7iDy5erx8uAgKPLg6ublOiAtZmcpIgogCi0jOiBtYWluLmM6MjU3OSBtYWluLmM6MjU5OQorIzogbWFpbi5jOjI1ODggbWFpbi5jOjI2MDgKIG1zZ2lkICItZm9udCA8Zm9udD5cdFx0VXNlIDxmb250PiBmb3Igbm9ybWFsIHRleHQgKGFsc286IC1mbikiCiBtc2dzdHIgIi1mb250IDz48Oj08j5cdFx0yPHv7uv85+7i4PL8IDz48Oj08j4g5Ov/IO7h+/ft7uPuIPLl6vHy4CAo8uDq5uU6IC1mbikiCiAKLSM6IG1haW4uYzoyNTgwCisjOiBtYWluLmM6MjU4OQogbXNnaWQgIi1ib2xkZm9udCA8Zm9udD5cdFVzZSA8Zm9udD4gZm9yIGJvbGQgdGV4dCIKIG1zZ3N0ciAiLWJvbGRmb250IDz48Oj08j5cdMjx7+7r/Ofu4uDy/CA8+PDo9PI+IOTr/yDm6PDt7uPuIPLl6vHy4CIKIAotIzogbWFpbi5jOjI1ODEKKyM6IG1haW4uYzoyNTkwCiBtc2dpZCAiLWl0YWxpY2ZvbnQgPGZvbnQ+XHRVc2UgPGZvbnQ+IGZvciBpdGFsaWMgdGV4dCIKIG1zZ3N0ciAiLWl0YWxpY2ZvbnQgPPjw6PTyPlx0yPHv7uv85+7i4PL8IDz48Oj08j4g5Ov/IO3g6uvu7e3u4+4g8uXq8fLgIgogCi0jOiBtYWluLmM6MjU4MiBtYWluLmM6MjYwMAorIzogbWFpbi5jOjI1OTEgbWFpbi5jOjI2MDkKIG1zZ2lkICItZ2VvbWV0cnkgPGdlb20+XHRVc2UgPGdlb20+IGZvciBpbml0aWFsIGdlb21ldHJ5IChhbHNvOiAtZ2VvbSkiCiBtc2dzdHIgIiIKICItZ2VvbWV0cnkgPOPl7uzl8vDo/z5cdMjx7+7r/Ofu4uDy/CDt4Pfg6/zt8/4gPOPl7uzl8vDo/j4gKPLg6ublOiAtZ2VvbSkiCiAKLSM6IG1haW4uYzoyNTgzCisjOiBtYWluLmM6MjU5MgogbXNnaWQgIi1ib3JkZXJ3aWR0aCA8d2lkdGg+XHRVc2UgYSBib3JkZXIgd2lkdGggb2YgPHdpZHRoPiAoYWxzbzogLWJ3KSIKIG1zZ3N0ciAiLWJvcmRlcndpZHRoIDz46PDo7eA+XHTI8e/u6/zn7uLg8vwgPPjo8Ojt8z4g4e7w5P7w4CAo8uDq5uU6IC1idykiCiAKLSM6IG1haW4uYzoyNTg0CisjOiBtYWluLmM6MjU5MwogbXNnaWQgIi1zY3JvbGxiYXJ3aWR0aCA8d2lkdGg+ICBVc2UgYSBzY3JvbGxiYXIgd2lkdGggb2YgPHdpZHRoPiAoYWxzbzogLXN3KSIKIG1zZ3N0ciAiIgogIi1zY3JvbGxiYXJ3aWR0aCA8+Ojw6O3gPiDI8e/u6/zn7uLg8vwg+Ojw6O3zIO/u6+7x+yDv8O7q8PPy6uggKPLg6ublOiAtc3cpIgogCi0jOiBtYWluLmM6MjU4NgorIzogbWFpbi5jOjI1OTUKIG1zZ2lkICItbWVudWhlaWdodCA8aGVpZ2h0Plx0VXNlIGEgbWVudSBiYXIgaGVpZ2h0IG9mIDxoZWlnaHQ+IChhbHNvOiAtbWgpIgogbXNnc3RyICItbWVudWhlaWdodCA84vvx7vLgPlx0yPHv7uv85+7i4PL8IDzi+/Hu8vM+IOzl7f4gKPLg6ublOiAtbWgpIgogCi0jOiBtYWluLmM6MjU4OCBtYWluLmM6MjYwMQorIzogbWFpbi5jOjI1OTcgbWFpbi5jOjI2MTAKIG1zZ2lkICItcmV2ZXJzZVx0XHRVc2UgcmV2ZXJzZSB2aWRlbyAoYWxzbzogLXJ2KSIKIG1zZ3N0ciAiLXJldmVyc2VcdFx0yPHv7uv85+7i4PL8IOjt4uXw8e376SDi6OTl7vDl5ujsICjy4Orm5TogLXJ2KSIKIAotIzogbWFpbi5jOjI1ODkKKyM6IG1haW4uYzoyNTk4CiBtc2dpZCAiK3JldmVyc2VcdFx0RG9uJ3QgdXNlIHJldmVyc2UgdmlkZW8gKGFsc286ICtydikiCiBtc2dzdHIgIityZXZlcnNlXHRcdM3lIOjx7+7r/Ofu4uDy/CDo7eLl8PHt++kg4ujk5e7w5ebo7CAo8uDq5uU6ICtydikiCiAKLSM6IG1haW4uYzoyNTkwCisjOiBtYWluLmM6MjU5OQogbXNnaWQgIi14cm0gPHJlc291cmNlPlx0U2V0IHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UiCiBtc2dzdHIgIi14cm0gPPDl8fPw8T5cdNPx8uDt7uLo8vwg8+rg5+Dt7fvpIDzw5fHz8PE+IgogCi0jOiBtYWluLmM6MjU5MworIzogbWFpbi5jOjI2MDIKIG1zZ2lkICIiCiAiXG4iCiAiQXJndW1lbnRzIHJlY29nbmlzZWQgYnkgZ3ZpbSAoUklTQyBPUyB2ZXJzaW9uKTpcbiIKQEAgLTMzNjYsMTUgKzMzNzUsMTUgQEAKICJcbiIKICLA8OPz7OXt8vsg5Ov/IGd2aW0gKOLl8PHo/yBSSVNDIE9TKTpcbiIKIAotIzogbWFpbi5jOjI1OTQKKyM6IG1haW4uYzoyNjAzCiBtc2dpZCAiLS1jb2x1bW5zIDxudW1iZXI+XHRJbml0aWFsIHdpZHRoIG9mIHdpbmRvdyBpbiBjb2x1bW5zIgogbXNnc3RyICItLWNvbHVtbnMgPPfo8evuPlx0z+Xw4u7t4Pfg6/zt4P8g+Ojw6O3gIO7q7eAg4iDq7uvu7erg9SIKIAotIzogbWFpbi5jOjI1OTUKKyM6IG1haW4uYzoyNjA0CiBtc2dpZCAiLS1yb3dzIDxudW1iZXI+XHRJbml0aWFsIGhlaWdodCBvZiB3aW5kb3cgaW4gcm93cyIKIG1zZ3N0ciAiLS1yb3dzIDz36PHr7j5cdM/l8OLu7eD34Ov87eD/IOL78e7y4CDu6u3gIOIg8fLw7urg9SIKIAotIzogbWFpbi5jOjI1OTgKKyM6IG1haW4uYzoyNjA3CiBtc2dpZCAiIgogIlxuIgogIkFyZ3VtZW50cyByZWNvZ25pc2VkIGJ5IGd2aW0gKEdUSysgdmVyc2lvbik6XG4iCkBAIC0zMzgyLDQ4ICszMzkxLDQ4IEBACiAiXG4iCiAiwPDj8+zl7fL7IOTr/yBndmltICji5fDx6P8gR1RLKyk6XG4iCiAKLSM6IG1haW4uYzoyNjAyCisjOiBtYWluLmM6MjYxMQogbXNnaWQgIi1kaXNwbGF5IDxkaXNwbGF5Plx0UnVuIHZpbSBvbiA8ZGlzcGxheT4gKGFsc286IC0tZGlzcGxheSkiCiBtc2dzdHIgIiIKICItZGlzcGxheSA85Ojx7+vl6T5cdMfg7/Px8ujy/CB2aW0g7eAg8+rg5+Dt7e7sIDzk6PHv6+XlPiAo8uDq5uU6IC0tZGlzcGxheSkiCiAKLSM6IG1haW4uYzoyNjA0CisjOiBtYWluLmM6MjYxMwogbXNnaWQgIi0tcm9sZSA8cm9sZT5cdFNldCBhIHVuaXF1ZSByb2xlIHRvIGlkZW50aWZ5IHRoZSBtYWluIHdpbmRvdyIKIG1zZ3N0ciAiIgogIi0tcm9sZSA88O7r/D5cdNPx8uDt7uLo8vwg8+3o6uDr/O3z/iA88O7r/D4g5Ov/IOjk5e3y6PTo6uD26Ogg4+vg4u3u4+4g7urt4CIKIAotIzogbWFpbi5jOjI2MDYKKyM6IG1haW4uYzoyNjE1CiBtc2dpZCAiLS1zb2NrZXRpZCA8eGlkPlx0T3BlbiBWaW0gaW5zaWRlIGFub3RoZXIgR1RLIHdpZGdldCIKIG1zZ3N0ciAiLS1zb2NrZXRpZCA8eGlkPlx0zvLq8Pvy/CBWaW0g4u3z8vDoIOTw8+Pu4+4g6u7s7+7t5e3y4CBHVEsiCiAKLSM6IG1haW4uYzoyNjA5CisjOiBtYWluLmM6MjYxOAogbXNnaWQgIi1QIDxwYXJlbnQgdGl0bGU+XHRPcGVuIFZpbSBpbnNpZGUgcGFyZW50IGFwcGxpY2F0aW9uIgogbXNnc3RyICItUCA85+Dj7uvu4u7qIPDu5Ojy5ev/Plx0zvLq8Pvy/CBWaW0g4iDw7uTo8uXr/PHq7uwg7/Do6+7m5e3o6CIKIAotIzogbWFpbi5jOjI4NDcKKyM6IG1haW4uYzoyODU2CiBtc2dpZCAiTm8gZGlzcGxheSIKIG1zZ3N0ciAizeXyIOTo8e/r5f8iCiAKICMuIEZhaWxlZCB0byBzZW5kLCBhYm9ydC4KLSM6IG1haW4uYzoyODYyCisjOiBtYWluLmM6Mjg3MQogbXNnaWQgIjogU2VuZCBmYWlsZWQuXG4iCiBtc2dzdHIgIjogzvLv8ODi6uAg7eUg8+Tg6+Dx/C5cbiIKIAogIy4gTGV0IHZpbSBzdGFydCBub3JtYWxseS4KLSM6IG1haW4uYzoyODY4CisjOiBtYWluLmM6Mjg3NwogbXNnaWQgIjogU2VuZCBmYWlsZWQuIFRyeWluZyB0byBleGVjdXRlIGxvY2FsbHlcbiIKIG1zZ3N0ciAiOiDO8u/w4OLq4CDt5SDz5ODr4PH8LiDP7u/78urgIOzl8fLt7uPuIOL77+7r7eXt6P9cbiIKIAotIzogbWFpbi5jOjI5MDYgbWFpbi5jOjI5MjcKKyM6IG1haW4uYzoyOTE1IG1haW4uYzoyOTM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVkIG9mICVkIGVkaXRlZCIKIG1zZ3N0ciAi7vLw5eTg6vLo8O7i4O3uICVkIOjnICVkIgogCi0jOiBtYWluLmM6Mjk0OQorIzogbWFpbi5jOjI5NTgKIG1zZ2lkICJObyBkaXNwbGF5OiBTZW5kIGV4cHJlc3Npb24gZmFpbGVkLlxuIgogbXNnc3RyICLN5fIg5Ojx7+vl/zog7vLv8ODi6uAg4vvw4Obl7ej/IO3lIPPk4Ovg8fwuXG4iCiAKLSM6IG1haW4uYzoyOTYxCisjOiBtYWluLmM6Mjk3MAogbXNnaWQgIjogU2VuZCBleHByZXNzaW9uIGZhaWxlZC5cbiIKIG1zZ3N0ciAiOiDO8u/w4OLq4CDi+/Dg5uXt6P8g7eUg8+Tg6+Dx/C5cbiIKIApAQCAtMzU0MywyMyArMzU1MiwyMyBAQAogbXNnaWQgIkUyOTM6IGJsb2NrIHdhcyBub3QgbG9ja2VkIgogbXNnc3RyICJFMjkzOiDh6+7qIO3lIOfg4evu6ujw7uLg7SIKIAotIzogbWVtZmlsZS5jOjEwMDUKKyM6IG1lbWZpbGUuYzoxMDEwCiBtc2dpZCAiRTI5NDogU2VlayBlcnJvciBpbiBzd2FwIGZpbGUgcmVhZCIKIG1zZ3N0ciAiRTI5NDogzvjo4ergIO/u6PHq4CDv8Ogg9/Ll7ejoIPHi7u8t9ODp6+AiCiAKLSM6IG1lbWZpbGUuYzoxMDEwCisjOiBtZW1maWxlLmM6MTAxNQogbXNnaWQgIkUyOTU6IFJlYWQgZXJyb3IgaW4gc3dhcCBmaWxlIgogbXNnc3RyICJFMjk1OiDO+Ojh6uAg9/Ll7ej/IPHi7u8t9ODp6+AiCiAKLSM6IG1lbWZpbGUuYzoxMDYyCisjOiBtZW1maWxlLmM6MTA2NwogbXNnaWQgIkUyOTY6IFNlZWsgZXJyb3IgaW4gc3dhcCBmaWxlIHdyaXRlIgogbXNnc3RyICJFMjk2OiDO+Ojh6uAg7+7o8ergIO/w6CDn4O/o8egg8eLu7y304Onr4CIKIAotIzogbWVtZmlsZS5jOjEwODAKKyM6IG1lbWZpbGUuYzoxMDg1CiBtc2dpZCAiRTI5NzogV3JpdGUgZXJyb3IgaW4gc3dhcCBmaWxlIgogbXNnc3RyICJFMjk3OiDO+Ojh6uAg7/DoIOfg7+jx6CDx4u7vLfTg6evgIgogCi0jOiBtZW1maWxlLmM6MTI3NworIzogbWVtZmlsZS5jOjEyODIKIG1zZ2lkICJFMzAwOiBTd2FwIGZpbGUgYWxyZWFkeSBleGlzdHMgKHN5bWxpbmsgYXR0YWNrPykiCiBtc2dzdHIgIiIKICJFMzAwOiDR4u7vLfTg6esg8+blIPHz+eXx8uLz5fIgKODy4OrgIPEg6PHv7uv85+7i4O3o5ewg8ejs4u7r/O3u6SDx8fvr6ug/KSIKQEAgLTM1NzcsNDQgKzM1ODYsNDQgQEAKIG1zZ3N0ciAiRTI5ODogzeUg7+7r8/fl7SDh6+7qIO3u7OXwIDI/IgogCiAjLiBjb3VsZCBub3QgKHJlKW9wZW4gdGhlIHN3YXAgZmlsZSwgd2hhdCBjYW4gd2UgZG8/Pz8/Ci0jOiBtZW1saW5lLmM6NDQzCisjOiBtZW1saW5lLmM6NDQ0CiBtc2dpZCAiRTMwMTogT29wcywgbG9zdCB0aGUgc3dhcCBmaWxlISEhIgogbXNnc3RyICJFMzAxOiDO6Swg7+7y5fD/6/H/IPHi7u8t9ODp6yEhISIKIAotIzogbWVtbGluZS5jOjQ0OAorIzogbWVtbGluZS5jOjQ0OQogbXNnaWQgIkUzMDI6IENvdWxkIG5vdCByZW5hbWUgc3dhcCBmaWxlIgogbXNnc3RyICJFMzAyOiDN5eLu5+zu5u3uIO/l8OXo7OXt7uLg8vwg8eLu7y304OnrIgogCi0jOiBtZW1saW5lLmM6NTE4CisjOiBtZW1saW5lLmM6NTE5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMDM6IFVuYWJsZSB0byBvcGVuIHN3YXAgZmlsZSBmb3IgXCIlc1wiLCByZWNvdmVyeSBpbXBvc3NpYmxlIgogbXNnc3RyICIiCiAiRTMwMzogzeUg8+Tg6+7x/CDu8urw+/L8IPHi7u8t9ODp6yDk6/8gXCIlc1wiLCDi7vHx8uDt7uLr5e3o5SDt5eLu5+zu5u3uIgogCi0jOiBtZW1saW5lLmM6NjE3CisjOiBtZW1saW5lLmM6NjE4CiBtc2dpZCAiRTMwNDogbWxfdGltZXN0YW1wOiBEaWRuJ3QgZ2V0IGJsb2NrIDA/PyIKIG1zZ3N0ciAiRTMwNDogbWxfdGltZXN0YW1wOiDN5SDv7uvz9+XtIOHr7uogMD8/IgogCi0jOiBtZW1saW5lLmM6NzU3CisjOiBtZW1saW5lLmM6NzU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMDU6IE5vIHN3YXAgZmlsZSBmb3VuZCBmb3IgJXMiCiBtc2dzdHIgIkUzMDU6INHi7u8t9ODp6yDk6/8gJXMg7eUg7eDp5OXtIgogCi0jOiBtZW1saW5lLmM6NzY3CisjOiBtZW1saW5lLmM6NzY4CiBtc2dpZCAiRW50ZXIgbnVtYmVyIG9mIHN3YXAgZmlsZSB0byB1c2UgKDAgdG8gcXVpdCk6ICIKIG1zZ3N0ciAiIgogIsLi5eTo8uUg7e7s5fAg8eLu7y304Onr4Cwg6u7y7vD76SDx6+Xk8+XyIOjx7+7r/Ofu4uDy/CAoMCDk6/8g4vv17uTgKTogIgogCi0jOiBtZW1saW5lLmM6ODEyCisjOiBtZW1saW5lLmM6ODEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMDY6IENhbm5vdCBvcGVuICVzIgogbXNnc3RyICJFMzA2OiDN5SDs7uPzIO7y6vD78vwgJXMiCiAKLSM6IG1lbWxpbmUuYzo4MzQKKyM6IG1lbWxpbmUuYzo4MzUKIG1zZ2lkICJVbmFibGUgdG8gcmVhZCBibG9jayAwIGZyb20gIgogbXNnc3RyICLN5eLu5+zu5u3uIO/w7vfo8uDy/CDh6+7qIDAg6OcgIgogCi0jOiBtZW1saW5lLmM6ODM3CisjOiBtZW1saW5lLmM6ODM4CiBtc2dpZCAiIgogIlxuIgogIk1heWJlIG5vIGNoYW5nZXMgd2VyZSBtYWRlIG9yIFZpbSBkaWQgbm90IHVwZGF0ZSB0aGUgc3dhcCBmaWxlLiIKQEAgLTM2MjIsMjggKzM2MzEsMjggQEAKICJcbiIKICLN5fIg6Ofs5e3l7ejpLCDo6+ggVmltIO3lIPHs7uMg7uHt7uLo8vwg8eLu7y304OnrIgogCi0jOiBtZW1saW5lLmM6ODQ3IG1lbWxpbmUuYzo4NjQKKyM6IG1lbWxpbmUuYzo4NDggbWVtbGluZS5jOjg2NQogbXNnaWQgIiBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoaXMgdmVyc2lvbiBvZiBWaW0uXG4iCiBtc2dzdHIgIiDt5ev85/8g6PHv7uv85+7i4PL8IOIg5ODt7e7pIOLl8PHo6CBWaW0uXG4iCiAKLSM6IG1lbWxpbmUuYzo4NDkKKyM6IG1lbWxpbmUuYzo4NTAKIG1zZ2lkICJVc2UgVmltIHZlcnNpb24gMy4wLlxuIgogbXNnc3RyICLI8e/u6/zn8+ny5SBWaW0g4uXw8ejoIDMuMC5cbiIKIAotIzogbWVtbGluZS5jOjg1NQorIzogbWVtbGluZS5jOjg1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzA3OiAlcyBkb2VzIG5vdCBsb29rIGxpa2UgYSBWaW0gc3dhcCBmaWxlIgogbXNnc3RyICJFMzA3OiAlcyDt5SD/4uv/5fLx/yDx4u7vLfTg6evu7CBWaW0iCiAKLSM6IG1lbWxpbmUuYzo4NjgKKyM6IG1lbWxpbmUuYzo4NjkKIG1zZ2lkICIgY2Fubm90IGJlIHVzZWQgb24gdGhpcyBjb21wdXRlci5cbiIKIG1zZ3N0ciAiIO3l6/zn/yDo8e/u6/zn7uLg8vwg7eAg/fLu7CDq7uzv/P7y5fDlLlxuIgogCi0jOiBtZW1saW5lLmM6ODcwCisjOiBtZW1saW5lLmM6ODcxCiBtc2dpZCAiVGhlIGZpbGUgd2FzIGNyZWF0ZWQgb24gIgogbXNnc3RyICLU4OnrIOH76yDx7ufk4O0gIgogCi0jOiBtZW1saW5lLmM6ODc0CisjOiBtZW1saW5lLmM6ODc1CiBtc2dpZCAiIgogIixcbiIKICJvciB0aGUgZmlsZSBoYXMgYmVlbiBkYW1hZ2VkLiIKQEAgLTM2NTEsODIgKzM2NjAsODIgQEAKICIsXG4iCiAi6+jh7iD04OnrIOH76yDv7uLw5ebkuO0uIgogCi0jOiBtZW1saW5lLmM6OTAzCisjOiBtZW1saW5lLmM6OTA0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzaW5nIHN3YXAgZmlsZSBcIiVzXCIiCiBtc2dzdHIgIsjx7+7r/Ofz5fLx/yDx4u7vLfTg6esgXCIlc1wiIgogCi0jOiBtZW1saW5lLmM6OTA5CisjOiBtZW1saW5lLmM6OTEwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9yaWdpbmFsIGZpbGUgXCIlc1wiIgogbXNnc3RyICLI8fXu5O376SD04OnrIFwiJXNcIiIKIAotIzogbWVtbGluZS5jOjkyMgorIzogbWVtbGluZS5jOjkyMwogbXNnaWQgIkUzMDg6IFdhcm5pbmc6IE9yaWdpbmFsIGZpbGUgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIgogbXNnc3RyICJFMzA4OiDP8OXk8+/w5ebk5e3o5Tog6PH17uTt++kg9ODp6yDs7uMg4fvy/CDo5+zl7bjtIgogCi0jOiBtZW1saW5lLmM6OTc1CisjOiBtZW1saW5lLmM6OTc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMDk6IFVuYWJsZSB0byByZWFkIGJsb2NrIDEgZnJvbSAlcyIKIG1zZ3N0ciAiRTMwOTogzeXi7ufs7ubt7iDv8O736PLg8vwg4evu6iAxIOjnICVzIgogCi0jOiBtZW1saW5lLmM6OTc5CisjOiBtZW1saW5lLmM6OTgwCiBtc2dpZCAiPz8/TUFOWSBMSU5FUyBNSVNTSU5HIgogbXNnc3RyICI/Pz/O0tHT0tHSwtPF0iDMzc7DziDR0tDOyiIKIAotIzogbWVtbGluZS5jOjk5NQorIzogbWVtbGluZS5jOjk5NgogbXNnaWQgIj8/P0xJTkUgQ09VTlQgV1JPTkciCiBtc2dzdHIgIj8/P83Fz9DAwsjL3M3OxSDHzcDXxc3IxSDR18XS18jKwCDR0tDOyiIKIAotIzogbWVtbGluZS5jOjEwMDIKKyM6IG1lbWxpbmUuYzoxMDAzCiBtc2dpZCAiPz8/RU1QVFkgQkxPQ0siCiBtc2dzdHIgIj8/P8/T0dLOySDBy87KIgogCi0jOiBtZW1saW5lLmM6MTAyOAorIzogbWVtbGluZS5jOjEwMjkKIG1zZ2lkICI/Pz9MSU5FUyBNSVNTSU5HIgogbXNnc3RyICI/Pz/O0tHT0tHSwtPe0iDR0tDOysgiCiAKLSM6IG1lbWxpbmUuYzoxMDYwCisjOiBtZW1saW5lLmM6MTA2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzEwOiBCbG9jayAxIElEIHdyb25nICglcyBub3QgYSAuc3dwIGZpbGU/KSIKIG1zZ3N0ciAiRTMxMDog7eXv8ODi6Ov87fvpIOHr7uogMSBJRCAoJXMg7eUg/+Lr/+Xy8f8g9ODp6+7sIC5zd3A/KSIKIAotIzogbWVtbGluZS5jOjEwNjUKKyM6IG1lbWxpbmUuYzoxMDY2CiBtc2dpZCAiPz8/QkxPQ0sgTUlTU0lORyIKIG1zZ3N0ciAiPz8/z9DOz9PZxc0gwcvOyiIKIAotIzogbWVtbGluZS5jOjEwODEKKyM6IG1lbWxpbmUuYzoxMDgyCiBtc2dpZCAiPz8/IGZyb20gaGVyZSB1bnRpbCA/Pz9FTkQgbGluZXMgbWF5IGJlIG1lc3NlZCB1cCIKIG1zZ3N0ciAiPz8/8fLw7uroIOzu4/PyIOH78vwg6PHv7vD35e37IO7y8f7k4CDk7iA/Pz/Kzs3WwCIKIAotIzogbWVtbGluZS5jOjEwOTcKKyM6IG1lbWxpbmUuYzoxMDk4CiBtc2dpZCAiPz8/IGZyb20gaGVyZSB1bnRpbCA/Pz9FTkQgbGluZXMgbWF5IGhhdmUgYmVlbiBpbnNlcnRlZC9kZWxldGVkIgogbXNnc3RyICI/Pz/x8vDu6ugg7O7j6+gg4fvy/CDi8fLg4uvl7fsg6OvoIPPk4Ovl7fsg7vLx/uTgIOTuID8/P8rOzdbAIgogCi0jOiBtZW1saW5lLmM6MTExNworIzogbWVtbGluZS5jOjExMTgKIG1zZ2lkICI/Pz9FTkQiCiBtc2dzdHIgIj8/P8rOzcXWIgogCi0jOiBtZW1saW5lLmM6MTE0MworIzogbWVtbGluZS5jOjExNDQKIG1zZ2lkICJFMzExOiBSZWNvdmVyeSBJbnRlcnJ1cHRlZCIKIG1zZ3N0ciAiRTMxMTogwu7x8fLg7e7i6+Xt6OUg7/Dl8OLg7e4iCiAKLSM6IG1lbWxpbmUuYzoxMTQ4CisjOiBtZW1saW5lLmM6MTE0OQogbXNnaWQgIiIKICJFMzEyOiBFcnJvcnMgZGV0ZWN0ZWQgd2hpbGUgcmVjb3ZlcmluZzsgbG9vayBmb3IgbGluZXMgc3RhcnRpbmcgd2l0aCA/Pz8iCiBtc2dzdHIgIiIKICJFMzEyOiDC7iDi8OXs/yDi7vHx8uDt7uLr5e3o/yDu4e3g8PPm5e37IO746OHq6Dsg8ewuIPHy8O7q6Cwg7eD36O3g/vno5fH/ICIKICLxID8/PyIKIAotIzogbWVtbGluZS5jOjExNTAKKyM6IG1lbWxpbmUuYzoxMTUxCiBtc2dpZCAiU2VlIFwiOmhlbHAgRTMxMlwiIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKIG1zZ3N0ciAi0ewuIOTu7+7r7ejy5ev87fP+IOjt9O7w7OD26P4g4iDx7/Dg4u737ejq5SAoXCI6aGVscCBFMzEyXCIpIgogCi0jOiBtZW1saW5lLmM6MTE1NQorIzogbWVtbGluZS5jOjExNTYKIG1zZ2lkICJSZWNvdmVyeSBjb21wbGV0ZWQuIFlvdSBzaG91bGQgY2hlY2sgaWYgZXZlcnl0aGluZyBpcyBPSy4iCiBtc2dzdHIgIsLu8fHy4O3u4uvl7ejlIOfg4uXw+OXt7i4gz/Du4uXw/PLlLCDi8bgg6+gg4iDv7vD/5OrlLiIKIAotIzogbWVtbGluZS5jOjExNTYKKyM6IG1lbWxpbmUuYzoxMTU3CiBtc2dpZCAiIgogIlxuIgogIihZb3UgbWlnaHQgd2FudCB0byB3cml0ZSBvdXQgdGhpcyBmaWxlIHVuZGVyIGFub3RoZXIgbmFtZVxuIgpAQCAtMzczNCwxMSArMzc0MywxMSBAQAogIlxuIgogIijM7ubl8uUg5+Dv6PHg8vwg9ODp6yDv7uQg5PDz4+jsIOjs5e3l7CDoIPHw4OLt6PL8IOXj7iDxIOjx9e7k7fvsXG4iCiAKLSM6IG1lbWxpbmUuYzoxMTU3CisjOiBtZW1saW5lLmM6MTE1OAogbXNnaWQgImFuZCBydW4gZGlmZiB3aXRoIHRoZSBvcmlnaW5hbCBmaWxlIHRvIGNoZWNrIGZvciBjaGFuZ2VzKVxuIgogbXNnc3RyICL04Onr7uwg7/DoIO/u7O756CDv8O7j8ODs7PsgZGlmZikuXG4iCiAKLSM6IG1lbWxpbmUuYzoxMTU4CisjOiBtZW1saW5lLmM6MTE1OQogbXNnaWQgIiIKICJEZWxldGUgdGhlIC5zd3AgZmlsZSBhZnRlcndhcmRzLlxuIgogIlxuIgpAQCAtMzc0Nyw1MSArMzc1Niw1MSBAQAogIlxuIgogCiAjLiB1c2UgbXNnKCkgdG8gc3RhcnQgdGhlIHNjcm9sbGluZyBwcm9wZXJseQotIzogbWVtbGluZS5jOjEyMTQKKyM6IG1lbWxpbmUuYzoxMjE1CiBtc2dpZCAiU3dhcCBmaWxlcyBmb3VuZDoiCiBtc2dzdHIgIs7h7eDw8+bl7fsg8eLu7y304Onr+zoiCiAKLSM6IG1lbWxpbmUuYzoxMzkyCisjOiBtZW1saW5lLmM6MTM5MwogbXNnaWQgIiAgIEluIGN1cnJlbnQgZGlyZWN0b3J5OlxuIgogbXNnc3RyICIgICDCIPLl6vP55ewg6uDy4Ovu4+U6XG4iCiAKLSM6IG1lbWxpbmUuYzoxMzk0CisjOiBtZW1saW5lLmM6MTM5NQogbXNnaWQgIiAgIFVzaW5nIHNwZWNpZmllZCBuYW1lOlxuIgogbXNnc3RyICIgICDRIPPq4Ofg7e377CDo7OXt5ew6XG4iCiAKLSM6IG1lbWxpbmUuYzoxMzk4CisjOiBtZW1saW5lLmM6MTM5OQogbXNnaWQgIiAgIEluIGRpcmVjdG9yeSAiCiBtc2dzdHIgIiAgIMIg6uDy4Ovu4+UgICAiCiAKLSM6IG1lbWxpbmUuYzoxNDE2CisjOiBtZW1saW5lLmM6MTQxNwogbXNnaWQgIiAgICAgIC0tIG5vbmUgLS1cbiIKIG1zZ3N0ciAiICAgICAgLS0g7eXyIC0tXG4iCiAKLSM6IG1lbWxpbmUuYzoxNDg4CisjOiBtZW1saW5lLmM6MTQ4OQogbXNnaWQgIiAgICAgICAgICBvd25lZCBieTogIgogbXNnc3RyICIgICAgICAgICAg4uvg5OXr5fY6ICIKIAotIzogbWVtbGluZS5jOjE0OTAKKyM6IG1lbWxpbmUuYzoxNDkxCiBtc2dpZCAiICAgZGF0ZWQ6ICIKIG1zZ3N0ciAiICAgIOTg8uA6ICIKIAotIzogbWVtbGluZS5jOjE0OTQgbWVtbGluZS5jOjM2ODQKKyM6IG1lbWxpbmUuYzoxNDk1IG1lbWxpbmUuYzozNjg1CiBtc2dpZCAiICAgICAgICAgICAgIGRhdGVkOiAiCiBtc2dzdHIgIiAgICAgICAgICAgICAg5ODy4DogIgogCi0jOiBtZW1saW5lLmM6MTUxMAorIzogbWVtbGluZS5jOjE1MTEKIG1zZ2lkICIgICAgICAgICBbZnJvbSBWaW0gdmVyc2lvbiAzLjBdIgogbXNnc3RyICIgICAgICAgICBb7vIgVmltIOLl8PHo6CAzLjBdIgogCi0jOiBtZW1saW5lLmM6MTUxNAorIzogbWVtbGluZS5jOjE1MTUKIG1zZ2lkICIgICAgICAgICBbZG9lcyBub3QgbG9vayBsaWtlIGEgVmltIHN3YXAgZmlsZV0iCiBtc2dzdHIgIiAgICAgICAgIFvt5SD/4uv/5fLx/yDx4u7vLfTg6evu7CBWaW1dIgogCi0jOiBtZW1saW5lLmM6MTUxOAorIzogbWVtbGluZS5jOjE1MTkKIG1zZ2lkICIgICAgICAgICBmaWxlIG5hbWU6ICIKIG1zZ3N0ciAiICAgICAgICAg6Oz/IPTg6evgOiAiCiAKLSM6IG1lbWxpbmUuYzoxNTI0CisjOiBtZW1saW5lLmM6MTUyNQogbXNnaWQgIiIKICJcbiIKICIgICAgICAgICAgbW9kaWZpZWQ6ICIKQEAgLTM3OTksMTUgKzM4MDgsMTUgQEAKICJcbiIKICIgICAgICAgICAgIOjn7OXtuO06ICIKIAotIzogbWVtbGluZS5jOjE1MjUKKyM6IG1lbWxpbmUuYzoxNTI2CiBtc2dpZCAiWUVTIgogbXNnc3RyICLEwCIKIAotIzogbWVtbGluZS5jOjE1MjUKKyM6IG1lbWxpbmUuYzoxNTI2CiBtc2dpZCAibm8iCiBtc2dzdHIgIu3l8iIKIAotIzogbWVtbGluZS5jOjE1MjkKKyM6IG1lbWxpbmUuYzoxNTMwCiBtc2dpZCAiIgogIlxuIgogIiAgICAgICAgIHVzZXIgbmFtZTogIgpAQCAtMzgxNSwxMSArMzgyNCwxMSBAQAogIlxuIgogIiAgICAgIO/u6/zn7uLg8uXr/DogIgogCi0jOiBtZW1saW5lLmM6MTUzNgorIzogbWVtbGluZS5jOjE1MzcKIG1zZ2lkICIgICBob3N0IG5hbWU6ICIKIG1zZ3N0ciAiICDq7uzv/P7y5fA6ICIKIAotIzogbWVtbGluZS5jOjE1MzgKKyM6IG1lbWxpbmUuYzoxNTM5CiBtc2dpZCAiIgogIlxuIgogIiAgICAgICAgIGhvc3QgbmFtZTogIgpAQCAtMzgyNyw3ICszODM2LDcgQEAKICJcbiIKICIgICAgICAgICDq7uzv/P7y5fA6ICIKIAotIzogbWVtbGluZS5jOjE1NDQKKyM6IG1lbWxpbmUuYzoxNTQ1CiBtc2dpZCAiIgogIlxuIgogIiAgICAgICAgcHJvY2VzcyBJRDogIgpAQCAtMzgzNSwxMSArMzg0NCwxMSBAQAogIlxuIgogIiAgICAgICAgICAg7/Du9uXx8TogIgogCi0jOiBtZW1saW5lLmM6MTU1MAorIzogbWVtbGluZS5jOjE1NTEKIG1zZ2lkICIgKHN0aWxsIHJ1bm5pbmcpIgogbXNnc3RyICIgKOX5uCDi++/u6+3/5fLx/ykiCiAKLSM6IG1lbWxpbmUuYzoxNTYyCisjOiBtZW1saW5lLmM6MTU2MwogbXNnaWQgIiIKICJcbiIKICIgICAgICAgICBbbm90IHVzYWJsZSB3aXRoIHRoaXMgdmVyc2lvbiBvZiBWaW1dIgpAQCAtMzg0Nyw3ICszODU2LDcgQEAKICJcbiIKICIgICAgICAgICBb7eUg7/Do4+7k5e0g5Ov/IOjx7+7r/Ofu4uDt6P8g8SDk4O3t7ukg4uXw8ejl6SBWaW1dIgogCi0jOiBtZW1saW5lLmM6MTU2NQorIzogbWVtbGluZS5jOjE1NjYKIG1zZ2lkICIiCiAiXG4iCiAiICAgICAgICAgW25vdCB1c2FibGUgb24gdGhpcyBjb21wdXRlcl0iCkBAIC0zODU1LDkyICszODY0LDkyIEBACiAiXG4iCiAiICAgICAgICAgW+3lIO/w6OPu5OXtIOTr/yDo8e/u6/zn7uLg7ej/IO3gIP3y7uwg6u7s7/z+8uXw5V0iCiAKLSM6IG1lbWxpbmUuYzoxNTcwCisjOiBtZW1saW5lLmM6MTU3MQogbXNnaWQgIiAgICAgICAgIFtjYW5ub3QgYmUgcmVhZF0iCiBtc2dzdHIgIiAgICAgICAgIFvt5SD36PLg5fLx/10iCiAKLSM6IG1lbWxpbmUuYzoxNTc0CisjOiBtZW1saW5lLmM6MTU3NQogbXNnaWQgIiAgICAgICAgIFtjYW5ub3QgYmUgb3BlbmVkXSIKIG1zZ3N0ciAiICAgICAgICAgW+3lIO7y6vD74uDl8vH/XSIKIAotIzogbWVtbGluZS5jOjE3NjQKKyM6IG1lbWxpbmUuYzoxNzY1CiBtc2dpZCAiRTMxMzogQ2Fubm90IHByZXNlcnZlLCB0aGVyZSBpcyBubyBzd2FwIGZpbGUiCiBtc2dzdHIgIkUzMTM6IM3l4u7n7O7m7e4g7uHt7uLo8vwg8eLu7y304OnrLCDv7vHq7uv86vMg7u0g7eUg7uHt4PDz5uXtIgogCi0jOiBtZW1saW5lLmM6MTgxNworIzogbWVtbGluZS5jOjE4MTgKIG1zZ2lkICJGaWxlIHByZXNlcnZlZCIKIG1zZ3N0ciAi0eLu7y304OnrIO7h7e7i67jtIgogCi0jOiBtZW1saW5lLmM6MTgxOQorIzogbWVtbGluZS5jOjE4MjAKIG1zZ2lkICJFMzE0OiBQcmVzZXJ2ZSBmYWlsZWQiCiBtc2dzdHIgIkUzMTQ6IM3l8+Tg9+3g/yDv7u/78urgIO7h7e7i6+Xt6P8g8eLu7y304Onr4CIKIAotIzogbWVtbGluZS5jOjE4OTAKKyM6IG1lbWxpbmUuYzoxODkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMTU6IG1sX2dldDogaW52YWxpZCBsbnVtOiAlbGQiCiBtc2dzdHIgIkUzMTU6IG1sX2dldDog7eXv8ODi6Ov87e7lIOft4Pfl7ejlIGxudW06ICVsZCIKIAotIzogbWVtbGluZS5jOjE5MTYKKyM6IG1lbWxpbmUuYzoxOTE3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMTY6IG1sX2dldDogY2Fubm90IGZpbmQgbGluZSAlbGQiCiBtc2dzdHIgIkUzMTY6IG1sX2dldDog7eXi7ufs7ubt7iDt4Ony6CDx8vDu6vMgJWxkIgogCi0jOiBtZW1saW5lLmM6MjMwNgorIzogbWVtbGluZS5jOjIzMDcKIG1zZ2lkICJFMzE3OiBwb2ludGVyIGJsb2NrIGlkIHdyb25nIDMiCiBtc2dzdHIgIu3l7/Dg4ujr/O3u5SDn7eD35e3o5SDz6uDn4PLl6/8g4evu6uAgMyIKIAotIzogbWVtbGluZS5jOjIzODYKKyM6IG1lbWxpbmUuYzoyMzg3CiBtc2dpZCAic3RhY2tfaWR4IHNob3VsZCBiZSAwIgogbXNnc3RyICLn7eD35e3o5SBzdGFja19pZHgg5O7r5u3uIOH78vwg8ODi7e4gMCIKIAotIzogbWVtbGluZS5jOjI0NDgKKyM6IG1lbWxpbmUuYzoyNDQ5CiBtc2dpZCAiRTMxODogVXBkYXRlZCB0b28gbWFueSBibG9ja3M/IgogbXNnc3RyICJFMzE4OiDO4e3u4uvl7e4g8evo+Oru7CDs7e7j7iDh6+7q7uI/IgogCi0jOiBtZW1saW5lLmM6MjYzMAorIzogbWVtbGluZS5jOjI2MzEKIG1zZ2lkICJFMzE3OiBwb2ludGVyIGJsb2NrIGlkIHdyb25nIDQiCiBtc2dzdHIgIkUzMTc6IO3l7/Dg4ujr/O3u5SDn7eD35e3o5SDz6uDn4PLl6/8g4evu6uAgNCIKIAotIzogbWVtbGluZS5jOjI2NTcKKyM6IG1lbWxpbmUuYzoyNjU4CiBtc2dpZCAiZGVsZXRlZCBibG9jayAxPyIKIG1zZ3N0ciAi8+Tg67jtIOHr7uogMT8iCiAKLSM6IG1lbWxpbmUuYzoyODU3CisjOiBtZW1saW5lLmM6Mjg1OAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzIwOiBDYW5ub3QgZmluZCBsaW5lICVsZCIKIG1zZ3N0ciAiRTMyMDog0fLw7urgICVsZCDt5SDu4e3g8PPm5e3gIgogCi0jOiBtZW1saW5lLmM6MzEwMAorIzogbWVtbGluZS5jOjMxMDEKIG1zZ2lkICJFMzE3OiBwb2ludGVyIGJsb2NrIGlkIHdyb25nIgogbXNnc3RyICJFMzE3OiDt5e/w4OLo6/zt7uUg5+3g9+Xt6OUg8+rg5+Dy5ev/IOHr7urgIgogCi0jOiBtZW1saW5lLmM6MzExNgorIzogbWVtbGluZS5jOjMxMTcKIG1zZ2lkICJwZV9saW5lX2NvdW50IGlzIHplcm8iCiBtc2dzdHIgIuft4Pfl7ejlIHBlX2xpbmVfY291bnQg8ODi7e4g7fPr/iIKIAotIzogbWVtbGluZS5jOjMxNDUKKyM6IG1lbWxpbmUuYzozMTQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMjI6IGxpbmUgbnVtYmVyIG91dCBvZiByYW5nZTogJWxkIHBhc3QgdGhlIGVuZCIKIG1zZ3N0ciAiRTMyMjog7e7s5fAg8fLw7uroIOfgIO/w5eTl6+Ds6CDk6ODv4Ofu7eA6ICVsZCIKIAotIzogbWVtbGluZS5jOjMxNDkKKyM6IG1lbWxpbmUuYzozMTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMjM6IGxpbmUgY291bnQgd3JvbmcgaW4gYmxvY2sgJWxkIgogbXNnc3RyICJFMzIzOiDt5e/w4OLo6/zt7uUg5+3g9+Xt6OUg8fe48vfo6uAg8fLw7uog4iDh6+7q5SAlbGQiCiAKLSM6IG1lbWxpbmUuYzozMTk4CisjOiBtZW1saW5lLmM6MzE5OQogbXNnaWQgIlN0YWNrIHNpemUgaW5jcmVhc2VzIgogbXNnc3RyICLQ4Ofs5fAg8fLl6uAg8+Ll6+j35e0iCiAKLSM6IG1lbWxpbmUuYzozMjQ0CisjOiBtZW1saW5lLmM6MzI0NQogbXNnaWQgIkUzMTc6IHBvaW50ZXIgYmxvY2sgaWQgd3JvbmcgMiIKIG1zZ3N0ciAiRTMxNzog7eXv8ODi6Ov87e7lIOft4Pfl7ejlIPPq4Ofg8uXr/yDh6+7q4CAyIgogCi0jOiBtZW1saW5lLmM6MzY3NAorIzogbWVtbGluZS5jOjM2NzUKIG1zZ2lkICJFMzI1OiBBVFRFTlRJT04iCiBtc2dzdHIgIkUzMjU6IMLNyMzAzcjFIgogCi0jOiBtZW1saW5lLmM6MzY3NQorIzogbWVtbGluZS5jOjM2NzYKIG1zZ2lkICIiCiAiXG4iCiAiRm91bmQgYSBzd2FwIGZpbGUgYnkgdGhlIG5hbWUgXCIiCkBAIC0zOTQ4LDE3ICszOTU3LDE3IEBACiAiXG4iCiAizuHt4PDz5uXtIPHi7u8t9ODp6yDxIOjs5e3l7CBcIiIKIAotIzogbWVtbGluZS5jOjM2NzkKKyM6IG1lbWxpbmUuYzozNjgwCiBtc2dpZCAiV2hpbGUgb3BlbmluZyBmaWxlIFwiIgogbXNnc3RyICLP8Ogg7vLq8Pvy6Ogg9ODp6+A6IFwiIgogCi0jOiBtZW1saW5lLmM6MzY4OAorIzogbWVtbGluZS5jOjM2ODkKIG1zZ2lkICIgICAgICBORVdFUiB0aGFuIHN3YXAgZmlsZSFcbiIKIG1zZ3N0ciAiICAgICAgICAgICAgICAgICAgICDB7uvl5SDRwsXGyMksIPfl7CDx4u7vLfTg6eshXG4iCiAKICMuIFNvbWUgb2YgdGhlc2UgbWVzc2FnZXMgYXJlIGxvbmcgdG8gYWxsb3cgdHJhbnNsYXRpb24gdG8KICMuICogb3RoZXIgbGFuZ3VhZ2VzLgotIzogbWVtbGluZS5jOjM2OTIKKyM6IG1lbWxpbmUuYzozNjkzCiBtc2dpZCAiIgogIlxuIgogIigxKSBBbm90aGVyIHByb2dyYW0gbWF5IGJlIGVkaXRpbmcgdGhlIHNhbWUgZmlsZS5cbiIKQEAgLTM5NzAsMTEgKzM5NzksMTEgQEAKICIgICAgxfHr6CD98u4g8uDqLCDy7iDh8+T88uUg4u3o7ODy5ev87fsg7/DoIOLt5fHl7ejoIOjn7OXt5e3o6SxcbiIKICIgICAg9/Lu4fsg8yDi4PEg7eUg7+7/4ujr7vH8IOTi4CDw4Oft+/Ug4uDw6ODt8uAg7uTt7uPuIOgg8u7j7iDm5SD04Onr4C5cbiIKIAotIzogbWVtbGluZS5jOjM2OTMKKyM6IG1lbWxpbmUuYzozNjk0CiBtc2dpZCAiICAgIFF1aXQsIG9yIGNvbnRpbnVlIHdpdGggY2F1dGlvbi5cbiIKIG1zZ3N0ciAiICAgIMfg4uXw+Ojy5SDw4OHu8vMg6OvoIO/w7uTu6+bg6fLlIPEg7vHy7vDu5u3u8fL8/i5cbiIKIAotIzogbWVtbGluZS5jOjM2OTQKKyM6IG1lbWxpbmUuYzozNjk1CiBtc2dpZCAiIgogIlxuIgogIigyKSBBbiBlZGl0IHNlc3Npb24gZm9yIHRoaXMgZmlsZSBjcmFzaGVkLlxuIgpAQCAtMzk4MiwxMSArMzk5MSwxMSBAQAogIlxuIgogIigyKSDP8OXk++Tz+ejpIPHl4O3xIPDl5ODq8ujw7uLg7ej/IP3y7uPuIPTg6evgIOfg4uXw+LjtIODi4PDo6e3uLlxuIgogCi0jOiBtZW1saW5lLmM6MzY5NQorIzogbWVtbGluZS5jOjM2OTYKIG1zZ2lkICIgICAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdXNlIFwiOnJlY292ZXJcIiBvciBcInZpbSAtciAiCiBtc2dzdHIgIiAgICDCIP3y7uwg8evz9+DlLCDo8e/u6/zn8+ny5SDq7uzg7eTzIFwiOnJlY292ZXJcIiDo6+ggXCJ2aW0gLXIgIgogCi0jOiBtZW1saW5lLmM6MzY5NworIzogbWVtbGluZS5jOjM2OTgKIG1zZ2lkICIiCiAiXCJcbiIKICIgICAgdG8gcmVjb3ZlciB0aGUgY2hhbmdlcyAoc2VlIFwiOmhlbHAgcmVjb3ZlcnlcIikuXG4iCkBAIC0zOTk0LDExICs0MDAzLDExIEBACiAiXCJcbiIKICIgICAg5Ov/IOLu8fHy4O3u4uvl7ej/IOjn7OXt5e3o6SAo8ewuIFwiOmhlbHAg4u7x8fLg7e7i6+Xt6OVcIikuXG4iCiAKLSM6IG1lbWxpbmUuYzozNjk4CisjOiBtZW1saW5lLmM6MzY5OQogbXNnaWQgIiAgICBJZiB5b3UgZGlkIHRoaXMgYWxyZWFkeSwgZGVsZXRlIHRoZSBzd2FwIGZpbGUgXCIiCiBtc2dzdHIgIiAgICDF8evoIOL7IPPm5SDi++/u6+3/6+gg/fLzIO7v5fDg9uj+LCDz5ODr6PLlIPHi7u8t9ODp6yBcIiIKIAotIzogbWVtbGluZS5jOjM3MDAKKyM6IG1lbWxpbmUuYzozNzAxCiBtc2dpZCAiIgogIlwiXG4iCiAiICAgIHRvIGF2b2lkIHRoaXMgbWVzc2FnZS5cbiIKQEAgLTQwMDYsMjMgKzQwMTUsMjMgQEAKICJcIlxuIgogIiAgICD38u7h+yDo5+Hl5uDy/CDv7v/i6+Xt6P8g/fLu4+4g8e7u4fnl7ej/IOIg4fPk8/nl7C5cbiIKIAotIzogbWVtbGluZS5jOjM3MTQgbWVtbGluZS5jOjM3MTgKKyM6IG1lbWxpbmUuYzozNzE1IG1lbWxpbmUuYzozNzE5CiBtc2dpZCAiU3dhcCBmaWxlIFwiIgogbXNnc3RyICLR4u7vLfTg6esgXCIiCiAKLSM6IG1lbWxpbmUuYzozNzE1IG1lbWxpbmUuYzozNzIxCisjOiBtZW1saW5lLmM6MzcxNiBtZW1saW5lLmM6MzcyMgogbXNnaWQgIlwiIGFscmVhZHkgZXhpc3RzISIKIG1zZ3N0ciAiXCIg8+blIPHz+eXx8uLz5fIhIgogCi0jOiBtZW1saW5lLmM6MzcyNAorIzogbWVtbGluZS5jOjM3MjUKIG1zZ2lkICJWSU0gLSBBVFRFTlRJT04iCiBtc2dzdHIgIlZJTSAtIMLNyMzAzcjFIgogCi0jOiBtZW1saW5lLmM6MzcyNgorIzogbWVtbGluZS5jOjM3MjcKIG1zZ2lkICJTd2FwIGZpbGUgYWxyZWFkeSBleGlzdHMhIgogbXNnc3RyICLR4u7vLfTg6esg8+blIPHz+eXx8uLz5fIhIgogCi0jOiBtZW1saW5lLmM6MzczMAorIzogbWVtbGluZS5jOjM3MzEKIG1zZ2lkICIiCiAiJk9wZW4gUmVhZC1Pbmx5XG4iCiAiJkVkaXQgYW55d2F5XG4iCkBAIC00MDM2LDcgKzQwNDUsNyBAQAogIiZRIML79e7kXG4iCiAiJkEgz/Dl8OLg8vwiCiAKLSM6IG1lbWxpbmUuYzozNzMyCisjOiBtZW1saW5lLmM6MzczMwogbXNnaWQgIiIKICImT3BlbiBSZWFkLU9ubHlcbiIKICImRWRpdCBhbnl3YXlcbiIKQEAgLTQwNTIsNyArNDA2MSw3IEBACiAiJkEgz/Dl8OLg8vxcbiIKICImRCDT5ODr6PL8IgogCi0jOiBtZW1saW5lLmM6Mzc4OQorIzogbWVtbGluZS5jOjM3OTAKIG1zZ2lkICJFMzI2OiBUb28gbWFueSBzd2FwIGZpbGVzIGZvdW5kIgogbXNnc3RyICJFMzI2OiDO4e3g8PPm5e3uIPHr6Pjq7uwg7O3u4+4g8eLu7y304Onr7uIiCiAKQEAgLTQxNjAsMTEgKzQxNjksMTEgQEAKIG1zZ2lkICIgKFJFVDogbGluZSwgU1BBQ0U6IHBhZ2UsIGQ6IGhhbGYgcGFnZSwgcTogcXVpdCkiCiBtc2dzdHIgIiAoUkVUOiDx8vDu6uAsIFNQQUNFOiDx8vDg7ej24CwgZDog7+7r8fLw4O3o9vssIHE6IOL79e7kKSIKIAotIzogbWVzc2FnZS5jOjI5NzYgbWVzc2FnZS5jOjI5OTEKKyM6IG1lc3NhZ2UuYzoyOTgyIG1lc3NhZ2UuYzoyOTk3CiBtc2dpZCAiUXVlc3Rpb24iCiBtc2dzdHIgIsLu7/Du8SIKIAotIzogbWVzc2FnZS5jOjI5NzgKKyM6IG1lc3NhZ2UuYzoyOTg0CiBtc2dpZCAiIgogIiZZZXNcbiIKICImTm8iCkBAIC00MTcyLDcgKzQxODEsNyBAQAogIibE4FxuIgogIibN5fIiCiAKLSM6IG1lc3NhZ2UuYzozMDExCisjOiBtZXNzYWdlLmM6MzAxNwogbXNnaWQgIiIKICImWWVzXG4iCiAiJk5vXG4iCkBAIC00MTg2LDE2ICs0MTk1LDE2IEBACiAiJs/u8uXw//L8IOLx5VxuIgogIs4m8uzl7eAiCiAKLSM6IG1lc3NhZ2UuYzozMDUyCisjOiBtZXNzYWdlLmM6MzA1OAogbXNnaWQgIlNhdmUgRmlsZSBkaWFsb2ciCiBtc2dzdHIgItHu9fDg7eXt6OUg9ODp6+AiCiAKLSM6IG1lc3NhZ2UuYzozMDU0CisjOiBtZXNzYWdlLmM6MzA2MAogbXNnaWQgIk9wZW4gRmlsZSBkaWFsb2ciCiBtc2dzdHIgIs7y6vD78ujlIPTg6evgIgogCiAjLiBUT0RPOiBub24tR1VJIGZpbGUgc2VsZWN0b3IgaGVyZQotIzogbWVzc2FnZS5jOjMxMjUKKyM6IG1lc3NhZ2UuYzozMTMxCiBtc2dpZCAiRTMzODogU29ycnksIG5vIGZpbGUgYnJvd3NlciBpbiBjb25zb2xlIG1vZGUiCiBtc2dzdHIgIiIKICJFMzM4OiDI5+Lo7ejy5Swg7e4g4iDq7u3x7uv87e7sIPDl5ujs5SDt5fIg7/Du4u7k7ejq4CDv7iD04Onr7uLu6SDx6PHy5ezlIgpAQCAtNDM3NCwzNiArNDM4MywzNiBAQAogbXNnaWQgIkU2NTg6IE5ldEJlYW5zIGNvbm5lY3Rpb24gbG9zdCBmb3IgYnVmZmVyICVsZCIKIG1zZ3N0ciAiRTY1ODogz+7y5fD/7e4g8e7l5Ojt5e3o5SDxIE5ldEJlYW5zIOTr/yDh8/Tl8OAgJWxkIgogCi0jOiBub3JtYWwuYzoyOTgwCisjOiBub3JtYWwuYzoyOTgzCiBtc2dpZCAiV2FybmluZzogdGVybWluYWwgY2Fubm90IGhpZ2hsaWdodCIKIG1zZ3N0ciAiz/Dl5PPv8OXm5OXt6OU6IPLl8Ozo7eDrIO3lIOzu5uXyIOL77+7r7f/y/CDv7uTx4uXy6vMiCiAKLSM6IG5vcm1hbC5jOjMyNzYKKyM6IG5vcm1hbC5jOjMyNzkKIG1zZ2lkICJFMzQ4OiBObyBzdHJpbmcgdW5kZXIgY3Vyc29yIgogbXNnc3RyICJFMzQ4OiDN5fIg8fLw7uroIOIg7+7n6Pbo6CDq8/Dx7vDgIgogCi0jOiBub3JtYWwuYzozMjc4CisjOiBub3JtYWwuYzozMjgxCiBtc2dpZCAiRTM0OTogTm8gaWRlbnRpZmllciB1bmRlciBjdXJzb3IiCiBtc2dzdHIgIkUzNDk6IM3l8iDo7OXt6CDiIO/u5+j26Ogg6vPw8e7w4CIKIAotIzogbm9ybWFsLmM6NDUxOQorIzogbm9ybWFsLmM6NDUyMgogbXNnaWQgIkUzNTI6IENhbm5vdCBlcmFzZSBmb2xkcyB3aXRoIGN1cnJlbnQgJ2ZvbGRtZXRob2QnIgogbXNnc3RyICIiCiAiRTM1MjogzeXi7ufs7ubt7iDx8uXw5fL8IPHq6+Dk6ugg8SDy5erz+ejsIOft4Pfl7ejl7CDu7/bo6CAnZm9sZG1ldGhvZCciCiAKLSM6IG5vcm1hbC5jOjY3NDAKKyM6IG5vcm1hbC5jOjY3NDMKIG1zZ2lkICJFNjY0OiBjaGFuZ2VsaXN0IGlzIGVtcHR5IgogbXNnc3RyICJFNjY0OiDx7+jx7uog6Ofs5e3l7ejpIO/z8fLu6SIKIAotIzogbm9ybWFsLmM6Njc0MgorIzogbm9ybWFsLmM6Njc0NQogbXNnaWQgIkU2NjI6IEF0IHN0YXJ0IG9mIGNoYW5nZWxpc3QiCiBtc2dzdHIgIkU2NjI6IMIg7eD34OvlIPHv6PHq4CDo5+zl7eXt6OkiCiAKLSM6IG5vcm1hbC5jOjY3NDQKKyM6IG5vcm1hbC5jOjY3NDcKIG1zZ2lkICJFNjYzOiBBdCBlbmQgb2YgY2hhbmdlbGlzdCIKIG1zZ3N0ciAiRTY2MjogwiDq7u325SDx7+jx6uAg6Ofs5e3l7ejpIgogCi0jOiBub3JtYWwuYzo4MDA1CisjOiBub3JtYWwuYzo4MDA5CiBtc2dpZCAiVHlwZSAgOnF1aXQ8RW50ZXI+ICB0byBleGl0IFZpbSIKIG1zZ3N0ciAiwuLl5Ojy5SA6cXVpdDxFbnRlcj4gIOTr/yDi+/Xu5OAg6OcgVmltIgogCkBAIC00NDQyLDQwICs0NDUxLDQwIEBACiBtc2dzdHIgIsjn7OXt5e37IO7y8fLz7/sg4iDx8vDu6uD1ICglbGQpICIKIAogIy4gbXVzdCBkaXNwbGF5IHRoZSBwcm9tcHQKLSM6IG9wcy5jOjE2NzUKKyM6IG9wcy5jOjE2ODgKIG1zZ2lkICJjYW5ub3QgeWFuazsgZGVsZXRlIGFueXdheSIKIG1zZ3N0ciAi8eru7+jw7uLg8vwg7eUg8+Tg6+7x/Cwg8+Tg6+Xt6OUg4vvv7uvt5e3uIgogCi0jOiBvcHMuYzoyMjYxCisjOiBvcHMuYzoyMjc0CiBtc2dpZCAiMSBsaW5lIGNoYW5nZWQiCiBtc2dzdHIgIujn7OXt5e3gIDEg8fLw7urgIgogCi0jOiBvcHMuYzoyMjYzCisjOiBvcHMuYzoyMjc2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVsZCBsaW5lcyBjaGFuZ2VkIgogbXNnc3RyICLo5+zl7eXt7iDx8vDu6jogJWxkIgogCi0jOiBvcHMuYzoyNjQ3CisjOiBvcHMuYzoyNjYwCiAjLCBjLWZvcm1hdAogbXNnaWQgImZyZWVpbmcgJWxkIGxpbmVzIgogbXNnc3RyICLu9+j55e3uIPHy8O7qOiAlbGQiCiAKLSM6IG9wcy5jOjI5MjgKKyM6IG9wcy5jOjI5NDEKIG1zZ2lkICIxIGxpbmUgeWFua2VkIgogbXNnc3RyICLx6u7v6PDu4uDt4CDu5O3gIPHy8O7q4CIKIAotIzogb3BzLmM6MjkzMAorIzogb3BzLmM6Mjk0MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlbGQgbGluZXMgeWFua2VkIgogbXNnc3RyICLx6u7v6PDu4uDt7iDx8vDu6jogJWxkIgogCi0jOiBvcHMuYzozMjE1CisjOiBvcHMuYzozMjI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzNTM6IE5vdGhpbmcgaW4gcmVnaXN0ZXIgJXMiCiBtc2dzdHIgIkUzNTM6IMIg8OXj6PHy8OUgJXMg7ej35ePuIO3l8iIKIAogIy4gSGlnaGxpZ2h0IHRpdGxlCi0jOiBvcHMuYzozNzY2CisjOiBvcHMuYzozNzc5CiBtc2dpZCAiIgogIlxuIgogIi0tLSBSZWdpc3RlcnMgLS0tIgpAQCAtNDQ4MywxMSArNDQ5MiwxMSBAQAogIlxuIgogIi0tLSDQ5ePo8fLw+yAtLS0iCiAKLSM6IG9wcy5jOjUwNzUKKyM6IG9wcy5jOjUwODgKIG1zZ2lkICJJbGxlZ2FsIHJlZ2lzdGVyIG5hbWUiCiBtc2dzdHIgIs3l5O7v8/Hy6Ozu5SDo7P8g8OXj6PHy8OAiCiAKLSM6IG9wcy5jOjUxNjMKKyM6IG9wcy5jOjUxNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtNDQ5NiwzMiArNDUwNSwzMiBAQAogIlxuIgogIiMg0OXj6PHy8Ps6XG4iCiAKLSM6IG9wcy5jOjUyMTMKKyM6IG9wcy5jOjUyMjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTU3NDogVW5rbm93biByZWdpc3RlciB0eXBlICVkIgogbXNnc3RyICJFNTc0OiDN5ejn4uXx8u376SDy6O8g8OXj6PHy8OAgJWQiCiAKLSM6IG9wcy5jOjU2OTgKKyM6IG9wcy5jOjU3MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM1NDogSW52YWxpZCByZWdpc3RlciBuYW1lOiAnJXMnIgogbXNnc3RyICJFMzU0OiDN5eTu7/Px8ujs7uUg6Oz/IPDl4+jx8vDgOiAnJXMnIgogCi0jOiBvcHMuYzo2MDU4CisjOiBvcHMuYzo2MDcxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVsZCBDb2xzOyAiCiBtc2dzdHIgIsru6+7t7uo6ICVsZDsgIgogCi0jOiBvcHMuYzo2MDY1CisjOiBvcHMuYzo2MDc4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlNlbGVjdGVkICVzJWxkIG9mICVsZCBMaW5lczsgJWxkIG9mICVsZCBXb3JkczsgJWxkIG9mICVsZCBCeXRlcyIKIG1zZ3N0ciAiwvvk5evl7e4gJXMlbGQg6OcgJWxkIPHy8O7qOyAlbGQg6OcgJWxkIPHr7uI7ICVsZCDo5yAlbGQg4eDp8iIKIAotIzogb3BzLmM6NjA4MQorIzogb3BzLmM6NjA5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb2wgJXMgb2YgJXM7IExpbmUgJWxkIG9mICVsZDsgV29yZCAlbGQgb2YgJWxkOyBCeXRlICVsZCBvZiAlbGQiCiBtc2dzdHIgIsru6y4gJXMg6OcgJXM7ICDx8vAuICVsZCDo5yAlbGQ7IPHr7uLuICVsZCDo5yAlbGQ7IOHg6fIgJWxkIOjnICVsZCIKIAotIzogb3BzLmM6NjA5MgorIzogb3BzLmM6NjEwNQogIywgYy1mb3JtYXQKIG1zZ2lkICIoKyVsZCBmb3IgQk9NKSIKIG1zZ3N0ciAiKCslbGQg8SDz97jy7uwgQk9NKSIKQEAgLTQ2NDgsNDcgKzQ2NTcsNDcgQEAKICJFNTM3OiDH7eD35e3o5SDu7/bo/yAnY29tbWVudHN0cmluZycg5O7r5u3uIOH78vwg7/Px8u7pIPHy8O7q7ukg6OvoICIKICLx7uTl8Obg8vwgJXMiCiAKLSM6IG9wdGlvbi5jOjU2NzkKKyM6IG9wdGlvbi5jOjU2ODIKIG1zZ2lkICJFNTM4OiBObyBtb3VzZSBzdXBwb3J0IgogbXNnc3RyICJFNTM4OiDM+/j8IO3lIO/u5OTl8Obo4uDl8vH/IgogCi0jOiBvcHRpb24uYzo1OTQ3CisjOiBvcHRpb24uYzo1OTUwCiBtc2dpZCAiRTU0MDogVW5jbG9zZWQgZXhwcmVzc2lvbiBzZXF1ZW5jZSIKIG1zZ3N0ciAiRTU0MDogzeXn4Orw+/Lg/yDv7vHr5eTu4uDy5ev87e7x8vwg4vvw4Obl7ej/IgogCi0jOiBvcHRpb24uYzo1OTUxCisjOiBvcHRpb24uYzo1OTU0CiBtc2dpZCAiRTU0MTogdG9vIG1hbnkgaXRlbXMiCiBtc2dzdHIgIkU1NDE6IPHr6Pjq7uwg7O3u4+4g/evl7OXt8u7iIgogCi0jOiBvcHRpb24uYzo1OTUzCisjOiBvcHRpb24uYzo1OTU2CiBtc2dpZCAiRTU0MjogdW5iYWxhbmNlZCBncm91cHMiCiBtc2dzdHIgIkU1NDI6IO3l8eHg6+Dt8ejw7uLg7e375SDj8PPv7/siCiAKLSM6IG9wdGlvbi5jOjYxOTMKKyM6IG9wdGlvbi5jOjYxOTYKIG1zZ2lkICJFNTkwOiBBIHByZXZpZXcgd2luZG93IGFscmVhZHkgZXhpc3RzIgogbXNnc3RyICJFNTkwOiDO6u3uIO/w5eTv8O7x7O7y8OAg8+blIOXx8vwiCiAKLSM6IG9wdGlvbi5jOjY0NTAKKyM6IG9wdGlvbi5jOjY0NTMKIG1zZ2lkICJXMTc6IEFyYWJpYyByZXF1aXJlcyBVVEYtOCwgZG8gJzpzZXQgZW5jb2Rpbmc9dXRmLTgnIgogbXNnc3RyICIiCiAiVzE3OiDA8ODh8ero6SDy8OXh8+XyIOjx7+7r/Ofu4uDt6P8gVVRGLTgsIOLi5eTo8uUgJzpzZXQgZW5jb2Rpbmc9dXRmLTgnIgogCi0jOiBvcHRpb24uYzo2NzgzCisjOiBvcHRpb24uYzo2Nzg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU1OTM6IE5lZWQgYXQgbGVhc3QgJWQgbGluZXMiCiBtc2dzdHIgIkU1OTM6IM3z5u3uIPXu8v8g4fsgJWQg8fLw7uoiCiAKLSM6IG9wdGlvbi5jOjY3OTMKKyM6IG9wdGlvbi5jOjY3OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTU5NDogTmVlZCBhdCBsZWFzdCAlZCBjb2x1bW5zIgogbXNnc3RyICJFNTk0OiDN8+bt7iD17vL/IOH7ICVkIOru6+7t7uoiCiAKLSM6IG9wdGlvbi5jOjcxMDAKKyM6IG9wdGlvbi5jOjcxMDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM1NTogVW5rbm93biBvcHRpb246ICVzIgogbXNnc3RyICJFMzU1OiDN5ejn4uXx8u3g/yDu7/bo/zogJXMiCiAKLSM6IG9wdGlvbi5jOjcyMjAKKyM6IG9wdGlvbi5jOjcyMjMKIG1zZ2lkICIiCiAiXG4iCiAiLS0tIFRlcm1pbmFsIGNvZGVzIC0tLSIKQEAgLTQ2OTYsNyArNDcwNSw3IEBACiAiXG4iCiAiLS0tINLl8Ozo7eDr/O375SDq7uT7IC0tLSIKIAotIzogb3B0aW9uLmM6NzIyMgorIzogb3B0aW9uLmM6NzIyNQogbXNnaWQgIiIKICJcbiIKICItLS0gR2xvYmFsIG9wdGlvbiB2YWx1ZXMgLS0tIgpAQCAtNDcwNCw3ICs0NzEzLDcgQEAKICJcbiIKICItLS0gw+vu4eDr/O375SDn7eD35e3o/yDu7/bo6SAtLS0iCiAKLSM6IG9wdGlvbi5jOjcyMjQKKyM6IG9wdGlvbi5jOjcyMjcKIG1zZ2lkICIiCiAiXG4iCiAiLS0tIExvY2FsIG9wdGlvbiB2YWx1ZXMgLS0tIgpAQCAtNDcxMiw3ICs0NzIxLDcgQEAKICJcbiIKICItLS0gzOXx8u375SDn7eD35e3o/yDu7/bo6SAtLS0iCiAKLSM6IG9wdGlvbi5jOjcyMjYKKyM6IG9wdGlvbi5jOjcyMjkKIG1zZ2lkICIiCiAiXG4iCiAiLS0tIE9wdGlvbnMgLS0tIgpAQCAtNDcyMCwxNiArNDcyOSwxNiBAQAogIlxuIgogIi0tLSDO7/bo6CAtLS0iCiAKLSM6IG9wdGlvbi5jOjc5MzIKKyM6IG9wdGlvbi5jOjc5MzUKIG1zZ2lkICJFMzU2OiBnZXRfdmFycCBFUlJPUiIKIG1zZ3N0ciAiRTM1NjogztjIwcrAIGdldF92YXJwIgogCi0jOiBvcHRpb24uYzo4OTAzCisjOiBvcHRpb24uYzo4OTA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzNTc6ICdsYW5nbWFwJzogTWF0Y2hpbmcgY2hhcmFjdGVyIG1pc3NpbmcgZm9yICVzIgogbXNnc3RyICJFMzU3OiAnbGFuZ21hcCc6IM3l8iDx7u7y4uXy8fLi8/755ePuIPHo7OLu6+Ag5Ov/ICVzIgogCi0jOiBvcHRpb24uYzo4OTM3CisjOiBvcHRpb24uYzo4OTQwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzNTg6ICdsYW5nbWFwJzogRXh0cmEgY2hhcmFjdGVycyBhZnRlciBzZW1pY29sb246ICVzIgogbXNnc3RyICJFMzU4OiAnbGFuZ21hcCc6IMvo+O3o5SDx6Ozi7uv7IO/u8evlIPLu9+roIPEg5+Dv//Lu6TogJXMiCkBAIC00NzY0LDgxICs0NzczLDgxIEBACiBtc2dpZCAiVmltIGV4aXRpbmcgd2l0aCAlZFxuIgogbXNnc3RyICLP8OXq8OD55e3o5SDw4OHu8vsgVmltIPEg6u7k7uwgJWRcbiIKIAotIzogb3NfYW1pZ2EuYzo5MzcKKyM6IG9zX2FtaWdhLmM6OTQxCiBtc2dpZCAiY2Fubm90IGNoYW5nZSBjb25zb2xlIG1vZGUgPyFcbiIKIG1zZ3N0ciAi7eXi7ufs7ubt7iDx7OXt6PL8IPDl5ujsIOru7fHu6+g/IVxuIgogCi0jOiBvc19hbWlnYS5jOjEwMDMKKyM6IG9zX2FtaWdhLmM6MTAxMgogbXNnaWQgIm1jaF9nZXRfc2hlbGxzaXplOiBub3QgYSBjb25zb2xlPz9cbiIKIG1zZ3N0ciAibWNoX2dldF9zaGVsbHNpemU6IO3lIOIg6u7t8e7r6D8/XG4iCiAKICMuIGlmIFZpbSBvcGVuZWQgYSB3aW5kb3c6IEV4ZWN1dGluZyBhIHNoZWxsIG1heSBjYXVzZSBjcmFzaGVzCi0jOiBvc19hbWlnYS5jOjExNTIKKyM6IG9zX2FtaWdhLmM6MTE2MQogbXNnaWQgIkUzNjA6IENhbm5vdCBleGVjdXRlIHNoZWxsIHdpdGggLWYgb3B0aW9uIgogbXNnc3RyICJFMzYwOiDN5eLu5+zu5u3uIOL77+7r7ejy/CDu4e7r7vfq8yDxIODw4/Ps5e3y7uwgLWYiCiAKLSM6IG9zX2FtaWdhLmM6MTE5MyBvc19hbWlnYS5jOjEyODMKKyM6IG9zX2FtaWdhLmM6MTIwMiBvc19hbWlnYS5jOjEyOTIKIG1zZ2lkICJDYW5ub3QgZXhlY3V0ZSAiCiBtc2dzdHIgIs3l4u7n7O7m7e4g4vvv7uvt6PL8ICIKIAotIzogb3NfYW1pZ2EuYzoxMTk2IG9zX2FtaWdhLmM6MTI5MworIzogb3NfYW1pZ2EuYzoxMjA1IG9zX2FtaWdhLmM6MTMwMgogbXNnaWQgInNoZWxsICIKIG1zZ3N0ciAi7uHu6+736uAgIgogCi0jOiBvc19hbWlnYS5jOjEyMTYgb3NfYW1pZ2EuYzoxMzE4CisjOiBvc19hbWlnYS5jOjEyMjUgb3NfYW1pZ2EuYzoxMzI3CiBtc2dpZCAiIHJldHVybmVkXG4iCiBtc2dzdHIgIiDn4OLl8Pjo6+Ag8ODh7vLzXG4iCiAKLSM6IG9zX2FtaWdhLmM6MTQ1OQorIzogb3NfYW1pZ2EuYzoxNDY4CiBtc2dpZCAiQU5DSE9SX0JVRl9TSVpFIHRvbyBzbWFsbC4iCiBtc2dzdHIgIvHr6Pjq7uwg7ODr4P8g4uXr6Pfo7eAgQU5DSE9SX0JVRl9TSVpFLiIKIAotIzogb3NfYW1pZ2EuYzoxNDYzCisjOiBvc19hbWlnYS5jOjE0NzIKIG1zZ2lkICJJL08gRVJST1IiCiBtc2dzdHIgIs7YyMHKwCDCws7EwC/C28LOxMAiCiAKLSM6IG9zX21zd2luLmM6NTM5CisjOiBvc19tc3dpbi5jOjU0OAogbXNnaWQgIi4uLih0cnVuY2F0ZWQpIgogbXNnc3RyICIuLi4o7uHw5efg7e4pIgogCi0jOiBvc19tc3dpbi5jOjY0MQorIzogb3NfbXN3aW4uYzo2NTAKIG1zZ2lkICInY29sdW1ucycgaXMgbm90IDgwLCBjYW5ub3QgZXhlY3V0ZSBleHRlcm5hbCBjb21tYW5kcyIKIG1zZ3N0ciAix+3g9+Xt6OUg7u/26OggJ2NvbHVtbnMnIO3lIPDg4u3uIDgwLCDi7eX47ejlIO/w7uPw4Ozs+yDt5SDi++/u6+3//vLx/yIKIAotIzogb3NfbXN3aW4uYzoxOTczCisjOiBvc19tc3dpbi5jOjE5ODIKIG1zZ2lkICJFMjM3OiBQcmludGVyIHNlbGVjdGlvbiBmYWlsZWQiCiBtc2dzdHIgIkUzMjc6IM3l8+Tg9+3u5SDn4OLl8Pjl7ejlIOL74e7w4CDv8Ojt8uXw4CIKIAotIzogb3NfbXN3aW4uYzoyMDEzCisjOiBvc19tc3dpbi5jOjIwMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAidG8gJXMgb24gJXMiCiBtc2dzdHIgIuIgJXMg7eAgJXMiCiAKLSM6IG9zX21zd2luLmM6MjAyOAorIzogb3NfbXN3aW4uYzoyMDM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2MTM6IFVua25vd24gcHJpbnRlciBmb250OiAlcyIKIG1zZ3N0ciAiRTYxMzogzeXo5+Ll8fLt++kg+PDo9PIg7/Do7fLl8OA6ICVzIgogCi0jOiBvc19tc3dpbi5jOjIwNzcgb3NfbXN3aW4uYzoyMDg3CisjOiBvc19tc3dpbi5jOjIwODYgb3NfbXN3aW4uYzoyMDk2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyMzg6IFByaW50IGVycm9yOiAlcyIKIG1zZ3N0ciAiRTIzODogzvjo4ergIO/l9+Dy6DogJXMiCiAKLSM6IG9zX21zd2luLmM6MjA4OAorIzogb3NfbXN3aW4uYzoyMDk3CiBtc2dpZCAiVW5rbm93biIKIG1zZ3N0ciAizeXo5+Ll8fLt7iIKIAotIzogb3NfbXN3aW4uYzoyMTE1CisjOiBvc19tc3dpbi5jOjIxMjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiUHJpbnRpbmcgJyVzJyIKIG1zZ3N0ciAiz+X34PL8ICclcyciCiAKLSM6IG9zX21zd2luLmM6MzIwNAorIzogb3NfbXN3aW4uYzozMjEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyNDQ6IElsbGVnYWwgY2hhcnNldCBuYW1lIFwiJXNcIiBpbiBmb250IG5hbWUgXCIlc1wiIgogbXNnc3RyICJFMjQ0OiDN5eTu7/Px8ujs7uUg6Oz/IOru5Ojw7uLq6CBcIiVzXCIg4iDo7OXt6CD48Oj08uAgXCIlc1wiIgogCi0jOiBvc19tc3dpbi5jOjMyMTIKKyM6IG9zX21zd2luLmM6MzIyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjQ1OiBJbGxlZ2FsIGNoYXIgJyVjJyBpbiBmb250IG5hbWUgXCIlc1wiIgogbXNnc3RyICJFMjQ1OiDN5eTu7/Px8ujs++kg8ejs4u7rICclYycg4iDo7OXt6CD48Oj08uAgXCIlc1wiIgpAQCAtNDg3NCwxNSArNDg4MywxNSBAQAogIlxuIgogIlZpbTogzvjo4ergIFhcbiIKIAotIzogb3NfdW5peC5jOjEzMzQKKyM6IG9zX3VuaXguYzoxMzM4CiBtc2dpZCAiVGVzdGluZyB0aGUgWCBkaXNwbGF5IGZhaWxlZCIKIG1zZ3N0ciAiz/Du4uXw6uAg5Ojx7+vl/yBYIOfg4uXw+OXt4CDt5fPk4Pft7iIKIAotIzogb3NfdW5peC5jOjE0NzMKKyM6IG9zX3VuaXguYzoxNDc3CiBtc2dpZCAiT3BlbmluZyB0aGUgWCBkaXNwbGF5IHRpbWVkIG91dCIKIG1zZ3N0ciAizvLq8Pvy6OUg5Ojx7+vl/yBYIO3lIOL77+7r7eXt7iDiIO7y4uXkuO3t7uUg4vDl7P8iCiAKLSM6IG9zX3VuaXguYzozMjI3IG9zX3VuaXguYzozOTA3CisjOiBvc191bml4LmM6MzIzNCBvc191bml4LmM6MzkxNAogbXNnaWQgIiIKICJcbiIKICJDYW5ub3QgZXhlY3V0ZSBzaGVsbCAiCkBAIC00ODkwLDcgKzQ4OTksNyBAQAogIlxuIgogIs3l4u7n7O7m7e4g5+Dv8/Hy6PL8IO7h7uvu9+rzICIKIAotIzogb3NfdW5peC5jOjMyNzUKKyM6IG9zX3VuaXguYzozMjgyCiBtc2dpZCAiIgogIlxuIgogIkNhbm5vdCBleGVjdXRlIHNoZWxsIHNoXG4iCkBAIC00ODk4LDcgKzQ5MDcsNyBAQAogIlxuIgogIs3l4u7n7O7m7e4g5+Dv8/Hy6PL8IO7h7uvu9+rzIHNoXG4iCiAKLSM6IG9zX3VuaXguYzozMjc5IG9zX3VuaXguYzozOTEzCisjOiBvc191bml4LmM6MzI4NiBvc191bml4LmM6MzkyMAogbXNnaWQgIiIKICJcbiIKICJzaGVsbCByZXR1cm5lZCAiCkBAIC00OTA2LDcgKzQ5MTUsNyBAQAogIlxuIgogIs7h7uvu9+rgIOfg4uXw+Ojr4CDw4OHu8vMgIgogCi0jOiBvc191bml4LmM6MzQxNAorIzogb3NfdW5peC5jOjM0MjEKIG1zZ2lkICIiCiAiXG4iCiAiQ2Fubm90IGNyZWF0ZSBwaXBlc1xuIgpAQCAtNDkxNCw3ICs0OTIzLDcgQEAKICJcbiIKICLN5eLu5+zu5u3uIPHu5+Tg8vwg8vDz4ftcbiIKIAotIzogb3NfdW5peC5jOjM0MjkKKyM6IG9zX3VuaXguYzozNDM2CiBtc2dpZCAiIgogIlxuIgogIkNhbm5vdCBmb3JrXG4iCkBAIC00OTIyLDcgKzQ5MzEsNyBAQAogIlxuIgogIs3l4u7n7O7m7e4g4vvv7uvt6PL8IGZvcmsoKVxuIgogCi0jOiBvc191bml4LmM6MzkyMAorIzogb3NfdW5peC5jOjM5MjcKIG1zZ2lkICIiCiAiXG4iCiAiQ29tbWFuZCB0ZXJtaW5hdGVkXG4iCkBAIC00OTMwLDI3ICs0OTM5LDI3IEBACiAiXG4iCiAiwvvv7uvt5e3o5SDq7uzg7eT7IO/w5fDi4O3uXG4iCiAKLSM6IG9zX3VuaXguYzo0MTg0IG9zX3VuaXguYzo0MzA5IG9zX3VuaXguYzo1OTc1CisjOiBvc191bml4LmM6NDE5MSBvc191bml4LmM6NDMxNiBvc191bml4LmM6NTk4MgogbXNnaWQgIlhTTVAgbG9zdCBJQ0UgY29ubmVjdGlvbiIKIG1zZ3N0ciAiWFNNUCDz8uXw/+3uIPHu5eTo7eXt6OUgSUNFIgogCi0jOiBvc191bml4LmM6NTU1OAorIzogb3NfdW5peC5jOjU1NjUKIG1zZ2lkICJPcGVuaW5nIHRoZSBYIGRpc3BsYXkgZmFpbGVkIgogbXNnc3RyICLN5fPk4Pft7uUg7vLq8Pvy6OUg5Ojx7+vl/yBYIgogCi0jOiBvc191bml4LmM6NTg4MAorIzogb3NfdW5peC5jOjU4ODcKIG1zZ2lkICJYU01QIGhhbmRsaW5nIHNhdmUteW91cnNlbGYgcmVxdWVzdCIKIG1zZ3N0ciAiWFNNUCDu4fDg4eDy++Lg5fIg5+Dv8O7xIPHg7O7x7vXw4O3l7ej/IgogCi0jOiBvc191bml4LmM6NTk5OQorIzogb3NfdW5peC5jOjYwMDYKIG1zZ2lkICJYU01QIG9wZW5pbmcgY29ubmVjdGlvbiIKIG1zZ3N0ciAiWFNNUCDu8urw++Lg5fIg8e7l5Ojt5e3o5SIKIAotIzogb3NfdW5peC5jOjYwMTgKKyM6IG9zX3VuaXguYzo2MDI1CiBtc2dpZCAiWFNNUCBJQ0UgY29ubmVjdGlvbiB3YXRjaCBmYWlsZWQiCiBtc2dzdHIgIlhTTVAg7+7y5fD/7e4g8evl5uXt6OUg5+Ag8e7l5Ojt5e3o5ewgSUNFIgogCi0jOiBvc191bml4LmM6NjAzOAorIzogb3NfdW5peC5jOjYwNDUKICMsIGMtZm9ybWF0CiBtc2dpZCAiWFNNUCBTbWNPcGVuQ29ubmVjdGlvbiBmYWlsZWQ6ICVzIgogbXNnc3RyICJYU01QIO3l8+Tg9+3uIOL77+7r7eXt7iBTbWNPcGVuQ29ubmVjdGlvbjogJXMiCkBAIC00OTc1LDMzICs0OTg0LDMzIEBACiBtc2dpZCAiQ291bGQgbm90IGZpeCB1cCBmdW5jdGlvbiBwb2ludGVycyB0byB0aGUgRExMISIKIG1zZ3N0ciAizeXi7ufs7ubt7iDo8e/w4OLo8vwg8+rg5+Dy5evoIPTz7er26Okg5Ov/IERMTCEiCiAKLSM6IG9zX3dpbjE2LmM6MzQyIG9zX3dpbjMyLmM6MzIxNgorIzogb3Nfd2luMTYuYzozNDIgb3Nfd2luMzIuYzozMjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgInNoZWxsIHJldHVybmVkICVkIgogbXNnc3RyICLn4OLl8Pjl7ejlIPDg4e7y+yDu4e7r7vfq6CDxIOru5O7sICVkIgogCi0jOiBvc193aW4zMi5jOjI2NzQKKyM6IG9zX3dpbjMyLmM6MjcwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJWaW06IENhdWdodCAlcyBldmVudFxuIgogbXNnc3RyICJWaW06IM/l8OX14uD35e3uIPHu4fvy6OUgJXNcbiIKIAotIzogb3Nfd2luMzIuYzoyNjc2CisjOiBvc193aW4zMi5jOjI3MDgKIG1zZ2lkICJjbG9zZSIKIG1zZ3N0ciAi5+Dq8Pvy6OUiCiAKLSM6IG9zX3dpbjMyLmM6MjY3OAorIzogb3Nfd2luMzIuYzoyNzEwCiBtc2dpZCAibG9nb2ZmIgogbXNnc3RyICLu8urr/vfl7ejlIgogCi0jOiBvc193aW4zMi5jOjI2NzkKKyM6IG9zX3dpbjMyLmM6MjcxMQogbXNnaWQgInNodXRkb3duIgogbXNnc3RyICLn4OLl8Pjl7ejlIgogCi0jOiBvc193aW4zMi5jOjMxNjkKKyM6IG9zX3dpbjMyLmM6MzIwMQogbXNnaWQgIkUzNzE6IENvbW1hbmQgbm90IGZvdW5kIgogbXNnc3RyICJFMzcxOiDK7uzg7eTgIO3lIO3g6eTl7eAiCiAKLSM6IG9zX3dpbjMyLmM6MzE4MgorIzogb3Nfd2luMzIuYzozMjE0CiBtc2dpZCAiIgogIlZJTVJVTi5FWEUgbm90IGZvdW5kIGluIHlvdXIgJFBBVEguXG4iCiAiRXh0ZXJuYWwgY29tbWFuZHMgd2lsbCBub3QgcGF1c2UgYWZ0ZXIgY29tcGxldGlvbi5cbiIKQEAgLTUwMTEsNyArNTAyMCw3IEBACiAiwu3l+O3o5SDq7uzg7eT7IO3lIOHz5PPyIO7x8uDt4OLr6OLg8vzx/yDv7vHr5SDi++/u6+3l7ej/LlxuIgogIsTu7+7r7ejy5ev87eD/IOjt9O7w7OD26P8g4iA6aGVscCB3aW4zMi12aW1ydW4iCiAKLSM6IG9zX3dpbjMyLmM6MzE4NQorIzogb3Nfd2luMzIuYzozMjE3CiBtc2dpZCAiVmltIFdhcm5pbmciCiBtc2dzdHIgIs/w5eTz7/Dl5uTl7ejlIFZpbSIKIApAQCAtNTIxOSw3NSArNTIyOCw3NSBAQAogbXNnaWQgIistLSUzbGQgbGluZXMgZm9sZGVkICIKIG1zZ3N0ciAiKy0tJTNsZCDx8vDu6iDiIPHq6+Dk6uUiCiAKLSM6IHNjcmVlbi5jOjc5OTYKKyM6IHNjcmVlbi5jOjgwMDAKIG1zZ2lkICIgVlJFUExBQ0UiCiBtc2dzdHIgIiDCyNDS08DL3M3A3yDHwMzFzcAiCiAKLSM6IHNjcmVlbi5jOjgwMDAKKyM6IHNjcmVlbi5jOjgwMDQKIG1zZ2lkICIgUkVQTEFDRSIKIG1zZ3N0ciAiIMfAzMXNwCIKIAotIzogc2NyZWVuLmM6ODAwNQorIzogc2NyZWVuLmM6ODAwOQogbXNnaWQgIiBSRVZFUlNFIgogbXNnc3RyICIgzsHQwNLNwN8iCiAKLSM6IHNjcmVlbi5jOjgwMDcKKyM6IHNjcmVlbi5jOjgwMTEKIG1zZ2lkICIgSU5TRVJUIgogbXNnc3RyICIgwtHSwMLKwCIKIAotIzogc2NyZWVuLmM6ODAxMAorIzogc2NyZWVuLmM6ODAxNAogbXNnaWQgIiAoaW5zZXJ0KSIKIG1zZ3N0ciAiICji8fLg4urgKSIKIAotIzogc2NyZWVuLmM6ODAxMgorIzogc2NyZWVuLmM6ODAxNgogbXNnaWQgIiAocmVwbGFjZSkiCiBtc2dzdHIgIiAo5+Ds5e3gKSIKIAotIzogc2NyZWVuLmM6ODAxNAorIzogc2NyZWVuLmM6ODAxOAogbXNnaWQgIiAodnJlcGxhY2UpIgogbXNnc3RyICIgKOLo8PLz4Ov87eD/IOfg7OXt4CkiCiAKLSM6IHNjcmVlbi5jOjgwMTcKKyM6IHNjcmVlbi5jOjgwMjEKIG1zZ2lkICIgSGVicmV3IgogbXNnc3RyICIgyOLw6PIiCiAKLSM6IHNjcmVlbi5jOjgwMjgKKyM6IHNjcmVlbi5jOjgwMzIKIG1zZ2lkICIgQXJhYmljIgogbXNnc3RyICIgwPDg4fHq6OkiCiAKLSM6IHNjcmVlbi5jOjgwMzEKKyM6IHNjcmVlbi5jOjgwMzUKIG1zZ2lkICIgKGxhbmcpIgogbXNnc3RyICIgKP/n++opIgogCi0jOiBzY3JlZW4uYzo4MDM1CisjOiBzY3JlZW4uYzo4MDM5CiBtc2dpZCAiIChwYXN0ZSkiCiBtc2dzdHIgIiAo4urr5enq4CkiCiAKLSM6IHNjcmVlbi5jOjgwNDgKKyM6IHNjcmVlbi5jOjgwNTIKIG1zZ2lkICIgVklTVUFMIgogbXNnc3RyICIgwsjH08DL3M3bySDQxcbIzCIKIAotIzogc2NyZWVuLmM6ODA0OQorIzogc2NyZWVuLmM6ODA1MwogbXNnaWQgIiBWSVNVQUwgTElORSIKIG1zZ3N0ciAiIMLIx9PAy9zNwN8g0dLQzsrAIgogCi0jOiBzY3JlZW4uYzo4MDUwCisjOiBzY3JlZW4uYzo4MDU0CiBtc2dpZCAiIFZJU1VBTCBCTE9DSyIKIG1zZ3N0ciAiIMLIx9PAy9zN28kgwcvOyiIKIAotIzogc2NyZWVuLmM6ODA1MQorIzogc2NyZWVuLmM6ODA1NQogbXNnaWQgIiBTRUxFQ1QiCiBtc2dzdHIgIiDC28TFy8XNyMUiCiAKLSM6IHNjcmVlbi5jOjgwNTIKKyM6IHNjcmVlbi5jOjgwNTYKIG1zZ2lkICIgU0VMRUNUIExJTkUiCiBtc2dzdHIgIiDC28TFy8XNyMUg0dLQzsrIIgogCi0jOiBzY3JlZW4uYzo4MDUzCisjOiBzY3JlZW4uYzo4MDU3CiBtc2dpZCAiIFNFTEVDVCBCTE9DSyIKIG1zZ3N0ciAiIMLbxMXLxc3IxSDBy87KwCIKIAotIzogc2NyZWVuLmM6ODA2OCBzY3JlZW4uYzo4MTMxCisjOiBzY3JlZW4uYzo4MDcyIHNjcmVlbi5jOjgxMzUKIG1zZ2lkICJyZWNvcmRpbmciCiBtc2dzdHIgIufg7+jx/CIKIApAQCAtNTMxOCw1MyArNTMyNyw1MyBAQAogbXNnaWQgIkUzODY6IEV4cGVjdGVkICc/JyBvciAnLycgIGFmdGVyICc7JyIKIG1zZ3N0ciAiRTM4Njogz+7x6+UgJzsnIO7m6OTg5fLx/yDi4u7kICc/JyDo6+ggJy8nIgogCi0jOiBzZWFyY2guYzozNzU5CisjOiBzZWFyY2guYzozNzY4CiBtc2dpZCAiIChpbmNsdWRlcyBwcmV2aW91c2x5IGxpc3RlZCBtYXRjaCkiCiBtc2dzdHIgIiAo4urr/vfg5fIg8ODt7eXlIO/u6uDn4O3t++Ug8e7u8uLl8vHy4uj/KSIKIAogIy4gY3Vyc29yIGF0IHN0YXR1cyBsaW5lCi0jOiBzZWFyY2guYzozNzc5CisjOiBzZWFyY2guYzozNzg4CiBtc2dpZCAiLS0tIEluY2x1ZGVkIGZpbGVzICIKIG1zZ3N0ciAiLS0tIMLq6/73uO3t++Ug9ODp6/sgIgogCi0jOiBzZWFyY2guYzozNzgxCisjOiBzZWFyY2guYzozNzkwCiBtc2dpZCAibm90IGZvdW5kICIKIG1zZ3N0ciAi7eUg7eDp5OXt7iAiCiAKLSM6IHNlYXJjaC5jOjM3ODIKKyM6IHNlYXJjaC5jOjM3OTEKIG1zZ2lkICJpbiBwYXRoIC0tLVxuIgogbXNnc3RyICLv7iDv8/LoIC0tLVxuIgogCi0jOiBzZWFyY2guYzozODM5CisjOiBzZWFyY2guYzozODQ4CiBtc2dpZCAiICAoQWxyZWFkeSBsaXN0ZWQpIgogbXNnc3RyICIgKNPm5SDv7urg5+Dt7ikiCiAKLSM6IHNlYXJjaC5jOjM4NDEKKyM6IHNlYXJjaC5jOjM4NTAKIG1zZ2lkICIgIE5PVCBGT1VORCIKIG1zZ3N0ciAiIM3FIM3AycTFzc4iCiAKLSM6IHNlYXJjaC5jOjM4OTMKKyM6IHNlYXJjaC5jOjM5MDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiU2Nhbm5pbmcgaW5jbHVkZWQgZmlsZTogJXMiCiBtc2dzdHIgIs/w7vHs7vLwIOLq6/73uO3t+/Ug9ODp6+7iOiAlcyIKIAotIzogc2VhcmNoLmM6NDExMQorIzogc2VhcmNoLmM6NDEyMAogbXNnaWQgIkUzODc6IE1hdGNoIGlzIG9uIGN1cnJlbnQgbGluZSIKIG1zZ3N0ciAiRTM4Nzog0e7u8uLl8vHy4ujlIOIg8uXq8/nl6SDx8vDu6uUiCiAKLSM6IHNlYXJjaC5jOjQyNTQKKyM6IHNlYXJjaC5jOjQyNjMKIG1zZ2lkICJBbGwgaW5jbHVkZWQgZmlsZXMgd2VyZSBmb3VuZCIKIG1zZ3N0ciAizeDp5OXt+yDi8eUg4urr/ve47e375SD04Onr+yIKIAotIzogc2VhcmNoLmM6NDI1NgorIzogc2VhcmNoLmM6NDI2NQogbXNnaWQgIk5vIGluY2x1ZGVkIGZpbGVzIgogbXNnc3RyICLC6uv+97jt7fv1IPTg6evu4iDt5fIiCiAKLSM6IHNlYXJjaC5jOjQyNzIKKyM6IHNlYXJjaC5jOjQyODEKIG1zZ2lkICJFMzg4OiBDb3VsZG4ndCBmaW5kIGRlZmluaXRpb24iCiBtc2dzdHIgIkUzODg6IM7v8OXk5evl7ejlIO3lIO3g6eTl7e4iCiAKLSM6IHNlYXJjaC5jOjQyNzQKKyM6IHNlYXJjaC5jOjQyODMKIG1zZ2lkICJFMzg5OiBDb3VsZG4ndCBmaW5kIHBhdHRlcm4iCiBtc2dzdHIgIkUzODk6INjg4evu7SDt5SDt4Onk5e0iCiAKQEAgLTU3ODksNyArNTc5OCw3IEBACiBtc2dzdHIgIkU0NDA6IO/u8uXw/+3gIPHy8O7q4CDu8uzl7fsiCiAKICMuIE9ubHkgTVMgVkMgNC4xIGFuZCBlYXJsaWVyIGNhbiBkbyBXaW4zMnMKLSM6IHZlcnNpb24uYzo3MjEKKyM6IHZlcnNpb24uYzo3MDcKIG1zZ2lkICIiCiAiXG4iCiAiTVMtV2luZG93cyAxNi8zMiBiaXQgR1VJIHZlcnNpb24iCkBAIC01Nzk3LDcgKzU4MDYsNyBAQAogIlxuIgogIsLl8PHo/yDxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIOTr/yBNUy1XaW5kb3dzIDE2LzMyIOHo8iIKIAotIzogdmVyc2lvbi5jOjcyMworIzogdmVyc2lvbi5jOjcwOQogbXNnaWQgIiIKICJcbiIKICJNUy1XaW5kb3dzIDMyIGJpdCBHVUkgdmVyc2lvbiIKQEAgLTU4MDUsMTUgKzU4MTQsMTUgQEAKICJcbiIKICLC5fDx6P8g8SDj8OD06Pfl8ero7CDo7fLl8PTl6fHu7CDk6/8gTVMtV2luZG93cyAzMiDh6PIiCiAKLSM6IHZlcnNpb24uYzo3MjYKKyM6IHZlcnNpb24uYzo3MTIKIG1zZ2lkICIgaW4gV2luMzJzIG1vZGUiCiBtc2dzdHIgIiDiIPDl5ujs5SBXaW4zMnMiCiAKLSM6IHZlcnNpb24uYzo3MjgKKyM6IHZlcnNpb24uYzo3MTQKIG1zZ2lkICIgd2l0aCBPTEUgc3VwcG9ydCIKIG1zZ3N0ciAiIPEg7+7k5OXw5uru6SBPTEUiCiAKLSM6IHZlcnNpb24uYzo3MzEKKyM6IHZlcnNpb24uYzo3MTcKIG1zZ2lkICIiCiAiXG4iCiAiTVMtV2luZG93cyAzMiBiaXQgY29uc29sZSB2ZXJzaW9uIgpAQCAtNTgyMSw3ICs1ODMwLDcgQEAKICJcbiIKICLK7u3x7uv87eD/IOLl8PHo/yDk6/8gTVMtV2luZG93cyAzMiDh6PIiCiAKLSM6IHZlcnNpb24uYzo3MzUKKyM6IHZlcnNpb24uYzo3MjEKIG1zZ2lkICIiCiAiXG4iCiAiTVMtV2luZG93cyAxNiBiaXQgdmVyc2lvbiIKQEAgLTU4MjksNyArNTgzOCw3IEBACiAiXG4iCiAiwuXw8ej/IOTr/yBNUy1XaW5kb3dzIDE2IOHo8iIKIAotIzogdmVyc2lvbi5jOjczOQorIzogdmVyc2lvbi5jOjcyNQogbXNnaWQgIiIKICJcbiIKICIzMiBiaXQgTVMtRE9TIHZlcnNpb24iCkBAIC01ODM3LDcgKzU4NDYsNyBAQAogIlxuIgogIsLl8PHo/yDk6/8gTVMtRE9TIDMyIOHo8iIKIAotIzogdmVyc2lvbi5jOjc0MQorIzogdmVyc2lvbi5jOjcyNwogbXNnaWQgIiIKICJcbiIKICIxNiBiaXQgTVMtRE9TIHZlcnNpb24iCkBAIC01ODQ1LDcgKzU4NTQsNyBAQAogIlxuIgogIsLl8PHo/yDk6/8gTVMtRE9TIDE2IOHo8iIKIAotIzogdmVyc2lvbi5jOjc0NworIzogdmVyc2lvbi5jOjczMwogbXNnaWQgIiIKICJcbiIKICJNYWNPUyBYICh1bml4KSB2ZXJzaW9uIgpAQCAtNTg1Myw3ICs1ODYyLDcgQEAKICJcbiIKICLC5fDx6P8g5Ov/IE1hY09TIFggKHVuaXgpIgogCi0jOiB2ZXJzaW9uLmM6NzQ5CisjOiB2ZXJzaW9uLmM6NzM1CiBtc2dpZCAiIgogIlxuIgogIk1hY09TIFggdmVyc2lvbiIKQEAgLTU4NjEsNyArNTg3MCw3IEBACiAiXG4iCiAiwuXw8ej/IOTr/yBNYWNPUyBYIgogCi0jOiB2ZXJzaW9uLmM6NzUyCisjOiB2ZXJzaW9uLmM6NzM4CiBtc2dpZCAiIgogIlxuIgogIk1hY09TIHZlcnNpb24iCkBAIC01ODY5LDcgKzU4NzgsNyBAQAogIlxuIgogIsLl8PHo/yDk6/8gTWFjT1MiCiAKLSM6IHZlcnNpb24uYzo3NTcKKyM6IHZlcnNpb24uYzo3NDMKIG1zZ2lkICIiCiAiXG4iCiAiUklTQyBPUyB2ZXJzaW9uIgpAQCAtNTg3Nyw3ICs1ODg2LDcgQEAKICJcbiIKICLC5fDx6P8g5Ov/IFJJU0MgT1MiCiAKLSM6IHZlcnNpb24uYzo3NjcKKyM6IHZlcnNpb24uYzo3NTMKIG1zZ2lkICIiCiAiXG4iCiAiSW5jbHVkZWQgcGF0Y2hlczogIgpAQCAtNTg4NSwxMSArNTg5NCwxMSBAQAogIlxuIgogIsfg7+vg8uroOiAiCiAKLSM6IHZlcnNpb24uYzo3OTMgdmVyc2lvbi5jOjExNjEKKyM6IHZlcnNpb24uYzo3NzkgdmVyc2lvbi5jOjExNDcKIG1zZ2lkICJNb2RpZmllZCBieSAiCiBtc2dzdHIgItEg6Ofs5e3l7ej/7OgsIOLt5fG47e377OggIgogCi0jOiB2ZXJzaW9uLmM6ODAwCisjOiB2ZXJzaW9uLmM6Nzg2CiBtc2dpZCAiIgogIlxuIgogIkNvbXBpbGVkICIKQEAgLTU4OTcsMTEgKzU5MDYsMTEgQEAKICJcbiIKICLR6u7s7+jr6PDu4uDtICIKIAotIzogdmVyc2lvbi5jOjgwMworIzogdmVyc2lvbi5jOjc4OQogbXNnaWQgImJ5ICIKIG1zZ3N0ciAiICIKIAotIzogdmVyc2lvbi5jOjgxNQorIzogdmVyc2lvbi5jOjgwMQogbXNnaWQgIiIKICJcbiIKICJIdWdlIHZlcnNpb24gIgpAQCAtNTkwOSw3ICs1OTE4LDcgQEAKICJcbiIKICLO4/Du7O3g/yDi5fDx6P8gIgogCi0jOiB2ZXJzaW9uLmM6ODE4CisjOiB2ZXJzaW9uLmM6ODA0CiBtc2dpZCAiIgogIlxuIgogIkJpZyB2ZXJzaW9uICIKQEAgLTU5MTcsNyArNTkyNiw3IEBACiAiXG4iCiAiwe7r/Pjg/yDi5fDx6P8gIgogCi0jOiB2ZXJzaW9uLmM6ODIxCisjOiB2ZXJzaW9uLmM6ODA3CiBtc2dpZCAiIgogIlxuIgogIk5vcm1hbCB2ZXJzaW9uICIKQEAgLTU5MjUsNyArNTkzNCw3IEBACiAiXG4iCiAizuH79+3g/yDi5fDx6P8gIgogCi0jOiB2ZXJzaW9uLmM6ODI0CisjOiB2ZXJzaW9uLmM6ODEwCiBtc2dpZCAiIgogIlxuIgogIlNtYWxsIHZlcnNpb24gIgpAQCAtNTkzMyw3ICs1OTQyLDcgQEAKICJcbiIKICLM4Ovg/yDi5fDx6P8gIgogCi0jOiB2ZXJzaW9uLmM6ODI2CisjOiB2ZXJzaW9uLmM6ODEyCiBtc2dpZCAiIgogIlxuIgogIlRpbnkgdmVyc2lvbiAiCkBAIC01OTQxLDIzMSArNTk1MCwyMzEgQEAKICJcbiIKICLC5fDx6P8gXCLK8O714FwiICIKIAotIzogdmVyc2lvbi5jOjgzMgorIzogdmVyc2lvbi5jOjgxOAogbXNnaWQgIndpdGhvdXQgR1VJLiIKIG1zZ3N0ciAi4eXnIOPw4PTo9+Xx6u7j7iDo7fLl8PTl6fHgLiIKIAotIzogdmVyc2lvbi5jOjgzNworIzogdmVyc2lvbi5jOjgyMwogbXNnaWQgIndpdGggR1RLMi1HTk9NRSBHVUkuIgogbXNnc3RyICLxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIEdUSzItR05PTUUuIgogCi0jOiB2ZXJzaW9uLmM6ODM5CisjOiB2ZXJzaW9uLmM6ODI1CiBtc2dpZCAid2l0aCBHVEstR05PTUUgR1VJLiIKIG1zZ3N0ciAi8SDj8OD06Pfl8ero7CDo7fLl8PTl6fHu7CBHVEstR05PTUUuIgogCi0jOiB2ZXJzaW9uLmM6ODQzCisjOiB2ZXJzaW9uLmM6ODI5CiBtc2dpZCAid2l0aCBHVEsyIEdVSS4iCiBtc2dzdHIgIvEg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwgR1RLMi4iCiAKLSM6IHZlcnNpb24uYzo4NDUKKyM6IHZlcnNpb24uYzo4MzEKIG1zZ2lkICJ3aXRoIEdUSyBHVUkuIgogbXNnc3RyICLxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIEdUSy4iCiAKLSM6IHZlcnNpb24uYzo4NTAKKyM6IHZlcnNpb24uYzo4MzYKIG1zZ2lkICJ3aXRoIFgxMS1Nb3RpZiBHVUkuIgogbXNnc3RyICLxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIFgxMS1Nb3RpZi4iCiAKLSM6IHZlcnNpb24uYzo4NTQKKyM6IHZlcnNpb24uYzo4NDAKIG1zZ2lkICJ3aXRoIFgxMS1uZVh0YXcgR1VJLiIKIG1zZ3N0ciAi8SDj8OD06Pfl8ero7CDo7fLl8PTl6fHu7CBYMTEtbmVYdGF3LiIKIAotIzogdmVyc2lvbi5jOjg1NgorIzogdmVyc2lvbi5jOjg0MgogbXNnaWQgIndpdGggWDExLUF0aGVuYSBHVUkuIgogbXNnc3RyICLxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIFgxMS1BdGhlbmEuIgogCi0jOiB2ZXJzaW9uLmM6ODYwCisjOiB2ZXJzaW9uLmM6ODQ2CiBtc2dpZCAid2l0aCBCZU9TIEdVSS4iCiBtc2dzdHIgIvEg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwgQmVPUy4iCiAKLSM6IHZlcnNpb24uYzo4NjMKKyM6IHZlcnNpb24uYzo4NDkKIG1zZ2lkICJ3aXRoIFBob3RvbiBHVUkuIgogbXNnc3RyICLxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIFBob3Rvbi4iCiAKLSM6IHZlcnNpb24uYzo4NjYKKyM6IHZlcnNpb24uYzo4NTIKIG1zZ2lkICJ3aXRoIEdVSS4iCiBtc2dzdHIgIvEg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwuIgogCi0jOiB2ZXJzaW9uLmM6ODY5CisjOiB2ZXJzaW9uLmM6ODU1CiBtc2dpZCAid2l0aCBDYXJib24gR1VJLiIKIG1zZ3N0ciAi8SDj8OD06Pfl8ero7CDo7fLl8PTl6fHu7CBDYXJib24uIgogCi0jOiB2ZXJzaW9uLmM6ODcyCisjOiB2ZXJzaW9uLmM6ODU4CiBtc2dpZCAid2l0aCBDb2NvYSBHVUkuIgogbXNnc3RyICLxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIENvY29hLiIKIAotIzogdmVyc2lvbi5jOjg3NQorIzogdmVyc2lvbi5jOjg2MQogbXNnaWQgIndpdGggKGNsYXNzaWMpIEdVSS4iCiBtc2dzdHIgIvEg6uvg8fHo9+Xx6ujsIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sLiIKIAotIzogdmVyc2lvbi5jOjg4NgorIzogdmVyc2lvbi5jOjg3MgogbXNnaWQgIiAgRmVhdHVyZXMgaW5jbHVkZWQgKCspIG9yIG5vdCAoLSk6XG4iCiBtc2dzdHIgIiAgwurr/ve47e375SAoKykg6CDu8urr/ve47e375SAoLSkg7vHu4eXt7e7x8ug6XG4iCiAKLSM6IHZlcnNpb24uYzo4OTgKKyM6IHZlcnNpb24uYzo4ODQKIG1zZ2lkICIgICBzeXN0ZW0gdmltcmMgZmlsZTogXCIiCiBtc2dzdHIgIiAgICAgICAgICAgIO7h+eXx6PHy5ezt++kg9ODp6yB2aW1yYzogXCIiCiAKLSM6IHZlcnNpb24uYzo5MDMKKyM6IHZlcnNpb24uYzo4ODkKIG1zZ2lkICIgICAgIHVzZXIgdmltcmMgZmlsZTogXCIiCiBtc2dzdHIgIiAgICAgICAgIO/u6/zn7uLg8uXr/PHq6Okg9ODp6yB2aW1yYzogXCIiCiAKLSM6IHZlcnNpb24uYzo5MDgKKyM6IHZlcnNpb24uYzo4OTQKIG1zZ2lkICIgMm5kIHVzZXIgdmltcmMgZmlsZTogXCIiCiBtc2dzdHIgIiAg4vLu8O7pIO/u6/zn7uLg8uXr/PHq6Okg9ODp6yB2aW1yYzogXCIiCiAKLSM6IHZlcnNpb24uYzo5MTMKKyM6IHZlcnNpb24uYzo4OTkKIG1zZ2lkICIgM3JkIHVzZXIgdmltcmMgZmlsZTogXCIiCiBtc2dzdHIgIiAg8vDl8ujpIO/u6/zn7uLg8uXr/PHq6Okg9ODp6yB2aW1yYzogXCIiCiAKLSM6IHZlcnNpb24uYzo5MTgKKyM6IHZlcnNpb24uYzo5MDQKIG1zZ2lkICIgICAgICB1c2VyIGV4cmMgZmlsZTogXCIiCiBtc2dzdHIgIiAgICAgICAgICDv7uv85+7i4PLl6/zx6ujpIPTg6esgZXhyYzogXCIiCiAKLSM6IHZlcnNpb24uYzo5MjMKKyM6IHZlcnNpb24uYzo5MDkKIG1zZ2lkICIgIDJuZCB1c2VyIGV4cmMgZmlsZTogXCIiCiBtc2dzdHIgIiAgIOLy7vDu6SDv7uv85+7i4PLl6/zx6ujpIPTg6esgZXhyYzogXCIiCiAKLSM6IHZlcnNpb24uYzo5MjkKKyM6IHZlcnNpb24uYzo5MTUKIG1zZ2lkICIgIHN5c3RlbSBndmltcmMgZmlsZTogXCIiCiBtc2dzdHIgIiAgICAgICAgICAg7uH55fHo8fLl7O376SD04OnrIGd2aW1yYzogXCIiCiAKLSM6IHZlcnNpb24uYzo5MzMKKyM6IHZlcnNpb24uYzo5MTkKIG1zZ2lkICIgICAgdXNlciBndmltcmMgZmlsZTogXCIiCiBtc2dzdHIgIiAgICAgICAg7+7r/Ofu4uDy5ev88ero6SD04OnrIGd2aW1yYzogXCIiCiAKLSM6IHZlcnNpb24uYzo5MzcKKyM6IHZlcnNpb24uYzo5MjMKIG1zZ2lkICIybmQgdXNlciBndmltcmMgZmlsZTogXCIiCiBtc2dzdHIgIiDi8u7w7ukg7+7r/Ofu4uDy5ev88ero6SD04OnrIGd2aW1yYzogXCIiCiAKLSM6IHZlcnNpb24uYzo5NDIKKyM6IHZlcnNpb24uYzo5MjgKIG1zZ2lkICIzcmQgdXNlciBndmltcmMgZmlsZTogXCIiCiBtc2dzdHIgIiDy8OXy6Okg7+7r/Ofu4uDy5ev88ero6SD04OnrIGd2aW1yYzogXCIiCiAKLSM6IHZlcnNpb24uYzo5NDkKKyM6IHZlcnNpb24uYzo5MzUKIG1zZ2lkICIgICAgc3lzdGVtIG1lbnUgZmlsZTogXCIiCiBtc2dzdHIgIiAgICAgICAgICAgICDu4fnl8ejx8uXs7fvpIPTg6esg7OXt/jogXCIiCiAKLSM6IHZlcnNpb24uYzo5NTcKKyM6IHZlcnNpb24uYzo5NDMKIG1zZ2lkICIgIGZhbGwtYmFjayBmb3IgJFZJTTogXCIiCiBtc2dzdHIgIiAgICAgICAgICDn7eD35e3o5SAkVklNIO/uIPPs7uv34O3o/jogXCIiCiAKLSM6IHZlcnNpb24uYzo5NjMKKyM6IHZlcnNpb24uYzo5NDkKIG1zZ2lkICIgZi1iIGZvciAkVklNUlVOVElNRTogXCIiCiBtc2dzdHIgIiAgIOft4Pfl7ejlICRWSU1SVU5USU1FIO/uIPPs7uv34O3o/jogXCIiCiAKLSM6IHZlcnNpb24uYzo5NjcKKyM6IHZlcnNpb24uYzo5NTMKIG1zZ2lkICJDb21waWxhdGlvbjogIgogbXNnc3RyICLP4PDg7OXy8Psg6u7s7+jr//bo6DogIgogCi0jOiB2ZXJzaW9uLmM6OTczCisjOiB2ZXJzaW9uLmM6OTU5CiBtc2dpZCAiQ29tcGlsZXI6ICIKIG1zZ3N0ciAiyu7s7+jr//Lu8DogIgogCi0jOiB2ZXJzaW9uLmM6OTc4CisjOiB2ZXJzaW9uLmM6OTY0CiBtc2dpZCAiTGlua2luZzogIgogbXNnc3RyICLR4e7w6uA6ICIKIAotIzogdmVyc2lvbi5jOjk4MworIzogdmVyc2lvbi5jOjk2OQogbXNnaWQgIiAgREVCVUcgQlVJTEQiCiBtc2dzdHIgIiAgztLLwMTO183A3yDRwc7QysAiCiAKLSM6IHZlcnNpb24uYzoxMDIyCisjOiB2ZXJzaW9uLmM6MTAwOAogbXNnaWQgIlZJTSAtIFZpIElNcHJvdmVkIgogbXNnc3RyICJWSU0gOjo6IFZpIElNcHJvdmVkICjT6/P3+OXt7fvpIFZpKSA6Ojog0PPx8erg/yDi5fDx6P8iCiAKLSM6IHZlcnNpb24uYzoxMDI0CisjOiB2ZXJzaW9uLmM6MTAxMAogbXNnaWQgInZlcnNpb24gIgogbXNnc3RyICLi5fDx6P8gIgogCi0jOiB2ZXJzaW9uLmM6MTAyNQorIzogdmVyc2lvbi5jOjEwMTEKIG1zZ2lkICJieSBCcmFtIE1vb2xlbmFhciBldCBhbC4iCiBtc2dzdHIgIsHw4OwgzO7u6+Xt4ODwIOgg5PDz4+jlIgogCi0jOiB2ZXJzaW9uLmM6MTAyOQorIzogdmVyc2lvbi5jOjEwMTUKIG1zZ2lkICJWaW0gaXMgb3BlbiBzb3VyY2UgYW5kIGZyZWVseSBkaXN0cmlidXRhYmxlIgogbXNnc3RyICJWaW0g/fLuIPHi7uHu5O3uIPDg8e/w7vHy8ODt/+Xs4P8g7/Du4/Dg7OzgIPEg7vLq8Pvy++wg6u7k7uwiCiAKLSM6IHZlcnNpb24uYzoxMDMxCisjOiB2ZXJzaW9uLmM6MTAxNwogbXNnaWQgIkhlbHAgcG9vciBjaGlsZHJlbiBpbiBVZ2FuZGEhIgogbXNnc3RyICLB5eTt++wg5OXy/+wg4iDT4+Dt5OUg7fPm7eAg4uD44CDv7uzu+fwhIgogCi0jOiB2ZXJzaW9uLmM6MTAzMgorIzogdmVyc2lvbi5jOjEwMTgKIG1zZ2lkICJ0eXBlICA6aGVscCBpY2NmPEVudGVyPiAgICAgICBmb3IgaW5mb3JtYXRpb24gIgogbXNnc3RyICLt4OHl8Ojy5SA6aGVscCBpY2NmPEVudGVyPiAgICAgICDk6/8g5O7v7uvt6PLl6/zt7ukg6O307vDs4Pbo6CIKIAotIzogdmVyc2lvbi5jOjEwMzQKKyM6IHZlcnNpb24uYzoxMDIwCiBtc2dpZCAidHlwZSAgOnE8RW50ZXI+ICAgICAgICAgICAgICAgdG8gZXhpdCAgICAgICAgICIKIG1zZ3N0ciAi7eDh5fDo8uUgOnE8RW50ZXI+ICAgICAgICAgICAgICAg9/Lu4fsg4vvp8ugg6Ocg7/Du4/Dg7Oz7ICAgICAiCiAKLSM6IHZlcnNpb24uYzoxMDM1CisjOiB2ZXJzaW9uLmM6MTAyMQogbXNnaWQgInR5cGUgIDpoZWxwPEVudGVyPiAgb3IgIDxGMT4gIGZvciBvbi1saW5lIGhlbHAiCiBtc2dzdHIgIu3g4eXw6PLlIDpoZWxwPEVudGVyPiDo6+ggPEYxPiAgIOTr/yDv7uvz9+Xt6P8g8e/w4OLq6CAgICAgICAgIgogCi0jOiB2ZXJzaW9uLmM6MTAzNgorIzogdmVyc2lvbi5jOjEwMjIKIG1zZ2lkICJ0eXBlICA6aGVscCB2ZXJzaW9uNjxFbnRlcj4gICBmb3IgdmVyc2lvbiBpbmZvIgogbXNnc3RyICLt4OHl8Ojy5SA6aGVscCB2ZXJzaW9uNjxFbnRlcj4gICD38u7h+yDz5+3g8vwg7uEg/fLu6SDi5fDx6OggICIKIAotIzogdmVyc2lvbi5jOjEwMzkKKyM6IHZlcnNpb24uYzoxMDI1CiBtc2dpZCAiUnVubmluZyBpbiBWaSBjb21wYXRpYmxlIG1vZGUiCiBtc2dzdHIgItDg4e7y4CDiIFZpLfHu4uzl8fLo7O7sIPDl5ujs5SIKIAotIzogdmVyc2lvbi5jOjEwNDAKKyM6IHZlcnNpb24uYzoxMDI2CiBtc2dpZCAidHlwZSAgOnNldCBub2NwPEVudGVyPiAgICAgICAgZm9yIFZpbSBkZWZhdWx0cyIKIG1zZ3N0ciAi7eDh5fDo8uUgOnNldCBub2NwPEVudGVyPiAgICAgICAg5Ov/IO/l8OX17uTgIOIg8OXm6OwgVmltICAgICAiCiAKLSM6IHZlcnNpb24uYzoxMDQxCisjOiB2ZXJzaW9uLmM6MTAyNwogbXNnaWQgInR5cGUgIDpoZWxwIGNwLWRlZmF1bHQ8RW50ZXI+IGZvciBpbmZvIG9uIHRoaXMiCiBtc2dzdHIgIu3g4eXw6PLlIDpoZWxwIGNwLWRlZmF1bHQ8RW50ZXI+IOTr/yDk7u/u6+3o8uXr/O3u6SDo7fTu8Ozg9ujoIgogCi0jOiB2ZXJzaW9uLmM6MTA1NgorIzogdmVyc2lvbi5jOjEwNDIKIG1zZ2lkICJtZW51ICBIZWxwLT5PcnBoYW5zICAgICAgICAgICBmb3IgaW5mb3JtYXRpb24gICAgIgogbXNnc3RyICLs5e3+INHv8ODi6uAtPtHo8O7y+yAgICAgICAgICAgICDk6/8g7+7r8/fl7ej/IOjt9O7w7OD26OggICAgICIKIAotIzogdmVyc2lvbi5jOjEwNTgKKyM6IHZlcnNpb24uYzoxMDQ0CiBtc2dpZCAiUnVubmluZyBtb2RlbGVzcywgdHlwZWQgdGV4dCBpcyBpbnNlcnRlZCIKIG1zZ3N0ciAiweXn8OXm6Ozt4P8g8ODh7vL7LCDi8fLg4urgIOLi5eS47e3u4+4g8uXq8fLgIgogCi0jOiB2ZXJzaW9uLmM6MTA1OQorIzogdmVyc2lvbi5jOjEwNDUKIG1zZ2lkICJtZW51ICBFZGl0LT5HbG9iYWwgU2V0dGluZ3MtPlRvZ2dsZSBJbnNlcnQgTW9kZSAgIgogbXNnc3RyICLs5e3+IM/w4OLq4C0+zuH56OUgzeDx8vDu6eroLT7Q5ebo7CDC8fLg4uroICAgICAgICAgICAgICAgICAgICAgIgogCi0jOiB2ZXJzaW9uLmM6MTA2MAorIzogdmVyc2lvbi5jOjEwNDYKIG1zZ2lkICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdHdvIG1vZGVzICAgICAgIgogbXNnc3RyICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDk6/8g5OLz9SDw5ebo7O7iICAgICAgICAgICAgICAgIgogCi0jOiB2ZXJzaW9uLmM6MTA2NAorIzogdmVyc2lvbi5jOjEwNTAKIG1zZ2lkICJtZW51ICBFZGl0LT5HbG9iYWwgU2V0dGluZ3MtPlRvZ2dsZSBWaSBDb21wYXRpYmxlIgogbXNnc3RyICLs5e3+IM/w4OLq4C0+zuH56OUgzeDx8vDu6eroLT7R7uLs5fHy6Ozu8fL8IPEgVmkgICAgICAgICAgICAgICAgIgogCi0jOiB2ZXJzaW9uLmM6MTA2NQorIzogdmVyc2lvbi5jOjEwNTEKIG1zZ2lkICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgVmltIGRlZmF1bHRzICAgIgogbXNnc3RyICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDk6/8g7+Xw5fXu5OAg4iDw5ebo7CBWaW0gICAgICAgIgogCi0jOiB2ZXJzaW9uLmM6MTExMgorIzogdmVyc2lvbi5jOjEwOTgKIG1zZ2lkICJTcG9uc29yIFZpbSBkZXZlbG9wbWVudCEiCiBtc2dzdHIgIs/u7O7j6PLlIOIg8ODn8ODh7vLq5SBWaW0hIgogCi0jOiB2ZXJzaW9uLmM6MTExMworIzogdmVyc2lvbi5jOjEwOTkKIG1zZ2lkICJCZWNvbWUgYSByZWdpc3RlcmVkIFZpbSB1c2VyISIKIG1zZ3N0ciAi0fLg7fzy5SDn4PDl4+jx8vDo8O7i4O3t++wg7+7r/Ofu4uDy5evl7CBWaW0hIgogCi0jOiB2ZXJzaW9uLmM6MTExNgorIzogdmVyc2lvbi5jOjExMDIKIG1zZ2lkICJ0eXBlICA6aGVscCBzcG9uc29yPEVudGVyPiAgICBmb3IgaW5mb3JtYXRpb24gIgogbXNnc3RyICLt4OHl8Ojy5SA6aGVscCBzcG9uc29yPEVudGVyPiAgICDk6/8g7+7r8/fl7ej/IOjt9O7w7OD26OggICAgICIKIAotIzogdmVyc2lvbi5jOjExMTcKKyM6IHZlcnNpb24uYzoxMTAzCiBtc2dpZCAidHlwZSAgOmhlbHAgcmVnaXN0ZXI8RW50ZXI+ICAgZm9yIGluZm9ybWF0aW9uICIKIG1zZ3N0ciAi7eDh5fDo8uUgOmhlbHAgcmVnaXN0ZXI8RW50ZXI+ICAg5Ov/IO/u6/P35e3o/yDo7fTu8Ozg9ujoICAgICAiCiAKLSM6IHZlcnNpb24uYzoxMTE5CisjOiB2ZXJzaW9uLmM6MTEwNQogbXNnaWQgIm1lbnUgIEhlbHAtPlNwb25zb3IvUmVnaXN0ZXIgIGZvciBpbmZvcm1hdGlvbiAgICAiCiBtc2dzdHIgIuzl7f4g0e/w4OLq4C0+z+7s7vn8L9Dl4+jx8vDg9uj/IOTr/yDv7uvz9+Xt6P8g6O307vDs4Pbo6CAgICAgICAiCiAKLSM6IHZlcnNpb24uYzoxMTI5CisjOiB2ZXJzaW9uLmM6MTExNQogbXNnaWQgIldBUk5JTkc6IFdpbmRvd3MgOTUvOTgvTUUgZGV0ZWN0ZWQiCiBtc2dzdHIgIs/QxcTTz9DFxsTFzcjFOiDu4e3g8PPm5e3gIFdpbmRvd3MgOTUvOTgvTUUiCiAKLSM6IHZlcnNpb24uYzoxMTMyCisjOiB2ZXJzaW9uLmM6MTExOAogbXNnaWQgInR5cGUgIDpoZWxwIHdpbmRvd3M5NTxFbnRlcj4gIGZvciBpbmZvIG9uIHRoaXMiCiBtc2dzdHIgIu3g4eXw6PLlIDpoZWxwIHdpbmRvd3M5NTxFbnRlcj4gIOTr/yDv7uvz9+Xt6P8g6O307vDs4Pbo6CAgICAgIgogCkBAIC02MjAyLDcgKzYyMTEsNyBAQAogbXNnaWQgIkU0NDc6IENhbid0IGZpbmQgZmlsZSBcIiVzXCIgaW4gcGF0aCIKIG1zZ3N0ciAiRTQ0Nzog1ODp6yBcIiVzXCIg7eUg7eDp5OXtIO/uIOjn4uXx8u377CDv8/L/7CIKIAotIzogaWZfcGVybC54czozMjYgZ2xvYmFscy5oOjEyMzIKKyM6IGlmX3BlcmwueHM6MzI2IGdsb2JhbHMuaDoxMjQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzNzA6IENvdWxkIG5vdCBsb2FkIGxpYnJhcnkgJXMiCiBtc2dzdHIgIkUzNzA6IM3l4u7n7O7m7e4g5+Dj8PPn6PL8IOHo4evo7vLl6vMgJXMiCkBAIC02MjU0LDcgKzYyNjMsNyBAQAogbXNnaWQgIlBhdGggbGVuZ3RoIHRvbyBsb25nISIKIG1zZ3N0ciAi0evo+Oru7CDk6+jt7fvpIO/z8vwhIgogCi0jOiBnbG9iYWxzLmg6MTAyMgorIzogZ2xvYmFscy5oOjEwMzEKIG1zZ2lkICItLU5vIGxpbmVzIGluIGJ1ZmZlci0tIgogbXNnc3RyICItLSDN5fIg8fLw7uog4iDh8/Tl8OUgLS0iCiAKQEAgLTYyNjIsMzk3ICs2MjcxLDM5NSBAQAogIy4gKiBUaGUgZXJyb3IgbWVzc2FnZXMgdGhhdCBjYW4gYmUgc2hhcmVkIGFyZSBpbmNsdWRlZCBoZXJlLgogIy4gKiBFeGNsdWRlZCBhcmUgZXJyb3JzIHRoYXQgYXJlIG9ubHkgdXNlZCBvbmNlIGFuZCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCiAjLgotIzogZ2xvYmFscy5oOjExODUKKyM6IGdsb2JhbHMuaDoxMTk0CiBtc2dpZCAiRTQ3MDogQ29tbWFuZCBhYm9ydGVkIgogbXNnc3RyICJFNDcwOiDC++/u6+3l7ejlIOru7ODt5Psg7/Dl8OLg7e4iCiAKLSM6IGdsb2JhbHMuaDoxMTg2CisjOiBnbG9iYWxzLmg6MTE5NQogbXNnaWQgIkU0NzE6IEFyZ3VtZW50IHJlcXVpcmVkIgogbXNnc3RyICJFNDcxOiDS8OXh8+Xy8f8g8+rg5+Dy/CDv4PDg7OXy8CIKIAotIzogZ2xvYmFscy5oOjExODcKKyM6IGdsb2JhbHMuaDoxMTk2CiBtc2dpZCAiRTEwOiBcXCBzaG91bGQgYmUgZm9sbG93ZWQgYnkgLywgPyBvciAmIgogbXNnc3RyICJFMTA6IM/u8evlIFxcIOTu6+bl7SDo5PLoIPHo7OLu6yAvLCA/IOjr6CAmIgogCi0jOiBnbG9iYWxzLmg6MTE4OQorIzogZ2xvYmFscy5oOjExOTgKIG1zZ2lkICJFMTE6IEludmFsaWQgaW4gY29tbWFuZC1saW5lIHdpbmRvdzsgPENSPiBleGVjdXRlcywgQ1RSTC1DIHF1aXRzIgogbXNnc3RyICIiCiAiRTExOiDN5eTu7/Px8ujs7iDiIO7q7eUg6u7s4O3k7e7pIPHy8O7q6DsgPENSPiDi++/u6+3l7ejlLCBDVFJMLUMg4vv17uQiCiAKLSM6IGdsb2JhbHMuaDoxMTkxCisjOiBnbG9iYWxzLmg6MTIwMAogbXNnaWQgIkUxMjogQ29tbWFuZCBub3QgYWxsb3dlZCBmcm9tIGV4cmMvdmltcmMgaW4gY3VycmVudCBkaXIgb3IgdGFnIHNlYXJjaCIKIG1zZ3N0ciAiIgogIkUxMjogyu7s4O3k4CDt5SDk7u/z8erg5fLx/yDiIGV4cmMvdmltcmMg4iDy5erz+eXsIOrg8uDr7uPlIOjr6CDv7ujx6uUg7OXy7uoiCiAKLSM6IGdsb2JhbHMuaDoxMTkzCisjOiBnbG9iYWxzLmg6MTIwMgogbXNnaWQgIkUxNzE6IE1pc3NpbmcgOmVuZGlmIgogbXNnc3RyICJFMTcxOiDO8vHz8vHy4vPl8iDq7uzg7eTgIDplbmRpZiIKIAotIzogZ2xvYmFscy5oOjExOTQKKyM6IGdsb2JhbHMuaDoxMjAzCiBtc2dpZCAiRTYwMDogTWlzc2luZyA6ZW5kdHJ5IgogbXNnc3RyICJFNjAwOiDO8vHz8vHy4vPl8iDq7uzg7eTgIDplbmR0cnkiCiAKLSM6IGdsb2JhbHMuaDoxMTk1CisjOiBnbG9iYWxzLmg6MTIwNAogbXNnaWQgIkUxNzA6IE1pc3NpbmcgOmVuZHdoaWxlIgogbXNnc3RyICJFMTcwOiDO8vHz8vHy4vPl8iDq7uzg7eTgIDplbmR3aGlsZSIKIAotIzogZ2xvYmFscy5oOjExOTYKKyM6IGdsb2JhbHMuaDoxMjA1CiBtc2dpZCAiRTU4ODogOmVuZHdoaWxlIHdpdGhvdXQgOndoaWxlIgogbXNnc3RyICJFNTg4OiDK7uzg7eTgIDplbmR3aGlsZSDh5ecg7+Dw7e7pIOru7ODt5PsgOndoaWxlIgogCi0jOiBnbG9iYWxzLmg6MTE5OAorIzogZ2xvYmFscy5oOjEyMDcKIG1zZ2lkICJFMTM6IEZpbGUgZXhpc3RzIChhZGQgISB0byBvdmVycmlkZSkiCiBtc2dzdHIgIkUxMzog1ODp6yDx8/nl8fLi8+XyICjk6/8g7+Xw5efg7+jx6CDk7uHg4vzy5SAhKSIKIAotIzogZ2xvYmFscy5oOjExOTkKKyM6IGdsb2JhbHMuaDoxMjA4CiBtc2dpZCAiRTQ3MjogQ29tbWFuZCBmYWlsZWQiCiBtc2dzdHIgIkU0NzI6IM3lIPPk4Ovu8fwg4vvv7uvt6PL8IOru7ODt5PMiCiAKLSM6IGdsb2JhbHMuaDoxMjAxCisjOiBnbG9iYWxzLmg6MTIxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjM0OiBVbmtub3duIGZvbnRzZXQ6ICVzIgogbXNnc3RyICJFMjM0OiDN5ejn4uXx8u376SD48Oj08u7i7ukg7eDh7vA6ICVzIgogCi0jOiBnbG9iYWxzLmg6MTIwNQorIzogZ2xvYmFscy5oOjEyMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIzNTogVW5rbm93biBmb250OiAlcyIKIG1zZ3N0ciAiRTIzNTogzeXo5+Ll8fLt++kg+PDo9PI6ICVzIgogCi0jOiBnbG9iYWxzLmg6MTIwOAorIzogZ2xvYmFscy5oOjEyMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIzNjogRm9udCBcIiVzXCIgaXMgbm90IGZpeGVkLXdpZHRoIgogbXNnc3RyICJFMjM2OiDY8Oj08iBcIiVzXCIg7eUg/+Lr/+Xy8f8g7O7t7vjo8Ojt7fvsIPjw6PTy7uwiCiAKLSM6IGdsb2JhbHMuaDoxMjEwCisjOiBnbG9iYWxzLmg6MTIxOQogbXNnaWQgIkU0NzM6IEludGVybmFsIGVycm9yIgogbXNnc3RyICJFNDczOiDC7fPy8OXt7f//IO746OHq4CIKIAotIzogZ2xvYmFscy5oOjEyMTEKKyM6IGdsb2JhbHMuaDoxMjIwCiBtc2dpZCAiSW50ZXJydXB0ZWQiCiBtc2dzdHIgIs/w5fDi4O3uIgogCi0jOiBnbG9iYWxzLmg6MTIxMgorIzogZ2xvYmFscy5oOjEyMjEKIG1zZ2lkICJFMTQ6IEludmFsaWQgYWRkcmVzcyIKIG1zZ3N0ciAiRTE0OiDN5eTu7/Px8ujs++kg4OTw5fEiCiAKLSM6IGdsb2JhbHMuaDoxMjEzCisjOiBnbG9iYWxzLmg6MTIyMgogbXNnaWQgIkU0NzQ6IEludmFsaWQgYXJndW1lbnQiCiBtc2dzdHIgIkU0NzQ6IM3l5O7v8/Hy6Oz76SDg8OPz7OXt8iIKIAotIzogZ2xvYmFscy5oOjEyMTQKKyM6IGdsb2JhbHMuaDoxMjIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU0NzU6IEludmFsaWQgYXJndW1lbnQ6ICVzIgogbXNnc3RyICJFNDc1OiDN5eTu7/Px8ujs++kg4PDj8+zl7fI6ICVzIgogCi0jOiBnbG9iYWxzLmg6MTIxNgorIzogZ2xvYmFscy5oOjEyMjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE1OiBJbnZhbGlkIGV4cHJlc3Npb246ICVzIgogbXNnc3RyICJFMTU6IM3l5O7v8/Hy6Ozu5SDi+/Dg5uXt6OU6ICVzIgogCi0jOiBnbG9iYWxzLmg6MTIxOAorIzogZ2xvYmFscy5oOjEyMjcKIG1zZ2lkICJFMTY6IEludmFsaWQgcmFuZ2UiCiBtc2dzdHIgIkUxNjogzeXk7u/z8fLo7PvpIOTo4O/g5+7tIgogCi0jOiBnbG9iYWxzLmg6MTIxOQorIzogZ2xvYmFscy5oOjEyMjgKIG1zZ2lkICJFNDc2OiBJbnZhbGlkIGNvbW1hbmQiCiBtc2dzdHIgIkU0NzY6IM3l5O7v8/Hy6Ozg/yDq7uzg7eTgIgogCi0jOiBnbG9iYWxzLmg6MTIyMQorIzogZ2xvYmFscy5oOjEyMzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE3OiBcIiVzXCIgaXMgYSBkaXJlY3RvcnkiCiBtc2dzdHIgIkUxNzogXCIlc1wiIP/i6//l8vH/IOrg8uDr7uPu7CIKIAotIzogZ2xvYmFscy5oOjEyMjQKKyM6IGdsb2JhbHMuaDoxMjMzCiBtc2dpZCAiRTE4OiBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYmVmb3JlICc9JyIKIG1zZ3N0ciAiRTE4OiDP5fDl5CAnPScg7uHt4PDz5uXt+yDt5e7m6OTg7e375SDx6Ozi7uv7IgogCi0jOiBnbG9iYWxzLmg6MTIyNworIzogZ2xvYmFscy5oOjEyMzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM2NDogTGlicmFyeSBjYWxsIGZhaWxlZCBmb3IgXCIlcygpXCIiCiBtc2dzdHIgIkUzNjQ6IM3l8+Tg9+376SDi++fu4iD08+3q9ujoIFwiJXMoKVwiIOjnIOHo4evo7vLl6ugiCiAKLSM6IGdsb2JhbHMuaDoxMjMzCisjOiBnbG9iYWxzLmg6MTI0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDQ4OiBDb3VsZCBub3QgbG9hZCBsaWJyYXJ5IGZ1bmN0aW9uICVzIgogbXNnc3RyICJFNDQ4OiDN5SDz5ODr7vH8IOfg4/Dz5+jy/CD08+3q9uj+ICVzIOjnIOHo4evo7vLl6ugiCiAKLSM6IGdsb2JhbHMuaDoxMjM1CisjOiBnbG9iYWxzLmg6MTI0NAogbXNnaWQgIkUxOTogTWFyayBoYXMgaW52YWxpZCBsaW5lIG51bWJlciIKIG1zZ3N0ciAiRTE5OiDO8uzl8urgIPPq4Of74uDl8iDt4CDt5e/w4OLo6/zt++kg7e7s5fAg8fLw7uroIgogCi0jOiBnbG9iYWxzLmg6MTIzNgorIzogZ2xvYmFscy5oOjEyNDUKIG1zZ2lkICJFMjA6IE1hcmsgbm90IHNldCIKIG1zZ3N0ciAizvLs5fLq4CDt5SDu7/Dl5OXr5e3gIgogCi0jOiBnbG9iYWxzLmg6MTIzNworIzogZ2xvYmFscy5oOjEyNDYKIG1zZ2lkICJFMjE6IENhbm5vdCBtYWtlIGNoYW5nZXMsICdtb2RpZmlhYmxlJyBpcyBvZmYiCiBtc2dzdHIgIkUyMTogyOfs5e3l7ej/IO3l4u7n7O7m7fssIPLg6iDq4Oog7vLq6/735e3gIO7v9uj/ICdtb2RpZmlhYmxlJyIKIAotIzogZ2xvYmFscy5oOjEyMzgKKyM6IGdsb2JhbHMuaDoxMjQ3CiBtc2dpZCAiRTIyOiBTY3JpcHRzIG5lc3RlZCB0b28gZGVlcCIKIG1zZ3N0ciAiRTIyOiDR6+j46u7sIOPr8+Hu6u4g4uvu5uXt7fvlIPH25e3g8OjoIgogCi0jOiBnbG9iYWxzLmg6MTIzOQorIzogZ2xvYmFscy5oOjEyNDgKIG1zZ2lkICJFMjM6IE5vIGFsdGVybmF0ZSBmaWxlIgogbXNnc3RyICJFMjM6INHu8eXk7ejpIPTg6esg7eUg8fP55fHy4vPl8iIKIAotIzogZ2xvYmFscy5oOjEyNDAKKyM6IGdsb2JhbHMuaDoxMjQ5CiBtc2dpZCAiRTI0OiBObyBzdWNoIGFiYnJldmlhdGlvbiIKIG1zZ3N0ciAiRTI0OiDN5fIg8uDq7uPuIPHu6vDg+eXt6P8iCiAKLSM6IGdsb2JhbHMuaDoxMjQxCisjOiBnbG9iYWxzLmg6MTI1MAogbXNnaWQgIkU0Nzc6IE5vICEgYWxsb3dlZCIKIG1zZ3N0ciAiRTQ3NzogISDt5SDk7u/z8erg5fLx/yIKIAotIzogZ2xvYmFscy5oOjEyNDMKKyM6IGdsb2JhbHMuaDoxMjUyCiBtc2dpZCAiRTI1OiBHVUkgY2Fubm90IGJlIHVzZWQ6IE5vdCBlbmFibGVkIGF0IGNvbXBpbGUgdGltZSIKIG1zZ3N0ciAiIgogIkUyNTogwu7n7O7m7e7x8vwg6PHv7uv85+7i4O3o/yDj8OD06Pfl8eru4+4g6O3y5fD05enx4CDi++rr/vfl7eAg7/DoICIKICLq7uzv6Ov/9ujoIgogCi0jOiBnbG9iYWxzLmg6MTI0NgorIzogZ2xvYmFscy5oOjEyNTUKIG1zZ2lkICJFMjY6IEhlYnJldyBjYW5ub3QgYmUgdXNlZDogTm90IGVuYWJsZWQgYXQgY29tcGlsZSB0aW1lXG4iCiBtc2dzdHIgIkUyNjogyOLw6PIg4vvq6/735e0g7/DoIOru7O/o6//26OhcbiIKIAotIzogZ2xvYmFscy5oOjEyNDkKKyM6IGdsb2JhbHMuaDoxMjU4CiBtc2dpZCAiRTI3OiBGYXJzaSBjYW5ub3QgYmUgdXNlZDogTm90IGVuYWJsZWQgYXQgY29tcGlsZSB0aW1lXG4iCiBtc2dzdHIgIkUyNzog1ODw8egg4vvq6/735e3uIO/w6CDq7uzv6Ov/9ujoXG4iCiAKLSM6IGdsb2JhbHMuaDoxMjUyCisjOiBnbG9iYWxzLmg6MTI2MQogbXNnaWQgIkU4MDA6IEFyYWJpYyBjYW5ub3QgYmUgdXNlZDogTm90IGVuYWJsZWQgYXQgY29tcGlsZSB0aW1lXG4iCiBtc2dzdHIgIkU4MDA6IMDw4OHx6ujpIOL76uv+9+XtIO/w6CDq7uzv6Ov/9ujoXG4iCiAKLSM6IGdsb2JhbHMuaDoxMjU1CisjOiBnbG9iYWxzLmg6MTI2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjg6IE5vIHN1Y2ggaGlnaGxpZ2h0IGdyb3VwIG5hbWU6ICVzIgogbXNnc3RyICJFMjg6IMPw8+/v4CDv7uTx4uXy6ugg8ejt8uDq8ejx4CAlcyDt5SDx8/nl8fLi8+XyIgogCi0jOiBnbG9iYWxzLmg6MTI1NworIzogZ2xvYmFscy5oOjEyNjYKIG1zZ2lkICJFMjk6IE5vIGluc2VydGVkIHRleHQgeWV0IgogbXNnc3RyICJFMjk6IM/u6uAg7eXyIOLx8uDi6+Xt7e7j7iDy5erx8uAiCiAKLSM6IGdsb2JhbHMuaDoxMjU4CisjOiBnbG9iYWxzLmg6MTI2NwogbXNnaWQgIkUzMDogTm8gcHJldmlvdXMgY29tbWFuZCBsaW5lIgogbXNnc3RyICJFMzA6IM/w5eT75PP55ekg6u7s4O3k7e7pIPHy8O7q6CDt5fIiCiAKLSM6IGdsb2JhbHMuaDoxMjU5CisjOiBnbG9iYWxzLmg6MTI2OAogbXNnaWQgIkUzMTogTm8gc3VjaCBtYXBwaW5nIgogbXNnc3RyICJFMzE6INLg6u7pIO/w6OL/5+roIO3lIPHz+eXx8uLz5fIiCiAKLSM6IGdsb2JhbHMuaDoxMjYwCisjOiBnbG9iYWxzLmg6MTI2OQogbXNnaWQgIkU0Nzk6IE5vIG1hdGNoIgogbXNnc3RyICJFNDc5OiDN5fIg8e7u8uLl8vHy4uj/IgogCi0jOiBnbG9iYWxzLmg6MTI2MQorIzogZ2xvYmFscy5oOjEyNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTQ4MDogTm8gbWF0Y2g6ICVzIgogbXNnc3RyICJFNDgwOiDN5fIg8e7u8uLl8vHy4uj/OiAlcyIKIAotIzogZ2xvYmFscy5oOjEyNjIKKyM6IGdsb2JhbHMuaDoxMjcxCiBtc2dpZCAiRTMyOiBObyBmaWxlIG5hbWUiCiBtc2dzdHIgIkUzMjogzeXyIOjs5e3oIPTg6evgIgogCi0jOiBnbG9iYWxzLmg6MTI2MworIzogZ2xvYmFscy5oOjEyNzIKIG1zZ2lkICJFMzM6IE5vIHByZXZpb3VzIHN1YnN0aXR1dGUgcmVndWxhciBleHByZXNzaW9uIgogbXNnc3RyICJFMzM6IM3l8iDv8OXk++Tz+eXj7iDw5ePz6//w7e7j7iDi+/Dg5uXt6P8g5Ov/IOfg7OXt+yIKIAotIzogZ2xvYmFscy5oOjEyNjQKKyM6IGdsb2JhbHMuaDoxMjczCiBtc2dpZCAiRTM0OiBObyBwcmV2aW91cyBjb21tYW5kIgogbXNnc3RyICJFMzQ6IM3l8iDv8OXk++Tz+eXpIOru7ODt5PsiCiAKLSM6IGdsb2JhbHMuaDoxMjY1CisjOiBnbG9iYWxzLmg6MTI3NAogbXNnaWQgIkUzNTogTm8gcHJldmlvdXMgcmVndWxhciBleHByZXNzaW9uIgogbXNnc3RyICJFMzU6IM3l8iDv8OXk++Tz+eXj7iDw5ePz6//w7e7j7iDi+/Dg5uXt6P8iCiAKLSM6IGdsb2JhbHMuaDoxMjY2CisjOiBnbG9iYWxzLmg6MTI3NQogbXNnaWQgIkU0ODE6IE5vIHJhbmdlIGFsbG93ZWQiCiBtc2dzdHIgIkU0ODE6IMjx7+7r/Ofu4uDt6OUg5Ojg7+Dn7u3gIO3lIOTu7/Px6uDl8vH/IgogCi0jOiBnbG9iYWxzLmg6MTI2OAorIzogZ2xvYmFscy5oOjEyNzcKIG1zZ2lkICJFMzY6IE5vdCBlbm91Z2ggcm9vbSIKIG1zZ3N0ciAiRTM2OiDN5eTu8fLg8u737e4g7OXx8uAiCiAKLSM6IGdsb2JhbHMuaDoxMjcxCisjOiBnbG9iYWxzLmg6MTI4MAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjQ3OiBubyByZWdpc3RlcmVkIHNlcnZlciBuYW1lZCBcIiVzXCIiCiBtc2dzdHIgIkUyNDc6IPHl8OLl8CBcIiVzXCIg7eUg5+Dw5ePo8fLw6PDu4uDtIgogCi0jOiBnbG9iYWxzLmg6MTI3MworIzogZ2xvYmFscy5oOjEyODIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTQ4MjogQ2FuJ3QgY3JlYXRlIGZpbGUgJXMiCiBtc2dzdHIgIkU0ODI6IM3l4u7n7O7m7e4g8e7n5ODy/CD04OnrICVzIgogCi0jOiBnbG9iYWxzLmg6MTI3NAorIzogZ2xvYmFscy5oOjEyODMKIG1zZ2lkICJFNDgzOiBDYW4ndCBnZXQgdGVtcCBmaWxlIG5hbWUiCiBtc2dzdHIgIkU0ODM6IM3l4u7n7O7m7e4g7+7r8/fo8vwg6Oz/IOLw5ezl7e3u4+4g9ODp6+AiCiAKLSM6IGdsb2JhbHMuaDoxMjc1CisjOiBnbG9iYWxzLmg6MTI4NAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDg0OiBDYW4ndCBvcGVuIGZpbGUgJXMiCiBtc2dzdHIgIkU0ODQ6IM3l4u7n7O7m7e4g7vLq8Pvy/CD04OnrICVzIgogCi0jOiBnbG9iYWxzLmg6MTI3NgorIzogZ2xvYmFscy5oOjEyODUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTQ4NTogQ2FuJ3QgcmVhZCBmaWxlICVzIgogbXNnc3RyICJFNDg1OiDN5eLu5+zu5u3uIO/w7vfo8uDy/CD04OnrICVzIgogCi0jOiBnbG9iYWxzLmg6MTI3NworIzogZ2xvYmFscy5oOjEyODYKIG1zZ2lkICJFMzc6IE5vIHdyaXRlIHNpbmNlIGxhc3QgY2hhbmdlIChhZGQgISB0byBvdmVycmlkZSkiCiBtc2dzdHIgIkUzNzogyOfs5e3l7ej/IO3lIPHu9fDg7eXt+yAo5O7h4OL88uUgISwg9/Lu4fsg7uHu6fLoIO/w7uLl8OrzKSIKIAotIzogZ2xvYmFscy5oOjEyNzgKKyM6IGdsb2JhbHMuaDoxMjg3CiBtc2dpZCAiRTM4OiBOdWxsIGFyZ3VtZW50IgogbXNnc3RyICJFMzg6IM3z6+Xi7ukg4PDj8+zl7fIiCiAKLSM6IGdsb2JhbHMuaDoxMjgwCisjOiBnbG9iYWxzLmg6MTI4OQogbXNnaWQgIkUzOTogTnVtYmVyIGV4cGVjdGVkIgogbXNnc3RyICJFMzk6INLw5eHz5fLx/yD36PHr7iIKIAotIzogZ2xvYmFscy5oOjEyODMKKyM6IGdsb2JhbHMuaDoxMjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU0MDogQ2FuJ3Qgb3BlbiBlcnJvcmZpbGUgJXMiCiBtc2dzdHIgIkU0MDogzeUg8+Tg6+7x/CDu8urw+/L8IPTg6esg7vjo4e7qICVzIgogCi0jOiBnbG9iYWxzLmg6MTI4NgorIzogZ2xvYmFscy5oOjEyOTUKIG1zZ2lkICJFMjMzOiBjYW5ub3Qgb3BlbiBkaXNwbGF5IgogbXNnc3RyICJFMjMzOiDt5eLu5+zu5u3uIO7y6vD78vwg5Ojx7+vl6SIKIAotIzogZ2xvYmFscy5oOjEyODgKKyM6IGdsb2JhbHMuaDoxMjk3CiBtc2dpZCAiRTQxOiBPdXQgb2YgbWVtb3J5ISIKIG1zZ3N0ciAiRTQxOiDN5SD14uDy4OXyIO/g7P/y6CEiCiAKLSM6IGdsb2JhbHMuaDoxMjkwCisjOiBnbG9iYWxzLmg6MTI5OQogbXNnaWQgIlBhdHRlcm4gbm90IGZvdW5kIgogbXNnc3RyICLY4OHr7u0g7eUg7eDp5OXtIgogCi0jOiBnbG9iYWxzLmg6MTI5MgorIzogZ2xvYmFscy5oOjEzMDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTQ4NjogUGF0dGVybiBub3QgZm91bmQ6ICVzIgogbXNnc3RyICJFNDg2OiDY4OHr7u0g7eUg7eDp5OXtOiAlcyIKIAotIzogZ2xvYmFscy5oOjEyOTMKKyM6IGdsb2JhbHMuaDoxMzAyCiBtc2dpZCAiRTQ4NzogQXJndW1lbnQgbXVzdCBiZSBwb3NpdGl2ZSIKIG1zZ3N0ciAiRTQ4Nzogz+Dw4Ozl8vAg5O7r5uXtIOH78vwg7+7r7ubo8uXr/O377CD36PHr7uwiCiAKLSM6IGdsb2JhbHMuaDoxMjk1CisjOiBnbG9iYWxzLmg6MTMwNAogbXNnaWQgIkU0NTk6IENhbm5vdCBnbyBiYWNrIHRvIHByZXZpb3VzIGRpcmVjdG9yeSIKIG1zZ3N0ciAiRTQ1OTogwu7n4vDg8iDiIO/w5eT75PP56Okg6uDy4Ovu4yDt5eLu5+zu5uXtIgogCi0jOiBnbG9iYWxzLmg6MTI5OQorIzogZ2xvYmFscy5oOjEzMDgKIG1zZ2lkICJFNDI6IE5vIEVycm9ycyIKIG1zZ3N0ciAiRTQyOiDO+Ojh7uog7eXyIgogCi0jOiBnbG9iYWxzLmg6MTMwMQorIzogZ2xvYmFscy5oOjEzMTAKIG1zZ2lkICJFNDM6IERhbWFnZWQgbWF0Y2ggc3RyaW5nIgogbXNnc3RyICJFNDM6IM/u4vDl5uTl7eAg8fLw7urgIPHu7vLi5fLx8uLo/yIKIAotIzogZ2xvYmFscy5oOjEzMDIKKyM6IGdsb2JhbHMuaDoxMzExCiBtc2dpZCAiRTQ0OiBDb3JydXB0ZWQgcmVnZXhwIHByb2dyYW0iCiBtc2dzdHIgIkU0NDogz/Du4/Dg7OzgIO7h8ODh7vLq6CDw5ePz6//w7fv1IOL78ODm5e3o6SDv7uLw5ebk5e3gIgogCi0jOiBnbG9iYWxzLmg6MTMwMworIzogZ2xvYmFscy5oOjEzMTIKIG1zZ2lkICJFNDU6ICdyZWFkb25seScgb3B0aW9uIGlzIHNldCAoYWRkICEgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICIiCiAiRTQ1OiDC6uv+9+Xt4CDu7/bo/yAncmVhZG9ubHknICjk7uHg4vzy5SAhLCD38u7h+yDt5SDu4fDg+eDy/CDi7ejs4O3o/ykiCiAKLSM6IGdsb2JhbHMuaDoxMzA1CisjOiBnbG9iYWxzLmg6MTMxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDY6IENhbm5vdCBzZXQgcmVhZC1vbmx5IHZhcmlhYmxlIFwiJXNcIiIKIG1zZ3N0ciAiRTQ2OiDN5eLu5+zu5u3uIOjn7OXt6PL8IOTu8fLz7+3z/iDy7uv86u4g5Ov/IPfy5e3o/yDv5fDl7OXt7fP+IFwiJXNcIiIKIAotIzogZ2xvYmFscy5oOjEzMDgKKyM6IGdsb2JhbHMuaDoxMzE3CiBtc2dpZCAiRTQ3OiBFcnJvciB3aGlsZSByZWFkaW5nIGVycm9yZmlsZSIKIG1zZ3N0ciAiRTQ3OiDO+Ojh6uAg7/DoIPfy5e3o6CD04Onr4CDu+Ojh7uoiCiAKLSM6IGdsb2JhbHMuaDoxMzExCisjOiBnbG9iYWxzLmg6MTMyMAogbXNnaWQgIkU0ODogTm90IGFsbG93ZWQgaW4gc2FuZGJveCIKIG1zZ3N0ciAiRTQ4OiDN5SDk7u/z8erg5fLx/yDiIO/l8e737ej25SIKIAotIzogZ2xvYmFscy5oOjEzMTMKKyM6IGdsb2JhbHMuaDoxMzIyCiBtc2dpZCAiRTUyMzogTm90IGFsbG93ZWQgaGVyZSIKIG1zZ3N0ciAiRTUyMzogx+Tl8fwg7eUg8ODn8OX45e3uIgogCi0jOiBnbG9iYWxzLmg6MTMxNgorIzogZ2xvYmFscy5oOjEzMjUKIG1zZ2lkICJFMzU5OiBTY3JlZW4gbW9kZSBzZXR0aW5nIG5vdCBzdXBwb3J0ZWQiCiBtc2dzdHIgIkUzNTk6IMTg7e376SDw5ebo7CD96vDg7eAg7eUg7+7k5OXw5uji4OXy8f8iCiAKLSM6IGdsb2JhbHMuaDoxMzE4CisjOiBnbG9iYWxzLmg6MTMyNwogbXNnaWQgIkU0OTogSW52YWxpZCBzY3JvbGwgc2l6ZSIKIG1zZ3N0ciAiRTQ5OiDN5eTu7/Px8ujs++kg8ODn7OXwIO/w7urw8/Lq6CIKIAotIzogZ2xvYmFscy5oOjEzMTkKKyM6IGdsb2JhbHMuaDoxMzI4CiBtc2dpZCAiRTkxOiAnc2hlbGwnIG9wdGlvbiBpcyBlbXB0eSIKIG1zZ3N0ciAiRTkxOiDH7eD35e3o5ewg7u/26OggJ3NoZWxsJyD/4uv/5fLx/yDv8/Hy4P8g8fLw7urgIgogCi0jOiBnbG9iYWxzLmg6MTMyMQorIzogZ2xvYmFscy5oOjEzMzAKIG1zZ2lkICJFMjU1OiBDb3VsZG4ndCByZWFkIGluIHNpZ24gZGF0YSEiCiBtc2dzdHIgIkUyNTU6IM3l4u7n7O7m7e4g7/Du9+jy4PL8IOTg7e375SDuIOft4Pfq4PUhIgogCi0jOiBnbG9iYWxzLmg6MTMyMworIzogZ2xvYmFscy5oOjEzMzIKIG1zZ2lkICJFNzI6IENsb3NlIGVycm9yIG9uIHN3YXAgZmlsZSIKIG1zZ3N0ciAiRTcyOiDO+Ojh6uAg5+Dq8Pvy6P8g8eLu7y304Onr4CIKIAotIzogZ2xvYmFscy5oOjEzMjQKKyM6IGdsb2JhbHMuaDoxMzMzCiBtc2dpZCAiRTczOiB0YWcgc3RhY2sgZW1wdHkiCiBtc2dzdHIgIkU3Mzog0fLl6iDs5fLu6iDv8/Hy7ukiCiAKLSM6IGdsb2JhbHMuaDoxMzI1CisjOiBnbG9iYWxzLmg6MTMzNAogbXNnaWQgIkU3NDogQ29tbWFuZCB0b28gY29tcGxleCIKIG1zZ3N0ciAiRTc0OiDR6+j46u7sIPHr7ubt4P8g6u7s4O3k4CIKIAotIzogZ2xvYmFscy5oOjEzMjYKKyM6IGdsb2JhbHMuaDoxMzM1CiBtc2dpZCAiRTc1OiBOYW1lIHRvbyBsb25nIgogbXNnc3RyICJFNzU6INHr6Pjq7uwg5Ovo7e3u5SDo7P8iCiAKLSM6IGdsb2JhbHMuaDoxMzI3CisjOiBnbG9iYWxzLmg6MTMzNgogbXNnaWQgIkU3NjogVG9vIG1hbnkgWyIKIG1zZ3N0ciAiRTc2OiDR6+j46u7sIOzt7uPuIPHo7OLu6+7iIFsiCiAKLSM6IGdsb2JhbHMuaDoxMzI4CisjOiBnbG9iYWxzLmg6MTMzNwogbXNnaWQgIkU3NzogVG9vIG1hbnkgZmlsZSBuYW1lcyIKIG1zZ3N0ciAiRTc3OiDR6+j46u7sIOzt7uPuIOjsuO0g9ODp6+7iIgogCi0jOiBnbG9iYWxzLmg6MTMyOQorIzogZ2xvYmFscy5oOjEzMzgKIG1zZ2lkICJFNDg4OiBUcmFpbGluZyBjaGFyYWN0ZXJzIgogbXNnc3RyICJFNDg4OiDL6Pjt6OUg8ejs4u7r+yDt4CD14u7x8uUiCiAKLSM6IGdsb2JhbHMuaDoxMzMwCisjOiBnbG9iYWxzLmg6MTMzOQogbXNnaWQgIkU3ODogVW5rbm93biBtYXJrIgogbXNnc3RyICJFNzg6IM3l6Ofi5fHy7eD/IO7y7OXy6uAiCiAKLSM6IGdsb2JhbHMuaDoxMzMxCisjOiBnbG9iYWxzLmg6MTM0MAogbXNnaWQgIkU3OTogQ2Fubm90IGV4cGFuZCB3aWxkY2FyZHMiCiBtc2dzdHIgIkU3OTogzeXi7ufs7ubt7iDi++/u6+3o8vwg7+7k8fLg7e7i6vMg7+4g7ODx6uUiCiAKLSM6IGdsb2JhbHMuaDoxMzMzCisjOiBnbG9iYWxzLmg6MTM0MgogbXNnaWQgIkU1OTE6ICd3aW5oZWlnaHQnIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gJ3dpbm1pbmhlaWdodCciCiBtc2dzdHIgIiIKICJFNTkxOiDH7eD35e3o5SDu7/bo6CAnd2luaGVpZ2h0JyDt5SDs7ubl8iDh+/L8IOzl7fz45SDn7eD35e3o/yAnd2lubWluaGVpZ2h0JyIKIAotIzogZ2xvYmFscy5oOjEzMzUKKyM6IGdsb2JhbHMuaDoxMzQ0CiBtc2dpZCAiRTU5MjogJ3dpbndpZHRoJyBjYW5ub3QgYmUgc21hbGxlciB0aGFuICd3aW5taW53aWR0aCciCiBtc2dzdHIgIiIKICJFNTkyOiDH7eD35e3o5SDu7/bo6CAnd2lud2lkdGgnIO3lIOzu5uXyIOH78vwg7OXt/PjlIOft4Pfl7ej/ICd3aW5taW53aWR0aCciCiAKLSM6IGdsb2JhbHMuaDoxMzM4CisjOiBnbG9iYWxzLmg6MTM0NwogbXNnaWQgIkU4MDogRXJyb3Igd2hpbGUgd3JpdGluZyIKIG1zZ3N0ciAiRTgwOiDO+Ojh6uAg7/DoIOfg7+jx6CIKIAotIzogZ2xvYmFscy5oOjEzMzkKKyM6IGdsb2JhbHMuaDoxMzQ4CiBtc2dpZCAiWmVybyBjb3VudCIKIG1zZ3N0ciAizfPr5eLu5SDn7eD35e3o5SDx97jy9+jq4CIKIAotIzogZ2xvYmFscy5oOjEzNDEKKyM6IGdsb2JhbHMuaDoxMzUwCiBtc2dpZCAiRTgxOiBVc2luZyA8U0lEPiBub3QgaW4gYSBzY3JpcHQgY29udGV4dCIKIG1zZ3N0ciAiRTgxOiDI8e/u6/zn7uLg7ejlIDxTSUQ+IOLt5SDq7u3y5erx8uAg8fbl7eDw6P8iCiAKLSM6IGdsb2JhbHMuaDoxMzQ0CisjOiBnbG9iYWxzLmg6MTM1MwogbXNnaWQgIkU0NDk6IEludmFsaWQgZXhwcmVzc2lvbiByZWNlaXZlZCIKIG1zZ3N0ciAiRTQ0OTogz+7r8/fl7e4g7eXk7u/z8fLo7O7lIOL78ODm5e3o5SIKIAotIzogZ2xvYmFscy5oOjEzNDcKKyM6IGdsb2JhbHMuaDoxMzU2CiBtc2dpZCAiRTQ2MzogUmVnaW9uIGlzIGd1YXJkZWQsIGNhbm5vdCBtb2RpZnkiCiBtc2dzdHIgIkU0NjM6IM3l4u7n7O7m7e4g6Ofs5e3o8vwg7vXw4O3/5ezz/iDu4evg8fL8IgogCi0jfiBtc2dpZCAiXCJcbiIKLSN+IG1zZ3N0ciAiXCJcbiIKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9ldmFsLnBybyBiL3NyYy9wcm90by9ldmFsLnBybwppbmRleCBjMWRmYmI4Li44M2UxMGFiIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vZXZhbC5wcm8KKysrIGIvc3JjL3Byb3RvL2V2YWwucHJvCkBAIC0xMSw2ICsxMSw3IEBACiB2b2lkIGV2YWxfcGF0Y2ggX19BUkdTKChjaGFyX3UgKm9yaWdmaWxlLCBjaGFyX3UgKmRpZmZmaWxlLCBjaGFyX3UgKm91dGZpbGUpKTsKIGludCBldmFsX3RvX2Jvb2wgX19BUkdTKChjaGFyX3UgKmFyZywgaW50ICplcnJvciwgY2hhcl91ICoqbmV4dGNtZCwgaW50IHNraXApKTsKIGNoYXJfdSAqZXZhbF90b19zdHJpbmdfc2tpcCBfX0FSR1MoKGNoYXJfdSAqYXJnLCBjaGFyX3UgKipuZXh0Y21kLCBpbnQgc2tpcCkpOworaW50IHNraXBfZXhwciBfX0FSR1MoKGNoYXJfdSAqKnBwKSk7CiBjaGFyX3UgKmV2YWxfdG9fc3RyaW5nIF9fQVJHUygoY2hhcl91ICphcmcsIGNoYXJfdSAqKm5leHRjbWQpKTsKIGNoYXJfdSAqZXZhbF90b19zdHJpbmdfc2FmZSBfX0FSR1MoKGNoYXJfdSAqYXJnLCBjaGFyX3UgKipuZXh0Y21kKSk7CiBpbnQgZXZhbF90b19udW1iZXIgX19BUkdTKChjaGFyX3UgKmV4cHIpKTsKZGlmZiAtLWdpdCBhL3NyYy9wcm90by9leF9jbWRzLnBybyBiL3NyYy9wcm90by9leF9jbWRzLnBybwppbmRleCAzM2YxMDVhLi5mNjNmY2RhIDEwMDY0NAotLS0gYS9zcmMvcHJvdG8vZXhfY21kcy5wcm8KKysrIGIvc3JjL3Byb3RvL2V4X2NtZHMucHJvCkBAIC0zOCw2ICszOCw3IEBACiB2b2lkIHdyaXRlX3ZpbWluZm9fc3ViX3N0cmluZyBfX0FSR1MoKEZJTEUgKmZwKSk7CiB2b2lkIHByZXBhcmVfdGFncHJldmlldyBfX0FSR1MoKHZvaWQpKTsKIHZvaWQgZXhfaGVscCBfX0FSR1MoKGV4YXJnX1QgKmVhcCkpOworY2hhcl91ICpjaGVja19oZWxwX2xhbmcgX19BUkdTKChjaGFyX3UgKmFyZykpOwogaW50IGhlbHBfaGV1cmlzdGljIF9fQVJHUygoY2hhcl91ICptYXRjaGVkX3N0cmluZywgaW50IG9mZnNldCwgaW50IHdyb25nX2Nhc2UpKTsKIGludCBmaW5kX2hlbHBfdGFncyBfX0FSR1MoKGNoYXJfdSAqYXJnLCBpbnQgKm51bV9tYXRjaGVzLCBjaGFyX3UgKioqbWF0Y2hlcywgaW50IGtlZXBfbGFuZykpOwogdm9pZCBmaXhfaGVscF9idWZmZXIgX19BUkdTKCh2b2lkKSk7CmRpZmYgLS1naXQgYS9zcmMvcXVpY2tmaXguYyBiL3NyYy9xdWlja2ZpeC5jCmluZGV4IDVkYmJjMWIuLmMyNWEwYmUgMTAwNjQ0Ci0tLSBhL3NyYy9xdWlja2ZpeC5jCisrKyBiL3NyYy9xdWlja2ZpeC5jCkBAIC0xMDA2LDYgKzEwMDYsNyBAQAogI2lmZGVmIEZFQVRfRk9MRElORwogICAgIGludAkJCW9sZF9LZXlUeXBlZCA9IEtleVR5cGVkOyAvKiBnZXR0aW5nIGZpbGUgbWF5IHJlc2V0IGl0ICovCiAjZW5kaWYKKyAgICBpbnQJCQlvayA9IE9LOwogCiAgICAgaWYgKHFmX2N1cmxpc3QgPj0gcWZfbGlzdGNvdW50IHx8IHFmX2xpc3RzW3FmX2N1cmxpc3RdLnFmX2NvdW50ID09IDApCiAgICAgewpAQCAtMTA5Nyw2ICsxMDk4LDQyIEBACiAJcHJpbnRfbWVzc2FnZSA9IEZBTFNFOwogCiAgICAgLyoKKyAgICAgKiBGb3IgIjpoZWxwZ3JlcCIgZmluZCBhIGhlbHAgd2luZG93IG9yIG9wZW4gb25lLgorICAgICAqLworICAgIGlmIChxZl9wdHItPnFmX3R5cGUgPT0gMSAmJiAhY3Vyd2luLT53X2J1ZmZlci0+Yl9oZWxwKQorICAgIHsKKwl3aW5fVAkqd3A7CisJaW50CW47CisKKwlmb3IgKHdwID0gZmlyc3R3aW47IHdwICE9IE5VTEw7IHdwID0gd3AtPndfbmV4dCkKKwkgICAgaWYgKHdwLT53X2J1ZmZlciAhPSBOVUxMICYmIHdwLT53X2J1ZmZlci0+Yl9oZWxwKQorCQlicmVhazsKKwlpZiAod3AgIT0gTlVMTCAmJiB3cC0+d19idWZmZXItPmJfbndpbmRvd3MgPiAwKQorCSAgICB3aW5fZW50ZXIod3AsIFRSVUUpOworCWVsc2UKKwl7CisJICAgIC8qCisJICAgICAqIFNwbGl0IG9mZiBoZWxwIHdpbmRvdzsgcHV0IGl0IGF0IGZhciB0b3AgaWYgbm8gcG9zaXRpb24KKwkgICAgICogc3BlY2lmaWVkLCB0aGUgY3VycmVudCB3aW5kb3cgaXMgdmVydGljYWxseSBzcGxpdCBhbmQgbmFycm93LgorCSAgICAgKi8KKwkgICAgbiA9IFdTUF9IRUxQOworIyBpZmRlZiBGRUFUX1ZFUlRTUExJVAorCSAgICBpZiAoY21kbW9kLnNwbGl0ID09IDAgJiYgY3Vyd2luLT53X3dpZHRoICE9IENvbHVtbnMKKwkJCQkJCSAgICAgICYmIGN1cndpbi0+d193aWR0aCA8IDgwKQorCQluIHw9IFdTUF9UT1A7CisjIGVuZGlmCisJICAgIGlmICh3aW5fc3BsaXQoMCwgbikgPT0gRkFJTCkKKwkJZ290byB0aGVlbmQ7CisKKwkgICAgaWYgKGN1cndpbi0+d19oZWlnaHQgPCBwX2hoKQorCQl3aW5fc2V0aGVpZ2h0KChpbnQpcF9oaCk7CisJfQorCisJaWYgKCFwX2ltKQorCSAgICByZXN0YXJ0X2VkaXQgPSAwOwkgICAgLyogZG9uJ3Qgd2FudCBpbnNlcnQgbW9kZSBpbiBoZWxwIGZpbGUgKi8KKyAgICB9CisKKyAgICAvKgogICAgICAqIElmIGN1cnJlbnRseSBpbiB0aGUgcXVpY2tmaXggd2luZG93LCBmaW5kIGFub3RoZXIgd2luZG93IHRvIHNob3cgdGhlCiAgICAgICogZmlsZSBpbi4KICAgICAgKi8KQEAgLTExNzAsOCArMTIwNywyOCBAQAogICAgICAqLwogICAgIG9sZF9jdXJidWYgPSBjdXJidWY7CiAgICAgb2xkX2xudW0gPSBjdXJ3aW4tPndfY3Vyc29yLmxudW07Ci0gICAgaWYgKHFmX3B0ci0+cWZfZm51bSA9PSAwIHx8IGJ1Zmxpc3RfZ2V0ZmlsZShxZl9wdHItPnFmX2ZudW0sCi0JCSAgICAobGluZW5yX1QpMSwgR0VURl9TRVRNQVJLIHwgR0VURl9TV0lUQ0gsIGZvcmNlaXQpID09IE9LKQorCisgICAgaWYgKHFmX3B0ci0+cWZfZm51bSAhPSAwKQorICAgIHsKKwlpZiAocWZfcHRyLT5xZl90eXBlID09IDEpCisJeworCSAgICAvKiBPcGVuIGhlbHAgZmlsZSAoZG9fZWNtZCgpIHdpbGwgc2V0IGJfaGVscCBmbGFnLCByZWFkZmlsZSgpIHdpbGwKKwkgICAgICogc2V0IGJfcF9ybyBmbGFnKS4gKi8KKwkgICAgaWYgKCFjYW5fYWJhbmRvbihjdXJidWYsIGZvcmNlaXQpKQorCSAgICB7CisJCUVNU0coXyhlX25vd3J0bXNnKSk7CisJCW9rID0gRkFMU0U7CisJICAgIH0KKwkgICAgZWxzZQorCQlvayA9IGRvX2VjbWQocWZfcHRyLT5xZl9mbnVtLCBOVUxMLCBOVUxMLCBOVUxMLCAobGluZW5yX1QpMSwKKwkJCQkJCSAgIEVDTURfSElERSArIEVDTURfU0VUX0hFTFApOworCX0KKwllbHNlCisJICAgIG9rID0gYnVmbGlzdF9nZXRmaWxlKHFmX3B0ci0+cWZfZm51bSwKKwkJCSAgICAobGluZW5yX1QpMSwgR0VURl9TRVRNQVJLIHwgR0VURl9TV0lUQ0gsIGZvcmNlaXQpOworICAgIH0KKworICAgIGlmIChvayA9PSBPSykKICAgICB7CiAJLyogV2hlbiBub3Qgc3dpdGNoZWQgdG8gYW5vdGhlciBidWZmZXIsIHN0aWxsIG5lZWQgdG8gc2V0IHBjIG1hcmsgKi8KIAlpZiAoY3VyYnVmID09IG9sZF9jdXJidWYpCkBAIC0yMTQ1LDExICsyMjAyLDE5IEBACiAgICAgaW50CQlmaTsKICAgICBzdHJ1Y3QgcWZfbGluZSAqcHJldnAgPSBOVUxMOwogICAgIGxvbmcJbG51bTsKKyNpZmRlZiBGRUFUX01VTFRJX0xBTkcKKyAgICBjaGFyX3UJKmxhbmc7CisjZW5kaWYKIAogICAgIC8qIE1ha2UgJ2Nwb3B0aW9ucycgZW1wdHksIHRoZSAnbCcgZmxhZyBzaG91bGQgbm90IGJlIHVzZWQgaGVyZS4gKi8KICAgICBzYXZlX2NwbyA9IHBfY3BvOwogICAgIHBfY3BvID0gKGNoYXJfdSAqKSIiOwogCisjaWZkZWYgRkVBVF9NVUxUSV9MQU5HCisgICAgLyogQ2hlY2sgZm9yIGEgc3BlY2lmaWVkIGxhbmd1YWdlICovCisgICAgbGFuZyA9IGNoZWNrX2hlbHBfbGFuZyhlYXAtPmFyZyk7CisjZW5kaWYKKwogICAgIHJlZ21hdGNoLnJlZ3Byb2cgPSB2aW1fcmVnY29tcChlYXAtPmFyZywgUkVfTUFHSUMgKyBSRV9TVFJJTkcpOwogICAgIHJlZ21hdGNoLnJtX2ljID0gRkFMU0U7CiAgICAgaWYgKHJlZ21hdGNoLnJlZ3Byb2cgIT0gTlVMTCkKQEAgLTIxNzIsNiArMjIzNywxNiBAQAogCSAgICB7CiAJCWZvciAoZmkgPSAwOyBmaSA8IGZjb3VudCAmJiAhZ290X2ludDsgKytmaSkKIAkJeworI2lmZGVmIEZFQVRfTVVMVElfTEFORworCQkgICAgLyogU2tpcCBmaWxlcyBmb3IgYSBkaWZmZXJlbnQgbGFuZ3VhZ2UuICovCisJCSAgICBpZiAobGFuZyAhPSBOVUxMCisJCQkgICAgJiYgU1RSTklDTVAobGFuZywgZm5hbWVzW2ZpXQorCQkJCQkgICAgKyBTVFJMRU4oZm5hbWVzW2ZpXSkgLSAzLCAyKSAhPSAwCisJCQkgICAgJiYgIShTVFJOSUNNUChsYW5nLCAiZW4iLCAyKSA9PSAwCisJCQkJJiYgU1RSTklDTVAoInR4dCIsIGZuYW1lc1tmaV0KKwkJCQkJICAgKyBTVFJMRU4oZm5hbWVzW2ZpXSkgLSAzLCAzKSA9PSAwKSkKKwkJCSAgICBjb250aW51ZTsKKyNlbmRpZgogCQkgICAgZmQgPSBmb3BlbigoY2hhciAqKWZuYW1lc1tmaV0sICJyIik7CiAJCSAgICBpZiAoZmQgIT0gTlVMTCkKIAkJICAgIHsKQEAgLTIyMjcsNiArMjMwMiw4IEBACiAgICAgLyogSnVtcCB0byBmaXJzdCBtYXRjaC4gKi8KICAgICBpZiAocWZfbGlzdHNbcWZfY3VybGlzdF0ucWZfY291bnQgPiAwKQogCXFmX2p1bXAoMCwgMCwgRkFMU0UpOworICAgIGVsc2UKKwlFTVNHMihfKGVfbm9tYXRjaDIpLCBlYXAtPmFyZyk7CiB9CiAKICNlbmRpZiAvKiBGRUFUX1FVSUNLRklYICovCmRpZmYgLS1naXQgYS9zcmMvc2VhcmNoLmMgYi9zcmMvc2VhcmNoLmMKaW5kZXggOWM2Y2M2ZC4uYWNlOGZhOCAxMDA2NDQKLS0tIGEvc3JjL3NlYXJjaC5jCisrKyBiL3NyYy9zZWFyY2guYwpAQCAtMzA1MiwxMyArMzA1MiwxNiBAQAogCS0tY291bnQ7CiAgICAgfQogCi0gICAgaWYgKGluY2x1ZGVfd2hpdGUgJiYgY2xzKCkgIT0gMCkKKyAgICBpZiAoaW5jbHVkZV93aGl0ZSAmJiAoY2xzKCkgIT0gMAorCQkgfHwgKGN1cndpbi0+d19jdXJzb3IuY29sID09IDAgJiYgIWluY2x1c2l2ZSkpKQogICAgIHsKIAkvKgogCSAqIElmIHdlIGRvbid0IGluY2x1ZGUgd2hpdGUgc3BhY2UgYXQgdGhlIGVuZCwgbW92ZSB0aGUgc3RhcnQKIAkgKiB0byBpbmNsdWRlIHNvbWUgd2hpdGUgc3BhY2UgdGhlcmUuIFRoaXMgbWFrZXMgImRhdyIgd29yawogCSAqIGJldHRlciBvbiB0aGUgbGFzdCB3b3JkIGluIGEgc2VudGVuY2UgKGFuZCAiMmRhdyIgb24gbGFzdC1idXQtb25lCi0JICogd29yZCkuICBCdXQgZG9uJ3QgZGVsZXRlIHdoaXRlIHNwYWNlIGF0IHN0YXJ0IG9mIGxpbmUgKGluZGVudCkuCisJICogd29yZCkuICBBbHNvIHdoZW4gIjJkYXciIGRlbGV0ZXMgIndvcmQuIiBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lCisJICogKGN1cnNvciBpcyBhdCBzdGFydCBvZiBuZXh0IGxpbmUpLgorCSAqIEJ1dCBkb24ndCBkZWxldGUgd2hpdGUgc3BhY2UgYXQgc3RhcnQgb2YgbGluZSAoaW5kZW50KS4KIAkgKi8KIAlwb3MgPSBjdXJ3aW4tPndfY3Vyc29yOwkvKiBzYXZlIGN1cnNvciBwb3NpdGlvbiAqLwogCWN1cndpbi0+d19jdXJzb3IgPSBzdGFydF9wb3M7Cg==